Java/Doit!자바프로그래밍입문_개념정리

Java 입문 기초 정리용_제어흐름 이해하기

김쟈워니 2024. 4. 26. 12:11
1.조건문
   -if 문
   -if - else 문
   -if - else - if - else 문
   -조건문과 조건연산자
   -switch-case 문
 2.반복문
   -while문
   -do-while 문
   -for문
   -중첨된 반복문

 

 

조건문
  • 주어진 조건에 따라 다른 수행문이 실행되도록 프로그래밍 하는 것
  • 조건식은 값이 true 나 false 로 나옴
    • 결과가 참,거짓으로 판별 되는 식 또는 참이나 거짓의 값을 가지고 있는 변수나 상수를 이용할 수 있음
  • if문
    • 조건문의 가장 단순한 형식
    • 주어진 조건식이 '참'일 경우에 중괄호 안에 있는 수행문을 수행
  • if문의 기본형식
if(조건식){
                  수행문;
}

 

  • if-else 문
    • 조건식을 만족하는 경우와 만족하지 않는 경우를 모두 나타낼 때 사용
    • 조건식이 '참'일 경우에 if 문 블록 안에 있는 수행문을 수행
    • '거짓'일 경우에는 else문 블록 안에 있는 수행문을 수행
    • else문에는 '조건식'을 사용하지 않음.
  • if-else 문의 기본형식
if(조건식){
                 수행문1;
}
else {
          수행문 2;
}
package ControlFlow;

public class ifExample1 {

	public static void main(String[] args) {
		int age = 2;

		if (age >= 8) {
			System.out.println("학교에 다닙니다.");
		} else {
			System.out.println("학교에 다니지 않습니다.");
		}
		// 결과: 학교에 다니지 않습니다.
	}

}

 

  • if-else if-else 문
    • 하나의 경우에 조건이 여러개에 해당하는 경우
    • if- else if 문은 하나의 조건을 만족하면 나머지 조건을 비교하지 않고 다음 수행문으로 넘어감.
      • if문으로만 이루어진 코드는 각 조건마다 비교.
  • if-else if -else 문의 기본 형식
if(조건식 1){
               수행문1; //조건식 1이 참일 경우에 수행함
}
else if(조건식2){
               수행문2; // 조건식 2가 참일 경우에 수행함
}
else if(조건식 3){
               수행문3; //조건식 3이 참일 경우에 수행함
}
else {
          수행문 4; //위의 조건이 모두 해당하지 않을 경우에 수행함
}
수행문 5; //if-else if-else문이 끝난 후 수행함

 

package ifExample;

public class IfExample2 {

	public static void main(String[] args) {
		int age=9;
		int charge=0;
		
		if(age<8) {
			charge=1000;
			System.out.println("취학 전 아동입니다.");
		}
		else if(age<14) {
			charge=2000;
			System.out.println("초등학생입니다.");
		}
		else if(age<20) {
			charge=2500;
			System.out.println("중,고등학생입니다.");
		}
		else {
			charge=3000;
			System.out.println("일반인입니다.");
		}
		System.out.println("입장료는"+charge+"원입니다."); 
		/*결과:
		 초등학생입니다
		 입장료는 2000원 입니다.*/
		// else if: 이렇지 않으면 ~ 이라는 뜻으로 여러 조건들 중 하나라도 만족하면 나머지는 고려하지 않음
	} 

}

 

 

  • 조건문과 조건연산자
    • 간단한 if-else 조건문(조건이 하나인 경우)은 조건연산자로 구현할수 있음
package ifExample;

public class Conditionaloperator {

	public static void main(String[] args) {

		int a = 10;
		int b = 20;
		int max;

		// if -else문
		if (a > b) {
			max = a;
		} else {
			max = b;
		}
		System.out.println(max);// 결과:20

		// 조건 연산자
		max = (a > b) ? a : b;
		System.out.println(max);// 결과:20

		// 위와 같이 간단한 if-else조건문은 조건 연산자로 구현할 수 있음
	}

}

 

  • switch-case문
    • 조건식의 결과가 정수 또는 문자열의 값이고 그 값에 따라 수행문이 결정될 때
    • if-else if-else문을 대신하여 switch-case문을 사용할 수 있음
    • break문은 switch-case문의 수행을 멈추고 빠져나가도록 함.
    • 자바7부터 switch-case문의 case값에 문자열 사용 가능
    • switch-case문에 수행문이 같으면 case를 병렬하여 작성할수 있다
  • switch-case 문의 기본형식
