반복문(for, while, 중첩반복, break, continue)- 0801

안씅👩🏻‍💻·2022년 7월 28일
0
post-thumbnail

🔗 복습하기

  • 연산자란, 값 계산에 사용되는 기호문자를 의미함.

  • '실수'로 연산하지 않는 것이 좋음.

    • '실수'를 사용해 연산해야 한다면, overflow를 조심해야함.
  • 제어문(cotrol)이란, 개발자가 코드의 정상적인 흐름은 제어하기 위해 사용하는 것.

  • 제어문(cotrol)에는 if문 switch문 for문 while문 do-while문 break문 continue문 중첩제어문이 있음.



👩🏻‍💻 반복문(loop)

  • 특정 명령어 집합을 반복 수행할 때 사용하는 지시신호(command)를 보내 프로그램을 제어함.

  • while문 do-while문 for문이 있음.

  • for문while문 do-while문으로 쓸 수 있음.

  • 반복문 사용 예시
    ex) 수능 50만명 성적처리

1️⃣ while문

  • 조건에 따라 반복을 계속할지 결정할 때 사용.

  • while ( boolean ){ A; } 의 형식

    • booleantrue인 동안에 A명령어 반복수행 함.
  • 초기값과 while문 조건식, 조건 증감 명령어를 꼼꼼히 살펴볼 필요 있음.

💡 : while문내부 명령어한 번도 실행 안 할 수 있음.

✍️ 같은 내용 반복 출력하는 방법들 (실습)

⌨️ coding ⤵️

		System.out.println("java 존경합니다");	
		System.out.println("java 존경합니다");	
		System.out.println("java 존경합니다");	
		System.out.println("java 존경합니다");	
		// 같은 내용 5번 반복
        
        int count =0; 
        // 조건식 : count<5
		while (count<5) {
			System.out.println("java");
			count++; // while문에서 조건식 결과를 false로 만들어 줄 수 있음.
        } // 같은 내용 5번 미만 반복
        
        count = 1;	//반복문의 초기화
		int endValue =5;
		while (count <=endValue) {
			System.out.println("java");
			count++;
		} // 같은 내용 5번 미만 반복

  • count++; 조건 증감 명령어
    • while문에서 조건식 결과를 false로 만들어 줄 수 있음.
    • 미작성시 무한 루프가 됨.

✍️ 0에서 10까지의 합 구하기의 다양한 방법(실습)

⌨️ coding ⤵️

		int sum=0;
		int num =1;
		
		while (num <=10) {
			sum += num; // sum = sum + num; 
			num++; 		// --> sum =0+1+2+3+,,+10
		}
		
		System.out.println("1~10까지 합: "+sum);
	

✍️ 반복합 응용하기(홀수 합, 짝수 합)(실습)

⌨️ coding ⤵️

int sum = 0;
		int num = 1;

		// 1~10사이의 짝수의 합(2+4+6+8+10)
		while (num <= 10) {
			if ((num % 2) == 0) {
				sum += num;
				System.out.println("sum = " + sum);
			}
			num++;
		}

		System.out.println("1~10사이의 짝수의 합 :" + sum);
		
//-----------------------------------------------------------
		
		sum = 0;// 초기화 필수
		num = 1;// 초기화 필수
		// 1~10사이의 홀수의 합
		while (num <= 10) {
			if ((num % 2) == 1) {
				sum += num;
			}
			num++;
		}

		System.out.println("1~10사이의 홀수의 합 :" + sum);

✍️ Math.random() 이용해 퀴즈 프로그램 만들기(실습)

⌨️ coding ⤵️

int num1 = (int) (Math.random()*10);
		int num2 = (int) (Math.random()*10);
		
		Scanner input =new Scanner(System.in);
		System.out.println(num1 +"과"+num2+"의 합계는?");
		
		int answer=input.nextInt();
		
		
		// while문 내부 조건 : 정답이 틀리면 while문 반복수행
		while ((num1+num2) != answer) {
			System.out.println("정답이 아닙니다. 다시 시도하세요.");
			System.out.println(num1 +"과"+num2+"의 합계는?");
			answer = input.nextInt();
		}
		
		System.out.println("정답입니다.");

