Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Metodyka nauczania Informatyki

Podobne prezentacje


Prezentacja na temat: "Metodyka nauczania Informatyki"— Zapis prezentacji:

1 Metodyka nauczania Informatyki
Wykład 6. Uczenie programowania

2 Część I WSTĘP

3 Wstęp „Programy powinny być pisane tak, żeby ludzie mogli je czytać, a tylko przy okazji tak, żeby maszyny mogły je wykonywać.” H.Abelson, G.Sussman, J.Sussman Struktura i interpretacja programów komputerowych

4 Wstęp „Język programowania jest językiem, w którym wymyśla się programy, a nie językiem zapisywania już wymyślonych programów.” P.Graham, Hakerzy i malarze

5 Uwagi ogólne Język programowania wysokiego poziomu jest trudny do uczenia bo jest skomplikowany. Zanim można coś pokazać co działa trzeba przejść długą drogę: struktura programu, pojęcia zmiennej, wywołania funkcji standardowych. Trzeba pokonać wszystkie działania mające na celu uruchomienie programu: tworzenie tekstu źródłowego, kompilacja, usuwanie błędów syntaktycznych, scalanie uruchomienie gotowego programu.

6 Błędy Błędy w programowaniu uczą więcej niż poprawnie napisane programy Wyszukiwanie błędów jest doskonałą nauką – zostawmy to uczniom Kompilator sygnalizuje i opisuje błędy – ale robi to w postaci zagadek Błąd nie musi wystąpić w linii, którą wskazuje kompilator

7 Marzenia nauczyciela (?)
Najlepiej byłoby uczyć w systemie UNIX (Linux) – doskonałe rozłączenie tworzenia tekstu źródłowego od procesu kompilacji i linkowania oraz oddzielny obiekt: aplikacja w trybie znakowym (odpada klikanie myszką i skomplikowana grafika)

8 Rzeczywistość Zintegrowane środowisko programistyczne
automatyczne oznaczanie składni poleceń automatyczna kompilacja z linkowaniem, a nawet uruchomieniem aplikacji możliwość pracy krokowej debugger – podglądanie i zmiana wartości zmiennych w określonych punktach programu

9 Ocenianie Oceniamy Skuteczność programowania Jakość programowania
W jakim stopniu program spełnia specyfikację Jakość programowania Użycie odpowiedniej techniki Podział na moduły Strukturalizacja programu Możliwość rozszerzenia Czytelność kodu Budowa kodu Nazwy zmiennych Komentarze

10 Szczegółowe rozważania
Na każdym etapie zadania do realizacji powinny być proste, dostępne dla uczniów ale i atrakcyjne – takie które same zainteresują uczniów Przykład: przy przetwarzaniu plików zamiast liczyć słowa i litery (co może być bardzo pouczające) może lepiej szyfrować teksty szyfrem zastępującym.

11 Szczegółowe rozważania c.d.
Zadania dotyczące danego elementu powinny być tak skonstruowane aby użycie danego elementu było wyraźnie widoczne Nowe elementy należy umieszczać w wyraźnie wyróżnionych miejscach programu Przykład: gdy mówimy o pętli już znając instrukcje warunkowe, niech pętla zaczyna się na początku programu. Umieszczenie pętli wewnątrz instrukcji warunkowej ukryje ją lub sprowadzi do mniej znaczącego elementu

12 Szczegółowe rozważania c.d.
Gdy tematem nie jest interfejs użytkownika to programy powinny być bardzo ubogie lub nawet siermiężne w komunikacji z użytkownikiem Przyspieszy to proces programowania, zwróci uwagę na naprawdę istotne sprawy, przyspieszy uruchamianie i testowanie programów Przykład: program, który wymaga wprowadzenia liczby przez użytkownika może (dla celów edukacyjnych) zgłaszać tylko jeden komunikat (np. „Podaj dzielną:”) a nie musi się przedstawiać, określać jakie warunki ma spełniać podana liczba (o ile nie jest to szczególnie istotne).

