코딩

Day 04 기초자바 - 자바의 조건문if 와 반복문for

Ledlaputa 2019. 12. 19. 00:43

지난 시간에 자바 프로그램을 하기 위한 변수와 자료형 그리고 연산자에 대해서 학습 하였다. 

오늘은 대망의 조건문과 반복문에 대해서 알아볼까 한다. 

 

 

프로그래밍에서 조건문과 반복문은 매우 중요한 문법이다. 지난 시간에 배운 변수와 자료형 그리고 연산자에 이번 시간에 배울 조건문과 반복문만 잘 이해하고 응용한다고 해도 이전과 다른 나를 발견할 수 있을 것이다. 

 

프로그래밍 자체가 반복되는 작업을 자동화 하기 위한 것에서 시작했다고 해도 과언이 아닌것 처럼, 상당히 많은 작업들은 지루한 반복작업을 해결하는데 사용되고 있다. 본인도 오랜 기간동안 엑셀 프로그램을 사용해 왔으나 프로그래밍을 배우기 이전에는 엑셀에서 제공하는  VBA(비주얼 베이직)을 사용하지는 못하였다. 하지만 프로그래밍을 배운 이후에는 VBA를 활용해 반복 작업을 처리할 수 있게 되었다. 

여기에서 주로 사용되는 문법이 바로 조건문 IF와 반복문 FOR이다. 물론 자바와 비주얼 베이직의 문법은 차이가 있다. 하지만 같은 개념인지라 잠깐만 구글에서 비주얼 베이직 문법을 살펴보고는 바로 이용할 수 있었다. 

 

그렇다 바로 이런 부분이 프로그래밍을 배울때 오는 힘이다. 자바를 통해 배운 프로그래밍이지만 그 개념이 확실히 이해되면 다른 언어에서의 사용도 어렵지 않다는 것이다. 

그럼 자바의 조건문 IF와 반복문 FOR에 대해서 배워 보도록하자 

 


1.조건문 

IF 문은 조건을 지정하고 해당 조건에 부합하면 해당 처리를 하고 그렇지 않으면 IF문을 종료하거나 그렇지 다른 조건 이외의 상황을 처리하게 된다. IF 조건문은 편의상 1형식과 2형식으로 나누어 살펴 볼 수 있다. 

 

IF 1형식 

if 1형식은 조건에 해당하는 부분만 처리하고 그렇지 않은 경우 조건문에서 빠져나온다. 

if(조건)

{

yes; // yes일때 처리 

}

// no일때 그냥 빠져 나옴 

 

if 메소드(함수): head,body로 구성

  • Head : if(조건)
  • Body : { } 
  • 문장 : statement(STMT) { 안에 문장이 들어감 }
  • 조건(Head)을 물어봐서 Body안의 문장을 실행하고, 아니면 빠져나와서 실행한다. 

 

예제) if 1 형식

 if(aa>3)
           {
                System.out.println("aa가 3보다 크다 ");
           }

 

IF 2 형식

if 2형식은 else가 추가된 형식으로 if조건이 맞을 때는 yes 구문을 그렇지 않을 경우에는 no구문을 실행하게 된다. 

 

if(조건) 

	{
		yes; // yes 일때 처리  
	}
    
else

	{
		no; // no일때 처리 
	}

else 추가

  • else : if(조건)이 아닐때 실행 

 

예제) if 2형식

  if(bb>3)

           {

                System.out.println("bb가 3보다 크다 ");

           }

           else

           {

                System.out.println("bb가 3보다 작다");

           }

연습문제 

문제1) 201이 3의 배수냐? 

           int cc = 210;

           if(cc%3==0) {

                System.out.println("3의 배수이다");

           } // 여기서 끝나면 if 1형식이 된다. 

           else

           {

                System.out.println("3의 배수가 아니다 ");

           }

결과 

참고) {}는 한문장일 때는 생략 가능하다. (두줄일 때는 생략이 불가능하다) 

           if(cc%3==0)

                System.out.println("3의 배수이다");

           else

                System.out.println("3의 배수가 아니다 ");

문제 2) BMI 계산 식을 만드시오 (단 몸무게와 키를 입력 받으세요) 

  • 30이상 비만
  • 25~30 과체중
  • 20~25 보통
  • 20 미만 저체중
  • BMI 계산 공식 
             BMI공식 =  몸무게 / 미터키의 제곱

코드 

 Scanner bmiIn = new Scanner(System.in);

           System.out.println("당신의 몸무게를 입력하세요 : ");

           float bmi1= bmiIn.nextFloat();

           System.out.println("당신의 키를 미터로 입력하세요 ");

           float bmi2= bmiIn.nextFloat();

           float bmi = bmi1 / (bmi2*bmi2);

           System.out.println(bmi);
           

           if ( 30<= bmi) {

                System.out.println("비만입니다.");

           }

           else if (25 <= bmi && bmi < 30)

           {

                System.out.println("과체중입니다.");

           }

           else if(20 <= bmi && bmi < 25 )

           {

                System.out.println("정상입니다.");

           }

           else

           {

                System.out.println("저체중. ");

           }

 
     }

 

