자바의정석 ch4

soso·2023년 2월 10일
0
post-thumbnail

Chapter4 조건문과 반복문

프로그램의 흐름(Fom)을 바꾸는 역할을 하는 문장들을 '제어문(control statement)이라고 한다.
제어문에는 조건문 반복문이 있다

조건문: 조건에 따라 다른 문장이 수 행되도록 한다
반복문: 특정 문장들을 반복해서 수행한다.

if문

조건식이 참(true)일때 , 괄호{} 안의 문장들을 수행한다.

if(조건식){

	//조건식이 참(true)일 때 수행될 문장.
}

블럭{}

괄호{}를 이용해서 여러 문장을 하나의 단위로 묶을수있다.
'}'다음에 문장의 끝을 의미하는 ';'를 붙이지 않는다.

블럭들의 문장은 들여 쓰기를 해서 블럭 안에 속한 문장이라는 것으 알기 쉽게 해주는 것이 좋다.

if-else문

둘 중의 하나 - 조건이 참일때 거짓일 때로 나눠서 처리한다.

if(조건식) {
	//조건식이 참(true)일 때 수행될 문장.
}else{
	// 조건식이 거짓(false)일 때 수행될 문장.
 }

조건식의 결과에 따라 이 두 개의 블럭{} 중 어느 한 블럭{}의 내용이 수행되고 전체 if문을 벗어나게 된다.

if-else if문

여러개 중 하나 - 여러 개의 조건식을 포함한 조건식

if(조건식1){
	//조건식1의 연산결과가 참일 때 수행될 문장.
} else if (조건식2){
	//조건식2의 연산결과가 참일 때 수행될 문장.
} else if (조건식3){ // 여러개의 else if를 사용할 수 있다.
	//조건식3의 연산결과가 참일 때 수행될 문장.
} else{	// 마지막은 보통 else블럭으로 끝나며, else블럭은 생략가능하다.
	// 위의 어느 조건식도 만족하지 않을때 수행될 문장.
}	

중첩if문 (if문 안의 if)

if문의 블럭 내에 또 다른 if문을 포함시키는 것이 가능하다.
이것을 중첩 if문이라 부르며 중첩 횟수에는 거의 제한이 없다.

if (조건식1) {
	//조건식1의 연산결과가 true일때 수행될 문장들을 적은다
if(조건식2) {
} else {
	// 조건식1이 true이고, 조건식2가 false일때 수행되는 문장들
}
} else{
	조건식1이 false일때 수행되는 문장
}

switch문

처리해야 하는 경우의 수가 많을 때 유용한 조건문이다.
다만

switch(조건식1) {
	case 값1 :
	// 조건식의 결과가 값1과 같을 경우 수행될 문장들
	break;
	
	case 값2 :
	// 조건식의 결과가 값2과 같을 경우 수행될 문장들
	break; 	//switch문을 벗어난다.
	
	default :
	// 조건식의 결과와 일치하는 case문이 없을 때 수행될 문장들
}
  1. 조건을 계산한다.
  2. 조건식의 결과와 일치하는 case문으로 이동한다.
  3. 이후의 문장들을 수행한다.
  4. break문이나 switch문의 끝나면 switch문 전체를 빠져나간다.

switch문의 제약조건

  • switch문의 조선식 결과는 정수 또는 문자열이어야 한다.
  • case문의 값은 정수 상수(문자열포함), 문자열만 가능하며, 중복되지 않아야 한다.

임의의 정수 만들기 Math.random()

난수(임의의 수)를 얻기 위햐서는 Math.random()을 사용한다.
0.0과 1.0사이의 임의의 double값을 반환한다.
0.0 <= Math.random() < 1.0

for문

반복문은 반복적으로 수행되도록 할 때 사용된다.
반복문의 종류로는 for문과 while문, do-while문이 있다.

조건을 만족하는동안 블럭{}을 반복하고 반복횟수를 알 때 적합하다.

for(초기화; 조건식; 증감식{
	// 조건식이 참(true)인 동안 수행될 문장.
}

초기화
반복문에 사용될 변수를 초기화하는 부분이며 처음 한번만 수행된다.

조건식
조건식의 값이 참(true)이면 계속 반복, 거짓(false)이면 중단하고 for문을 벗어난다.

증감식
반복문을 제어하는 변수의 값을 증가 또는 감소시키는 식이다.
매 반복마다 변수의 값이 증감식에 의해 점진적으로 변하다가 조건식이거짓(false)이 되면 for문을 벗어난다.

중첩 for문

for문 안에 또 다른 for문을 포함시키는 것. 중첩 횟수는 거의 제한이 없다.

별찍기 예제 

for(int i=1;i<=5;i++) {
	for(int j=1;j<=i;j++) {
		System.out.print("*");
	}
	System.out.println();
	}

while문

조건식과 블럭{}으로 이루어져있다.
조건을 만족시키는 동안 블럭{}을 반복한다. - 반복횟수 모를때

while(조건식){
	// 조건식의 연산결과가 참(true)인동안,  반복될 문장들을 적는다.
}
  1. 조건식이 참(true)아묜 {}안으로 들어가고, 거짓(false)이면 while문을 벗어난다.
  2. 불럭{}의 문장을 수행하고 다시 조건식으로 돌아간다.

do-while문

do-while문 while문의 변형으로 기본적인 구조는 while문과 같지만
조건식과 블럭의 순서를 바꿔놓은 것이다.

블럭{}을 최소한 한 번 이상 반복한다. 사용자 입력을받을때 유용하다.

do{
	//조건식의 연산결과가 참일 때 수행될 문장들을 적는다. (처음 한 번은 무조건 실행)
} while(조건식); ← 끝에 ';'을 잊지말자

break문

자신이 포함된 가장 가까운 반복문을 벗어난다.
주로 if문과 함께 사용되어 특정 조건을 만족할 때 반복문을 벗어나게 한다.

continue문

반복문 내에서만 사용될 수 있다.
반복이 진행되는 도중에 continue문을 만나면 자신이 포함된 반복문의 끝으로 이동하여 다음반복문으로 넘어간다.

continue은 반복문 전체를 벗어나지 않고 다음 반복을 계속 수행한다는 점이 break문과 다르다.

전체 반복문 중에서 특정 조건시 반복을 건너뛸 때 유용하다.

이름붙은 반복문

반복문에 이름을 붙여서 하나 이상의 반복문을 벗어날 수 있다.

예제 4-19
      // for문에 Loop1이라는 이름을 붙였다.
		Loop1 : for(int i=2;i <=9;i++) {	
				for(int j=1;j <=9;j++) {
					if(j==5)
						break Loop1;
                       // continue Loop1;
					System.out.println(i+"*"+ j +"="+ i*j);
				} // end of for i
				System.out.println();
		} // end of Loop1
profile
오늘의 기록

0개의 댓글