13 Założenia metodologiczne
Uczniowie umieją posługiwać się komputerem Nie uczymy pojęć teoretycznych algorytmiki (pojęcia algorytmu, pojęcia rekurencji, własności algorytmów, itp.) Uczymy programowania, a nie tylko języka programowania Każdy nowy element jest niezbędny do rozwiązania określonego problemu lub znacznie ułatwiającym rozwiązanie Zagadnienia są małymi krokami do przodu Każde zagadnienie powinno mieć oddzielny problem, którego rozwiązanie tworzymy od podstaw Każde rozwiązanie tworzymy od początku razem z uczniami (nie ma gotowych rozwiązań z pliku...)

14 Pomysły Źródła pomysłów na programy
Standardowe – zbiory zadań z programowania w określonym języku Matematyka – np. teoria liczb (własności liczb) algebra (rozwiązywanie równań) ... Potrzeby szkolne Realizacja projektów szkolnych, prac domowych, itp. Zabawa

15 Część II PASCAL

16 Ramowy plan uczenia Struktura programu i najprostsze operacje wyjścia (może i wejścia) Stałe, zmienne i przypisania Styl pisania kodu, komentarze Instrukcje warunkowe Iteracje Wczytywanie danych Procedury i funkcje użytkownika Złożone typy danych Operacje na plikach

17 Struktura programu Struktura programu i najprostsze operacje wejścia/wyjścia Konieczność oraz możliwość natychmiastowego utworzenia aplikacji Przykład: program halo; begin writeln(‘Witam!’); end.

18 Struktura programu c.d. Wypisujemy: dowcipne teksty liczby
wyniki wyrażeń stałych testujemy operacje arytmetyczne (+, –, *, /, mod) poznajemy operacje znakowe (char, ord) odkrywamy logikę (true, false, and, or) badamy funkcje standardowe (sin, sqrt)

19 Stałe, zmienne, przypisania
Stałe, zmienne i przypisania Definiowanie stałych (składnia, po co?) Zmienne (nazwy odpowiadają przeznaczeniu) Deklaracje Proste typy danych: integer, real, char Podstawienia

20 Stałe, zmienne, przypisania c.d.
Przykład program sztuczka; const a=8; var n:integer; begin n:=a; n:=n+7; n:=2*n; n:=n–a; n:=n–7; writeln(n); end. Przykład program liczby; const a=5; var n:integer; begin n:=a; writeln(a,n); n:=n+a; end.

21 Styl kodu, komentarze Styl programowania, komentarze
Jedna instrukcja w jednej linii Odstępy oddzielające sensowne bloki w programie Każda instrukcja złożona (będzie o nich za chwilę) zaczyna wcięcie begin . . begin . . instrukcje . . end end

22 Styl kodu, komentarze c.d.
Trzeba komentować ważne miejsca w programie (komentarz powinien być krótki ale trafny) Ważne miejsca: Początek i koniec jednego zagadnienia Każdy z sekwencyjnych warunków Każda z części rozbudowanej instrukcji CASE Koniec bardzo rozległych instrukcji warunkowych i pętli Każde nietypowe (oryginalne) rozwiązanie typowego problemu Nadanie zmiennym szczególnych wartości, które same się nie tłumaczą Miejsca, które programista czuje, że musi skomentować

23 Instrukcje warunkowe Instrukcje warunkowe
If than else – klasyczna instrukcja warunkowa tworząca rozgałęzienia w programie Tu już są potrzebne „nawiasy syntaktyczne”: begin end które można było wprowadzić wraz ze stylem pisania kodu źródłowego Budowa skomplikowanych (?) warunków

24 Instrukcje warunkowe c.d.
Przykład program parzysta; const a=5; var x:integer; begin x:=a; if 2*(x div 2)=x then writeln(x,‘ parzyste’) else writeln(x,‘ nieparzyste’) end.

25 Instrukcje warunkowe c.d.
Przykład program wieksza; var x,y:real; begin x:=1; y:=3*(1/3); if x=y then writeln(x,‘ równe ‘,y) else if x<y then writeln(x,’ mniejsze od ‘,y) writeln(x,’ większe od ‘,y); end.

