Day 07(21.09.08) - Gomserker/Java-101 GitHub Wiki

08. ๋ฐ˜๋ณต๋ฌธ(for, while๋ฌธ)

1. ๋ฐ˜๋ณต๋ฌธ์ด๋ž€?

์–ด๋–ค ์ž‘์—…(์ฝ”๋“œ๋“ค)์ด ๋ฐ˜๋ณต์ ์œผ๋กœ ์‹คํ–‰๋˜๋„๋กํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.
๋ฐ˜๋ณต๋ฌธ์˜ ์ข…๋ฅ˜๋กœ๋Š” for๋ฌธ, while๋ฌธ, do-while๋ฌธ์ด ์žˆ๋‹ค. ์ด ์ค‘ for๋ฌธ๊ณผ while๋ฌธ์€ ์„œ๋กœ ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋‘˜์˜ ์ฐจ์ด์ ์€
for๋ฌธ์€ ๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ ์•Œ๊ณ  ์žˆ์„ ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ, while๋ฌธ์€ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋ฐ˜๋ณตํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
do-while์˜ ๊ฒฝ์šฐ, while๋ฌธ๊ณผ๋Š” ์กฐ๊ฑด์„ ๋จผ์ € ๊ฒ€์‚ฌํ•˜๋А๋ƒ, ๋‚˜์ค‘์— ๊ฒ€์‚ฌํ•˜๋А๋ƒ์˜ ์ฐจ์ด๋งŒ ์žˆ๊ณ  ๋™์ž‘ ๋ฐฉ์‹์€ ๋™์ผํ•˜๋‹ค.

2. for๋ฌธ

int sum = 0; // sum ๋ณ€์ˆ˜์˜ ๊ฐ’์„ 0์œผ๋กœ ์ดˆ๊ธฐํ™”
sum = sum + 1;
sum = sum + 2;
sum = sum + 3;
sum = sum + 4;
sum = sum + 5;
System.out.println("1~5๊นŒ์ง€์˜ ํ•ฉ: " + sum);

1์—์„œ 5๊นŒ์ง€์˜ ํ•ฉ์„ ๊ตฌํ•  ๋•Œ๋Š” ์œ„์˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ด๋„ ์ข‹์ง€๋งŒ, ๋งŒ์•ฝ 10๊นŒ์ง€, 100๊นŒ์ง€์˜ ํ•ฉ์„ ๊ตฌํ•  ๊ฒฝ์šฐ์—๋Š” ์ฝ”๋“œ๊ฐ€ ๋๋„ ์—†์ด ๋Š˜์–ด๋‚˜๊ฒŒ ๋œ๋‹ค.
์ด๋Ÿฐ ๊ฒฝ์šฐ์— ์•„๋ž˜์™€ ๊ฐ™์ด for๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ์•„์ฃผ ํšจ๊ณผ์ ์ด๋‹ค.

// 1~100์˜ ํ•ฉ๊ณ„๋Š”? ์ด ์งˆ๋ฌธ์—์„œ ๋ฐ˜๋ณต๋ฌธ์„ ๋ช‡ ๋ฒˆ์ด๋‚˜ ์‚ฌ์šฉํ• ์ง€ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ for๋ฌธ์„ ์‚ฌ์šฉํ•œ๋‹ค.
int sum = 0;
for (int i = 1; i <= 100; i++) {
  sum = sum + i;
 }
System.out.println("1~100๊นŒ์ง€์˜ ํ•ฉ: " + sum);

for๋ฌธ์˜ ๋™์ž‘ ๋ฐฉ์‹

for (์ดˆ๊ธฐํ™”์‹; ์กฐ๊ฑด์‹; ์ฆ๊ฐ์‹) {
  
  **์‹คํ–‰๋ฌธ**
  
 }
์ดˆ๊ธฐํ™”์‹ โ†’ ์กฐ๊ฑด์‹ โ†’ ์‹คํ–‰๋ฌธ โ†’ ์ฆ๊ฐ์‹ โ†’ ์กฐ๊ฑด์‹ โ†’ ...

