코딩을 배우며 항상 조건문 파트부터 진짜 코딩이 시작되는 듯한 기분을 느낀다. 다른 사람은 어떨지 모르겠지만 난 그렇다. 이번 섹션은 조건문이고, 늘 그래왔듯 if문과 else를 배우지 않을까 싶다.
조건문이란 특정 조건에 따라서 다른 코드를 실행하는 것을 일컫는다. 자바의 조건문엔 if문, switch문이 있다고 한다. 먼저 if문부터 알아보자.
본 코드를 분석해보면, age의 값은 20이기 때문에 "성인입니다."가 출력되는 것을 알 수 있다. 이때 age의 값은 18보다 작지 않으므로 "미성년자입니다."는 출력되지 않는다. 이는 if (false) { "미성년자입니다." } 와 같고, 조건이 거짓으로 판명되기에 해당 코드블록은 실행되지 않는다.(18보다 작지 않기에 false가 되는 것) 이때 코드를 else를 사용해서 좀 더 간단히 바꿀 수 있다.
else if문을 사용하면 좋은 점을 알아보기 위해 본 코드를 먼저 작성해보았다. 이 코드는 작동은 원활하게 되지만, 분명한 단점이 있다. 이미 조건을 만족해도 불필요한 다음 조건을 계속해서 검사한다는 것이다. 이미 앞서 조건이 성립되어 결과가 출력되어도, 나머지 if문을 통한 조건 검사를 모두 실행해야만 한다. 또한, 예시로 나이가 8살인 초등학생이라면 미취학 아동임을 체크하는 조건인 'age <= 7'을 통하여 이미 나이가 8살이 넘었다는 사실을 알 수 있다. 그러나 바로 다음 초등학생을 체크하는 조건에서 'age >= 8 && age <= 13'이라는 2가지 조건을 또다시 모두 수행한다. 조건을 중복 체크하게 되는 것이다. 이 코드에서 else if문을 사용하면 이러한 문제점을 해결할 수 있다! else if문은 앞선 if문의 조건이 거짓일 때 다음으로 나오는 조건을 검사하고, 앞선 if문이 참일 경우 실행되지 않는다. 따라서 코드 효율성을 높일 수 있다.
else if문으로 코드를 바꾸어 보았다. 훨씬 보기 간편하고, 중복 체크가 발생하지 않는다. 그러나 모든 코드에서 둘을 혼합해 사용할 수 있는 것은 아니다. if문에 else if를 함께 사용하는 것은 서로 연관된 조건일 때 사용한다. 서로 관련이 없는 독립 조건에선 if문을 각각 따로 사용해야 한다.
만약 이 예제에서 else if문을 추가해 코드를 병합해 버린다면, 앞선 price >= 10000의 조건이 참이되어 수행되었기 때문에 다음으로 넘어갈 수 없이 중간에 빠져나와 출력값이 다르게 된다. 때문에 각각 달리 풀어서 써야하는 것이다.
조건문에는 if문, else if문 말고도 switch문이 존재한다.
이때, break문이 없다면 아래에 있는 코드까지 수행하기 때문에 break문을 넣어 멈추게 해주어야 한다. switch문은 break문과 함께해야 코드를 수월하게 짤 수 있다. if문과 달리, switch문은 참 거짓의 결과가 나오는 조건이 아닌 단순히 값만 넣을 수 있다. 조건식이 특정 case와 같은지만 체크할 수 있는 것이다. 쉽게 말해 값이 같은지 확인하는 연산(문자)만 가능하므로, 사실상 if문만 사용할지라도 조건식을 구성하는 데엔 문제가 없다. 다만 특정 값에 따라 코드를 실행할 때 switch문을 사용한다면 if문 보다 간결한 코드를 작성할 수 있을 것이다. 하지만 이는 이론적인 이야기고... 둘의 차이는 미미하기 때문에, 자바14에서 기존과는 다른 switch문이 등장했다고 한다.
훨씬 깔끔해졌다! 자바 스크립트의 화살표 함수가 생각나기도 한다. 한 땐 코딩 테스트 연습을 할 때 화살표 함수를 이용하여 최대한 짧은 코드를 지어내는 데 꽂혔었는데, 이젠 다 까먹어 버린 듯. 꾸준히 할 수 있다면 참 좋을텐데.
문제1: 학생의 점수를 기반으로 학점을 출력하는 자바 프로그램을 작성하자. 다음과 같은 기준을 따른다.
90점 이상: "A"
80 - 90점: "B"
70 - 80점: "C"
60 - 70점: "D"
60점 미만: "F"
문제2: 특정 금액을 미국 달러에서 한국 원으로 변환하는 프로그램을 작성하자. 환율은 1달러당 1,300원이라 가정한다.
달러가 0 미만: "잘못된 금액입니다."
달러가 0일 때: "환전할 금액이 없습니다."
달러가 0 초과: "환전 금액은 ( ) 입니다."
문제3: 요청한 평점 이상의 영화를 찾아 추천하는 프로그램을 작성하자.
어바웃타임: 9점
토이스토리: 8점
고질라: 7점
중첩되어 출력되려면 어떻게 해야하는지 헷갈렸는데, else if문이 아닌 if문을 써야 했으며 범위 또한 수정했다. 이 문제에선 조건이 중복 체크되어야 하므로 if문을 써야하는 듯하다.
문제4: 학점에 따른 성취도를 출력하는 프로그램을 작성하자.
A: "탁월한 성과입니다."
B: "좋은 성과입니다."
C: "준수한 성과입니다."
D: "향상이 필요합니다."
F: "불합격입니다."
나머지: "잘못된 학점입니다."
문제5: 두 개의 정수 a와 b를 가지고 있을 때 a의 값은 10, b의 값은 20이다. 삼항 연산자를 사용하여 두 숫자 중 더 큰 숫자를 출력하는 코드를 작성하자.
이렇게 정리를 마무리로 섹션 5의 조건문이 끝났다. 그런데 자바를 좀 배우나 싶더니, 내가 이번에 배워야할 자료구조 프로그래밍 언어는 C언어라는 것을 알게되었고... 참 곤란해졌다.;; 아무래도 C언어를 시작하는 게 급선무일 듯한데. 정말 아무것도 몰라서 걱정이다. 일단은 자바 또한 틈틈이 건드려보는 것이 좋겠다.
'Study > Java' 카테고리의 다른 글
자바 스터디 기록 [2] (연산자) (0) | 2025.03.02 |
---|---|
자바 스터디 기록 [1] (헬로우 월드부터 변수까지) (0) | 2025.01.14 |