Article Category

분류 전체보기 (108)
나의 이야기 (52)
Study - Programming (39)
Study- MSC (11)
Study - ETC (0)
Project (3)

Recent Comment

Recent Trackback

Calendar

«   2008/08   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

Archive

  • Total45,125
  • Today25
  • Yesterday33
  1. 2007/12/24
    C프로그래밍 기초 강좌 - 3장
  2. 2007/12/22
    C프로그래밍 기초 강좌 - 1장,2장
  3. 2007/12/22
    C프로그래밍 기초 강좌 - 목차

3. C 코드 미리보기

  우선 C 프로그래밍을 본격적으로 시작하기 전에 C로 만든 프로그램들이 어떠한 형태로 나오는지 알아보자. 이 부분의 모든 내용을 알 필요는 없다. 직접 키보드로 칠 필요 없이 읽기만 하자. 본격적으로 시작하기 전에 미리 한번 읽어 보는 것이 처음 시작할 때 편할 것이다. 그리고 앞서 머리말에서도 말했지만 정확한 용어보다는 이해하기 쉬운 단어를 선택할 것이므로 정확한 용어는 뒤에서 알아보도록 하자.

가. 가장 간단한 코드

  다음은 C프로그램을 하기 위한 가장 기본적인 코드이다.

int main(void)

{

 return 0;

}

  대부분의 프로그래밍 언어는 컴파일 후 수행할 때 맨 위에서 아래로 내려가면서 한 줄 씩 수행해 나간다. C 언어도 마찬가지이다. 한번 맨 위에서부터 읽어 나가 보자.

  맨 윗줄에는 int main(void)라는 것이 있다. C에서의 프로그램의 시작점은 항상 main에서부터 시작한다. 표기법은 표와 같이 int main(void)이거나 int main()이다. 그 다음 줄을 보면 중괄호({})로 열고 닫았는데, 이 중괄호 안의 내용을 수행하게 되는 것이다.

  중괄호 안의 내용을 보면 다음 줄에 return 0;이라고 되어 있다. main의 마지막에는 항상 return 0;을 붙이는데, 이것은 프로그램의 끝을 나타내고 종료를 하게 하는 명령어이다. 그러므로 이 프로그램은 단순히 실행한 후 아무작업도 하지 않고 끝나는 프로그램이다.

  return 0;이라는 명령어를 보면 맨 뒤에 세미콜론(;)이 있는데. C 프로그램에서는 항상 한 명령의 끝에 끝이라는 의미로 세미콜론을 붙여 준다.

  그리고 C언어는 대소문자를 철저히 구분한다. 혹시나 int Main()이나 Retrun 0; 등을 입력하였을 경우 컴파일러는 에러 메시지를 출력하므로 대소문자를 철저히 구분하도록 하자.

나. 출력문

 

#include <stdio.h>

 

int main(void)

{

 printf("Hello, World!!");

 return 0;

}

실행결과

Hello, World!!


  이번에는 "Hello, World!!" 라는 문장을 출력하는 프로그램을 한번 보자. 이전의 예제외 비교해 보면 우선 맨 위 문장을 보면 #include <stdio.h>라는 것이 추가되었다. 그리고 main의 중괄호 안에 printf("Hello, World!!");라는 문장이 추가되었다.

  대충 보면 무슨 프로그램인지 알 수 있을 것이다. printf("Hello, World")에서 문장을 출력하게 해 준다.

  앞서 말했듯이 항상 맨 위에서부터 읽어 나가야 한다. 맨 위를 보면 #include <stdio.h>라는 것이 있는데, 출력하는 명령어인 printf를 이용하기 위해서는 이 문장이 반드시 입력되어야 한다. 그러므로 printf를 사용할 때는 이 문장을 맨 위에 함께 써 주자.

  그리고 다음 문장은 main으로 프로그램의 시작점을 알리고 중괄호 안의 내용이 시작된다. 젤 처음에 printf("Hello, World!!");라는 문장이 있는데, return 0;과 같이 맨 뒤에 세미콜론을 붙임으로써 문장의 끝을 알린다. printf라는 이름을 보면 알 수 있듯이, 출력을 해주는 명령이다. 그리고 구조를 보면 괄호와 큰 따옴표 안에 있는 ("Hello, World!!")라는 것을 통해 printf는 이 문장을 출력하게 해 준다. 예를 들어 "Korea"라는 문장을 출력하고 싶다면 printf("Korea");라고 해 주면 된다.


