==๐Ÿ’ป ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ ์ดํ•ดํ•˜๊ธฐ==

1. ๐Ÿ”ข ๋ณ€์ˆ˜์™€ ๋ฐ์ดํ„ฐ ์ €์žฅ

1.1. ๋ณ€์ˆ˜์˜ ๊ฐœ๋…

  • ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ==๋ฉ”๋ชจ๋ฆฌ์ƒ์˜ ์œ„์น˜==๋ฅผ ์ƒ์„ฑ ๋ฐ ๋ช…๋ช…ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ๋ฐ•์Šค์— ==โ€œ์ฟ ํ‚ค ๊ฐœ์ˆ˜โ€ ๋ผ๋ฒจ==์„ ๋ถ™์—ฌ ๋‚ด๋ถ€ ์ˆ˜๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌ
  • ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ๊ฐ’ ์ฝ๊ธฐ, ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ

1.2. ๋ณ€์ˆ˜์˜ ์†์„ฑ

  • ==์ด๋ฆ„==: ์œ ๋‹ˆํฌํ•œ ์‹๋ณ„์ž
  • ==ํƒ€์ž…==: ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ข…๋ฅ˜ (์˜ˆ: ์ •์ˆ˜, ๋ฌธ์ž์—ด)
  • ==๊ฐ’==: ์‹ค์ œ ์ €์žฅ๋œ ์ •๋ณด
  • ==์Šค์ฝ”ํ”„==: ์ ‘๊ทผ ๊ฐ€๋Šฅ ๋ฒ”์œ„ (๋กœ์ปฌ ๋˜๋Š” ๊ธ€๋กœ๋ฒŒ)
  • ==๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ==: RAM ๋‚ด ์œ„์น˜

1.3. ๋ณ€์ˆ˜์˜ ํ™œ์šฉ ์˜ˆ์‹œ

  • ๋น„๋””์˜ค๊ฒŒ์ž„์˜ ์ ์ˆ˜ ์ €์žฅ
  • ๊ณ„์‚ฐ๊ธฐ ์ˆซ์ž ์ฒ˜๋ฆฌ
  • ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์ €์žฅ

2. โš™๏ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋ฌธ๋ฒ•๊ณผ ๊ตฌ๋ฌธ

2.1. ๋ฌธ๋ฒ• ๊ฐœ์š”

  • ==์ •์˜==: ์˜ฌ๋ฐ”๋ฅธ ๊ตฌ์กฐ์™€ ๊ธฐํ˜ธ ์กฐํ•ฉ ๊ทœ์น™
  • ==๊ธฐ๋ณธ ๊ธฐํ˜ธ==: ์ค‘๊ด„ํ˜ธ({}), ๊ด„ํ˜ธ(()), ์„ธ๋ฏธ์ฝœ๋ก (;)
  • ==ํ‚ค์›Œ๋“œ ์˜ˆ์‹œ==: if, while, return, for, case
  • ==๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ณ„==: ๋ฌธ๋ฒ•์€ ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ณ„, ์˜ค๋ฅ˜ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ โ†‘

2.2. ์˜ฌ๋ฐ”๋ฅธ ๋ฌธ๋ฒ•์˜ ์ค‘์š”์„ฑ

  • ์ฝ”๋“œ ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ
  • ์˜ค๋ฅ˜ ๋ฐฉ์ง€
  • ์˜ˆ์™ธ ๋ฐœ์ƒ ์‹œ ==์ปดํŒŒ์ผ ๋˜๋Š” ์‹คํ–‰ ์‹œ ์—๋Ÿฌ ๋ฐœ์ƒ==

3. ๐Ÿงฎ ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ

3.1. ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ข…๋ฅ˜

  • ==๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํƒ€์ž…==
    • ==int==: ์ •์ˆ˜ ์ €์žฅ
    • ==float==: ์‹ค์ˆ˜(์†Œ์ˆ˜์ ) ์ €์žฅ
    • ==char==: ํ•œ ๋ฌธ์ž ์ €์žฅ
    • ==string==: ๋ฌธ์ž์™€ ๋‹จ์–ด ์ „์ฒด ์ €์žฅ
    • ==boolean==: true ๋˜๋Š” false ์ €์žฅ
  • ==๋ณตํ•ฉ ๋ฐ์ดํ„ฐ ํƒ€์ž…==
    • ==Array==: ๊ฐ™์€ ํƒ€์ž… ๊ฐ’ ์—ฌ๋Ÿฌ ๊ฐœ ์ €์žฅ (๋ฐฐ์—ด)
    • ==List==: ๋‹ค์–‘ํ•œ ํƒ€์ž… ๊ฐ’ ์ €์žฅ ๊ฐ€๋Šฅ
    • ==Class/Struct==: ์†์„ฑ๊ณผ ์†์„ฑ๊ฐ’ ๋ฌถ์Œ
    • ==Tuple==: ์ˆœ์„œ ์ค‘์š”, ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€(๋ถˆ๋ณ€)

3.2. ํƒ€์ž…์˜ ์—ญํ• 

  • ==๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์ตœ์ ํ™”==
  • ==์˜ค๋ฅ˜ ๋ฐฉ์ง€==
  • ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์„ค๊ณ„์— ํ™œ์šฉ

4. ๐Ÿ”„ ์–ธ์–ด์˜ ํƒ€์ž… ์ง€์ • ๋ฐฉ์‹

4.1. ์ •์  ํƒ€์ดํ•‘ ์–ธ์–ด

  • ==Java==: ๋ณ€์ˆ˜ ์„ ์–ธ ์‹œ ํƒ€์ž… ๋ช…์‹œ ํ•„์š”
  • ==์—„๊ฒฉํ•œ ํƒ€์ž… ๊ฒ€์ฆ==

4.2. ๋™์  ํƒ€์ดํ•‘ ์–ธ์–ด

  • ==Python==: ํƒ€์ž… ์ž๋™ ๊ฐ์ง€
  • ==์œ ์—ฐ์„ฑ ๋†’์Œ==

5. ๐Ÿ” ๋ฃจํ”„์™€ ์žฌ๊ท€

5.1. ๋ฐ˜๋ณต๋ฌธ (Loop)

  • ==๋ชฉ์ ==: ํŠน์ • ์ฝ”๋“œ ๋ฐ˜๋ณต ์ˆ˜ํ–‰
  • ==์ข…๋ฅ˜==:
    • ==for ๋ฃจํ”„==
    • ==while ๋ฃจํ”„==
    • ==do-while ๋ฃจํ”„==
    • ==์ค‘์ฒฉ ๋ฃจํ”„==

5.2. ์žฌ๊ท€ (Recursion)

  • ์ˆ˜ํ•™์  ๊ฐœ๋… โ†’ ํ•จ์ˆ˜๊ฐ€ ์ž๊ธฐ ์ž์‹  ํ˜ธ์ถœ
  • ์ •๋ณด์˜ ์–‘ ๋ฏธ์ง€์ˆ˜ ์‹œ ์œ ์šฉ
  • ์˜ˆ์‹œ: ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด ๊ณ„์‚ฐ

6. ๐Ÿ”ง ํ•จ์ˆ˜์™€ ์‹คํ–‰

6.1. ํ•จ์ˆ˜ ๊ฐœ๋…

  • ํŠน์ • ์ž‘์—… ์ˆ˜ํ–‰ํ•˜๋Š” ๋ธ”๋ก
  • ==์ž…๋ ฅ(Parameters) โ†’ ์ž‘์—…(Body) โ†’ ์ถœ๋ ฅ(Return value)==

6.2. ์ข…๋ฅ˜

  • ==๋‚ด์žฅ ํ•จ์ˆ˜==: ==print()==, ==sqrt() ๋“ฑ==
  • ==์ต๋ช… ํ•จ์ˆ˜==: ==Lambda ํ•จ์ˆ˜==
  • ==ํ˜ธ์ถœ====: ํ•จ์ˆ˜ ํ˜ธ์ถœ = โ€œ๋ ˆ์‹œํ”ผ๋ฅผ ๋”ฐ๋ผ ์š”๋ฆฌํ•˜๊ธฐโ€==

