daniel7481의 개발일지

[CS50] C(2) 본문

Naver Boostcourse

[CS50] C(2)

daniel7481 2021. 12. 6. 19:26
반응형

3. 조건문과 루프

변수를 선언하고 '='라는 기호를 사용하여 값을 할당해준다. 이 때 컴퓨터에게 할당해주는 값의 종류 또한 같이 선언해줘야 한다는 것을 지난 강의에서 배웠다. 이번엔 int(integer, 정수) 변수를 선언해보자. 

int counter = 0;

이 때 '='(equal to)기호는 counter가 0이랑 같다가 아닌, 등호 오른쪽에 있는 값을 왼쪽에 있는 값에 할당한다라고 이해해야 한다. 이제 counter 변수에다가 1을 더해보자

counter = counter + 1;

산수를 배운 사람이라면 이 식이 거짓이라고 생각할 것이다. 그러나 앞에서 얘기했듯이 둘의 값이 같다는 의미가 아니다. 이제 counter 변수에는 counter + 1값이 할당된 것이다. 이때 위에서 이미 counter의 자료형을 선언하였으므로 다시 선언할 필요는 없다. 또한 이 방법 또한 있다.

counter += 1;
counter ++

세 가지 연산 모두 같은 의미이다. 

3.1 조건문

~조건이 참이면, ~를 해라. 이러한 명령을 내리는 문을 조건문이라고 한다. c언어는 if문을 사용한다.

if(x < y)
{
	print('x is less than y\n';
}

작업문이 두 줄 이상 넘어가면 {}를 띄워서 사용한다. 이제 조건문이 한 개 뿐 아니라 여러개 일 수 있다.

if(x < y)
{
	print('x is less than y\n');
}
else if(x > y)
{
	print('x is greater than y\n');
}
else if(x == y)
{
	print('x is equal to y\n';
}

여기서 새로 보이는 기호가 있다. '=='은 과연 무엇일까? 앞에서 =은 할당 연산자라고 소개한 바 있다. 그러면 수학 기호에서 등호로 쓰이는 '='는 어떻게 나타내야할지 의문이 생길 것이다. 둘 값이 같다를 나타내는 등호는 '=='로 표기한다. 위 세 조건문 중에서 굳이 선언하지 않아도 되는 조건문이 있다. 그것은 바로 마지막 줄이다. x가 만약 y보다 작지도 않고, 크지도 않으면 결국엔 같은 값일 수 밖에 없기 때문이다. 얼마나 효율적으로 코딩하는지, 얼마나 적은 매모리나 CPU를 사용해서 수행하는지 고려해야할 필요가 있다.

if(x < y)
{
	print('x is less than y\n');
}
else if(x > y)
{
	print('x is greater than y\n');
}
else
{
	print('x is equal to y\n';
}

3.2 루프

while문

scratch에서 forver라는 기능은 C에서는 while로 나타낸다. 어떠한 행동을 반복하라는 명령인데, 이 while은 옆에 boolean expression(참 혹은 거짓)이 필요하다. 여기서 참을 나타내는 식(1<2, 2<3)은 무한히 많은데, 가장 간단한 방법으로 True로 나타낸다.

while(True)
{
	print('h');
}

이런식이라면 h가 영원히 나올 것이다. 대부분의 경우에는 무한루프는 필요하지 않다. 그래서 True 대신 조건을 추가해준다.

int i = 0;
while (i < 50)
{
	print('hello world\n');
    i = i + 1;
}

카운트를 의미하는 변수는 주로 i를 이용한다. 한 번을 반복하면 i는 1씩 증가하고, 50 이상이 될 때 while문 안의 조건문이 거짓이 되어 루프를 탈출하게 된다. 

for문

while문보다 더 정교하게 루프를 설계하고 싶을 때 for문을 쓴다. 

for(int i = 0; i < 50; i++)
{
	print('hello world\n');
}

이 for문을 위의 while문이랑 똑같은 연산을 한다. for문 안의 세 가지 요소의 뜻은 (counter선언, loop가 돌아가는 조건, 매 loop마다 counter의 변화)이다. 

반응형