CS 기초/C언어

[CS50] 조건문과 루프

담크 2021. 7. 30. 22:05

오늘은 조건문과 루프는 C에서 어떻게 표현하는지에 대해 공부해보겠습니다.

저번 포스팅에서 C는 오래된 언어이기 때문에 저장하고자 하는 변수의 종류를 꼭 알려줘야 한다고 했습니다.

 

만약 counter라는 변수에 숫자를 저장하려면 어떻게 표시해야 할까요?

여기서 int는 변수가 정수(Integer)라는 것을 알려주는 것이고 counter라는 변수의 값에 0을 저장하는 것입니다.

마찬가지로 저번 포스팅에서 설명했듯이 = 표시는 같다의 등호(=)가 아닌 오른쪽의 값을 왼쪽으로 할당한다는 할당 연산자로 사용된 것입니다.

 

그렇다면 변수의 값을 1씩 증가시키려면 어떻게 해야 할까요?

즉 counter에 1을 더한 값을 다시 counter에 할당하면 됩니다. (여기서는 위에서 int counter를 선언했기 때문에 변수의 종류를 적어주지 않았습니다.)

이는 더 간단하게도 표현할 수 있는데

이 2개의 표현 역시 같은 의미를 지닙니다.

 

그렇다면 조건문은 C 코드로 어떻게 나타낼까요?

조건문

조건문의 경우 if( ) { }로 표현하는데 괄호 안에는 검사하고자 하는 조건이 들어가고, { } 안에는 조건을 만족할 때 수행하고자 하는 작업이 들어갑니다.

여기서는 조건인 x < y가 참이면 "x는 y보다 작다"를 출력시킨다는 의미입니다.

조건문에는 if 이외에 else, else if를 쓸 수 있는데요 else는 처음 조건이 아닌 경우에 사용하고, else if는 else로 조건이 표현이 안돼서 조건을 추가해야 하는 경우 사용합니다.(이 때는 else를 가장 마지막에 사용합니다.)

 

루프

루프는 무언가를 계속 반복하고자 할 때 사용합니다. C에서는 while이나 for를 통해서 루프를 구현합니다.

먼저 while의 경우 if와 비슷하게 while( ) { }로 사용하는데 괄호 안에 조건을 넣고 { } 안에 수행할 작업을 포함시키면 됩니다.

괄호 안에는 성립 조건을 정해줘야 하는데 답이 (네, 참, 1)이 나올 수 있는 질문을 던져줘야 합니다.

답이 참이 나오려면 여러 가지가 있겠지만 (1=1, 1 < 2.. 등) 가장 간단한 방법은 그냥 true를 적어주는 겁니다. true는 항상 참이 되므로 while루프가 무한정으로 수행되도록 합니다.

위의 코드를 실행하면 "hello, world"가 계속 출력되게 됩니다.

 

그렇다면 무한정이 아닌 특정 횟수만큼 작업을 수행하려면 어떻게 해야 할까요??

답은 간단합니다.

이렇게 적어주면 "hello, world"는 10번만 출력이 될 것입니다.

진행순서를 살펴보면

1. i에 0을 할당한다.

2. i가 10보다 작은가? -> 0이므로 true

3. "hello, world"출력

4. i에 +1 추가 (여기서 i는 1이 된다)

5. 2번부터 반복

6. i가 11이 되는 순간 i가 10보다 작은가? -> false가 된다.

7. while문 종료.

 

for문의 경우 while문과 하는 행위는 비슷하지만 사용법이 조금 다릅니다.

for문은 ( ) 안에 (변수 초기화; 변수 조건; 변수 증가)를 한 번에 써서 간단하게 표현할 수 있습니다.

만약 for문으로 위와 같은 코드를 짠다면

이렇게 적어주면 됩니다.


출처

본 내용은 CS50의 2019년 강의를 듣고 작성했습니다. (개념이 어느 정도 정리되면 최신강의도 다시 듣고 수정할 내용 있으면 수정하겠습니다.)

 

강의 자료는 EdX에서 무료로 사용할 수 있고 boostcourse에서 한글 강의로도 들을 수 있습니다.

'CS 기초 > C언어' 카테고리의 다른 글

[CS50] 하드웨어의 한계  (0) 2021.08.03
[CS50] 사용자 정의 함수, 중첩 루프  (0) 2021.08.02
[CS50] 자료형, 형식 지정자, 연산자  (2) 2021.08.01
[CS50] 문자열  (0) 2021.07.29
[CS50] C 기초  (0) 2021.07.28