티스토리 뷰

학교복습용/객체1

(2) 제어문 ( 반복문 / 조건문 )

브로콜리여사 2022. 12. 22. 16:27

반복문(loop)

: 특정한 부분의 코드가 반복적으로 수행될 수 있도록 하는 구문

       (1) while : 조건을 먼저 확인

       (2) for : 조건을 먼저 확인

       (3) do - while : 조건을 나중에 확인

 

 

while

while (루프 반복 조건)

while(1) : break 될 때 까지 무한 반복 된다.

 

1. while 반복문 : 반복이 몇 번 인지 모를때 

while (condition); << 여기서 while 문 종료

{

}

 

2. 카운트 제어 while 반복문

int main(){

   int counter = 0; // 반복문에 진입하기 전에 숫자를 세기 위한 카운트 변수 초기화

 

  while (counter < 10) {  // 반복을 몇 번 해야하는지 알고 있을 때

        cout << counter + 1

               << " : dlwlrma " << endl;

        counter++;

        }

}

 

3. 이벤트 제어 while 반복문 (특정 이벤트가 발생하면 반복문 종료)

  • (1) sentinel controlled while (감시값)

#include <iostream>
using namespace std;

int main() {
int n = 0;
int sum = 0;

cout << "정수를 입력하세요 (종료하려면 -1 입력): ";     // 먼저 -1 입력받고
cin >> n;

while (n != -1) {  // -1이 입력되면 종료한다. 

while (n >= 0) // "정수를 입력하세요 (종료하려면 음수 입력)"
sum = sum + n;

cout << "정수를 입력하세요 (종료하려면 -1 입력): ";
cin >> n;

}
cout << "합 = " << sum << endl;
}

  • (2) EOF controlled while

#include <iostream>
using namespace std;

int main() {
int n = 0;
int sum = 0;

cout << "첫 번째 정수를 입력하세요 (종료하려면 음수 입력): ";

while (cin >> n) {              //cin은 여기서 입력받으니까 다른 곳에는 작성하지 않는다.  ^Z입력받으면 종료!
sum = sum + n;

cout << "정수를 입력하세요 (종료하려면 음수 입력): ";

}
cout << "합 = " << sum << endl;
}

  • (3) flag controlled while

flag >> 0 : 정상 , 1 : 비정상

#include <iostream>
using namespace std;

int main() {
int num;
bool flag = true; // 초기값은 true로 설정

while (num < 0 && flag) {
cout << "입력하세요: ";
cin >> num;
if (num % 2 == 1) {
flag = false; // false가 되면 while 문을 나간다.
}
}
}

: flag가 true 일 때 (짝수) while문을 계속, false일 때 (홀수)while문 탈출

 

while (1) : 무한 루프

 

 

for문

for ( 초기화 ; 루프 반복 조건 ; 카운터 증가)

for (unsigned int  a = 1 ; a <= 10 ; a++){

sum = sum + a;

}

밖에서 a 변수 사용 불가능

조건 표현식이 생략되면 조건이 참인 것으로 간주 = 무한루프

 

다 사용가능!

for (int i = 0 ; i < 5 ; i++)

 

int i ;

for (i = 0; i < 5 ; i++)

 

int i = 0;

for ( ; i <5 ; i++)

 

int i =0;

for (  ;  ;  )

if(i == 10){

  break;

  ++i;

}

 

 

복리계산식

amount = principal * pow (1.0 + rate, year)

 

7의 배수 출력하기

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
  int lower = 1;
  int higher = 300;
  int divisor = 7;
  int col = 1;

    for (int i = lower; i < higher; i++) {  // 300번 도는 프로그램
      if (i % divisor == 0) {   //7로 나눈게 0이라면 
      cout << setw(4) << i;  //출력한다.
      col++;                         // 칸수 변수인 col이라는 애를 1개씩 증가시킨다.
         if (col > 10) {            // col이 10개가 넘는다면 
         cout << endl;           // 줄바꿈!한후 다시 1로 초기화 한다.
         col = 1;
         }
     }
  }
}

 

 

이중 for문

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
int num1;
int num2;

cout << "행의 수를 입력하세요: ";
cin >> num1;
cout << "열의 수를 입력하세요: ";
cin >> num2;

for (int i = 1; i <= num1; i++) {
for (int j = i; j <= (i + num2 - 1); j++) {
cout << j << " ";

}
cout << endl;
}

}

 

do - while 

본문을 일단 실행하고 조건을 확인

조건과 관계없이 반복문의 본문이 적어도 한 번은 실행된다.

마지막에 반드시 세미콜론이 있어야한다.

 

예제 1) 월, 일을 입력해서 달력만들기

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
int  startday, daysinmonth, col = 1;

do {
cout << "한 달의 날짜 수를 입력하세요(28, 29, 30, 31): ";
cin >> daysinmonth;
} while (daysinmonth < 28 || daysinmonth > 31);  // 28에서 31의 수만 입력받기

do {
cout << "첫 날의 요일을 입력하세요(0~6): ";
cin >> startday;
} while (startday < 0 || startday > 6); // 0에서 6의 수만 입력받기

cout << endl;
cout << "Sun Mon Tue Wed Thr Fri Sat" << endl;
cout << "--- --- --- --- --- --- ---" << endl;

for (int space = 0; space < startday; space++) {   

// 첫 날 까지 공백으로 처리하기

//공백을 col이라고 하는데 공백하나당 col++
cout << "    ";
col++;
}

for (int day = 1; day <= daysinmonth; day++) {
cout << setw(3) << day << " ";
col++;

// 총 날짜 까지 공백3칸을 두고 공백하나당 col++

if (col > 7) {
cout << endl;
col = 1;

//줄바꿈
}
}

}

 

예제2) 가장 왼쪽의 숫자 출력 (몇자리든 상관없이)

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
int  num;
short left;

cout << "음수가 아닌 정수를 입력하세요: ";
cin >> num;

do {
left = num % 10;
num = num / 10;

} while (num > 0);

cout << "가장 왼쪽의 숫자 = " << left << endl;;

}

 

 

 

 

조건문(선택구조)

if

: 조건이 참이라면 어떤 문장을 실행하고, 거짓이라면 다른문장을 실행

 

흔한오류

1) 할당연산자 사용

 x = 0 (절대 안됨)

 x == 0 (이거닷)

2) {}생략 // 한 줄만 가능

3) 불필요한 세미콜론

 

(2) if- else

(3) Nested if

 

 

삼항연산자

(조건, 표현식1, 표현식2) 

const int larger = ( num1 >= num2  ?  num1  :  num2)

 

switch

: 정수형으로 표현이 가능한 특정 값을 기반으로 조건 분기

 

switch (표현식 : 정수로 평가될 수 있는) {

case 1:

case 2:

case 3:

case 4:

default:

}

 

위에서부터 비교하는거 아님. 바로 찾아간다.

break가 없으면 끝까지 실행된다.

break가 있으면 딱 그것만 실행

default는 else와 같은 기능

 

 

break, continue

 

 

showpoint : 끝에 0 표시

'학교복습용 > 객체1' 카테고리의 다른 글

(4) 클래스 ( CLASS )  (0) 2023.01.04
(3) 함수(function)  (0) 2022.12.29
참고블로그  (0) 2022.12.23
예제에서 배울 점  (0) 2022.12.21
(1) 입출력연산자  (0) 2022.12.21
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함