Temat C5 Zapisywanie algorytmów w języku programowania Cele edukacyjne Zrozumienie, na czym polega programowanie. Poznanie sposobu zapisu algorytmu w postaci programu komputerowego. Zrozumienie, na czym polega iteracja. Zrozumienie różnic między algorytmem liniowym a algorytmem z warunkami oraz algorytmem iteracyjnym. Proponowany czas realizacji 2 godz. Po gimnazjum Uczeń: tworzy proste programy, korzystając z oprogramowania edukacyjnego, np. programu Logomocja lub Baltie, definiuje procedury w języku Logo z parametrami i bez parametrów oraz wywołuje je, realizuje prostą sytuację warunkową i iterację, korzystając z wybranego programu edukacyjnego. Wskazówki metodyczne Zgodnie z podstawą programową, uczeń powinien umieć zrealizować rozwiązanie problemu na komputerze za pomocą oprogramowania aplikacyjnego lub języka programowania. Celem tematu C5 jest pokazanie, na czym polega programowanie. Uczniowie będą zapisywali poznane w temacie C4 algorytmy w postaci programu w wybranym języku programowania. Nie należy zakładać, że na dwóch lekcjach, które proponuję przeznaczyć na realizację tego tematu, uczniowie nauczą się programować. Należy to uczniom wyraźnie powiedzieć. Aby zdobyli wiedzę i umiejętności dotyczące programowania, powinni realizować informatykę w zakresie rozszerzonym, a w przyszłości wybrać się na studia informatyczne. W tym temacie wyjaśniamy podstawowe pojęcia związane z programowaniem oraz podajemy klasyfikację oprogramowania za względu na poziom wykonywania programu. Należy na początku wyjaśnić uczniom, czym są języki programowania. Język programowania porównujemy do języka naturalnego, wskazując podobieństwa i różnice. Zwracamy uwagę, że w językach programowania obowiązują określone zasady składni, jednak dużo bardziej ścisłe, niż w językach naturalnych. Pisanie programów pokazujemy na przykładach dwóch wybranych języków programowania: Pascal i C++. Każdy z algorytmów jest zapisany w obydwu tych językach. W ten sposób możemy pokazać uczniom podobieństwa w budowie prostego programu czy w składni instrukcji danego Scenariusze lekcji 131
języka programowania. Konkretne ćwiczenia uczniowie powinni wykonać tylko w jednym z języków. W tym temacie te same algorytmy (liniowe i zawierające sytuacje warunkowe), które wcześniej były prezentowane w postaci listy kroków i schematów blokowych, zapisywane są w postaci programu komputerowego. W ostatnim punkcie tematu omawiamy algorytmy iteracyjne. Technikę iteracji przedstawiamy jako wielokrotne powtarzanie tych samych operacji (str. 267) na przykładzie sumowania n liczb. Pokazujemy realizację tego algorytmu w postaci listy kroków, schematu blokowego i programu komputerowego. Uczniowie, analizując te przykłady, mają możliwość zrozumienia, na czym polega iteracja. Nauczyciel powinien dokładnie wyjaśnić operację: Suma := Suma + a. Trzeba powiedzieć, że nie jest to równość w rozumieniu matematyki. Jest to operacja przypisania wartości zmiennej Suma poprzedniej wartości zmiennej Suma, zwiększonej o kolejną liczbę. Poprzednia wartość zmiennej Suma zostanie zastąpiona nową. Można odwołać się do przykładu dodawania liczb w pamięci lub za pomocą kalkulatora: dodajemy dwie liczby do siebie, zapamiętujemy wynik, następnie do zapamiętanej wartości dodajemy kolejną liczbę, zapamiętujemy wynik (poprzedni kasując) itd. Powtarzamy te same operacje, czyli postępujemy iteracyjnie. Warto jeszcze zwrócić uwagę na przypisanie: i := i + 1. Jest to tzw. licznik, który zwiększa się o 1 przy każdym przejściu pętli. Błędy i problemy uczniów Większość uczniów ma problemy z poprawnym zapisaniem nawet prostego programu. Mają problemy z zapisem instrukcji programu w odpowiedniej kolejności. Zapominają o odpowiednim umieszczaniu znaków interpunkcyjnych. Nie przywiązują wagi do precyzyjnego zapisu tekstu programu. W językach C i C++ małe i wielkie litery mają różne znaczenie, o czym uczniowie zapominają. Uczniowie nie rozumieją, że po każdej zmianie program należy na nowo skompilować. Mogą mieć trudności ze zrozumieniem zapisu algorytmu zawierającego pętle, w tym pętle zagnieżdżone zarówno w przypadku schematu blokowego, jak i programu w języku Pascal lub C++. Wskazówki do niektórych ćwiczeń, pytań i zadań Ćwiczenie 9. (str. 269) w języku Pascal: plik Ćwiczenie9_R.pas; w języku C++: plik Ćwiczenie9_R.cpp. Zadanie 1. (str. 271) w języku Pascal: plik Zadanie1_R.pas; w języku C++: plik Zadanie1_R.cpp. Zadanie 2. (str. 271) w języku Pascal: plik Zadanie2_R.pas; w języku C++: plik Zadanie2_R.cpp. Zadanie 4. (str. 271) w języku Pascal: plik Zadanie4_R.pas; w języku C++: plik Zadanie4_R.cpp. Zadanie 5. (str. 271) w języku Pascal: plik Zadanie5_R.pas; w języku C++: plik Zadanie5_R.cpp. Zadanie 6. (str. 271) w języku Pascal: plik Zadanie6_R.pas; w języku C++: plik Zadanie6_R.cpp. Zadanie 7. (str. 271) w języku Pascal: plik Zadanie7_ R.pas; w języku C++: plik Zadanie7_R.cpp. Zadanie 9. (str. 272) w języku Pascal: plik Zadanie9_R.pas; w języku C++: plik Zadanie9_R.cpp. Zadanie 10. (str. 272) w języku Pascal: plik Zadanie10_R.pas; w języku C++: plik Zadanie10_R.cpp. Zadanie 11. (str. 272) w języku Pascal: plik Zadanie11_ R.pas; w języku C++: plik Zadanie11_R.cpp. Zadanie 13. (str. 272) w języku Pascal: plik Zadanie13_R.pas; w języku C++: plik Zadanie13_R.cpp. Scenariusze lekcji 132
Przykładowe scenariusze Lekcja 29. (temat C5) Zapisywanie algorytmów liniowych i z warunkami w języku programowania Wiedza i umiejętności Treści, pytania, ćwiczenia i zadania Podstawa programowa podstawowe rozszerzające z podręcznika, materiały Uczeń: Uczeń: z CD Uczeń: wie, na czym polega programowanie; analizuje gotowe, proste programy, zapisane w wybranym języku klasyfikuje języki pisze proste programy w wybranym języku programowania, używając podstawowych poleceń zapisuje złożony algorytm liniowy i z warunkami w wybranym języku programowania temat C5 z podręcznika (str. 260-266); ćwiczenia 1, 3. (punkt 1), 4. i 5. (str. 263-266) zadanie domowe ćwiczenia 2, 3. (punkt 2) i 6. (str. 263-266); pytania 1-5 (str. 271) dla zainteresowanych zadania 8-9 (str. 272) 5.3. projektuje rozwiązanie: wybiera metodę rozwiązania, odpowiednio dobiera narzędzia komputerowe, tworzy projekt rozwiązania; 5.4. realizuje rozwiązanie na komputerze za pomocą oprogramowania aplikacyjnego lub języka 5.5. testuje otrzymane rozwiązanie, ocenia jego własności, w tym efektywność działania oraz zgodność ze specyfikacją; 5.6. przeprowadza prezentację i omawia zastosowania rozwiązania; Forma zajęć: wprowadzenie, pokaz z wykorzystaniem projektora; praca z podręcznikiem i CD; ćwiczenia Przebieg lekcji: 1. Nauczyciel podaje temat i cel lekcji oraz sprawdza zadanie domowe. Wybrani uczniowie odpowiadają na zadane pytania i przedstawiają rozwiązania zadań domowych, korzystając z projektora. 2. Nauczyciel omawia podstawowe pojęcia związane z językami programowania i wyjaśnia, na czym polega programowanie (str. 260-262). Następnie omawia, w jaki sposób tworzy się prosty program na przykładzie wybranego języka programowania. Analizuje przykład 1. (str. 262) lub 2. (str. 263), korzystając z projektora. Kompiluje i uruchamia jeden z programów, przy okazji omawiając sposób posługiwania się danym kompilatorem. 3. Jeśli wybranym dla uczniów językiem jest C++, nauczyciel dodatkowo wskazuje podobne części programu na przykładzie programu zapisanego w języku Pascal i na odwrót. 4. Uczniowie śledzą przykłady w podręczniku i wykonują ćwiczenie 1. (str. 263). Kompilują i uruchamiają program. Nauczyciel sprawdza wykonanie ćwiczenia i pomaga nieradzącym sobie uczniom. 5. Nauczyciel wyjaśnia sposób zapisu algorytmu z warunkami w językach programowania. Omawia instrukcję iteracyjną w wybranym języku. Pokazuje postać instrukcji w drugim języku programowania. Uczniowie porównują algorytmy z warunkami zapisane w obydwu językach, zwracając uwagę na podobieństwa i różnice wykonują punkt 1. ćwiczenia 3. (str. 265). Lekcja 29. Zapisywanie algorytmów liniowych i z warunkami w języku programowania 133
6. Uczniowie, korzystając z przykładów 3. i 4. (str. 264-265), próbują samodzielnie wykonać ćwiczenie 4. (str. 265). Nauczyciel sprawdza wykonywanie ćwiczenia i pomaga nieradzącym sobie uczniom. 7. Korzystając z projektora, nauczyciel analizuje przykład 5. (str. 265) lub 6. (str. 266). Uczniowie, którzy wcześniej wykonali poprzednie ćwiczenia, lub uczniowie zainteresowani wykonują ćwiczenie 5. (str. 266). Ocena Należy ocenić uczniów za odpowiedzi ustne, bieżącą pracę na lekcji oraz rzetelne wykonanie ćwiczeń. Zadanie domowe Przeczytanie treści tematu C5 (str. str. 260-266), przygotowanie ustnej odpowiedzi na pytania 1-5 (str. 271) oraz rozwiązanie ćwiczeń 2-3 (punkt 2.) i 6. (str. 263-266). Uczniom zainteresowanym można polecić dodatkowo zadania 8-9 (str. 272) i zapoznanie się z dalszą częścią tematu. Lekcja 29. Zapisywanie algorytmów liniowych i z warunkami w języku programowania 134
Lekcja 30. (temat C5) Zapisywanie algorytmów iteracyjnych w języku programowania Wiedza i umiejętności Treści, pytania, ćwiczenia i zadania Podstawa programowa podstawowe rozszerzające z podręcznika, materiały Uczeń: Uczeń: z CD Uczeń: analizuje gotowe, proste programy, zapisane w wybranym języku realizuje prostą sytuację warunkową w wybranym języku definiuje pojęcie iteracji; analizuje gotowy schemat blokowy i program realizujący algorytm iteracyjny zapisuje złożony algorytm iteracyjny w wybranym języku projektuje rozwiązanie dowolnego zadania i zapisuje je w wybranym języku programowania temat C5 z podręcznika (str. 267-272); ćwiczenia 7-10 (str. 267-270) zadanie domowe pytanie 6. (str. 271); zadania 1-7 (str. 271) trzy do wyboru dla zainteresowanych zadania 10-13 (str. 272) 5.3. projektuje rozwiązanie: wybiera metodę rozwiązania, odpowiednio dobiera narzędzia komputerowe, tworzy projekt rozwiązania; 5.4. realizuje rozwiązanie na komputerze za pomocą oprogramowania aplikacyjnego lub języka 5.5. testuje otrzymane rozwiązanie, ocenia jego własności, w tym efektywność działania oraz zgodność ze specyfikacją; 5.6. przeprowadza prezentację i omawia zastosowania rozwiązania; Forma zajęć: wprowadzenie, pokaz z wykorzystaniem projektora; praca z podręcznikiem i CD; ćwiczenia Przebieg lekcji: 1. Nauczyciel podaje temat i cel lekcji oraz sprawdza zadanie domowe. Wybrani uczniowie odpowiadają na zadane pytania i przedstawiają rozwiązania zadań domowych, korzystając z projektora. 2. Nauczyciel omawia technikę iteracji i sposób zapisu algorytmu iteracyjnego w postaci listy kroków na przykładzie algorytmu obliczania sumy n liczb. Uczniowie śledzą przykład w podręczniku i wykonują ćwiczenie 7. (str. 267). Wyniki obliczeń wybrany uczeń zapisuje na tablicy. 3. Nauczyciel analizuje, wspólnie z uczniami, schemat blokowy pokazujący realizację algorytmu iteracyjnego (rys. 1, str. 268). Zwraca uwagę na miejsce w algorytmie, gdzie następuje powrót do wcześniejszego kroku, czyli pętla. Następnie omawia sposób zapisu algorytmu iteracyjnego w języku programowania. 4. Uczniowie, korzystając z przykładu 8. lub 9. (str. 268-269), wykonują ćwiczenie 8. (str. 269). Nauczyciel sprawdza wykonywanie ćwiczenia. 5. Korzystając z kodu programu zapisanego w ćwiczeniu 8. (str. 269), uczniowie wykonują ćwiczenie 9. (str. 269). 6. Nauczyciel omawia pętle zagnieżdżone, a uczniowie wykonują ćwiczenie 10. (str. 270). 7. Nauczyciel wspólnie z uczniami podsumowuje zajęcia, zadając pytania o poznane metody. Ocena Należy ocenić uczniów za odpowiedzi ustne, bieżącą pracę na lekcji oraz rzetelne wykonanie ćwiczeń. Lekcja 30. Zapisywanie algorytmów iteracyjnych w języku programowania 135
Zadanie domowe Przeczytanie treści tematu C5 (str. str. 267-271), przygotowanie ustnej odpowiedzi na pytanie 6. (str. 271) oraz rozwiązanie trzech zadań wybranych spośród 1-7 (str. 271). Uczniom zainteresowanym można polecić dodatkowo zadania 10-13 (str. 272). Lekcja 30. Zapisywanie algorytmów iteracyjnych w języku programowania 136