목록Programming (10)
(구)boymin
지난번 지2의 중력장 프로그램 포스팅에서 잠깐 언급했듯이,3학년이 되면서 물2와 지2를 고르게 되었다. 물2를 처음 골라 수업을 들을 때 들었던 생각은,'아, 괜히 골랐다...f-word'였다. 물1에서의 공식들은 대부분'특정 조건'을 걸고 제한된 범위에서 추려낸 공식의 느낌 이었다면,물2에서는 이런 특정 조건들을 하나하나 풀어가며 공식을 점차 넓혀가는 느낌이었다. 그러다보니 이해해야할 내용과 공식들은 기하급수적으로 늘어갔고,대부분의 아이들이 그러했듯 나도 물2를 거의 놓다싶이 하였다.(그치만 애들이 다 점수가 낮아서 조금밖에 공부를 안했음에도 2등급을 받았다...ㅋ) 특히나 열역학 부분은,물1 끝부분에 나왔었는데,2학년 당시 기말고사 범위 밖이라 아예 공부를 안했었다. 그래서 다른 부분들은 물1에서 어..
나도 고3인지라...'수능특강'이라는 책을 자의든 타의든 사고, 공부했었다(?) 사실 초등학교 중학교 때까지는 영어학원을 다니며 공부를 했다가,고등학교에 들어오면서 학원이란 학원은 다 끊게 되어 영어공부를 꾸준히 하지 않았었다. 따라서 내게 영어를 공부하는 방법은 '무조건 외운다' 뿐이었다. 중학교 까지는 본문이 짧기 때문에,본문을 한 토시도 빼먹지 않고 외우면 시험에서 준수한 성적을 받을 수 있었다. 고등학교에 들어와서도, 이 방법은 2학년 때까지는 어느정도 먹혔다.수능 특강 책이 아닌 교과서를 사용했기 때문에,지문이 아주 조금 길고 많아졌을 뿐 조금만 시간을 더 들이면 외울 수 있었기 때문이다. 따라서 나는 여지것1. 지문을 외우고,2. 단어를 외우고,3. 문법을 외운다....라는 어딘가 요상한 공부..
너무 오랜만의 포스팅. 고등학교 3학년이라 바빴고(라는 핑계를 대고),또 정보올림피아드니 C++공부니(라는 핑계를 대고),일이 좀 많았다. 이번 포스팅은 타원 그리기 프로그램이다.엄청나게 간단한 프로그램이지만... 기하와 벡터를 공부하며, 배운 평면도형을 실제로 프로그램으로서 구현해보며,원하는 평면도형에 대한 방정식을 즉작적으로 알아내는 프로그램이 있다면평면도형을 더 쉽게 공부할 수 있지 않을까, 하는 생각이 들어본보기로 타원 그리기 프로그램을 만들어 보았다. 프로그램의 한 장면이다. 원리는 죽도록 간단하다.(사실 이 원리를 떠올리기 위해 고민을 좀 했다.) 우선 타원의 장축과 단축의 길이를 받는다.이를 통해 타원 방적식을 구해내고, 초점의 좌표 역시 알아낸다.그리고, 타원의 장축을 N등분하여(이 N이 ..
유전 시뮬레이션에 관한 두번째 글이다. 저번 주 부터 기획하고 개발하기 시작해서,오늘 드디어 나름의 형태를 갖춘 프로그램이 나왔다. 개발 기간은 하루에 대략 3~4시간 씩 총 20~30시간 내외로 걸린 것 같다. 프로그램의 동작 모습의 일부를 녹화한 사진들이다. 아직은 윤리적인 문제나 자잘한 버그가 조금 있지만,그래도 활용하기위한 최소한의 구현은 된 것 같다. 원하는 개체를 만들 수도 있고, 개체끼리 교배시켜 가족을 형성할 수도 있다.당연하게도, 가족이 형성된 개체간에서는 자손을 생성할 수 있다. 각 개체에 마우스를 올리면 정보를 불러와,유전자의 정보나 그 개체가 태어날 확률을 볼 수 있다. 클릭하여 현재까지의 프로그램을 다운받을 수 있다. 프로그램의 플로우는 대략 이렇다. 1. 각 개체는 성별, 혈액형..
간만의 포스팅. 프로그래밍이라는 분야에 조금씩 발을 담그기 시작하니,이 소프트웨어라는 것을 다시금 생각해보게 되었다. 정말 이 분야는 이미 뛰어난 사람들이 너무나도 많았고,내가 앞으로 얻어야 할 지식 역시 너무나도 방대했다. 다만 그렇다고 해서, 소프트웨어라는 분야의 선두 주자는누가 더 프로그래밍 분야로 지식이 많냐, 가 결정하지는 않는 것 같다. 그렇지 않나. 여러 대학들에서도,전 세계적으로도,4차 산업 혁명을 위한 인재를단순히 프로그래밍의 능력으로만 평가하지는 않을 것이다. 실제로 내가 여러 프로그램을 만들어 볼 때에도,어떤 기능을 위한 함수를 몰라서 막힌적은 없었다.인터넷에는 해당 언어의 래퍼런스와,함수들의 의미, 목적, 사용법 등을 정리해놓은 자료가 수없이 많았기 때문이다. 즉, 사실상 요즘은 프..
얼마 전 학교 방과 후 프로세싱 교육 시간에,'집'이라는 주제로 프로세싱으로 자유롭게 그림을 그리는 시간이 주어졌다. 삼각함수로 그림그리는데에 맛들려있던 나는 삼각함수로 3차원 느낌이 나는 집을 그리고 싶다는 생각을 하였고,이를 바로 실천으로 옮겼다. 전체적인 구조는 이렇다. 1. 집의 바닥이 될 마루바닥을 타원 형태로 생각하여 점 4개를 찍는다.타원으로 그리는 이유는 시점을 약간 위쪽과 정면을 겹치게끔 해서 그렇다.quad함수를 이용한다. 2. 마루바닥의 각 꼭짓점에서 기둥 4개를 위로 올린다.line함수를 이용한다. 3. 올린 기둥위에 지붕을 그린다.지붕은 마루바닥보다 조금 더 크다. 4. 색칠한다.이 때, 삼각함수의 범위에 따라 어떤 그림이 먼저 그려질지를 고려해야한다.triangle과 rect함수..
프로세싱은 미디어아트 및 교육을 위한 오픈소스 프로그래밍 언어이다. 언어 자체의 문법은 Java 기반이지만, 객체 지향형 프로그래밍 개념이 가려져 보이지 않게 되어있어서,얼핏보면 C언어와 상당히 유사해보인다. 프로세싱은, 코드 단 몇 줄만으로도 시각적인 표현이 가능하다는데에 큰 장점이 있다. 또한, 함수 래퍼런스 사이트도 존재해서 많은 함수들을 혼자 공부하기에도 충분하다. https://processing.org/reference/ 도형그리기를 시작하기 전에 프로세싱의 구조에 대해 간단히 알아보자. 프로세싱 3 프로그램 화면은 이렇게 생겼다. 생긴 모양이나, 사용하는 방법이나 아두이노와 유사한 감이 꽤 있다. 프로세싱에는 크게 setup() 함수와 draw()함수가 있다. setup()함수는 프로그램이 ..
정렬 알고리즘은 주어진 데이터를 정해진 순서대로 나열하는 방법이고,버블 정렬(Bubble Sort)는 정렬 알고리즘의 대표적인 방법 중 하나이다. 버블 정렬은 두 인접한 원소를 검사하여 정렬하는 방법이다.시간복잡도는 O(n^2)로 느린편이나 코드가 단순하여 자주 사용된다. 예시를 들어보자면, 다음 5개의 숫자가 있다고 가정하자. 5 4 1 3 2 먼저 앞 2개의 원소 5와 4를 비교한다. 4가 더 작으므로 두 수의 위치를 바꾼다. 5 4 1 3 2 -> 4 5 1 3 2 그리곤 5와 1로 넘어간다. 역시 1이 더 작으므로 두 수의 위치를 바꾼다. 4 5 1 3 2 -> 4 1 5 3 2 5와 3을 비교한다. 3이 더 작으므로 두 수의 위치를 바꾼다. 4 1 5 3 2 -> 4 1 3 5 2 5와 2를 비..
문제 설명 두 정수 a, b를 입력받아서, a, b의 최대공약수를 출력하시오. 입력 정수 a, b가 공백으로 구분되어 입력된다. (1
문제 설명 세 개의 숫자가 주어질 때 두 번째로 작은 수를 출력해보자. 예를 들어, 5 9 2 가 있다면 두 번째로 작은 수는 5 이다. 입력 세 정수가 공백으로 구분되어 입력된다. 출력 세 개의 정수 중 두 번째로 작은 숫자를 출력한다. 입력 예시 201 20 3 출력 예시 20 가장 큰 수나 가장 작은 수를 구하는 문제라면 간단하지만,두 번째로 작은 수를 구하는 문제라면 꽤나 골치아파진다.여러 방법이 있겠지만, 나는 정렬 알고리즘 중 bubble_sort를 사용해 세 숫자를 정렬하고 두 번째 숫자를 구하는 방법을 택했다. #include int main(void){int a[3];for (int i=0;i