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 |