for๋ฌธ์˜ ์‹คํ–‰๋ ๋•Œ, ์ดˆ๊ธฐํ™”์‹์ด ์ œ์ผ ๋จผ์ € ์‹คํ–‰๋œ ํ›„, ์กฐ๊ฑด์‹์˜ ๊ฒฐ๊ณผ๊ฐ€ true๋ฉด ์‹คํ–‰๋ฌธ์„ ์‹คํ–‰์‹œํ‚ค๊ณ  false๋ฉด ๋ธ”๋ก์ด ์‹คํ–‰๋˜์ง€ ์•Š๊ณ  for๋ฌธ์ด ์ข…๋ฃŒ๋œ๋‹ค.
์‹คํ–‰๋ฌธ์ด ์‹คํ–‰๋˜๋ฉด ์ฆ๊ฐ์‹์ด ์‹คํ–‰๋˜๊ณ , ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋‹ค์‹œ ์กฐ๊ฑด์‹์„ ํ‰๊ฐ€ํ•œ๋‹ค.
์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์œ„์˜ ์‹์„ ๋‹ค์‹œ ์‚ดํŽด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

int sum = 0;
for (int i = 1; i <= 100; i++) {
  sum = sum + i;
 }
System.out.println("1~100๊นŒ์ง€์˜ ํ•ฉ: " + sum);
  1. int 1 = 1์ด๋ผ๋Š” ์ดˆ๊ธฐ ๊ฐ’์ด ์„ค์ •๋œ๋‹ค.
  2. ์กฐ๊ฑด์‹(i๋Š” 100 ์ดํ•˜์ธ๊ฐ€?)์˜ ๊ฒฐ๊ณผ๊ฐ€ true์ธ์ง€ ํ™•์ธํ•œ๋‹ค.
  3. sum=0์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ sum์— i๋ฅผ(์ด ๋‹จ๊ณ„์—์„  ์ดˆ๊ธฐ๊ฐ’ 1) ๋”ํ•œ๋‹ค.
  4. ์ฆ๊ฐ์‹(i++)์ด ์‹คํ–‰๋œ๋‹ค.
  5. ์ฆ๊ฐ์‹์ด ์‹คํ–‰๋œ ๋’ค์— ๋‹ค์‹œ ์กฐ๊ฑด์‹์˜ ๊ฒฐ๊ณผ๊ฐ€ true์ธ์ง€ ํ™•์ธํ•œ๋‹ค. ์ดˆ๊ธฐ๊ฐ’ 1์ด ์ฆ๊ฐ์‹์„ ๊ฑฐ์ณ 2๊ฐ€ ๋์œผ๋ฏ€๋กœ ์กฐ๊ฑด์‹์˜ ๊ฐ’์ด true์ด๋‹ค.
  6. ์‹คํ–‰๋ฌธ์ด ๋‹ค์‹œ ์‹คํ–‰๋œ๋‹ค. (0 + 1 + 2๊ฐ€ ๋˜๋Š” ๊ฒƒ)

์ด๋ ‡๊ฒŒ i๊ฐ€ 100์ด ๋ ๋•Œ๊นŒ์ง€ ์œ„ ์‹์ด ๋ฐ˜๋ณต๋œ๋‹ค. 101์ด ๋˜๋Š” ์ˆœ๊ฐ„ ์กฐ๊ฑด์‹(i๊ฐ€ 100 ์ดํ•˜์ธ๊ฐ€?)์˜ ๊ฒฐ๊ณผ๊ฐ€ false๊ฐ€ ๋˜๋ฏ€๋กœ for๋ฌธ์ด ์ข…๋ฃŒ๋œ๋‹ค.

์ค‘์ฒฉ for๋ฌธ โ˜…โ˜…โ˜…

for๋ฌธ์€ ๋˜ ๋‹ค๋ฅธ for๋ฌธ์„ ๋‚ดํฌํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๊ฒƒ์„ ์ค‘์ฒฉ for๋ฌธ์ด๋ผ๊ณ  ํ•œ๋‹ค.
์ด ๊ฒฝ์šฐ ๋ฐ”๊นฅ์ชฝ for๋ฌธ์ด ํ•œ ๋ฒˆ ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค ์ค‘์ฒฉ๋œ for๋ฌธ์€ ์ง€์ •๋œ ํšŸ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•ด์„œ ๋Œ๋‹ค๊ฐ€
๋‹ค์‹œ ๋ฐ”๊นฅ์ชฝ for๋ฌธ์œผ๋กœ ๋Œ์•„๊ฐ€ ๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•œ๋‹ค.
์ถœ๋ ฅ ๊ฒฐ๊ณผ

