절차지향 프로그래밍
: 위에서 부터 한줄씩 순서대로 실행
순서도를 짜면서 정의하는게 프로그램
if, double 같은것들을 키워드라고 하는데
키워드를 예약어라고도 하며, 자바에서 키워드를 만들 때 정한
사용 목적 이외의 용도로는 쓸 수 없다.
즉, 키워드를 사용자가 정의하는 변수나 클래스의 이름으로 사용할 수 없다.
int if = 10;
int double = 10;
변수의 이름에 키워드를 넣으니 에러가 난다.
syntax(문법) 에러
유효하지않은 변수 선언(invalid variable Declaratorid)
if 문법
if(조건문) {
조건문이 true일 때 실행될 내용
}
자바에서 괄호 뒤에 중괄호가 나오는 형식 : 행위의 영역 표시
package ex06;
public class ConEx01 {
public static void main(String[] args) {
int point = 90; // 성적
if (point >= 90) {
System.out.println("A학점입니다");
}
}
}
else {
조건문이 false일 때 실행될 내용
true가 아닐때만 실행되기 때문에
조건이 필요없음
}
package ex06;
public class ConEx01 {
public static void main(String[] args) {
int point = 90; // 성적
if (point > 90) {
System.out.println("A학점입니다");
} else {
System.out.println("A학점이 아닙니다");
}
}
}
이 순서도에 맞게 프로그램을 짜면 어떻게 짤 수 있을까?
package ex06;
public class ConEx02 {
public static void main(String[] args) {
int x = 25;
if (x < 30) {
System.err.println("x는 30보다 작습니다.");
} else {
System.out.println("x는 30보다 큽니다.");
}
}
}
어떤 조건문에서 결과값에 결과가아닌 새로운 조건이 있어야한다면
순서도는 이렇게 될 것이다.
package ex06;
public class ConEx03 {
public static void main(String[] args) {
int point = 81;
// 중첩 if문
if (point >= 90) {
System.out.println("A학점입니다.");
} else {
if (point >= 80) {
System.out.println("B학점입니다.");
} else {
System.out.println("f학점입니다.");
}
}
}
}
중첩 if문이 이 코드보다 더 많아진다면
if / else가 더 많아져서 코드가 지저분해진다.
이때 else if를 사용한다.
else가 "그게 아니면?" 이라는 의미였다면
else if는 "그게 아니라 이거면?" 이라는 의미이다.
위의 코드를 else if를 사용하여 바꿔보자.
package ex06;
public class ConEx04 {
public static void main(String[] args) {
int point = 81;
if (point >= 90) {
System.out.println("A학점 입니다.");
} else if (point >= 80) { // point가 80 ~ 89 사이라면?
System.out.println("B학점 입니다.");
} else if (point >= 70) {
System.out.println("C학점 입니다.");
} else if (point >= 60) {
System.out.println("D학점 입니다.");
} else {
System.out.println("F학점 입니다.");
}
} // main 끝
}
B학점까지 뿐만 아니라 D학점 까지 조건문을 만들어도 가독성이 훨씬 좋아졌다.
이때 else if를 if문의 중괄호 뒤에 적어줘야한다.
else의 위치와 똑같다.
if의 중괄호가 맞는지 잘 확인하고 쓰자.
이렇게 편한 else if를 쓰지않고
중첩 if문을 if와 else만으로 만든다면 어떻게될까?
package ex06;
public class ConEx05 {
public static void main(String[] args) {
int point = 81;
if (point >= 90) {
System.out.println("A학점 입니다.");
} else {
if (point >= 80) {
System.out.println("B학점 입니다.");
} else {
if (point >= 70) {
System.out.println("C학점 입니다.");
} else {
if (point >= 60) {
System.out.println("D학점 입니다.");
} else {
System.out.println("F학점 입니다.");
}
}
}
}
}
}
보기에도 힘들고
만들기도 힘들어진다.
[출처]
https://cafe.naver.com/metacoding
메타 코딩 유튜브
https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9