본문 바로가기

ITスクール(2023.07.04~)/Java(2023.07.04~)

ITスクール 7日目 制御文/ 二重for文/ 累積アルゴリズム

パスカル:DoWhile

キャメル:doWhile

 

do~ while

 

制御変数;

do{

 

   true_反復対象;

   制御変数 増減式

 

} while(制御変数_条件式);

 

必ず一度は反復対象を反復する。

 

i = 100;

do {

System.out.printf("%d x %d = %d\n" , val, i, val*i);

i++;

}

 

while(i<=9);

 

 

 

7 x 100 = 700

falseでも、trueでも一度はループする。

 

それなら、なぜ使用するか?

 

主に、メニュー画面を使用する時、使われる。

 

 

for (回数的に明確な際に活用)

    初期値       最後の値    増減値

for(制御変数初期化  ; 制御変数の条件式 ; 増減式){

 

      true_反復対象;   

 

 

 

 

 

上で初期化する場合もある。

 

 

for(; 制御変数の条件式 ; 増減式){

 

      true_反復対象;   

 

 

 

for(;  ; 増減式){

 

      true_反復対象;   

 

 

package oop20230713;

 

public class For1 {

 

     public static void main(String[] args) {

//7단 구구단 출력하기(곱셈 수식 9회 출력)

     int i;

      int val = 7;

 

      for(i=1; ; ) {

        System.out.printf("%d x %d = %d\n" , val, i, val*i); //반복대상

      }

    }

}

 

 

7 x 1 = 7

.

.

.

 

7 x 1 = 7

7 x 1 = 7

 

「いつも遂行しろ。」という意味だ。(無限ループ)

 

 

 

 

 

累積アルゴリズム

累積する変数を指定し、必ず0もしくは1に初期化する。

そのあと、増減演算子を活用する。

 

// 프로그래밍 기초 알고리즘 : 갯수와 누적

// (1) 1(이상) ~ 10(이하)의 짝수의 갯수 출력

  int count = 0;

 

  for(int i = 1; i<=10; i++) {

    if(i%2 ==0) {

    count++;

   }

  }

 System.out.println("1~10 사이의 짝수의 갯수 : " + count);

 System.out.println();

 

1~10 사이의 짝수의 갯수 : 5

カウントする回数を増減式に表現。

 

// (2) 1 ~ 100(이하) 사이의 홀수와 짝수의 합계

 

   int oddSum = 0;

   int evenSum= 0;

 

   for(int i = 1; i<=100; i++) {

   if(i%2 == 1) {

    oddSum += i;

      }

    else

   evenSum += i;

  }

 

  System.out.println("홀수의 합 : " +oddSum);

  System.out.println("짝수의 합 : " +evenSum);

 

   System.out.println();

//(3) 1 ~ 5 (이하) 사이의 정수의 누적 곱셈의 결과

   int result = 1;

 

   for(int i =1; i<=5; i++) {

   result *= i;

  }

 

   System.out.println("1~5 사이의 정수의 누적 곱셈 : " + result);

 

 

//(4) 누적 곱셈(누승) -> 팩토리얼 : 5! = 5*4*3*2*1 = 1*2*3*4*5 = 120

 

  int fac = 1;

  for(int n =5; n>=1; n--) {

  fac *= n;

 }

 

 System.out.println();

 System.out.println("5! : " + fac);

//(5) for문 1개를 이용하여 다음과 같이 출력하기

  System.out.println(); //줄바꿈(개형, newline)

  System.out.printf("\n"); //줄바꿈(개형, newline)

 

   int cnt =0;

 

   for(char ch = 'A'; ch <= 'Z'; ch++) {

   System.out.print(ch);

   cnt++;

   if(cnt%5 ==0) {

   System.out.println();

   }

}

//(6) 2023년 윤년 판단(윤년일까요?)

// 2023년 : 평년(2월 28일)

// 2024년 : 윤년(2월 29일)

 

  int year = 2024 ;

 

  if((year %4 ==0) && (year % 100 !=0)||( year % 400 ==0)) {   

   System.out.println("윤년입니다.");

  }

 

  else {

  System.out.println("평년입니다.");

  }

 

윤년입니다.

 

//연산의 우선 순위를 잘 정해야한다.

 

 

//(7) 서기 1년 ~ 2023년까지(이하) 사이의 윤년의(번, 개) 출력

  int leapYear = 0;

  for(int i=1; i <= 2023; i++) {

  if((i %4 ==0) && (i % 100 !=0)||( i % 400 ==0)) {

  leapYear++;

   }

}

 

  System.out.println("서기 1년 ~ 2023년까지(이하) 사이의 윤년은 " + leapYear + "번 입니다." );