[CS50] C언어 - 조건문과 루프

배정규·2021년 1월 20일
1

cs50

목록 보기
3/14
post-thumbnail

조건문과 루프

학습 목표

  • 조건문과 루프를 c로 작성할 수 있다.

핵심 단어

  • int
  • if
  • while
  • for

int

  • int는 정수(integer)를 나타내는 형식지정자이다.

> Code

int counter = 0;

여기서 int는 변수가 정수(integer)라는 것을 알려주는 것이고, counter는 변수의 이름, 0은 그 값에 0을 저장(초기화)하는 것이다.
그리고 잊지 말아야 할 것은 코드의 마지막은 세미콜론;을 붙여줘야하고, 등호=는 같다는 의미가 아닌, 오른쪽에 있는 값을 왼쪽에 할당한다는 것이다.

> Code

counter = counter + 1;
counter += 1;
counter++;

위 3가지 코드는 모두 변수 counter 값을 1씩 증가시키는 코드이다.

if

  • if는 만족하는 조건에 따라 작업을 수행하는 조건문이다.

> Code

if (x < y)
{
  printf("x is less than y\n");
}

if() 소괄호 안에 검사하고자하는 조건이 들어가고, {} 중괄호 안에는 조건을 만족할 때 수행하고자하는 작업이 들어간다.

> Code

if (x < y)
{
  printf("x is less than y\n");
}
else
{
  printf("x is not less than y\n");
}

else를 이용해 처음 조건이 아닌 경우에는 어떤 것을 하라고 적어줄 수 있다.

> Code

if (x < y)
{
  printf("x is less than y\n");
}
else if (x > y)
{
  printf("x is greater than y\n");
}
else
{
  printf("x is equl to y\n");
}

그리고 else if를 이용해 조건을 추가할 수도 있다.

루프

while 이나 for 를 통해서 루프(반복문)를 구현할 수 있다.
> Code

while (true)
{
  printf("hello, world\n");
}

먼저 while의 경우 ()소괄호 안에 조건을 넣고 {} 안에 수행할 작업을 포함시키면 된다.
즉, C에서 루프를 구현하고 싶다면 성립 조건을 정해줘야 한다.
답이 네, 참, 혹은 1로 나올 수 있는 질문을 던져줘야 한다.

답이 참으로 나오게 하는 방법은 여러가지가 있을 수 있다.
5 = 5, 1 < 2 등등 하지만 가장 간단한 방법은 그냥 true를 적는 것이다.

위 while문은 true라는 항상 참이 되는 조건을 통해 while루프가 영원히 수행되도록 한다.
따라서 위의 코드는 계속해서 "hello, world"를 무한정 출력하게 될 것이다.

만약 특정 횟수만큼 작업을 수행하고 싶다면 아래와 같은 조건을 넣어줄 수 있다.

> Code

int i = 0;
while (i < 50)
{
  printf("hello, world\n");
  i = i + 1;
}

변수 이름을 i로 사용했는데 보통 무언가를 셀 때 간단하게 정수(integer)를 나타내는 i를 사용한다. 물론 변수명은 맘대로 적어도 문제는 없다.

처음에 i를 0이라고 정해주었고 while은 계속해서 i가 50보다 작은지를 물어볼 것이다. 따라서 이 코드가 정상적으로 작동하려면 i를 증가시켜야 한다.(i = i + 1, i += 1, i++ 모두 같은 결과를 나타낸다.)

진행 순서를 정리해보자면
1. i는 0으로 설정
2. i는 50보다 작은가?
3. 작다
4. hello, world 출력
5. i를 1 증가시킨다.
6. i가 50보다 작은가?
7. (반복)
8. i가 50보다 작은가?
9. 작지 않다.
10. 종료.

마지막으로 아래와 같이 for문을 사용하면 for () 안에 각각 (변수 초기화; 변수 조건; 변수 증가)에 해당하는 코드를 넣어서 간단하게 표현할 수도 있다.

> Code

for (int i = 0; i < 50; i++)
{
  printf("hello, world\n");
}

while문과 비교하여 코드가 엄청 간단해진 것을 확인할 수 있다.

profile
Seize the day

0개의 댓글