다. 입력문의 사용

#include <stdio.h>

 

int main(void)

{

 int number;

 char name[10];

 

 printf("번호를 입력해주세요: ");

 scanf("%d",&number);

 printf("이름을 입력해주세요: ");

 scanf("%s",name);

 

 printf("%d번 %s님 반갑습니다.\n",number,name);

 

 return 0;

}

실행 결과

번호를 입력해 주세요 : (입력)10

이름을 입력해 주세요 : (입력)홍길동

10번 홍길동님 반갑습니다.



  코드가 좀 길어졌다. 일단 추가된 상황을 보자. int number;과 char name[10];문장, 그리고 scanf라는 것이 추가되었고, printf 안이 좀 복잡해졌다.

  이 프로그램은 번호와 이름을 입력받아서 인사말을 출력해주는 프로그램이다.

  main안을 한번 보자. int number;과 char name[10];이라는 것이 있는데, 이것은 데이터를 저장하기 위한 공간인 변수를 만드는 명령이다. 앞서서 이 프로그램은 번호와 이름을 입력받는 프로그램이라고 했는데, 입력을 받았으면 그것을 저장하는 공간이 필요할 것이다. 이 저장하는 공간이 바로 변수인데, 무엇을 입력받느냐에 따라서 이 변수의 종류도 달라진다. 예를 들어, 위 코드에서 번호를 입력받을때에는 번호는 수이므로 정수를 저장하기 위한 변수가 필요하다. 그래서 int number;라는 명령으로 정수 int(integer의 약자)를 저장하기 위한 변수를 만드는데, 그 변수의 이름을 number로 정하게 하였다.

  그리고 이름을 저장하기 위해서는 문자를 입력받아야 하는데 그래서 char name[10];이라는 것으로 문자 char(characher의 약자)를 저장하기 위한 변수를 만드는데 그 변수의 이름은 name으로 정하게 하였다. 그리고 이 이름은 한 글자가 아니므로 여러 문자를 저장하기 위해서 넉넉하게 10개를 저장할 수 있는 공간을 만들기 위하여 뒤에 [10]을 붙였다.

  이제 공간을 만들었으니 입력을 받아야 할 것이다. 이 입력을 위한 명령이 scanf인데, 어떠한 것을 입력받느냐에 따라 사용법이 다르다. 약간 까다로우므로 일단은 이런게 있다고만 읽고 가자. 우선 번호를 입력받아 number이라는 변수에 넣기 위해서 scanf("%d",&number);라는 명령을 사용하였다. 여기서 “%d"는 정수를 입력받으라는 것이고 그 뒤에 &number를 적어 놓으면 입력받은 값이 number에 들어간다.

  이름을 받기 위해서는 scanf("%d",name);라는 명령을 사용하였는데, "%s"는 문자열을 입력받으라는 것이고, 이것은 name라는 변수에 들어가게 된다. 앞서 번호를 입력받을 때와 비교하면 number에는 앞에 &가 붙었지만 name에는 &가 붙지 않았다. 여기서는 정수를 입력받을때는 &를 붙이고 문자열을 입력받을 때에는 붙이지 않는다는 정도로 알아 두자.

  그럼 프로그램의 흐름을 한번 읽어 보자. 항상 위에서 아래로 흐르고, 프로그램의 시작점은 main이라는 것을 명심하자. 우선 맨 위의 #include <stdio.h>는 printf를 사용하기 위해서 넣었지만, scanf도 사용하기 위해서는 이것이 필요하다.

  main안으로 들어가보면 입력해 달라는 printf문장이 있은 후 scanf로 입력을 받는 형식으로 되어 있다. 그리고 맨 밑 printf으로 결과를 출력하게 되는데, 조금 다른 형태를 띠고 있다. 한번 보면 %d와 %s가 있는데, 각각 뒤의 number과 name에 대응된다. 즉 %d는 number을, %s의 위치에는 name의 내용이 출력되게 된다.

  다소 복잡한 내용이였다. 하지만 현재 상황에서 전부 이해할 필요는 없다. 그냥 소스를 한번 눈에 익히고 설명은 한번만 읽어보자.


