๊ด€๋ฆฌ ๋ฉ”๋‰ด

JiYoung Dev ๐Ÿ–ฅ

[์ž๋ฐ”] ์กฐ๊ฑด๋ฌธ (if / if - else / if - else if - else / switch) ๋ณธ๋ฌธ

full stack/JAVA

[์ž๋ฐ”] ์กฐ๊ฑด๋ฌธ (if / if - else / if - else if - else / switch)

Shinjio 2023. 2. 20. 15:35

์ž๋ฐ” pre-training - 2023.02.20 ํ•™์Šต ๋‚ด์šฉ

 

์ฐธ๊ณ ์ž๋ฃŒ

 

์ฝ”๋”ฉ๊ต์œก ํ‹ฐ์”จํ”ผ์Šค์ฟจ

4์ฐจ์‚ฐ์—…ํ˜๋ช…, ์ฝ”๋”ฉ๊ต์œก, ์†Œํ”„ํŠธ์›จ์–ด๊ต์œก, ์ฝ”๋”ฉ๊ธฐ์ดˆ, SW์ฝ”๋”ฉ, ๊ธฐ์ดˆ์ฝ”๋”ฉ๋ถ€ํ„ฐ ์ž๋ฐ” ํŒŒ์ด์ฌ ๋“ฑ

tcpschool.com

 

๐Ÿ”Ž ์ œ์–ด๋ฌธ (control flow statements)

ํ”„๋กœ๊ทธ๋žจ์˜ ๋ช…๋ น์˜ ์ˆœ์„œ(ํ๋ฆ„)๋ฅผ ์ œ์–ดํ•˜๋Š” ๋ฌธ๋ฒ•

 

์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์ด ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์ˆœ์ฐจ์ ์ธ ํ๋ฆ„์„ ์ œ์–ดํ•ด์•ผ๋งŒ ํ•  ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊น€. ์ด๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น๋ฌธ์„ ์ œ์–ด๋ฌธ์ด๋ผ๊ณ  ํ•˜๋ฉฐ, ์ด๋Ÿฌํ•œ ์ œ์–ด๋ฌธ์—๋Š” ์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ ๋“ฑ์ด ์žˆ์Œ

์ด๋Ÿฌํ•œ ์ œ์–ด๋ฌธ์— ์†ํ•˜๋Š” ๋ช…๋ น๋ฌธ๋“ค์€ ์ค‘๊ด„ํ˜ธ({})๋กœ ๋‘˜๋Ÿฌ์‹ธ์—ฌ ์žˆ์œผ๋ฉฐ, ์ด๋Ÿฌํ•œ ์ค‘๊ด„ํ˜ธ ์˜์—ญ์„ ๋ธ”๋ก(block)์ด๋ผ๊ณ  ํ•จ

 

์ž๋ฐ” ์ œ์–ด๋ฌธ์˜ ์ข…๋ฅ˜
- ์กฐ๊ฑด๋ฌธ : ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋ช…๋ น์„ ์‹คํ–‰ (if๋ฌธ, switch๋ฌธ)
- ๋ฐ˜๋ณต๋ฌธ : ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋ช…๋ น์„ ๋ฐ˜๋ณต (while๋ฌธ, do-while๋ฌธ, for๋ฌธ)

 

๐Ÿ“– ์กฐ๊ฑด๋ฌธ(conditional statements)

์ฃผ์–ด์ง„ ์กฐ๊ฑด์‹์˜ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ๋ณ„๋„์˜ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์ œ์–ดํ•˜๋Š” ๋ช…๋ น๋ฌธ (๊ฐ ์กฐ๊ฑด๋งˆ๋‹ค ํ•ด๋‹นํ•˜๋Š” ๋ช…๋ น์„ ์‹คํ–‰)

์ฃผ์–ด์ง„ ์กฐ๊ฑด์„ ๋น„๊ตํ•˜์—ฌ ์กฐ๊ฑด์— ๋งŒ์กฑํ•  ๊ฒฝ์šฐ ์ง€์ •๋œ ๋ช…๋ น๋ฌธ์„ ์‹คํ–‰ํ•˜๊ณ  ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ๋‹ค์Œ ๋‹จ๊ณ„์˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋Š” ๊ตฌ๋ฌธ

 

โš™ ์กฐ๊ฑด๋ฌธ์˜ ์ข…๋ฅ˜

1. if ๋ฌธ
2. if - else ๋ฌธ
3. if - else if - else ๋ฌธ (๋‹ค์ค‘ if ๋ฌธ)
4. switch ๋ฌธ

 

โš™ if ๋ฌธ

๊ฐ„๋‹จํ•˜๊ฒŒ ์ฐธ์„ ๊ตฌ๋ถ„ํ•  ๋•Œ ์‚ฌ์šฉ