26 Instrukcje warunkowe c.d.
Instrukcja CASE Pokazywać jako jedną z instrukcji warunkowych Nie ukrywać, że taka jest Nie robić wokół niej szumu – powinna być naturalna w języku programowania

27 Instrukcje warunkowe c.d.
Przykład program cyfra16; var a:char; begin a:=’A’; case a of ’A’: writeln(10); ’B’: writeln(11); ’C’: writeln(12); ’D’: writeln(13); ’E’: writeln(14); ’F’: writeln(15); ’0’,’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’:writeln(a); end; end.

28 Iteracje Iteracje (pętle) Rozróżnienie pętli Stosowalność
for, while, until Rozróżnienie pętli Stosowalność Bezpieczeństwo (zapętlenie) Zastępowalność (wszystko można zastąpić pętlą while)

29 Iteracje c.d. Przykłady proste for a:=‘A’ to ‘Z’ do write(a);
for n:=100 downto 0 do m:=m+n; while i>0 do i:=i–1; repeat i:=i+1 until i=100; {dane x i y} r:=x; q:=0; while y<=r do begin r:=r-y; q:=q+1 end;

30 Iteracje c.d. Przykład (nieco bardziej) złożony: hipoteza „3x+1”
program test3x; constant a=255; var n:integer; begin n:=a; while n<>1 do if n mod 2 = 0 then n:=n div 2 else n:=3*n+1; end.

31 Iteracje c.d. Przykład złożony: suma cyfr danej liczby
program sumcyf; var n,suma:integer; begin n:=12345; suma:=0; repeat suma:=suma+n–10*(n div 10); n:=n div 10; until n=0; writeln(suma); end.

32 Pobieranie danych Funkcja wczytywania danych
Tak późno bo należy uczyć od razu oprogramowywania kontroli wprowadzanych danych Można podać ją wcześniej – na wyraźne życzenie uczniów z odpowiednimi zastrzeżeniami

33 Procedury i funkcje Procedury i funkcje
Naturalna potrzeba funkcji i procedur Wyraźne rozróżnienie między funkcją i procedurą Użyteczność procedur Parametry i sposoby wywoływania parametrów

34 Złożone typy danych Złożone typy danych Tablice Wskaźniki
Definiowanie własnych typów użytkownika Typy okrojone (?) Rekordy (?) Zbiory (?) Typy wyliczeniowe (?)

35 Operacje na plikach Operacje na plikach
Praca z plikami jako naturalna forma działania programu (większość aplikacji operuje na plikach) Ciekawe efekty...

36 Część III C++

37 C++ vs. Pascal Oba są językami wysokiego poziomu
C++ jest bardziej zwięzły Pascal jest łatwiejszy C++ jest obiektowy, ale tego raczej nie uczymy

38 Proste programy w C++ Program void main() { int i; cin>>i;
cout<<3*37*a<<endl; } Program void main() { printf(”Czesc!\n”); }

39 Proste programy w C++ Program Program Program void main() {
for(int i=9;i<100000;i=10*i+9) cout<<i*i<<endl; } Program void main() { for(int i=9;i<100;i+=9) cout<<i* <<endl; } Program void main() { for(int i=1;i<100000;i=10*i+1) cout<<pow(i,2)<<endl; }

40 Część III LOGO

41 Początek Zacząć od wyjaśnienia sposobu podawania poleceń
wpisywać w linii komend i naciskać ENTER na końcu, prawidłowa komenda to działanie żółwia i gotowość do przyjęcia nowego polecenia, nieprawidłowa komenda to komentarz. Zwrócić uwagę na konieczność czytania tego co pojawia się na ekranie komentarze LOGO są opisowe i dostosowane do ucznia

42 Pierwszy krok programowania
Polecenia FD (NP) – z parametrem, którym jest krok żółwia (uczniowie powinni sami ustalić rozmiar tego kroku) RT (PR) – z parametrem, którym jest ... obrót żółwia (nie mówimy o kątach – uczniowie, którzy znają kąty sami do tego dojdą) CS – zmazanie rysunku, bardzo potrzebne ale wprowadzamy po pierwszym rysunku