switch(조건){
         case 값1: 수행문1;
                          break;
         case 값2: 수행문2;
                          break;
         case 값3: 수행문3;
                          break;
            default: 수행문4;
}
package ifExample;

public class SwitchCase {

	public static void main(String[] args) {
		int rank=1;
		char medalColor; 
		
		//if-else if-else 문을 사용
		if(rank==1) {
			medalColor='G';
		}
		else if(rank==2) {
			medalColor='S';
		}
		else if(rank==3) {
			medalColor='B';
		}
		else {
			medalColor='A';
		}
		System.out.println(medalColor); //결과:G

		//switch-case 문을 사용 
		switch(rank) {
		case 1:medalColor='G';
			break;//break문은 switch-case문의 수행을 멈추고 빠져나가도록 함
		case 2:medalColor='S';
			break;
		case 3:medalColor='B';
			break;
		default:medalColor='A';
		}
		System.out.println(medalColor);//결과:G
	}

}
  • 수행문이 같아 case를 병렬로 넣는 예시
package ifExample;

public class SwitchCase2 {

	public static void main(String[] args) {
		int month=10;
		int day;
		
		//switch-case문에서 case들의 수행문이 같을 경우 case들을 병렬하여 작성할 수 있음
		switch (month) {
		case 1: case 3: case 5: case 7: case 8: case 10: case 12:
			day=31;
			break;
		case 2:
			day=28;
			break;
		case 4: case 6: case 9: case 11:
			day=30;
			break;
		
		
		default:
			day=0;
			break;
		}
		System.out.println(month+"월은 "+ day +"일입니다.");//결과:10월은 31일입니다.

	}

}

 

반복문
  • 반복문
    • 주어진 조건이 만족할 때까지 수행문을 반복적으로 수행함
    • while,do-while,for 문이 있음
    • 조건의 만족과 반복 가능 여부에 대해 정확한 코딩을 해야함.
  • while문
    • 조건식이 참인 동안 수행문을 반복해서 수행
  • while문의 기본형식
while(조건식){
                          수행문1;
                          .....
}; //조건식이 참인동안 수행분 1; 이 있는 블럭을 반복 수행
     수행문2;
.     .....

 

package loopExample;

public class WhileExample {

	public static void main(String[] args) {
		
		int num =1;
		int sum =0;
		//while문을 이용하여 1~10까지 더하기
		while(num<=10) {
			sum+=num;
			num++;
		}
		System.out.println("1부터 10까지의 합은 "+sum+"입니다."); 
		//결과:1부터 10까지의 합은 55입니다.

	}

}

 

  • while문이 무한히 반복되는 경우
    • 데몬 서비스를 구현 할 때 무한 반복을 사용
      • 웹 서버처럼 끊임없이 돌아가는 시스템을 데몬(daemon)이라고 함.
while(true){
수행문
}

 


  • do-while문
    • 먼저 수행문을 한 번 수행하고 조건식 체크
    • 수행문이 반드시 한 번 이상 수행되어야 하는 경우 사용
  • do-while문의 기본형식
do{
      수행문1;
     ...
} while(조건식);
  수행문2;
...

package loopExample;

public class DoWhileExample2 {

	public static void main(String[] args) {
		
		int num =1;
		int sum =0;
		//do-while 을 이용하여 1~10까지 더하기
		do {
			sum+=num;
			num++;
		}while(num<=10);
		
		System.out.println("1부터 10까지의 합은 " + sum + "입니다.");
		//결과: 1부터 10까지의 합은 55입니다.

	}

}

  • for문
    • 반복문 중 가장 많이 사용하는 반복문
    • 주로 조건이 횟수인 경우에 사용
    • 초기화식, 조건식, 증감식을 한꺼번에 작성
  • for문의 기본형식
for(초기화식;조건식;증감식){
     수행문;
}
  • for문의 수행순서
    •  초기화문을 한번 수행
    •  조건식으로 참거짓 구분
    •  수행문 수행
    •  증감식 수행
    •  증감된 변수로 조건식 수행 
    •  수행문 수행
    • 증감식 수행  이런식으로 조건식이 거짓이 될때까지 반복
package loopExample;

public class forLoop2 {

