드디어 반복문에 대해 배울 차례입니다.
C언어에서 제공하는 반복문 키워드는 3가지가 있는데 그 세 가지는 다 비슷하기 때문에 while하나만 잘 이해해도
다른 반복문은 금방 이해가 되실겁니다.
반복문이란 무엇일까요?
자 예를 들어 "Hello World!"라는 문자열을 총 열 번 출력하고 싶다면 어떻게 해야 할까요?
printf함수를 10번 호출하면 됩니다. 하지만 이 방법은 매우 비효율적입니다.
그래서 이런 반복적인 일을 수행해주는 것이 바로 '반복문'입니다.
while문의 기본적인 사용법은 다음과 같습니다.
저 반복조건에 무엇이 들어가야 할지 보겠습니다.
"반복 조건이 참이냐 거짓이냐?"
예제를 보면서 생각해봅시다.
실행결과
위 코드에서 10번째 줄을 지워봅시다.
어떻게 되나요?
프로그램이 종료되지 않고 계속해서 실행됩니다.
이것을 '무한루프'라고 하며 무한루프에 빠지지 않기 위해 반복의 조건이 있는겁니다.
한 줄씩 봅시다.
변수 num은 선언과 동시에 0으로 초기화 되어있습니다.
그 다음 while문에서 조건을 검사하고 있지요.
"num이 10보다 작은가?"
현재 num은 0입니다. 10보다 작죠? '참'입니다.
따라서 while문의 중괄호안에 내용을 실행합니다.
그리고 num++ 변수 num의 값을 하나 증가 시킵니다.
이제 num은 1이고 반복 명령을 .....
너무 길어지겠죠? 반복 횟수를 3으로 줄여서 그림으로 설명해드리겠습니다.
↓
↓
↓
위 과정을 거쳐서 printf함수가 총 3번 호출되어 "Hello World!"라는 문장이 3번 화면에 출력되는겁니다.
그리고 반복될 문장이 한 줄이라면 다음과 같이 중괄호 생략이 가능합니다.
이렇게도 됩니다.
하지만 코드 수가 짧다가 무조건 좋은 것은 아니니 중괄호를 생략하려고 여러 줄에 걸쳐 표현해야 적절한 코드를 억지로 한 줄로 줄이는 것은 좋지 못합니다.
예제 하나 봅시다.
실행결과
짠!
조건에 대해 잠시 설명하겠습니다.
위 while문 조건에 (1)이라고 쓰면 어떻게 될까요?
무한루프가 형성됩니다.
왜냐하면 1을 참이니까요.
전에 C언어에서는 0이 아닌 모든 값을 참이라고 한다 했습니다.
num이 1일 때 (num < 10)조건을 만나면 '참'이니까 1을 반환합니다.
< 연산자에 대해 배운적있죠? 조건이 참이라면 1을 반환 거짓이라면 0을 반환한다고요.
또 1은 참을 대표하는 값이라는 것도,
이제 '참'과 '거짓' '1'과 '0'에 대해 감이 좀 잡히시나요??
자, 그리고 반복문은 '중첩'이 가능합니다.
중첩에 관련된 대표적인 예제는 구구단 출력인데요 예제 보겠습니다.
실행 결과
실행하고 위로 스크롤 하면 위에도 보입니다.
좀 길어서 짤렸네요.
어때요? 신기하지 않나요?
조금 헷갈리고 이해하기 힘들고 어렵기도 하지만,
재미가!!! 있잖아요?
코드에 대한 설명을 조금 해드리겠습니다.
dan이 2일 때 num이 1부터 9까지 증가하는 12행의 반복문을 실행
dan이 3일 때 num이 1부터 9까지 증가하는 12행의 반복문을 실행
.
.
.
dan이 9일 때 num이 1부터 9까지 증가하는 12행의 반복문을 실행
이해가 좀 되시나요?
안된다면 이해가 될 때 까지 반복해서 공부하면 됩니다.
다음 강의는 또 다른 반복 키워드인 do while문에 대해 다룹니다.
다음 강의 때 봅시다.
'C언어 강의' 카테고리의 다른 글
(C언어 강의) Chapter -14 반복명령을 위한 키워드 (for) (0) | 2016.08.10 |
---|---|
(C언어 강의) Chapter -13 반복명령을 위한 키워드 (do~while) (0) | 2016.08.03 |
(C언어 강의) Chapter -11 printf와 scanf함수에 대한 추가적인 이야기 (0) | 2016.07.26 |
(C언어 강의) Chapter -10 상수와 형 변환 -02 (0) | 2016.07.25 |
(C언어 강의) Chapter -10 상수와 형 변환 -01 (0) | 2016.07.24 |