Jak uczę programowania? Joanna Śmigielska XIV LO im. Stanisława Staszica W Warszawie
O szkole Profile i rozkład godzin w 3_letnim cyklu kształcenia: Matematyczno-informatyczny 3 + 2 + 3 Matematyczno-fizyczny 1 + 1 + 1 Matematyczny 1 + 1 +1
Grupa i cele Klasy nie informatyczne – 18 godzin nauki programowania w 1 semestrze klasy pierwszej Zachęcić do dalszego uczenia się samodzielnego lub na kółkach Rozpocząć przygotowanie do matury nie przygotowuję do olimpiady
Język C++ (C z wybranymi elementami C++) Podstawowe typy danych: int, float, char, klasa string Typy złożone: tablice Instrukcje: warunkowa: if iteracyjne: for, while, do while Czytanie i wypisywanie danych strumieniami cin i cout zamiast printf i scanf
Na co zwracać uwagę? Czytelność kodu Znaczące nazwy zmiennych Komentarze - przed ważnymi fragmentami programu, co przechowują ważne zmienne Testowanie - wypisywanie częściowych wyników przykład programu ucznia - nominaly.cpp
Skąd biorę zadania na podstawy programowania http://main.edu.pl/ http://pl.spoj.pl/ Mistrzostwa Wielkopolski w Programowaniu Zespołowym (zadania próbne) Zadania z OIG I etap
Typowe zadanie Opis zadanie Specyfikacja wejścia Specyfikacja wyjścia Przykład
Zadania na podstawy programowania – na co zwracać uwagę uczniom Zrozumienie treści i problemu Czytanie danych i wypisanie wyniku zgodne ze specyfikacją Przekierowanie wejścia / wyjścia podczas testowania Działanie automatycznej sprawdzarki
Zadania na podstawy programowania – jakie? Proste zadania, których jedyną trudnością jest zrozumienie treści, a rozwiązanie ogranicza się do elementarnych operacji np. odjęcia dwóch liczb Przykłady zadań i rozwiązań uczniów: jablka.pdf - jab.cpp skladka.pdf - skl.cpp
Zadania na podstawy programowania – jakie? Zadania, które po przeanalizowaniu na „kartce” redukują się do kilku przypadków np. dla podanego n znaleźć ostatnia cyfrę 2n lub znaleźć ostatnią cyfrę n! Przykład zadania i rozwiazania ucznia: autobusy.pdf - aut.cpp
Problemy algorytmiczne Minimum, maksimum Liczby pierwsze - sito Eratostenesa Problem wyszukiwania – liniowe, binarne Problem flagi holenderskiej Problem sortowania – przez wybór, przez wstawianie, bąbelkowe
Dlaczego warto uczyć programować? Programowanie to nie wiedza tajemna – pomaga rozwiązywać problemy Algorytmika to nie bułka z masłem
Problem 1 Wykonano dodawanie, odejmowanie, mnożenie i dzielenie pewnych dwóch liczb naturalnych. Analizując zapis, w którym literą P oznaczona cyfrę parzystą, a literą N - nieparzystą, oraz wiedząc, że PP i NP po lewej stronie każdej równości to ta sama para liczb, znajdź te liczby. PP : NP = P PP + NP = PP PP - NP = NP PP * NP = NNP matematyka.cpp – rozwiązanie ucznia
Problem 2 Napisanie programu rozwiązującego proste łamigłówki sudoku to jest takie, do których rozwiązania wystarcza analiza pojedynczych kolumn, wierszy lub kwadratów. sudoku.cpp – rozwiązanie ucznia
Warto uczyć programowania na TI w klasach o profilach ścisłych.