미 쳤 다...
이번 주 내내 타지에 있었어서 공부 전 혀 못함ㅠ
어쩔 수 없는 일이긴 했는데... 그래도 뭔가 속상하다
과연 오늘 안에 전부 따라잡을 수 있을 것인가...
사실 할 수 있나? 가 아니라
[해내야 한다]
이긴 함
파이팅
이번 장에서 배우는 내용은 조건문이다.
조건문을 활용해 '숫자 맞히기' 게임의 핵심 부분을 만들어 보게 된다.
사실 처음엔 숫자 맞히기 게임이 뭔가 했는데... 설명을 읽어보니 '업/다운'이었다!
주어지는 기회 안에 컴퓨터가 고른 무작위 숫자를 맞추면 되는 게임인 것 같음
이거... 만들고 재밌다고 혼자 한시간쯤 하는 거 아님?ㅜ
걱정이 된다 (업다운 좋아함)
가장 먼저 배워볼 내용은 바로 조건문의 종류!!
1. if-else 문
가장 기본이 되는 조건문이다. 다음과 같은 형식으로 사용한다.
if (조건) {
//조건을 만족했을 때 수행할 문장
}
else {
//조건을 만족하지 않을 때 수행할 문장
}
if문의 뒤에는 조건을 삽입한다.
조건을 만족하면 if문의 중괄호를, 그렇지 않으면 else문의 중괄호 영역을 실행한다.
이를 통해 조건문은 프로그램을 실행하는 도중,
조건에 따른 분기가 필요할 때 사용한다는 것을 알 수 있다.
#include <stdio.h>
int main(void) {
int age = 15;
if (age >= 20) {
printf("성인입니다.");
}
else {
printf("청소년입니다.");
}
return 0;
}
실행 결과 화면을 살펴보면, age는 20보다 낮은 숫자이기 때문에
else 문의 중괄호 안에 위치한 '청소년입니다.'를 출력한다.
age의 값을 20과 같거나 보다 높은 수로 변경한다면 '성인입니다.'를 출력하는 것이다.
+) else문 없이 if문만 단독으로 사용할 수도 있다!
#include <stdio.h>
int main(void) {
int age = 15;
if (age >= 20) {
printf("성인입니다.\n");
}
return 0;
}
코드를 실행하면 age가 15이므로 if문의 조건을 만족하지 못한다.
따라서, if문 안의 문장을 건너 뛰고 바로 프로그램을 종료하게 된다.
2. if-else if-else 문
많은 조건이 필요할 경우, else if문을 사용한다.
#include <stdio.h>
int main(void) {
int age = 9;
if (age >= 8 && age <= 13) {
printf("초등학생입니다.\n");
}
else if (age >= 14 && age <= 16) {
printf("중학생입니다.\n");
}
else if (age >= 17 && age <= 19) {
printf("고등학생입니다.\n");
}
return 0;
}
조건 안의 && 표시는 AND 연산자다.
if 문에서 AND 연산자는 '조건이 둘 다 참이면 참'이라는 뜻이다.
따라서, age >= 8 && age <= 13은
'age가 8보다 크거나 같고 13보다 작거나 같으면 참'을 의미하고,
두 조건을 모두 만족하면 printf()문을 실행한다.
해당 코드에서 조건은 총 3가지지만, 첫 if문의 조건을 만족한다면
나머지 else if문을 살피지 않고 바로 if문 전체를 탈출한다.
조건이 맞을 때까지만 문장을 확인한다는 특징이 있다.
이어서, 위 코드를 살짝 수정해 앞의 조건을 모두 만족하지 않으면
'청소년이 아닙니다.'를 출력하게 만든다.
age의 값을 올리고, 마지막 else if 문 뒤에 else를 추가했다.
#include <stdio.h>
int main(void) {
int age = 22;
if (age >= 8 && age <= 13) {
printf("초등학생입니다.\n");
}
else if (age >= 14 && age <= 16) {
printf("중학생입니다.\n");
}
else if (age >= 17 && age <= 19) {
printf("고등학생입니다.\n");
}
else {
printf("청소년이 아닙니다.\n");
}
return 0;
}
위의 예제에서 확인할 수 있듯, 조건을 계속 확인하다 만족하는 결과를 찾지 못할 경우
마지막의 else 문으로 이동해 해당하는 문장을 수행하고 실행을 마친다.
+) AND 연산자(&&)는 두 조건이 모두 참이면 참,
OR 연산자(||)는 두 조건 중 하나라도 참이면 참을 의미한다.
이어서, 반복문을 도중에 탈출하는 방법을 알아본다.
반복문을 탈출하는 법을 알아보기 위한 예제를 작성한다.
1번부터 30번까지 학생이 있는 반에서, 1번 학생부터 5번 학생까지가 발표를 진행한다.
우선 학생의 번호를 정수형 변수인 i로 표시하고,
i가 30보다 작거나 같아질 때까지 i를 증가시키겠다.
#include <stdio.h>
int main(void) {
for (int i = 1; i <= 30; i++) {
printf("%d번 학생은 조별 발표를 준비해 주세요.\n", i);
}
return 0;
}
하지만 실제로 발표를 진행하는 학생은 1번부터 5번까지다.
따라서, 이외의 번호가 6보다 크거나 같은 학생들은 집으로 돌려보낸다.
#include <stdio.h>
int main(void) {
for (int i = 1; i <= 30; i++) {
if (i >= 6) {
printf("나머지 학생은 집에 가세요.\n");
}
printf("%d번 학생은 조별 발표를 준비해 주세요.\n", i);
}
return 0;
}
으아
6번 이후의 모든 경우에 문장을 두 개 연달아 출력한다.
이를 해결하기 위해선 조건을 만족했을 때 for문을 탈출할 필요가 있다.
이럴 때 사용하는 것이 바로 break 문이다.
#include <stdio.h>
int main(void) {
for (int i = 1; i <= 30; i++) {
if (i >= 6) {
printf("나머지 학생은 집에 가세요.\n");
break;
}
printf("%d번 학생은 조별 발표를 준비해 주세요.\n", i);
}
return 0;
}
드디어 우리가 원했던 결과가 나왔다!
위의 예제와 같이 for문을 수행하다 도중에 break를 만나면,
조건을 만족했는지와는 관계 없이 무조건 for문을 탈출하게 된다.
이어서 학습할 개념은 continue 문이다.
위의 교실에서 6번~10번 사이의 학생들이 발표를 하는데,
7번 학생이 병결이라고 해보자.
#include <stdio.h>
int main(void) {
for (int i = 1; i <= 30; i++) {
if (i >= 6 && i <= 10) {
if (i == 7) {
printf("%d번 학생은 결석입니다.\n", i);
}
printf("%d번 학생은 발표를 준비하세요.\n", i);
}
}
return 0;
}
ㅠㅠ
아픈 7번한테도 발표를 시켜버렸다
이럴 경우 사용하는 것이 바로 continue 문이다.
continue 문은 반복문을 실행하다 continue를 만난 경우 다음 문장을 실행하지 않고,
이번 반복을 종료한 후 다음 반복으로 넘어가게 한다.
따라서 위의 예제에 continue를 추가하면
바깥쪽 if 문의 printf()를 수행하지 않고, i를 1 증가시킨 다음 다음 반복을 실행하게 될 것이다.
#include <stdio.h>
int main(void) {
for (int i = 1; i <= 30; i++) {
if (i >= 6 && i <= 10) {
if (i == 7) {
printf("%d번 학생은 결석입니다.\n", i);
continue;
}
printf("%d번 학생은 발표를 준비하세요.\n", i);
}
}
return 0;
}
의도한대로 결과가 나왔다!
학생을 발표시키는 두 예제를 통해 break와 continue의 차이를 알아보았다.
이 두 구문은 프로그램의 실행 흐름을 제어할 때 자주 쓰이므로,
두 개념의 차이를 확실하게 알아두어야 한다고 한다.
'Programming > C, C++' 카테고리의 다른 글
코딩 자율 학습단 8일차 - 함수의 개념과 종류 (0) | 2024.07.01 |
---|---|
코딩 자율 학습단 7일차 - switch (1) | 2024.07.01 |
코딩 자율 학습단 5일차 - 이중 반복문 (0) | 2024.06.21 |
코딩 자율 학습단 4일차 - 반복문 (0) | 2024.06.21 |
코딩 자율 학습단 3일차 - 출력하기, 입력받기 (0) | 2024.06.20 |