라. 연산자의 사용

#include <stdio.h>

 

int main(void)

{

 int a,b;

 a = 3;

 b = 4;

 

 printf("%d + %d = %d\n",a,b,a+b);

 printf("%d - %d = %d\n",a,b,a-b);

 printf("%d * %d = %d\n",a,b,a*b);

 return 0;

}

실행 결과

3 + 4 = 7

3 - 4 = -1

3 * 4 = 12


  이번에는 연산자를 이용한 코드이다. 3과 4의 덧셈, 뺄셈, 곱셈의 연산을 해서 출력해 주는 코드인데, 연산자 자체는 일반 사칙 연산과 별로 다를 것이 없다. 우선 정수 3과 4를 저장할 변수를 int a, int b라는 명령을 이용해서 만들고, 거기에 3과 4를 넣었다. 그리고 printf 명령을 통해서 %d를 통해 정수를 출력해 주었다. “”뒤의 각 항목들과 %d가 대응된다는 것을 상기해 보자.

  여기까지는 앞선 것들과 별로 다를 것이 없다. 이제 확인해 봐야 할 것들은 ab, a-b ,a*b이다. 척 보면 알 수 있을 것이다. 덧셈, 뺄셈, 곱셈을 한다. 그리고 그 결과값을 세 번째 %d 대응해서 출력해 준다.

  참고로 a = 3;에서 =도 ‘대입 연산자’라는 엄연한 연산자이다. 또한 3 = a;처럼 순서를 바꿔 써서도 안된다. =의 왼쪽에는 변수, 오른쪽에는 값이 있어야 한다.


마. 제어문의 사용

#include <stdio.h>

 

int main(void)

{

 if(3 == 4)

 {

  printf("3 은4와 같습니다.\n");

 }

 else if( 3 > 4)

 {

  printf("3은 4보다 큽니다.");

 }

 else

 {

  printf("3은 4보다 작습니다.");

 }

 return 0;

}


실행 결과

3은 4보다 작습니다.

  3과 4의 대소 비교를 해서 같은지, 큰지, 작은지를 판단해보는 코드이다. 영어에서 if가 무엇을 의미하는지 알면 이해하기 쉬울 것이다. if는 괄호 안의 내용이 참인지, 거짓인지 확인해서 참이면 그 밑의 {}의 내용을 실행하는 명령이다. if만 보면 크게 세 개의 if가 있다. 먼저 맨 위의 if는 if(3 == 4)라고 되어 있다. 이것이 참이면 바로 밑의 {}의 내용을 실행하여 “3은 4와 같습니다.”라는 문장을 출력한다.

  괄호 안을 보면 3==4라는 것이 있는데, ==라는 것이 낯설을 것이다. 이것은 ==을 기준으로 좌우의 내용이 같은지를 체크하는 연산자이다. 즉, 3과 4가 같은지 확인하여 이것이 참이면 밑의 내용이 실행된다. C에서는 =이 수학처럼 등호를 의미하는 것이 아니다. 위에서 말했듯이, =은 대입, ==은 등호를 의미한다. 주의하자.

  3과 4는 같지 않으므로 그 안의 내용은 실행되지 않고 밑의 else if로 내려간다. 이것은 맨 위의 if가 참이 아니면 실행되는 것으로, 그 이외의 방법은 if와 같다. 보면 3 > 4라고 되어 있는데, 이것 역시 참이 아니므로 그 밑의 내용은 무시된다.

  마지막으로 else가 남았는데, 이것은 위의 내용들이 모두 거짓이고 그 나머지 경우에 실행된다. 즉, 위에서 3이 4와 같은지, 큰지를 체크했지만 모두 거짓이고, 나머지 경우는 작은 경우이므로, 작다는 것을 출력해 주어야 할 것이다. 그래서 그 밑에 작다고 출력하게 해 놓았다.

