🦁

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

2023/07/13に公開

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


for


<基本型>

 //初期値        最後の値        増減値
for(制御変数初期化  ; 制御変数の条件式 ; 増減式){
      true_反復対象;   
}


<上からカウンター変数を初期化する型>

//上からカウンター変数を初期化する場合もある。
for(; 制御変数の条件式 ; 増減式){
      true_反復対象;   
}


<無限ループ>

for(;  ; 増減式){

      true_反復対象;   
}
 package oop20230713;
     public class For1 {
     public static void main(String[] args) {
     //7段の九九出力
     int i;
      int val = 7;
      for(i=1; ; ) {
        System.out.printf("%d x %d = %d\n" , val, i, val*i); //반복대상
      }
    }
} 
<result>
7 x 1 = 7
.
.
.
7 x 1 = 7
7 x 1 = 7

累積アルゴリズム(個数と累積)

累積する変数を指定し、必ず0(sum)もしくは1(multiple)に初期化する。
そのあと、増減演算子を活用する。

(1) 1以上~ 10以下の偶数の個数

  int count = 0;

  for(int i = 1; i<=10; i++) {
    if(i%2 ==0) {
    count++;
   }
  }
 System.out.println("result : " + count);
 System.out.println();
result : 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!=54321=12345

  int fac = 1;
  for(int n =5; n>=1; n--) {
   fac *= n;
 }
 System.out.println();
 System.out.println("5! : " + fac);

(5) for文を利用し、以下のように出力

ABCDE
FGHIJ
KLMNO
PQRST
UVWXY
Z
   int cnt =0;
   
   for(char ch = 'A'; ch <= 'Z'; ch++) {
     System.out.print(ch);
     cnt++;
      if(cnt%5 ==0) {
      System.out.println();
      }
   }

(6) 閏年(うるうどし)判断

  int year = 2024 ;
  if((year %4 ==0) && (year % 100 !=0)||( year % 400 ==0)) {   
     System.out.println("閏年");
  }
  else {
  System.out.println("平年");
  }

//result: 閏年
//演算の優先順位を正確に決める。

(7) 西暦1年~現在間の閏年の個数

  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年~現在までの閏年の回数は " + leapYear + "下位です。." );
  

Discussion