ICT/ν”„λ‘œκ·Έλž˜λ°

Cμ–Έμ–΄ ν”„λ‘œκ·Έλž¨ - Cμ–Έμ–΄μ˜ 기초λ₯Ό μ•Œμ•„λ³΄μž

μ•Œ 수 μ—†λŠ” μ‚¬μš©μž 2022. 6. 7. 13:57
λ°˜μ‘ν˜•

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μ–Έμ–΄κ°€ κ°€μ§€λŠ” μž₯점은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

​

  1. Cμ–Έμ–΄λ‘œ μž‘μ„±λœ ν”„λ‘œκ·Έλž¨μ€ λ‹€μ–‘ν•œ ν•˜λ“œμ›¨μ–΄λ‘œμ˜ 이식성이 μ’‹μŠ΅λ‹ˆλ‹€.
  2. Cμ–Έμ–΄λŠ” 절차 지ν–₯ ν”„λ‘œκ·Έλž¨ μ–Έμ–΄λ‘œ μ½”λ“œκ°€ λ³΅μž‘ν•˜μ§€ μ•Šμ•„ μƒλŒ€μ μœΌλ‘œ μœ μ§€λ³΄μˆ˜κ°€ μ‰½μŠ΅λ‹ˆλ‹€.
  3. Cμ–Έμ–΄λŠ” μ €κΈ‰ μ–Έμ–΄μ˜ νŠΉμ§•μ„ 가지고 μžˆμœΌλ―€λ‘œ μ–΄μ…ˆλΈ”λ¦¬μ–΄ μˆ˜μ€€μœΌλ‘œ ν•˜λ“œμ›¨μ–΄λ₯Ό μ œμ–΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  4. Cμ–Έμ–΄λŠ” μ½”λ“œκ°€ κ°„κ²°ν•˜μ—¬ μ™„μ„±λœ ν”„λ‘œκ·Έλž¨μ˜ 크기가 μž‘κ³  μ‹€ν–‰ 속도가 λΉ λ¦…λ‹ˆλ‹€.

​

Cμ–Έμ–΄κ°€ κ°€μ§€λŠ” 단점은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

​

  1. Cμ–Έμ–΄λŠ” μ €κΈ‰ μ–Έμ–΄μ˜ νŠΉμ§•μ„ 가지고 μžˆμœΌλ―€λ‘œ μžλ°”μ™€ 같은 κ³ κΈ‰ 언어보닀 λ°°μš°κΈ°κ°€ 쉽지 μ•ŠμŠ΅λ‹ˆλ‹€.
  2. Cμ–Έμ–΄λŠ” λ‹€λ₯Έ μ–Έμ–΄μ™€λŠ” 달리 μ‹œμŠ€ν…œ μžμ›μ„ 직접 μ œμ–΄ν•  수 μžˆμœΌλ―€λ‘œ ν”„λ‘œκ·Έλž˜λ°ν•˜λŠ”λ° μ„Έμ‹¬ν•œ 주의λ₯Ό κΈ°μšΈμ—¬μ•Ό ν•©λ‹ˆλ‹€.

Cμ–Έμ–΄ ν”„λ‘œκ·Έλž˜λ°

ν”„λ‘œκ·Έλž˜λ°μ΄λž€ λͺ©μ μ— λ§žλŠ” μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œλΆ€ν„° ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ₯Ό μ‚¬μš©ν•˜μ—¬ ꡬ체적인 ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜λŠ” 과정을 μ˜λ―Έν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ μž‘μ„±λœ ν”„λ‘œκ·Έλž¨μ€ λ¨Όμ € μ‹€ν–‰ 파일(executable file)둜 λ³€ν™˜λ˜μ–΄μ•Ό μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

​

Cμ–Έμ–΄μ—μ„œ μ‹€ν–‰νŒŒμΌμ„ μƒμ„±ν•˜λŠ” μˆœμ„œλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

​

  1. μ†ŒμŠ€ 파일(source file)의 μž‘μ„±
  2. μ„ ν–‰μ²˜λ¦¬κΈ°(preprocessor)에 μ˜ν•œ μ‚°ν–‰μ²˜λ¦¬
  3. 컴파일러(compiler)에 μ˜ν•œ 컴파일
  4. 링컀(linker)에 μ˜ν•œ 링크
  5. μ‹€ν–‰ 파일(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μ–Έμ–΄λ‘œ μž‘μ„±λœ ν”„λ‘œκ·Έλž¨μ΄ κ°€μ§€λŠ” 일반적인 νŠΉμ§•μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

​

  1. Cμ–Έμ–΄ ν”„λ‘œκ·Έλž¨μ˜ κΈ°λ³Έ λ‹¨μœ„λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.
  2. ν•¨μˆ˜ λ‚΄μ˜ 각 λͺ…령문은 μ„Έλ―Έμ½œλ‘ (;)으둜 λλ‚˜μ•Ό ν•©λ‹ˆλ‹€.
  3. Cμ–Έμ–΄λŠ” λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λΆ„ν•©λ‹ˆλ‹€.
  4. 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μ–Έμ–΄ ν”„λ‘œκ·Έλž¨μ— λŒ€ν•œ κΆκΈˆν•œ 것듀 ν•΄κ²°μ²˜ β–²

 

 

IT학원 - KG아이티뱅크 ν™ˆνŽ˜μ΄μ§€

IT학원 KG아이티뱅크 (μ’…λ‘œ, 강남, λ…ΈλŸ‰μ§„, λΆ€μ‚°) 톡합 ν™ˆνŽ˜μ΄μ§€, 학원비 및 μˆ˜κ°•λ£Œ 쑰회. λ°©λ¬Έμƒλ‹΄μ˜ˆμ•½, κ΅μœ‘κ³Όμ •, μƒλ‹΄μ•ˆλ‚΄

it-kgedu1.kr

 

λ°˜μ‘ν˜•