Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Metodyka nauczania Informatyki Wykład 6. Uczenie programowania 1.

Podobne prezentacje


Prezentacja na temat: "Metodyka nauczania Informatyki Wykład 6. Uczenie programowania 1."— Zapis prezentacji:

1 Metodyka nauczania Informatyki Wykład 6. Uczenie programowania 1

2 WSTĘP Część I 2

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 3

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 4

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. 5

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 6

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) 7

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 8

9 Ocenianie Oceniamy – Skuteczność 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 9

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. 10

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 11

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). 12

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...) 13

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 14

15 PASCAL Część II 15

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

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

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) 18

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

20 Stałe, zmienne, przypisania c.d. Przykład program liczby; const a=5; var n:integer; begin n:=a; writeln(a,n); n:=n+a; writeln(a,n); end. 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; n:=n–a; writeln(n); end. 20

21 Styl kodu, komentarze 3.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 21

22 Styl kodu, komentarze c.d. Komentarze – 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ć 22

23 Instrukcje warunkowe 4.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 23

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. 24

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

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 26

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. 27

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

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

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. 30

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. 31

32 Pobieranie danych 6.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 32

33 Procedury i funkcje 7.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 33

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

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

36 C++ Część III 36

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 … 37

38 Proste programy w C++ Program void main() { int i; cin>>i; cout<<3*37*a<

39 Proste programy w C++ 39 Program void main() { for(int i=9;i<100000;i=10*i+9) cout<

40 LOGO Część III 40

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 41

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 42

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. 43

44 Przykład (dyktando) rt 270 fd 460 rt 170 fd 500 rt 105 fd 20 rt 180 fd 10 rt 240 fd 10 rt 240 fd 10 rt 90 fd 20 rt 30 fd 10 rt 285 fd 15 rt 150 fd 15 rt 285 fd 30 rt 255 fd 40 44

45 Przykład (efekt) 45

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.) 46

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

48 Przykład dokończenia 48

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 49

50 Krok dalej Dwie drogi – Klasyczna: 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) 50

51 Droga klasyczna Eliminacja powtórzeń – 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) 51

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 52

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 53

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 54

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 55

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. 56

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 ] end 57

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 58

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 ] end 59

60 Inna droga - geometria Tak jak w drodze klasycznej 60

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) 61

62 LOGO UWAGI OGÓLNE CZĘŚĆ IV 62

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 63

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 64

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ą) 65

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

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) 67

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 68


Pobierz ppt "Metodyka nauczania Informatyki Wykład 6. Uczenie programowania 1."

Podobne prezentacje


Reklamy Google