ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 010. 실행 흐름의 컨트롤(반복문) while, do~while, for + while문 실습
    SsY/Class 2023. 2. 23. 00:38
    728x90

    2023.02.07 (화)

    실행흐름의 컨트롤 
    - 반복문 : while, do~while, for
    • 반복문의 개요
      - 주어진 조건이 『참』인 경우, 일정한 영역의 문장을 반복해서 수행하다가
        조건식이 거짓이 되는 순간이 오면, 반복 수행을 중단하는 문장이다.
        이러한 반복문에는 『while』,『do~while』,『for』문 등이 있으며
        반복의 제어를 위해 『break』,『continue』등을 사용하는 경우가 있다.
    ※ \while, do~while, for 문은 반복된다는 공통점은 있으나 각 특징에 맞게 사용하는 편
       (단, 전부 호환하여 수식 작성은 가능함)
    ※ 반복문 내에서 반복문을 제어하는 변수를 Loop 변수라고 한다.

    • while 문
      - 조건식을 먼저 비교하여 조건식의 처리 결과가 참인 경우,
        특정 영역을 반복 수행하는 문장으로 반복 횟수가 정해져 있지 않은 경우나 반복 횟수가 많은 경우 주로 사용한다.
        while 문은 조건이 맞지 않은 경우 반복은 커녕 단 한 번도 실행되지 않을 수 있다.
    // while 문의 형식 및 구조
    
    	while (조건식)
    	{
    		실행문;
    	}

    • Test044
      - 반복문 실습 및 관찰
      - while문
    더보기

     

    public class Test044
    {
    	public static void main(String[] args)
    	{
    		/*
    		int n=0;
    		while (n<=10)
    		{
    			System.out.println("n=" + n);
    			n++;
    		}
    		*/
    		
    		/*
    		int n = 0;
    		while (n<=10)
    		{
    			n++;
    			System.out.println("n = " + n);
    		}
    		*/
    		
    		/*
    		int n = 0;
    		while (n<=10)
    		{
    			System.out.println("n = " + ++n);
    		}
    		*/
    
    		/*
    		int n = 0;
    		while (n++<=10)
    		{
    			System.out.println("n = " + n);
    		}
    		// 예측 결과  n = 1 ~ n = 11 까지 표현		// (O)
    		*/
    		
    
    		int n=1, res=0;
    
    		while (n<=100)
    		{
    			res += n;
    			n++;
    		}
    
    		System.out.println("1 부터 100 까지의 합 : " + res);
    		*/
    		// 실행 결과
    		/*
    		1 부터 100 까지의 합 : 5050
    		계속하려면 아무 키나 누르십시오 . . .
    		*/
    
    		// 문제 인식 및 분석
    		//	1. 출력 구문이 반복문의 영역 밖에 위치해야한다.
    		//	2. 1부터 1씩 증가할 변수와 누적합을 담을 변수
    		//		두개의 변수가 필요하다.
    
    		// 1 부터 차례로 담아 1씩 증가하는 변수 선언 및 초기화
    		//1int n=1;
    
    		// 누적합을 계산하여 담아낼 변수 선언 및 초기화 check!
    		int sum=0;
    
    		//연산 및 처리(반복문 구성)
    		//while (n<=100)
    		//{
    		//	sum += n;
    		//	n++;
    		//}
    		int n=0;
    		while (n<100)
    		{
    			n++;
    			sum += n;
    		}
    
    		System.out.println("1 부터 100까지의 합 : " +sum);
    		//--==>> 1 부터 100 까지의 합 : 5050
    	}
    }
    
    // 실행결과
    
    /*
    1 부터 100까지의 합 : 5050
    계속하려면 아무 키나 누르십시오 . . .
    */

    • Test045
      - 반복문 실습 및 관찰
      - while 문
    더보기
    /*================================================
    	 ■■■ 실행 흐름의 컨트롤 (제어문) ■■■
    	   - 반복문 실습 및 관찰
    =================================================*/
    
    // 1 부터 100까지의 정수 중에서
    // 짝수들의 합을 계산하여 결과값을 출력하는 프로그램을 구현한다.
    // 단, 조건문을 사용하지 않도록하며,
    // while 반복문을 활용하여 처리할 수 있도록 한다.
    
    // 실행 예)
    // 1 부터 100 까지의 수 중 짝수의 합 : xxxx
    // 계속하려면 아무 키나....
    
    // ※ 문제 인식 및 분석
    //		2 + 4+ 6 + 8 + ...+ 100
    //		-초기값 : 2
    //		-증가값 : 2
    //		-한계값 : 100
    
    public class Test045
    {
    	public static void main(String[] args)
    	{	
    		/*---------------------------------------------------------------------풀이1
    		int n=0, sum=0;
    		
    		while (n <100)
    		{
    			n += 2;
    			sum += n;
    		}
    
    		System.out.println("1 부터 100 까지의 수 중 짝수의 합 : " + sum);
    		*/
    		/*---------------------------------------------------------------------풀이2
    
    		//주요 변수 선언 및 초기화
    		int n = 2;
    		int sum = 0;
    
    		//연산 처리
    		while (n<=100)
    		{
    			sum += n;			// sum 값을 n 만큼 증가
    			n += 2;				// n 값을 2 만큼 증가
    		}
    
    		//결과 출력
    		System.out.println("1 부터 100까지의 수 중 짝수의 합 : " + sum);
    		//--==>> 1 부터 100까지의 수 중 짝수의 합 : 2550
    	}
    }

    • Test046
      - 반복문 (while문) 실습
    더보기
    /*================================================
    	 ■■■ 실행 흐름의 컨트롤 (제어문) ■■■
    	   - 반복문(while문) 실습
    =================================================*/
    
    // 1 부터 100까지의 정수 중에서
    // 짝수들의 합과 홀수들의 합을 따로 구분하여 계산한다.
    // 그리고, 결과 값을 출력하는 프로그램을 구현한다.
    // 단, 반복문은 while 반복문을 사용할 수 있도록 하며,
    // 조건 구문은 if 조건문을 사용하여 작성할 수 있도록 한다.
    
    // 실행 예)
    // 1 부터 100까지의 정수 중
    // 짝수의 합 : xxxx
    // 홀수의 합 : xxxx
    // 계속하려면 아무 키나 누르세요...
    
    // ※ 리소스 check					// 반복문을 따로 쓰지 않고 한 번에 구성해서 해결!
    
    public class Test046
    {
    	public static void main(String[] args)
    	{
    		// 주요 변수 선언
    			int n=1;			// 1 부터 100까지 1씩 증가할 변수
    			int even=0;			// 짝수들의 누적합을 담아낼 변수
    			int odd=0;			// 홀수들의 누적합을 담아낼 변수
    
    
    		// 연산 및 처리
    
    		while (n<=100)
    		{
    			if (n%2==0)		// n 이 짝수일 경우
    				even += n;
    			else if (n%2!=0)		// n 이 홀수일 경우
    				odd += n;
    			else
    			{
    				System.out.println("판별 불가 데이터");
    				return;		// 1. 값의 반환
    							// 2. 메소드 종료 → main()메소드 종료 → 프로그램 종료
    			}
    			n++;			// 반복의 조건을 무너뜨리게 되는 코드
    		}
    
    		// 결과 출력
    		System.out.println("1 부터 100 까지의 정수 중");
    		System.out.println("짝수의 합 : " + even);
    		System.out.println("홀수의 합 : " + odd);
    
    	}
    }
    
    // 실행결과
    
    /*
    1 부터 100 까지의 정수 중
    짝수의 합 : 2550
    홀수의 합 : 2500
    계속하려면 아무 키나 누르십시오 . . .
    */

    • Test047
      - 반복문(while문) 실습
    더보기
    /*================================================
    	 ■■■ 실행 흐름의 컨트롤 (제어문) ■■■
    	   - 반복문(while문) 실습
    =================================================*/
    
    // 실행 예)
    // 1부터 100까지 정수의 합 : xxxx
    // 1부터 100까지 짝수의 합 : xxxx
    // 1부터 100까지 홀수의 합 : xxxx
    // 계속하려면 아무 키나 누르세요...
    
    public class Test047
    {
    	public static void main(String[] args)
    	{
    		// 주요 변수 선언 및 초기화
    		int n=1, sum, even, odd;		// 루프변수, 정수의 합, 짝수의 합 , 홀수의 합
    		sum=even=odd=0;
    
    		// 연산 및 처리(반복문 구성)
    		while (n<=100)
    		{
    			sum += n;
    
    			if (n%2==0)
    			{
    				even +=n;
    			}
    			else if (n%2!=0)
    			{
    				odd +=n;
    			}
    			else
    			{
    				System.out.println("판별 불가 데이터");
    				return;
    			}
    
    			n++;
    
    		}
    		// 결과 출력
    		System.out.println("1부터 100까지 정수의 합은 : " + sum);
    		System.out.println("1부터 100까지 짝수의 합은 : " + even);
    		System.out.println("1부터 100까지 홀수의 합은 : " + odd);
    	}
    }
    
    // 실행 결과
    
    /*
    1부터 100까지 정수의 합은 : 5050
    1부터 100까지 짝수의 합은 : 2550
    1부터 100까지 홀수의 합은 : 2500
    계속하려면 아무 키나 누르십시오 . . .
    */

    • Test048
      - 반복문(while문) 실습
    더보기
    /*================================================
    	 ■■■ 실행 흐름의 컨트롤 (제어문) ■■■
    	   - 반복문(while문) 실습
    =================================================*/
    
    // 1부터 100까지 정수의 합을 구하되...
    // 10의 배수가 될 때 마다...
    // 결과를 출력하는 프로그램을 구현한다.
    
    // 실행 예
    // 1~10까지의 합 : xx
    // 1~20까지의 합 : xxx
    // 1~30까지의 합 : xxx
    //		:
    // 1~100까지의 합 : xxxx
    // 계속하려면 아무 키나 누르세요...
    
    public class Test048
    {
    	public static void main(String[] args)
    	{
    		// 주요 변수 선언
    		int n=1, sum=0;		//-n → 1부터 1씩 증가할 변수
    							//-sum → 누적합을 담아낼 변수
    
    		while (n<=100)						// 1 2 3 4 .... 100 → 100번 반복
    		{
    			sum += n;						// sum을 n 만큼 증가
    
    			//조건에 만족할 경우에만 출력할 수 있도록 코드 구성
    			if (n%10==0)		//-- n이 10의 배수일 때...
    			{
    				//System.out.println("n : " + n + ", sum : " + sum);
    				System.out.printf("1 ~ %d 까지의 합 : %d\n ", n, sum);
    			}
    			n++;					// n을 1만큼 증가
    		}
    	}
    }
    
    // 실행 결과
    
    /*
    1~10까지의 합 : 55
    1~20까지의 합 : 210
    1~30까지의 합 : 465
    1~40까지의 합 : 820
    1~50까지의 합 : 1275
    1~60까지의 합 : 1830
    1~70까지의 합 : 2485
    1~80까지의 합 : 3240
    1~90까지의 합 : 4095
    1~100까지의 합 : 5050
    계속하려면 아무 키나 누르십시오 . . .
    */

    • Test049
      - 반복문(while문) 실습
    더보기
    /*================================================
    	 ■■■ 실행 흐름의 컨트롤 (제어문) ■■■
    	   - 반복문(while문) 실습
    =================================================*/
    
    // 1/2 + 2/3 + 3/4 + 4/5 + ... + 9/10
    // 의 연산 처리 결과를 출력하는 프로그램을 구현한다.
    // 단, 반복문을 활용하여 처리한다.
    
    // 실행 예)
    // 연산 결과 : xxxx				//-- 형태???
    // 계속하려면 아무 키나 누르세요...
    
    // n (1~9)
    // :
    // 1/2 + 2/3 + ... + 9/10
    //   :
    //  n+1
    
    // n-1
    // :
    // 1/2 + 2/3 + ... + 9/10
    //   :
    //   n (2~10)
    
    public class Test049
    {
    	public static void main(String[] args)
    	{
    		// 주요 변수 선언 및 초기화
    		int n=0;		// 1 부터 1씩 증가하게 될 변수
    		//int sum=0;
    		double sum = 0;		// 누적합을 담아낼 변수 (실수형태로 처리)
    
    		// 연산 및 처리 (반복문 구성)
    		 while (n<9) // 0 1 2 3 4 5 6 7 8 
    		 {
    			 //증감식 구성
    			 //-- 최종적으로 반복문의 조건을 무너뜨리게 되는 열쇠가 되는 구문
    			 n++; //--  2 3 4 5 6 7 8 9
    
    			 sum += (double)n/(n+1);
    			 // 1.0/2	2.0/3	...	9.0/10
    			 // 정수 기반 나눗셈 연산은 정수 형태의 몫을 반환하기 때문에,
    			 // 실수 기반 연산을 수행할 수 있도록 처리하기 위해서
    			 // 나눗셈 연산자를 중심으로 피연산자 중 하나를
    			 // 실수 형태로 만들어주는 것이 중요하다.
    		 }
    
    		 // 결과 출력
    		 //System.out.printf("연산 결과 : %f\n", sum);
    		 System.out.println("연산 결과 : " + sum);
    	}
    }
    
    //실행결과
    /*
    연산 결과 : 7.071031746031746
    계속하려면 아무 키나 누르십시오 . . .
    */

    • Test050
      - 반복문(while문) 실습
    더보기
    /*================================================
    	 ■■■ 실행 흐름의 컨트롤 (제어문) ■■■
    	   - 반복문(while문) 실습
    =================================================*/
    
    // 반복문을 활용하여 누적곱 연산 수행
    // cf) 반복문을 활용하여 누적합 연산 수행
    
    // 1 * 2 * 3 * ... * 9 * 10
    // 의 연산 결과를 출력하는 프로그램을 구현한다.
    
    // 실행 예)
    // 연산 결과 : xxxxxx
    // 계속하려면 아무 키나 누르세요..
    
    public class Test050
    {
    	public static void main(String[] args)
    	{
    		// 주요 변수 선언 및 초기화
    		int n=0;		// 루프변수
    		//int res=0;		// 누적 곱을 담을 변수
    		int res = 1;		// check!				// 누적곱의 경우 → 1로 초기화 하는 것이 일반적!
    
    		// 연산 및 처리(반복문 구성)
    		while (n<10)
    		{
    			n++;
    			res *= n;
    		}
    
    		// 결과 출력
    		System.out.prtinln("연산 결과 : " + res);
    	}
    }
    
    // 실행 결과
    /*
    연산 결과 : 3628800
    계속하려면 아무 키나 누르십시오 . . .
    */

     

    // 개인적 감상

    더보기

    반복문 3가지를 배웠는데 그 중에서도 처음 배우는 while 문을 가장 많이 사용하고 do~while문은 조건에 맞게 사용하는데 초반에는 for 문이 가장 활용하기 어렵게 느껴진다고 한다. 

    while 문에 익숙해지기 위해서 반복해서 간단한 문제들을 풀어봤는데, 같은 문제에서도 어떻게 기준을 잡느냐에 따라서도 다양한 풀이법이 가능했다. 

    반복문처럼 계속 반복해서 풀다 보면 어떻게 문제를 파악해서 구조를 봐야하는지 점점 활용하는 방법이 늘어난다고 하셨고, 실제로도 한 문제 풀고 넘어가는게 아닌 다양한 방식으로 접하다보니 감을 더 잡을 수 있는 것 같다.

    728x90
Designed by planet-si