Jak uczę programowć?

advertisement
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
o
o
o
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++)
o
o
o
o
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
o
o
o
o
Opis zadanie
Specyfikacja wejścia
Specyfikacja wyjścia
Przykład
Zadania na podstawy programowania –
na co zwracać uwagę uczniom


o
o
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?
o
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?
o
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.
Download