2️⃣ do-while문

  • 조건 따라 계속 반복할지 결정할 때 사용하는 것은 while문과 동일함.

  • do -while문은 내부 명령어를 무조건 1번 실행

    💡 : while문내부 명령어한 번도 실행 안 할 수 있음.

  • do { A; } while (조건식)

    • 조건식true인 동안 A를 반복 실행
  • do -while 의 대표적인 사례

    • 자판기처럼 메뉴판을 보여주고 외부에서 선택하고 종료하는 경우


✍️ do -while문 은 내부 명령어를 무조건 한 번은 실행함.(실습)

⌨️ coding ⤵️

int count = 0;

		do {
			System.out.println("java");
			count++;
		} while (count < 10);


//--------------------------------------------
		
		count = 0;

		do {
			System.out.println("java!!!!!!!!!!!!!!!");
		} while (count > 10);
		
		
//------------------------------------------------
		
		// while문은 조건이 안 맞으면 실행하지 않음
		while (count > 10) {
			System.out.println("java!!!!!!!!!!!!!!!");
			count++;
		}

✍️ do -while문 코드 while문으로 작성하기.(실습)

⌨️ coding ⤵️

		int sum = 0;
		int input_num;

		Scanner input = new Scanner(System.in);
		
        // do -while문 작성함.
		do {
			System.out.println("덧셈할 숫자를 입력하세요. 단, 입력한 숫자가 0이면 덧셈이 종료됩니다.");
			input_num = input.nextInt();
			sum += input_num;
		} while (input_num != 0); // 0을 입력하면 프로그램 종료

		System.out.println("sum = " + sum);

// -------------------------------------------------

		// while문으로 같은 프로그램 작성하기.
		System.out.println("덧셈할 숫자를 입력하세요. 단, 입력한 숫자가 0이면 덧셈이 종료됩니다.");

		input_num = input.nextInt();

		while (input_num != 0) { // 0을 입력하면 프로그램 종료
			sum += input_num;
			System.out.println("덧셈할 숫자를 입력하세요. 단, 입력한 숫자가 0이면 덧셈이 종료됩니다.");
			input_num = input.nextInt();
		}
		System.out.println("sum = " + sum);

✍️ a-z까지 출력하기(예제)(실습)

⌨️ coding ⤵️

char a = 'a';

		do {
			System.out.print(a);
			a = (char) (a + 1);
		} while (a <= 'z');

		System.out.println();

		a = 'A';

		do {
			System.out.print(a);
			a = (char) (a + 1);
		} while (a <= 'Z');


3️⃣ for문

  • for (초기값; 조건식; 증감연산) {A} 형식

    • for문 실행--> 초기값 실행--> 조건식 실행--> A실행--> 증감연산--> A실행--> ...조건식 끝날 때까지 반복 후, 프로그램 종료.
  • 실행하는 방식이 while문과 비슷함.

  • for문 사용 예시

    • 초기값마지막값이 결정되어 있는 경우

✍️ for문으로 구간 합 구하기(실습)

⌨️ coding ⤵️

int sum = 0;
Scanner input = new Scanner(System.in);

System.out.println("합계를 구할 숫자 구간을 입력하세요.");
int startNum = input.nextInt();
int lastNum = input.nextInt();

for (int num = startNum; num <= lastNum; num++) {
	sum += num;
}

	System.out.println(startNum + " ~ " + lastNum + "합은 " + sum);
}

4️⃣ for 문의 특이한 형태

  • for문에서 증감 단위가 소숫점이 경우도 사용 가능함
    • 실무 코딩에서는 비추천 ➡️ 실수 연산은 오차가 발생하기 때문임.

💡 : 꼭 사용해야 한다면 , 정수로 형변환하여 for문에 사용한 후 마지막에 정수를 실수로 형변환