	public static void main(String[] args) {
		int num;
		int sum =0;
		
		for(num=1;num<=10;num++) { 
								
			sum+=num;
		}
		System.out.println(sum); //결과:55
		System.out.println(num);//결과:11
		//초기화식 증감식을 생략하고 수행문이나 초기화를 for문 앞에서 할 수 있음 
		//for(;;;) 이런식으로 된경우도 있는데 이는 while(true) 무한루프와 동일
	}
	
}

 

  • 각 반복문의 쓰임
    • while문
      • 하나의 조건에 대해 반복수행이 이루어질때 사용
      • 조건이 마지 않으면 수행문이 수행되지 않음
      • 주로 조건식이 true,false로 나타남
    • do-while 문
      •  하나의 조건에 대해 반복수행이 이루어질때 사용
      • 단, 수행문이 반드시 한번 이상 수행됨
    • for문
      • 수의 특정범위, 횟수와 관련한 반복수행에서 주로 사용
  • 각 반복문에 무한반복 방법
//while문의 무한반복
while(true){
                   수행문;
}

//do-while문의 무한반복
do{
      수행문;
} while(true);

//for 문의 무한반복
for(;;){
수행문
{

  • 중첩된 반복문
    • 반복문 내부에 또 반복문이 사용됨
    • 대표적으로 구구단이 있음
for문을 이용한 구구단
package loopExample;

public class NestedLoop {

	public static void main(String[] args) {
		int dan;
		int times;
		int result;
		// for문을 이용한 구구단 출력
		for (dan = 2; dan < 10; dan++) {// 2단부터 9단까지 반복하는 외부 반복문
			for (times = 1; times < 10; times++) { // 각 단에서 1~9를 곱하는 내부 반복문
				result = dan * times;
				System.out.println(dan + " X " + times + " = " + result);
			}
			System.out.println();// 각 단이 끝나는 것을 구분하기 위한 한줄 띄어쓰기
		}

	}

}
while 문을 이용한 구구단
package loopExample;

public class NestedLoop2 {

	public static void main(String[] args) {
		int dan = 2;
		int times = 1;
		int result;

		while (dan < 10) {
			times=1;//내부에서 외부로 빠져나올때 time가 초기화 되지 않기 떄문에 넣어줘야함.
			result=dan*times;
			while (times < 10) {
				System.out.println(dan + " X " + times + " = " + result);
				times++;
			}
			dan++;
			System.out.println();
		}

	}
}

 


  • continue 문
    • 반복문과 함께 쓰이며,
    • 반복문 내부 continue 문을 만나면 이후 반복되는 부분을 수행하지 않고 조건식이나 증감식을 수행함

 

package loopExample;

public class ContinueExample {
	public static void main(String[] args) {
		int total=0;
		int num;
		
		//continue 를 써서 짝수인 경우 수행을 생력하여 홀수의 합을 구하는 예제
		for(num=1;num<=100;num++) {
			if(num%2==0)
				continue;
			total+=num;
		}
		System.out.println("1부터 100까지의 홀수의 합은: "+total+"입니다.");
		//결과=1부터 100까지의 홀수의 합은: 2500입니다.
		
		//continue를 쓰지 않고 홀수의 합을 구하는 예제
		
		for(num=0,total=0;num<101;num++) {
			
			if(num%2==1) {
				total+=num;}
			else {
				
			}
			
		}
		System.out.println("1부터 100까지의 홀수의 합은: "+total+"입니다.");
		//결과=1부터 100까지의 홀수의 합은: 2500입니다.
		
		
	}
}

 


  • break문
    • 반복문에서 break 문을 만나면 더이상 반복을 수행하지 않고 반복문을 빠져나옴
    • 중첨된 반복문 내부에 있는 경우 가장 가까운 반복문 하나만 빠져 나옴
package loopExample;

public class BreakExample {
	public static void main(String[] args) {
		int sum = 0;
		int num = 1;

		// 합한 값이 처음으로 100보다 클떄 종료
		while (sum < 100) {
			sum += num;
			num++;
		}
		System.out.println(sum); // 결과는 105
		System.out.println(num); // 결과는 15

		// 실제로 계산해보면 14까지 더했을때 합이 105로 100을 넘게되지만 아래에 num++문을 수행하여 15가 나옴
		// break문을 사용하면 이를 제어할 수 있음

		sum = 0;
		num = 1;

		while (true) {
			sum += num;
		if (sum > 100)
			break;
		num++;
	}
		System.out.println(sum);
		System.out.println(num);

	}
}

 

  • 구구단을 짝수단만 출력하라
package loopExample;

public class forLoop3 {

	public static void main(String[] args) {

		int dan = 2;
		int times = 1;
		int result;

		for (dan = 2; dan < 10; dan++) {

			for (times = 1; times < 10; times++) {

				if (dan % 2 == 1) {
					continue;
				}
				result = dan * times;
				System.out.println(dan + " X " + times + " = " + result);
			}
			if (dan % 2 == 1) {
				continue;
			}
			System.out.println();

		}

	}

}