결과 

1형식으로도 표현이 가능하다 . 

           if ( 30.0 <= bmi)

                System.out.println("비만입니다.");


           if (25.0 <= bmi && bmi < 30.0)

                System.out.println("과체중입니다.");


           if (20.0 <= bmi && bmi < 25.0 )

                System.out.println("정상입니다.");


           if (bmi < 20.0)  

                System.out.println("저체중. ");

자바문법을 맞았느냐, 로직의 흐름에 잡았느냐에 따라 자바는 제대로 작동된다. 

 


다중 if / 중첩 if 

if~ else if ~ else if ~ else 형태로 구성된 if 2형식 

2형식 문장의 간결화 작업 

           if (30.0 <= bmi) 

                System.out.println("비만입니다.");

           else if (25.0 <= bmi) // && bmi < 30.0 생략 가능

                System.out.println("과체중입니다.");

           else if (20.0 <= bmi) // && bmi < 25.0 생략 가능 

                System.out.println("정상입니다.");

           else

                System.out.println("저체중. ");

이미 이전 if문에서 검증한 사항에 대해서는 중복 조건을 달지 않아도 된다. 

 

연습문제) 수를 입력받아 3의 배수만 "오예" 5의 배수면 "뭐야" 3과 5의 동시 배수면"앗싸"를 출력하시오

코드

           Scanner sc1 = new Scanner(System.in);

           System.out.println("수를 입력하세요 : ");

           int num= sc1.nextInt();
         

           if (num%3 == 0 && num%5 == 0)

                System.out.println("앗싸");

           else if (num%3 == 0)

                System.out.println("오예");

           else if (num%5 == 0)

                System.out.println("뭐야");   

결과 

 


2.반복문 

FOR 문

for문은 반복문에서 가장 많이 사용하게 되는 반복문이다. 특히 이후에 배울 배열과 함께 자주 사용하게 되는 중요한 문법이다. for문은 아래의 초기치, 목적, 증가치에 따라 반복을 하게 되면 {}문 안의 문장을 반복하게 된다. 

for (초기치; 목적; 증가치) {

     문장;

}

 

예제1 )  25번 반복해서 출력하기 연습

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

                System.out.println("왕복달리기"+i);

           }

결과 코드 

for문 이후에 System.out.println(i);를 실행하면 에러 발생 {}를 벗어나면 i는 파괴단다.

 

예제2) I love you 10번 출력하기 

코드

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

                System.out.println("I love you "+i);

           }

결과 

예제3)구구단 중 5단만 출력하시오 

코드

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

                     System.out.println("5*"+i+" = "+(5*i));

                }

결과

다양한 for의 사용 방법 

  • for (int i = 2; i <=100; i=i+2) : 2씩 건너 띄며 반복
  • for (int i=10; i>=1; i--) : 10에서 거꾸로 반복 
  • for ( ; ; ) : 무한루프(loop)

 

예제4) - 이중 for문을 사용하여 학년과 반을 출력하시오  

       1 - 1

       1 - 2

       2 - 1

       2 - 2

       3 - 1

       3 - 2 

코드 

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

                 System.out.println("===="+i+"학년 =====");

                 System.out.println("학년-반");

             for (int j = 1; j <= 2; j++) {

                  System.out.println(i+" - "+j);

             }

        }

결과 

이중 for문 사용시 주의 사항 

  • 안쪽으로 들어가는 변수는 빨리 변한는것 
  • 예제에서는 반이 우선으로 바뀌기 때문에 반에 해당하는 j를 i for문 안으로 넣어야 한다. 

 

예제5)  입력받은 임의의 단까지 구하는 문제 

코드 

           System.out.println("구구단");

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

           System.out.println("구구단 숫자를 입력하세요");

           Scanner sc1= new Scanner(System.in);

           int gugu=sc1.nextInt();
                     

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

                System.out.println("구구단 : "+i+"단 ");

                for (int j = 1; j <= 9; j++) {

                     System.out.println(i+"*"+j+"="+i*j);

                }

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

           }

문제풀이) 

구구단은 이중 for 문을 사용하면 된다. 

위의 코드 중 for (int i = 1; i <= gugu; i++) 에서 gugu를 9로 바꾸면 됨 


 

if조건문 과 for 반복은에 대해서 살펴 보았다. 위의 두가지이 외에도 조건문과 반복문이 존재하나 대표 조건문인 if 조건문과 for조건문에 대해서 확실히 학습을 하고 넘어갈 필요가 있다. 위에 다양한 예제를 다양한 방법으로 활용하여 연습한다면 좋을 것 같다. 

 

for문의 경우는 향후 배열과 사용도가 높으며, 이중 for 문의 경우는 일명 별그리기 예제를 통해 연습이 가능하다. 다음 시간에는 이중 for 문을 이용한 별 그리기 예제를 소개하겠다.