자바 기반 구조적 프로그래밍 04 - 조건문과 반복문

우와아ㅏㅏㅏㅏㅏㅏㅏㅏ드디어 금요일이다아ㅏ아ㅏㅏㅏㅏㅏㅏㅏ!!!!!!!!!!!!
오늘 수업만 끝나고나면 3일동안 휴일이라 아침부터 신남ㅋㅋ
물론 쉬는동안에도 교재를 통해 복습, 예습을 꼭 해야겠지만 아무튼 신남!
금요일 수업은 지난 시간에 학습했던 Math.random() 메소드 복습으로 시작했다 :)
Math.random() 활용
범위 지정, 주사위, 로또 등
먼저 Math.random() 메소드에 대해 복습해보자면 0부터 1사이의 실수들을 랜덤으로 출력해주는 메소드이다.
원하는 범위를 지정하여 랜덤으로 출력하기 위해서 Math.random()에 원하는 수 n를 곱해주고, 1을 더해주면
0부터 곱해진 수 n까지(n포함)의 숫자들이 랜덤으로 출력되도록 지정할 수 있다.
(범위가 0이상부터 n미만으로 지정되기 때문에 n을 포함하기 위해서는 1을 더해주어야 한다!)
0부터 n까지의 정수들을 출력하기 위해서 데이터 타입을 int로 가져오면 간단하게 완성 :)
로또 번호 생성기로 번호 돌려서 로또 한 번 사봐야지ㅋㅋㅋㅋㅋㅋㅋㅋ
Math.random() 과 if~else if~else문 활용
Math.random() 메소드를 활용해 0부터 n까지의 숫자를 랜덤으로 출력을 할 수 있다면
랜덤으로 나온 각 숫자별로 그 값에 따른 실행문을 지정해줄수도 있다.
if~else if~else문을 활용하여 각 값에 따른 실행문을 지정해주고 메인메소드를 실행해주면
각 값에 따라 지정된 실행문이 출력되는 것을 확인할 수 있다!
위의 예제는 주사위를 굴리기에서 최댓값의 범위가 6까지이기 때문에 각 숫자에 실행문을 적용하였지만
최댓값의 범위가 클 때에는 조건식을 이상, 이하, 초과, 미만 등의 범위를 활용하여 적용해주면
여러 방면으로 유용하게 활용할 수 있을 것 같다 :)
중첩 if문
다음은 조건문 if를 중첩으로 활용하는 방법인데, if문 내에 또 다른 if문을 작성하여
해당 조건식 내에 또 다른 조건식을 부여하여 실행하는 방법이다.
예제에서처럼 예를 들어 Scanner를 활용해 점수를 입력받았을 때 그 점수값에 따라 학점을 부여한다고 가정해보자.
1번째 조건식은 90점 이상일 때 학점이 A, 그리고 그 외(90점 미만)에는 B 학점이 부여된다는 조건이다.
그리고 또 다시 1번째 조건식에서 점수가 90점 이상인 학생들 중 점수가 95점 이상이면 A+, 그 외에는 A 학점을 부여하고,
90점 미만의 점수에 대해서는 85점 이상일 때 B+, 그 외에는 B 학점을 부여하는 방식의 중첩 if문을 작성할 수 있다.
중첩 if문은 코드가 복잡해 가독성이 떨어질 수 있으므로 좀 더 간단한 코드를 작성하는게 좋다!
삼항연산자의 활용
중첩 if문을 간단하게 요약하여 활용할 수 있는것이 삼항연산자이다.
삼항연산자를 활용하면 여러줄로 작성했던 코드를 단 1줄로 축약해서 표현할 수 있다.
(실행문이 1줄로 표현되기 때문에 if문, else문에서 중괄호를 생략할 수 있다.)
if (조건식)
변수 = 입력값 (비교연산자) 지정값1 ? "결과값1" : "결과값2"
else
변수 = 입력값 (비교연산자) 지정값2 ? "결과값3" : "결과값4"
사실 이렇게 정리를 해두면 나만 알아볼 수 있는게 아닌가싶은 생각이 들긴 하지만ㅋㅋㅋ
if문 내의 실행문을 기준으로 먼저 살펴보자면 Scanner로 점수를 입력받고,
입력값이 지정값과 비교연산의 결과가 true이면 결과값1을, 그렇지 않다면 결과값 2를 출력하는 실행문이다.
비교연산자는 >, <, >=, <=, ==, != 중 다양하게 활용이 가능하기 때문에 위처럼 표현했다!
else문 내에서도 같은 방법으로 중첩 조건식 활용이 가능하다.
조건문 switch문
다음으로 조건문 switch는 조건을 값의 범위가 아닌 '값'으로 하였을 때 활용하기 좋은 조건문이다.
if문에서 조건식의 비교연산자가 '==' 등호 연산 결과값이 true일 때와 동일하게 실행되어진다고 보면된다.
(등호 연산이라함은 입력값이 지정값과 같은지를 비교해보는 것이다.)
중첩 if문의 예제에서는 90점 이상이면 A+학점을 부여한다. 라는 조건문이었다면
swich문에서는 등급이 A라면 우수회원으로 구분한다. 라는 조건문이다.
이처럼 if문에서는 90점 이상이라는 값의 범위를 지정했다면 switch문에서는 A라는 값을 지정하여
원하는 실행문을 출력할 수 있는 조건문이라고 생각하면 이해가 빠를 것 같다 :)
반복문 for문
다음은 반복문 for문을 작성하고 출력해보았다.
사실 이전에 자바를 배우면서 for문이 가장 재밌고 흥미로웠던 기억이 있었는데,
내용이 쉬워서가 아니라 어떤 방법으로 활용하냐에 따라 결과값을 다양하게 출력할 수 있어서
어려우면서도 신기했고, 원하는 결과값이 출력되면 뿌듯한 마음에 재밌었던 것 같다!
for (초기화식; 조건식; 증감식) |
초기화식에서 시작을 지정해주고, 조건식에서 범위를 지정해주면
지정한 숫자에서부터 증감하여 지정한 범위까지의 결과를 알아볼 수 있다.
이 때 초기화식은 for의 조건문 밖에서 미리 선언해줄 수 있다.
for문 활용
1부터 K까지의 합 구하기
다음으로 for문을 활용해서 1부터 K까지의 합을 구해볼 수 있다.
1부터 입력값 K까지의 합을 구하기 위해 K값을 변수 endValue에 저장해주고,
조건문에서 조건식의 범위를 endValue까지로 지정해준 다음
실행값을 sum에 누적해주면 1부터 K까지의 합계를 구해 출력할 수 있다.
중첩 for문 활용
구구단 출력하기
그리고 그 다음으로 중첩 for문을 활용하여 구구단 출력하기!
중첩 if문과 마찬가지로 for문 내에 또다른 for문을 작성하여 중첩 활용할 수 있다.
먼저 바깥 for문에는 2단부터 9단까지 단수를 범위로 설정해주고,
안쪽 for문에는 1부터 9까지 곱해지는 수를 범위로 지정해 주면
실행문을 통해 2단부터 9단까지 구구단 목록을 출력할 수 있다.
항상 주의해야할 점은 변수와 문자열, 산술연산자, 괄호 등의 표기를 확실하게 구분하여 할 것!
중첩 for문 활용
별찍기
<console> * ** *** **** ***** |
중첩 for문 활용의 꽃 별찍기!
별찍기는 이전에 다른 수업을 들을때에도, 인강을 수강할 때에도 신기하고 재밌던 부분 중 하나였는데
여러가지 모양으로 활용하려고하니 헷갈리는 부분들이 많았어서 피라미드, 역피라미드 등등ㅂ
기타 활용은 주말동안 다시 한 번 꼭 해보기로하고, 기본까지만 딱 이해하고 넘어갔다! 아몰랑!
아마도 주말 중 하루는 별찍기로 가득한 일기를 쓰게 될 것 같다ㅋㅋㅋ
반복문 while문
마지막으로 조건문 while문은 쉽게 활용할 수 있다!
조건식에서 반드시 변수의 범위를 지정하여 참이면 실행문을 수행하고,
변수가 지정된 범위까지 반드시 증감해야만 while문이 종료된다.
실행문 앞에서 증감하면 초기화값에서 지정된 값만큼 증감된 값에서부터 실행문이 시작되고,
실행문 뒤에서 증감하면 초기화된 값에서부터 시작해서 실행문이 수행된다.
while문 활용
누적합계 구하기
while문을 가장 쉽게 활용할 수 있는 누적합계 구하기 :)
증감되는 값을 누적하여 변수에 담아주면 누적합계를 쉽게 구할 수 있다.
while문을 벗어나 실행문에서 지정한 범위값을 (i-1)로 활용하는 이유는
i가 100까지 증감되고, 101이 되었을 때 조건을 만족하지 않아 while문을 벗어나므로
while문을 벗어난 i의 값은 101인 상태이기 때문이다!
예를 들어 n씩 증감하여 누적하는 조건의 증감식이었다면 (i-n)으로 활용해주면 된다.
누적합계 구하기를 또 다른 방법으로 활용해보면 누적합계가 지정한 값을 넘지않는 범위를 구해볼 수 있다.
1부터 n까지의 합이 지정한 값을 넘으면 while문이 종료되도록 하는 조건식을 작성하여
조건식의 결과값이 조건식을 만족하지 않을때까지 계속해서 실행문이 수행된다.
while문 활용
입력값에 따른 동작
진짜진짜 마지막! 입력값에 따른 while문의 활용이다!!!
논리연산자 boolean을 활용하여 결과값이 true이면 계속해서 블록이 수행되도록 하고,
while문 내 if문의 조건이 실행되면 false로 인식하여 블록이 종료되도록 하는 코드이다.
아스키 코드를 활용한 KeyCode 입력값에 대한 while문의 활용도 예제를 통해 실습해보았지만
조금 더 이해할 필요가 있을 것 같아서 주말에 다시 해보고 제대로 이해한 후에 기록하기로 :)
★ 주말, 개천절까지 3일동안의 목표 ★
① for문을 활용한 별찍기 원리 이해하고 마스터하기
② 교재 1장부터 4장까지 확인문제 풀어보기
③ 수업 중 넘어갔던 예제문제 작성하고 실행해보기
④ 1일 1블로그 게을리하지않고 실천하기