바. 반복문의 사용

#include <stdio.h>

 

int main(void)

{

 int i;

 for(i = 0 ; i < 10 ; i++)

 {

  printf("%d ",i);

 }

 return 0;

}

실행 결과

0 1 2 3 4 5 6 7 8 9


  0부터 9까지 출력해주는 프로그램이다. 핵심은 for이라는 명령어이다. 반복문은 말 그대로 어떠한 명령을 반복해서 수행하게 하는 명령인데, 여기서는 for가 그 역할을 한다. for뒤의 괄호 안을 보면 i = 0 ; i < 10 ; i++ 이렇게 되어 있는데, ‘;’을 기준으로 초기 조건과 종료 조건, 증감 조건을 나타낸다. 먼저 젤 처음 i = 0이란 것은 I라는 변수가 있을 때, 우선 i를 0으로 초기화 한다는 것이다. 그리고 그 다음 i <10이란 것은 i가 10보다 작은 동안에만 반복을 한다는 것이고, 마지막 i++은 한 번 반복 루프를 돌고 나면 i에 1을 더한다는 뜻이다. 즉, i가 0에서 10보다 작을 때, 즉 9까지 반복해서 수행하되, 한 주기를 돌면 1씩 더한다는 의미이다. 그리고 한 주기 동안 수행할 명령은 if문과 같이 밑의 {} 안의 내용이다.

  {}안을 보면 printf(“%d",i);라고 되어 있는데, i를 출력하는 것이다. 위에서 i는 한 번 돌때마다 0에서 9까지 증가한다고 하였다. 그러므로 맨 첫 바퀴를 돌 때에는 i가 0이므로 0을 출력하고 i에 1을 더하고, 그 다음 주기에서는 1을 출력하고 1을 더하고 해서 9까지 출력 한 후 i에 1을 더하면 i가 10이 되므로 반복을 그만 두고 빠져 나온다.


사. 함수의 사용

#include <stdio.h>

 

int max(int a,int b)

{

 if(a > b)

 {

  return a;

 }

 else

 {

  return b;

 }

}

 

int main(void)

{

 printf("3과 4 중 큰 수는 %d입니다.",max(3,4));

 return 0;

}


실행 결과

3과 4 중 큰 수는 4입니다.


  이번에는 C의 중요한 기능 중의 하나인 함수를 이용해서 3과 4 중 큰 수가 무엇인지 출력하는 프로그램을 만들어 보았다. 함수는 자주 쓰이는 기능을 일반화 시켜서 묶어 놓은 것 정도로 알아두자. 위 코드에서 만든 함수는 max라는 함수인데, 한번 안을 들여다보면, if문을 이용해서 a가 b보다 크면 a를 return하고, 작거나 같으면 b를 return하는 코드이다. 리턴에 대해 자세한 설명은 나중에 하겠지만, main을 한번 들여다보면 max(3,4)의 결과값이라고 생각하길 바란다. 이렇게 적어 놓으면 a에 3이 들어가고, b에 4가 들어가서 위와 같은 계산을 한 후 max(3,4)의 값이 4가 되는 것이다.

  아직 당장 함수가 무엇인지 파악하기는 힘들 것이다. 하지만 이 함수의 사용은 매우 중요하므로 잘 보아 두자.


  지금까지 C의 기본적인 요소들을 이용한 예제 코드들을 한번 살펴 보았다. 내용이 다소 길지만, 위의 사항들이 기본적일 프로그램을 짤 수 있는 가장 기본적인 요소이므로, 나중에 본격적으로 공부할 때 낯설지 않도록 한번 읽어 두는 것이 좋을 것이다. 위의 모든 것을 이해하려고 할 필요가 없다. 어차피 나중에 가면 더 자세하고 확실하게 알아 둘 것이므로, 이런것이 있었다라는 것 정도만 알아 두자.

이올린에 북마크하기(0) 이올린에 추천하기(0)
Trackback 0 and Comment 0

1.들어가기에 앞서.

  이 문서는 프로그래밍을 처음 하는 사람들이나 기초가 부족하다고 생각되는 C 프로그래밍 초급자들을 위해 만들어졌다. 이 강좌는 초급과 중급으로 나누어서 다룰 예정이며, 초급에서는 프로그래밍을 처음 시작하기 위한 기본 준비와 아주 기초적인 C 언어의 문법을 설명한 후, 간단한 프로그램을 만들어 볼 것이고, 중급에서는 약간 심화된 문법 사항들을 설명할 것이다.

  초, 중급 모두 주로 문법 사항을 위주로 설명할 것이며 이와 함께 간단한 예제들도 섞을 것이다. 또한 초급에서는 기초 개념의 이해 위주로 설명할 것이기 위해 정확한 문법상 용어보다는 이해하기 쉬운 용어를 우선적으로 사용해 다소 맞지 않은 말이 있을지도 모른다. 그러나 그런 사항들은 중급부터는 정확히 정정하여 사용할 것이며, 초급에서도 되도록이면 정확한 용어를 사용하도록 노력할 것이다.

  이 문서가 결코 좋은 문서라고는 생각하지 않는다. 다만 본인이 생각하기에 가장 쉬운 방법으로 설명을 하기 위해 최선을 다할 것이다. 그리고 아무리 좋은 문서가 있어도 본인이 의지를 가지고 읽지 않으면 아무 소용이 없다. 본인이 재미를 가지고 프로그래밍을 접한다면 분명 좋은 결과를 낼 수 있을 것이다.


2.프로그래밍

  이 문서는 C 프로그래밍을 위한 목적으로 만들어졌다. 그럼 프로그래밍이란 무엇일까? 그전에 우선 프로그램이 무엇인지부터 알아보자.

가. 프로그램

  프로그램에 대해 간단히 정의를 내리자면 ‘데이터와 명령어의 집합’ 정도로 할 수 있다. 이 말은 어떤 주어진 데이터(자료)를 이용해서 명령을 내려 어떠한 작업을 수행하는 것이 프로그램이라는 말이다. 여기서 데이터는 일반 하드디스크에 들어있는 파일들이라고도 할 수 있고, 우리가 프로그램 수행 도중에 입력할 각종 정보들도 이에 해당 할 수 있다. 그리고 이 데이터를 이용해서 명령을 수행하게 하는 것이 프로그램이다.

나. 프로그래밍

  그렇다면 프로그래밍이란 어떠한 작업일까? 말 그대로 앞서 말한 프로그램을 만드는 작업이라고 할 수 있다. 이것은 단순이 어떠한 코드를 입력시키는 코딩작업 뿐만 아니라 설계, 테스트, 배포, 유지 보수 등의 작업까지도 포함하는 작업이다. 여기서는 코딩을 위한 내용만 주로 다룰 것이다.

  우리가 의사소통을 할 때 언어라는 것을 쓰고, 그것도 영어, 일본어, 한국어 등 여러 종류가 있듯이 컴퓨터와 의사소통을 하기 위한 프로그래밍 작업도 프로그래밍 언어라는 것으로 할 수 있다. 그리고 이 프로그래밍 언어의 종류도 매우 다양하다. C/C++/Basic/Cobol/JAVA 등 이런 수많은 언어들 중에서 우리는 C 언어라는 프로그래밍 언어를 사용할 것이다.

다. C언어

  앞서 우리는 C 언어라는 것을 사용한다고 하였다. 그럼 이제 C 언어가 무엇인지 알아보자. C 언어는 AT&T Bell 연구소의 연구원 Dennis Ritch라는 연구원이 UNIX라는 OS를 만들기 위해 만들어진 언어이다. 이 C 언어는 매우 강력한 기능들과 뛰어난 호환성으로 무장하여 폭발적인 인기를 얻었고, 지금까지도 가장 대표적인 프로그래밍 언어로 자리잡고 있으며, 현재 존재하는 대부분의 프로그램들은 이 C 언어로 만들어졌다고 할 수 있다. C언어의 장점으로는 뛰어난 호환성, 풍부한 연산자, 포인터 등 수도없이 많겠지만 이런 것들은 앞으로 C 언어를 사용해보면서 느껴보기 바란다.

라. 컴파일러

  우리는 이 C 언어를 일반적인 타이핑을 통해서 입력해 나갈 것이다. 하지만 이런 C 언어도 어디까지나 인간의 입장에서 만들어진 언어이다. 이런 언어는 컴퓨터는 이해하지 못한다. 즉 우리가 만든 프로그램이 컴퓨터가 알아듣게 하려면 이 프로그램을 번역해주는 작업이 필요한데, 이 작업을 컴파일이라고 한다. 그리고 이 컴파일을 해주는 프로그램을 컴파일러라고 하는데, 이 컴파일러의 종류도 매우 다양하지만 우리는 여기서 Microsoft C/C++ Compiler를 사용할 것이다. 특별한 이유는 없다. 다만 우리는 Microsoft Visual Studio 2005를 사용할 것이기 때문에 여기 내장되어 있는 컴파일러를 사용할 것이다. 이외에도 훌륭한 컴파일러들은 얼마든지 많다. 예를 들면 gcc라는 컴파일러도 매우 훌륭한 컴파일러로 알려져 있다.

마. IDE

  일반적으로 프로그래밍은 간단한 에디터와 컴파일러만 있어도 가능하다. 즉 컴파일러와 메모장만 있어도 프로그래밍은 할 수 있다. 하지만 이런 환경만으로는 프로그래밍을 하기에는 불편함이 많이 따른다. 그래서 각종 편리한 기능들을 모아서 프로그래밍하기 편하기 위한 프로그래밍 전용 에디터들이 많이 나오게 되었는데 이런 것들을 통합 개발 환경(IDE)라고 한다. 마치 메모장보다는 한글같은 워드프로세서를 이용해서 문서 작업을 많이 하듯이, 프로그래밍도 이 IDE를 이용해서 작업을 하는 것이 일반적이다. 또한 요즘 나오는 대부분의 IDE는 컴파일러도 함께 내장하고 있다. 대표적인 IDE로는 Microsoft Visual Studio나 dev C++ 등이 있다. 우리가 여기서 사용할 것은 Visual Studio 2005를 사용할 것이다.

이올린에 북마크하기(0) 이올린에 추천하기(0)
Trackback 0 and Comment 0
프로그래밍이란

1. 들어가기에 앞서

2. 프로그래밍

가. 프로그램

나. 프로그래밍

다. C언어

라. 컴파일러

마. IDE

3. C코드 미리 보기

가. 가장 간단한 코드

나. 출력문

다. 입력문의 사용

라. 연산자의 사용

마. 제어문의 사용

바. 반복문의 사용

사. 함수의 사용

4. 첫 C 프로그램

가. 출력

나. printf()

5. 변수

가. 변수의 사용

나. 타입

다. 입력 받기

6. 연산자

가. 연산자란

나. 연산자의 사용

7. 제어문

가. 프로그램의 흐름

나. 흐름의 제어

다. if

라. if~else

마. switch

8. 반복문

가. for

나. while

다. do~while

라. 무한루프

9. 배열

가. 배열의 의미

나. 배열의 종류

다. 배열의 선언

라. 2차원 배열

10. 함수

가. 함수란

나. 함수의 사용법

다. 함수의 구조

라. 리턴 값

마. 함수의 제작

바. 프로토타입

사. 구조화 프로그래밍

11. 프로젝트 - 간단한 계산기

이올린에 북마크하기(0) 이올린에 추천하기(0)
Trackback 0 and Comment 0