하루 교육시간은 8시간
그 8시간 내내 조건문에 대해 배운다면?
당신은 조건문을 마스트 할 수 있게 됩니다...
조건문에는 3가지가 있다.
1. 단일 조건문 if
2. 선택 조건문 if, else
3. 다중 조건문 if, else, if else
/*
* 조건문
* 1. 형식
* 1-1 단일 조건문
* 형식) if (조건문)
* {
* 조건문이 true면 수행하는 문장을 작성한다
* (여러개의 문장 사용시에 {} 한다)
* }
* => 조건문 false => 점프 (원하는 문장만 수행이 가능하게 만드는 기능)
* => enter를 누르면 : 총알을 발사해라
* => esc를 누르면 : 게임 종료
* => 독립 실행 (단일 if가 여러개 있는 경우에는 따로 수행하기 때문에 여러개 동시 수행할수 있다)
* 1-2 선택 조건문 : true일때 false일때 나눠서 수행할 수 있게 만든다
* 형식)
* if(조건문)
* {
* 조건문이 true일때 처리하는 문장
* }
* else
* {
* 조건문이 false일때 처리하는 문장
* }
* => ID중복이 된 경우, 중복되지 않은 경우
* => 로그인이 된 상태, 로그인이 안된 상태
* => 값이 입력된 경우, 값이 입력이 안된 경우
* 1-3 다중 조건문 : 조건이 여러개 중 한개의 조건만 수행이 가능하게 만드는 경우에 사용
* => 메뉴, 버튼
* 형식)
* if(조건문)
* {
* true : 문장을 실행하고 종료 ↗
* false : 다음 조건문으로 이동
* ↘
* }
* else if (조건문)
* {
* true : 문장을 실행하고 종료 ↗
* false : 다음 조건문으로 이동
* ↘
* }
* else if (조건문)
* {
* true : 문장을 실행하고 종료 ↗
* false : 다음 조건문으로 이동
* ↘
* }
* else if (조건문)
* {
* true : 문장을 실행하고 종료 ↗
* false : 다음 조건문으로 이동
* ↘
* }
* else
* {
* 해당되는 조건이 없는 경우에 수행문장 (생략이 가능)
* }
* 1-4 중첩 조건문 : 부메뉴 (주메뉴 => 부메뉴) ==> 이중 if문
* 형식)
* if(조건문) => 조건(true)
* {
* if(조건문) => 조건(true)
* {
* 실행 문장
* }
* }
* ===> 단일 조건문 : if(조건문 && 조건문)
*
*
* 2. 조건식 만드는 방법
* if(조건식) => 부정연산자 (!), 비교연산자 (==, !=, <, >, <=, >=), 논리연산자 (%%, ||)
* 3. 사용처
* 1-1. 오류 처리 (잘못 입력이 된 경우) => 비정상 종료가 없는 프로그램
* =======
* 사용자 입력, 프로그램 실수
*
* 1-2. 점프 = 원하는 부분만 출력하고 싶은 경우에 주로 사용
*
*/
우선 단일 조건문 부터
/*
* 가위 바위 보 게임
*
* 사용자 입력 : 0(가위), 1(바위), 2(보)
* 컴퓨터 입력 : 난수 (0,1,2)
* ==============================
* 결과 : 중첩 if
* if()
* {
* if()
* {
* }
* }
*
* 컴퓨터 ==> 알고리즘 (3)
* 가위
* 사용자
* 가위
* 바위
* 보
* 바위
* 사용자
* 가위
* 바위
* 보
* 보
* 사용자
* 가위
* 바위
* 보
*/
import java.util.Scanner; // 입력을 받는 경우에 사용하는 클래스
public class 단일조건문_2 {
public static void main(String[] args) {
// 사용자가 입력한 값을 받는다 (0,1,2)
int user; // 사용자의 입력값을 저장하는 곤간
// 사용자가 입력을 할 수 있게 처리
Scanner scan=new Scanner(System.in);
System.out.println("가위 (0), 바위 (1), 보(2) 입력 : ");
user=scan.nextInt();
//확인 => 사용자가 뭘 냈는지
if(user==0) // 사용자가 입력한 값이 0이면
System.out.println("사용자: 가위");
if(user==1)
System.out.println("사용자: 바위");
if(user==2)
System.out.println("사용자: 보");
//// 컴퓨터 (난수)
int com = (int)(Math.random()*3); // 0, 1, 2 중 하나 나옴
/*
* Math.random() => 0.0~0.99
* Math.random()*3 ==> 0.0~2.99..
* (int)=> 0.0~2.99... => 0~2
*
*/
if(com==0)
System.out.println("컴퓨터: 가위");
if(com==1)
System.out.println("컴퓨터: 바위");
if(com==2)
System.out.println("컴퓨터: 보");
/// 결과값을 출력
System.out.println("*******결과*******");
/*
* 컴퓨터 (가위 0) com-user
* 사용자 (가위 0) 0 비김
* (바위 1) -1 사용자
* (보 2) -2 컴퓨터
* 컴퓨터 (바위 1)
* 사용자 (가위 0) 1 컴퓨터
* (바위 1) 0 비겼다
* (보 2) -1 사용자
* 컴퓨터 (보 2)
* 사용자 (가위 0) 2 사용자
* (바위 1) 1 컴퓨터
* (보 2) 0 비겼다
*
* 사용자가 Win ==> -1, 2
* 컴퓨터가 Win ==> -2, 1
*/
/*if(com==0 && user==0)
System.out.println("비겼습니다");
if(com==0 && user==2)
System.out.println("사용자 Win!!");
if(com==0 && user==1)
System.out.println("컴퓨터 Win!!");
if(com==1 && user==0)
System.out.println("컴퓨터 Win!!");
if(com==1 && user==2)
System.out.println("사용자 Win!!");
if(com==1 && user==1)
System.out.println("비겼습니다");
if(com==2 && user==0)
System.out.println("사용자 Win!!");
if(com==2 && user==2)
System.out.println("비겼습니다");
if(com==2 && user==1)
System.out.println("컴퓨터 Win!!");*/
int res = com-user;
if (res==1 || res==2)
System.out.println("사용자 Win!!");
if (res==-2 || res==1)
System.out.println("컴퓨터 Win!!");
if (res==0)
System.out.println("비겼다!!");
}
}
if (조건문) { 처리 문장} 이라는 간단한 문법이다. 조건문 안의 내용은 꼭 true/false로 값이 나와야 한다.
조건문 하나로도 간단한 가위바위보 게임을 짤 수 있었다.
(이걸 하면서 cp 찾기 게임 영감을 받아서 만드는중)
2. 선택 조건문
/*
* 형식만 잘 알고 있으면됨
* if(조건문) => 조건문(부정연산자, 비교연산자, 논리연산자)
* {
* 조건문이 true일때 처리하는 문장
* (여러 문장을 수행할 수 있다)
* }
* else
* {
* 조건문이 false 일때 처리하는 문장
* (여러문장을 수행할 수 있다)
* }
*
* 오류)
* if(조건문)
* 실행문장 1
* 실행문장 2
* else ======> if 밑에서 처리 (else는 단독 실행문장을 만들 수 없다.
* 실행문장 3
*/
// 3개의 정수를 입력 => 평균 ==> 60이상이 Pass 아니면 Non-Pass
import java.util.Scanner;
public class 선택조건문_1 {
public static void main(String[] args) {
// 입력받은 데이터를 저장할 공간이 필요 => 정수 4개
int kor, eng, math, avg;
Scanner scan=new Scanner(System.in);
System.out.print("국어 영어 수학 점수 입력 : ");
kor=scan.nextInt();
eng=scan.nextInt();
math=scan.nextInt();
/*System.out.println("국어 점수 입력 : ");
kor=scan.nextInt();
System.out.println("영어 점수 입력 : ");
eng=scan.nextInt();
System.out.println("수학 점수 입력 : ");
math=scan.nextInt();*/
avg=(kor+eng+math)/3;
if(avg>=60) {
System.out.println("Pass");
}
else {
System.out.println("쯧 탈락");
}
}
}
if, else로 이루어진 구조이다. if에서는 if만 통과하면 실행문장에 해당하는 모든 문장들이 실행되고 끝난 반면
else 가 있기 때문에 예외 처리가 가능해졌다.
3. 다중조건문
/*
* 다중조건문
* => 여러가지 조건 중에 한개의 조건을 수행할 수 있게 만드는 기능
* 형식)
* if(조건문)
* {
* 조건문 true면 실행하는 문장 => 문장을 수행하면 종료 ==>
* }
* else if (조건문)
* {
* 조건문 true면 실행하는 문장 => 문장을 수행하면 종료 ==>
* }
* else if (조건문)
* {
* 조건문 true면 실행하는 문장 => 문장을 수행하면 종료 ==>
* }
* --
* --
* --
* else
* {
* 조건에 해당되는 조건문이 없는 경우에 수행되는 문장 (default) => 생략이 가능
* }
*
* 학점계산
* 90이상 => A
* 80이상 => B
* 70이상 => C
* 60이상 => D
* =========== 해당 조건이 없으면 => F
*/
// 3개의 점수를 받아서 평균, 총점, 학점
import java.util.Scanner; // 자바에서 지원하는 클래스를 가지고 올 경우에 사용 (import)
public class 다중조건문 {
public static void main(String[] args) {
// 저장하는 메모리 공간을 설정
int kor, eng, math, total;
double avg;
char score;
Scanner scan=new Scanner(System.in);
System.out.print("국어, 영어, 수학 점수 입력: ");
kor=scan.nextInt();
eng=scan.nextInt();
math=scan.nextInt();
total=kor+eng+math;
avg=total/3.0;
System.out.println("국어 점수:"+kor);
System.out.println("영어 점수:"+eng);
System.out.println("수학 점수:"+math);
System.out.println("총점:"+total);
System.out.printf("평균:%.2f\n",avg);
System.out.print("학점:");
if(avg>=90) {
System.out.println('A');
} else if(avg>=80) {
System.out.println('B');
} else if(avg>=70) {
System.out.println('C');
} else if(avg>=60) {
System.out.println('D');
} else {
System.out.println('F');
}
}
}
else if와 if 문의 가장 큰 차이점은 맨 처음 if문 true/false를 판단하고, true이면 문장을 수행하고 종료한다는것에 있다.
if 문만 있었을때는 처음 if를 통과한다고 하더라도 다음 if에도 데이터가 해당이 되면 그 문장이 돌아간 뒤 종료가 되었는데 else if는 여러가지 조건 중에서 하나만 통과할 수 있다.
만약 다 통과하지 못했다면 else로 빠져서 default값을 출력하고 종료한다.
3-1. 중첩 조건문
/*
* 중첩 => if 안에 if가 첨부 되는 것 (이중 if)
* 형식)
* if(조건문) 조건문 true
* {
* if(조건문) 조건문 true
* {
* }
* }
*
* ==> if(조건문 &&(||) 조건문)
*/
// 3개정수의 정수를 받아서 평균, 총점을 구하고 학점을 구함 (>=98 A+ 94<=A-...)
import java.util.Scanner;
public class 중첩조건문 {
public static void main(String[] args) {
// 저장하는 데이터 => 메모리 (변수)
int kor, eng, math, total, avg;
char score = ' ', option=' '; // +, -, 0 A+, A-, A0
// 초기값
Scanner scan=new Scanner(System.in);
// 국어, 영어, 수학
System.out.print("국어점수 영어점수 수학점수 입력(90 90 90): ");
kor=scan.nextInt();
eng=scan.nextInt();
math=scan.nextInt();
// 총점
total=kor+eng+math;
// 평균
avg=total/3;
// 학점
if (avg>=90) {
score='A';
if(avg>=98) {
option='+';
}
else if (avg<94) {
option='-';
}
else {
option='0';
}
}
else if (avg>=80){
score='B';
if(avg>=88) {
option='+';
}
else if (avg<84) {
option='-';
}
else {
option='0';
}
}
else if (avg>=70) {
score='C';
if(avg>=78) {
option='+';
}
else if (avg<74) {
option='-';
}
else {
option='0';
}
}
else if (avg>-60) {
score='D';
if(avg>=68) {
option='+';
}
else if (avg<64) {
option='-';
}
else {
option='0';
}
}
else {
score='F';
}
// 출력
System.out.println("국어:"+kor);
System.out.println("영어:"+eng);
System.out.println("수학:"+math);
System.out.println("총점:"+total);
System.out.println("평균:"+avg);
System.out.printf("학점:%c%c\n", score,option);
}
}
중첩 조건문은 if문 안에 if가 또 들어가는 형태이다.
중첩되어 쓸 수 있어서, 세부 조건들을 걸어줄때 사용하는 문법이다.
4. 선택문
/*
* 선택문 : 값 한 개가 선택이 된 경우에 처리 (다중조건문) => 게임 제작, 윈도우 제작
* 1-10
* 11-20
* 21-30
* 31-40
* 41-50 ==> case 1:
* 형식) switch(정수, 문자, 문자열)
* 정수 => 3
* switch(정수)
* {
* case 1:
* 실행문장 1;
* 문장 수행후에 종료 : break;
* case 2:
* 실행문장 2;
* 문장 수행후에 종료 : break;
* case 3:
* 실행문장 3;
* 문장 수행후에 종료 : break;
* default: ===========> 생략가능
* 실행문장 4;
* }
*
* switch(문자)
* { 문자 = 'A':
* case 'A':
* 실행문장 1;
* 문장 수행후에 종료 : break;
* case 'B':
* 실행문장 2;
* 문장 수행후에 종료 : break;
* case 'C':
* 실행문장 3;
* 문장 수행후에 종료 : break;
* default: ===========> 생략가능
* 실행문장 4;
* }
*
* switch(문자열)
* { 문자열 = 'A':
* case '로그인':
* 실행문장 1;
* 문장 수행후에 종료 : break;
* case '회원가입':
* 실행문장 2;
* 문장 수행후에 종료 : break;
* case '영화목록':
* 실행문장 3;
* 문장 수행후에 종료 : break;
* case '상세보기':
* 실행문장 3;
* 문장 수행후에 종료 : break;
* default: ===========> 생략가능
* 실행문장 4;
* }
*
*
*
*/
public class 선택문 {
public static void main(String[] args) {
int no=(int)(Math.random()*5)+1; //1~5
// ==== ================ ==
// 2 1 3
// (0.0~4.999999999)
switch(no)
{
case 1: //if(i==1)
System.out.println("1이 선택되었습니다");
break; // 위에 문장하고 switch를 종료
case 2:
System.out.println("2가 선택되었습니다");
break;
case 3:
System.out.println("3이 선택되었습니다");
break;
case 4:
System.out.println("4가 선택되었습니다");
break;
case 5:
System.out.println("5가 선택되었습니다");
break;
}
/*
* 10,9 => A, 8 => B, 7=>C, 6=>D default=>F
* switch(score)
*/
}
}
switch를 사용한 선택문. 각각의 케이스들의 형식을 정해주고 사용이 가능하다.
break;를 써줘야 수행 문장을 수행하고 빠져 나갈 수 있다.
'programming > Gukbi' 카테고리의 다른 글
국비 교육 7일차 - 2차 for문 (0) | 2021.01.04 |
---|---|
국비 교육 6일차 - 반복문 (0) | 2020.12.31 |
국비 교육 4일차 - 연산자, 제어문 (0) | 2020.12.28 |
국비 교육 3일차 - 연산자 (0) | 2020.12.26 |
국비 교육 3일차 - 형 변환 (0) | 2020.12.26 |