2021.10.19(화)
🌱 조건문
- switch문
/* switch문
* 위->아래로 순차적으로 실행(o) 해당 값 case로 jump/pass(x); 단, c언어 등에서는 goto를 통해 진짜 jump하는 코드 있긴 함
* 동등비교 -> 해당 case(층수) 버튼 누르고 (다른 층들 거쳐 해당 case 층으로) 엘리베이터 타고 내려감
*
* 표현식:
* switch(아래에 기술할 값들과 동등 비교를 할 대상자) {
* switch(정수, 문자, 문자열) {
*
* case 값1(정수, 문자, 문자열) : 대상자(값) == 값1이 true일 경우 실행할 코드1; // 지금까지 배운 '값' = literal값; Java 최신 version에서만 값 이외에도 변수명 입력 가능
* // 동등 비교 결과가 false인 경우 다음 case로 넘어감
* break; // switch 영역을 빠져나감
* case 값2 : 대상자 == 값2가 true일 경우 실행할 코드2;
* break;
* case 값n : 대상자 == 값n이 true일 경우 실행할 코드n;
* break;
* default : 실행할 코드; // if else구문에서 'else'와 같은 의미; 진짜 끝 의미 -> break 작성x
* }
*/
🌱 반복문
- for문
package com.kh.chap02.loop;
import java.util.Scanner;
public class A_For { // A_For 클래스 영역 시작
/* for문: for () {}
* 괄호() 안에 반복을 지정하는 부분이 있고, 초기식; 조건식; 증감식 3가지로 이루어짐 -> 각각 세미콜론;으로 구분됨
* (논리적으로 문장이 완성되었을 때 세미콜론; 사용)
*
* 표현법:
* for (초기식; 조건식; 증감식) { // 반복 횟수를 지정하는 요소들..
* 반복적으로 실행시키고자 하는 codes
* }
* - 초기식: 반복문이 시작될 때 '초기에 단 한 번만 실행'될 구문; 반복문에서 사용할 (제어)변수를 선언하고 초기화(initialization)하는 구문
* e.g. int i = 0;
*
* - 조건식: '반복문이 실행될 조건'을 작성하는 구문; 조건식은 연산(x) 질문/의문문(작니? 크니? 등)(o) -> 조건식이 true일 경우 반복문 실행 vs false일 경우 반복문 멈추고 빠져나옴
* e.g. i < 10; i가 10보다 작으면 true vs i가 10보다 같거나 크면 false
*
* - 증감식: '반복문을 제어하는 변수 값'을 증(++)감(--)시키는 구문; 보통 초기식에서 선언된 변수를 가지고 증감식 작성; 증감연산자가 주로 쓰임; 전/후위연산자 같은 결과
* e.g. i++
*/
public void method1() { // method1 영역 시작
// "안녕하세요" 1000번 반복해서 출력하고자 할 때
/* System.out.println("안녕하세요");
* System.out.println("안녕하세요");
* System.out.println("안녕하세요");
* System.out.println("안녕하세요");
* System.out.println("안녕하세요");
*/
// 적은 횟수는 얼마든지 복사+붙여넣기 가능하지만, 200회, 1234회 등 반복하고 싶을 때는 현대인이 할 일이 아님
// 1에서부터 5보다 작거나 같을 때까지 반복 수행 = 1 2 3 4 5
for (/*초기식*/; /*조건식*/; /*증감식*/) { // 이 상태로 호출/실행하면 무한한 인사 -> console창 빨간색 네모 click하면 멈춤 -> 빨간 버튼 안 먹으면 ctrl+Z(Eclipse 강제 종료)
System.out.println("안녕하세요");
}
} // method1 영역 끝
public void method2() { // method2 영역 시작
// 고정된 문자열이 아닌, 매번 달라지는, 출력 결과 확인하자
// i : 1
// i : 2..
// 방법1)
// 제일 단순하게 반복되는 횟수를 제어하는 표현법 = for (int i = 0; i < 10; i++)
for (int i = 1; i <= 3; i++) { // 제어변수 i, j, k..; 외국에서는 i < 12 방식으로 많이 사용; 우리나라에서는 이하/이상으로 많이 사용..
System.out.println("i : " + i);
}
// 방법2)
// for (int i = 0; i + 1 <= 3; i++) {
// System.out.println("i : " + (i + 1));
// }
// i값이 1에서부터 5와 같아질 때까지 1씩 증가할동안 반복 수행(총 5회 반복)
for (/*단계1 초기식: 제어변수 선언 및 초기화*/ int i = 1; /*단계2 조건식*/ i <= 5; /*단계4 증감식*/ i++) {
/*단계3 조건식의 결과가 true일 경우 실행할 codes*/ System.out.println(i+ "번 반갑습니다");
}
// 감소하는 예: i값이 10에서 6보다 작을 때까지 1씩 감소하면서 반복 수행
for (int i = 10; i >= 6; i--) {
System.out.println("i = " + i);
}
// 증감 2씩 증가하도록(i = 1 -> 3 -> 5 -> 7 -> 9) 증감식 써보기
for (int i = 1; i <= 9; i += 2) { // 조건식 i < 10; 증감식 i = i + 2로도 표기 가능
System.out.println("i = " + i);
}
// 20까지 3의 배수 출력
for (int i = 3; i <= 20; i += 3) {
System.out.print(i + " ");
}
System.out.println();
} // method2 영역 끝
} // A_For 클래스 영역 끝
📗 소감
- 프로그래밍 언어의 반복문의 구조와 실행 순서를 잘 익혀두어야겠다
- for문의 초기식, 조건식, 증감식을 의도하는 대로 마음껏 쓸 수 있도록 연습 많이 하자!
- 수업 내용이 점점 복잡해지고 많아지며 복습할 내용도 많아지고, 과제도 점점 어려워진다. 수업 후 저녁 시간을 알차게 보내자!
📗 homework: for문
1. 구구단
2. 별 찍기
public void gugudan() { // gugudan 메서드 영역 시작
// 사용자로부터 입력받은 숫자(정수)의 단을 출력하기; codes 텍스트로 게시판에 올리기
/* e.g.
* 입력 숫자 = 3
* ===== 3단 =====
* 3 X 1 = 3
* 3 X 2 = 6
* 3 X 3 = 9
* 3 X 4 = 12
* 3 X 5 = 15
* 3 X 6 = 18
* 3 X 7 = 21
* 3 X 8 = 24
* 3 X 9 = 27
*
* System.out.printf("%d X %d = %d", num, i, num * i);
*
*/
Scanner sc = new Scanner(System.in);
// version2) 2021.1.23 복습 시 보완
while (true) {
System.out.print("정수를 입력하세요: "); // "계산할 구구단 숫자를 입력하세요"
int num = sc.nextInt();
if (num <= 1 || 10 <= num) {
continue;
}
System.out.println("입력 숫자 = " + num); // 사용자가 입력한 정수 표시
System.out.printf("===== %d단 =====\n", num); // 구구단 제목
for (int i = 1; i <= 9 ; i++) { // 제어변수 i의 값이 1~9인 동안
System.out.printf("%d X %d = %d\n", num, i, num * i); // 이 형식(format)을 출력함
}
break;
}
// version1) 2021.10.19 숙제
// System.out.print("정수를 입력하세요: "); // "계산할 구구단 숫자를 입력하세요"
// int num = sc.nextInt();
//
// while (num <= 1 || 10 <= num) { // 2~9에 대해 구구단을 만들기 위해 적합한 정수값(2~9)을 입력받고자 범위 조건을 지정함
// System.out.print("정수를 다시 입력하세요: "); // 위 조건식의 값이 true인 경우, 즉 2~9 이외의 정수값이 입력된 경우, 사용자로부터 정수를 다시 입력받음
// num = sc.nextInt(); // 사용자가 입력한 정수는 위에서 선언한 int형 변수 num에 대입
// } // 위 num 범위 조건식의 값이 false가 되면, 즉 2 <= num && num <= 9이면, while문을 빠져나옴
//
// System.out.println("입력 숫자 = " + num); // 사용자가 입력한 정수 표시; printf("==%d단==", num);도 가능
// System.out.println("===== " + num + "단 ====="); // 구구단 제목
// for (int i = 1; i <= 9 ; i++) { // 제어변수 i의 값이 1~9인 동안
// System.out.printf("%d X %d = %d\n", num, i, num * i); // 이 형식(format)을 출력함
// }
} // gugudan 메서드 영역 끝
public void method3() { // method5 영역 시작
// *******
// *******
// *******
// *******
// *******
System.out.println("[중첩 for문]\n"); // ln과 \n에 의해 줄바꿈 2번/2줄 띔
// 2,3,4...중 가능; 3중 이상되면 헷갈림; 왠만한 문제는 2중으로 해결 가능
// 2단계
for (int i = 1; i <= 5; i++) { // 첫번째 for문 시작
for (int j = 1; j <= 7; j++) {
System.out.print("*");
// break; // = for문 안의 break -> 가장 가까운 for문 탈출 -> 두번째 for문에서 j=1일 때 * 한 번만 찍힘 -> 첫번째 for문으로 돌아감
}
System.out.println("반짝반짝+ln"); // 줄바꿈
} // 첫번째 for문 끝
System.out.println("[for문 안에 if문 쓰기]\n");
for (int i = 0; i < 30; i++) { // 첫번째 for문 시작
System.out.println((i + 1) + "번째 반복입니다");
// if문으로 10번째 반복마다 ☆ 넣어주기
if ((i + 1) % 10 == 0) {
System.out.println("☆반짝반짝☆");
// break; // = if문 안의 break -> 가장 가까운 for문 탈출 -> (i+1)이 처음으로 10의 배수일 때(i=9일 때)까지만 첫번째 for문 실행(총 10번 반복)하고 for문 탈출
}
} // 첫번째 for문 시작
} // method5 영역 끝
public void methodStars() { // 별 찍기 메소드 영역 시작
// 수업 내용x, 개인적인 호기심
// 구글 검색(https://elena90.tistory.com/entry/JAVA-%EC%9E%90%EB%B0%94-%EB%B3%84%EC%B0%8D%EA%B8%B0) 참고
Scanner sc = new Scanner(System.in);
System.out.print("별 쌓을 높이를 입력해주세요 :");
int num = sc.nextInt();
for (int i = 0; i < num; i++) {
for (int j = 0; j < num - i - 1; j++) {
System.out.print("☆");
}
for (int j = 0; j < 2 * i + 1; j++) { // 앞의 for문의 block이 종료되고, 이번 for문에서 제어변수 새로 선언 및 초기화하므로, 굳이 제어변수 k, l, m 등으로 바꿔서 쓸 필요 없는 듯..?
System.out.print("★");
}
for (int j = 0; j < num - i - 1; j++) {
System.out.print("☆");
}
System.out.println();
}
} // 별 찍기 메소드 영역 끝
'back-end dev > Java' 카테고리의 다른 글
[KH정보교육원] 8일차_배열 (0) | 2021.11.07 |
---|---|
[KH정보교육원] 7일차_반복문, 분기문 (0) | 2021.11.07 |
[KH정보교육원] 5일차_조건문 (0) | 2021.11.07 |
[KH정보교육원] 4일차_강제형변환, 연산자 (0) | 2021.11.07 |
[KH정보교육원] 3일차_출력문, 입력, 형변환 (0) | 2021.11.07 |