[Clojure] ๋ฐ˜๋ณต๋ฌธ

[์›๋ณธ ๋งํฌ]

ํด๋กœ์ €๋Š” ๋†€๋ž๊ฒŒ๋„ ๋ช…๋ นํ˜• ์–ธ์–ด ์Šคํƒ€์ผ์˜ ๋ฐ˜๋ณต๋ฌธ๋“ค์„ ์ง€์›ํ•œ๋‹ค.

while๋ฌธ
๊ธฐ๋ณธ์ ์ธ ํ˜•ํƒœ์˜ ๋ฐ˜๋ณต๋ฌธ์ด๋‹ค.
์•„๋ž˜์˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค.

(while (์กฐ๊ฑด์‹)
**ย ย ย  (do**
**ย ย ย ย ย ย ย  ํ‘œํ˜„์‹๋“ค...**
**ย ย ย  )**
)

์กฐ๊ฑด์‹์—์„œ ๋ฐ˜๋ณต ์กฐ๊ฑด์„ ๋ช…์‹œํ•  ์ˆ˜๋‹จ์€, ๋ณดํ†ต ์•„ํ†ฐ ๋ณ€์ˆ˜๋ฅผ ์“ด๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋ฐ˜๋ณต๋ฌธ์€ ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ nil์„ ๋ฑ‰๋Š”๋‹ค.

์•„๋ž˜ ์ฝ”๋“œ๋Š” ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ๋‹ค. image

image


doseq๋ฌธ
๋ฒ”์œ„๊ธฐ๋ฐ˜ ๋ฐ˜๋ณต๋ฌธ์ด๋‹ค.
๋ฐฐ์—ด์ด๋‚˜ ๋ฆฌ์ŠคํŠธ ๋“ฑ์˜ ์‹œํ€€์Šค ๊ฐ’์„ ๋ฐ›๊ณ , ๊ทธ ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ๊ตฌ๋ฌธ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

์•„๋ž˜์˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค.
(doseq [์ˆœํšŒ๋ณ€์ˆ˜ ์‹œํ€€์Šค๊ฐ’]
**ย ย ย  (ํ‘œํ˜„์‹)**
)

์•„๋ž˜ ์ฝ”๋“œ๋Š” ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ๋‹ค. image

image


dotimes๋ฌธ
๊ต‰์žฅํžˆ ๋‹จ์ˆœํ™”๋œ ๋ฐ˜๋ณต๋ฌธ์ด๋‹ค.
๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ ์ •์ˆ˜๋กœ ๋ฐ›๊ณ , ๋”ฑ ๊ทธ๋งŒํผ๋งŒ ๋ˆ๋‹ค.

(dotimes [ํ˜„์žฌํšŸ์ˆ˜ ๋ฐ˜๋ณตํšŸ์ˆ˜๊ฐ’]
**ย ย ย  (ํ‘œํ˜„์‹)**
)

์•„๋ž˜๋Š” ์œ„์˜ ์ฝ”๋“œ๋ฅผ ๋”์šฑ ๋‹จ์ˆœํ™”ํ•œ ์ฝ”๋“œ๋‹ค. image

image


loop๋ฌธ
๋ฃจํ”„๋Š” ๋ฃจํ”„์ธ๋ฐ ์žฌ๊ท€ ํ˜•์‹์˜ ๊ธฐ๊ดดํ•œ ๋ฃจํ”„๋‹ค.
์•ˆ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ๋ฐ˜๋ณต์šฉ ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์žฌ๊ท€์‹์„ ํ˜ธ์ถœํ•ด์„œ ๋ณ€ํ™”์‹œํ‚ค๋ฉฐ ๋ฐ˜๋ณต์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๋Œ€์ถฉ ์ด๋Ÿฐ์‹์œผ๋กœ ์“ธ ์ˆ˜ ์žˆ๋‹ค.
(loop [๋ณ€์ˆ˜๋ช… ๊ฐ’]
**ย ย ย  ํ‘œํ˜„์‹๋“ค...**
)

๊ทผ๋ฐ ์ด๊ฑด ๋ฐ˜๋ณต์„ ์ง€์†ํ•˜๋ ค๋ฉด recur ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉฐ loop์—์„œ ๋ฐ”์ธ๋”ฉํ•œ ๋ณ€์ˆ˜๋ฅผ ๋ณ€ํ™”์‹œ์ผœ์•ผ ํ•œ๋‹ค.
๊ทธ๋ž˜์„œ ๋ณดํ†ต when ์กฐ๊ฑด์ ˆ์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•œ๋‹ค.

์ด๋Ÿฐ์‹์œผ๋กœ ๋ง์ด๋‹ค. image

image ์ด๋Ÿฌ๋ฉด i๊ฐ€ 5๊ฐ€ ๋˜๊ธฐ ์ „๊นŒ์ง€๋งŒ recur๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ๋ฐ˜๋ณต์„ ์ง€์†ํ•œ๋‹ค.


๊ทธ๋ƒฅ ์žฌ๊ท€ํ•จ์ˆ˜
ํด๋กœ์ €๋Š” ํ•จ์ˆ˜ํ˜• ์–ธ์–ด์ด๋ฏ€๋กœ, ๋‹น์—ฐํžˆ ์žฌ๊ท€ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. image

image


์ฐธ์กฐ
https://www.tutorialspoint.com/clojure/clojure_while_statement.htm
https://www.tutorialspoint.com/clojure/clojure_doseq_statement.htm
https://www.tutorialspoint.com/clojure/clojure_dotimes_statement.htm
https://www.tutorialspoint.com/clojure/clojure_loop_statement.htm