카테고리 없음

[패스트 캠퍼스 자바 완주반]4. 제어문

닉네임이 멋이 중헌디 2021. 2. 24. 19:55

Chapter 04 제어문 - 01 if 문.pdf
1.17MB
Chapter 04 제어문 - 02 switch-case 문.pdf
1.11MB
Chapter 04 제어문 - 03 for 문 , 중첩 반복문.pdf
0.98MB
Chapter 04 제어문 - 04 for 문, 중첩 반복문.pdf
1.16MB
Chapter 04 제어문 - 05 break 문, continue문.pdf
0.92MB
Chapter 04 제어문 - 06 코딩해보세요.pdf
0.82MB

제어문 

조건문: if(else), switch-case

반복문: while, do-while

 

1. 조건문

[if문]

:if (조건 : condition, expression 의 결과가 T,F 또는 변수) {

    조건이 해당되면 수행문1

 }

else{

      해당이 안 되면 수행문2

 }

=> {사이} 하나의 블록. 블록이 시작되면 들여쓰기해야 하고 중괄호를 꼭 넣어야 한다

      가독성을 생각해서!

=> else의 위치는 같은 줄이던 엔터를 치던 노상관

=> if/ else if / else 여러 개 가능

 

cf. 순서도: 코딩의 로직을 더 알기 쉽게 (조건식은 마름모, 수행문은 네모) 

 

ex. int age = 10

int charge = 0

if (age<8){

 charge = 1000;

} else if (age<14) {

charge = 2000;

} else {

charge = 3000;

}

 

=> if는 서로 배타적이지 않음. 성립해도 다음 조건 성립시 모두 해당됨.

그러므로 else를 넣으면 조건 만족 시 다음으로 넘어가지 않음.

 

cf. 입력받기

Scanner 변수이름 = new Scanner(System.in) => System.out은 출력 얘는 입력

int age = scanner.nextInt(); => 메서드. 사용하면 숫자를 긁어온다

 

 

[switch-case문]

if문에서 수행문인 

case가 여러개인 경우

정수, 문자열로 수행문의 값이 떨어지는 경우

 

char mealColor = 'A' (또는 그냥 자료형만 선언)

swtich(rank){

case 1 : medalColor = "G";

  break;  -> 감싸고 있는 중괄호를 빠져나가라/ 만약 쓰지 않으면 매치가 된 case 이후로 계속 수행을 한다.

case 2 : medalColor = "S";

  break;

case 3 : medalColor = "B";

  break;

default : medalColor = "A";  => default를 안 쓰면 error가 나니까 기본값을 지정해줘야 (char medalColor = 'A'라고 먼저 정의해놓는것)

}

 

System.out.println(rank + '등은' + medalColor + '메달입니다')

cf. scanner - 쳤을 때 뜨는 창 첫번째 import(ctrl shift O해도 나옴)

 

cf. 자바 7부터 문자열 사용 가능

case "Gold" :

    System.out.println("금메달");

    break

 

cf. 수행문이 같을 때 case1: case 3: case 5: case 7: case: 7

                                       day = 31;

                                       break;

하면 모두 해당 가능

 

cf. 만약 default 값을 설정할 필요 없으면 "error"를 프린트하게 해도 된다.

 

2.반복문

똑같은 명령 조건이 맞으면 여러번 (일정 횟수 등) 

 

[while문]  
조건이 참인 동안 수행문 반복 수행 
   int num = 1;
   int sum = 0; 
   while (num < = 10){
       sum += num; 
       num++; 
      }
=> sum = 55, num = 11으로 while문이 끝난다.
=> 조건식에 while(true)를 넣으면 무한루프

[do -while문]  
일단 수행문 수행하고 조건 체크. 


int num = 1;
   int sum = 0; 

do{
       sum += num; 
       num++; 
      } while (num < = 10)


[for문]

for

 

선언

(초기화; 조건식; 증감식){

출력

}

 

while은 초기화 미리 해줘야 (조건식, 수행문 중 할 수 없으니까)

 

선언, 초기화 동시에

(조건식 ){

증감식

}

 

for(;;) : 무한루프.  = while(true)

 

for (): 조건식, 초기화, 증감식 등 생략 가능할 때도 있음

 

System.out.println(); => 한 줄 띄우기

 

이중반복문 

구구단 만들기 for, while 

 

for문

for 

 

while문

이중 반복문

for는 초기화해서 구구단에서 count 10이 되어도 1로 다음 단에 초기화되어 들어감

하지만 while은 초기화를 따로 명시해주어야 다음 단으로 넘어갈 수 있음

 

[break문]

제어문은 아니고 함께 사용되는 특히 if문 
break문 
감싸고 있는 블록 제어 빠져나옴(하던 수행문 중지하고 외부로 빠져나가 실행.)
이중반복문이면 내부 반복문만 빠져나옴
반복문과 함께 쓰면 특정 조건일 때 반복 중지하는 기능 구현 가능. 

Ex. 
1부터 쭉 더하다가 100을 넘었을 때 
마지막으로 더한 수와 합 구하기 

 

cf. 지역변수의 가시성: 블록 안에서 선언했으면 밖에서 출력할 수 없음
이때 초기화, 조건식, 출력, 증감식 순으로 for문이 돌아가기 때문에 
더한 수가 1더 큰 15가 나옴(실제 답은 14, 105)

 

 

 

그러므로 조건식을 생략하고 sum +=num을 하고 
if sum>=100(조건식을 아래로 내린뒤) break;} =>증감식이 일어나기 전에 break하는 것 


continue문 
반복 수행 중 조건문과 조건이 맞는 경우 블록 내부의 다른 수행문 수행하지 않음
(조건이 맞으면 그 뒤 수행문은 전혀 하지 않고 넘어간다 )


Ex. 
100이하 3의 배수 출력
조건이 맞으면 아래 수행문이 일어나지 않고 계속 돌아감. 

3의 배수가 아니면 아래를 하지 않음. 

그러므로 3의 배수일 때만 출력. 

 

 

 

break, continue문 

짝수단만 그리고 곱하는 수가 단보다 작거나 같을 때만 구구단 출력 

 

Ex.