π CS/νλ‘κ·Έλλ° μΈμ΄λ‘
[νλ‘κ·Έλλ° μΈμ΄λ‘ ] 9. κΈ°μ΅ μ₯μ λ°°λΉ
νκ·μ§
2022. 6. 7. 23:15
9.1 μ μ λ° λμ κΈ°μ΅ μ₯μ λ°°λΉ
μ μ κΈ°μ΅ μ₯μ ν λΉ
- λ²μ μκ°μ ν λΉ
- κΈ°μ΅μ₯μ ν¬κΈ°μ μμΉκ° μ μ μΌλ‘ κ³ μ
- λ°°μ΄ μ κ·Όμ½λκ° ν¨μ¨μ (ν¬κΈ°κ° κ³ μ λμ΄ μκΈ° λλ¬Έμ)
- μλΈνλ‘κ·Έλ¨μ recursionμ μνν μ μμ
λμ κΈ°μ΅ μ₯μ ν λΉ
- μ€ν μκ°μ ν λΉ
- λ³μ μ ν μν (μλ£ν, ν¬κΈ° λ±)
- μΈν°νλ¦¬ν° μΈμ΄..
c, c++ κ°μ건 μ μ λμ λ€ ν¨. static / auto
9.2 λ¨μ νλ‘κ·Έλ¨ (module)
- μ μΈ κ°λ₯ : μ§μ μλ³μ λμ
- μ§μ λ³μ : λ¨μ νλ‘κ·Έλ¨μμ μ μΈνμ¬ μ¬μ©νλ λ³μ (μ¦, ν΄λΉ λͺ¨λμ μλ λ³μλ non-local νΉμ global λ³μμ΄λ€)
- νμ±ν μν : ν λ¨μ νλ‘κ·Έλ¨μ μ€ν μμλΆν° μ’ λ£κΉμ§
- λΈλ‘λ λ¨μ νλ‘κ·Έλ¨μ μνλ€.
λ¨μ νμ±ν (unit activation)
- μ€ν μκ°μ ν λ¨μ νλ‘κ·Έλ¨μ΄ ννλ μν
- μ½λλΆ, νμ±λ μ½λλ‘ κ΅¬μ±
μ½λλΆ
- λͺ λ Ήμ΄λ€λ‘ ꡬμ±
- κ³ μ ν¬κΈ°, λ΄μ© λΆλ³
νμ± λ μ½λ
- μ§μ λ³μ λ± νλ‘κ·Έλ¨ μ€ν μ μꡬλλ μ 보λ€
- κ°λ³μ μΈ ν¬κΈ°, λ΄μ©
- λ°νμ£Όμ : λ°νμ μ€ν μ£Όμ. νΈμΆμμ μ½λ
- λμ λ§ν¬ : νΈμΆν λ¨μ νλ‘κ·Έλ¨μ νμ± λ μ½λ μ£Όμ.. λμ λ΄ν¬κ΄κ³ νν. μ»΄νμΌλ¬κ° λ°κ²¬νμ§ λͺ»ν non-local variableλ€μ λμ λ§ν¬λ₯Ό νκ³ κ°λ©° νμ
- <-> μ μ λ§ν¬ : μ»΄νμΌλ¬κ° λ§λ μ μ λ΄ν¬ κ΄κ³ νΈλ¦¬μμμ λ§ν¬
9.3 μ μ κΈ°μ΅ μ₯μ ν λΉ
- νλμ λ©μΈνλ‘κ·Έλ¨κ³Ό λ€μμ μλΈ νλ‘κ·Έλ¨μΌλ‘ ꡬμ±
- κΈ°μ΅μ₯μμ μ΄ μ©λ : λ²μμκ°μ κ³μ° (μ€νμκ°μ λ³νμ§ μμ)
- λͺ¨λ λ³μμ μ€νμ κ³ μ (μ£Όμμ λμ)
μ μ λ³μ(static variable)
- λ²μ μκ°μ ν¬κΈ°κ° κ³ μ , λ²μ μκ°μ ν λΉ
- μλͺ μ νλ‘κ·Έλ¨ μ€ν μκ°κ³Ό λμΌμ λ¨ (μ£Ό νλ‘μμ μ§μ ~ μ£Ό νλ‘μμ νμΆ)
μ₯μ
- ꡬν μ©μ΄, κ°κ²°ν¨
- ν¨μ¨μ μΈ νλ‘κ·Έλ¨ μ€ν
λ¨μ
- λΆμ‘±ν μ μ°μ± -> λ°°μ΄ ν¬κΈ° λΆλ³, recursion λΆκ°
- νμ±ν λμ§ μμ νμ± λ μ½λκ° μμ£Ό (μ€λ₯ μ²λ¦¬ λ£¨ν΄ λ±)
9.4 μ€ν κΈ°λ° κΈ°μ΅ μ₯μ λ°°λΉ
λμ κΈ°μ΅ μ₯μ ν λΉ κΈ°λ²
- μ€νν λΉ (for automatic allocation), ν ν λΉ (for dynamic alloc)
- λλΆλΆμ μ»΄νμΌλ¬ μΈμ΄μμ μ¬μ©νλ νν
- ALGOLμ μ¬μΈμ΄ : νμ± λ μ½λμ ν¬κΈ° λ°μΈλ© μκ° : λ²μμκ°, νμ±ν μμ , λμ λ³ν
μ€μ μ (semi-static) λ³μ
- κΈ°μ΅ μ₯μ ν¬κΈ° (offset) : λ²μ μκ°μ κ³ μ (μ μ λ°μΈλ©)
- κΈ°μ΅ μ₯μ ν λΉ : μ€ν μκ° (λμ ν λΉ)
- (μ μ μ΄λ λΉμ·νλ° ν λΉμ΄ μ€νμκ°μ΄λΌ μ€μ μ )
μ€λμ (semi-dynamic) λ³μ
- κΈ°μ΅ μ₯μ ν¬κΈ° : νμ±ν μμ λ°μΈλ© (λμ λ°μΈλ©)
- κΈ°μ΅ μ₯μ ν λΉ : λμ ν λΉ (μ€ν)
- (λμ μ΄λ λΉμ·νλ° ν¬κΈ°κ° νλ² μ ν΄μ§λ©΄ κ³ μ μ΄λΌ μ€λμ )
λμ λ³μ (dynamic) λ³μ
- μ€ν μ λ³μ ν¬κΈ°κ° μμλ‘ λ³ν μ μλ λ³μ
- νλ‘κ·Έλ¨ μ€ν μ€ μμ±/ν΄μ κ°λ₯
- ν ν λΉ (μ€νμ μλ€λ³΄λ©΄ λμ λ³μμ ν¬κΈ°λ₯Ό λ³κ²½μν€μ§ λͺ»νκΈ° λλ¬Έ)
- μ€νμλ λͺ μΈνλ§ μ μ₯νκ³ , μ€μ λ°μ΄ν°λ νμ μ μ₯ν΄μ μλ‘λ₯Ό ν¬μΈν°λ‘ μ°κ²°
- νμ€μΉΌμ conformant array(μ μ λ°°μ΄) λ λ°°μ΄μ ν μ μ(μ¬μ΄μ¦λ₯Ό λμ μΌλ‘ λ°μμ¬ μ μμ)λ₯Ό ν¬ν¨νλ νμ λ§€κ°λ³μ
-> μ€λμ λ³μλ‘ λ§λ λ€
Non-Local Variableμ μ°Έμ‘° λ°©λ²
- λ€λ₯Έ νμ± λ μ½λμ λ³μ μ°Έμ‘°
- Local Variableμ μμ μ μ§μ νκ²½(Local Environment)μ μμΉν κ²μ
- Non_local Variableμ λΉμ§μ νκ²½ (Non-Local Environment) μ΄λκ°μ μμΉν κ²μ
ex) Fortranμ μ§μ λ³μλ νμ¬ λ¨μ νλ‘κ·Έλ¨ νμ± λ μ½λμ μμΉν¨
ex) Fortranμ μ μ λ³μλ μμ€ν
μ 곡 νμ± λ μ½λ
ex) Algol-like μΈμ΄μ μ§μ λ³μλ νμ¬ λ¨μ νλ‘κ·Έλ¨ νμ± λ μ½λμ μμΉν¨
ex) Algol-like μΈμ΄μ λΉμ§μ λ³μλ μ μ λ΄ν¬ κ΄κ³λ₯Ό λ°λΌ κ²μν΄ κ°
9.5 ν κΈ°μ΅ μ₯μ ν λΉ
μμ κ·μΉ
- μ μ μμ κ·μΉ : λ²μ κΈ°λ²μμ μ¬μ©
- λμ μμ κ·μΉ : μΈν°νλ¦¬ν° κ·μΉμμ μ¬μ©
- λμ κΈ°μ΅ μ₯μ ν λΉμ νμ μ¬μ©