β˜‚οΈ React pre-track) CS3. Programming

YeonnΒ·2024λ…„ 8μ›” 4일
0

elice_React Track

λͺ©λ‘ 보기
3/7
post-thumbnail

πŸ“– 데이터와 λͺ…λ Ήμ–΄

πŸ”₯ 기계어 ← μ–΄μ…ˆλΈ”λŸ¬ / λ””μ–΄μ…ˆλΈ”λŸ¬, μ—­μ–΄μ…ˆλΈ”λŸ¬ β†’ μ–΄μ…ˆλΈ”λ¦¬μ–΄ ← 컴파일러, 인터프리터 λ“±β†’ κ³ κΈ‰ μ–Έμ–΄

μ‚¬λžŒμ΄ μ“°λŠ” 말을 μ»΄ν“¨ν„°λŠ” μ•Œμ•„λ“£μ§€ λͺ»ν•œλ‹€. μ»΄ν“¨ν„°λŠ” νŠΈλžœμ§€μŠ€ν„°λ₯Ό 톡해 0κ³Ό 1( μ΄μ§„μˆ˜ ), 즉 κΈ°κ³„μ–΄λ§Œ μ•Œμ•„λ“€μ„ 수 μžˆλ‹€. ν•˜μ§€λ§Œ κΈ°κ³„μ–΄λŠ” μ‚¬λžŒμ΄ μ•Œμ•„λ³΄κΈ° νž˜λ“€λ‹€. κ·Έλž˜μ„œ 이 사이에 μ–΄μ…ˆλΈ”λ¦¬μ–΄κ°€ 사이λ₯Ό μ—°κ²°ν•΄ μ€€λ‹€.

βœ”οΈ μ–΄μ…ˆλΈ”λ¦¬μ–΄

μ–΄μ…ˆλΈ”λ¦¬μ–΄λŠ” 컴퓨터가 μ‚¬μš©ν•˜λŠ” 기계어와 μΌλŒ€μΌλ‘œ λŒ€μ‘λ˜λŠ” ν”„λ‘œκ·Έλž˜λ° 언어이닀. 즉 μ‚¬λžŒκ³Ό 컴퓨터 사이에 μ„œλ‘œ 이해할 수 μžˆλŠ” μ–Έμ–΄λ‘œ λ²ˆμ—­ν•˜κΈ° μœ„ν•œ 언어이닀. μ–΄μ…ˆλΈ”λŸ¬λŠ” μ–΄μ…ˆλΈ”λ¦¬μ–΄λ₯Ό κΈ°κ³„μ–΄λ‘œ λ²ˆμ—­ν•΄μ£ΌλŠ” 것을 λ§ν•˜κ³  λ””μ–΄μ…ˆλΈ”λŸ¬/μ—­μ–΄μ…ˆλΈ”λŸ¬λŠ” 기계어λ₯Ό μ–΄μ…ˆλΈ”λ¦¬μ–΄λ‘œ λ°”κΎΈμ–΄ μ£ΌλŠ” 것을 λ§ν•œλ‹€. μ–΄μ…ˆλΈ”λ¦¬μ–΄λŠ” 'low-level programming language( μ €κΈ‰ μ–Έμ–΄ )'라고도 λΆˆλ¦°λ‹€.

βœ”οΈ κ³ κΈ‰ μ–Έμ–΄( high-level programming language )

κ³ κΈ‰ μ–Έμ–΄λž€ μ‚¬λžŒμ΄ μ΄ν•΄ν•˜κΈ° μ‰½κ²Œ μž‘μ„±λœ ν”„λ‘œκ·Έλž˜λ° 언어이닀. 컴파일러, 인터프리터 등을 동해 μ–΄μ…ˆλΈ”λ¦¬μ–΄λ‘œ λ²ˆμ—­λ˜λŠ” 데 이 λ•Œ μ‚¬μš©ν•˜λŠ” μ–Έμ–΄λ§ˆλ‹€ λ²ˆμ—­κΈ°μ˜ μ’…λ₯˜λ„ λ‹€ λ‹€λ₯΄λ‹€. κ³ κΈ‰ μ–Έμ–΄μ—λŠ” C, C++, Python, Java, JavaScript 등이 μžˆλ‹€.



