2023.01.06 - 안드로이드 앱개발자 과정

CHA·2023년 1월 9일
0

C언어



제어문 : 프로그램의 진행 순서를 제어(변경)



조건문


if, if else

  • 조건문 if 문법 : if ( 조건식(비교연산) ) { 참 일때 실행할 코드 }
#include <stdio.h>

void main() {
	int age;
	printf("나이를 입력하세요 : ");
	scanf_s("%d", &age);

	if (age >= 20) {
		// 조건이 true 일때 실행할 영역

		printf("환영합니다. 문나이트 입니다.\n");
		printf("메인 스테이지로 이동하세요.\n");

		int num; // if 문 실행시에만 생성되는 변수
		printf("몇명이십니까?");
		scanf_s("%d", &num);

		printf("%d 명 좌석으로 안내하겠습니다.\n", num);
		
	}
	printf("\n 프로그램 종료");
}
  • 만일 조건식의 값이 거짓일 경우에도 무언갈 하고싶다면? - else 이용!
#include <stdio.h>

void main() {
	int age;
	printf("나이를 입력하세요 : ");
	scanf_s("%d", &age);

	if (age >= 20) {
		// 조건이 true 일때 실행할 영역

		printf("환영합니다. 문나이트 입니다.\n");
		printf("메인 스테이지로 이동하세요.\n");

		int num; // if 문 실행시에만 생성되는 변수
		printf("몇명이십니까?");
		scanf_s("%d", &num);

		printf("%d 명 좌석으로 안내하겠습니다.\n", num);
		
	}
	else {
		// 조건이 false 일 때 실행할 영역
		printf("꺼져!\n");
		printf("조금 더 나이먹고 오세요.\n");
	}
	printf("\n 프로그램 종료");
}
  • if 문 혹은 else 문 안에서도 if문의 중첩이 가능하다!
#include <stdio.h>

void main() {
	int age;
	printf("나이를 입력하세요 : ");
	scanf_s("%d", &age);

	if (age >= 20) {
		// 조건이 true 일때 실행할 영역

		if (age >= 40) {
			// 중첩 if 문
			printf("아~~ 죄송합니다 자리가 없네요~~ \n");
		}
		else {
			printf("환영합니다. 문나이트 입니다.\n");
			printf("메인 스테이지로 이동하세요.\n");

			int num; // if 문 실행시에만 생성되는 변수
			printf("몇명이십니까?");
			scanf_s("%d", &num);

			printf("%d 명 좌석으로 안내하겠습니다.\n", num);
		}
	}
	else {
		// 조건이 false 일 때 실행할 영역
		printf("꺼져!\n");
		printf("조금 더 나이먹고 오세요.\n");
	}


	printf("\n 프로그램 종료");
}
  • if문을 이용한 학점 관리 프로그램 예제
#include <stdio.h>

void main() {
	printf("점수를 입력하면 학점을 계산해주는 프로그램\n\n");

	int score;
	printf("점수입력 : ");
	scanf_s("%d", &score);

	if (score >= 90 && score <= 100) printf("A 학점입니다\n");
	else if (score >= 80) printf("B 학점입니다\n");
	else if (score >= 70) printf("C 학점입니다\n");
	else if (score >= 60) printf("D 학점입니다\n");
	else if (score >= 50) printf("F 학점입니다\n");
	else printf("점수를 잘못 입력했습니다.\n");

	printf("\n 프로그램 종료");
}

switch

  • 조건문 switch 문법
	switch(변수 이름) {
    case 변수값 : 
        실행문;
    }

강아지 돌보기 프로그램을 짜보자!

#include <stdio.h>

void main() {
	printf("원하는 메뉴를 입력하세요\n");
	printf("1. 밥주기\n");
	printf("2. 산책하기\n");
	printf("3. 목욕하기\n");

	printf("메뉴번호 입력 : ");
	
	int menu;
	scanf_s("%d", &menu);
	
	switch (menu) {
	case 1:
		printf("와구와구\n");
	case 2:
		printf("신난다\n");
	case 3:
		printf("아우씨 씻기싫어\n");
	}
	printf("\n 프로그램 종료");
}

입력
1

출력 
와구와구
신난다
아우씨 씻기싫어

switch 문의 경우, 결과 값에서도 볼 수 있듯, 차례대로 실행됨을 알 수 있다. 하지만 우리가 원하는것은, 2번을 선택했을때, 신난다만 출력하는것이다. 여기서 필요한것이 break 키워드 이다.

  • break
-중략
switch (menu) {
	case 1:
		printf("와구와구\n");
		break;
	case 2:
		printf("신난다\n");
		break;
	case 3:
		printf("아우씨 씻기싫어\n");
		break;
	}
    
입력
1

출력 
와구와구

