제어문 _반복문

yoongiiii·2023년 10월 21일
0

✍🏻 반복문

01. for

  • 횟수가 정해져 있는 반복을 수행하는 경우 for문 이용
	//for (선언_초기화; 조건; 증감){ }
    
    //2개 이상의 초기화 가능
    for (int i = 1, j = 100; i <= 50 && j >=50; i++, j--){ }
	 //1부터 10까지의 수들의 합
     int sum = 0;
     for (int i = 1; i <= 10 ; i++) {
     	sum += i;
        System.out.println("현재까지 총합은 " + sum + "입니다.")
	}
    System.out.println("1부터 10까지의 모든 수의 총합은 " + sum + "입니다."

02. while

  • 정해진 횟수 없이 조건이 참인 동안 계속해서 반복을 수행하는 경우 while문 이용
  • for문에서 쓰는 i 변수가 따로 없으니 선언
	while (변수의 조건){
    	...수행할 명령...
        }
	//수영장에서 수영을 하는 모습
    int distance =25; //전체 거리 25m
    int move = 0; //현재 이동 거리 0m
    while (move < distance){
        System.out.println("발차기를 계속 합니다.");
        System.out.println("현재 이동 거리 :" +move);
        move += 3; //3미터 이동
    }
    System.out.println("도착하였습니다.");

03. do while

  • while 문은 조건 먼저 살펴보고, 참이면 명령 반복 실행
  • do while 문은 일단 명령 수행하고, 조건을 확인한 다음 계속 반복할지 결정
    -do while문은 무조건 한번은 수행하게 되어 있다.
	do {
    	...수행할 명령...
	} while (조건);
	do{
        System.out.println("발차기를 계속 합니다.");
        System.out.println("현재 이동 거리 : " +move);
        move += 3; //3m이동
    } while (move < distance);
    System.out.println("도착했습니다.");

04. 이중 반복문 🌕

  • 반복문 안에 또 다른 반복문이 들어갈 수 있다
	//별 왼쪽 삼각형 만들기
    
	for(int i = 0; i < 5; i ++){ //세로
    	for(int j = 0; j  < i + 1; j++){ //가로
        	System.out.println("*");
        }
    	System.out.println();
    }
	//별 오른쪽 삼각형 만들기
    
    for(int i = 0; i < 5; i++){
    	for(int j = 0; j < 4 - i; j++){
        	System.out.println(" ");
        }
        for(int k = 0; k < i + 1; k++){
        	System.out.println("*");
        }
        System.out.println();
    }
	//구구단
    
    for(int i = 2; i < 10; i++){
    	for(int j = 1; j < 10; j++){
        	System.out.println(i + "*" + j + "=" + (i * j));
        }
    }

05. break, continue

  • 반복문을 break하며, if문 안에 넣어 사용하는 것이 기본
  • break
    -반복문을 정해진 횟수 또는 무제한으로 반복 실행하다가 특정 조건이 나왔을 때는 더이상 반복을 실행하지 않고 탈출 하고 싶을 때
    -break는 당장 반복문을 부수고 탈출
	//치킨 집에서 매일 20마리만 판매 (1인1닭)
    //현재 손님은 50명 대기 중
    //20번쨰 손님 이후로는 품절 안내
    
    [for문]
	int max = 20;
	for (int i = 1; i <= 50 ; i++) {
        System.out.println(i + "번 손님, 주문하신 치킨 나왔습니다.");
        if (i == max) {
            System.out.println("금일 재료가 모두 소진되었습니다.");
            break; //반복문 탈출
        }
    }
    System.out.println("영업을 종료합니다.");
    
    
    [while문]
    int index = 1; //손님 대기번호
    while(index <= 50){
    	System.out.println(index + "번 손님, 주문하신 치킨 나왔습니다.");
        if (index == max){
        	System.out.println("금일 재료가 모두 소진되었습니다.");
            break; //반복문 탈출
        }
    }
    System.out.println("영업을 종료합니다.");
  • continue 🌕
    -continue는 현재 진행중인 아직 남아있는 반복문의 아랫부분 명령을 실행하지 않고 다음 회차 반복문 ( 처음)으로 넘어간다.
    -for문 continune : 자동으로 i++ 증감부분을 타고 조건을 확인 후, 다음 회차 반복 진행된다.
    -while문 continue: 증감 확인없이 조건만 확인 후 다음 회차 반복 진행된다. (continue; 나오기 전 증감코드 한 줄 추가 해주어야 한다!!!)
    -tip) 증감코드가 여러 곳에 있으면 헷갈리니까 애초에 while문 중괄호 처음에 추가해주면 코드가 좀 더 깔끔해진다.
	//치킨 주문 손님중에 노쇼 손님이 있다고 가정
    
    [for문]
    int max = 20; //최대 치킨 판매 수량
    int sold = 0; //현재 치킨 판매 수량
    int noshow = 17; //대기번호 17번 손님이 노쇼
    //일단은 치킨 모두 잘 가져갔다고 가정하고 코드 적어보기
    for(int i = 1; int <= 50; i++){
    	System.out.println(i + "번 손님, 주문하신 치킨 나왔습니다.");
        
        //만약 손님이 없다면??
        if (i == noshow) {
        	System.out.println(i + "번 손님, 노쇼로 인해 다음 손님에게 기회가 넘어갑니다.");
            continue;
        }
        sold++; //판매 처리
        if (sold == max) {
        	System.out.println("금일 재료가 모두 소진되었습니다.");
            break;
        }
    }
    System.out.println("영업을 종료합니다.");
    
    
    [while문]
    int person = 0; //손님 번호
    sold = 0;
    while( person <= 50 ) {
    	person++;
    	System.out.println(person + "번 손님, 주문하신 치킨 나왔습니다.");
        if ( person == noshow ) {
        	System.out.println(person + "번 손님, 노쇼로 인해 다음 손님에게 기회가 넘어갑니다.");
            continue;
        }
        sold++;
        if( sold == max ){
        	System.out.println("금일 재료가 모두 소진되었습니다.");
            break;
        }
    }
    System.out.println("영업을 종료합니다.");

0개의 댓글