Ron Weasley 2022. 7. 24. 23:52

이번주는 Chapter 05 ~ 06에 대해서 배워보겠습니다.

 

먼저, 우리는 1~2주차에 다뤘던 내용들은 main함수를 읽어와서 항상 차레대로 실행되는 프로그램을 다뤄왔었습니다.

하지만 연산자를 배우면서 참, 거짓 조건을 다뤄 참이면 A값, 거짓이면 B값을 다루는 것은 했으나 깊게는 다루지 않았습니다. 그래서 이번에 배우는 제어문은 조건에 따라 실행하거나 실행하지 않아야 할 때 사용하는 함수들 입니다.

 

if문(조건문, 제어문)

if문은 말 그대로 만약에라는 뜻을 가지고 있습니다. 그리고 조건식과 실행문으로 나뉘는데 예를 한번 보겠습니다.

"크리스마스 때까지 여자친구가 없으면", "친구가 소개팅을 주선해준다" 라고 했다고 가정합시다.

여기서 조건문과 실행문을 나뉘어 보겠습니다.

조건문 : 크리스마스 때까지 여자친구가 없으면
실맹문 : 친구가 소개팅을 주선해준다

이렇게 나뉠 수 있습니다. 잠시 if문의 구조를 보겠습니다.

조건식을 보면 a가 10보다 크면 b에 a를 대입합니다. 하지만 거짓일 경우 그냥 빠져나갑니다.

이처럼 조건식을 만족할 때 실행할 실행문을 거쳐 지나가고, 거짓이면 그냥 지나갑니다. 이제 소스 코드로 보겠습니다.

코드를 읽어보면, a가 20이니까 조건식이 참이되며, b에 a를 대입합니다.

그래서 a도 20, b도 20이 됩니다.

if ~ else문

다음은 if와 else를 쓰는 문장입니다.

이 문법은 위 if와는 조금 다른게, if는 참 일때, 중괄호 안에있는 내용을 실행을 하는 것이기 때문에 거짓일 경우 if문을 빠져나가는 것입니다. 하지만 만약에 조건을 만족하지 못할 때에도 별도의 실행문을 넣어주기 위해서 사용하는 것이 if ~else입니다.

코드를 한번 보겠습니다.

위 코드를 보시면 6 ~ 11행 까지가 if ~ else 구문입니다. a의 조건식이 참이기 때문에 실행결과를 보시면 1을 반환합니다.

만약에 살짝 코드를 바꿔서 조건을 거짓으로 바꿔보겠습니다.

a는 0이다. 라고 조건을 해줬습니다.

실행결과는 -1입니다. 왜냐면 else로 조건이 만족하지 않을 때, a는 -1를 대입하라고 작성을 해줬기 때문입니다.

if ~ else if ~ else문

마지막으로 if ~ else if ~ else문을 보겠습니다.

이 문장은 먼저 나오는 조건식이 맞지 않다면, 다음 조건식을 또 검사를 합니다. 그래도 맞지 않다면 else안에 있는 문장을 실행함으로써 조건문을 빠져나오게 되는데, 예제 코드를 한번 보겠습니다.

결과값은 a = 0입니다. 그 이유는 먼저, if문을 만났을 때, a는 0인가여? 하는 조건식을 만나게 됩니다.

하지만 거짓이기 때문에 else로 넘어가야 하지만, else if가 존재하기 때문에 또 조건식을 만납니다.

그럼 a는 5보다 큰가여? 라는 조건식을 만나면 맞습니다. 라고 프로그램에서 인지를 하기 때문에 0을 a에 대입을 해주면서 조건문을 빠져나가게 됩니다.

<확인 문제>

<1번>

<2번>

다음 조건에 맞도록 if문을 채워보세요.

1. 가슴 둘레가 90보다 작거나 같으면 S 선택
2. 가슴 둘레가 90보다 크고 100보다 작거나 같으면 M 선택
3. 가슴 둘레가 100보다 크면 L 선택

코드를 바로 작성하겠습니다.

else if 조건만 좀 말씀드리자면, || 연산자를 사용했는데, 이 연산자는 두 조건인 90보다 크거나, 100보다 작거나 같다. 중 1개만 참이라면 참을 반환하는 연산자입니다.

이중 if문

여기서부터는...어 난이도가 쪼금 상승합니다. 저도 프로그래밍을 해본적이 없어서 이해하느라고 좀 오래걸렸습니다.

설명을 간단하게 해보면 말 그대로 "이중", 2개의 if문이 사용된다. 라고 생각을 하시면됩니다

예시 코드를 보겠습니다.

보시면, a > 10의 조건이 참일 때 실행되는 구문에 또다시 if문이 오는것을 볼 수 있습니다.

 