์กฐ๊ฑด์‹์˜ ๊ฒฐ๊ณผ๊ฐ€ ์ฐธ(true)๋ผ๋ฉด ์ฃผ์–ด์ง„ ๋ช…๋ น๋ฌธ(์‹คํ–‰๋ฌธ์žฅ1, ์‹คํ–‰๋ฌธ์žฅ2)์„ ์‹คํ–‰ํ•˜๋ฉฐ,

์กฐ๊ฑด์‹์˜ ๊ฒฐ๊ณผ๊ฐ€ ๊ฑฐ์ง“(false)๋ผ๋ฉด ์•„๋ฌด๊ฒƒ๋„ ์‹คํ–‰ํ•˜์ง€ ์•Š์Œ

if (์กฐ๊ฑด์‹) {
        ์‹คํ–‰๋ฌธ์žฅ1;
        ์‹คํ–‰๋ฌธ์žฅ2;
}

 

โš™ if - else ๋ฌธ

๊ฐ„๋‹จํ•˜๊ฒŒ ์ฐธ๊ณผ ๊ฑฐ์ง“์„ ๊ตฌ๋ถ„ํ•  ๋•Œ ์‚ฌ์šฉ

์กฐ๊ฑด์‹์˜ ๊ฒฐ๊ณผ๊ฐ€ ์ฐธ(true)๋ผ๋ฉด ์ฃผ์–ด์ง„ ๋ช…๋ น๋ฌธ(์‹คํ–‰๋ฌธ์žฅ1, ์‹คํ–‰๋ฌธ์žฅ2)์„ ์‹คํ–‰ํ•˜๊ณ ,

์กฐ๊ฑด์‹์˜ ๊ฒฐ๊ณผ๊ฐ€ ๊ฑฐ์ง“(false)๋ผ๋ฉด ๊ฑฐ์ง“์— ํ•ด๋‹นํ•˜๋Š” ๋ช…๋ น๋ฌธ(์‹คํ–‰๋ฌธ์žฅ3) ์‹คํ–‰

if (์กฐ๊ฑด์‹) {
    ์‹คํ–‰๋ฌธ์žฅ1;
    ์‹คํ–‰๋ฌธ์žฅ2;
} else {
      ์‹คํ–‰๋ฌธ์žฅ3;
}

 

โ–ผโ–ผโ–ผ if - else ๋ฌธ์„ ์ด์šฉํ•œ ์ฝ”๋“œ ์ž‘์„ฑ โ–ผโ–ผโ–ผ

 

โš™ ๋‹ค์ค‘ if ๋ฌธ (if - else if - else ๋ฌธ)

๋‹ค์ˆ˜์˜ ์กฐ๊ฑด๋ฌธ์„ ์ฐจ๋ก€๋Œ€๋กœ ๋น„๊ตํ•˜์—ฌ ์‹คํ–‰

์ฒซ ๋ฒˆ์งธ ์กฐ๊ฑด์‹์ด ๊ฑฐ์ง“์ผ ๋•Œ ๋‘ ๋ฒˆ์งธ ์กฐ๊ฑด์‹ ์‹คํ–‰ํ•˜๊ณ , ๋‘ ๋ฒˆ์งธ ์กฐ๊ฑด์‹๋„ ๊ฑฐ์ง“์ด๋ผ๋ฉด ์„ธ ๋ฒˆ์งธ ์กฐ๊ฑด์‹ ์‹คํ–‰

if (์กฐ๊ฑด์‹1) {
    ์‹คํ–‰๋ฌธ์žฅ1;
} else if (์กฐ๊ฑด์‹2) {
      ์‹คํ–‰๋ฌธ์žฅ2;
} else if (์กฐ๊ฑด์‹3) {
      ์‹คํ–‰๋ฌธ์žฅ3;
}

 

โ–ผโ–ผโ–ผ if - else if - else ๋ฌธ์„ ์ด์šฉํ•œ ์ฝ”๋“œ ์ž‘์„ฑ โ–ผโ–ผโ–ผ

 

* ์‚ผํ•ญ ์—ฐ์‚ฌ์ž์— ์˜ํ•œ ์กฐ๊ฑด๋ฌธ 

์ž๋ฐ”์—์„œ๋Š” ๊ฐ„๋‹จํ•œ if / else ๋ฌธ์€ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Œ

 

๋ฌธ๋ฒ•
์กฐ๊ฑด์‹ ? ๋ฐ˜ํ™˜๊ฐ’1 : ๋ฐ˜ํ™˜๊ฐ’2 

