Temat 1/ Klasa 3/ Lekcja 4
1. Program jako rozwiązanie problemu
Potrafimy już:
- pobierać dane,
- wykonywać obliczenia,
- stosować warunki,
- stosować pętle.
Teraz będziemy je łączyć.
Zanim napiszemy program, przygotujemy plan rozwiązania.
2. Przykładowy problem
Użytkownik podaje pięć liczb. Program ma policzyć, ile spośród nich jest dodatnich.
Nie zaczynamy od pisania kodu.
Najpierw analizujemy problem.
Dane
Pięć liczb.
Wynik
Liczba wartości dodatnich.
Co musi zrobić program?
- Utworzyć licznik wartości dodatnich.
- Pięć razy pobrać liczbę.
- Sprawdzić, czy liczba jest większa od zera.
- Jeżeli tak – zwiększyć licznik.
- Po zakończeniu pętli wyświetlić wynik.
3. Licznik
Potrzebujemy zmiennej:
ile_dodatnich = 0
Na początku nie znaleźliśmy jeszcze żadnej liczby dodatniej, dlatego wartość wynosi 0.
Jeżeli znajdziemy liczbę dodatnią:
ile_dodatnich = ile_dodatnich + 1
czyli zwiększamy licznik o jeden.
4. Gotowy program
ile_dodatnich = 0for i in range(5): liczba = float(input("Podaj liczbę: ")) if liczba > 0: ile_dodatnich = ile_dodatnich + 1print("Liczb dodatnich:", ile_dodatnich)
Zwróć uwagę na wcięcia.
Instrukcja:
if liczba > 0:
znajduje się wewnątrz pętli, ponieważ każdą podaną liczbę trzeba sprawdzić.
5. Testujemy program
Załóżmy, że podamy:
2-3705
Liczby dodatnie to:
275
Program powinien więc wyświetlić:
Liczb dodatnich: 3
6. Co to jest błąd programu?
Błąd programistyczny to sytuacja, w której program:
- nie daje się uruchomić,
- zatrzymuje się podczas działania,
- albo działa, ale daje nieprawidłowy wynik.
Nie każdy błąd wygląda tak samo.
Błąd składni
if liczba > 0 print("Dodatnia")
Brakuje :.
Błąd działania
liczba = int(input("Podaj liczbę: "))wynik = 10 / liczba
Dla liczba = 0 wystąpi problem z dzieleniem przez zero.
Błąd logiczny
if liczba < 0: print("Liczba dodatnia")
Program może się uruchomić, ale jego logika jest błędna.
7. Debugowanie
Debugowanie to wyszukiwanie i poprawianie błędów w programie.
Dobrą metodą jest:
- przeczytać komunikat o błędzie,
- sprawdzić wskazaną linię,
- przeanalizować wartości zmiennych,
- poprawić program,
- ponownie go uruchomić.
8. Dane testowe trzeba dobierać świadomie
Dla programu sprawdzającego liczby dodatnie nie wystarczy wpisać:
12345
Warto sprawdzić różne przypadki:
2-408-1
Dzięki temu testujemy:
- liczbę dodatnią,
- liczbę ujemną,
- zero.
9. Przykład – liczenie wyników spełniających warunek
Problem:
Użytkownik podaje cztery wyniki testu. Program ma policzyć, ile wyników wynosi co najmniej 50 punktów.
Plan:
- ustaw licznik zaliczonych wyników na 0,
- cztery razy pobierz wynik,
- sprawdź, czy wynik jest większy lub równy 50,
- jeżeli tak – zwiększ licznik,
- wyświetl liczbę zaliczonych wyników.
Program:
zaliczone = 0for i in range(4): punkty = int(input("Podaj wynik: ")) if punkty >= 50: zaliczone = zaliczone + 1print("Liczba zaliczonych wyników:", zaliczone)
Zadanie podsumowujące
Użytkownik podaje pięć temperatur.
Program powinien policzyć, ile z nich było poniżej 0°C.
Najpierw:
- zaplanuj rozwiązanie,
- napisz własny program,
- przetestuj go w IDLE,
- dopiero później wybierz odpowiedź.
A
mroz = 0for i in range(5): temperatura = float(input("Podaj temperaturę: ")) if temperatura < 0: mroz = mroz + 1print("Temperatur poniżej zera:", mroz)
B
mroz = 0for i in range(5): temperatura = float(input("Podaj temperaturę: ")) if temperatura > 0: mroz = mroz + 1print("Temperatur poniżej zera:", mroz)
C
mroz = 0for i in range(5): temperatura = float(input("Podaj temperaturę: ")) if temperatura < 0: mroz = 1print("Temperatur poniżej zera:", mroz)
D
mroz = 0for i in range(4): temperatura = float(input("Podaj temperaturę: ")) if temperatura < 0: mroz = mroz + 1print("Temperatur poniżej zera:", mroz)
Wskazówka
Sprawdź trzy elementy:
- ile razy wykonywana jest pętla,
- jaki warunek oznacza „poniżej zera”,
- czy licznik jest zwiększany, czy tylko ustawiany na 1.
Odpowiedź
Prawidłowa odpowiedź: A.
Program pięć razy pobiera temperaturę, sprawdza:
temperatura < 0
i dla każdej temperatury poniżej zera zwiększa licznik o 1.
B jest błędne, ponieważ liczy temperatury powyżej zera.
C jest błędne, ponieważ za każdym razem ustawia:
mroz = 1
Zatem nawet jeżeli temperatur ujemnych będzie kilka, końcowy wynik może nadal wynosić 1.
D jest błędne, ponieważ range(4) powoduje pobranie tylko czterech temperatur.
Przykładowy test
Dane:
-250-73
Oczekiwany wynik:
Temperatur poniżej zera: 2
Zadanie z gwiazdką ★
Użytkownik podaje pięć liczb.
Program ma osobno policzyć:
- ile liczb jest dodatnich,
- ile jest ujemnych,
- ile jest równych zero.
Rozwiązanie
dodatnie = 0ujemne = 0zera = 0for i in range(5): liczba = float(input("Podaj liczbę: ")) if liczba > 0: dodatnie = dodatnie + 1 elif liczba < 0: ujemne = ujemne + 1 else: zera = zera + 1print("Dodatnich:", dodatnie)print("Ujemnych:", ujemne)print("Zer:", zera)
To zadanie jest trudniejsze, ponieważ trzeba jednocześnie prowadzić trzy liczniki, ale wykorzystuje wyłącznie poznane wcześniej konstrukcje.