이것을 대학생으로 비교를 해보면, XX대학교 학생일 경우 -> 학점이 존재하고, 학점은 4.5점이다. 그렇지 않을 경우엔 학점이 없다.

라고 생각을 하시면 됩니다. 이 문장을 코드로 짜보겠습니다.

요런식으로 if안에 if를 넣어주는 것입니다.

 

Switch ~ Case문

Switch ~ case문은 대회에서 상금을 차등 지급을 할 때, 1등은 얼마 2등 얼마 3등 얼마를 나뉘어 줄 때, 사용을 합니다.

코드를 한번 보겠습니다.

<확인 문제>

1. 다음 중 if문과 switch ~case문에 대한 설명으로 옳지 않은 것을 고르세요.

- if ~ else if ~ else문은 if ~ else 문이 중첩된 구조이다.

- if ~ else문이 중첩된 경우 else는 가장 가까운 if와 짝이 된다.

- if문이 중첩된 경우 안쪽 if문을 벗어날 때 break를 사용한다. ( 정답 )

- switch ~ case문은 결괏값이 정수인 수식만 조건식으로 사용할 수 있다.

 

2. 다음 프로그램의 실행결과를 참고하여 빈칸을 채워보세요.

정수를 입력했을 때 1과 2는 참, 3은 거짓이 출력됩니다.

위 조건에 대한 답은 여러개가 있지만, 책에 따라서 작성을 하겠습니다.

책에는 3의 배수를 입력하면 거짓이 나오고, 3의 배수가 아닌 수를 입력하면 다 참입니다.

3. 다음 표에 따라 옷의 사이즈가 결정될 때, 나이가 25이고 가슴 둘레가 95인 사람의 사이즈를 출력하는 프로그램을 if문을 사용하여 작성.

여기까지 조건문에 대해서 배워봤습니다.

 

while문

지금까지 조건문에 대해서 배웠는데, 우리가 이제 같은 문구를 여러번 입력을 할 때, 지금까지 배운 내용으로써는 이렇게 했을것입니다.

하지만 이렇게 하면 코드의 길이만 길어질 뿐, 효율적이지 않습니다.

그래서 우리는 반복문이라는 것을 배웁니다. 그 중 while에 대해서 예제를 보겠습니다.

위 코드를 봤을 때, 우리가 알 수 있는 것은 아..n이 10이 되기 전까지 Hello를 출력하는구나! 라고 생각할 수 있습니다.

맞습니다. n을 1씩 증가시켜 n이 10이 되면 반복문을 빠져 나갑니다.

이제 while에 대해서 알아보자면 "while은 조건식을 먼저 검사를 하고 조건식이 참인 동안 실행문을 반복"합니다.

보통 while은 갯수가 정해져있지 않은 무한 반복을 돌릴 때 사용을 합니다.

 

for문

다음으로 볼 반복문은 for문입니다.

for문은 이제 우리가 특정한 횟수를 돌리고 싶을 때, 자주 사용하는 반복문입니다. 예제 코드를 한번 봅시당.

for문은 초기식, 조건식, 증감식으로 나눕니다.

위 문장에서는 다음과 같이 표현이 됩니다.

초기식 : int i = 0

조건식 : i < 5;

증감식 : i++

즉, 정수형 변수 i를 0으로 초기화를 하고 난 후, i가 5가 되기 전까지 반복을 하는데 반복을 하면 i를 1씩 증가시킵니다.

 

do ~ while문

while문, for문은 조건식을 먼저 확인하는 반면 do ~ while은 반복할 문장을 수행한 후 조건을 검사합니다.

이중 반복문

앞에 if도 이중 if문이 있듯이, for문도 이중 for문이 존재합니다.

간단하게 이중 반복문으로 구구단을 출력해보겠습니다.

이런식으로 출력을 할 수 있습니다.

쉽게 말해서 앞에 나오는 for문이 1번 실행될 때, j의 반복 조건을 전부 실행한 후, 빠져나가고 다시 2번째 실행을 하고 또 안에 조건문을 다 실행하고 하는 원리 입니다.

i가 1번 실행되면 j는 9번 실행된다! 이런 느낌입니다.

 

break와 continue

break와 continue는 반복문 안에서 사용하는 제어문입니다. break는 반복문 안에서 반복을 즉시 끝낼 때 사용합니다. 일반적으로 모든 반복문은 조건식이 거짓일 때 반복이 끝나는데, break를 사용하면 임의적으로 끝낼 수 있습니다.

요렇게 코드를 작성하게 되면, 누적한 값이 36이 됩니다.

 

기본 미션과 선택 미션은...이해가 잘 안되어서!! 그냥 chapter5 ~ chapter6을 복습해봤습니다!