본문 바로가기

분류 전체보기58

이성적인 수가 있나요? - 수체계에 대하여 0의 발견 수의 사용과 셈법은 역사의 기록보다 훨씬 오래전으로 추정되고 있습니다. 지금도 아마존의 어떤 원시부족은 1, 2, 3까지의 단어만 알고 있고 그 이상은 "많다"라고 말한다고 합니다. 그렇다면 수의 셈법은 어떻게 사용했을 까요? 가축을 키우던 우리 조상들은 아마도 조약돌이나 나무토막이나 혹은 매듭 등으로 가축의 숫자와 일대일 대응으로 개수를 세었을 것으로 추정됩니다. 수의 역사에서 가장 중요한 발견 중의 하나는 0(Zero)를 알아낸 것이 아닐까합니다. 현대 수학에서 0은 두가지 기능이 있습니다. 첫번째로 비어있는 자릿수를 나타냅니다. 예를 들어 11과 101의 구분과 같이 말이죠. 두번째 기능은 없다는 뜻을 의미합니다. 숫자 0은 마야문명에서 처음 기원했다고 알려져 있습니다. 현대와 같은 0의.. 2023. 6. 8.
C언어 공부하기 - 구조체(Structure) 구조체(Structure)는 서로 다른 형의 변수를 한데 묶어놓은 모음으로 생각할 수 있습니다. 예를 들어 회원 정보를 입력한다고 할 때 이름, 나이, 주소, 전화번호 등을 각각의 변수로 선언하여 취급할 수도 있지만 구조체를 사용하면 회원 정보를 독립된 형태의 변수처럼 다룰 수가 있습니다. 또 다른 예로 좌표평면의 점을 표시할 때도 구조체를 사용할 수 있습니다. 기본개념 다음과 같은 좌표평면의 점을 C언어로 코딩한다고 합시다. 구조체를 모른다면 다음과 같이 선언할 수 있습니다. int x; int y; 그런데, 점이 하나가 아니라 100개라고 하면 어떻게 할까요? 걍 단순히 생각하면 다음과 같이 하면 다음과 같이 쓸 수 있습니다. 각각 100개의 변수를 선언하는 겁니다. int x1, x2, x3, .... 2023. 6. 3.
이상한 나라의 수학자 - 루이스 캐럴, 찰스 도지슨 루이스 캐럴은 [이상한 나라의 앨리스]의 성공에 힘입어 속편인 [거울 나라의 앨리스]를 출간하는데 여기는 세상이 거울과 같은 상반된 설정으로 나옵니다. [거울 나라 앨리스]의 상반된 설정 [거울나라의 앨리스]에서는 시간이 뒤바뀐 설정입니다. 앨리스가 붉은 여왕에게 이끌려 달리는 장면이 나오는데, 숨이 차도록 열심히 달렸지만 결국 제자리걸음을 하는 사실을 알게 된 앨리스는 다음과 같이 말을 합니다. "우리나라에서는 지금 우리가 한 것처럼 이렇게 오랫동안 열심히 달리면 어딘가에 가 있어야 해요." 그러자 붉은 여왕이 대답한다 "너희 나라는 느린 나라구나. 여기서는 있는 힘껏 다해 달려야 제자리에 머물 수 있단다" 물리 법칙이 통하는 세계에서는 속도 = 거리/시간이므로 속도가 빨라지면 일정 시간동안 간 거리가.. 2023. 3. 22.
이상한 나라의 앨리스에서 찾은 수학 [이상한 나라의 앨리스]는 어린 소녀 앨리스가 꿈속에서 하얀 토끼를 쫓아 토끼굴에 빠진 뒤 이상한 여행을 하며 겪는 기묘하고 신비로운 경험을 하는 모험담입니다. '앨리스'의 작가 루이스캐럴(Lewis Caroll, 1832~1898)은 이솝, 안데르센과 더불어 세계 3대 동화작가의 한 사람으로 꼽힙니다. 그런데, 루이스 캐럴의 본명은 "찰스 도지슨(Charles Lutwidge Dodgeson)"으로 옥스퍼드 대학의 기호논리학과 수학 퍼즐을 즐겼던 수학교수였습니다. 작가가 수학자인 만큼 소설에는 곳곳에 수학적인 장치가 담겨 있고, 철학적인 대화, 역설 논리, 현란한 언어유희와 수학퍼들이 들어 있습니다. 그래서 한편으로는 난해하다는 평을 듣기도 하지만 문학과 예술 심지어 현대 과학 등에서 다양한 분야에서 .. 2023. 3. 22.
C언어 공부하기 - 문자열 함수 구현하기 지난 시간에는 문자열과 배열에 대해서 알아봤습니다. 2020/10/28 - [프로그래밍/C언어] - C언어 공부하기 - 문자열과 배열 잠깐 리뷰를 해보면, 문자열은 문자들로 이루어진 널문자('\0', 값 0)로 끝나는 배열입니다. 문자형 배열, 문자형 포인터 2가지로 정의할 수 있는데, 전자는 배열이므로 변경이 가능하고 후자는 포인터이므로 변경이 불가능합니다. 마지막으로 문자열이 길이를 반환하는 함수 예제를 만들어 봤죠. 이번 시간에는 문자열 함수 몇 가지를 직접 구현해 보도록 하죠. (참고 : The C Programming Language 2nd E.) 다음과 같이 배열과 포인터로 문자열을 정의했다고 합시다. char arr_msg[] = "Hello World!"; char *ptr_msg = "H.. 2020. 11. 1.
C언어 공부하기 - 문자열과 배열 이번 시간에는 많이 쓰이는 문자열(Character Strings), 문자배열에 대해서 알아보겠습니다. 생각보다 간단한데요, 문자열이란 이름, 단어, 문장 등 문자들로 이루어진 배열입니다. 그리고 끝은 항상 널(Null)문자 즉 '\0'로 끝이 납니다. 널문자는 문자 '0'이 아니라 값이 0이므로 '\'뒤에 '0'을 붙여준 겁니다. 만약에 "Hello!"라는 문자열을 사용한다고 합시다. 그러면 아래와 같이 두가지 방법으로 정의를 할 수 있습니다. char hello_array[] = "Hello!"; char *hello_pointer = "Hello!"; 첫번째 정의는 크기를 지정하지 않은 문자형 배열에 "Hello!"를 지정한 겁니다. 두번째 정의는 hello_pointer라는 문자형 포인터가 "He.. 2020. 10. 28.