KnockOn

[KnockOn] Linux/Ubuntu C언어 조건문, 반복문

성밍쟁 2024. 11. 15. 00:42
728x90
반응형

프롤로그

ELITE HACKER Bootcamp 3rd 2주차 수업 공부 내용

aws 우분투 서버 하나 파서 연습

조건문 if, else if, else, switch/case문

 

 

조건문

조건문은 프로그램의 흐름을 제어하는 데 사용된다.. 조건문은 특정 조건이 참(true)인지 거짓(false)인지에 따라 코드 블록을 실행하거나 건너뛴다.

 

(1) if문

가장 기본적인 조건문

if (조건식) {
    // 조건식이 참일 때 실행되는 코드
}

이렇게 사용한다.

예시를 들면

#include <stdio.h>

int main(){
    int score = 95;
    
    if (score >=90) {
        printf("A\n");
    }
}

A가 95 이상이기 때문에 A라는 것이 출력이 된다. 그러나, A값을 90 미만으로 바꾸게 되면 아무것도 출력되지 않는다.

 

(2) if-else문

참일때는 if문을 실행하고, 거짓이면 else문을 실행한다.

if (조건식) {
    // 조건식이 참일 때 실행되는 코드
} else {
    // 조건식이 거짓일 때 실행되는 코드
}

이렇게 사용한다.

#include <stdio.h>

int main(){
    int score = 30;
    
    if (score >=90) {
        printf("A\n");
    }
    else{
    	printf("F\n");
    }
}

 

거짓이기에, F가 출력된다.

 

(3) if-else if - else 문

여러 조건을 검사할 때 사용된다. 조건이 순차적으로 평가되며, 첫 번째로 참인 조건의 코드 블록이 실행된다.

if (조건식1) {
    // 조건식1이 참일 때 실행되는 코드
} else if (조건식2) {
    // 조건식2가 참일 때 실행되는 코드
} else {
    // 모든 조건이 거짓일 때 실행되는 코드
}

이렇게 사용되며, 

#include <stdio.h>

int main(){
    int score = 86;
    
    if (score >=90) {
        printf("A\n");
    }
    else if(score >=80){
        printf("B\n");
    }
    else if(score >=70){
        printf("C\n");
    }
    else {
        printf("D\n");
    }
}

이 코드를 실행시키면

첫번째로 만족하는 score >=80 부분에서 끝나버린다.

 

이 if문들은 중첩해서도 사용이 가능하다!

 

(4) switch-case 문

하나의 변수 값에 따라 여러 분기 중 하나를 선택하여 실행한다. 즉 하나의 변수값이 나온case를 실행한다 라는 의미이다.

문제는 해당 case로 가서 밑에 쭉 실행하기 때문에 break문이 없으면 밑에 있는 모든 case들을 다 실행하기에 break가 꼭 있어야한다.

switch (표현식) {
    case 값1:
        // 값1에 해당하는 코드
        break;
    case 값2:
        // 값2에 해당하는 코드
        break;
    // 필요한 경우 다른 case 문 추가
    default:
        // 모든 case에 해당하지 않을 때 실행되는 코드
}

실행 예시를 보면

#include <stdio.h>

int main() {
    int choice = 2;

    switch (choice) {
        case 1:
            printf("선택은 1입니다.\n");
            break;
        case 2:
            printf("선택은 2입니다.\n");
            break;
        case 3:
            printf("선택은 3입니다.\n");
            break;
        default:
            printf("유효하지 않은 선택입니다.\n");
    }

    return 0;
}

이렇게 2로 넘어간다. 근데 만약에 break를 빼버린다면?

#include <stdio.h>

int main() {
    int choice = 2;

    switch (choice) {
        case 1:
            printf("선택은 1입니다.\n");

        case 2:
            printf("선택은 2입니다.\n");

        case 3:
            printf("선택은 3입니다.\n");

        default:
            printf("유효하지 않은 선택입니다.\n");
    }

    return 0;
}

이게 break문이 꼭 있어야한다라는 의미이다.

 

조건문 실습

숫자를 하나 입력받고, 홀수인지 짝수인지 출력하시오.

#include <stdio.h>

int main(){
    int a ;
    scanf("%d", &a);

    if (a%2 == 0){
        printf("짝수입니다\n");
    }
    else{
        printf("홀수입니다\n");
    }

    return 0;
}

 

 

반복문

반복문은 특정 조건이 참일 때까지 코드 블록을 반복해서 실행하는 구조. 프로그램의 효율성을 높이고, 동일한 코드의 반복 작성을 줄이는 데 사용된다.

 

(1) for문

반복 횟수가 정해진 경우에 주로 사용된다. 초기화, 조건식, 증감식을 한 줄에 작성하여 실행시킨다.

for (초기화; 조건식; 증감식) {
    // 조건식이 참일 동안 반복 실행될 코드
}
#include <stdio.h>

int main() {
    for (int i = 0; i < 5; i++) {
        printf("i의 값: %d\n", i);
    }
    return 0;
}

0부터 4까지 0, 1, 2, 3, 4 총 5번 반복되어서 실행되었다.

 

 

(2) while문

참인 동안 코드 블록을 반복 실행한다.. 반복 횟수가 불확실하거나 입력에 따라 달라질 경우 주로 사용된다.

#include <stdio.h>

int main(){
    int count = 0;
    while(count <5){
        printf("%d\n", count);
        count++;
    }
    return 0;
}

초기화, 조건식, 증감식이 위에서는 int count = 0가 초기화, 조건식은 count<5, 증감식은 count ++에서 나온 것을 확인할 수 있다.

아 참고로 while(1) 을 하면 무한 루프이다.

 

(3) do-while문

아까 while문은 조건에 맞지 않다면 while문을 건너 뛰는데 do-while문은 무조건 한번은 실행한 후에, 조건 여부 결정한다.

#include <stdio.h>

int main(){
    int count = 0;
    do{
        printf("%d\n", count);
        count++;

    } while(count <5);
    return 0;
}

 

그리고 break,continue도 있는데, break는 반복문 아예 빠져나가기, continue는 이번차시는 건너뛰고 다음차시로 가기.

 

 

 

 

 

728x90
반응형