[20일차](홍정모의따배c)루프도우미 continue와 break
*본 강의수기는 교수님의 모든 ppt나 코드 화면을 붙인게 아닙니다. 따로 출처 표시나 과제표시
안한 모든 코드와 사진자료의 출처는 본 강의의 교수님 입니다.
정리는 다시한번 제가 보기위함과 어떤강의인지 알려드리는 것이고
제가 적은건 이해를 돕기 위한 부연설명과 제가 이해한 몇개의 중심적인 내용이 다소
생략이 되었습니다. 이 수기를 통해 공부하려 하지말고 흥미로운 내용이라면
'인프런- 홍정모의 따라하며 배우는c' 과정을 수강하시길 바랍니다.
continue
- 교수님코드
#include <stdio.h>
int main()
{
for (int i = 0; i < 10; ++i)
{
if (i == 5)
continue;
printf("%d", i);
}
return 0;
}
반복문안에
(i == 5) if문이 있다.
여기서 continue를 만나면 어찌되냐
5를 빼고 출력하게 된다.
continue를 만나면 반복문의 처음으로 다시 돌아간다.
이름때문에 계속 진행하라!!라고 오해의 여지가 다소 있다.
- 문제
위 내용을
continue없이 구현해보라.
- 내코드
for (int i = 0; i < 10; ++i)
{
if (i == 5)
i++;
printf("%d", i);
}
그냥 단순하게 생각해서
i가 5가되면 1을 더했다.
결과는 생각한대로 나왔당.
- 교수님코드
if (i != 5)
printf("%d", i);
ㄱ- 왜 생각을 못했지
퇴근하고와서 정신이 없나보다
코드를 구현위주로 생각말고 읽는사람을 생각해서
보기쉬운 코드를 만들자.
break
- 교수님코드
#include <stdio.h>
int main()
{
for (int i = 0; i < 10; ++i)
{
if (i == 5)
break;
printf("%d", i);
}
return 0;
}
그러면 break는 어떻게 작용하는가
아예 해당하는 반복문을 나와버린다
중첩되는 루프에서 break는 어떻게 작용할까?
- 교수님코드
#include <stdio.h>
int main()
{
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
printf("(%d %d", i, j);
}
printf("\n");
}
return 0;
}
줄을 바꾸면서 숫자가 증가하는 코드다.
- 교수님코드
#include <stdio.h>
int main()
{
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (j == 5)
break;
printf("(%d %d", i, j);
}
printf("\n");
}
return 0;
}
그렇다 전체 반복문을 break하는게아니라 자기가 속해있는 반복문만
빠져나오게 한다
그러고 다시 상위반복문을 돌고
또 해당하는 break조건에 걸리면 다시 해당 반복문을 빠져나온다.