[Java] 16. for문

@_@·2021년 6월 2일

Java 1부

목록 보기
16/41

ㅇ for문

스크린샷

  • 주로 반복 횟수가 정해진 경우에 사용
  • 와일문 포문 둘다 호환 가능해
    각각
    • 와일문은 ()에 조건만 쓰면 되지만 위 아래로 코드를 추가해줘야 하고
  • while 문으로 반복문 작성 : 반복 횟수를 정해서 쓰는 용도로 썼어
    • 그러면 초기 설정값도 들어가고
    • 안에 ++도 들어가고
    • 코드를 단계적으로 적어줘야 해
    • 포문은 위 아래 코드 필요 없지만 ()이 안이 복잡해져

그러면 이걸 간단하게 만들자. 포문으로 써보자.

와일문에서 썼던 3단계를 한 ()안에 넣는거야

  • 검사조건에 의해 반복 여부 결정
    • 참이면 중괄호 안이 참이면 실행. 거짓이면 반복 안 해
  • 조건을 변화 시키는 것들이 검사조건 앞뒤로 붙어

for문 안에서 실행이 어떻게 되는 지를 알아야 해

제일 먼저 실행되는 건 초기화 구문
반복문 실행되면 최초로 한 번 밖에 사용 안 해
그래서 반복문 안에서 사용할 변수를 선언하는 용도로 사용
두번째는 검사조건을 봐
그 다음 중괄호로 가 - 실행문장들 실행
그 다음 반복 후 작업
1번으로 돌아가는 게 아니라 2번 검사조건으로 가
1-2-3-4-
-2 3-4-
-2-3-4
중간 반복문이 거짓이 될 때까지 반복

그래서 그 변수 여러 개 만들 수 있어

공간을 이해하고 있어야 해
변수는 포문 안에서 얼마든지 쓸 수 있다.
반복이 끝나고 나서 해야할 연산 작업이라서 ??????도 할 수 있어




ㅇfor문 예제
1~100 3의 배수 합 출력

  • 선생님이 쓰진 변수명 number
    넘버값이 1부터 100까지 계속 증가하는 포문이 돼
    그러면 그 안에서 3의 배수만

누적 할 꺼니까
포문 앞에 누적용 변수 하나 만들고 나서
이때 선언만 하면 안되고 초기화 변수 넣어줘야 해
포문 안에 누적 하는 식 써주면 돼

ㅇ 포매팅 쓸 수 있어
스트링이라는 놈한테 스캐너처럼 포매팅이라는 기능이 있어
이걸 이용하면 문자열 포매팅을 할 수 있어


<6교시>

ㅇ  수열문제
for문을 사용하여 1에서 100까지 다음과 같은 순서로 출력하시오.
for문 실습
수열이 반복되서 - 붙여서 나오게
내풀이

쌤풀이1

쌤풀이2

ㅇ공백 넣는 법 : 자바에서는 " " 문자열을 이용해서

  • 그냥 문자 -를 더 출력하는 방식도 좋아

ㅇ 나중에 기초문법 끝나고 응용 서비스 만드는 걸로 가면 이런 거 할 겨를 없어!
어떻게 하면 코드를 효율적으로 짤까 고민할 기회 없으니까
그니까 할 수 있을 때 많이 사고해 봐!


<7교시>

ㅇ 규칙 찾기

ㅇ 규칙을 가로로 보는 게 좋아

컴퓨터는 가로로 출력하고
다음 줄로 내려가고 다음주로 출력하고


2단을 먼저 출력한다고 생각하고

디바이드 앤 컨쿼

작은 단위로 먼저 봐. 이걸 먼저 해결하고 그 담에 이거를 가지고 다른 걸 뭘 하는 게 좋을지


효율적으로 만들어질 수 있도록


그 안의 코드의 규칙들을 찾아서 계속 바꿔나가는

처음부터 최적의 코드를 짜야지보다는
일단 결과물을 만들어봐야지 하면 돼

그리고 나서 그 안에서 조금씩 최적화 하는 방법을 찾아가면 돼

결과물은 그대로 나오게 하지만 구조를 효율적으로 바꿔주는
그 방법으로 차근차근

2단을 출력해라
구체적으로 결과물을 만들겠지
"2단 : 21=2 22=4 23=6 24=8 "

이걸 좀 더 변환

이거를 잘게 잘게 쪼갠다고 생각해
21=2
2
2=4
이런 식으로 쪼개보면 2*뭐=값 이렇게

리팩토링의 핵심??은 실행결과가 바뀌면 안돼

2단은 1번만 출력하는데

밑에는 비슷한 구조의 문장패턴이 반복적으로 일어나고 있어  => 반복문

얘를 반복문 안에 집어넣으면 10번 프린트 할 걸 한 번 반복문으로 처리할 수 있어
2에서 출발해서 9까지 반복하는 걸 => for(int i=2; i<9; i++) 포문으로 처리

이때 달라지는 부분을 찾아내서 => 포매팅으로!! 오오!!


처음부터 효율적인 코드를 만들기는 어려워
이걸 계속 수정해서 최적화 하는 걸 연습하는 게 좋아


이제 여기에 3단을 추가하겠다 생각하면 돼

2단을 똑같이 붙여서 3으로만 바꿔주면 되겠지?!

2단과 3단 사이에 줄바꿈을 위해서

이렇게 3단 4단 5단... 이것도 반복이네?!
그러면 이 덩어리륿 ㅏㄴ복문안에 다시 집어넣음녀 돼

그리고 반복되는 부분을 새로 만든 변수 j로 바꿔

??? 놓쳤어

포문이 많아지면 많아질수록 머리로 생각하는 건 한계 있어
이걸 작은 단위로 분해해서 규칙을 찾아봐

이걸 연습해봐.

ㅇ 별 찍기 연습
방법 이미 알고 있지만
리팩토링 방법 이용해서 하나씩 하나씩 규칙 찾는 연습을 해보기

똑같은 문장이 반복적으로 일어나느 걸 찾아서
이제 다시 코드를 줄여나갈거야

포문 자동완성 배웠나???

ㅇ 알고리즘은 문제를 많이 풀어보고 응용해보고 ?? 해보는 게 중요해
처음부터 센스가 뛰어난 사람 아니면
꾸준히 풀어야 실력 늘 수 있어
꾸준히 안 하면 실력 떨어져

54321

대칭되게

안쪽에서
5개
5번부터 1이 될때까지 * 나오게 하면 돼

리팩토링

1 반복되는 것

5번
4번
3번
2번
1번 출력

for i를 5번 반복


<7교시>

리팩토링
5번 반복할건데

syso
빈칸0개
System.out.print("*"); 이거 10개
빈칸0개
빈칸1개
출력8개
빈칸1개
빈칸2개
출력6개
빈칸2개
빈칸3개
출력4개
빈칸3개

빈칸4개
출력2개
빈칸4개

for문 1에서 4까지
스타는 10에서

빈칸 4개

ㅇ 역피라미드 혼자 고민해보기

공백이거나 아무것도 안 들어간다는

ㅇ 역피라미드 숙제 고고

profile
STEP BY STEP

0개의 댓글