Technikum Klasa II 45 minut PP: II.1+II.2 | s. 343

Lekcja 20: Programowanie - projekt indywidualny (2): implementacja

Kodowanie projektu w Pythonie, dobre praktyki programistyczne

📋 Podstawa programowa: II.1+II.2
debugowanieimplementacjakodowanieprogramowanieprojekt indywidualny
00:00
Przypomnienie
5 min
00:05
Dobre praktyki
10 min
00:15
Kodowanie
25 min
00:40
Podsumowanie
5 min
📚

Teoria

Od planu do kodu

Na poprzedniej lekcji zaplanowales projekt - teraz czas na implementacje, czyli zapisanie algorytmu w kodzie Pythona. Pamietaj: dobry plan to polowa sukcesu. Trzymaj sie specyfikacji i szkieletu kodu.

Zlota zasada: Nie probuj napisac calego programu na raz! Implementuj go etapami - najpierw najprostsza wersje (MVP - Minimum Viable Product), potem dodawaj kolejne funkcje. Po kazdym etapie uruchom i sprawdz, czy dziala.

Dobre praktyki kodowania w Pythonie

  1. Nazewnictwo - uzywaj opisowych nazw zmiennych i funkcji:
    • Dobrze: liczba_punktow, oblicz_srednia()
    • Zle: x, f1()
  2. Komentarze - opisuj CO robi kod i DLACZEGO, nie JAK:
    # Dobrze:
    # Oblicz srednia ocene z pominieciem najnizszej
    oceny.remove(min(oceny))
    srednia = sum(oceny) / len(oceny)
    
    # Zle:
    # Usun minimum i podziel sume przez dlugosc
    oceny.remove(min(oceny))
    srednia = sum(oceny) / len(oceny)
  3. Funkcje - kazda funkcja powinna robic JEDNA rzecz:
    def wczytaj_dane(plik):
        """Wczytuje dane z pliku CSV."""
        with open(plik, 'r') as f:
            return f.readlines()
    
    def oblicz_statystyki(dane):
        """Oblicza srednia, mediane i odchylenie."""
        # ...
        return srednia, mediana, odchylenie
  4. Obsluga bledow - uzywaj try/except:
    try:
        plik = open("dane.txt", "r")
        dane = plik.read()
    except FileNotFoundError:
        print("Blad: plik nie istnieje!")
    except Exception as e:
        print(f"Nieoczekiwany blad: {e}")
  5. Formatowanie - stosuj PEP 8 (styl kodowania Pythona):
    • 4 spacje na wciecie (nie tabulatory)
    • Maksymalnie 79 znakow w linii
    • Puste linie miedzy funkcjami
    • Spacje wokol operatorow: x = 5, nie x=5

Przydatne techniki

  • f-stringi do formatowania tekstu: print(f"Wynik: {wynik:.2f}")
  • List comprehension: parzyste = [x for x in lista if x % 2 == 0]
  • Praca z plikami: with open() as f: (automatycznie zamyka plik)
  • Slowniki do przechowywania danych strukturalnych
  • Modul json do zapisu/odczytu danych

Strategia implementacji krok po kroku

  1. Zacznij od funkcji main() - szkielet glownego przeplywu
  2. Zaimplementuj wejscie danych - wczytywanie z klawiatury lub pliku
  3. Dodaj glowna logike - obliczenia, przetwarzanie
  4. Zaimplementuj wyjscie - wyswietlanie wynikow
  5. Dodaj obsluge bledow - co jesli uzytkownik poda ble dane?
  6. Ulepsz interfejs - menu, instrukcje, kolorowanie
✏️

Zadania

Obowiazkowe

Zadanie 1: Implementacja szkieletu

Na podstawie specyfikacji z L19, zaimplementuj szkielet programu: funkcje main(), wszystkie zaplanowane funkcje (na razie z pass lub prostymi wartosciami testowymi). Uruchom program - powinien sie uruchomic bez bledow.

Obowiazkowe

Zadanie 2: Glowna logika programu

Zaimplementuj glowna funkcjonalnosc programu (rdzen algorytmu). Testuj po kazdej dodanej funkcji. Na koniec lekcji program powinien dzialac w podstawowej wersji (moze nie miec jeszcze wszystkich funkcji dodatkowych).

Obowiazkowe

Zadanie 3: Obsluga wejscia/wyjscia

Dodaj do programu: (a) przyjazne komunikaty dla uzytkownika, (b) walidacje danych wejsciowych (co jesli uzytkownik wpisze litere zamiast liczby?), (c) czytelne formatowanie wynikow.

Dodatkowe

Zadanie 4: Dodatkowe funkcje

Jesli podstawowa wersja dziala, dodaj funkcje dodatkowe: zapis/odczyt z pliku, menu glowne z petla, kolorowanie tekstu (modul colorama), obsluge wyjatkow, dokumentacje (docstringi).

🎥

Materialy wideo

Spring Data JPA + projekcje. Prosty sposób na szybsze zapytania. Część 1.
KM Programs Krzysztof Makowski
Implementacja listy jednokierunkowej w oparciu o inteligentne wskaźniki w C++ - Część 1.
KM Programs Krzysztof Makowski
🎧

Podcasty

✔️

Quiz - sprawdz sie!

📜

Podstawa programowa

← Lekcja 19: Projekt indywidualny (1): planowanie Lekcja 21: Projekt indywidualny (3): testowanie →