책정리/혼자 연구하는 C,C++ 1

4장 제어문

GONII 2015. 2. 18. 20:56

4.1 조건문

4.1.1 if 문

주어진 조건에 다라 명령의 실행 여부를 결정하는 문장

  • 사용 예

    if (조건) 명령;

    if(i>0) {i++;}

  • 예제 if

#include <Turboc.h>

   

void main()

{

int i;

   

printf("정수를 입력하세요 : ");

scanf("%d", &i);

if(i==7)

printf("7을 입력했습니다. \n");

}

  • 비교연산자

연산자

조건

==

좌변과 우변이 같다.

!=

좌변과 우변이 다르다.

>

좌변이 우변보다 크다.

<

좌변이 우변보다 작다.

>=

좌변이 우변보다 크거나 같다.

<=

좌변이 우변보다 작거나 같다.

4.1.2 블록 구조

조건에 따라 복수 명령의 실행 여부를 통제하는 방법

{ } 중괄호 사용, 복문 또는 블록(block)이라고 함.

  • 예제 if2

#include <Turboc.h>

   

void main()

{

int i;

   

printf("정수를 입력하세요 : ");

scanf("%d", &i);

   

if(i==7){

printf("7을 입력하였습니다. \n");

printf("행운의 7입니다. \n");

}

}

4.1.3 else

"그 외에"라는 뜻이며, 조건이 만족되지 않았을 때 실행할 명령을 지정

  • 사용 예

    if(조건) 명령1; else 명령2;

  • 예제 if3

#include <Turboc.h>

   

void main()

{

int i;

   

printf("정수를 입력하세요 : ");

scanf("%d", &i);

   

if(i==7)

printf("7을 입력하였습니다. \n");

else

printf("7이 아닙니다.\n");

}

   

  • 사용 예

    if(조건1) 명령1; else if(조건2) 명령2; else 명령3;

  • 예제 if4

#include <Turboc.h>

   

void main()

{

int i;

   

printf("정수를 입력하세요 : ");

scanf("%d", &i);

if(i==7)

printf("7을 입력했습니다.\n");

else if(i==8)

printf("8을 입력했습니다. \n");

else

printf("7,8이 아닙니다.\n");

   

}

4.1.4 if문 연습

  • 예제 if5

#include <Turboc.h>

   

void main()

{

int i;

   

printf("정수를 입력하세요 : ");

scanf("%d", &i);

if(i%2==0) {

printf("%d는 짝수입니다. \n", i);

} else {

printf("%d는 홀수입니다. \n", i);

}

}

  • 예제 if6

#include <Turboc.h>

   

void main()

{

int i;

   

printf("문자열을 출력할 위치를 입력하세요 : ");

scanf("%d", &i);

if(i==1){

gotoxy(20,10);

} else if (i==2) {

gotoxy(40,10);

} else {

gotoxy(60,10);

}

printf("programmer\n");

}

4.2 for 반복문

4.2.1 for문

  • 사용 예

    for (초기식;조건식;증감식) 명령;

  • 예제 for

#include <Turboc.h>

   

void main()

{

int i;

   

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

printf("숫자 = %d\n", i);

}

}

  • 예제 forsum

#include <Turboc.h>

   

void main()

{

int i, sum;

   

sum=0;

for (i=0; i<=100; i=i+1) {

sum=sum+i;

}

printf("1~100까지의 합 = %d\n", sum);

}

  • for문의 활용 예

    for (i=1; i<=100; i=i+2);                //1~100사이의 모든 홀수에 대한 반복

    for (i=100; i>0; i=i-1);                //100~1까지 1식 감소하며 역순으로 반복

    for (i=0.1 i<=10.0; i=i+0.1);        //0.1 ~ 10.0까지 0.1씩 증가하며 반복

    4.2.2 문자 움직이기

  • 예제 movechar

#include <Turboc.h>

   

void main()

{

int i;

clrscr();

   

for (i=1; i<=80; i=i+1) {

gotoxy(i,10);

putch('#');

gotoxy(i-1,10);        // i-1, 10 좌표로 이동

putch(' ');                // 그전에 출력된 # 삭제

delay(100);

}

}

4.2.3 무한 루프

  • 사용 예

for(;;) {

명령;

}

for (;;) {

명령;

if(탈출조건)

break;

}

  • 예제 mincommon

#include <Turboc.h>

   

void main()

