프로그래밍을 할때에는 언제나 극단적인 환경을 고려해야 한다.
Hello world를 100번 출력하려면 printf 함수를 100번 가져다쓰면 된다.
하지만 극단적으로 생각했을 때
Hello world를 1억번 출력해야 할 일이 생긴다면?
그때도 printf를 1억번 쓸 것인가?
그렇지 않다.
우리는 우리 시간을 아끼기 위해
최대한 극단적이되 편의지향적으로 생각해야 한다.
그런 의미를 상기하며 for문을 공부해보겠다.
C언어의 for 반복문은 괄호 안에 (초기식; 조건식; 변화식)을 지정한다.
그 부분을 루프 선언문(loop statement)라고 부른다.
그리고 중괄호 안에 반복할 코드를 작성하는데 이 부분을 루프 본체(loop body)라고 부른다.
조건식 → 루프 본체 → 변화식 → 조건식 으로 순환하는 부분을 루프(loop)라고 부른다.
for 반복문 사용하기
for 반복문으로 Hello, World!를 100번 출력해보자.
초기식 : 반복문을 시작할 때 초기식. 보통 정수형 변수를 선언한 뒤 0을 할당함. (이 변수를 루프 인덱스라고도 부르며, index의 첫 머리 글자를 따서 i를 주로 사용함) 반복에 사용할 변수는 초기식 부분에서 선언해도 되고, for 반복문 바깥에서 선언해도 됨.
조건식 : 반복될 조건. 조건식이 참이면 계쏙 반복하며, 거짓이 되면 반복문을 끝냄.
변화식 : 반복문이 한번 실행될 때마다 수행할 식. 보통 증가 연산자 ++를 사용하여 변수의 값을 1씩 증가시킴.
초깃값의 변화 알아보기
for 반복문이 끝나면 반복에 사용한 변수 i의 값은 어떻게 될까?
변수 i의 값을 확인할 수 있도록 i를 for 반복문 바깥에 선언해보자!
조건식에서 i < 10으로 지정했으므로 Hello world는 i가 10 미만일때만 출력 된다.
for 반복문이 끝날 시점에서는 i가 10이 되어 for문에서 탈출했다.
따라서 조건식을 탈출한 i의 경우 10이 된다.
초깃값을 1부터 시작하기
프로그래밍에서 반복문의 초깃값은 보통 0부터 시작한다.
그래서 100번을 출력하려면 0부터 99까지 증가시키도록 만든다.
하지만 100번만 출력할 수 있다면 어떤 초깃값으로 시작하더라도 상관없다.
초깃값을 감소시키기
for 반복문과 세미콜론
for 반복문은 if 조건문과 마찬가지로 끝에 ;(세미콜론)을 붙이면 안된다.
for문에 세미콜론이 들어갈 경우, printf와 떨어진 상태가 되어
반복이 이뤄지지 않고 한번만 출력된다.
for 반복문에서 중괄호 생략하기
for 반복문으로 반복할 코드가 한 줄이라면 다음과 같이 중괄호는 생략할 수 있다.
단 for에서 반복할 코드가 두 줄 이상일 때는 중괄호 생략에 주의해야한다.
for로 반복할 함수가 두 개인데도 중괄호를 생략하면 첫번째 printf만 반복되어 출력된다.
즉 두번째것은 루프가 탈출되서 출력될 때 한번만 출력된다.
그러므로 for로 반복할 코드가 두 줄 이상이라면 반드시 중괄호로 묶어야 한다.
입력한 횟수대로 반복하기
입력한 수를 변수에 저장하고
그 변수를 for문 루프선언문에 넣어 반복하는 방식이다.
이번에는 초깃값을 받은 뒤 초깃값 만큼만 출력해보자.
또한 i를 따로 선언하지 않고 count를 그대로 사용할 수도 있다.
for (scanf("%d", &count); count > 0; count--)
이런 방식으로도 입력이 가능하다.
for 반복문에서 변수 두 개 사용하기
이번에는 for 반복문에서 변수를 두 개 사용하고, 변수의 증가 폭을 다르게 만들어보자.
for 반복문으로 무한 루프 만들기
무한루프는 프로그램이 종료되지 않는다 반드시 콘솔(터미널, 명령프롬프트)에서 Ctrl + C를 입력하여 프로그램을 중단하여야 한다.
심사문제 : 알파벳 순서로 출력하기
정답을 보시려면 아래 더보기를 눌러주세요.
'C, C++' 카테고리의 다른 글
C언어 코딩도장(do while 반복문으로 최소 한번은 실행하기) (0) | 2022.04.27 |
---|---|
C언어 코딩도장(while 반복문) (0) | 2022.04.27 |
C언어 코딩도장(switch 분기문) (0) | 2022.04.27 |
C언어 코딩도장(비트 연산자 응용하기 / 플래그) (0) | 2022.04.26 |
오늘 공부한 C언어(비트 연산자 이용하기) (0) | 2022.03.09 |