[C언어] # 3. 반복문과 삼항연산자

Crush_on_Study·2022년 6월 6일
0

C언어 기초

목록 보기
4/11

아직까지 잘들 따라오고계신가요? (제발요!!)
오늘할 것도 조건문이랑 같이 굉장히 많이 쓰이는 문법입니다.


for문

0. 반복문 for

우리가 코드를 짤 때, 동일한 노동을 반복수행해야할 때가 있을겁니다.
예를 들어서, 여러분들이 선생님이라 하고 학생들을 출석체크한다 합시다.
학생이 1명이 아닌 이상, 출석을 1번부터 ~ N번까지 부르게 될텐데요.

printf("1번\n");
printf("2번\n");
printf("3번\n");
printf("4번\n");
printf("5번\n");
.
.
printf("N번\n");

이런 식으로 하면 코드도 지저분해보이고 효율성이 많이 떨어집니다.
앞으로 현업에서 코드를 짜게되면 적게든 몇백줄에서 많게는 수천줄이 될텐데,
코드의 가독성을 높이기 위해서는 반복문이 반드시 필요합니다.

for (초기값; 조건식; 증감식)

이게 for문의 원형입니다. 하나씩 살펴보겠습니다.

  • 초기값?
    초기값은 반복문을 수행할 때, 기준점이 어디인지를 선언해주는 것입니다.
    예를 들어서 우리가 1부터 10까지 출력을 하고자한다면 초기값은 1이겠죠? 1부터 시작하기 때문입니다!

그러면 초기값을 for문 안에 어떻게 넣어주면 되느냐?
IDE마다 다른데 Dev C++의 경우는 변수를 먼저 for문 밖에다 선언을 해줘야 에러가 뜨지 않습니다.

#include <stdio.h>
int main()
{
	int i;
    for (i=1; i<=10; i++)
    {
    	printf("%d\n",i);
    }
    
    return 0;
}

이런 식으로요. 어쩌다보니 초기값뿐만 아니라 다른 식들도 넣었네요.
하지만, 딱보면 직관적으로 이해는 갑니다.

A. 변수 i가 밖에서 선언되었고... 1부터 시작하는구나!
B. 변수 i는 10보다 작거나 같을 때 반복을 수행하는구나.

  • 아! 그러면 10까지만 출력되고 그 위로는 조건식에 맞지않으니 프로그램이 종료되겠구나!

여기까지는 이해가되는데 i++가 뭐지..??

제 강의용 PPT자료에서 가져온건데, 이걸 토대로 설명드리겠습니다.

C언어에서는 변수 = 변수값; 이라는 말은 변수값을 '변수'에 집어넣는다는 말입니다.
상자그림처럼요. 상자의 이름은 우리가 'number'라고 정해줬고, 그 상자의 자료형 타입은 정수형(int)입니다. 변수 number가 현재 갖고 있는 값은 5입니다.

따라서, 5가 number상자에 들어가있다는 것입니다.


여기까지 이해되었다면 i++을 이해할 수 있습니다. C언어에서 i++는
i = i+1 라는 뜻입니다.

  • 이게 말이 되는 수식인가요? : 놀랍게도 말이 되는 수식 맞습니다. 적어도 프로그래밍의 세계에서는요!

수학이였다면 i = i+1? 은 결국 0 = 1이 아닌가요? 하겠지만!
프로그래밍에서는 '오른쪽'에 있는 값을 '왼쪽'에 있는 변수상자에 넣겠다는 말입니다. 따라서 이 식을 반복문에 넣는다면 변수 i는 1씩 증가하게 되겠죠?

훌륭하게 출력되네요.

Tip! i++가 있다면 i--도 있습니다. 이는 1씩 감소한다는 뜻이 되겠죠?
2씩 증가시키고 싶다면 i = i+2로 하면 되고 2씩 나누고 싶으면 i = i/2 등등
우리 입맛대로 마음껏 코드를 쓸 수 있습니다.

  • i++를 후위연산자, ++i를 전위연산자라 합니다.

while문

1. 반복문 while

반복문 2번째 문법입니다. while도 for문처럼 기능은 동일해요. 단지,
양식이 조금 다를뿐입니다. 먼저 코드부터 보여드리면서 설명하겠습니다.

#include <stdio.h>
int main()
{
	int i = 0;
    while(i<10)
    {
    	printf("%d\n",i);
        i++;
    }
    return 0;
}

얼추 비슷하죠? 코드보면 초기값, 조건식, 증감식이 다 보이긴 합니다.
다만 for문은 한 곳에 다 모아두었고, while문은 다 분산시켰다는 것.
차이는 이거 하나 뿐입니다.

코드를 실행해보니 for문을 쓸 때와 똑같이 나옵니다.

기억할 것은 while문에서 1. 초기값은 while문 위에 / 2. 조건식은 while문 옆에 / 3. 증감식은 while문 안에

이것 뿐입니다. 앞에서 for문을 잘 이해했으면 while문까지도 함께 이해가 됩니다.


do while문

2. 반복문 do while

마지막 반복문입니다. do while인데요. 이거는 알고리즘에서 꽤 쓰입니다.

#include <stdio.h>

int main()
{
	int i;
	do
	{
		printf("%d\n",i);
		i++;		
	}
	
	while(i<10);
	
	return 0;
} 

결과만 보면 while문이랑 차이가 없어보입니다. 근데 왜 따로 do while로 구분을 해둔 것일까요?

  • while문의 경우는 조건을 먼저 검토합니다. 조건이 맞지 않으면 코드를 수행하지 않습니다. 한번 확인해보죠!

변수 i를 초기값 3으로 잡아두었습니다.
그리고 조건식으론 i가 3보다 작을 때, 해당 코드를 반복하도록 했습니다.
조건과 초기값이 성립이 안하므로 실행했을 때 아무것도 뜨지 않습니다.

  • 그럼 do while문은? do while문의 경우는 일단 첫 타임은 코드를 수행한 뒤, 조건을 검토합니다. 코드 봅시다.

    3이 나오죠?

코드를 천천히 보면 왜 이렇게 수행되는지 직관적으로 이해가 갑니다.
여러분 do가 뭔가요? 해라! 라는 뜻이죠? 일단 조건이 뭐든간에 한번은 해라! 그 다음 while을 검토해! 라는 것입니다.


삼항연산자

3. 삼항연산자

마지막으로 삼항연산자를 한번 알아봅시다. 자주 쓰이는 문법은 아닌데, 알아두면 괜찮은 스킬이라 추가로 글을 씁니다.

코드의 원형은 아래와 같습니다.

#include <stdio.h>

int main()
{
	int a,b,result;
	scanf("%d %d",&a,&b);
	
	result = a>b ? a : b;
	printf("%d",result);
		
	return 0;
} 

자, 이게 대체 뭔말인가? 꼭 외우지 않아도 됩니다. 자주 안쓰고, 쓸 일이 생기면 찾아보고 해도 되니까요!

A. 음.. 일단 변수 a,b,result를 정수형 타입으로 선언했고...
B. 그리고 변수 a,b를 입력받고...
C. result..?

천천히 봅시다.

result = (조건식) ? (참) : (거짓);

지금 저는 조건식을 변수 a가 변수 b보다 클 경우로 잡았습니다.
a > b ? 이렇게요.
만약 이 조건식이 참이라면 a를 출력하고, 거짓이라면 b를 출력하라는 것입니다.

코드를 보면 저는 a를 3, b를 5로 입력했기 때문에 a>b은 거짓입니다.
그래서 b를 출력한 것입니다.

profile
방구석백수 코드몽키

0개의 댓글