[새싹교실/2017/꽃밭/0403|◀이전수업]▒▒▒▒▒[새싹교실/2017/꽃밭/0410|다음수업▶] [[TableOfContents]] = 수업 내용 = == 무한 루프, break & continue == 반복문을 쓰다 보면 무한히 반복하게 해야할 때가 있습니다. 무한 반복문은 이렇게 만들 수 있죠. attachment:infinite_loop1.png?width=340&height=250 attachment:infinite_loop2.png?width=340&height=250 근데 프로그램을 종료하려면 언젠가는 반복문을 빠져나와야 하는데, 무한루프에서는 어떻게 빠져나오죠? 그 때 {{{{color:red}'''break'''}}}문을 이용하면 됩니다. break를 만나면 바로 반복문 밖으로 빠져나오게 되지요. attachment:break.png?width=340&height=250 그런데 완전히 빠져나오고 싶지는 않고 뒷부분을 skip하고 싶을 때도 있죠. 그 때 사용하는 것이 {{{{color:red}'''continue'''}}}입니다. attachment:continue.png?width=340&height=250 continue를 만나면 뒷 부분을 건너 뛰고 다시 처음부터 반복하게 됩니다. 그러나 사실 이 경우는 뒷부분이 항상 실행이 안 되기 때문에 있으나마나죠. 그래서 break와 continue는 '''조건문'''과 같이 쓰입니다. {{{ while(true){ code1... code2... if( 조건1 ) break; // 조건1을 만족하면 while문을 빠져나와라 code3... code4... if( 조건2 ) continue; // 조건2를 만족하면 code5를 실행하지 말고 다시 code1부터 실행해라 code5... } }}} == 배열 == 배열은 변수 여러 개를 모은 것입니다. 성적 처리 프로그램을 만든다고 합시다. 학생 100명의 성적을 저장해야 해요. 그러면 변수 100개를 일일이 선언하실 건가요? 너무 귀찮죠. 그 때 배열을 이용하면 100개라 할지라도 간편하게 선언할 수 있습니다. attachment:array1.png?width=600&height=200 배열은 메모리상에서 이렇게 나타낼 수 있습니다. attachment:array2.png?width=600&height=200 각각의 원소는 student[0], student[1], ...., student[99]로, 번호를 붙여서 부릅니다. 배열 원소는 항상 {{{{color:red}'''0'''}}}번부터 시작합니다. 꼭 기억하세요! 그렇다면 원소가 n개일 때, 마지막 원소는 '''n-1'''번입니다. i번 원소는 '''i+1'''번째 원소이지요. 퀴즈! int a[100]의 원소를 차례로 출력하려면 for문 안에 어떤 내용이 들어가야 할까요? {{{ for ( ; ; ){ printf("%d ", a[i]); } }}} = 실습 = attachment:loop_break_cnt.png?width=600&height=200 * 슈도 코드 {{{ for(무한){ if(양수면) 덧셈 else if(음수면) 다시 받기 else 프로그램 종료 } }}} = 과제 소개 = 여러분, 천천히 생각해보세요!! 여러분은 머리가 좋아서 충분히 여유를 가지고 설계하면 풀 수 있습니다~ attachment:loop_break_cnt_adv.png?width=600&height=220 = 과제 제출 = == 현지 == {{{ #include #include "stdafx.h" #include int main(void) { int i = 0; int n = 0; int num[100]; int sum = 0; for (;;) { printf("\n숫자를 입력하세요"); scanf_s("%d", &num[i]); if (num[i] > 0) { sum = sum + num[i]; } else if (num[i] < 0) { printf("\n음수를 입력하셨습니다. \n다시 입력하세요"); continue; } else { printf("\n프로그램을 종료합니다."); break; } } printf("입력한 숫자의 합: "); scanf_s("%d", &sum); int max = 0; for (i = 0; i < n; i++) { if (num[i] > max) { max = num[i]; } } printf("가장 큰 수는 %d입니다.\n", max); system("pause"); return 0; } }}} == 혜민 == {{{ #include int main() { int n,sum=0,biggest; for ( ; ; ) { printf("숫자를 입력하세요 : "); scanf("%d", &n); if (n > 0) { sum = sum + n; if (biggest < n) { biggest = n; } } else if (n < 0) { printf("음수를 입력하셨어요. 다시 입력하세요.\n"); continue; } else { printf("프로그램을 종료합니다."); break; } } printf("입력한 숫자의 합 : %d",sum); printf("가장 큰 수는 %d입니다.", biggest); return 0; } }}} == 유진 == {{{ }}} = 후기 = == [이지수|물주는사람] == 실습 난이도가 조금 높았나 싶기도 하지만, 난이도가 문제가 아니라 제가 좀 더 명료하고 쉽게 가르쳐줘야겠다는 생각이 들었습니당 새싹들의 무한한 잠재력을 꺼내주고 싶어요! == 유진 == == 현지 == 눈으로 보기엔 쉬워보였는데 막상 해보려니 어려웠다. 그래도 이번 기회를 통해 무한루프와 배열을 어떻게 사용하는 것인지 알게 되었고 프로그래밍 수업시간에도 이번에 배운내용을 통해 쉽게 과제를 해결할 수 있었다. == 혜민 == ------------ [새싹교실/2017/꽃밭/0403|◀이전수업]▒▒▒▒▒[새싹교실/2017/꽃밭/0410|다음수업▶] [새싹교실/2017] [새싹교실/2017/꽃밭] 아직 잘 모르는 부분이 많다. 수학처럼 생각해야할 것이 많아서 시간이 오래걸리지만 작은 것 하나라도 알아갈 수 있어서 좋고 처음부터 너무 잘하려고 하지 않고 차근차근 배워야겠다. 숙제도 어렵지만 언니가 피드백을 잘해주셔서 도움이 많이 될 것 같다.