{

int i, num1, num2;

printf("첫번째 숫자를 입력하세요 : ");

scanf("%d", &num1);

printf("두번째 숫자를 입력하세요 : ");

scanf("%d", &num2);

   

i=1;

for (;;) {

if(i%num1==0 && i%num2==0)

break;

i=i+1;

}

printf("최소 공배수 = %d", i);

}

4.2.4 다중 루프

두 개 이상의 루프가 겹쳐 있는 제어 구조

  • 예제 samdan

#include <Turboc.h>

   

void main()

{

int i,j;

   

for (i=1; i<=3; i=i+1) {

for(j=1; j<=3; j=j+1) {

printf("%d*%d=%d\n", i,j,i*j);

}

}

}

  

  • 예제 Triangle

#include <Turboc.h>

   

void main()

{

int i,j;

   

for(i=1; i<=15; i=i+1) {

for(j=0; j<i; j=j+1) {

printf("*");

}

printf("\n");

}

}

  • 예제 cubic8

#include <Turboc.h>

   

void main()

{

int j1, j2;

   

for (j1=1; j1<=6; j1=j1+1) {

for (j2=1; j2<=6; j2=j2+1) {

if (j1+j2==8) {

printf("값1=%d, 값2=%d\n", j1,j2);

}

}

}

}

4.2.5 for문 실습

  • 예제 Triangle2

#include <Turboc.h>

   

void main()

{

int i,j;

   

for(i=1; i<=15; i=i+1) {

for(j=0; j<i; j=j+1) {

printf("%c", i+'0');

}

printf("\n");

}

}

  • 예제 Triangle3

#include <Turboc.h>

   

void main()

{

int i,j;

   

for(i=15; i>=1; i=i-1) {

for(j=1; j<=i; j=j+1) {

printf("*");

}

printf("\n");

}

}

4.3 while 반복문

4.3.1 while

조건이 만족하는 동안 명령을 계속 실행

  • 사용 예

    while (조건) 명령;

  • 예제 whilesum

#include <Turboc.h>

   

void main()

{

int i, sum;

   

sum=0;

i=1;

while (i<=100) {

sum=sum+i;

i=i+1;        //조건 i++

}

printf("1~100까지의 합=%d\n",sum);

}

  • do while 사용 예

    do 명령; while (조건);

  • 예제 dosum

#include <Turboc.h>

   

void main()

{

int i, sum;

   

sum=0;

i=1;

do {

sum=sum+i;

i=i+1;

}while (i<=100);

printf("1~100까지의 합 = %d\n", sum);

}

4.3.2 제어문 비교

  • for문 특징

    제어 변수를 사용한다는 점

    루프를 통제하는 변수를 선언하고 변수가 일정한 범위의 값을 가지는 동안 명령을 반복

    미리 정해진 횟수만큼 반복할 때 가장 편리

    초기식, 조건식, 증감식이 포함되어 있어 루프의 선두만 봐도 변수의 변화를 쉽게 파악 가능

  • while문 특징

    초기식이나 증감식이 없다.

    제어 변수라는 개념이 없으며 루프 내부에서 조건식의 진위 여부를 변경

    반복 횟수가 가변적

    사용자의 입력이나 네트워크의 변화, 특정 신호의 입력 등 언제 발생할지 모르는 조건에 대해 반복 할때 유용

  • do~while

    do~while문은 일단 명령을 실행한 후 루프 계속 여부를 점검

    선실행 후평가

for문

  

while문

  

do~while문
 

  

4.3.3 반복문 실습

  • 예제 holjjak

#include <Turboc.h>

   

void main()

{

int i;

   

do {

printf("정수를 입력하세요(끝낼 때는0) : ");

scanf("%d", &i);

if(i%2==0){

printf("%d는 짝수입니다.\n",i);

} else {

printf("%d는 홀수입니다.\n",i);

}

} while(i!=0);

}

  • 예제 holjjak2

#include <Turboc.h>

   

void main()

{

int i;

   

for(;;) {

printf("정수를 입력하세요(끝낼 때는0) : ");

scanf("%d", &i);

if(i==0) {

break;

}

if(i%2==0) {

printf("%d는 짝수입니다. \n", i);

} else {

printf("%d는 홀수입니다. \n", i);

}

}

}

  • 예제 sum999

#include <Turboc.h>

   

void main()

{

int i;

int n=0;

int sum=0;

double avg;

   

for(;;) {

printf("정수를 입력하세요(끝낼 때는999) : ");

scanf("%d", &i);

if(i==999) {

break;

}

sum=sum+i;

n=n+1;

}

   

if(n==0) {

avg=0;

} else {

avg=(double)sum/n;        //(double) 캐스트 연산자

}

printf("입력한 수의 총 합은 %d입니다.\n", sum);

printf("입력한 수의 평균은 %.2f입니다\n", avg);

}

