310 likes | 603 Views
ㅎㅎ. C++ 프로그래밍 기초 : 객체지향의 시작. 제어문. 제어문의 개념 선택문 반복문 분기문. 2 장 . 자료형과 연산자. 학습목표 조건에 따라 분기하는 if, if~else 및 switch 문의 사용법을 학습한다 . 특정 문장을 반복적으로 수행하는 for, while, do~while 문의 사용법을 학습한다 . 보조 제어문인 break, continue 문의 사용법을 학습한다. 제어문
E N D
ㅎㅎ • C++ 프로그래밍 기초: 객체지향의 시작 제어문 • 제어문의 개념 • 선택문 • 반복문 • 분기문 동의대 김 미 진
2장. 자료형과 연산자 • 학습목표 • 조건에 따라 분기하는 if, if~else 및 switch 문의 사용법을 학습한다. • 특정 문장을 반복적으로 수행하는 for, while, do~while 문의 사용법을 학습한다. • 보조 제어문인 break, continue 문의 사용법을 학습한다.
제어문 제어문은 프로그래머가 특정 문장을 건너 띄게도 하고 특정 문장을 반복 실행하게도 하면서 프로그램의 흐름을 조절하는 역할을 한다. Section 01제어문의 개념
if 문 if 문은 주어진 조건을 만족하는 경우에만 특정 문장을 수행하도록 하는 제어문이다. Section 02선택문 문장 1; if(조건문) { 문장 2; } 문장 3;
[실습하기 3-1] if 문을 사용해 절대값 구하기 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 } [예제 3-1]3_1.cpp
if else문 if~esle 문은 두 가지 경우 중 한 가지만 선택할 때 사용한다. 조건에 만족할 때 처리할 문장이 하나일 경우에는 중괄호를 생략할 수 있지만 여러 문장을 수행해야 할 경우에는 반드시 중괄호로 묶어주어야 한다. Section 02선택문 문장 1; if(조건문) { 문장 2; } else{ 문장 3; } 문장4;
[실습하기 3-2] if~else 문을 사용해 짝홀수 판별하기 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 } [예제 3-2]3_2.cpp
다중 if~else문 if~else 문을 여러 번 사용하는 다중 if~else 문은 두 가지 이상의 조건문을 둘 수 있으며 각각의 조건에 맞는 블록을 수행할 수 있다. Section 02선택문 if(조건문1){ 문장 1; } else if(조건문2){ 문장 2; } else if(조건문3){ 문장 3; } else { 문장 n; }
[실습하기 3-3] 다중 if~else 문을 이용해 학점 계산하기 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-3]3_3.cpp
[실습하기 3-4] 동등 연산자 대신 대입 연산자를 사용했을 경우 발생하는 문제점 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 } [예제 3-4]3_4.cpp
다중선택 switch 문 여러 가지 중 하나를 선택할 때 사용하는 다중 선택문이다. 다중 if else 문은 조건문을 검사해 참이나 거짓의 결과로 문장을 수행하지만 switch 문은 참이나 거짓의 결과를 반환하는 논리식이 아닌 상수식에 따라 분기한다. Section 02선택문 switch(정수식) { case 정수값1 : 문장 1;[break;] case 정수값2 : 문장 2;[break;] … case 정수값n : 문장n;[break;] [default:] 문장n+1; }
[실습하기 3-5] switch 문으로 학점 판별하기 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-5]3_5.cpp
[실습하기 3-6] break 문이 없는 switch 문으로 학점 판별하기 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-6]3_6.cpp
for문 지정된 횟수만큼 반복한다. <초기식>, <조건식>, <증감식>, <문장>으로 구성되며, 다른 제어문처럼 <문장>이 한 행일 경우는 중괄호({})를 생략할 수 있다. Section 03반복문 for(<초기식>;<조건식>;<증감식>) { 문장1; }
[실습하기 3-7] for 문을 이용해 1부터 5까지의 합계 구하기 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-7]3_7.cpp
[실습하기 3-8] 1부터 5까지의 홀수 합 구하기 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-8]3_9.cpp
[실습하기 3-9] for 문을 이용해 구구단 출력하기 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 } [예제 3-9]3_10.cpp
다중 for문 for 문 안에 for 문을 포함해 사용하는 것 2차원 배열이나 3차원 배열을 사용한 연산에서 사용된다. 각각의 for 문은 서로 다른 루프이므로 다른 제어 변수를 사용해야 한다. Section 03반복문 for(<초기식>;<조건식>;<증감식>) { 문장1; for(<초기식>;<조건식>;<증감식>) { 문장2; } 문장3; }
[실습하기 3-10] if 문을 사용해 절대값 구하기 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-10]3_11.cpp
조건을 먼저 검사하는 while 문 while 문은 단어의 뜻 그대로‘...하는 동안’즉, 조건이 만족하는 동안 문장을 반복 수행한다. Section 03반복문 while(조건식) { 문장; }
[실습하기 3-11] while 문을 사용해 1부터 10까지의 합 구하기 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-11]3_13.cpp
[실습하기 3-12] 0을 입력할 때까지 반복하는 반복문 작성하기 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-12]3_15.cpp
do~while 문 반복되는 문장을 일단 한번은 실행하고 그 다음에 조건을 검사해 조건이 참이면 계속 반복하고 거짓이면 while 문을 빠져나온다. while 문은 조건이 거짓이면 한번도 실행하지 않는 반면, do~while 문은 조건 검사를 나중에 하므로 조건이 거짓이더라도 한번은 실행된다. Section 03반복문 do { 문장 } while(조건식);
[실습하기 3-13] do~while 문으로 좀더 간결하게 프로그램 작성하기 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 } [예제 3-13]3_16.cpp
break 문 프로그램의 일부를 수행하지 않고 건너뛰게 하여 switch 문, for 문, while문, do~while 문의 제어를 벗어나기 위해 사용할 수 있다. Section 04분기문 while(조건문) { 문장 1; if(조건식) break; 문장 2; } 다음 문장;
[실습하기 3-14] for 문에서 반복 도중에 벗어나기 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 } [예제 3-14]3_15.cpp
continue 문 프로그램을 수행하다가 continue 문을 만나면 제어가 다음 문장이 아닌 다른 곳으로옮겨지는데 break 문처럼 실행을 중단하고 반복문을 아예 벗어나는 것이 아니라 반복문을계속 수행하기 위해서 다시 반복문의 처음으로 돌아간다. Section 04분기문 while(조건문) { 문장 1; if(조건식) continue; 문장 2; } 다음 문장
[실습하기 3-15] continue 문의 사용법 알아보기 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 } [예제 3-15]3_18.cpp
컴퓨터 프로그램에서 실행되어야 할 문장을 지정하는 것을 제어라고 한다. • 선택문은 여러 가지 경로 중에서 하나를 선택하기 위해 사용된다. • if 문은 조건이 참일 경우에만 지정된 동작을 실행한다. • if else 문은 조건이 참일 때와 거짓일 때 실행될 각각의 동작을 지정한다. • switch 문은 특정 변수나 표현식을 검사하는 일련의 결정을 처리하며 동작을 선택한다. case문 다음에는 대부분 break 문을 포함한다. • for 문은 <초기식>, <조건식>, <증감식>,<문장>으로 구성되며, <초기식>,<조건식>,<증감식>은 세미콜론(;)으로 구분된다. • 일반적으로 for 문은 명시적으로 반복 횟수가 정해질 때 사용되며, while 문은 반복횟수가 정해지지 않을 때 사용된다. • do~while 문은 조건이 거짓이더라도 적어도 한번은 실행이 된다. • break 문은 하나의 반복문(for, while, do while) 안에서 실행되며, 반복문에서 바로 빠져나오는데 사용한다. • continue 문은 하나의 반복문(for, while, do while) 안에서 실행되며, 반복문 안의 남은 문장들을 건너뛰고 다음 반복문의 조건을 검사한다.