C++ 프로그래밍 기초 √ 원리를 알면 IT가 맛있다 3장. 연산자
chapter 03. 제어문
조건에 따라 분기하는 if, if~else 및 switch 문의 사용법을 학습한다. 학습목표 조건에 따라 분기하는 if, if~else 및 switch 문의 사용법을 학습한다. 특정 문장을 반복적으로 수행하는 while, do~while, for 문의 사용법을 학습한다. 보조 제어문인 break, continue 문의 사용법을 학습한다.
1) 제어문의 개념
2) 선택문 if 문 문장 1; if(조건문) { 문장 2; } 문장 3;
[실습하기 3-1] if 문을 사용해 절대값 구하기 [예제 3-1] 3_1.cpp 01 #include<iostream> 02 using namespace std; 03 void main( ) 04 { 05 int x; 06 07 cout << " 정수값을 입력하세요 ? => "; 08 cin >> x; 09 10 if(x < 0) 11 x = -x; 12 13 cout << " 절대값 => " << x << "\n"; 14 }
2) 선택문 if 문 문장 1; if(조건문) { 문장 2; } else{ 문장 3; 문장4;
[실습하기 3-2] if~else 문을 사용해 짝홀수 판별하기 [예제 3-2] 3_2.cpp 01 #include<iostream> 02 using namespace std; 03 void main( ) 04 { 05 int x; 06 07 cout << " 정수값을 입력하세요 => "; 08 cin >> x; 09 10 if(x % 2 == 1) 11 cout << " 홀수이다. \n"; 12 else 13 cout << " 짝수이다. \n"; 14 }
다중 if~else 문 2) 선택문 if(조건문1){ 문장 1; } else if(조건문2){ 문장 2; 문장 1; } else if(조건문2){ 문장 2; else if(조건문3){ 문장 3; else { 문장n;
[실습하기 3-3] 다중 if~else 문을 이용해 학점 계산하기 [예제 3-3] 3_3.cpp 01 #include<iostream> 02 using namespace std; 03 void main( ) 04 { 05 int score; // 입력받은 점수를 저장할 변수 06 char grade; // 구한 학점을 저장할 변수 07 cout<<"점수를 입력하세요 : "; 08 cin>>score; 09 // 조건 검사 10 if(score>=90) // score가 90이상이냐? 11 grade='A'; // 만족하면 grade='A' 12 else if (score>=80) // 아니면 score가 80이상이냐? 13 grade='B'; // 만족하면 grade='B' 14 else if (score>=70) // 아니면 score가 7이상이냐? 15 grade='C'; // 만족하면 grade='C' 16 else if (score>=60) // 아니면 score가 6이상이냐? 17 grade='D'; // 만족하면 grade='D' 18 else // 아니면 19 grade='F'; // grade='F' 20 cout<<"입력한 점수 " <<score<<" : "<<grade<<"학점입니다.\n"; 21 }
[실습하기 3-4] 동등 연산자 대신 대입 연산자를 사용했을 경우 발생하는 문제점 [예제 3-4] 3_4.cpp 01 #include<iostream> 02 using namespace std; 03 void main( ) 04 { 05 int i=200; 06 cout<<" i가 300이냐? " ; 07 if(i==300) 08 cout<<"true\n"; 09 else 10 cout<<"false\n"; 11 12 cout<<" i가 300이냐? " ; 13 if(i=300) 14 cout<<"true\n"; 15 else 16 cout<<"false\n"; 17 }
다중선택 switch 문 2) 선택문 switch(정수식) { case 정수값1 : 문장 1;[break;] … case 정수값n : 문장n;[break;] [default:] 문장n+1; }
[실습하기 3-5] switch 문으로 학점 판별하기 [예제 3-5] 3_5.cpp 01 #include<iostream> 02 using namespace std; 03 void main( ) 04 { 05 int score; // 입력받은 점수를 저장할 변수 06 char grade; // 구한 학점을 저장할 변수 07 cout<<"점수를 입력하세요 : "; 08 cin>>score; 09 10 switch(score/10) { // 결과가 정수로 나오는 산술식 11 case 10 : grade='A';break; 12 case 9 : grade='A';break; 13 case 8 : grade='B';break; 14 case 7 : grade='C';break; 15 case 6 : grade='D';break; 16 default : grade='F'; 17 } 18 cout<<"입력한 점수 " <<score<<" : "<<grade<<"학점입니다.\n"; 19 }
[실습하기 3-6] break 문이 없는 switch 문으로 학점 판별하기 [예제 3-6] 3_6.cpp 01 #include<iostream> 02 using namespace std; 03 void main( ) 04 { 05 int score; // 입력받은 점수를 저장할 변수 06 char grade; // 구한 학점을 저장할 변수 07 cout<<"점수를 입력하세요 : "; 08 cin>>score; 09 10 switch(score/10) { // 식 11 case 10 : cout<< "A학점입니다."<<endl; 12 case 9 : cout<< "A학점입니다."<<endl; 13 case 8 : cout<< "B학점입니다."<<endl; 14 case 7 : cout<< "C학점입니다."<<endl; 15 case 6 : cout<< "D학점입니다."<<endl; 16 default : cout<< "F학점입니다."<<endl; 17 } 18 }
3) 반복문 for문 for(<초기식>;<조건식>;<증감식>) { 문장1; }
[실습하기 3-7] for 문을 이용해 1부터 5까지의 합계 구하기 [예제 3-7] 3_7.cpp 01 #include <iostream> 02 using namespace std; 03 void main() 04 { 05 int total=0; // 반드시 초기화해야 한다. 06 for(int i=1;i<=5;i++) { 07 cout<<"i ="<<i<<endl; 08 total+=i; // total=total+i; 09 cout<<"total ="<<total<<endl; 10 } 11 cout<<"1부터 " << i-1 <<" 까지의 합계는 "<< total <<"입니다"<<endl; 12 }
[실습하기 3-8] 1부터 5까지의 홀수 합 구하기 01 #include <iostream> [예제 3-8] 3_9.cpp 01 #include <iostream> 02 using namespace std; 03 void main() 04 { 05 int total=0; 06 for(int i=1;i<=5;i+=2) { 07 cout<<"i ="<<i<<endl; 08 total=total+i; 09 cout<<"total ="<<total<<endl; 10 } 11 cout<<"1부터 5까지의 홀수 합계는 "<< total <<"입니다"<<endl; 12 }
[실습하기 3-9] for 문을 이용해 구구단 출력하기 [예제 3-9] 3_10.cpp 01 #include <iostream> 02 using namespace std; 03 void main() 04 { 05 int dan; 06 cout<<"원하는 단을 입력하세요 : "; 07 cin>>dan; // 단 입력받기 08 for(int j=1;j<10;j++) 09 cout<< dan << " * " <<j<<" = " << dan*j <<“\n"; 10 }
다중 for 문 3) 반복문 for(<초기식>;<조건식>;<증감식>) { 문장1; 문장1; for(<초기식>;<조건식>;<증감식>) { 문장2; } 문장3; }
[실습하기 3-10] 다중 for 문을 이용해 특정 구구단 출력하기 [예제 3-10] 3_11.cpp 01 #include <iostream> 02 using namespace std; 03 void main() 04 { 05 for(int dan=2;dan<=9;dan++) // 바깥 for 문 06 for(int j=1;j<10;j++) // 안쪽 for 문 07 cout << dan << " * " << j <<" = " << dan*j <<“\n"; 08 }
3) 반복문 조건을 먼저 검사하는 while 문 while(조건식) { 문장; }
[실습하기 3-11] while 문을 사용해 1부터 10까지의 합 구하기 [예제 3-11] 3_13.cpp 01 #include <iostream> 02 using namespace std; 03 void main() 04 { 05 int total=0; 06 int i=1; // for 문의 초기식 07 while(i<=10) { // for 문의 조건식 08 total+=i; 09 i++; // for 문의 증감식 10 } 11 cout<<"1-10까지의 합은 "<<total<<"\n"; 12 }
[실습하기 3-12] 0을 입력할 때까지 반복하는 반복문 작성하기 [예제 3-12] 3_15.cpp 01 #include <iostream> 02 using namespace std; 03 void main() 04 { 05 int num; 06 cout<<"수를 입력하세요(0을 입력하면 종료) : "; 07 cin>>num; 08 while(num!=0) { 09 cout<< num <<“를 입력하셨군요.\n"; 10 cout<<"수를 입력하세요(0을 입력하면 종료) : "; 11 cin>>num; 12 } 13 cout<< num <<“을 입력하였기에 반복문이 종료되었습니다.\n"; 14 }
3) 반복문 do~while 문 do { 문장 } while(조건식);
[실습하기 3-13] do~while 문으로 좀더 간결하게 프로그램 작성하기 [예제 3-13] 3_16.cpp 01 #include <iostream> 02 using namespace std; 03 void main() 04 { 05 int num; 06 do{ 07 cout<<"수를 입력하세요(0을 입력하면 종료) : "; 08 cin>>num; 09 cout<< num <<" 를 입력하셨군요.\n"; 10 }while(num!=0); 11 cout<< num << " 을 입력하였기에 반복문이 종료되었습니다.\n"; 12 }
4) 분기문 break 문 while(조건문) { 문장 1; if(조건식) break; 문장 2; } 다음 문장;
[실습하기 3-14] for 문에서 반복 도중에 벗어나기 [예제 3-14] 3_15.cpp 01 #include <iostream> 02 using namespace std; 03 void main() 04 { 05 int total=0; 06 for(int i=1;i<=10;i++) { 07 if(i%2==0) // i가 2로 나누어서 떨어지면 08 break; // for 문을 벗어남 09 total+=i; 10 } 11 cout<<"i가 "<< i <<" 일 때 for 문을 벗어 남\n"; 12 cout<<"total : "<<total<<“\n”; 13 }
4) 분기문 continue 문 while(조건문) { 문장 1; if(조건식) continue; 문장 2; } 다음 문장;
[실습하기 3-15] continue 문의 사용법 알아보기 [예제 3-15] 3_18.cpp 01 #include <iostream> 02 using namespace std; 03 void main() 04 { 05 int total=0; 06 for(int i=1;i<=10;i++) { 07 if(i%2==0) // i가 2로 나누어서 떨어지면 08 continue; // 아래 문장들은 무시되고 for 문의 시작으로 다시 돌아가서 수행한다. 09 total+=i; 10 } 11 cout<<"i가 "<< i <<" 일 때 for 문을 벗어 남\n"; 12 cout<<"total : "<<total<<“\n”; 13 }
요약 컴퓨터 프로그램에서 실행되어야 할 문장을 지정하는 것을 제어라고 한다. 선택문은 여러 가지 경로 중에서 하나를 선택하기 위해 사용된다. if 문은 조건이 참일 경우에만 지정된 동작을 실행한다. if else 문은 조건이 참일 때와 거짓일 때 실행될 각각의 동작을 지정한다. switch 문은 특정 변수나 표현식을 검사하는 일련의 결정을 처리하며 동작을 선택한다. case문 다음에는 대부분 break 문을 포함한다.
요약 for 문은 <초기식>, <조건식>, <증감식>,<문장>으로 구성되며, <초기식>,<조건식>,<증감식>은 세미콜론(;)으로 구분된다. 일반적으로 for 문은 명시적으로 반복 횟수가 정해질 때 사용되며, while 문은 반복횟수가 정해지지 않을 때 사용된다. do~while 문은 조건이 거짓이더라도 적어도 한번은 실행이 된다. break 문은 하나의 반복문(for, while, do while) 안에서 실행되며, 반복문에서 바로 빠져나오는데 사용한다. continue 문은 하나의 반복문(for, while, do while) 안에서 실행되며, 반복문 안의 남은 문장들을 건너뛰고 다음 반복문의 조건을 검사한다.
Thank you hanbitbook.co.kr