프로그래밍 관련
C언어 강좌 12편. 구조체(Structure Types)
C언어 강좌 12편. 구조체(Structure Types)
2012.02.121. 구조체(Structure Types) 이번 편에서는 구조체(Structure Types)에 대해서 알려드리려고 합니다. 서로 다른 변수의 형태를 하나의 블럭으로 묶은걸 구조체라고 하며 구조체의 선언방법은 아래와 같습니다. struct 구조체의 이름 { 멤버 변수; }; 여기서 멤버 변수는 구조체 안에서 정의된 변수를 의미하며 우리가 일반적으로 변수를 선언하는 방식과 다르지 않습니다. 필드라고도 하고 구조체 원소라고 부르기도 합니다. 그러면 이제 우리가 구조체를 직접 선언해볼까요? #include struct student { int id; char *name; float percentage; }; // 구조체 뒤에 세미콜론이 와야함 int main() { struct student s; s.id=1..
C언어 강좌 11편. 포인터
C언어 강좌 11편. 포인터
2012.02.11주소 값의 이해와 표현 이 강좌에서 배우게 될 포인터는 필자도 어렵게 생각하는 부분이며 C언어에서 가장 어렵고도 핵심인 구간입니다. 포인터에 들어와서 바로 포인터를 다루게 된다면 혼란이 생길 수 있으므로, 우선 알아야 할 것부터 알아보도록 합시다. 간단한 사항부터 알아보도록 하고, 바로 포인터라는 녀석을 사용하여 어떤 녀석인지 대충 짐작을 하도록 합시다. 포인터(Pointer)란 메모리의 주소 값을 담고 있는 변수 혹은 상수입니다. 비슷하게는 데이터의 위치를 가리키는 녀석이라고 할 수도 있습니다. 의외로 간단해 보일지도 모르겠지만 주소 값과 관련이 있어 메모리의 주소체계를 이해하지 못하면 포인터를 정확히 이해할 수 없습니다. 여기서 주소란 그 메모리의 저장장소의 위치를 나타내는 값으로 하나의 주소값은 1..
C언어 강좌 10편. 문자열 함수
C언어 강좌 10편. 문자열 함수
2012.02.101. 문자열 함수 오늘은 문자열 함수와 메모리 구조에 대해서 알아보도록 하겠습니다. 먼저 문자열 함수에 대해 알아보도록 할텐데, 문자열 함수에는 많이 알려져있는 함수들인 strcpy, strncpy, strcat, strncat, strcmp 등 이밖에도 함수가 더 있지만 매우 유용하고 헤더 선언부에 string.h를 포함하겠다고 선언하면 이 함수들을 모두 사용하실 수 있게됩니다. 첫번째로 만나볼 함수 strcpy(문자열 복사, String Copy)는 말 그대로 문자열 복사에 관한 함수입니다. strcpy 함수의 원형을 살펴보자면 아래와 같습니다. char* strcpy (char *dest, const char *src); // dest에 전달된 값을 반환 이 함수는 두개의 문자형 포인터를 인수로 취..
C언어 강좌 9편. 배열(Array)
C언어 강좌 9편. 배열(Array)
2012.02.081. 배열(Array) 앞으로 배우게 될 배열(Array)은 많은 수의 데이터를 관리할때 상당히 편리한 녀석입니다. 우선 우리가 배열을 모른다 가정하고, 예를 들어서 100개의 수를 모두 저장해야 한다고 해봅시다. 값을 우선 기억시키려면, 값을 기억할 변수를 선언해야만 하겠죠? 그렇다면, 100개의 수를 모두 저장한다고 했으니 100개의 변수를 선언해야 합니다. 아래와 같이 말입니다. int num1; int num2; int num3; ... ... int num99; int num100; 위를 보시면, 일일히 변수 100개를 따로 선언하면서 값을 저장합니다. 만약 이런다면 값을 저장시킬때도 따로 저장시켜야 하며 이것은 문서 타이핑과 다를 바가 없어집니다. 그럼 어떻게 해야만 편리하게 데이터를 수정하고..
C언어 강좌 8편. 반복문 (while, for, do~while)
C언어 강좌 8편. 반복문 (while, for, do~while)
2012.02.081. while, do~while, continue 이번에는 반복문에 대해서 살펴보도록 할텐데, 반복문의 이름에서 어떤 역할을 하는 녀석인지 대충 짐작이 가시죠? 만약에 어느 한 문장을 100번 출력하고 싶으면 어떻게 코드를 작성해야 할까요? 일일히 printf를 사용하여 100번씩이나 함수를 호출해야 할까요? 이것은 상당히 비효율적이며 보기도 안좋습니다. 그럼 어떻게 해야할까요? 이것을 우리가 배울 반복문이란 녀석이 해결해 줄수 있습니다. 이 반복문 중에서도 여러가지가 있는데, 우선은 while문에 대해 알아보도록 하겠습니다. while 문의 구성은 다음과 같습니다. while (반복 조건) { 반복 영역; } 이 while문은 반복 조건이 참(TRUE)이면 계속 반복 영역에 있는 코드를 실행시키며 루..
C언어 강좌 7편. 제어문-1 (if~else, switch, case)
C언어 강좌 7편. 제어문-1 (if~else, switch, case)
2012.02.081. if~else(만약에~) 우리가 배울 제어문이란 말 그대로 프로그램의 실행 흐름을 제어하며 C언어에서는 조건문과 반복문을 제공합니다. 조건문은 우리가 특정 조건을 부여하고 그 조건이 만족하면 해당 문장을 수행할수 있는 문법입니다. 이 조건이 참(TRUE)이면 if문 내의 코드를 실행하며 거짓(FALSE)이면 if문 내의 코드를 실행하지 않고 그냥 넘겨버립니다. 조건은 수식으로 주어집니다. if 문의 구조를 보시면 다음과 같습니다. if (조건문) { 조건식이 만족되면 실행될 문장; } 조건문에 오는건 반드시 참(true) 혹은 거짓(false)이여야 하며, 주로 논리 연산자와 비교 연산자 등이 조건문에 쓰입니다. if문을 사용하기 전, 간단한 비교 연산자부터 짚고 넘어가도록 하겠습니다. 한번 아래의..
C언어 강좌 6편. 전처리기문 #define와 #include
C언어 강좌 6편. 전처리기문 #define와 #include
2012.02.081. #include #include(포함하다,~을 포함시키다)란 녀석은 외부에 선언되어 있는 함수 혹은 상수 등을 사용하기 위하여(구현과 선언의 분리) 선언해야 하는 것으로 이것은 #define와 같이 전처리기라 불리며 컴파일 이전에 미리 처리되는 문장(선행처리)을 말합니다. 우리가 printf, scanf 함수를 사용하기 위해 사용했던 #include 의 역할은 stdio.h의 내용이 소스에 포함되게 합니다. #include를 쓰는 대신 헤더 파일의 내용을 복사해도 똑같은 결과를 출력합니다. #include를 사용하면 그 헤더파일의 선언된 함수를 쓸수 있게되며, 파일의 이름을 적는데 사용되는 괄호는 두가지의 경우로 나뉩니다. C에서 제공하는 표준 헤더파일을 포함 시킬때는 를 사용합니다. 예를 들어 s..
C언어 강좌 5편. 함수의 정의와 사용
C언어 강좌 5편. 함수의 정의와 사용
2012.02.081. 함수의 정의 이번편에서는 함수(Function)에 대해서 알아보도록 하겠습니다. 함수란 뭘까요? 이 함수란 것은, 특정한 작업을 수행하는 또는 서로 관련있는 코드들의 모임으로 하나의 단위를 말합니다. 이 함수란 것은 모듈(module) 이라고도 하며, 우리가 배우는 C언어는 모듈러 프로그래밍(modular programming)이기도 합니다. 즉, 모듈(=함수)가 중심이 되는 언어로써, 재사용이 가능하고 유지 보수가 쉬워진다는 등 여러가지 장점을 지니고 있습니다. 우리가 알고있는 프로그램은 함수로 구성되어 있고 그 함수들이 순차적으로 실행됨으로 프로그램이 정상적으로 작동합니다. 이는 독립적인 기능을 지니며 프로그램을 구성하는 부품이라 할수 있습니다. 프로그램이 해야 할일은 모두 함수가 담당하며 핵심..
C언어 강좌 4편. 지역과 전역 변수, 정적과 외부 변수
C언어 강좌 4편. 지역과 전역 변수, 정적과 외부 변수
2012.02.071. 지역 변수와 전역 변수 지역 변수(local variable)와 전역 변수(global variable)에 대해서 간단히 설명해보도록 할텐데, 지역 변수란 우리가 선언한 지역을 벗어나면 기억 공간에서 자동으로 소멸합니다. 이 지역변수는 자동 변수(automatic variable)이라고도 부르며 이런 지역변수의 선언을 위한 auto란 키워드가 존재합니다. 참고로 auto는 우리가 따로 명시하지 않아도 지역변수로 선언이 됩니다. 이는 지역변수를 선언하기 위해 따로 auto란 키워드를 사용할 필요가 없다는 말입니다. C언어에서의 지역(local)은 무엇을 의미하시는지 알고 계시나요? 바로 {와 }를 하나의 지역으로 생각하시면 되겠습니다. 독자분들이 얼마나 잘 이해하고 있는지 테스트하기 위하여, 간단한 ..
C언어 강좌 3편. 프로그램의 기본 구성
C언어 강좌 3편. 프로그램의 기본 구성
2012.01.141. 프로그램 기본 구성 자, 이제 Visual Studio를 열어 새 C 프로젝트를 만들어 봅시다. (프로젝트 생성시 응용 프로그램 마법사에서 빈 프로젝트에 체크) 그다음 프로젝트가 생성되었으면, 솔루션 탐색기에서 소스 파일에 우클릭, 추가 -> 새 항목으로 새 소스 파일을 추가합니다. 그런 다음 아래와 같이 작성하여 봅시다. #include int main() { printf("Hello, world!\n"); return 0; } 그다음 컨트롤 키와 F5를 동시에 눌러 디버깅을 생략하고 바로 컴파일된 파일을 실행해보도록 해봅시다. 실행하면, 콘솔창이 화면에 표시되면서 화면 내에 아래와 같이 표시됩니다. Hello, world! 계속하려면 아무 키나 누르십시오 . . . 출력된 결과물을 살펴보니, '..
C언어 강좌 2편. 변수와 상수에 관해
C언어 강좌 2편. 변수와 상수에 관해
2012.01.131-1. 변수(Variable) 변수(Variable)란 무엇일까요? 이미 익히 들어보신 분도 계실거라 생각합니다. 변수란 쉽게 말하면 값을 담아두는 기억 공간입니다. 변수는 하나의 데이터 값을 가질수 있으며, 한번 정해진 값은 고정되어 있는게 아니라 계속 변할수 있는 수입니다. 이는 즉, 대입되는 수가 항상 변할수가 있다는 말입니다. 또한, 이 변수는 담기는 음식에 따라 그릇이 달라지듯 담기는 데이터에 따라 변수의 자료형(Data Type)이 결정됩니다. 문자는 문자를 담을수 있는 자료형이 있으며, 정수는 정수를 담을수 있는 자료형이, 실수는 실수를 담을수 있는 자료형이 따로 존재합니다. 우선 C언어에서의 기본 자료형(Data Type)은 무엇이 있는지에 대해 간단히 보도록 하겠습니다. 아래의 표에서 ..
C언어 강좌 1편. C언어의 시작, 강좌에 쓰일 컴파일러 소개
C언어 강좌 1편. C언어의 시작, 강좌에 쓰일 컴파일러 소개
2012.01.131-1. C언어의 시작 컴퓨터를 잘 모르시는 분들도 내부에서 이동하는 데이터는 '0'과 '1'로만 구성된 디지털 신호의 조합이라는 것을 알고 계실겁니다. 우리가 이 컴퓨터에게 어떤 특수한 명령을 내리려면 어떻게 해야만 할까요? '0'과 '1'로 이루어진 복잡한 기계어 까지 알아야만 할까요? 만약 기계어를 배워야 한다면 너무 어렵고 비효율적일 것입니다. 사람이 이해하고 터득하기 쉬운 언어를 고급 언어라 하며, 고급 언어 중 우리가 지금부터 배우게 될 C언어도 포함됩니다. 물론 C언어를 컴퓨터가 바로 이해하는것은 아닙니다. 사람이 작성한 언어를 기계어로 바꾸어 주는 '컴파일러'가 있기에 가능한겁니다. 컴파일러는 뒤에서 다시 설명하겠습니다. 이 C언어는 켄 톰슨과 데니스 리치에 의해 만들어졌으며 특징으로는 절..