π₯ κΈ°κ³μ΄ β μ΄μ λΈλ¬ / λμ΄μ λΈλ¬, μμ΄μ λΈλ¬ β μ΄μ λΈλ¦¬μ΄ β μ»΄νμΌλ¬, μΈν°νλ¦¬ν° λ±β κ³ κΈ μΈμ΄
μ¬λμ΄ μ°λ λ§μ μ»΄ν¨ν°λ μμλ£μ§ λͺ»νλ€. μ»΄ν¨ν°λ νΈλμ§μ€ν°λ₯Ό ν΅ν΄ 0κ³Ό 1( μ΄μ§μ ), μ¦ κΈ°κ³μ΄λ§ μμλ€μ μ μλ€. νμ§λ§ κΈ°κ³μ΄λ μ¬λμ΄ μμ보기 νλ€λ€. κ·Έλμ μ΄ μ¬μ΄μ μ΄μ λΈλ¦¬μ΄κ° μ¬μ΄λ₯Ό μ°κ²°ν΄ μ€λ€.
μ΄μ
λΈλ¦¬μ΄
μ΄μ λΈλ¦¬μ΄λ μ»΄ν¨ν°κ° μ¬μ©νλ κΈ°κ³μ΄μ μΌλμΌλ‘ λμλλ νλ‘κ·Έλλ° μΈμ΄μ΄λ€. μ¦ μ¬λκ³Ό μ»΄ν¨ν° μ¬μ΄μ μλ‘ μ΄ν΄ν μ μλ μΈμ΄λ‘ λ²μνκΈ° μν μΈμ΄μ΄λ€. μ΄μ λΈλ¬λ μ΄μ λΈλ¦¬μ΄λ₯Ό κΈ°κ³μ΄λ‘ λ²μν΄μ£Όλ κ²μ λ§νκ³ λμ΄μ λΈλ¬/μμ΄μ λΈλ¬λ κΈ°κ³μ΄λ₯Ό μ΄μ λΈλ¦¬μ΄λ‘ λ°κΎΈμ΄ μ£Όλ κ²μ λ§νλ€. μ΄μ λΈλ¦¬μ΄λ 'low-level programming language( μ κΈ μΈμ΄ )'λΌκ³ λ λΆλ¦°λ€.
κ³ κΈ μΈμ΄( high-level programming language )
κ³ κΈ μΈμ΄λ μ¬λμ΄ μ΄ν΄νκΈ° μ½κ² μμ±λ νλ‘κ·Έλλ° μΈμ΄μ΄λ€. μ»΄νμΌλ¬, μΈν°νλ¦¬ν° λ±μ λν΄ μ΄μ λΈλ¦¬μ΄λ‘ λ²μλλ λ° μ΄ λ μ¬μ©νλ μΈμ΄λ§λ€ λ²μκΈ°μ μ’ λ₯λ λ€ λ€λ₯΄λ€. κ³ κΈ μΈμ΄μλ C, C++, Python, Java, JavaScript λ±μ΄ μλ€.
Algorithm( μκ³ λ¦¬μ¦ )
π Algorithm ?
μμλλ‘ λ¬Έμ ( μ¬μ©μκ° μꡬνλ κΈ°λ₯ )λ₯Ό ν΄κ²°νκΈ° μν μ§μμ μ°¨μ λͺ¨μ
μκ°κ³Ό λ©λͺ¨λ¦¬λ₯Ό κ³ λ €νμ¬ ν¨μ¨μ μΌλ‘ κ΅¬μ± λ° μ ννλ€.
μκ³ λ¦¬μ¦ νν λ°©μ
flowchart( μμλ / νλ¦λ )
πμ§μμ¬νμ μ§ν©μ λνλ‘ ννν κ²
flowchart
λ 'μμλ', 'νλ¦λ'λΌκ³ λ λΆλ₯Έλ€. λ¬Έμ λ μμ
μ λ²μλ₯Ό κ²°μ νκ³ λΆμνμ¬ λΆμν λ΄μ©μ ν΅ν΄ λμΆν νμν μμ
κ³Ό μ²λ¦¬μ μμλ₯Ό ν΅μΌλ κΈ°νΈμ λνμΌλ‘ μ¬μ©νμ¬ λννν κ²μ΄λ€. 'λ
Όλ¦¬( logic )'μ νλ¦μ νΉμ ν μμλ κΈ°νΈ( flowchart symbol )μ μ¬μ©νμ¬ λμμ μΌλ‘ ννν λ€μ΄μ΄κ·Έλ¨μΌλ‘ μ¬μ©νλ κΈ°νΈλ λ€μκ³Ό κ°λ€.
pseudocode
pseudo
λ νμμ, κ°μ§μ λΌλ λ»μ κ°μ§κ³ μμΌλ―λ‘ pseudocode
λ μμ¬μ½λ, μ μ¬ λΆνΈλΌλ μλ―Έμ΄λ€.
μκ³ λ¦¬μ¦μ νλ‘κ·Έλλ° μΈμ΄λ‘ ꡬνν΄λ΄λ κ²μ²λΌ κ°κ°μ λ¨κ³λ₯Ό μμμ λ§κ² ν μ€μ© μμ±νλ€. μ»΄ν¨ν° νλ‘κ·Έλ¨μ΄λ μκ³ λ¦¬μ¦μ΄ μνν΄μΌ ν λ΄μ©μ μΈκ°μ΄ μ¬μ©νλ μΈμ΄λ‘ κ°λ΅ν μμ ν΄ λμ κ²μΌλ‘ μ ν΄μ§ κ·μΉμ μμΌλ λ€λ₯Έ μ¬λκ³Ό 곡μ νμ λ μμ보기 μ½λλ‘ κ°λ³μ μΌκ΄μ±μ κ°μ§κ³ μμ΄μΌ νλ€. μ§μ μ¬νμ μ’
λ₯λ₯Ό 맨 μμ μμ±νμ¬ νμ
μ΄ μ©μ΄νλλ‘ μμ±νλ κ²μ΄ λλΆλΆμ΄λ€.
// example: λ‘κ·ΈμΈ νκΈ°
Output: 'μμ΄λλ₯Ό μ
λ ₯ν΄μ£ΌμΈμ'
Input: μ¬μ©μκ° μμ΄λ μ
λ ₯
Store: μ¬μ©μ μΈν id λ³μμ μ μ₯ ( id = 'id' )
If (id): Output: 'λΉλ°λ²νΈλ₯Ό μ
λ ₯νμΈμ'
Input: μ¬μ©μκ° λΉλ°λ²νΈ μ
λ ₯ ( pw = 'pw' )
Store: μ¬μ©μ μΈν pw λ³μμ μ μ₯
If (pw): Output: 'λ‘κ·ΈμΈ μ±κ³΅'
Else: Output: 'μλͺ»λ λΉλ°λ²νΈμ
λλ€.'
if (!id): Output: 'μλͺ»λ μμ΄λμ
λλ€. μμ΄λλ₯Ό νμΈν΄μ£ΌμΈμ'
μκ³ λ¦¬μ¦ κΈ°λ³Έ ꡬ쑰
sequence
π μκ³ λ¦¬μ¦ λ΄μμ 곡κ°μ Β·μκ°μ μΌλ‘ μ ν΄μ Έ μλ μμ
sequence
λ νΉμ μμ
μ΄ μλ£λλ μμλ‘ flowchartλ pseudocodeλ‘ ννλλ κ²μ΄ λ°λ‘ μνμ€μ΄λ€. κ°κ°μ stepμ μνλμ΄μΌ ν μ§μμ¬νμ΄κ³ μμμ μ μ°¨λ₯Ό μ¬λ°λ₯΄κ² μνν΄μΌλ§ μλλλ‘ λμμ΄ κ°λ₯νλ€.
selection
π sequenceκ° νΉμ 쑰건μ λ°λΌ λ¬λΌμ§λ κ²μ μλ―Έ, 쑰건 νκ°
μ£Όμ΄μ§ μν©μ 쑰건μ νκ°νκ³ κ·Έμ λ°λΌ λ€λ₯Έ μνμ€λ₯Ό μ ννμ¬ μ€νν©λλ€. μ£Όλ‘ λΆκΈ° μ²λ¦¬λ‘ ꡬνλλ©°, μμλ‘λ 쑰건문(if-else)μ΄ μλ€. νλ‘κ·Έλ¨μ΄ μ΄λ€ μμ μμ λ€μ μ μ°¨λ₯Ό 'μ ν' νκΈ° μν΄ μ‘°κ±΄μ 체ν¬νκ³ μ΄μ λ°λ₯Έ λ΅μ μ§μ λ μ μ°¨λ₯Ό μννλ κ²μ΄λ€.
iteration/loop
π νΉμ μ μ°¨λ₯Ό λ°λ³΅νλ κ³Όμ
νΉμ μμ
μ΄λ μ μ°¨λ₯Ό λ°λ³΅νλ κ³Όμ μ΄λ€. μ£Όμ΄μ§ 쑰건μ νμΈνμ¬ μ°ΈμΌ λ κ³μ λ°λ³΅νλ©°, μ‘°κ±΄μ΄ κ±°μ§μ΄ λλ©΄ λ°λ³΅μ μ’
λ£νλ€. μμλ‘λ forλ¬Έ, whileλ¬Έ λ±μ΄ μλ€.
π Algorithm β High-level language ( = νλ‘κ·Έλλ° μΈμ΄ ) β Machine code β Program
νλ‘κ·Έλλ°μ΄λ μ΄λ€ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄( λͺ©μ μ λ¬μ±νκΈ° μν΄ ) 'μμ€ μ½λ'λ₯Ό μμ±ν΄ νλ‘κ·Έλ¨μ λ§λλ μΌμ΄λ€. μ΄λ° νλ‘κ·Έλλ°μ μ΄λ€ κ³Όμ μ ν΅ν΄ μ΄λ£¨μ΄μ§κΉ ?
μ¦, νλ‘κ·Έλλ°μ μ΄λ€ κΈ°λ₯μ μν μμ€ μ½λλ₯Ό νλ‘κ·Έλλ° μΈμ΄λ‘ μμ€ μ½λλ₯Ό μμ±νλ μΌμ΄λ€.
syntax
λͺ¨λ νλ‘κ·Έλ¨ μΈμ΄λ κ°κ°μ 'κ³ μ μ κ·μΉ'μ κ°μ§λ€. μ΄ κ³ μ μ κ·μΉμ syntaxλΌκ³ νλ€.
syntaxκ° μ§μΌμ§μ§ μμΌλ©΄ νλμ¨μ΄κ° μ΄ν΄ν μ μλλ‘ λ¨Έμ μ½λλ‘ λ³νλμ§ μλλ€.
bug / error + debugging
νλ‘κ·Έλλ°μ νλ€κ° 'μλ§μ§ μμ' μμ±μ νκ² λμμ λ error(bug) κ° λ°μνλ€. μ΄λ¬ν errorλ syntax errorμ logical errorλ‘ λΆλ₯λλ€.