Metodyka nauczania Informatyki

Slides:



Advertisements
Podobne prezentacje
Katarzyna Szafrańska kl. II ti
Advertisements

Sortowanie przez scalanie
Język C/C++ Funkcje.
Programowanie I Rekurencja.
PROGRAMOWANIE STRUKTURALNE
PROGRAMOWANIE STRUKTURALNE
Informatyka Stosowana
ZŁOŻONOŚĆ OBLICZENIOWA
Turbo pascal – instrukcje warunkowe, iteracyjne,…
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 2: Wstęp do programowania w Pascalu © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 5: Typy porządkowe, wyliczeniowe i okrojone. Definiowanie.
Imperatywne modele obliczeń Copyright, 2003 © Jerzy R. Nawrocki Teoretyczne podstawy.
Programowanie imperatywne i granice obliczalności Copyright, 2004 © Jerzy R. Nawrocki
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Kurs Pascala – spis treści
Wykład 2 struktura programu elementy języka typy zmienne
Wstęp do programowania obiektowego
Java – programowanie obiektowe
Wstęp do interpretacji algorytmów
Jak uczę programowania?
Wprowadzenie do programowania w języku Turbo Pascal
Typy złożone, case, stałe. Typ zbiorowy type typ_zb = set of typ_podstawowy; Typem podstawowym może być tylko typ porządkowy. Typem podstawowym może być
Schemat Hornera Mgr inż. Michał Szucki.
Programowanie w języku Fortran 95
Podstawy programowania
Programowanie strukturalne i obiektowe
Andrzej Jędryczkowski Nie da się napisać większego programu bez podziału go na części zwane podprogramami. Podprogram to wyróżniona część programu.
Turbo Pascal Turbo Pascal - jedna z popularniejszych implementacji kompilatorów języka PASCAL, zintegrowane srodowisko programistyczne, produkt firmy Borland.
A ctive S erver P ages Technologia dostępu do danych.
Funkcje w Pascalu Przypomnienie wiadomości o procedurach Prowadzący: Anna Kaleta Piotr Chojnacki.
Algorytmy z przykładami w Turbo Pascal 7.0
20 września 2003r. Centrum Kształcenia Ustawicznego im. St. Staszica w Koszalinie Wstęp do algorytmiki Autor: Marek Magiera.
Podstawy programowania. Język C i C++– podstawy Temat: 1
Struktura programu w Turbo Pascalu.
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
Wyrażenia w Turbo Pascalu.
Procedury i funkcje.
1 Wykład 8 Podprogramy. 2 Pojęcie i istota stosowania dzielenie programu na części (logicznie spójne) - nazwane - niezależne od pozostałych części - z.
Podstawy programowania w języku C i C++
Programowanie obiektowe – zastosowanie języka Java SE
Programowanie strukturalne i obiektowe
Instrukcje iteracyjne
Elżbieta Fiedziukiewicz
Podstawy informatyki 2013/2014
Programowanie baz danych
Informatyka MZT1 Wykład 6 Iteracje while i repeat Tablice Rekordy
Wykład 10 typ zbiorowy rekurencja.
Na wysokościach myślenia jest sfera,
Ogólna struktura programu w TP
Podstawy języka Instrukcje - wprowadzenie
Podstawy programowania
Algorytmika.
C++.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Pętle Zajęcia 6.
Wprowadzenie do programowania w Pascalu mgr inż. Agata Pacek.
Programowanie imperatywne i język C Copyright, 2007 © Jerzy R. Nawrocki Wstęp do.
Podstawy programowania
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
Wstęp do interpretacji algorytmów
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.
Visual Basic przygotował Michał Miłek Visual Basic – język programowania wysokiego poziomu i narzędzie programistyczne firmy Microsoft. Składnia jest oparta.
P ASCAL Definicje, deklaracje, podstawowe instrukcje 1.
Algorytmy, sposoby ich zapisu.1 Algorytm to uporządkowany opis postępowania przy rozwiązywaniu problemu z uwzględnieniem opisu danych oraz opisu kolejnych.
Programowanie strukturalne i obiektowe Klasa I. Podstawowe pojęcia dotyczące programowania 1. Problem 2. Algorytm 3. Komputer 4. Program komputerowy 5.
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
POJĘCIE ALGORYTMU Wstęp do informatyki Pojęcie algorytmu
Zapis prezentacji:

Metodyka nauczania Informatyki Wykład 6. Uczenie programowania

Część I WSTĘP

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

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

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.

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

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)

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

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

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.

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

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

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

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

Część II PASCAL

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

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.

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)

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

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.

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

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ć

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

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.

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.

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

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.

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)

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;

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.

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.

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

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

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

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

Część III C++

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 …

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

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*12345679<<endl; } Program void main() { for(int i=1;i<100000;i=10*i+1) cout<<pow(i,2)<<endl; }

Część III LOGO

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

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

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.

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

Przykład (efekt)

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

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

Przykład dokończenia

Ć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

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)

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)

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

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

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

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

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

„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 ]

„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

„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 ]

„Inna” droga - geometria Tak jak w drodze klasycznej

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

CZĘŚĆ IV LOGO UWAGI OGÓLNE

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

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

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

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

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)

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