ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Swift] Loop Statements (for-in, while) (๋ฐ˜๋ณต๋ฌธ)
    Swift 2022. 1. 11. 23:15

    (๋ชจ๋“  ์ฝ”๋“œ๋Š” Playground์—์„œ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.)

     

    Swift์˜ ๋ฐ˜๋ณต๋ฌธ์—๋Š” for-in ๋ฌธ, while ๋ฌธ์ด ์žˆ๋‹ค.

     

    1. for-in ๋ฌธ

    for-in ๋ฌธ์˜ ๋ฌธ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

    for-in ๋ฌธ์€ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•ด์„œ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ์œผ๋กœ, item์—๋Š” ๋ฐ˜๋ณต ํšŒ์ฐจ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์ธ ๋ฐ˜๋ณต ์ƒ์ˆ˜ (Loop Constant)๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.

    items๋Š” ๋ฐ˜๋ณต ์ƒ์ˆ˜์˜ ๋ฒ”์œ„๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ˜๋ณต ์ƒ์ˆ˜์™€ ๋ฐ˜๋ณต ์ƒ์ˆ˜์˜ ๋ฒ”์œ„ ํ‘œํ˜„์‹์„ ๊ตฌ์„ฑํ•˜๋Š” lowerBound, upperBound์˜ ํ˜•์‹์€ ๋™์ผํ•˜๋‹ค.

     

    ์•„๋ž˜ ์ฝ”๋“œ๋Š” sum์ด๋ผ๋Š” ๋ณ€์ˆ˜์— 1๋ถ€ํ„ฐ 10๊นŒ์ง€์˜ ์ˆซ์ž๋ฅผ ๋”ํ•˜๋Š” ๋ฐ˜๋ณต๋ฌธ์ด๋‹ค.

     

    ๋˜ ๋‹ค๋ฅธ ์˜ˆ์‹œ๋ฅผ ์‚ดํŽด๋ณด์ž.

    ์•„๋ž˜ ์ฝ”๋“œ๋Š” print๋ฌธ์„ 3๋ฒˆ ์ถœ๋ ฅํ•˜๋Š” ์ฝ”๋“œ์ธ๋ฐ, ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ์–ด๋ณด๋ฉด ๋ฐ˜๋ณต ์ƒ์ˆ˜ i๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ๋Œ€์ฒดํ•˜๊ฑฐ๋‚˜ '_' ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ๊ณ  ํ•œ๋‹ค.

    ์ด์ฒ˜๋Ÿผ '_'๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์™€์ผ๋“œ์นด๋“œ ํŒจํ„ด (Wildcard Pattern)์ด๋ผ๊ณ  ํ•œ๋‹ค.

    Wildcard Pattern (_)์€ ๋ฐ˜๋ณต๋ฌธ ๋‚ด์—์„œ ๋ฐ˜๋ณต ์ƒ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๋•Œ ๋ฐ˜๋ณต ์ƒ์ˆ˜๋ฅผ ์ƒ๋žตํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

    ์™€์ผ๋“œ์นด๋“œ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์ด ๋†’์•„์ง€๊ณ , ๋ฐ˜๋ณต ์ƒ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๋ช…์‹œ์ ์œผ๋กœ ์„ ์–ธํ•˜๊ฒŒ ๋œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ๋˜ํ•œ ์ ˆ์•ฝ๋œ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

     

    ๋˜ํ•œ for-in stride ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

    ์•„๋ž˜ ์˜ˆ์‹œ๋Š” 1๋ถ€ํ„ฐ 10๊นŒ์ง€์˜ ์ˆซ์ž ์ค‘ ํ™€์ˆ˜๋งŒ ์ถœ๋ ฅ์‹œํ‚ค๋Š” ์ฝ”๋“œ์ด๋‹ค.

    ์ฝ”๋“œ
    ์‹คํ–‰๊ฒฐ๊ณผ

    from์—๋Š” ์‹œ์ž‘ ๊ฐ’ (lowerBound)์ด, to์—๋Š” ์ข…๋ฃŒ ๊ฐ’ (upperBound)์ด ๋“ค์–ด๊ฐ„๋‹ค.
    ์ด ๋•Œ, ์ข…๋ฃŒ ๊ฐ’์€ ๋ฒ”์œ„์— ํฌํ•จ๋˜์ง€ ์•Š๊ณ  (to - 1)๊นŒ์ง€๊ฐ€ ๋ฒ”์œ„์— ํฌํ•จ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฐ˜๋ณต ์ƒ์ˆ˜๋ฅผ by ๊ฐ’๋งŒํผ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

     

    ์›๋ž˜ for ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด for ๋ฌธ ๋‚ด์—์„œ i์˜ ๊ฐ’์„ +2์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๊ฑฐ๋‚˜, for๋ฌธ์„ 10๋ฒˆ ๋ฐ˜๋ณตํ•˜์—ฌ i๊ฐ€ 2๋กœ ๋‚˜๋ˆ ์ง€๋Š” ์ˆ˜์ธ์ง€ ํ™•์ธํ•ด์•ผํ•˜๋Š”๋ฐ for-in stride๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

    ๊ทธ๋ฆฌ๊ณ  for-in stride๋ฌธ์—์„œ๋Š” ReversedCollection์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ๋ฒ”์œ„๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š”๋ฐ,

    ์•„๋ž˜์™€ ๊ฐ™์ด lowerBound๊ฐ’์„ upperBound๋ณด๋‹ค ํฌ๊ฒŒ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

    ์ฝ”๋“œ
    ์‹คํ–‰๊ฒฐ๊ณผ

     

     

     

    for-in stride ๋ฌธ์€ ํฌ๊ฒŒ stride(from:to:by)์™€ stride(from:through:by)์˜ 2๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

    stride(from:to:by)์˜ ๋ฒ”์œ„๋Š” from ~ (to -1)์ด์ง€๋งŒ, stride(from:through:by)์˜ ๋ฒ”์œ„๋Š” from ~ through ๋ผ๋Š” ๊ฒƒ์„ ์•Œ์•„๋‘์ž!

     

    ์œ„์˜ ์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด

    stride(from:to:by)๋Š” ๋ฒ”์œ„์— 10์ด ํฌํ•จ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— 8๊นŒ์ง€๋งŒ ์ถœ๋ ฅ์ด ๋˜์—ˆ๊ณ ,

    stride(from:through:by)๋Š” ๋ฒ”์œ„์— 10์ด ํฌํ•จ๋˜๊ธฐ ๋•Œ๋ฌธ์— 10๊นŒ์ง€ ์ถœ๋ ฅ์ด ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

     

     

     

     

    for ๋ฌธ์„ ์ด์šฉํ•˜๋ฉด Collection์— ํฌํ•จ๋œ ์š”์†Œ๋“ค์„ ์—ด๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ,

    ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

     

    2. while ๋ฌธ

    while ๋ฌธ์˜ ๋ฌธ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

    while๋ฌธ์€ ์กฐ๊ฑด์„ ํŒ๋‹จํ•œ ํ›„์— ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

    ์กฐ๊ฑด์ด ์ฐธ์ธ ๋™์•ˆ ๊ณ„์† ๋ฐ˜๋ณต๋ฌธ ๋‚ด์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฌดํ•œ ๋ฃจํ”„์— ๋น ์ง€์ง€ ์•Š๋„๋ก ์กฐ๊ฑด์„ ์ž˜ ์„ค์ •ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค.

     

    1๋ถ€ํ„ฐ 10๊นŒ์ง€์˜ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ์ฝ”๋“œ๋ฅผ while ๋ฌธ์„ ๋‚˜ํƒ€๋‚ด๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

     

    ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์‹คํ–‰ํ•˜๊ณ  ๋‚˜์„œ ์กฐ๊ฑด์„ ํŒ๋‹จํ•˜๋Š” while ๋ฌธ๋„ ์žˆ๋Š”๋ฐ, ์ด๋ฅผ repeat-while ๋ฌธ์ด๋ผ๊ณ  ํ•œ๋‹ค.

    ๋”ฐ๋ผ์„œ ์กฐ๊ฑด์„ ๋จผ์ € ํŒ๋‹จํ•  ๊ฒฝ์šฐ์—๋Š” while ๋ฌธ, ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์‹คํ–‰ํ•œ ํ›„์— ์กฐ๊ฑด์„ ํŒ๋‹จํ•  ๊ฒฝ์šฐ์—๋Š” repeat-while ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. 

     

    ์•„๋ž˜ ์˜ˆ์‹œ๋ฅผ ๋ณด์ž.

    ์™ผ์ชฝ : while ๋ฌธ / ์˜ค๋ฅธ์ชฝ : repeat-while ๋ฌธ

    ์™ผ์ชฝ์˜ ์ฝ”๋“œ๋Š” while ๋ฌธ์„ ์‚ฌ์šฉํ•œ ๊ฒƒ์ด๊ณ , ์˜ค๋ฅธ์ชฝ์˜ ์ฝ”๋“œ๋Š” repeat-while ๋ฌธ์„ ์‚ฌ์šฉํ•œ ๊ฒƒ์ด๋‹ค.

    ์™ผ์ชฝ์˜ while ๋ฌธ์€ num์ด 10์ด๊ธฐ ๋•Œ๋ฌธ์—, ์กฐ๊ฑด์ด ๊ฑฐ์ง“์ด ๋˜์–ด while ๋ฌธ ๋‚ด์˜ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— num์˜ ๊ฐ’์€ ๊ทธ๋Œ€๋กœ 10์ด๋‹ค.

    ์˜ค๋ฅธ์ชฝ์˜ repeat-while๋ฌธ์€ num์ด 10์ด์ง€๋งŒ, ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์‹คํ–‰ํ•˜๊ณ  ์กฐ๊ฑด์„ ํŒ๋‹จํ•˜๊ธฐ ๋•Œ๋ฌธ์— num์˜ ๊ฐ’์€ 11์ด๋‹ค.

     

     

    ์ •๋ฆฌ

    for ๋ฌธ์€ Range์™€ Collection์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๋‹ค.

    while ๋ฌธ์€ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋ฐ˜๋ณตํšŸ์ˆ˜๊ฐ€ ๊ฒฐ์ •๋˜๊ณ , ๋ฐ˜๋ณต๋ฌธ์ด ๋ฌดํ•œ ๋ฃจํ”„์— ๋น ์ง€์ง€ ์•Š๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์กฐ๊ฑด์ด ํŠน์ • ์‹œ์ ์— false๊ฐ€ ๋˜๋Š”์ง€๋ฅผ ํ™•์ธํ•ด์•ผํ•œ๋‹ค.

    ๋”ฐ๋ผ์„œ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์ž!

    ๋Œ“๊ธ€

Designed by Tistory.