⇒ ์กฐ๊ฑด์‹์ด ์ฐธ์ด๋ฉด ๋ฐ˜ํ™˜๊ฐ’1 ์ถœ๋ ฅ, ๊ฑฐ์ง“์ด๋ฉด ๋ฐ˜ํ™˜๊ฐ’ 2 ์ถœ๋ ฅํ•˜๋Š” ์‹คํ–‰๋ฌธ

 

โš™ switch ๋ฌธ

if - else ๋ฌธ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ฃผ์–ด์ง„ ์กฐ๊ฑด ๊ฐ’์˜ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ํ”„๋กœ๊ทธ๋žจ์ด ๋‹ค๋ฅธ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•˜๋Š” ์กฐ๊ฑด๋ฌธ

 

switch๋ฌธ์€ if - else ๋ฌธ๋ณด๋‹ค ๊ฐ€๋…์„ฑ์ด ๋” ์ข‹์œผ๋ฉฐ, ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ตœ์ ํ™”๋ฅผ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์–ด ์†๋„ ๋˜ํ•œ ๋น ๋ฅธ ํŽธ

ํ•˜์ง€๋งŒ switch ๋ฌธ์˜ ์กฐ๊ฑด ๊ฐ’์œผ๋กœ๋Š” intํ˜•์œผ๋กœ ์Šน๊ฒฉํ•  ์ˆ˜ ์žˆ๋Š”(integer promotion) ๊ฐ’๋งŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Œ.

์ฆ‰, ์ž๋ฐ”์—์„œ๋Š” switch ๋ฌธ์˜ ์กฐ๊ฑด ๊ฐ’์œผ๋กœ byteํ˜•, shortํ˜•, charํ˜•, intํ˜•์˜ ๋ณ€์ˆ˜๋‚˜ ๋ฆฌํ„ฐ๋Ÿด์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.

๋˜ํ•œ, ์ด๋Ÿฌํ•œ ๊ธฐ๋ณธ ํƒ€์ž…์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ์ฒด๋กœ ํฌ์žฅํ•ด ์ฃผ๋Š” ๋ž˜ํผ ํด๋ž˜์Šค(Wrapper class) ์ค‘์—์„œ ์œ„์— ํ•ด๋‹นํ•˜๋Š” Byte, Short, Character, Integer ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ. ๊ทธ๋ฆฌ๊ณ  enum ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ ์—ด๊ฑฐ์ฒด(enumeration type)์™€ String ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.

 

์ฆ‰, switch ๋ฌธ์€ if - else ๋ฌธ๋ณด๋‹ค๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ์ด ์ ์Œ

 

switch (์กฐ๊ฑด ๊ฐ’) {
    case ๊ฐ’1:
        ์กฐ๊ฑด ๊ฐ’์ด ๊ฐ’1์ผ ๋•Œ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ๋ช…๋ น๋ฌธ;
        break;
    case ๊ฐ’2:
        ์กฐ๊ฑด ๊ฐ’์ด ๊ฐ’2์ผ ๋•Œ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ๋ช…๋ น๋ฌธ;
        break;
...
    default:      // ํ•„์š”ํ•  ๋•Œ ์„ ์–ธ ๊ฐ€๋Šฅ
        ์กฐ๊ฑด ๊ฐ’์ด ์–ด๋– ํ•œ case ์ ˆ์—๋„ ํ•ด๋‹นํ•˜์ง€ ์•Š์„ ๋•Œ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ๋ช…๋ น๋ฌธ;
        break;
}

 

โ–ผโ–ผโ–ผ switch ๋ฌธ์„ ์ด์šฉํ•œ ์ฝ”๋“œ ์ž‘์„ฑ โ–ผโ–ผโ–ผ

 

break ํ‚ค์›Œ๋“œ๋Š” ์กฐ๊ฑด ๊ฐ’์— ํ•ด๋‹นํ•˜๋Š” case ์ ˆ์ด๋‚˜ default ์ ˆ์ด ์‹คํ–‰๋œ ๋’ค์— ์ „์ฒด switch๋ฌธ์„ ๋น ์ ธ๋‚˜๊ฐ€๊ฒŒ ํ•ด ์คŒ. ๋งŒ์•ฝ, break ํ‚ค์›Œ๋“œ๊ฐ€ ์—†๋‹ค๋ฉด, ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š” switch๋ฌธ์˜ case์ ˆ ์ดํ›„์˜ ๋ชจ๋“  case ์ ˆ์ด ์ „๋ถ€ ์‹คํ–‰๋  ๊ฒƒ

 

โ–ผโ–ผโ–ผ switch ๋ฌธ์—์„œ break ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์„ ๋•Œ ๊ฒฐ๊ณผ โ–ผโ–ผโ–ผ