zzzz
zzz
zz
z

์œ„์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์ค‘์ฒฉ for๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
์ž‘๋™ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

for (int k = 4; k > 0; k--) {
  for (int l = 0; l < k; l++) {
	System.out.print("z");
	}
  System.out.println("");
}

์ค‘์ฒฉ for๋ฌธ ์—ฐ์Šต - ๋ณ„์ฐ๊ธฐ

1. 
*
*
**
**
***

2.
*
 *
  *
   *
    *

3.
*

 *

  *

   *

    *

์ฝ”๋“œ๋Š” Code ํƒญ์— ์ž‘์„ฑํ•จ

3. while๋ฌธ

for๋ฌธ์ด ์ •ํ•ด์ง„ ํšŸ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•œ๋‹ค๋ฉด, while๋ฌธ์€ ์กฐ๊ฑด์‹์ด true์ผ ๊ฒฝ์šฐ์— ๊ณ„์†ํ•ด์„œ ๋ฐ˜๋ณต๋œ๋‹ค.
์กฐ๊ฑด์‹์—๋Š” ๋น„๊ต ๋˜๋Š” ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์‹์ด ์ฃผ๋กœ ์˜ค๋Š”๋ฐ, ์กฐ๊ฑด์‹์ด false๊ฐ€ ๋˜๋ฉด ๋ฐ˜๋ณต์„ ๋ฉˆ์ถ”๊ณ  while๋ฌธ์„ ์ข…๋ฃŒํ•œ๋‹ค.
์•„๋ž˜๋Š” while๋ฌธ์˜ ํ˜•์‹๊ณผ ์‹คํ–‰ ํ๋ฆ„์ด๋‹ค.

while(์กฐ๊ฑด์‹) {
  
  ์‹คํ–‰๋ฌธ;

 }
์กฐ๊ฑด์‹ โ†’ ์‹คํ–‰๋ฌธ โ†’ ์กฐ๊ฑด์‹ โ†’ ...

while๋ฌธ์ด ์ฒ˜์Œ ์‹คํ–‰๋  ๋•Œ ์กฐ๊ฑด์‹์„ ํ‰๊ฐ€ํ•˜๊ณ , ํ‰๊ฐ€ ๊ฒฐ๊ณผ๊ฐ€ true๋ฉด ์‹คํ–‰๋ฌธ์„ ์‹คํ–‰ํ•œ๋‹ค.
์‹คํ–‰๋ฌธ์ด ์ „๋ถ€ ์‹คํ–‰๋˜๋ฉด ๋‹ค์‹œ ์กฐ๊ฑด์‹์œผ๋กœ ๋Œ์•„๊ฐ€ ์กฐ๊ฑด์‹์„ ํ‰๊ฐ€ํ•œ๋‹ค.
for ๋ฌธ๋‹จ์—์„œ ์˜ˆ์‹œ๋กœ ๋“ค์€ 1~100 ๊นŒ์ง€์˜ ํ•ฉ์„ while๋ฌธ์œผ๋กœ ์ž‘์„ฑํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

int sum = 0;
int i = 1;

while(1<=100) {
  sum = sum + i;
  i++
}

System.out.println("1~100์˜ ํ•ฉ: " + sum);

์ฃผ์˜ํ•ด์•ผ ํ•  ๋ถ€๋ถ„์€, while๋ฌธ ๋‚ด์—์„œ ๊ณ„์† ๋ˆ„์ ๋˜๋Š” ๊ฐ’์„ ๊ฐ–๋Š” ๋ณ€์ˆ˜(sum)๋Š” while๋ฌธ ์‹œ์ž‘์ „์— ๋ฏธ๋ฆฌ ์„ ์–ธํ•ด์•ผํ•œ๋‹ค.