43 Pierwsze działanie Podyktować rysunek (uzyskiwany za pomocą podanych dwóch poleceń rysowania) uczniowie muszą zobaczyć jak to działa powiedzenie "narysujcie sobie coś" raczej utrudni niż ułatwi dalszą naukę. Rysunek powinien być niezbyt skomplikowany powinien zawierać różne odległości i kąty oraz jakieś powtórzenia dowcipny ale dopiero na koniec – czyli rysunek niespodzianka, lub zagadka: „co to jest?” W trakcie rysowania zwracać uwagę na zmieniającą się pozycję żółwia, zmiany długości i kątów.

44 Przykład (dyktando) rt 270 fd 460 rt 170 fd 500 rt 105 fd 20 rt 180

45 Przykład (efekt)

46 Następna zabawa „Dokończ rysunek”
nauczyciel dyktuje jakiś początek (2-3 komendy) uczniowie kończą w sposób dowcipny albo „zadany” (np. symetrycznie, zamknąć łamaną, itp.) Początek dyktowany przez nauczyciela zostaje na tablicy (aby uczniowie mogli wrócić, gdy coś nie wyjdzie) Zabawę poprzedzamy komendą CS – to jest dobry moment na tę komendę Najciekawsze, najdowcipniejsze dokończenia mogą być premiowane (cukierkiem, wpisem do księgi pamiątkowej, wydrukiem, etc.)

47 Przykład fd 100 rt 90 fd 30 rt 270 fd 50

48 Przykład dokończenia

49 Ćwiczenia doskonalące
Uczniowie wykonują własne rysunki Każdy może narysować co chce nauczyciel ma jednak gotową bazę pomysłów by uczniowie nie tracili czasu na wymyślanie „co narysować” Każdy dostaje (np. losuje) przygotowany wcześniej rysunek i ma go skopiować za pomocą komend Uczniowie eksperymentują Celem jest ustalenie związku parametrów poleceń z rzeczywistością np. rozmiary ekranu w krokach żółwia, obrót do tyłu, itp. Mogą wykonywać rysunki dowolne – nawet (najczęściej tak będzie) niefiguratywne Wyniki „badań” powinny być omówione i zanotowane

50 Krok dalej Dwie drogi Klasyczna: Inna:
kolejne „elementy programotwórcze” REPEAT IF procedury własne (jako odrębny element) Inna: procedury, rekurencja i listy inne procedury (jako ten sam typ elementu)

51 Droga „klasyczna” Eliminacja powtórzeń Rozgałęzienia
Z obserwacji wynika, że często powtarzamy te same polecenia, a więc warto to zapisać w skrócie REPEAT – wprowadzenie syntaktyki Rysunki z powtarzaniem (wielokąty, dachówki, płotki, grzebienie, etc.) Rozgałęzienia Naturalna potrzeba mechanizmu decyzyjnego IF – wprowadzenie syntaktyki Rysunki losowe (z powtarzaniem)

52 Droga „klasyczna” - procedury
Procedury własne użytkownika Obserwacja: zamiast powtarzać od początku lepiej zawrzeć polecenia w jednej komendzie Konstrukcja: TO ... END Parametry procedur Rozszerzenie możliwości procedur o zmienne wartości parametrów

53 Droga „klasyczna” - dalej
Struktury danych Operacje na liczbach (parametrach procedur) Listy i operacje na listach Rekurencja Wyjaśnienie rekurencji (jako dodatkowej możliwości procedur) Rysunki rekurencyjne Rekurencyjne działania na listach

54 Droga „klasyczna” - geometria
Jeżeli uczniowie rozumieją układ współrzędnych, albo chcemy ich tego nauczyć Położenie bezwzględne żółwia POS, SETPOS, HEADING, SETHEADING Położenie bezwzględne obiektów DISTANCE, TOWARDS