6.3. ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ (๊ฐ์ฒด์ง€ํ–ฅ)

  • ==ํด๋ž˜์Šค==: ์„ค๊ณ„๋„ โ†’ ๊ฐ์ฒด ์ƒ์„ฑ ๊ฐ€๋Šฅ
  • ==๊ฐ์ฒด==: ์†์„ฑ(๋ฐ์ดํ„ฐ), ํ–‰๋™(๋ฉ”์„œ๋“œ)
  • ์˜ˆ์‹œ: ==Pikachu ํด๋ž˜์Šค โ†’ ๊ณต๊ฒฉ ๋ฉ”์„œ๋“œ ํฌํ•จ==
  • ์ฃผ์š” ๊ฐœ๋…:
    • ==์บก์Аํ™”==: ๋ฐ์ดํ„ฐ์™€ ๊ธฐ๋Šฅ ๋ฌถ๊ธฐ
    • ==์ƒ์†==: ๋ถ€๋ชจ โ†’ ์ž์‹ ํ™•์žฅ
    • ==๋‹คํ˜•์„ฑ==: ๋‹ค์–‘ํ•œ ๊ฐ์ฒด ์ผ๊ด„ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

7. ๐Ÿ”€ ์กฐ๊ฑด๋ฌธ๊ณผ ๋ถ„๊ธฐ

7.1. if๋ฌธ

  • ์กฐ๊ฑด์ด ์ฐธ์ธ์ง€ ์—ฌ๋ถ€ ํŒ๋‹จ
  • ์กฐ๊ฑด๋ฌธ ์œ ํ˜•:
    • ==if==
    • ==if-else==
    • ==if-elif-else==

7.2. switch-case

  • ๋ณ€์ˆ˜์™€ ์—ฌ๋Ÿฌ ๊ฐ’ ๋น„๊ต
  • ์กฐ๊ฑด์— ๋”ฐ๋ฅธ ๋ถ„๊ธฐ

7.3. ์šฉ๋„

  • ์ž…๋ ฅ ๊ฒ€์ฆ
  • ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
  • ๊ฒŒ์ž„ ๋กœ์ง ๊ตฌํ˜„

8. ๐Ÿ—ƒ๏ธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ

8.1. ์—ญํ• ๊ณผ ํŠน์ง•

  • ๋ฐ์ดํ„ฐ ์กฐ์ง, ์ €์žฅ, ๊ด€๋ฆฌ ์šฉ์ด
  • ์„ฑ๋Šฅ ํ–ฅ์ƒ, ๊ณต๊ฐ„ ํšจ์œจ์„ฑ ํ™•๋ณด
  • ํ˜„์‹ค ์„ธ๊ณ„ ๋ชจ๋ธ๋ง ๊ฐ€๋Šฅ

8.2. ์ฃผ์š” ๊ตฌ์กฐ

๊ตฌ์กฐ ์œ ํ˜•์„ค๋ช…์˜ˆ์‹œ ํ™œ์šฉ
๋ฐฐ์—ด (Array)1์ฐจ์› ์—ฐ์† ์ €์žฅ๋ฆฌ์ŠคํŠธ, ๋ฌธ์ž์—ด ์ธ๋ฑ์‹ฑ
์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ (Linked List)ํฌ์ธํ„ฐ๋กœ ์—ฐ๊ฒฐ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ
์Šคํƒํ›„์ž…์„ ์ถœ ๊ตฌ์กฐ์‹คํ–‰ ์ทจ์†Œ ๋“ฑ
ํ (Queue)์„ ์ž…์„ ์ถœํƒœ์Šคํฌ ์Šค์ผ€์ค„๋ง
ํ•ด์‹œ ํ…Œ์ด๋ธ”ํ‚ค-๊ฐ’ ์Œ ์ €์žฅ๋”•์…”๋„ˆ๋ฆฌ, ์ „ํ™”๋ฒˆํ˜ธ๋ถ€
ํŠธ๋ฆฌ๊ณ„์ธต ๊ตฌ์กฐํŒŒ์ผ ์‹œ์Šคํ…œ, ์กฐ์ง๋„
๊ทธ๋ž˜ํ”„๋…ธ๋“œ์™€ ๊ฐ„์„ ๋„คํŠธ์›Œํฌ ๋งต, ๊ฒฝ๋กœ ํƒ์ƒ‰