break 키워드를 사용하여, menu 의 값이 1일때의 상황만 출력해주었다. 그런데, 1일때 뿐 아니라 사용자가 만약 5라는 값을 넣거나 1,2,3 이외의 어떤값을 넣었을 때는 어떻게 될까?

  • default
    그러한 경우에 사용할 수 있는 키워드는 default 이다. case 별로 나눠둔 어떠한 상황도 아닐 경우에 실행되는 구문이다.
-중략
switch (menu) {
	case 1:
		printf("와구와구\n");
		break;
	case 2:
		printf("신난다\n");
		break;
	case 3:
		printf("아우씨 씻기싫어\n");
		break;
    default:
    	printf("잘못된 번호 입니다.\n");
	}
    
입력
5

출력 
잘못된 번호 입니다.
  • switch 문 주의할 점
    앞서 문법에서 switch(변수 이름) 이라고 얘기했는데, 여기서 들어오는 변수는 정수만 가능하다.


반복문


while

  • 반복문 while 문법 : while(조건식) { 참일때 실행되는 코드 }
include <stdio.h>

void main() {
	int level = 1; // 변수의 초기값

	while (level < 10) // 제어 조건
    {
		printf("훈련실시 .. 레벨 1 증가\n");
        level++; // 제어변수 연산
	}
	printf("\n 프로그램 종료");
}

반복문에 대해서 알기 위해 다음 3가지를 먼저 기억하자.

  • 제어변수의 초기화
  • 제어 조건
  • 제어변수의 연산

반복문에는 반복횟수를 지정해주는건 따로 없다. 그렇기 때문에 위의 조건들을 조작하여 횟수를 지정해주어야 한다는 점을 기억하자.

  • while 무한루프
    논리적인 조건들을 토대로 while 문의 반복횟수를 정해주어야 한다고 하였다. 다만, 어떠한 경우에는 반복횟수를 무한대로 늘려주어야 하는 상황도 발생한다. 어떤 방식으로 while 문의 반복횟수를 무한대로 늘릴 수 있을까? 다음 코드를 보자.
#include <stdio.h>

void main() {
	int i = 0;

	while (1) {
		i++;
		printf("%d", i);
	}
}

while문의 조건에 들어가는 내용이 항상 참 이라면, while 문은 끝나지 않고 항상 반복이 될것이다. 그렇기 때문에 조건에 1을 넣어준다면, while 문을 무한대로 실행시킬 수 있다.

  • do-while 문
    while 문의 경우, 조건식이 참 이어야만 실행코드가 실행된다. do-while 문의 경우는 조금 다른데, do 다음의 코드를 처음 한번은 실행하고 그 뒤에 참 거짓을 판별해 반복을 진행한다. 다음 코드를 보자.
#include <stdio.h>

void main() {
	int i = 0;

	do {
		printf("%d\n", i);
		i++;
	} while (i < 10 && i != 0);
}

위 코드가 do 안쪽 코드가 먼저 한번 실행됨을 보여주는 예제이다.


for

  • 반복문 for 문법 : for(제어변수 초기화 ; 제어조건 ; 제어변수 연산) { 실행 코드 }
#include <stdio.h>

void main() {
	int index;

	for (index = 0; index < 10; index++) {
		printf("%d\n", index);
	}
}
  • for 무한루프
    for 문법에서 for 문을 반복시키는 부분은 제어 조건에 관한 부분이다. 그렇기 때문에 이 조건을 살짝만 변형하면 for 문도 while 문과 같이 무한반복이 가능하다. 제어 조건이 참일때만 for 문 안에 코드가 반복되기 때문에, 항상 참인 제어조건을 만들어주면 된다. 즉, 다음과 같다.
#include <stdio.h>

void main() {
	int index;

	for (index = 0; 1 ; index++) {
		printf("%d\n", index);
	}
}

추가적으로, 1이 대신에 제어 조건 부분을 비워두게 되도 같은 의미를 가진다. 마찬가지로, 제어변수 초기화, 제어변수 연산에 관해서도 비워둘 수 있다.

#include <stdio.h>

void main() {
	int index;

	for (index = 0; ; index++) {
		printf("%d\n", index);
	}
}
  • 중첩 for 문
    다음은 별 찍기 예제이다.
#include <stdio.h>

void main() {
	for (int i = 1; i <= 5; i++) {
		for (int j = 0; j < i; j++) {
			printf("*");
		}
		printf("\n");
	}
}

위와 같이 for 문을 중첩해서 사용할 수도 있다.



기타 제어문

break 와 continue

다음 그림을 살펴보자.

break 는 반복을 종료하고 반복문 다음 문장을 실행하게 된다. 즉, 반복조건이 어찌됐던간에 break 를 만나면 그 반복문은 종료가 된다. 반면에 continue 의 경우, 반복문에 조건부분으로 돌아가게 된다. 다만, 기존에 값들은 그대로 유지가 된 채로 반복이 되기 때문에 주의해야 한다.

또한 break 와 continue 의 경우 루프 내에서만 사용이 가능하다는 점 꼭 알아두자!

profile
Developer

0개의 댓글