관리 메뉴

나구리의 개발공부기록

Chapter 02 - C언어(조건문, 반복문) 본문

2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비)/실기 6강 - 프로그래밍 언어 활용

Chapter 02 - C언어(조건문, 반복문)

소소한나구리 2024. 5. 21. 22:05

2024년도 수제비 실기책(6판) 내용 정리


7. 조건문

  • 조건의 참, 거짓 여부에 따라 실행 경로를 달리하는 if문과 여러 경로 중에 하나를 선택하는 switch문으로 구분됨

1) if문

  • 조건이 참인지 거짓인지에 따라 경로를 선택하는 명령문

if (조건문) { // if의 조건문이 참일 경우 if 안에 있는 명령문을 실행
  명령문;
}
else if (조건문) { // if문의 조건이 거짓이고 else if문의 조건이 참일 경우 해당 명령문을 수행
  명령문;
}
else if (조건문) // else if문은 여러개 사용 가능
  명령문;  // if문의 코드가 한줄이면 중괄호를 생략할 수 있음
else {   // if문의 조건이 거짓이고 여러 개의 else if문의 조건문이 모두 거짓일 때 해당 명령문을 실행
  명령문;  // else문은 사용하지 않거나 한번만 사용
}
#include <stdio.h>
int main() {
  int x = 5;      // x의 값은 5
  
  if (x % 3 == 0) // x를 3으로 나눈 나머지가 0이면 if문의 명령문을 수행
    printf("1");
    
  else if (x % 3 == 1) // x를 3으로 나눈 나머지가 1이면 else if문의 명령문을 ㅜㅅ행
    printf("2");
    
  else      // 위 조건식이 모두 거짓일 경우 else 문의 명령문을 수행,
    printf("3");  // 모든 조건식이 거짓이므로 3출력
    
  return 0;
}

2) switch문

  • 조건에 따라 여러 개의 선택 경로 중 하나를 취하고자 할 때 사용하는 명령어

switch (식){  // 식을 계산해서 일치하는 값을 가진 case 문을 실행
case 값1:
  명령문;
  break;

case 값2:
  명령문;   // case문에 break가 존재하지 않을 경우 break를 만나거나 switch문이 끝날때까지 모든 문장을 실행

default:  // 어떠한 case의 값도 만족하지 않으면 default로 진입해서 명령문을 실행
  명령문;
}
#include <stdio.h>
int main() {
  int score = 101;
  
  switch(score/10) { // score의 값인 101을 10으로 나눈 몫의 값을 만족하는 case문으로 진행
  case 10:  // 몫은 10이므로 case 10로 이동, break;가 없으므로 case9;로 이동
  case 9:   
    printf("A"); break; // A를 출력하고 break;문을 만나서 case문 종료
  case 8:
    printf("B"); break;
  default:
    printf("F");  
  }
  return 0;
}
출력 : A

8. 반복문

  • 특정 부분을 조건이 만족할 때까지 실행하도록 하는 명령문
  • 특별한 조건이 없으면 무한 처리를 반복(무한 루프) 하게 됨

1) while 문

  • 조건이 참인 동안에 해당 분기를 반복해서 실행하는 명령문

while(조건문){
  명령문;
}
// while문도 명령 코드가 한줄이면 {} 생략 가능
#include <stdio.h>
int main() {
  int i = 0, sum = 0;
 
  while (i < 2) {   // i의 값이 2보다 미만이면 계속 반복
    i++;            // while문이 실행되면 i의 값을 1 증가시킴
    sum = sum + i;  // sum의 값에 sum + i를 저장
    
    // 1회 , i가 1이 되고 sum이 1이됨, 2회, i가 2가 되고 sum은 3이됨
  }
  
  printf("%d\n", sum); // 반복문이 종료되면 sum의 값을 출력
  return 0;
}
// 출력 : 3

2) Do - while 문

  • 참, 거짓과 관련 없이 무조건 한 번은 실행하고, 그 다음부터는 조건이 참인 동안에 해당 분기를 반복해서 실행하는 명령문