πŸ“– Algorithm( μ•Œκ³ λ¦¬μ¦˜ )

πŸ“Œ Algorithm ?
μˆœμ„œλŒ€λ‘œ 문제( μ‚¬μš©μžκ°€ μš”κ΅¬ν•˜λŠ” κΈ°λŠ₯ )λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ μ§€μ‹œμ ˆμ°¨μ˜ λͺ¨μŒ
μ‹œκ°„κ³Ό λ©”λͺ¨λ¦¬λ₯Ό κ³ λ €ν•˜μ—¬ 효율적으둜 ꡬ성 및 μ„ νƒν•œλ‹€.

❓ μ•Œκ³ λ¦¬μ¦˜ ν‘œν˜„ 방식

βœ”οΈ flowchart( μˆœμ„œλ„ / 흐름도 )

πŸ“μ§€μ‹œμ‚¬ν•­μ˜ 집합을 λ„ν‘œλ‘œ ν‘œν˜„ν•œ 것

flowchartλŠ” 'μˆœμ„œλ„', '흐름도'라고도 λΆ€λ₯Έλ‹€. λ¬Έμ œλ‚˜ μž‘μ—…μ˜ λ²”μœ„λ₯Ό κ²°μ •ν•˜κ³  λΆ„μ„ν•˜μ—¬ λΆ„μ„ν•œ λ‚΄μš©μ„ 톡해 λ„μΆœν•œ ν•„μš”ν•œ μž‘μ—…κ³Ό 처리의 μˆœμ„œλ₯Ό ν†΅μΌλœ κΈ°ν˜Έμ™€ λ„ν˜•μœΌλ‘œ μ‚¬μš©ν•˜μ—¬ λ„ν‘œν™”ν•œ 것이닀. '논리( logic )'의 흐름을 νŠΉμ •ν•œ μˆœμ„œλ„ 기호( flowchart symbol )을 μ‚¬μš©ν•˜μ—¬ λ„μ‹μ μœΌλ‘œ ν‘œν˜„ν•œ λ‹€μ΄μ–΄κ·Έλž¨μœΌλ‘œ μ‚¬μš©ν•˜λŠ” κΈ°ν˜ΈλŠ” λ‹€μŒκ³Ό κ°™λ‹€.

  • μ‚¬μš©ν•˜λŠ” 기호 🌱
    - μ‹œμž‘ / 끝: μ‹œν€€μŠ€μ˜ μ‹œμž‘μ κ³Ό 끝점
    - 처리: μ§€μ‹œμ‚¬ν•­ λ˜λŠ” λͺ…λ Ήμ–΄
    - μž…μΆœλ ₯: μž…λ ₯은 컴퓨터가 λ°›λŠ” 데이터, 좜λ ₯은 μ»΄ν“¨ν„°λ‘œλΆ€ν„° 보내진 데이터 ν˜Ήμ€ μ‹ ν˜Έ
    - κ²°μ •: Yes or No( 이 닀이아λͺ¬λ“œλŠ” 경둜의 배치 ν˜•νƒœλ₯Ό λ§ν•œλ‹€ ! YesλŠ” μ™Όμͺ½, NoλŠ” 였λ₯Έμͺ½μ΄λ‹€. )
    - ν™”μ‚΄ν‘œ: μ§€μ‹œμ‚¬ν•­μ˜ 흐름 λ°©ν–₯

βœ”οΈ 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

