Už víme, že počítač potřebuje přesné instrukce, aby něco udělal. Tyto instrukce nazýváme program. Ale jak takový program vytvořit? Pro začátek je nejlepší použít blokové programování. Představ si, že stavíš něco z kostek LEGO. Každá kostka má svůj tvar a funkci. Když je správně poskládáš, vytvoříš něco úžasného. V blokovém programování jsou "kostky" příkazy a ty je skládáš dohromady, abys vytvořil program.
Blokové programování je způsob, jak vytvářet programy pomocí grafických bloků, které do sebe zapadají jako dílky puzzle. Místo psaní složitých textových příkazů jednoduše přetahuješ a spojuješ bloky.
Blokové programování je vizuální způsob vytváření počítačových programů, kde se příkazy a funkce reprezentují jako grafické bloky, které se skládají dohromady.
I v blokovém programování používáme základní nápady, které jsou důležité pro každý program.
Každý blok je jeden příkaz, jedna instrukce pro počítač.
Jdi vpřed o 10 krokůOtoč se doprava o 90 stupňůŘekni "Ahoj světe!"Někdy chceme, aby počítač udělal něco několikrát za sebou. Místo toho, abychom psali stejný příkaz pořád dokola, použijeme blok pro opakování.
Opakování (cyklus) je část programu, která způsobí, že se jeden nebo více příkazů provede vícekrát.
Jdi vpřed o 100 krokůOtoč se doprava o 90 stupňůJdi vpřed o 100 krokůOtoč se doprava o 90 stupňůOpakuj 4x:Jdi vpřed o 100 krokůOtoč se doprava o 90 stupňůNěkdy se počítač musí rozhodnout, co udělá dál, podle toho, co se stane. Použijeme blok pro větvení nebo podmínku.
Větvení (podmínka) je část programu, která umožňuje počítači vybrat si, který příkaz provede, na základě toho, zda je splněna nějaká podmínka.
Pokud je před robotem zeď:Otoč se dopravaJinak (pokud zeď není):Jdi vpřed
Když skládáme bloky, je důležité, aby náš program byl jednoduchý a přehledný. To znamená, že by ho měl snadno pochopit i někdo jiný.
Jak se dostat ke Scratchi:
Poznámka: Scratch funguje přímo v prohlížeči, nemusíš nic instalovat. Pokud chceš své projekty ukládat, můžeš si vytvořit účet (zdarma).
Když otevřeš Scratch, uvidíš tři hlavní oblasti:
Vytvoříme program, který způsobí, že kočička řekne "Ahoj, světe!"
Postup:
když se klikne na 🏴 a přetáhni ho do pracovní plochyřekni Ahoj! na 2 sekund a přetáhni ho pod předchozí blokTeď vytvoříme program, který nakreslí čtverec pomocí opakování.
Postup:
Blokové programování je skvělý způsob, jak se naučit myslet jako tvůrce v digitálním světě. Místo toho, abychom byli jen pasivními uživateli aplikací, můžeme se stát těmi, kdo je vytváří. Učíme se tak řešit problémy, být kreativní a dávat počítači smysluplné pokyny. Tato dovednost je cenná nejen pro budoucí programátory, ale pro každého, kdo chce lépe rozumět technologiím, které nás obklopují.
Blokové programování je přípravou na "skutečné" programovací jazyky. Porovnání:
| Scratch blok | Python kód |
|---|---|
| opakuj 10x | for i in range(10): |
| pokud <podmínka> tak | if podmínka: |
| nastav [x] na (0) | x = 0 |
Scratch používá událostmi řízené programování: program reaguje na události (kliknutí, stisk klávesy, zpráva). To je základ moderních aplikací a her.
Blokové programování je skvělý start, ale profesionální programátoři používají textové jazyky. Přechod je jednodušší, než si myslíš:
| Scratch | Python |
|---|---|
| opakuj 10× | for i in range(10): |
| když [podmínka] tak | if podminka: |
| nastav [proměnná] na [hodnota] | promenna = hodnota |
| řekni [text] | print(text) |
# Proměnné a výstup
jmeno = "Anna"
vek = 15
print("Ahoj, " + jmeno)
print("Je ti", vek, "let")
# Podmínka
if vek >= 18:
print("Jsi dospělý")
else:
print("Jsi mladistvý")
# Cyklus
for i in range(5):
print("Opakování č.", i)
Jako budoucí IT specialista potřebuješ přejít od blokového programování k textovým jazykům. Python je ideální volba pro začátek.
# Scratch: "Když klikneš na zelenou vlajku"
# Python: Program začne automaticky
# Scratch: "Zeptej se 'Jak se jmenuješ?' a čekej"
jmeno = input("Jak se jmenuješ? ")
# Scratch: "Řekni odpověď"
print(f"Ahoj, {jmeno}!")
# Scratch: "Nastav proměnnou skore na 0"
skore = 0
# Scratch: "Opakuj 10x"
for i in range(10):
print(f"Kolo {i + 1}")
# Scratch: "Opakuj dokud skore = 10"
while skore < 10:
skore += 1
print(f"Skóre: {skore}")
# Scratch: "Pokud odpověď = ano"
odpoved = input("Chceš pokračovat? (ano/ne) ")
if odpoved == "ano":
print("Pokračujeme!")
else:
print("Konec.")
import random
def hadej_cislo():
"""Hra kde hráč hádá náhodné číslo."""
tajne_cislo = random.randint(1, 100)
pokusy = 0
print("Myslím si číslo od 1 do 100. Zkus ho uhodnout!")
while True:
tip = int(input("Tvůj tip: "))
pokusy += 1
if tip < tajne_cislo:
print("Moc málo! Zkus vyšší číslo.")
elif tip > tajne_cislo:
print("Moc moc! Zkus nižší číslo.")
else:
print(f"Výborně! Uhodl jsi na {pokusy} pokusů!")
break
return pokusy
# Spuštění hry
hadej_cislo()
import turtle
# Vytvoř "želvu" (jako sprite ve Scratch)
t = turtle.Turtle()
t.speed(1) # Rychlost animace
# Nakresli čtverec (jako ve Scratch s pohyb/otoč)
for _ in range(4):
t.forward(100) # Jdi vpřed 100 kroků
t.right(90) # Otoč se doprava o 90°
# Spirála
t.color("blue")
for i in range(50):
t.forward(i * 5)
t.right(90)
# Hvězda
t.color("red")
for _ in range(5):
t.forward(150)
t.right(144)
turtle.done() # Nech okno otevřené
# pip install pygame
import pygame
import random
# Inicializace
pygame.init()
okno = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Moje první hra")
hodiny = pygame.time.Clock()
# Sprite (jako ve Scratch)
hrac_x, hrac_y = 400, 300
rychlost = 5
# Herní smyčka
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Ovládání klávesnicí
klavesy = pygame.key.get_pressed()
if klavesy[pygame.K_LEFT]:
hrac_x -= rychlost
if klavesy[pygame.K_RIGHT]:
hrac_x += rychlost
if klavesy[pygame.K_UP]:
hrac_y -= rychlost
if klavesy[pygame.K_DOWN]:
hrac_y += rychlost
# Vykreslení
okno.fill((255, 255, 255)) # Bílé pozadí
pygame.draw.circle(okno, (255, 0, 0), (hrac_x, hrac_y), 20)
pygame.display.flip()
hodiny.tick(60)
pygame.quit()
Pokračujeme v projektu Správce kontaktů. V této kapitole vytvoříme hlavní program s menu a validaci vstupů.
# utils/validators.py
"""Modul pro validaci vstupů."""
import re
def validuj_telefon(telefon):
"""
Ověří platnost telefonního čísla.
Povolené formáty: 123456789, +420123456789, 123 456 789
"""
# Odstraň mezery
telefon = telefon.replace(" ", "")
# Regex pro české telefonní číslo
pattern = r'^(\+420)?[0-9]{9}$'
if re.match(pattern, telefon):
return True, telefon
return False, "Neplatný formát telefonu"
def validuj_email(email):
"""Ověří platnost e-mailové adresy."""
if not email: # Email je volitelný
return True, email
pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
if re.match(pattern, email):
return True, email
return False, "Neplatný formát e-mailu"
def validuj_jmeno(jmeno):
"""Ověří, že jméno není prázdné a má min. 2 znaky."""
jmeno = jmeno.strip()
if len(jmeno) >= 2:
return True, jmeno
return False, "Jméno musí mít alespoň 2 znaky"
# main.py
"""Hlavní program - Správce kontaktů."""
from models.kontakt import Kontakt
from models.spravce import SpravceKontaktu
from utils.validators import validuj_jmeno, validuj_telefon, validuj_email
def zobraz_menu():
"""Zobrazí hlavní menu."""
print("\n" + "=" * 40)
print(" SPRÁVCE KONTAKTŮ")
print("=" * 40)
print("1. Zobrazit všechny kontakty")
print("2. Přidat nový kontakt")
print("3. Vyhledat kontakt")
print("4. Smazat kontakt")
print("5. Konec")
print("-" * 40)
def zobraz_kontakty(kontakty):
"""Zobrazí seznam kontaktů."""
if not kontakty:
print("\n📭 Žádné kontakty k zobrazení.")
return
print(f"\n📋 Nalezeno {len(kontakty)} kontakt(ů):\n")
for i, k in enumerate(kontakty, 1):
print(f" {i}. {k}")
def pridej_kontakt(spravce):
"""Přidá nový kontakt s validací."""
print("\n➕ PŘIDÁNÍ NOVÉHO KONTAKTU")
print("-" * 30)
# Jméno
while True:
jmeno = input("Jméno: ")
ok, vysledek = validuj_jmeno(jmeno)
if ok:
jmeno = vysledek
break
print(f"❌ {vysledek}")
# Telefon
while True:
telefon = input("Telefon: ")
ok, vysledek = validuj_telefon(telefon)
if ok:
telefon = vysledek
break
print(f"❌ {vysledek}")
# Email (volitelný)
while True:
email = input("E-mail (volitelné, Enter pro přeskočení): ")
ok, vysledek = validuj_email(email)
if ok:
email = vysledek
break
print(f"❌ {vysledek}")
# Vytvoř a ulož kontakt
novy = Kontakt(jmeno, telefon, email)
spravce.pridej(novy)
print(f"\n✅ Kontakt '{jmeno}' byl úspěšně přidán!")
def vyhledej_kontakt(spravce):
"""Vyhledá kontakty."""
print("\n🔍 VYHLEDÁVÁNÍ")
dotaz = input("Zadej jméno nebo telefon: ")
vysledky = spravce.vyhledej(dotaz)
zobraz_kontakty(vysledky)
def smaz_kontakt(spravce):
"""Smaže kontakt."""
print("\n🗑️ MAZÁNÍ KONTAKTU")
jmeno = input("Zadej přesné jméno kontaktu ke smazání: ")
if spravce.odeber(jmeno):
print(f"\n✅ Kontakt '{jmeno}' byl smazán.")
else:
print(f"\n❌ Kontakt '{jmeno}' nebyl nalezen.")
def main():
"""Hlavní funkce programu."""
spravce = SpravceKontaktu()
print("\n🎉 Vítej ve Správci kontaktů!")
while True:
zobraz_menu()
volba = input("Vyber možnost (1-5): ")
if volba == "1":
zobraz_kontakty(spravce.zobraz_vsechny())
elif volba == "2":
pridej_kontakt(spravce)
elif volba == "3":
vyhledej_kontakt(spravce)
elif volba == "4":
smaz_kontakt(spravce)
elif volba == "5":
print("\n👋 Nashledanou!")
break
else:
print("\n❌ Neplatná volba, zkus to znovu.")
if __name__ == "__main__":
main()
# Přidej změny
git add .
# Commit
git commit -m "Přidán hlavní program s CLI rozhraním
- Implementováno interaktivní menu
- Přidána validace vstupů (telefon, email, jméno)
- Barevné emoji pro lepší UX
- Program je nyní plně funkční"
# Push na GitHub
git push
spravce-kontaktu/
├── .git/
├── .gitignore
├── README.md
├── main.py # ✓ NOVÉ - Hlavní program
├── models/
│ ├── __init__.py
│ ├── kontakt.py
│ └── spravce.py
├── utils/
│ ├── __init__.py
│ └── validators.py # ✓ NOVÉ - Validace
├── tests/
│ ├── __init__.py
│ ├── test_kontakt.py
│ └── test_validators.py # (přidej testy pro validátory)
└── data/
└── kontakty.json
python main.pyV další kapitole: Napíšeme licenci pro náš program.