CμΈμ΄ νλ‘κ·Έλ¨ - CμΈμ΄μ κΈ°μ΄λ₯Ό μμ보μ
β
μλ νμΈμ. μμνμ λλ€.
CμΈμ΄λ?
CμΈμ΄λ νμ¬ μ¬μ©νκ³ μλ κ±°μ λͺ¨λ μ»΄ν¨ν° μμ€ν μμ μ¬μ©ν μ μλ νλ‘κ·Έλλ° μΈμ΄μ λλ€.
β
νλ‘κ·Έλλ° μΈμ΄λ μ»΄ν¨ν°μ μμ€ν μ ꡬλμν€λ μννΈμ¨μ΄λ₯Ό μμ±νκΈ° μν μΈμ΄λ₯Ό μλ―Έν©λλ€. μ΄λ¬ν νλ‘κ·Έλλ° μΈμ΄λ ν¬κ² μ κΈ μΈμ΄(low-level language)μ κ³ κΈ μΈμ΄(high-level language)λ‘ λλ©λλ€.
β
μ κΈ μΈμ΄μ κ³ κΈ μΈμ΄λ μ’κ³ λμ μΈμ΄κ° μλλΌ, κΈ°κ³κ° μ΄ν΄νκΈ° μ¬μ΄κ°(μ κΈ μΈμ΄), μ¬λμ΄ μ΄ν΄νκΈ° μ¬μ΄κ°(κ³ κΈ μΈμ΄)λ₯Ό μλμ μΌλ‘ λλ κ°λ μ΄λΌκ³ ν μ μμ΅λλ€.
β
μ κΈ μΈμ΄λ μ»΄ν¨ν°κ° μ΄ν΄νκΈ° μ½κ² μμ±λ νλ‘κ·Έλλ° μΈμ΄λ‘, λνμ μΈ μΈμ΄λ‘λ κΈ°κ³μ΄(machine language)μ μ΄μ λΈλ¦¬μ΄(assembly language) λ±μ΄ μμ΅λλ€. μ΄ μΈμ΄λ μ€ν μλκ° λ§€μ° λΉ λ₯΄μ§λ§, μ¬λμ΄ λ°°μ°κΈ°μλ λ§€μ° μ΄λ €μ νλ‘κ·Έλ¨μ μ μ§λ³΄μκ° νλλλ€.
β
κ³ κΈ μΈμ΄λ μ»΄ν¨ν°λ³΄λ€λ μ¬λμ΄ μκΈ° μ½λλ‘ μμ±λ νλ‘κ·Έλλ° μΈμ΄μ λλ€.
β
κ³ κΈ μΈμ΄λ μ»΄νμΌλ¬λ μΈν°ν리ν°μ μν΄ κΈ°κ³κ° μ΄ν΄ν μ μλ μΈμ΄λ‘ λ²μλμ΄ μ€νλ©λλ€. κ·Έλμ μ κΈ μΈμ΄λ³΄λ€λ μλμ μΌλ‘ μ€νμλκ° λ립λλ€. λνμ μΈ μΈμ΄λ‘λ μλ°, νμ΄μ¬ λ±μ΄ μμ΅λλ€. μ΄ μΈμ΄λ μ κΈ μΈμ΄μ λΉν΄ κ°λ μ±μ΄ λκ³ λ€λ£¨κΈ°κ° μ½μ΅λλ€.
β
CμΈμ΄λ μ κΈ μΈμ΄μ κ³ κΈ μΈμ΄μ νΉμ§μ λͺ¨λ κ°μ§κ³ μλ μ μ°¨ μ§ν₯ νλ‘κ·Έλλ° μΈμ΄(procedure-oriented programming language)μ λλ€.
CμΈμ΄μ μμ¬
CμΈμ΄λ 1972λ 벨 μ°κ΅¬μμ μΌ ν°νμ¨(Kenneth Thompson)κ³Ό λ°λμ€ λ¦¬μΉ(Dennis Ritchie)κ° μ λμ€(UNIX) μ΄μ체μ μμ μ¬μ©νκΈ° μν΄μ κ°λ°ν λ²μ©μ μΈ κ³ κΈ μΈμ΄μ λλ€.
β
AμΈμ΄λΌκ³ λΆλ¦¬λ ALGOL 60λΆν°, CPL, BCPLμ κ±°μ³, μΌ ν°νμ¨μ΄ BμΈμ΄λ₯Ό κ°λ°νκ² λ©λλ€.
β
μ΄ν λ°λμ€ λ¦¬μΉκ° BμΈμ΄λ₯Ό μ’ λ κ°μ νμ¬ μ§κΈμ CμΈμ΄λ₯Ό λ§λ€κ² λ©λλ€. CμΈμ΄λΌλ μ΄λ¦μ μ λ λν BμΈμ΄ λ°λ‘ λ€μμ κ°λ°λμ΄μ λͺ λͺ λ μ΄λ¦μ λλ€.
CμΈμ΄μ νμ λ°°κ²½
CμΈμ΄ μ΄μ μ μ λμ€ μ΄μ체μ λ μ΄μ λΈλ¦¬μ΄λΌλ μ κΈ μΈμ΄λ₯Ό μ¬μ©νμ΅λλ€.
β
νμ§λ§, μ΄μ λΈλ¦¬μ΄λ νΉμ νλμ¨μ΄μ μ’ μμ μΈ μΈμ΄μ¬μ μ΄ μΈμ΄λ‘ μμ±λ νλ‘κ·Έλ¨μ λ€λ₯Έ νλμ¨μ΄λ‘ μ΄μν μ μμλ, μ¦, νλμ κΈ°λ₯μ νλ νλ‘κ·Έλ¨μ CPUμ μ’ λ₯λ§νΌ μ¬λ¬λ² μμ±ν΄μΌ νλ κ²μ λλ€.
β
λ°λΌμ, μ΄μμ±λ μ’κ³ μ΄μ λΈλ¦¬μ΄λ³΄λ€ μ¬μ΄ μΈμ΄κ° νμν΄μ Έμ κ°λ°λ μΈμ΄κ° λ°λ‘ CμΈμ΄μ λλ€.
β
νμ¬ λ§μ΄ μ¬μ©λλ λͺ¨λ μ΄μ체μ μ 컀λμ λλΆλΆ CμΈμ΄λ₯Ό μ΄μ©ν΄ ꡬνλμ΄ μμ΅λλ€. μ΄μ²λΌ CμΈμ΄λ μμ€ν νλ‘κ·Έλλ°μ κ°μ₯ μ μ΄μΈλ¦¬μ§λ§, μμ© νλ‘κ·Έλ¨μμλ λ§μ΄ μ¬μ©λλ νλ‘κ·Έλλ° μΈμ΄μ λλ€.
CμΈμ΄μ νΉμ§
CμΈμ΄κ° κ°μ§λ μ₯μ μ λ€μκ³Ό κ°μ΅λλ€.
β
- CμΈμ΄λ‘ μμ±λ νλ‘κ·Έλ¨μ λ€μν νλμ¨μ΄λ‘μ μ΄μμ±μ΄ μ’μ΅λλ€.
- CμΈμ΄λ μ μ°¨ μ§ν₯ νλ‘κ·Έλ¨ μΈμ΄λ‘ μ½λκ° λ³΅μ‘νμ§ μμ μλμ μΌλ‘ μ μ§λ³΄μκ° μ½μ΅λλ€.
- CμΈμ΄λ μ κΈ μΈμ΄μ νΉμ§μ κ°μ§κ³ μμΌλ―λ‘ μ΄μ λΈλ¦¬μ΄ μμ€μΌλ‘ νλμ¨μ΄λ₯Ό μ μ΄ν μ μμ΅λλ€.
- CμΈμ΄λ μ½λκ° κ°κ²°νμ¬ μμ±λ νλ‘κ·Έλ¨μ ν¬κΈ°κ° μκ³ μ€ν μλκ° λΉ λ¦ λλ€.
β
CμΈμ΄κ° κ°μ§λ λ¨μ μ λ€μκ³Ό κ°μ΅λλ€.
β
- CμΈμ΄λ μ κΈ μΈμ΄μ νΉμ§μ κ°μ§κ³ μμΌλ―λ‘ μλ°μ κ°μ κ³ κΈ μΈμ΄λ³΄λ€ λ°°μ°κΈ°κ° μ½μ§ μμ΅λλ€.
- CμΈμ΄λ λ€λ₯Έ μΈμ΄μλ λ¬λ¦¬ μμ€ν μμμ μ§μ μ μ΄ν μ μμΌλ―λ‘ νλ‘κ·Έλλ°νλλ° μΈμ¬ν μ£Όμλ₯Ό κΈ°μΈμ¬μΌ ν©λλ€.
CμΈμ΄ νλ‘κ·Έλλ°
νλ‘κ·Έλλ°μ΄λ λͺ©μ μ λ§λ μκ³ λ¦¬μ¦μΌλ‘λΆν° νλ‘κ·Έλλ° μΈμ΄λ₯Ό μ¬μ©νμ¬ κ΅¬μ²΄μ μΈ νλ‘κ·Έλ¨μ μμ±νλ κ³Όμ μ μλ―Έν©λλ€. μ΄λ κ² μμ±λ νλ‘κ·Έλ¨μ λ¨Όμ μ€ν νμΌ(executable file)λ‘ λ³νλμ΄μΌ μ€νν μ μμ΅λλ€.
β
CμΈμ΄μμ μ€ννμΌμ μμ±νλ μμλ λ€μκ³Ό κ°μ΅λλ€.
β
- μμ€ νμΌ(source file)μ μμ±
- μ νμ²λ¦¬κΈ°(preprocessor)μ μν μ°νμ²λ¦¬
- μ»΄νμΌλ¬(compiler)μ μν μ»΄νμΌ
- λ§μ»€(linker)μ μν λ§ν¬
- μ€ν νμΌ(executable file)μ μμ±
β
μμ€ νμΌ(source file)μ μμ±β
νλ‘κ·Έλλ°μμ κ°μ₯ λ¨Όμ ν΄μΌ ν μμ μ λ°λ‘ νλ‘κ·Έλ¨μ μμ±νλ κ²μ λλ€.
β
CμΈμ΄λ₯Ό μ¬μ©νμ¬ λ¬Έλ²μ λ§κ² λ Όλ¦¬μ μΌλ‘ μμ±λ νλ‘κ·Έλ¨μ μμ νμΌ λλ μμ€ νμΌμ΄λΌκ³ ν©λλ€. CμΈμ΄λ₯Ό ν΅ν΄ μμ±λ μμ€ νμΌμ νμ₯μλ .cκ° λ©λλ€.
β
μ νμ²λ¦¬κΈ°(preprocessor)μ μν μ νμ²λ¦¬
μ νμ²λ¦¬λ μμ€ νμΌ μ€μμλ μ νμ²λ¦¬ λ¬Έμ(#)λ‘ μμνλ μ νμ²λ¦¬ μ§μλ¬Έμ μ²λ¦¬ μμ μ μλ―Έν©λλ€.
β
μ΄λ¬ν μ νμ²λ¦¬ μμ μ μ νμ²λ¦¬κΈ°κ° μνν©λλ€. μ νμ²λ¦¬κΈ°λ μ½λλ₯Ό μμ±νλ κ²μ΄ μλ, μ»΄νμΌνκΈ° μ μ»΄νμΌλ¬κ° μμ νκΈ° μ’λλ‘ μμ€λ₯Ό μ¬κ΅¬μ±ν΄μ£Όλ μν λ§μ ν©λλ€.
β
μ»΄νμΌλ¬(compiler)μ μν μ»΄νμΌ
μ»΄ν¨ν°λ 0κ³Ό 1λ‘ μ΄λ£¨μ΄μ§ μ΄μ§μλ‘ μμ±λ κΈ°κ³μ΄λ§μ μ΄ν΄ν μ μμ΅λλ€.
β
μμ€ νμΌμ κ°λ°μμ μν΄ CμΈμ΄λ‘ μμ±λλ―λ‘ μ»΄ν¨ν°λ κ·Έκ²μ λ°λ‘ μ΄ν΄ν μ μμ΅λλ€. λ°λΌμ μμ€ νμΌμ μ»΄ν¨ν°κ° μμλ³Ό μ μλ κΈ°κ³μ΄λ‘ λ³νμμΌμΌ νλλ°, κ·Έ μμ μ μ»΄νμΌμ΄λΌκ³ ν©λλ€.
β
μ»΄νμΌμ μ»΄νμΌλ¬μ μν΄ μνλλ©° μ»΄νμΌμ΄ λλ κΈ°κ³μ΄λ‘ λ³νλ νμΌμ μ€λΈμ νΈ νμΌ(object file)μ΄λΌκ³ ν©λλ€, μ΄λ¬ν μ€λΈμ νΈ νμΌμ νμ₯μλ .oλ .obj κ° λ©λλ€.
β
λ§μ»€(linker)μ μν λ§ν¬
μ»΄νμΌλ¬μ μν΄ μμ±λ μ€λΈμ νΈ νμΌμ μ΄μ체μ μμ μΈν°νμ΄μ€λ₯Ό λ΄λΉνλ μλ μ½λ(start-up code)λ₯Ό κ°μ§κ³ μμ§ μμ΅λλ€.
β
λν, λλΆλΆμ CμΈμ΄ νλ‘κ·Έλ¨μμ μ¬μ©νλ CμΈμ΄ νμ€ λΌμ΄λΈλ¬λ¦¬ νμΌλ ν¬ν¨λμ΄ μμ§ μμ΅λλ€. μ΄λ νλ μ΄μμ μ€λΈμ νΈ νμΌκ³Ό λΌμ΄λΈλ¬λ¦¬ νμΌ, μλ μ½λ λ±μ ν©μ³ νλμ νμΌλ‘ λ§λλ μμ μ λ§ν¬λΌκ³ ν©λλ€.
β
λ§ν¬λ λ§μ»€μ μν΄ μνλλ©°, λ§ν¬κ° λλλ©΄ νλμ μλ‘μ΄ μ€ννμΌμ΄λ λΌμ΄λΈλ¬λ¦¬ νμΌμ΄ μμ±λ©λλ€, μ΄μ²λΌ μ¬λ¬ κ°μ μμ€ νμΌμ μμ±νμ¬ μ΅μ’ μ μΌλ‘ λ§ν¬λ₯Ό ν΅ν΄ νλμ μ€ν νμΌλ‘ λ§λλ κ²μ λΆν μ»΄νμΌμ΄λΌκ³ ν©λλ€.
β
μ€ν νμΌ(executable file)μ μμ±
μμ€ νμΌμ μ νμ²λ¦¬κΈ°, μ»΄νμΌλ¬ κ·Έλ¦¬κ³ λ§μ»€μ μν΄ μμ κ°μ κ³Όμ μ κ±°μ³ μ€ν νμΌλ‘ λ³νλ©λλ€.
β
μ΅κ·Ό μ¬μ©λλ κ°λ° ν΄μ λλΆλΆ μμμ μκ°ν μ νμ²λ¦¬κΈ°, μ»΄νμΌλ¬, λ§μ»€λ₯Ό λͺ¨λ λ΄μ₯νκ³ μμΌλ―λ‘ μμ€ νμΌμμ ν λ²μ μ€ν νμΌμ μμ±ν΄μ€λλ€. μ΄λ κ² μμ±λ μ€ν νμΌμ νμ₯μλ .exeκ° λ©λλ€.
CμΈμ΄ νλ‘κ·Έλ¨μ ꡬ쑰
κ°λ¨ν CμΈμ΄ νλ‘κ·Έλ¨μ κΈ°λ³Έ ꡬ쑰λ λ€μ μμ μ κ°μ΅λλ€. μΈμ λ λ€μκ³Ό κ°μ΄ ꡬμ±λλ κ²μ μλμ§λ§, λλΆλΆμ CμΈμ΄ νλ‘κ·Έλ¨μ΄ μ΄μ λΉμ·ν ννλ‘ κ΅¬μ±λ©λλ€.
CμΈμ΄ νλ‘κ·Έλ¨μ νΉμ§
CμΈμ΄λ‘ μμ±λ νλ‘κ·Έλ¨μ΄ κ°μ§λ μΌλ°μ μΈ νΉμ§μ λ€μκ³Ό κ°μ΅λλ€.
β
- CμΈμ΄ νλ‘κ·Έλ¨μ κΈ°λ³Έ λ¨μλ ν¨μμ λλ€.
- ν¨μ λ΄μ κ° λͺ λ Ήλ¬Έμ μΈλ―Έμ½λ‘ (;)μΌλ‘ λλμΌ ν©λλ€.
- CμΈμ΄λ λμλ¬Έμλ₯Ό ꡬλΆν©λλ€.
- CμΈμ΄λ μμ νμ(free-format)μ νμ©ν©λλ€.
β
CμΈμ΄ νλ‘κ·Έλ¨μ κΈ°λ³Έ λ¨μλ ν¨μμ λλ€.
CμΈμ΄ νλ‘κ·Έλ¨μ νλ λλ κ·Έ μ΄μμ ν¨μ(function)λ‘ μ΄λ£¨μ΄μ§λλ€.
β
λν, CμΈμ΄λ‘ ꡬνλλ λͺ¨λ νλ‘κ·Έλ¨μ λ°λμ main()ν¨μλ₯Ό κ°μ§κ³ μμ΄μΌν©λλ€. CμΈμ΄ νλ‘κ·Έλ¨μ΄ μ€νλλ©΄ μ»΄ν¨ν°λ μ μΌ λ¨Όμ main()ν¨μλ₯Ό μ°Ύμμ νΈμΆνκΈ° λλ¬Έμ λλ€.
ν¨μ λ΄μ κ° λͺ λ Ήλ¬Έμ μΈλ―Έμ½λ‘ (;)μΌλ‘ λλμΌ ν©λλ€.
ν¨μλ μΈμ λ κΈ°λ₯μ κ°μ§κ³ μμ΄μΌ ν©λλ€.
β
CμΈμ΄λ μ΄λ¬ν κΈ°λ₯μ μ μνκΈ° μν΄ μ¬μ©λλ λ¬Έμ₯μ λͺ λ Ήλ¬Έ(statement)μ΄λΌκ³ ν©λλ€. ν¨μ λ΄μ λͺ λ Ήλ¬Έμ μΈμ λ μμμλΆν° μλλ‘ μμ°¨μ μΌλ‘ μ€νλλ©°, μΈμ λ μΈλ―Έμ½λ‘ (;)μΌλ‘ λλμΌ ν©λλ€.
CμΈμ΄λ λμλ¬Έμλ₯Ό ꡬλΆν©λλ€.
CμΈμ΄μμ λ³μλ ν¨μμ μ΄λ¦μ μμ±ν λλ ν€μλλ μμ½μ΄ λ±μ μ¬μ©ν λλ λμλ¬Έμλ₯Ό μ νν ꡬλΆνμ¬ μ¬μ©ν΄μΌ ν©λλ€.
CμΈμ΄λ μμ νμ(free-format)μ νμ©ν©λλ€.
CμΈμ΄μμλ λ¬Έλ²λ§ λ§μΌλ©΄ μ¬λ¬ κ°μ λͺ λ Ήλ¬Έμ ν μ€μ μΈ μλ μκ³ , νλμ λͺ λ Ήλ¬Έμ μ¬λ¬ μ€μ λλμ΄ μΈ μ λ μμ΅λλ€. νμ§λ§ νλ‘κ·Έλ¨μ ꡬ쑰λ₯Ό νλμ νμ ν μ μλλ‘ λλλ‘μ΄λ©΄ λ€μ¬μ°κΈ° λ±μ μ νμ©νμ¬ λ³΄κΈ° μ’κ² μμ±νλ κ²μ΄ μ’μ΅λλ€.
β
λ°λΌμ λ€μ λ μμ λ μ νν κ°μ λμμ μνν κ² μ λλ€.
μ£Όμ(comments)
μ£Όμμ μ½λμ λν μ΄ν΄λ₯Ό λλ μ€λͺ μ μ κ±°λ λλ²κΉ μ μν΄ μμ±ν©λλ€. CμΈμ΄ μ£Όμμ μ₯μ μ νλ‘κ·Έλ¨ λ΄μ μ΄λμλ μ¬ μ μλ€λ μ μ λλ€.
β
CμΈμ΄μ ν μ€ μ£Όμμ μμμμΉμ //μ μ¬μ©νκ³ , μ¬λ¬ μ€ μ£Όμμ /*λ‘ μμν΄μ λ°λμ */λ‘ λλμΌ ν©λλ€.
λ€μ μμ λ μ¬λ¬ μ€ μμ λ λ€λ₯Έ ν μ€ μ£Όμμ μ€μ²©ν΄μ μ½μ νλ μμ μ λλ€.
μμ μμ μ²λΌ CμΈμ΄μμλ μ¬λ¬ μ€ μμ λ λ€λ₯Έ ν μ€ μ£Όμμ μ½μ ν μ μμ΅λλ€. νμ§λ§ λ€μ μμ μ²λΌ μ¬λ¬ μ€ μ£Όμ μμ λ λ€λ₯Έ μ¬λ¬ μ€ μ£Όμμ μ€μ²©ν΄μ μ½μ ν μ μμ΅λλ€.
μμ μμ μ²λΌ μ¬λ¬ μ€ μ£Όμ μμ λ λ€λ₯Έ μ¬λ¬ μ€ μ£Όμμ μ½μ νλ©΄, β‘λ² λΌμΈμμ μ½μ ν μ£Όμμ μ’ λ£ κΈ°νΈ(*/)λ₯Ό β λ² λΌμΈμμ μμν 첫 λ²μ§Έ μ£Όμμ΄ μμ μ μ’ λ£ κΈ°νΈ(*/)λ‘ μλͺ» μΈμνκ² λ©λλ€. λ°λΌμ μ μμ μ β’λ² λΌμΈμ μ£ΌμμΌλ‘ μΈμλμ§ λͺ»νκ³ , μ»΄νμΌ μ μ€λ₯κ° λ°μνκ² λ©λλ€.
β
κ·Έλ¬λ―λ‘ CμΈμ΄μμ μ¬λ¬ μ€ μ£Όμμ μ λλ‘ μ€μ²©ν΄μ μ¬μ©ν΄μλ μλ©λλ€.
β
λ€μ μμ λ μμ μ΄ν΄λ³Έ μμ μ μ¬λ¬ μ£Όμμ μΆκ°ν μμ μ λλ€.
μ€λ ν¬μ€ν μμλ CμΈμ΄ νλ‘κ·Έλ¨μ κΈ°λ³Έμ μΈ λ΄μ©μ λ€λ€μ΅λλ€. λ€μ ν¬μ€ν μμλ CμΈμ΄ νλ‘κ·Έλ¨μ printf() ν¨μμ scanf() ν¨μμ λν΄ μμ보λλ‘ νλ©° κΈ λ§λ¬΄λ¦¬ νκ² μ΅λλ€.
β
CμΈμ΄ νλ‘κ·Έλ¨μ κΆκΈνμ μ μ΄λ λ€μν λͺ©μ μΌλ‘μ ν΄κ²°λ°©μμ μ°Ύκ³ κ³μ λ€λ©΄ μλμ λ€μ΄λ² νΌμ ν΅ν΄ κ°λ¨νκ²λΌλ λ¨κ²¨μ£Όμλ©΄ μ κ° μ§μ ν΄κ²°ν΄λλ¦¬κ² μ΅λλ€.
β
κ°μ¬ν©λλ€ :)
http://it-kgedu1.kr/support/edu_consult.php
β² CμΈμ΄ νλ‘κ·Έλ¨μ λν κΆκΈν κ²λ€ ν΄κ²°μ² β²
'ICT > νλ‘κ·Έλλ°' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μλ°νλ‘κ·Έλ¨ - μλ°μ κΈ°μ΄μ§μ (0) | 2022.06.09 |
---|---|
CμΈμ΄ ν¨μ - printf ν¨μ, scanf ν¨μ (0) | 2022.06.07 |
νμ΄μ¬ κΈ°μ΄κ³΅λΆ - 체κ³μ μΈ κ³΅λΆ κ³νμΈμ°κΈ° (0) | 2022.06.06 |
μλλ‘μ΄λ νλ‘κ·Έλλ° - μλ°νμ© (0) | 2021.10.09 |
μμ©μννΈμ¨μ΄ κ°λ°μκ° λκΈ°μ μ μμλλ©΄ μ’μ κ²λ€ (0) | 2021.10.07 |