✍️ for문`에서 소숫점 단위 증감 실습(실습)

⌨️ coding ⤵️

	float fSum = 0.0f;

	for (float i = 0.01f; i <= 1.0f; i += 0.01f) {
		fSum += i;
	}
    
	System.out.println("fSum = " + fSum);

	double dSum = 0.0;
	for (double i = 0.01; i <= 1.0; i += 0.01) {
		dSum += i;
	}
    
	System.out.println("dSum = " + dSum);


5️⃣ 중첩 반복문

🔍중첩 반복문이란?

  • for{ for{ } } 형태

  • 반복문이 다른 반복문을 내포하는 구조.

    • 이론적으로는 몇 번이고 중첩 반복 가능.

    • 너무 많은 중첩 반복은 프로그램 구조를 복잡하게 함.

💡 전체 실행 횟수가 주는 영향

  • 3개 이상의 중첩 for문을 사용하면 프로그램 속도를 저하시킬 수 있음.
  • 실무적으로 가급적 사용하지 말 것.
    ex) 10*10*10 --> 1000번
    🧑🏻‍🏫 : "어쩔 수 없이 사용해야 한다면, 반드시 전체 반복 횟수를 확인하고 사용하세요."

✍️ 구구단 출력하기(실습)

⌨️ coding ⤵️

System.out.println("구구단은 다음과 같다.");

		for (int dan = 2; dan <= 9; dan++) {
			System.out.println(dan + "단 출력값");
			for (int num = 1; num <= 9; num++) {
				System.out.println(dan + "*" + num + "=" + (dan * num));
			}
			System.out.println();
		}

💡 println, print의 차이

  • println에서 'ln'은 'line'을 의미함.
    • 'ln'이 붙으면 다음 줄 넘김 실행.
for (int i = 0; i < 5; i++) {
			int j = 0;
			while (j < i) {
				System.out.print(j + " "); 
				j++;
			}
			System.out.println();
		}

✍️ while문 안에 for문이 있는 경우(실습)

⌨️ coding ⤵️

int i = 0;

		while (i < 5) {
			// j는 0부터 , 1보다 크면 ,j 출력 후 j에서 -1 증감 ~
			for (int j = i; j > 1; j--) {
				System.out.print(j + " ");
			}
			System.out.println("*********************");
			i++;

		}



✍️ do -while문 안에 for문이 있는 경우(실습)

⌨️ coding ⤵️

int i = 1;

		do {
			int num = 1;
			for (int j = 1; j <= i; j++) {
				System.out.print(num + "G");
				num += 2;	// num = num +2;
			}
			System.out.println();
			i++;
		} while (i <= 5);

6️⃣ break문

  • for문, while문, do-while문을 반복을 종료시킴.

    • switch문은 프로그램을 종료시킴.
  • break문사용 예시

    • 음식자동주문기계, 커피 자판기 처럼 무한 반복하여 주문을 받는 프로그램 에러 상황에 사용함.
int error =0;		// 기계에서 발생한 에러
if (error !=0) {	// 기게어서 에러가 발생하면
	break;			// 종료
}

✍️ while문 if문에 break사용하기(실습)

⌨️ coding ⤵️

int num = 0;
		
		while (num != 6) {	// 무한 루프
			num = (int) (Math.random() * 6 + 1); // 1,2,3,4,5,6 중에 랜덤
			System.out.println("주사위번호 =" + num);
			}
		
//---------------------------------------------------------------
		
		// break 사용하기.
		while (true) {	// 무한 루프
			num = (int) (Math.random() * 6 + 1); // 1,2,3,4,5,6 중에 랜덤
			System.out.println("주사위번호 =" + num);
			if (num == 1) { // 조건식 역할
				break;
			}
		}

		System.out.println("주사위 게임 종료.");
       

✍️ '-1'이 입력될 때까지 입력된 숫자의 개수 출력(실습)

⌨️ coding ⤵️

Scanner in = new Scanner(System.in);
		int num = 0;

		while (true) { // 무한 루프
			if (in.nextInt() == -1)
				break;
			num++;
		}

		System.out.println("입력된 숫자 개수는 " + num);

7️⃣ continue 문

  • for문, while문, do-while문에서 사용함.

    • for문에서는 증감식으로 이동함.
    • while문 do -while문 조건식으로 이동함.

✍️ 1부터 10까지 짝수의 합(실습)

⌨️ coding ⤵️

int sum = 0;

	for (int i = 1; i <= 10; i++) {
		if (i % 2 != 0) {	// 홀수인 경우
			continue;
		}
		sum += i;
	}
    
System.out.println("1~10 사이의  짝수의 합 = " + sum);
profile
그냥 은근슬쩍 살다 가긴 싫어

0개의 댓글