Programming/C, C++

코딩 자율 학습단 4일차 - 반복문

주눅 2024. 6. 21. 02:18

3일 차 글 쓴 지 얼마 안 된 것 같지만 어느덧 또 4일 차다 ^_^

사실 날짜만 보면 오늘은 5일차를 올려야 하는 거지만...

밀려버렸으니 어쩔 수 없다...

 

오늘부터는 새로운 챕터를 공부하게 된다!

따라서 새로운 게임 예제가 나오게 되는데... 예제가 바로 피라미드 쌓기

1학년 수업 때 별 쌓기 못해서 전공 드랍하는 동기들이 엄청 많았는데

ㅠㅠㅋㅋㅋㅋㅋㅋㅋㅋ 뭔가 추억이다

 

사실 나도 예외는 아님

조금 더 버티긴 했지만 별 쌓기부터가 솔직히 고역이었다

이번엔 꼭 마스터 할 수 있기를...


 

반복문에 대해 학습하기 전 연산자의 개념을 먼저 알아본다.

 

프로그램에서 연산 작업을 처리하기 위해 사용하는 기호를 연산자Operator라고 한다.

대입연산자(=), 산술연산자(+,-,*,/,%) 등 여러 연산자가 존재한다.

 

#include <stdio.h>

int main(void) {
	int a = 10;
	printf("a는 %d\n", a);
	
	a = a + 1;
	printf("a는 %d\n", a);

	return 0;
}

위의 예문에서는 a의 값을 1 증가시키기 위해 a = a + 1; 이라는 코드를 사용하고 있는데,

이처럼 연산자를 두 개 사용하지 않고 ++연산자를 사용해도 된다.

 

따라서, 위의 코드를 다음과 같이 고칠 수 있다.

#include <stdio.h>

int main(void) {
	int a = 10;
	printf("a는 %d\n", a);

	// a = a + 1;
	a++;
	printf("a는 %d\n", a);

	return 0;
}

 

이를 통해 ++ 연산자는

'변수에 1을 더해 다시 변수에 넣는' 역할을 한다는 것을 알 수 있다.

 

이어서 예제를 한 개 더 살펴본다.

#include <stdio.h>

int main(void) {
	int b = 20;
	printf("b는 %d\n", ++b);
	printf("b는 %d\n", b++);
	printf("b는 %d\n", b);

	return 0;
}

실행 결과

 

실행 결과를 살펴보면 첫번째 printf()와 두 번째의 값이 같은데,

이는 ++ 연산자의 위치에 따라 연산 순서가 달라지기 때문이다.

 

++b처럼 연산자가 변수 앞에 있을 때를 전위라고 하고,

전위일 때는 연산을 마친 후에 작업을 수행한다.

 

b++처럼 연산자가 변수 뒤에 있을 때는 후위라고 하고,

작업을 마친 다음 연산을 수행하고, 이후 다음 줄로 넘어간다.

 

즉, 첫번째 printf()문은 ++b 이기 때문에 연산 작업을 마친 후 값을 출력해 21이 나왔다.

하지만 두번째 printf()는 b++ 이기 때문에 현재 값을 출력한 후 연산을 시작해 출력값이 21이다.

마지막 printf()는 연산이 없으므로, b++의 연산이 끝난 값인 22가 출력된다.

 

 

아래로는 C언어에서 자주 사용하는 연산자를 표로 정리해 보았다.

구분 연산자 설명
산술 연산자 + A+B
- A-B
* AxB
/ A/B
% A/B의 나머지
대입 연산자 = 오른쪽 값을 왼쪽에 대입
+= 둘을 더한 뒤 왼쪽에 대입
-= 둘을 뺀 뒤 왼쪽에 대입
*= 둘을 곱한 뒤 왼쪽에 대입
/= 둘을 나눈 뒤 왼쪽에 대입
%= 둘을 나눈 나머지 값을 왼쪽에 대입
증감 연산자 ++a a의 값 1 증가 후 연산 진행
a++ 연산한 후 a의 값 1 증가
--a a의 값 1 감소 후 연산 진행
a-- 연산한 후 a의 값 1 감소
비교 연산자(관계 연산자) < 왼쪽 값이 오른쪽 값보다 작은가?
> 왼쪽 값이 오른쪽 값보다 큰가?
<= 왼쪽 값이 오른쪽 값보다 작거나 같은가?
>= 왼쪽 값이 오른쪽 값보다 크거나 같은가?
== 왼쪽 값과 오른쪽 값이 같은가?
!= 왼쪽 값과 오른쪽 값이 다른가?
논리 연산자 && 왼쪽과 오른쪽이 모두 참이면 참, 하나라도 거짓이면 거짓 (= and)
|| 왼쪽 혹은 오른쪽 중 하나라도 참이면 참, 모두 거짓이면 거짓 (= or)
! 피연산자가 참이면 거짓, 거짓이면 참

 

반복문은 같은 문장을 반복해서 수행하게 하는 명령문이다.

반복문의 종류에는 for문, while문, do while문이 있다.

 

 

1. for문

for(선언; 조건; 증감){
	//수행할 문장
}

for문은 다음과 같은 형식으로 작성된다.

 

for라는 키워드로 시작하고, 소괄호 안에 선언, 조건, 증감 부분이 있다.

이후 중괄호 안에 수행할 문장이 들어 있다.

 

for문은 변수를 선언하고 초기화한 후 변수의 조건을 확인하고,

조건에 해당하면 중괄호 안의 문장을 수행한 다음 변수의 값을 증감한다.

이후 다시 조건을 확인하는 순서로 진행된다.

 

 

2. while문

선언;

while(조건) {
	//수행할 문장(증감 포함)
}

while문은 이와 같은 형식으로 작성된다.

 

3. do-while문

선언;

do{
	//수행할 문장
} while(조건);

do-while문은 위의 예제처럼 작성된다. 

 

while문과 do-while문은 비슷한 구조로 작성되어 있지만,

do-while문은 일단 무조건 한 번은 문장을 수행한 후 조건을 확인하지만, 

while문은 조건을 먼저 확인한 후 문장을 수행한다는 점에서 차이가 있다.

while문은 조건에 따라 아예 문장을 실행하지 않을 수도 있지만, do-while문은 그렇지 않다.


 

같은 예제를 통해 다양한 반복문의 종류를 학습했는데,

이 과정이 정말 이해가 잘 되고 쏙쏙 박혀서 신기했다.

특히 do-while 문에 대한 내용은 배워본 적이 없었어서 생소하게 느껴졌다!

 

지금 몰아 공부한 내용 따라잡으려면 아마

오늘 낮에도 꽤 많은 시간을 공부에 써야 할 것 같다

 

이젠 밀리는 일 없게 꼬박꼬박 그날 공부를 해야겠다...

오늘의 공부 끝!