do {
  명령문
} while (조건문);
#include <stdio.h>
int main() {
  int i = 1, sum = 0;
  
  do {              // 무조건 1번 실행
    sum = sum + i;  // sum은 1이됨
    i++;            // i는 2가 됨
    
  } while (i < 0);  // i 가 0보다 작으면 계속반복, 아니면 반복문 종료,
  
  printf("%d\n", sum); // 1 출력
  return 0;
}

3) for 문

  • 초기식, 조건식, 증감식을 지정하여 반복하는 명령어
// 1. 초기식에 따라 초기화 수행
// 2. 조건식이 참일 경우 for문 안의 명령문을 실행
// 5. 조건식이 참일 경우 for 문 안의 명령문을 실행
// 8. 조건식이 거짓일 경우 for문 종료
for (초기식; 조건식; 증감식) { // 4. for 문안의 명령문이 끝나고 다시 돌아오면 증감식에 의해 값을 변경
                          // 7. 위와 동일
                          
  명령문; // 3. 명령문 실행 , 6. 명령문 실행
  
}

명령문 ; // 9. for문이 종료되면 for문 아래의 명령부터 순차적으로 실행

// 만일 for문 ,while문에서 for(...); 이렇게 바로 세미콜론이 있다면 명령문이 없는 경우와 동일함
// for문도 명령문이 하나면 {} 생략 가능
#include <stdio.h>
int main() {
  int i, sum = 0; // i는 선언만, sum은 0으로 초기화하여 선언
  
  // i를 1으로 초기화 하고 i가 3미만이면 명령문을 실행 후 i값을 증가
  // 1부터 3미만까지 반복되므로 2번 반복되고 명령문은 2번 실행됨
  for (i = 1; i < 3; i++)
    sum = sum + i; // 1회전 sum은 1이됨, 2회전 sum은 3이됨
    
  printf("%d\n", sum); // sum의 값 3 출력
  return 0;
}
// 2중 for문 예제
#include <stdio.h>
int main() {
  int i, j;
  for (i=1; i<3; i++) // 1차 for문
    
    // 1차 for문의 조건식이 참이면 명령문을 수행하고 2차 for문으로 넘어감
    // 2차 for문을 끝까지 수행하고 다시 1차 for문의 증감식이 실행 되고 2번째 1차 for문이 실행됨
    
    for (j=1; j<3; j++)  // 2차 for문
      printf("%d\n", i*10+j);
      
  return 0;
}
// 11 i = 1 j = 1 (1차 for문 1번, 2차 for문 1번)
// 12 i = 1 j = 2 (1차 for문 1번, 2차 for문 2번)
// 21 i = 2 j = 1 (1차 for문 2번, 2차 for문 1번)
// 22 i = 2 k = 2 (1차 for문 2번, 2차 for문 2번)

4) 루프 제어 명령문

(1) break문

 

  • 반복문이나 switch 문을 중간에 탈출하기 위해 사용하는 명령어
#include <stdio.h>
int main() {
  int i = 1;
  
  while (i < 5) { // i의 값이 5미만(4가 될때까지)이면 반복
    i++;          // i의 값을 1 증가
     
    if (i == 3)   // i의 값이 3이 되면 break;문으로 반복문 종료
      break;
      
    printf("%d", i); // 반복문이 실행되는 동안 i의 값을 출력
  }
  
  printf("%d", i);   // 반복문이 종료되면 i의 값을 출력
  return 0;
}
// 23 개행문자가 없으므로 2 3이 붙혀서 출력됨

 

(2) continue 문

  • 반복문에서 다음 반복으로 넘어갈 수 있도록 하는 명령어
#include <stdio.h>
int main(){
  int i = 1;
  
  while (i < 5) { // i가 5미만(4가 될때까지)이면 반복문 수행
    i++;          // i의 값을 1 증가
    
    if(i == 3)    // i의 값이 3이되면 continue;문을 수행하여 다음 명령문 수행 없이 곧바로 반복문 처음으로 돌아감
      continue;
      
    printf("%d", i);  // 반복문이 수행되는 동안 i 값 출력
  }
  
  printf("%d", i);    // 반복문이 종료되면 i값 출력
  return 0;
}
// 2455
// while문 1회전 2 출력, 2회전 i값이 3이므로 continue문 실행
// 3회전 4출력, 4회전 5출력 -> 5가되어 반복문 종료, 반복문 종료 후 printf문으로 5한번더 출력