4.4 switch 문

4.4.1 다중 선택

하나의 변수값을 평가하여 각 값에 대해 개별적인 처리를 지정하는 문장

  • 사용 예

    switch(변수) {

    case 값1 : 명령1;break;

    case 값2 : 명령2;break;

    default:명령;break;

    }

  • 예제 switch

#include <Turboc.h>

   

void main()

{

int i;

   

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

scanf("%d", &i);

   

switch(i) {

case 0:

printf("0 입력\n");

break;

case 1:

printf("1 입력\n");

break;

case 2:

printf("2 입력\n");

break;

default:

printf("0,1,2가이님\n");

break;

}

}

  

4.4.2 # 움직이기

#include <Turboc.h>

   

void main()

{

int x,y;

int ch;

char m='#';

   

x=40;

y=10;

clrscr();

   

for(;;) {

gotoxy(x,y);

putch(m);

ch=getch();

if (ch==0xE0 || ch==0) {

ch=getch();

switch(ch) {

case 75:

if(x>0) {x=x-1;}

else {x=79;}

break;

case 77:

if(x<79) {x=x+1;}

else {x=0;}

break;

case 72:

if(y>0) {y=y-1;}

else {y=24;}

break;

case 80:

if(y<24) {y=y+1;}

else {y=0;}

break;

default:

putch('\a');

break;

}

} else {

switch(ch) {

case ' ':

clrscr();

break;

case '1':

m='1';

break;

case '2':

m='2';

break;

case 'q':

case 'Q':

exit(0);

default:

putch('\a');

break;

}

}

}

}

  • 예제 scancode

#include <Turboc.h>

   

void main()

{

int ch;

for(;;) {

ch=getch();

if(ch==0xE0 || ch==0) {

ch=getch();

printf("확장 키 입력, 코드= %d\n", ch);

} else {

printf("일반 문자 입력, 문자=%c, 코드 = %d\n",ch,ch);

if(ch=='q') exit(0);

}

}

}

4.4.3 switch 실습

  • 예제 switchcalc

#include <Turboc.h>

   

void main()

{

char op;

int a=10, b=5;

   

printf("10과 5의 연산을 선택하시오(+-*/) : ");

scanf("%c", &op);

   

switch (op) {

case '+':

printf("10 %c 5 = %d\n",op,a+b);

break;

case '-':

printf("10 %c 5 = %d\n",op,a-b);

break;

case '*':

printf("10 %c 5 = %d\n",op,a*b);

break;

case '/':

printf("10 %c 5 = %d\n",op,a/b);

break;

default:

printf("잘못 입력\n");

break;

}

}

  • 예제 switchscore

#include <Turboc.h>

   

void main()

{

int score;

   

printf("성적을 입력하시오 : ");

scanf("%d", &score);

   

switch (score/10) {

case 10:

case 9:

printf("수입니다.\n");

break;

case 8:

printf("우입니다.\n");

break;

case 7:

printf("미입니다.\n");

break;

case 6:

printf("양입니다.\n");

break;

default:

printf("가입니다.\n");

}

}

4.5 그 외 제어문

4.5.1 goto

지정한 곳으로 점프하는 제어문

  • 예제 gotosum

#include <Turboc.h>

   

void main()

{

int i, sum;

   

i=1;

sum=0;

here:

sum=sum+i;

if(i<100) {

i=i+1;

goto here;

}

printf("1~100까지의 합 = %d\n", sum);

}

4.5.2 break

조건식의 진위 여부에 상관없이 즉시 루프를 탈출

   

4.5.3 continue

루프의 나머지 부분을 무시하고 조건 점검부로 점프하여 루프의 다음 값을 실행하도록 하는 명령

  • 예제 continue

#include <Turboc.h>

   

void main()

{

int i;

   

for(i=1; i<=50; i++) {

if(i%9==0)

continue;

if(i%3==0)

printf("%d\n",i);

}

}

 

반응형

'책정리 > 혼자 연구하는 C,C++ 1' 카테고리의 다른 글

6장 함수  (0) 2015.02.19
5장 연산자  (0) 2015.02.19
3장 변수  (0) 2015.02.18
2장 첫 번째 예제  (0) 2015.02.18
1장 프로그래밍 입문  (0) 2015.02.17