🌐 CS:APP | μ œμ–΄ 흐름

μ΄μˆœκ°„Β·2025λ…„ 3μ›” 27일

CS:APP

λͺ©λ‘ 보기
13/23

🧭 CS:APP | Control Flow (μ œμ–΄ 흐름)λž€?


βœ… μ •μ˜

Control Flow(μ œμ–΄ 흐름)λž€
ν”„λ‘œκ·Έλž¨ λ‚΄μ˜ λͺ…령어듀이 μ‹€ν–‰λ˜λŠ” μˆœμ„œλ₯Ό μ •μ˜ν•˜λŠ” 흐름을 μ˜λ―Έν•œλ‹€.

즉, 컴퓨터가
1번 λͺ…λ Ήμ–΄ β†’ 2번 λͺ…λ Ήμ–΄ β†’ 쑰건에 따라 5번 λͺ…λ Ήμ–΄...
이런 μ‹μœΌλ‘œ μ‹€ν–‰ μˆœμ„œλ₯Ό μ–΄λ–»κ²Œ κ²°μ •ν•˜λŠλƒμ— λŒ€ν•œ μš©μ–΄μ΄λ‹€.


🧩 Control Flowκ°€ μ€‘μš”ν•œ 이유

  • ν”„λ‘œκ·Έλž¨μ΄ λ‹¨μˆœνžˆ μœ„μ—μ„œ μ•„λž˜λ‘œλ§Œ μ‹€ν–‰λ˜λŠ” 게 μ•„λ‹ˆκΈ° λ•Œλ¬Έ!
  • 쑰건문, 반볡문, ν•¨μˆ˜ 호좜, λΆ„κΈ°, μ˜ˆμ™Έ 처리 등은
    μ œμ–΄ 흐름을 λ°”κΎΈλŠ” μš”μ†Œλ“€μ΄λ‹€.

πŸ” μ£Όμš” μ œμ–΄ νλ¦„μ˜ ν˜•νƒœ

ν˜•νƒœμ„€λͺ…μ˜ˆμ‹œ
직선 νλ¦„μˆœμ°¨μ μœΌλ‘œ λͺ…λ Ήμ–΄ μ‹€ν–‰a β†’ b β†’ c
쑰건 뢄기쑰건에 따라 λ‹€λ₯Έ 경둜둜 λΆ„κΈ°if, switch
λ°˜λ³΅μΌμ • μ‘°κ±΄κΉŒμ§€ 반볡 μ‹€ν–‰for, while
ν•¨μˆ˜ ν˜ΈμΆœμ„œλΈŒλ£¨ν‹΄μ„ ν˜ΈμΆœν•˜κ³  λŒμ•„μ˜΄ν•¨μˆ˜ β†’ 리턴
μ˜ˆμ™Έ 처리 νλ¦„μ˜ˆμ™Έ 상황 λ°œμƒ μ‹œ 흐름 λ³€κ²½try-catch

πŸ–₯️ μ‹œμŠ€ν…œ 관점: μ œμ–΄ 흐름은 μ–΄λ–»κ²Œ κ΄€λ¦¬λ κΉŒ?

ν”„λ‘œμ„Έμ„œ λ‚΄λΆ€μ—λŠ” PC(Program Counter)λΌλŠ” λ ˆμ§€μŠ€ν„°κ°€ 있음
이 PCκ°€ κ°€λ¦¬ν‚€λŠ” μ£Όμ†Œμ— μžˆλŠ” λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰,
μ‹€ν–‰ ν›„μ—” λ‹€μŒ λͺ…λ Ήμ–΄ μ£Όμ†Œλ‘œ PCκ°€ 갱신됨

μƒν™©μ œμ–΄ 흐름
순차 μ‹€ν–‰PC += 4 (λ‹€μŒ λͺ…λ Ήμ–΄ μ£Όμ†Œ)
ν•¨μˆ˜ ν˜ΈμΆœν˜„μž¬ PCλ₯Ό μ €μž₯ν•˜κ³ , ν•¨μˆ˜ μ£Όμ†Œλ‘œ 이동
쑰건 뢄기쑰건 만쑱 μ‹œ PCλ₯Ό λΆ„κΈ° μœ„μΉ˜λ‘œ λ³€κ²½
μ˜ˆμ™Έ λ°œμƒOSκ°€ μΈν„°λŸ½νŠΈ ν•Έλ“€λŸ¬λ‘œ 흐름을 μ „ν™˜

🧠 ν”„λ‘œκ·Έλž¨ μˆ˜μ€€ μ˜ˆμ‹œ (Python)

def greet(name):
    if name == "Alice":
        print("Hello Alice")
    else:
        print("Hi there!")

greet("Alice")
μ œμ–΄ 흐름 μ„€λͺ…
greet 호좜 β†’ 쑰건 νŒλ‹¨ β†’ λΆ„κΈ° μ‹€ν–‰ β†’ μ’…λ£Œ ν›„ 볡귀

βœ… ν•œ 쀄 μš”μ•½

Control FlowλŠ” ν”„λ‘œκ·Έλž¨μ΄ λͺ…λ Ήμ–΄λ₯Ό μ–΄λ–€ μˆœμ„œλ‘œ μ‹€ν–‰ν•˜λŠ”μ§€λ₯Ό λ‚˜νƒ€λ‚΄λ©°,
쑰건, 반볡, ν•¨μˆ˜ 호좜, μ˜ˆμ™Έ 처리 등이 λͺ¨λ‘ μ œμ–΄ νλ¦„μ˜ ν•œ ν˜•νƒœμ΄λ‹€.

profile
μ„œνˆ΄μ§€μ–Έμ • 늘 행동이 먼저이기λ₯Ό

0개의 λŒ“κΈ€