ν”„λ‘œκ·Έλž˜λ°μ΄λž€ μ–΄λ–€ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄( λͺ©μ μ„ λ‹¬μ„±ν•˜κΈ° μœ„ν•΄ ) 'μ†ŒμŠ€ μ½”λ“œ'λ₯Ό μž‘μ„±ν•΄ ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“œλŠ” 일이닀. 이런 ν”„λ‘œκ·Έλž˜λ°μ€ μ–΄λ–€ 과정을 톡해 μ΄λ£¨μ–΄μ§ˆκΉŒ ?

  1. ν•΄κ²°ν•˜κ³ μž ν•˜λŠ” 문제 / λͺ©μ μ΄ λ°œμƒν•œλ‹€.
  2. μ•Œκ³ λ¦¬μ¦˜: 문제λ₯Ό ν•΄κ²°( λͺ©μ  달성 )ν•˜κΈ° μœ„ν•œ ν•„μš”ν•œ μž‘μ—…κ³Ό 처리 μˆœμ„œλ₯Ό λ‚˜μ—΄ν•œλ‹€.
    2-1. ν•΄λ‹Ή μ•Œκ³ λ¦¬μ¦˜μ„ flowchartλ‚˜ pseudocode둜 μž‘μ„±ν•œλ‹€.
  3. μ‚¬λžŒμ΄ 이해할 수 μžˆλŠ” ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄( High-level language )둜 문제 해결을 μœ„ν•œ ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€κΈ° μœ„ν•΄ 'μ†ŒμŠ€ μ½”λ“œ'λ₯Ό μž‘μ„±ν•œλ‹€.
  4. ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ₯Ό 컴퓨터가 μ•Œμ•„λ“€μ„ 수 μžˆλŠ” μ–Έμ–΄λ‘œ λ²ˆμ—­ν•œλ‹€.
    4-1. 컴파일러 / 인터프리터 λ“±: ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄( high-level language ) β†’ μ–΄μ…ˆλΈ”λ¦¬μ–΄( low-level language )둜 λ²ˆμ—­λœλ‹€.
    4-2. μ–΄μ…ˆλΈ”λŸ¬: μ–΄μ…ˆλΈ”λ¦¬μ–΄( low-level language ) β†’ 기계어( machine code )둜 λ²ˆμ—­λœλ‹€.

즉, ν”„λ‘œκ·Έλž˜λ°μ€ μ–΄λ–€ κΈ°λŠ₯을 μœ„ν•œ μ†ŒμŠ€ μ½”λ“œλ₯Ό ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ‘œ μ†ŒμŠ€ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 일이닀.

βœ”οΈ syntax

λͺ¨λ“  ν”„λ‘œκ·Έλž¨ μ–Έμ–΄λŠ” 각각의 '고유의 κ·œμΉ™'을 κ°€μ§„λ‹€. 이 고유의 κ·œμΉ™μ„ syntax라고 ν•œλ‹€.
syntaxκ°€ μ§€μΌœμ§€μ§€ μ•ŠμœΌλ©΄ ν•˜λ“œμ›¨μ–΄κ°€ 이해할 수 μžˆλ„λ‘ λ¨Έμ‹  μ½”λ“œλ‘œ λ³€ν˜•λ˜μ§€ μ•ŠλŠ”λ‹€.

βœ”οΈ bug / error + debugging

ν”„λ‘œκ·Έλž˜λ°μ„ ν•˜λ‹€κ°€ 'μ•Œλ§žμ§€ μ•Šμ€' μž‘μ„±μ„ ν•˜κ²Œ λ˜μ—ˆμ„ λ•Œ error(bug) κ°€ λ°œμƒν•œλ‹€. μ΄λŸ¬ν•œ errorλŠ” syntax error와 logical error둜 λΆ„λ₯˜λœλ‹€.

  • syntax error: λ™μž‘ X
    • μ˜€νƒ€
    • ν•΄λ‹Ή 언어에 μ—†λŠ” λͺ…λ Ήμ–΄ μž‘μ„±
  • logical error: λ™μž‘ O, κ²°κ³Ό X
    • 잘λͺ»λœ 논리 ꡬ쑰 μž‘μ„±
    • 예: 2+2λ₯Ό μž‘μ„±ν•΄μ•Ό ν•˜μ§€λ§Œ 2-2λ₯Ό μž‘μ„±ν•œ 경우 λ“±

0개의 λŒ“κΈ€