본문 바로가기
Programming/1. boostcourse - 'CS50'

Ep 3-3. 조건문과 루프

by @sangseophwang 2021. 4. 8.

@Google

조건문과 루프? 이걸로 뭘 할 수 있을까?

또 한번 스크래치를 예로 들어야할 것 같다. 이 정도면 '또크래치' 라고 불러도 될 정도로 C언어의 개념을 모두 포함하고 있다. 우선 다음 사진을 보자.

 

스크래치에서 자동으로 숫자를 세는 고양이를 만들 때 썼던 counter 

 

 스크래치에서는 왼쪽과 같이 counter라는 변수를 만들고 0을 저장하기 위해 이런 모양의 블록을 사용했었다. C언어로 동일한 효과를 내고자 하면 오른쪽과 같이 작성하면 되는데, 하나하나 뜯어보면 별거 아니다.

 

  • int : 변수가 정수(integer) 라는 것을 알려주는 것
  • counter : 변수. 그저 이름일 뿐이니 다른 단어로 바꿔도 되지만 보통 프로그래머들은 뭔가를 셀 때 정수를 나타내는 ''i' 를 쓴다.
  • = : '오른쪽의 내용이 왼쪽의 변수이다.'
  • ; : 코드의 끝엔 언제나 세미콜론!

 자 그럼 이제 counter 라는 변수가 0이라는 것이 설정됐다. 다음으로 스크래치에서 했던 것처럼 1씩 증가시키려면 어떻게 해야 할까?

 

1씩 증가시키는 방법이 이렇게나 다양하다!

이렇게 무려 3가지 방법이나 있다. 그런데 이 코드들 앞에 'int'가 붙지 않는 이유가 뭘까? 앞서 작성한 코드에서 이미 counter에 대해 선언했고 (counter는 0이다) 이미 컴퓨터에게 counter라는 변수에 정수 값을 저장할 것이라고 말해줬기 때문에(int counter = 0;) counter가 존재한다는 가정 하에 int를 붙이지 않은 것이다.

 

if, else, if else

if와 else 예시 코드. 만약 -라면 과 그렇지 않다면 의 환상의 조화

 위 내용을 글로 한 번 풀어 써보면 다음과 같다.

 

"만약 x가 y보다 작으면 'x is less than y' 라고 말하고, 그렇지 않다면 'x is not less than y' 라고 말해라"

 

 정리하자면 if ( ) 의 괄호 안에는 검사하고자 하는 조건이 들어가고, { } 안에는 조건을 만족할 때 수행하고자 하는 작업이 들어간다. 여기에서는 조건이 True면 "x is less than y"를 출력을 하라는 것이다. else를 이용하면 처음 조건이 아닌 경우에는 어떤 것을 하라라고 할 수 있다.

 

else if

 그럼 이제 else if 에 대해 알아보자. 사전에 검색해봤을 때 딱히 정의가 나오지 않는데, 내 주관적인 해석을 써보자면 '그게 아니라 만약' 이라고 할 수 있겠다. 자세한 건 좀 더 찾아봐야 하겠지만 우선 어떤 흐름인지 이해할 수 있으니 넘어가겠다.

 

Loop!

loop 의 간단한 구조

 마지막으로 우리가 스크래치에서 사용했던 'forever'  이나 'repeat 50' 과 같은 루프에 대해 설명해보고자 한다. 무언가를 계속 반복하는 것을 루프라고 한다. C에서는 while 이나 for 을 통해 루프를 구현할 수 있다. 먼저 while 의 경우 아래 코드와 같이 while ( )의 괄호 안에 조건을 넣고 { } 안에 수행할 작업을 포함시키면 된다. () 안에는 5=5, 1<2 와 같은 값을 써도 되지만 true, false 로도 표현이 가능하다. 위 코드를 실행하면 무한히 hello, world 가 작성될 것이다. 그렇다면 특정 횟수만큼 반복하고 싶으면 어떻게 해야할까?

 

1. while 을 응용해 횟수 정하기

 위와 같이 코드를 입력하면 진행 순서는 다음과 같다.

 

i는 0으로 설정 -> i는 50보다 작은가? -> 작다 -> hello world를 출력한다 -> i를 1증가시킨다 -> i가 50보다 작은가?
-> (반복) -> i가 50보다 작은가? -> 작지 않다 -> 종료

 

 처음에 i라는 변수가 0이라는 것을 설정해주고 'i가 50보다 작으면'  이라는 조건을 만든다. 작다면 'hello, world' 가 써지고 그와 동시에 i는 1을 더한 값으로 바뀐다. 이 과정이 반복되어 i가 50이 되는 순간 프로그램이 멈추는 것이다.

 

2. for 을 활용해 횟수 정하기

 for 은 while에 비해 코드 길이를 짧게 만들 수 있다. 6줄을 4줄로 바꾸면서 동일한 효과를 내는 것이다. 

 

 마지막으로 본 강의 과제를 해결한 사진으로 끝내고자 한다. 문제는 '개발 공부는 재미있다!' 를 10번 출력하는 코드를 만들라는 것이었다.

 

개발 공부는 재미있다! 야 너두 할 수 있어!

반응형

댓글