Program Szarlotka: od specyfikacji do listy kroków
Funkcja int(), czyli liczba zamiast tekstu
Schemat if i else, blok instrukcji i wcięcie
Warunek jako zdanie logiczne: porównania, „nie”, „lub”, „i”
Podręcznik: s. 97–99 oraz dodatki 5, 6 i 7 (s. 220–224).
Rozgrzewka · 3 minuty
Co pamiętacie z lekcji 4?
Wracamy do działań, które Python wykonuje na liczbach.
Czym różnią się wyniki 7 / 2, 7 // 2 i 7 % 2?
Ile wynosi 6 / 2 i jakiego typu jest ten wynik?
Co wypisze print(2 + 3 * 4) i dlaczego?
docs.python.org/3/tutorial/introduction.html (rozdz. 3.1.1, operatory arytmetyczne) · podręcznik Informatyka na czasie 2, s. 227 (dodatek 8)
Część 1 · Specyfikacja i lista kroków
Czy starczy na szarlotkę?
Dane: liczba jabłek zebranych przez Anię i Wojtka wprowadzona z klawiatury. Wynik: informacja, czy suma zebranych jabłek wystarczy na szarlotkę, lub komunikat o tym, że liczba jabłek jest niewystarczająca.
Zapytaj Anię o to, ile ma jabłek. Zapamiętaj tę liczbę.
Zapytaj Wojtka o to, ile ma jabłek. Zapamiętaj tę liczbę.
Oblicz sumę liczb z kroków 1 i 2. Zapamiętaj tę sumę.
Jeśli suma jest liczbą mniejszą niż 15, to wypisz informację, że jabłek jest za mało na szarlotkę. W przeciwnym razie wypisz informację, że liczba jabłek jest wystarczająca.
Podręcznik Informatyka na czasie 2, s. 97–98 (6.3 Tworzymy własne programy użytkowe, program Szarlotka, ramka „Specyfikacja” i lista kroków)
Część 1 · Symulacja
Sprawdzamy algorytm zanim powstanie kod
Symulacja to przejście listy kroków ołówkiem, dla przykładowych liczb. Jeśli w algorytmie jest błąd, tu go widać, a poprawka nic nie kosztuje.
Wyjście
Wejście
Działania
Aniu! Ile masz jabłek?
4
Wojtku! Ile masz jabłek?
5
4 + 5 = 9
Czy 9 < 15
Jabłek jest za mało.
Podręcznik Informatyka na czasie 2, s. 98 (6.3 Tworzymy własne programy użytkowe, tab. 6.1 „Symulacja algorytmu Szarlotka”)
Część 2 · Kod źródłowy
Program Szarlotka
1. print("Aniu, ile masz jabłek? ")
2. ania_apples = int(input())
3. print("Wojtku, ile masz jabłek? ")
4. wojtek_apples = int(input())
5.
6. total_apples = ania_apples + wojtek_apples
7. if total_apples < 15:
8. print("Jabłek jest za mało na szarlotkę.")
9. else:
10. print("Jabłek wystarczy na szarlotkę.")
Linie 1.–4. to pytania i odpowiedzi, linia 6. liczy sumę, a linie 7.–10. wybierają komunikat.
Podręcznik pisze na s. 99, że instrukcja warunkowa jest „w liniach od 8. do 11.”, choć program ma tylko 10 linii. Nawet książki trzeba testować.
Podręcznik Informatyka na czasie 2, s. 98 (6.3 Tworzymy własne programy użytkowe, kod źródłowy programu Szarlotka) · numeracja linii jak w listingu, tekst podręcznika s. 99 podaje 8–11
Część 2 · Typy danych
Funkcja int(): liczba, nie tekst
Funkcja input zawsze oddaje napis, czyli ciąg znaków. Napisy Python skleja, a nie dodaje. Funkcja int (od angielskiego integer, liczba całkowita) zamienia taki napis na liczbę.
Typ mówi, co wolno zrobić z wartością. int to liczby całkowite (4), float to liczby z częścią ułamkową (2.45), str to napisy ("ABC"). Zapisy 2 i 2.0 to dwie różne rzeczy.
Podręcznik Informatyka na czasie 2, s. 99 (6.3 Tworzymy własne programy użytkowe, funkcja int, ramka „Warto wiedzieć”) oraz s. 223 (dodatek 6 „Typy danych w języku Python”)
Część 2 · Instrukcja warunkowa
Dwie drogi: if i else
Wykonuje się zawsze dokładnie jedna z dwóch dróg, nigdy obie. Blok instrukcji to kolejne linijki wyróżnione wcięciem: domyślnie cztery spacje. Wcięcie zastępuje w Pythonie nawiasy, więc mówi, gdzie blok się zaczyna i kończy.
Podręcznik Informatyka na czasie 2, s. 99 (6.3 Tworzymy własne programy użytkowe, schemat ogólny instrukcji warunkowej, blok instrukcji, ramka „Warto wiedzieć” o czterech spacjach)
Część 3 · Zdanie logiczne
Warunek to zdanie logiczne
Zdanie logiczne to takie, któremu da się jednoznacznie przypisać prawdę albo fałsz. „Liczba 8 jest liczbą pierwszą” jest fałszywe, „2 + 2 < 5” prawdziwe. Python porównuje wartości tymi samymi znakami co matematyka, tylko zapisanymi po swojemu.
Ciekawostka: prawda i fałsz mają w informatyce swojego patrona. Angielski matematyk George Boole (1815–1864) w książce „An Investigation of the Laws of Thought” z 1854 roku pokazał, że na zdaniach prawdziwych i fałszywych da się liczyć jak na liczbach. Dlatego typ z dwiema wartościami nazywa się dziś bool.
Podręcznik Informatyka na czasie 2, s. 220–221 (dodatek 5 „Logika matematyczna i operatory logiczne”, zdania logiczne, tabela operatorów porównań) · ciekawostka: pl.wikipedia.org/wiki/George_Boole
Część 3 · Operatory logiczne
Nie, lub, i
Warunki da się łączyć. Trzy spójniki wystarczą na prawie wszystko, a Python zapisuje je zwykłymi angielskimi słowami.
Spójnik
Zapis
Kiedy całość jest prawdą
zaprzeczenie (negacja)
not
gdy warunek po nim jest fałszywy: dla x równego 3 zapis not x == 4 jest prawdą
alternatywa (lub)
or
gdy choć jeden z warunków jest prawdą; fałszem jest tylko wtedy, gdy oba są fałszywe
koniunkcja (i)
and
tylko wtedy, gdy oba warunki są prawdą naraz: dla x równego 3 i y równego 2 zapis x < 5 and y > 1 jest prawdą
Zaprzeczeniem warunku x < 4 jest x >= 4, a nie x > 4: samą czwórkę też trzeba przypisać do jednej z dwóch dróg.
Podręcznik Informatyka na czasie 2, s. 220–222 (dodatek 5 „Logika matematyczna i operatory logiczne”, zaprzeczenie, alternatywa, koniunkcja, tabela operatorów logicznych w Pythonie)
Ćwiczenie · na kartce · 10 minut
Ćwiczenie: prześledź program
Podpisz kartkę i przerysuj dwa razy tabelę z prawej (wzór tab. 6.1).
Wypełnij ją tak, jak wykona to program, dla zestawu A (6 i 7 jabłek) oraz zestawu B (8 i 9).
Na dole zapisz własny warunek na dwie szarlotki: nowa linia 7. i jedno zdanie, co się zmieni.
Wyjście | Wejście | Działania
-----------+---------+----------
| |
| |
| |
| |
| |
Dla chętnych (dom):przepisz program do pliku apple_pie.py i uruchom go dla trzech par liczb, wyniki zapisz w komentarzu na końcu pliku.
Podręcznik Informatyka na czasie 2, s. 98–99 (tab. 6.1, kod programu Szarlotka, ćwiczenie 4)
Część 3 · Pytania kontrolne
Trzy pytania na koniec
Dlaczego liczbę wpisaną przez użytkownika trzeba przepuścić przez funkcję int, zanim się ją doda do innej?
Po czym Python poznaje, które linijki należą do bloku po if, a które do bloku po else?
Jak brzmi zaprzeczenie warunku total_apples < 15 i przy jakiej liczbie jabłek program wykona instrukcję po else?
Podręcznik Informatyka na czasie 2, s. 98–99 (6.3 Tworzymy własne programy użytkowe) i s. 220–221 (dodatek 5)
Część 3 · Podsumowanie
A jak to wygląda w produkcji?
Na lekcji
W produkcji
Status
Jeden warunek, dwie drogi
Reguły firmowe to ciągi warunków: wysokość rabatu, taryfa za przesyłkę, prawo do zniżki. Python ma na to elif, skrót od angielskiego „else if”; części elif może być dowolnie wiele, a else jest opcjonalne.
rozszerzane
int() na tym, co wpisał użytkownik
Formularz na stronie sprawdza pola w przeglądarce, a potem serwer sprawdza je jeszcze raz, bo dane z przeglądarki mogą przyjść dowolne.
rozszerzane
Wcięcie robione ręcznie
Wcięcia i odstępy ustawia automat przy zapisie pliku, żeby cały zespół miał kod sformatowany tak samo.
narzędzia
Próg 15 wpisany w kod
Progi i limity trzyma się w ustawieniach albo w bazie, bo zmieniają się częściej niż program. Zmiana progu nie powinna wymagać poprawiania kodu.