9. ๐ŸŒณ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฐ ์‹œ๊ฐ„ ๋ณต์žก๋„

9.1. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •์˜

  • ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ๋‹จ๊ณ„์  ์ ˆ์ฐจ
  • ์ข…๋ฅ˜: ์ •๋ ฌ, ๊ฒ€์ƒ‰, ๋ถ„ํ•  ์ •๋ณต ๋“ฑ

9.2. ์„ฑ๋Šฅ ์ธก์ •: ์‹œ๊ฐ„ ๋ณต์žก๋„

  • ==Big O==: ์ตœ์•… ์‹œ๊ฐ„
  • ==Big Omega==: ์ตœ์„  ์‹œ๊ฐ„
  • ==Big Theta==: ํ‰๊ท  ์‹œ๊ฐ„

9.3. ํ™œ์šฉ ์˜ˆ

  • ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”
  • ๋‚ด๋น„๊ฒŒ์ด์…˜ ๊ฒฝ๋กœ ๊ณ„์‚ฐ

10. ๐Ÿž ๋””๋ฒ„๊น…๊ณผ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ

10.1. ์˜ค๋ฅ˜ ์œ ํ˜•

  • ==๊ตฌ๋ฌธ ์˜ค๋ฅ˜==: ๋ฌธ๋ฒ• ์œ„๋ฐ˜
  • ==์‹คํ–‰ ์˜ค๋ฅ˜==: ์ˆ˜ํ–‰ ์ค‘ ๋ฐœ์ƒ (์˜ˆ: 0์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ)
  • ==๋…ผ๋ฆฌ ์˜ค๋ฅ˜==: ์˜๋ฏธ๋Š” ๋งž์ง€๋งŒ ๊ฒฐ๊ณผ ์˜ค๋ฅ˜
  • ==๋ฆฌ์†Œ์Šค ์˜ค๋ฅ˜==: ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ๋“ฑ

10.2. ๋””๋ฒ„๊น… ๊ธฐ๋ฒ•

  • ์˜ค๋ฅ˜ ์›์ธ ๋ถ„์„
  • ==print() ํ™œ์šฉ==
  • ๋””๋ฒ„๊ฑฐ(๋””๋ฒ„๊น… ํˆด) ์‚ฌ์šฉ
  • ์œ ๋‹› ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰

11. ๐Ÿงฉ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (OOP)

11.1. ๊ฐœ๋…

  • ==๊ฐ์ฒด==๋Š” ์†์„ฑ + ๋™์ž‘
  • ==ํด๋ž˜์Šค==๋Š” ์„ค๊ณ„๋„

11.2. ํ•ต์‹ฌ ์›์น™

  • ==์บก์Аํ™”==: ๋ฐ์ดํ„ฐ ์ˆจ๊ธฐ๊ธฐ
  • ==์ถ”์ƒํ™”==: ๋ณต์žก๋„ ์ˆจ๊ธฐ๊ธฐ
  • ==์ƒ์†==: ์žฌ์‚ฌ์šฉ
  • ==๋‹คํ˜•์„ฑ==: ์—ฌ๋Ÿฌ ๊ฐ์ฒด ์ผ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

11.3. ์˜ˆ์‹œ

class Pikachu:
    def __init__(self):
        self.electric_type = True
    def thunderbolt(self):
        print("Thunderbolt ๊ณต๊ฒฉ!")

12. ๐Ÿงฎ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ

12.1. ํŠน์ง•

  • ๋ถ€์ˆ˜ ํšจ๊ณผ ์—†์Œ
  • ==์ˆœ์ˆ˜ ํ•จ์ˆ˜==: ์ž…๋ ฅ์—๋งŒ ์˜์กด
  • ==์žฌ์‚ฌ์šฉ์„ฑโ†‘==

12.2. ํ•จ์ˆ˜ ๊ฐœ๋…

  • ==๊ณ ์ฐจ ํ•จ์ˆ˜==: ํ•จ์ˆ˜๊ฐ€ ํ•จ์ˆ˜๋ฅผ ์ธ์ˆ˜ ๋˜๋Š” ๋ฐ˜ํ™˜
  • ==์ด์ ==: ์ˆ˜ํ•™์  ๊ณ„์‚ฐ, ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ

12.3. ์˜ˆ์‹œ ์–ธ์–ด

  • Haskell, Lisp, Erlang, Clojure

13. ๐Ÿง  ํŠœ๋ง ์™„์ „์„ฑ ๋ฐ ์ •๊ทœ ํ‘œํ˜„์‹

13.1. ํŠœ๋ง ์™„์ „์„ฑ

  • ๋ชจ๋“  ๊ณ„์‚ฐ ๊ฐ€๋Šฅ
  • ์กฐ๊ฑด, ๋ฐ˜๋ณต, ์ €์žฅ ๊ฐ€๋Šฅ

13.2. ์ •๊ทœ ํ‘œํ˜„์‹ (RegEx)

  • ๋ฌธ์ž์—ด ๋งค์นญ ํŒจํ„ด
  • ํ™œ์šฉ: ๊ฒ€์ƒ‰, ๊ฒ€์ฆ, ์Šคํฌ๋ž˜ํ•‘

14. ๐Ÿ”„ ์ปดํŒŒ์ผ๊ณผ ์ธํ„ฐํ”„๋ฆฌํŒ…

14.1. ์ปดํŒŒ์ผ๋Ÿฌ

  • ์ „์ฒด ์ฝ”๋“œโ†’ ๊ธฐ๊ณ„์–ด ๋ณ€ํ™˜
  • ์ข…๋ฅ˜:
    • ==AOT==: ๋ฏธ๋ฆฌ ์ปดํŒŒ์ผ
    • ==JIT==: ๋™์‹œ ์ปดํŒŒ์ผ

14.2. ์ธํ„ฐํ”„๋ฆฌํ„ฐ

  • ํ•œ ์ค„์”ฉ ์‹ค์‹œ๊ฐ„ ์‹คํ–‰
  • ์˜ˆ: Python, JavaScript

==์ด ์š”์•ฝ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•ต์‹ฌ ๊ฐœ๋…์„ ์ฒด๊ณ„์ ์ด๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ๊ณ„์ธต์  ๊ตฌ์กฐ๋กœ ์ •๋ฆฌํ•˜์˜€์œผ๋ฉฐ, ์‹œ๊ฐ์  ์š”์†Œ์™€ ์˜ˆ์‹œ๋ฅผ ํฌํ•จํ•˜์—ฌ ์ดํ•ด๋ฅผ ๋•๋„๋ก ํ•˜์˜€๋‹ค.==

๋Œ€๋ณธ

