1. A Small Matter of Programming ¶
- λ°νμ λ§λ ¨νμ.(Build scaffolding.)
1.1. From Pseudocode to C ¶
- κ·Έλ₯ Binary Searchμ μλμ½λλ₯Ό Cλ¬Έλ²μΌλ‘ λ°κΏλμ κ²μ΄λ€.
1.2. A Test Harness ¶
- 루νλ₯Ό μ ν΄μ§ νμλ§νΌ λλ©΄μ ν
μ€νΈν κ°μ μΌμΌν μ
λ ₯ν΄μ£Όκ³ μλ€.
- νλ€λ³΄λ©΄ μ§κ²Ήλ€κ³ ν΄μ μ΄ μμ
μ μλνν΄μ€ λ°νμ λ€μ μΉμ
μμ 보μ¬μ€λ€.
- κ·Έλ¬λ©΄μ λ²κ·Έ μλ Binary Searchλ₯Ό 보μ¬μ£Όκ³ μλ€.
- ν° νλ‘κ·Έλ¨μμλ ν΄μμ μ 곡νλ λλ²κΉ
μ μ°μ§λ§, μ΄λ κ² μμ μκ³ λ¦¬μ¦ κ°μ κ²μμλ printλ¬Έ κ°μκ±Έ μ°λκ² νΈνλ€κ³ νλ€.
1.3. The art of assertion ¶
- cμμμ assertλ¬Έμ μ¬μ©νλ ν
ν¬λ κ°μ κ²μ 보μ¬μ£Όκ³ μλ€.
- λκ° assertμ μκΈ μ‘°μ μ΄λΌλ λ§λ‘ ννμ΄ λ λ―νλ€.
- λν Binary Searchμ κ°μ₯ μ€μν μ μ μ‘°κ±΄μΈ sortλμλκ°? 체ν¬ν΄μ£Όλ ν¨μλ₯Ό μμλ€ μ¨μ€λ€. μ΄ κ²½μ°μλ searchλ₯Ό νλ²λ§ ν΄μ£Όλ©΄ n + lg n μ΄λ κ² λ κ²μ΄λ€. νμ§λ§ sortλμλκ° μ²΄ν¬νλ ν¨μλ νλ²λ§ ν΄μ£Όλ©΄ λλ―λ‘, searchλ₯Ό ν λͺμ²,λͺλ§λ² λ리면 κ²°κ΅ lg n μ μλ ΄ν κ²μ΄λ€.
- μ°Έκ³ μμ : Writing Solid Code
1.4. Automated Test ¶
- μκΉ λ§νλ μ»΄ν¨ν°κ° μλμΌλ‘ ν
μ€νΈν΄μ£Όλ λ°νμ λ§λ€μ΄λ³΄μ.
- λ³κ±° μλ€. κ·Έλ₯ λ°°μ΄μ μμ±νλ€μ, forλ₯Ό μ ν΄μ§ νμλ§νΌ λλ €κ°λ©΄μ assert체ν¬ν΄μ€λ€. λμ΄λ€.--; μ΄λ κ² ν¨μΌλ‘μ¨, μ¬μ΄μ¦κ° 0, 1, 2μ μ κ³±μ, 2μ μ κ³±μκ° μλμ λͺ¨λ κ²½μ°μ μλ₯Ό ν
μ€νΈν΄λ³Όμκ° μλ€.
- μμ λ³λ£¨ λ³Ό κ±° μλ€. search 1000λ² μ΄μνλ€μ κ±Έλ¦° μκ°μ λν΄ κ·Έλνλ₯Ό κ·Έλ €λ³΄λ©΄, lg n μ κ·Έλνκ° λμ¨λ€.
1.6. The Complete Program ¶
1.7. Principles ¶
- Scaffolding
- Coding : νμ΄λ 벨μ μλμ½λλ‘λΆν° μμνμ.
- Testing : ν° μμ€ν
보λ€λ λ°ν λ΄μμ ν
μ€νΈνλκ² ν¨μ¬ μ½λ€.
- Debugging : λ°νμ΄λ κ³ λ¦½λ νλ‘κ·Έλ¨μ΄λ, μλ² λλλ κ³³μμλ νκΈ°κ° νλ€λ€. Column5μμ μ€λͺ
νλ€.
- Timing