55 Droga „klasyczna” - koniec
Uzupełnienie struktur danych Wyjaśnienia pojęcia słowa, operatory ” i : MAKE Badanie struktur: EMPTYP, ... Uzupełnienia procedur Polecenia STOP, OUTPUT LOCAL Uzupełnienia operacji na listach SENTENCE, LIST PRINT, SHOW Uzupełnienia listy procedur wbudowanych Predykaty Funkcje matematyczne

56 „Inna” droga Zobaczcie rysunek składa się z wykonywanych na zmianę przesunięć i obrotów żółwia. Zatem rysunek można zapisać jako listę liczb oznaczających co druga wielkość przesunięcia, a pozostałe (też co druga ale od następnej) obrót żółwia. Napiszemy polecenie, które pozwoli podać tylko tę listę i samo zrobi rysunek: musimy wziąć pierwszy element naszej listy i o tle przesunąć żółwia, następnie wziąć drugi element (lub znów pierwszy jeżeli tamto przesunięcie wykreśliliśmy) i obrócić żółwia. te czynności powtarzamy tak długo aż skończy się lista.

57 „Inna” droga - realizacja
Procedura przesunięcia: to przesun :lista if not emptyp :lista [ fd first :lista obrot bf :lista ] end Procedura obrotów (piszą sami uczniowie): to obrot :lista if not emptyp :lista [ rt first :lista przesun bf :lista ]

58 „Inna” droga - zyski Od razu mamy wszystko:
definicje procedury warunki struktury danych: listy i parametry Rekurencja pojawia się w naturalny sposób do upraszczania zagadnień Naturalne konstrukcje procedur jako części języka

59 „Inna” droga - straty Iteracja przestaje być czymś naturalnym
Np. kwadrat zamiast: to kwad :bok repeat 4 [ fd :bok rt 90 ] end Będzie rysowany procedurą: to kwadr :bok :ile if :ile > 0 [ fd :bok rt 90 kwadr :bok :ile – 1 ]

60 „Inna” droga - geometria
Tak jak w drodze klasycznej

61 „Inna” droga - uzupełnienia
Jest mniej do uzupełniania bo więcej było potrzebne w trakcie nauki Koniecznym elementem uzupełnienia jest iteracja (REPEAT)

62 CZĘŚĆ IV LOGO UWAGI OGÓLNE

63 Rysunki Podstawą uczenia są rysunki – im ciekawsze tym lepiej
Nie za długo nad rysunkami „z ręki” – bez programowania Budować rysunki z elementów ujętych w procedury i sparametryzowanych Rysunki rekurencyjne – cel uczenia rysowania

64 Listy Ćwiczyć listy jako naturalne struktury danych:
Kolejki: FIFO, LIFO, stos, ... Listy jako wspomaganie rysunków Zapamiętywanie położenia Wierzchołki wielościanów lub łamanych Listy jako teksty Analiza teksów Wyszukiwanie i sortowanie Kryptografia

65 Liczby Uczyć nie tylko rysowania i operacji na listach ale także standardowych działań na liczbach Algorytm Euklidesa Badanie czy liczba jest pierwsza Sito Erastotenesa Kalkulator Procent składany Łączyć liczby z listami i rysunkami Dodawanie wektorów (w połączeniu z ilustracją graficzną)

66 Rekurencja Naturalne narzędzie rozwiązywania problemów Do rysowania
Zastępuje pętlę WHILE Zapamiętuje elementy w odpowiedniej kolejności Do rysowania Do obliczeń Do analizy list

67 Zalety LOGO Naturalne przejście z opisu w języku potocznym do zapisu w postaci procedur w LOGO Prostota poleceń i środowiska Nastawienie na obrazowość Naturalność programowania (niewiele umowności typowej dla imperatywnych języków programowania)

68 Wady LOGO Kiepska programowa komunikacja z użytkownikiem – stąd mało programów interakcyjnych Brak programu, a więc nie można stworzyć „prawdziwej” aplikacji Wrażenie delikatności typowej dla zabawek


Pobierz ppt "Metodyka nauczania Informatyki"

Podobne prezentacje


Reklamy Google