brunch

매거진 코딩 학습

You can make anything
by writing

C.S.Lewis

by 스스로 코딩 두셀코 Dec 13. 2020

[코딩의 기초][실습] 조건문 (1)

간단한 조건문을 구현해보자

안녕하세요, 스스로 코딩 두셀코입니다 :)


이번 시간에는 조건문에 대한 실습을 하도록 하겠습니다. 조건문에 대해서 이전 글에서 다뤄봤는데요, 요약하자면 조건문은 '만약 ~ 하면, ~ 해라'를 표현할 때 쓰는 것으로 조건부 (만약 ~ 하면)와 실행부 (~해라)로 이뤄져 있는 것을 알 수 있었습니다. 뿐만 아니라 조건부가 여러 개가 있는 것을 '조건문 기차' 또는 '조건문 체인(사슬)'이라고 불렀습니다.


자세한 내용은 다음에서 보실 수 있습니다.


https://brunch.co.kr/@doselfcoding/73

https://brunch.co.kr/@doselfcoding/75




조건문이 코딩으로는 어떻게 표현되는지 알아볼까요?


지난 실습 ([코딩의 기초][실습] 변수: https://brunch.co.kr/@doselfcoding/71)에서 나온 '걸음 수 기록' 예시를 다시 가져와보겠습니다.


걸음 수를 기록해봅시다


지난 실습에서는 하루의 걸음 수를 기록하는 코드를 짜 봤습니다. 이를 위해서 몇 가지 변수들을 선언해봤습니다.


- 목표 걸음 수: 정수형 (상수)
- 오늘의 걸음 수: 정수형
- 칼로리: 실수형
- 시간 (시): 정수형
- 시간 (분): 정수형
- 이름: 문자형


그러면 여기서 걸을 때마다 바뀌어야 하는 변수는 무엇일까요? 오늘의 걸음 수, 칼로리, 시간 (걸은 시간, 시와 분) 이 내가 걸을 때마다 업데이트되어야겠죠?


Q. 이름은 상수가 아닌가요?
A. 이름도 바뀌지 않는 변수이기 때문에 상수로 처리해도 됩니다 :)


내가 한 걸음 걸으면, 걸음 수가 1 씩 증가하고,  칼로리는 1 kcal 가 소모된다고 가정해봅시다. 시간은 어떨까요? 시간은 60초가 지나면 1분이 되고, 60분이 되면 1 시간이 됩니다.


위에 말로 쭉 풀어쓴 것을 조건문들로 정리를 해볼까요?


조건문 1

[조건부]
만약에 한 걸음을 걸으면

[실행부]
걸음 수를 1 증가시킨다


조건문 2

[조건부]
만약에 한 걸음을 걸으면

[실행부]
칼로리를 1 증가시킨다


조건문 3

[조건부]
만약에 60초가 되면

[실행부]
시간(분)을 1 증가시킨다


조건문 4

[조건부]
만약에 시간(분)이 60분이 되면

[실행부]
시간(시)을 1 증가시킨다




이것을 그대로 C언어, Java 그리고 Python으로 옮기면 다음과 같이 나타낼 수 있습니다.


C언어

걸었다는 것을 알려주기 위한 함수입니다. 함수에 대한 자세한 내용은 곧 배울 예정입니다!
변수의 선언과 초기화에 대한 내용은 지난 실습 시간에 해봤죠?
조건문 1과 조건문 2

조건문이 '만약 ~이라면 ~ 한다'로 조건부와 실행부로 구분이 되어있는데요, C언어의 구현에서도 if 문 (if ())으로 조건부를 중괄호 ({}) 로 실행부를 표현한 것을 볼 수 있습니다.


위 코드에서는 조건문 1 (만약 한 걸음 걸으면 걸음 수를 1 증가시킨다)과 조건문 2 (만약 한 걸음 걸으면 칼로리를 1 증가시킨다) 하나의 공통된 조건부 (만약 한 걸음을 걸으면)가 있기 때문에 실행부를 합치는 것이 훨씬 효율적이겠죠?


그리고 위 조건문에는 등장하지 않았지만 거리도 증가시켜줘야 하기 때문에 거리도 1 증가시키는 것을 한 번에 처리한 것을 볼 수 있습니다.


그리고 값을 1 더하고 1을 더한다는 어떻게 표현되는지 코드를 보면서 알 수 있을 것입니다. 또한 C언어에서 문장 끝은 세미콜론(;)으로 반드시 끝내야 한다는 점은 잊지 말아 주세요!


