아두이노/C언어 기초 강좌

[제4강] C언어 연산자와 제어문

깜장빠뿌 2016. 9. 24. 00:07

[제4강] C언어 연산자와 제어문

 

 

[사칙 연산자]

 

연산자에 대해서 알아보도록 하겠습니다.

 

C언어의 기본연산자는 모든 사람이 알고 있는 사칙연산자인 +,-,/(나누기),*(곱하기)와

나머지 연산자인 %가 있습니다.

 

참고로 나머지(%) 연산자는 5 나누기 2를 하면, 몫이 2이고, 나머지가 1이 되는데,

나머지 1 이 %연산자의 결과가 됩니다.

 

그리고 C언어에서 연산자를 간단히 표현도 가능합니다.

 

바로 "+=, -=, ++, -- " 연산자 인데요.

 

A+=B 는 A=A+B와 같은 말이고, A-=B는 A=A-B 라는 의미 입니다.

 

+=나 -= 이런 연산자는 코딩하는 사람의 성격에 따라 많이 쓰이거나 거의 안쓰거나 합니다.

 

하지만, 가장 많이 사용하는 연산자가 있는데, 바로 ++와 -- 연산자 입니다.

 

A++ 연산자의 의미는 A=A+1 이라는 의미 입니다.

 

그런데 ++의 위치에 따라 실제 연산되는 결과가 다르게 나오는데요,

 

++A 이렇게 표현도 가능하며, 각각의 의미는

 

A++을 하면 연산을 한번 수행한 후에 A의 값이 증가가 되는 뜻이구요

--A는 연산이 되기 전에 연산이 됩니다.

 

무슨말인지 잘 모르시겠다는분은 차차 C언어를 공부하면 자연스럽게 이해하시게 될겁니다.

 

아니면 직접한번 Dev C++로 한번 printf() 함수를 알려드렸으니 테스트 해보세요~

 

 

[제어문 연산자]

 

제어문에서 많이 쓰이는 연산자는 비교연산자 입니다.

 

비교 연산자라고함은 의미 그대로 서로의 값을 비교한다는 의미입니다.

 

A==B 는 A와 B가 같으면 참이라는 뜻이고, A!=B 는 A와 B가 다르면 참이라는 말입니다.

 

A<=B 는 A가 B보다 작거나 같을경우 참이고, A<B는 A가 B보다 작을경우 참이고,

 

A>=B 는 A가 B보다 크거나 같을경우 참이고, A>B는 A가 B보다 클겨우 참이라는 말입니다.

 

또 OR 연산자가 있는데요. "||" 요런 기호를 사용합니다. 의미는 A||B라고 하면 A와 B 둘중 하나라도 참일경우에 참이되는 것입니다.

 

반대로 AND 연산자도 있는데요. A&&B는 A와 B 둘다 참일 경우에 참이라는 말입니다.

 

C에서 기본적으로 쓰이는 것들이니 이정도만 잘 알고계셔도 앞으로 프로그래밍 하시는데 무리없으리라 생각이 됩니다.

 

그럼 이제 각각의 예제들은 강좌를 진행하면서 하나하나 보여드리겠습니다.

 

 

[제어문]

 

그럼, 이제부터 C언어의 꽃이자 가장 기본적인 제어문에 대해서 알아보도록 하겠습니다.

 

모든 프로그램에서 제어문이 없다는건 말이 안되고, 그런 프로그램은 있을 수가 없습니다. (뭐, 키보드를 입력받고 화면에 뿌려주기만 하는 단순한건 빼구요..)

 

 

for 제어문

 

for 제어문에 대해서 알아보도록 하겠습니다.

 

for문은 프로그래밍에서 꼭 한번 이상식은 들어가는 제어문입니다.

 

제어문은 어떤것이든지 하나만 제대로 알면 나머지는 비슷하니깐 쉽게 알수 있습니다.

 

기본적인 사용법은 아래와 같습니다.

 

=======================

for(초기값; 조건; 변경자)

{

   내용;

}

======================= 

 

컴파일러가 for문을 만나면, 읽어 들이는 흐름은 

 

 : 초기값->조건(참일경우)->내용->변경자->조건(참)->내용->변경자

      ->조건(거짓)->for문 밖으로

 

 이런식으로 흘러갑니다.

 

그러면 간단한 예를들어 보겠습니다.

 

#include<stdio.h>

 

int main(void)

{

   int i,sum=0;

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

   {

       sum+=i;        //sum=sum+i

   }

   printf("%d",sum);

  return 0;

}

 

이렇게 하면 화면에 어떤 숫자가 나타날까요? 한번 생각해보세요.

 

 

답은 1부터 10까지의 합이 출력이 됩니다.

 

참고로 +=연산자는 앞에서 말씀드렸듯이 sum=sum+i; 와 같은 말입니다.

 

흐름으로 설명드리면, for문안에서 먼저 i를 1로 초기화 시키고, i가 10보다 작은지 검사를 합니다.

지금은 i가 1이기때문에 10보다 작은 조건에서 참이되겠죠.

참의 조건일 경우 { } 안의 내용을 실행하게 되는데, sum+=i; 를 만나게 되겠죠.

그러면, sum의 변수에 i의 값을 저장합니다. 즉, sum에 1이 들어갈것이고,

for문의 변경자로 이동을 하겠죠. 변경자는 i++ 인데, 위에서 설명한데로 i에 1을 더하는 겁니다. 즉, 현재는 i가 2가 되겠죠?

 

그런 다음 다시 조건문에 들어가서 i가 10보다 작은지를 점검하고, 현재는 2가 들어있으니 당연히 참이겠죠. 그래서 다시 함수 { } 안으로 들어가서 sum+=i 를 실행하겠죠.

 

좀전에 sum에 1을 넣어두었고, 지금은 i에 2의 값이 있으니, sum=sum+i를 하게되면, 다시 sum에 3이 들어가게 되겠죠.

 

이런식으로 계속 i가 11이 될때까지 계속 더하게 되어 sum에 값은 결국 1~10을 더한 숫자가 들어가게 됩니다.

 

 

또한, 각각의 제어문은 중첩해서 사용도 가능합니다.

 

특히, 프로그램을 코딩하다보면 for 2개를 중첩해서 사용하는 경우가 많이 있는데, 원리는 동일합니다.

 

for(i=0; i<10; i++)                 //바깥쪽 for문

{

   for(j=0; j<10; j++)              //안쪽 for문

   {

       printf("%d   ",j);

   }

   printf("\n");

}

 

이런식으로 코딩을하면, 가장 안쪽에 있는 for문이 거짓이 될때까지 실행을하고 난 다음에 바깥쪽 for문을 실행합니다.

 

과연 어떤 결과가 있을가요??

 

결과는 0  1  2  3 ....... 9

         0  1  2  3 ........9

이런식으로 0~9까지의 숫자가 10번 화면에 출력되겠죠?

 

 

 

while 제어문

 

이번엔 while()문에 대해서 알아보도록 하죠..

 

while 문은 특히 하드웨어 프로그래밍에서 정말 기본의 기본이 되는 함수 입니다.

 

무조건 1번은 들어가게 되는 제어문 입니다.

 

while문의 사용법은 아래와 같습니다.

 

while(조건)

{

   내용

}

 

 

for문에 비해 초기값과 변경자가 없는것이 특징이죠.

하지만, 쓰임은 비슷합니다.

 

위에서 알려드린 for제어문의 1부터 10까지의 수를 더하는 예를보면

 

#include<stdio.h>

int main(void)

{

   int i=0,sum=0;

   while(i<=10)

   {

      sum+=i;

      i++;

    }

    printf("%d",sum);

    return 0;

}

 

이런식으로 하면 위의 for문의 경우와 같은 결과가 나옵니다.

다른점이 for문의 변경자가 반듯이 while문의 { } 안에 들어가 있어야 합니다.

 

그렇지 않으면, while문 안을 빠져나오지 못하고, 무한 루프를 돌게 됩니다.

 

 

 

do-while 제어문

 

do-while()문은 조건이 거짓이더라도 1번은 꼭 실행되어야 할때가 있을때 사용합니다.

 

 

사용법은

 

do

{

   내용

}while(조건);      // 참일 경우 내용을 계속 반복 실행

 

 

이런식으로 사용을 합니다.

 

예를들어 프로그램에 메뉴가 들어가야 한다면, while문의 경우는 처음에 메뉴를 출력시킨다음,

다시 while문 안에서 다시 메뉴를 출력시켜줘야 합니다.

 

즉, 식당에서 1~5번까지 선택하는 주문 프로그램을 짠다면,

 

while 제어문을 사용하기 전에 메뉴를 선택하라는 message를 띄워야 되고,

 

다시 while 문안에 메뉴를 선택하라는 message를 띄어야 합니다.

 

 

하지만 do-while()문을 사용한다면 메뉴부를 한번만 넣어도 되죠.

 

예를 들어 보면,

 

#include<stdio.h>

 

int main(void)

{

   int menu;

   do

   {

       printf("1.출력\t2.입력\t3.저장\n");

       printf("\t선택 : ");

       scanf("%d",&menu);

    }while(menu==1 || menu==2 || menu==3);

}

 

이런식으로 사용을 합니다.

 

결과는 1, 2, 3을 입력하면 계속 do 다음에 있는 { } 내용을 반복을 하게 됩니다.

 

다른값을 입력하면 종료 됩니다.

 

 

 

이번강좌는 내용이 조금 많은것 같습니다.

하지만, C에서 정말 기본적인것만 강좌에 넣고 있습니다.

 

이정도는 알고 있어야 C언어의 기초를 아는 것입니다.

 

중도에 포기하지 마시고 끝까지.. C언어의 꽃 포인터까지 정복해 봅시다!!