variables a way to store information by creating and naming a location in the computer's memory variables provide a way to store retrieve and manipulate information to explain it simply imagine you have a box with a label that says number of cookies and its job is to record the number of cookies inside the box you can also change how many cookies are inside it therefore changing the recorded number of cookies that's kind of like what a variable is a variable has several properties a name which is a unique identifier given to a variable a type which is the kind of data it will store a value which is the actual information stored the scope which determines where it can be accessed whether locally or globally and a memory address which is the location in RAM where the data is stored variables are used to store things like player scores in video games numbers in calculators and user input syntax this is the set of rules that defines the correct structure and combination of symbols keywords and operators it's basically programming's grammar and punctuation symbols and punctuation include braces parentheses and semicolons examples of keywords are if while return or for and case correct syntax in programming is also case-sensitive so these two words although appearing so are not the same in programming if syntax is ever incorrect in your code the program will give you an error either while coding or at runtime syntax is a great tool that helps with code readability and different programming languages have different syntax data types this defines what kind of information can be stored in a variable they are essential for memory allocation error prevention and optimization there are basic data types and composite data types examples of basic data types are int for storing whole numbers and integers float stores real numbers like decimals car stores a single character while string stores an entire list of characters or entire words and variables with the boolean data type can only store values of either true or false examples of composite data types are arrays store multiple values of the same type into one variable by the way a string is a kind of array it's an array of characters a list is very similar to an array except you can store values of multiple data types in them a class which is code that has specific properties and attributes like the way that it can inherit properties from other code or a strruct which is like a class except it doesn't inherit any other properties finally a tpple which is like a list or an array except the order of the information inside it really matters and you can't modify or update it once it's created programming language can be split into either statically typed or dynamically typed languages statically typed languages like Java require the developer to explicitly state the type of data they are entering into a variable while dynamically typed languages like Python don't require this and in fact automatically detect it loops and recursion the act of looping in programming refers to repeating a block of code until a specified condition is met the types of loops are for loops while loops dowhile loops and nested loops it's basically if you want your program to do a specific task over and over again you can have your program repeat for a set number of times have a program do something infinitely recursion is a type of repetition in mathematics in where the next element of the sequence is determined by the one before it in programming recursion is a type of function that references itself in its body and it's mostly used to loop through or iterate through information where the amount of total information to go through is unknown oh and speaking of functions functions a block of code designed to do a specific task functions are made to be modular and reusable and just like functions in mathematics they take an input and give you an output functions have four main parts the input or the information that you put into the function these are usually referred to as parameters the name of the function which is basically self-explanatory the body of the function which is the actual work that the program is designed to do and the output of the function usually called its return value although many developers create their own many programming languages have built-in functions like the print function in Python the eval function in JavaScript or the square root function in C++ i know I said before that functions usually come with a name i kind of lied there are a special type of function that is completely nameless these are called lambda functions basically think of functions as recipes writing down the recipe or creating the function is called declaring it putting the function into the rest of your code or asking the chef to start the recipe is referred to as calling a function actually running a function or the chef actually making the food in the recipe is called executing a function functions can act as standalone programs or they can be put inside special kinds of code called classes in which then they are called methods but I'll explain more about classes and methods later on conditionals a program that executes blocks of code based on whether a condition is true or false types of conditionals are if statements if else statements or sometimes if l if else statement an if statement is used to determine whether a specific condition is either true or false an if else statement chooses between two paths to go down and a if l if else statement handles multiple conditions at once another type of conditional is called a switch case statement which basically matches variables against multiple values or conditions conditionals are used for input validation error handling and game logic conditionals usually check for if two things are equal not equal greater than or less than greater than or equal to or less than or equal to and use logic operators such as and or not data structures a data structure is a special way of organizing storing and managing data they are mainly used to increase performance since choosing the right structure can increase the speed of operations be memory efficient resulting in less wasted space and they're good for abstraction as you can use them to model real world problems such as using graphs for network connections or trees for hierarchies the most common data structures are arrays which organize information into a one-dimensional list and are usually stored close to each other in memory linkedi which is a sequence of information or nodes linked to each other via a pointer although unlike arrays they don't have to be stored close to each other in memory a stack which is a data structure where elements are added and removed from the top following a lastin first out principle think of it as a stack of plates this is most common in undo and redo functionality a Q which is similar to a stack but uses the first in first out principle adding and removing elements from the que are called inquing and dqing q's are used in task scheduling and well printer cues hash tables are ways to store data in an associative way they are used for efficient insert delete and search operations information is stored as key value pairs a key is a unique identifier for the information and a value is the information itself think of hashts as phone books where the names in the phone books are the keys associated with the values which are the phone numbers trees are a type of structure that usually demonstrate a hierarchical relationship they consist of parent and child elements the dots are called vertexes or nodes and the lines are called edges a commonality between all trees is that there has to be a starting root node and it contains no loops or cycles trees are usually represented in computer file systems organizational management and even in university programs in determining which prerequisite courses have to be taken before more advanced courses graphs just like trees are made of edges and nodes but they can actually contain cycles and loops the most common use for graphs is laying out networks and in GPS's to figure out their shortest path a heap is a special kind of tree that is a complete binary tree which is a tree that organizes elements from ascending order or descending order a max heap means the biggest element is the root node and a min heap means the smallest element is the root node heaps are mainly used in scheduling and priority cues algorithms a step-by-step procedure or a set of instructions designed to solve a specific problem or computation it's one of the many backbones of programming there are many types of algorithms sorting algorithms searching algorithms group algorithms divide and conquer dynamic programming and greedy algorithms a very crucial aspect of algorithms is time complexity basically how long does it take for an algorithm to run time complexity is measured in big O big omega or big theta big O measures the upper bound or what is the slowest that an algorithm can run in its worst case scenario big omega measures the upper bound or what is the fastest an algorithm can run in its best case scenario big data measures the tightbound or what is about the average speed that an algorithm can run there are many real world applications of algorithms such as with Google search and GPS navigation an example of a famous type of algorithm is Shaw 256 which is Bitcoin's cryptographic hashing algorithm debugging the process of identifying and fixing errors in code a crucial step in the development and testing process debugging improves performance and enhances security by patching bugs here are the main types of errors in programming syntax errors which are grammatical mistakes and typos that violate the strict rules of a programming language and it causes the computer to not know what you mean runtime errors which are mistakes that don't actually show up until your program is actually running and upon execution causes the program to stop or even crash a program trying to divide a number by zero will cause a runtime error logical errors are mistakes in code that cause unintended outcomes there's no mistakes in syntax or anything that would cause it to crash it just doesn't give you what you wanted an example is forgetting to put a stop condition in a loop thereby causing the program to run infinitely a resource error is when a program tries to use a resource like memory or dispace that is unavailable there are many techniques to debug a program locating the source of the problem analyzing the cause using print debugging or using external debugging programs or unit testing objectoriented programming a programming paradigm organizing software design around objects or data structures rather than just functions and logic objects are code that have unique properties and behaviors objects are bundled data with properties called attributes and functions called methods an example of object-oriented programming in real life are the player enemy or weapons objects in video games or the product shopping cart and user in e-commerce websites you create objects with blocks of code called classes these classes are basically the blueprint of what your object is to explain it much more simply let's create an object it's going to be a class in Python called Pikachu and we're going to give it an attribute called electric type and its attacks are going to be the class's methods like thunderbolt iron tail bolt tackle and agility like I said before the class serves as the blueprint to our object to actually add the object into our main program also called instantiating it you import the Pikachu object like this and you can use its methods like this in order for your object Pikachu to use its attacks object-oriented programming has four main concepts encapsulation which is to bundle data and methods inside a class controlling access to it using private or public modifiers abstraction which is to hide complex details of an object only exposing the necessary info to the user inheritance is when a child class can inherit the properties of the parent class polymorphism is when objects of different classes can be treated as objects of a common superclass object-oriented programming really makes software more modular reusable and scalable common object-oriented programming languages are Python Java C++ and Ruby functional programming a programming paradigm which makes great use of mathematical functions and avoids changing states or information functional programming makes use of functions in which its output is only dependent on its input data is never changed after its creation instead new data structures are created regular programming has for loops and while loops while functional programming makes great use of recursion functions can even take other functions as input it also makes use of first class and higher order functions a first class function is a type of function that can be treated just like any other piece of information you can store it in a variable like numbers and strings you can use it as inputs into other functions and store it in data structures like arrays higher order functions are functions that do things to other functions these are functions that take other functions as inputs and return a function as its output common uses for functional programming are mathematical computations or data pipelines examples of functional programming languages are Haskell Lisp Erlang and Closure turing completeness a concept inspired by a theoretical device called the Turing machine named after the computer scientist Alan Turing a Turing machine consists of an infinitely long tape and a head that reads and stores the information on the tape there are also rules that dictate its behavior based on what is read to put it simply a programming language is considered touring complete if it can do anything that a touring machine can do which is mainly three things first it can record and store a data second it can perform conditional logic and third it can perform loops or iteration although Turing completeness doesn't only exist in programming languages for example there is a branch of mathematics called Lambda Calculus which is Turing complete believe it or not Minecraft's Redstone system is Turing complete in Microsoft Excel's formula language is turning complete regular expressions a way to manipulate and pattern match strings for searching validating and extracting text it's used for form validation extracting dates and finding HTML tags it's mostly used in search and replace functions and web scraping key concepts in regular expressions or sometimes called reax are syntax quantifiers character classes grouping and escaping special characters compiling a process of breaking down human readable code into machine code that the computer can understand this is usually broken down into executable files or binary programs that do this are called compilers some languages are compiled like C++ and other languages like Python are interpreted a compiler translates the entire code before executing it and an interpreter translates the code line by line at runtime there are different types of compilers too ahead of time compilers compile the code before its execution just in time compilers compile the code during execution be sure to share this video and thanks for watching [Music]