마지막으로 C언어에서는 무언가를 출력해볼 때, #include <stdio.h>라고 코드의 제일 위에 써주고, 출력할 때는 printf라는 것을 사용합니다. 이것에 대한 자세한 내용은 '[코딩의 기초] 함수'에서 다루도록 하겠습니다.


조건문 1에 대한 표현뿐만 아니라 시간에 대한 조건문 3조건문 4에 대해서도 비슷하게 구현되는 것을 아래와 같이 보실 수 있습니다.


조건문 3과 조건문 4


여기에서 주목할 것은, 60분이 되면 분(min)을 다시 0으로 만들어주고, hours 변수를 1 증가시켜준다는 것입니다. 분을 다시 0으로 만들어주지 않는다면 분은 61, 62, 63... 100... 무한히 증가하게 될 것이고 다시는 hours 가 증가하는 일은 없겠죠? 이렇게 조건문 안에서는 실행부에 빠지는 것이 없이 잘 구성해주는 것이 중요합니다!


* 전체 코드: https://github.com/doselfcoding/src/blob/master/basic/%EC%A1%B0%EA%B1%B4%EB%AC%B8/main.c

 



Java

변수의 선언과 초기화
조건문1 ~ 조건문 4


(C 언어와 비슷한 내용입니다)

조건문이 '만약 ~이라면 ~ 한다'로 조건부와 실행부로 구분이 되어있는데요, Java 구현에서도 if 문 (if () )으로 조건부를 중괄호 ({}) 로 실행부를 표현한 것을 볼 수 있습니다.


위 코드에서는 조건문 1 (만약 한 걸음 걸으면 걸음 수를 1 증가시킨다)과 조건문 2 (만약 한 걸음 걸으면 칼로리를 1 증가시킨다) 하나의 공통된 조건부 (만약 한 걸음을 걸으면)가 있기 때문에 실행부를 합치는 것이 훨씬 효율적이겠죠?


그리고 위 조건문에는 등장하지 않았지만 거리도 증가시켜줘야 하기 때문에 거리도 1 증가시키는 것을 한 번에 처리한 것을 볼 수 있습니다.


그리고 값을 1 더하고 1을 더한다는 어떻게 표현되는지 코드를 보면서 알 수 있을 것입니다. 또한 Java에서 문장 끝은 세미콜론(;)으로 반드시 끝내야 한다는 점은 잊지 말아 주세요!


마지막으로 Java에서 무언가를 출력해볼 때, System.out.printf라는 것을 사용합니다.


* 전체 코드: https://github.com/doselfcoding/src/blob/master/basic/%EC%A1%B0%EA%B1%B4%EB%AC%B8/Main.java




Python


변수의 선언과 초기화
조건문 1 ~ 조건문 4



조건문이 '만약 ~이라면 ~ 한다'로 조건부와 실행부로 구분이 되어있는데요, Python 구현에서도 if 문 (if :)으로 조건부를, 들여 쓰기로 실행부를 표현한 것을 볼 수 있습니다. 중괄호({})를 쓰는 위 언어들과 다르죠?


위 코드에서는 조건문 1 (만약 한 걸음 걸으면 걸음 수를 1 증가시킨다)과 조건문 2 (만약 한 걸음 걸으면 칼로리를 1 증가시킨다) 하나의 공통된 조건부 (만약 한 걸음을 걸으면)가 있기 때문에 실행부를 합치는 것이 훨씬 효율적이겠죠?


그리고 위 조건문에는 등장하지 않았지만 거리도 증가시켜줘야 하기 때문에 거리도 1 증가시키는 것을 한 번에 처리한 것을 볼 수 있습니다.


그리고 값을 1 더하고 1을 더한다는 어떻게 표현되는지 코드를 보면서 알 수 있을 것입니다. 또한 C언어와 Java와 다르게 세미콜론(;)으로 끝나지 않는데요 이것은 Python 언어의 특징이라고 볼 수 있습니다.


마지막으로 Python에서 무언가를 출력해볼 때, print ()라는 것을 사용합니다.


* 전체 코드: https://github.com/doselfcoding/src/blob/master/basic/%EC%A1%B0%EA%B1%B4%EB%AC%B8/main.py




이번 글에서는 조건문을 한 번 구현해봤는데요, 언어와 관계없이 if로 조건부를 만들고 그다음 실행부로 구성한 것을 볼 수 있습니다. 이번 실습에서는 간단한 조건문만 만들어 봤는데요, 다음 실습에서는 좀 더 복잡한 조건문인 '조건문 기차'(조건문 사슬)를 구현하는 것을 해보도록 하겠습니다.




매거진의 이전글 [코딩의 기초][실습] 변수
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari