Sortowanie przez kopcowanie – schemat postępowania

Download Report

Transcript Sortowanie przez kopcowanie – schemat postępowania

DLACZEGO NIE POWINNIŚMY
KSZTAŁCIĆ KOLEJNYCH
SEKRETAREK?
Algorytmika jest dla każdego!
Przemysław Szydzik
Redaktor publikacji informatycznych
Wydawnictwo Szkolne PWN
[email protected]
Co mówi Google?
http://europa.eu/rapid/press-release_STAT-12-47_en.htm
Wieże Hanoi
// problem
Przenieś wszystkie krążki (z zachowaniem ich układu) ze słupka A na słupek C, wykorzystując słupek
pomocniczy B.
Zasady:
•
za jednym razem możesz przenieść tylko jeden krążek
•
na dowolny krążek możesz położyć tylko krążek od niego mniejszy
Wieże Hanoi - rozwiązanie
POWTARZAJ:
›
przenieś najmniejszy z możliwych do przeniesienia krążków na kolejny słupek, zgodnie z ruchem
wskazówek zegara
›
jeśli jest taka możliwość, wykonaj możliwe przeniesienie krążkiem, który nie jest najmniejszy
DO MOMENTU, GDY: wszystkie krążki znajdą się na jednym słupku.
Zamiana wartości zmiennych
Jaki jest pierwszy pomysł ucznia na zamianę wartości zmiennych x i y?
x=y;
y=x;
Taka odpowiedź wydaje się naturalna, bo przecież
właśnie taki (w dużym skrócie) cel chcemy osiągnąć.
Zamiana wartości zmiennych
Jak wyjaśnić uczniowi, że takie działania nie dadzą poprawnego
efektu?
Poprosić, aby myślał jak komputer!
Zamiana wartości zmiennych
Sprawdzenie dla dowolnych liczb, na przykład: x=5 i y=7.
Kod
Efekt
x=5; y=7;
Przypisanie zmiennej x wartości 5,
a zmiennej y wartości 7.
x=y;
Zmienna x przechowuje wartość 7.
y=x;
Zmienna y przechowuje wartość zmiennej x, czyli 7.
W ten sposób obie zmienne przechowują tę samą wartość.
Nie o to nam jednak chodziło!
Zamiana wartości zmiennych –rozwiązania
 Wprowadzenie pomocniczej zmiennej:
bufor=x;
x=y;
y=bufor;
 Manewrowanie dodawaniem:
x=x+y;
y=x-y;
x=x-y;
Programowanie od małego w CoderDojo
Misja: Świat potrzebuje hakerów!
http://coderdojo.org.pl/
Gra w Nimn
// problem
Ze zbioru n-kamieni gracze 1 i 2, począwszy od gracza 1, zabierają na przemian
jeden lub dwa kamienie. Przegrywa ten, który zabiera ostatni kamień.
Gra w Nim5
g2
g1
wygrał g1
1
g2
2
wygrał g2
3
g1
wygrał g2
1
g1
g1
5
g2
g1
g2
3
4
g1
2
2
1
wygrał g2
wygrał g1
g2
1
wygrał g1
wygrał g2
Gra w Nim5
W grze z pięcioma kamieniami zawsze może wygrać gracz, który
rozpoczyna – musi jednak rozpocząć od jednego kamienia.
Gra w Nim5
g2
g1
wygrał g1
1
g2
2
wygrał g2
3
g1
wygrał g2
1
g1
g1
5
g2
g1
g2
3
4
2
1
wygrał g2
wygrał g1
g2
1
wygrał g1
g1
2
wygrał g2
Gra w Nim5
A jeśli gracz 1 się pomyli i w pierwszym ruchu weźmie
2 kamienie?
Gra w Nim5
g2
g1
1
wygrał g1
g2
2
wygrał g2
3
g1
wygrał g2
1
g1
5
Gracz 1 przegra, jeśli gracz drugi weźmie 2 kamienie.
Ratowanie życia – algorytm resuscytacji
Kluczowe pytanie:
Jaki jest warunek zakończenia
algorytmu?
źródło: Podstawowe zabiegi resuscytacyjne u osób dorosłych oraz zastosowanie
automatycznych defibrylatorów zewnętrznych (AED)
Rudolph W. Koster, Michael A. Baubin, Leo L. Bossaert, Antonio Caballero, Pascal Cassan, Maaret
Castrén, Cristina Granja, Anthony J. Handley, Koenraad G. Monsieurs, Gavin D. Perkins, Violetta Raffay,
Claudio Sandron
Godzina Programowania (9-15.12.2013)
Pierwsze kroki z programowaniu
Kodowanie z Angry Bird: http://learn.code.org/hoc/1
Goole Blockly: http://skroc.pl/360e2
Patriota w dobie iPadów
Koduj dla Polski to inicjatywa Fundacji ePaństwo,
której celem jest promocja "kodowania",
"programowania" i "bycia developerem" jako
nowoczesnych form patriotyzmu.
http://epf.org.pl/kodujdlapolski/
Patriota w dobie iPadów
ADOPT-A-HYDRANT
CIVIC INSIGHTS
DiscoverBPS
Aplikacja, w oparciu o mapę
miasta, umożliwia obywatelom
Bostonu zgłoszenie lokalnym
władzom zasypanych śniegiem
hydrantów przeciwpożarowych.
Aplikacja oferuje
mieszkańcom najświeższe
informacje o statusie
zniszczonej nieruchomości
w danym mieście.
Aplikacja łączy opinie, kryteria,
dane szkoły oraz zaawansowane
narzędzia by pomóc rodzicom
wybrać szkołę dla swojego
dziecka.
http://epf.org.pl/kodujdlapolski/
Sortowanie zbiorów liczbowych
//problem
Dany jest zbiór liczb naturalnych. Ustaw elementy tego zbioru w porządku
niemalejącym.
Sortowanie bąbelkowe – rozwiązanie
www.youtube.com/watch?v=lyZQPjUT5B4
Sortowanie przez kopcowanie – alternatywne rozwiązanie
Kopiec – drzewo binarne, w którym wartość przechowywana w dowolnym węźle jest nie mniejsza niż wartość
w węzłach potomków.
Źródło: Informatyka nie tylko dla uczniów. Zakres rozszerzony, Wydawnictwo Szkolne PWN
Sortowanie przez kopcowanie – schemat postępowania
Źródło: Informatyka nie tylko dla uczniów. Zakres rozszerzony, Wydawnictwo Szkolne PWN
Sortowanie przez kopcowanie – schemat postępowania
Źródło: Informatyka nie tylko dla uczniów. Zakres rozszerzony, Wydawnictwo Szkolne PWN
Sortowanie przez kopcowanie – schemat postępowania
Źródło: Informatyka nie tylko dla uczniów. Zakres rozszerzony, Wydawnictwo Szkolne PWN
Sortowanie przez kopcowanie – schemat postępowania
Źródło: Informatyka nie tylko dla uczniów. Zakres rozszerzony, Wydawnictwo Szkolne PWN
Sortowanie przez kopcowanie – schemat postępowania
Źródło: Informatyka nie tylko dla uczniów. Zakres rozszerzony, Wydawnictwo Szkolne PWN
Sortowanie przez kopcowanie – schemat postępowania
Źródło: Informatyka nie tylko dla uczniów. Zakres rozszerzony, Wydawnictwo Szkolne PWN
Sortowanie przez kopcowanie – schemat postępowania
Źródło: Informatyka nie tylko dla uczniów. Zakres rozszerzony, Wydawnictwo Szkolne PWN
Sortowanie przez kopcowanie – schemat postępowania
Źródło: Informatyka nie tylko dla uczniów. Zakres rozszerzony, Wydawnictwo Szkolne PWN
Sortowanie przez kopcowanie – schemat postępowania
Źródło: Informatyka nie tylko dla uczniów. Zakres rozszerzony, Wydawnictwo Szkolne PWN
Sortowanie przez kopcowanie – schemat postępowania
Źródło: Informatyka nie tylko dla uczniów. Zakres rozszerzony, Wydawnictwo Szkolne PWN
Sortowanie przez kopcowanie – schemat postępowania
Źródło: Informatyka nie tylko dla uczniów. Zakres rozszerzony, Wydawnictwo Szkolne PWN
Sortowanie przez kopcowanie – implementacja
int Lewy(int rodzic) {
return (2*rodzic);
}
int Prawy(int rodzic) {
return (2*rodzic + 1);
}
Źródło: Informatyka nie tylko dla uczniów. Zakres rozszerzony, Wydawnictwo Szkolne PWN
Sortowanie przez kopcowanie – implementacja
void WykonajKopiec(int x) {
int pmax, l, r;
l= Lewy(x);
r= Prawy(x);
if (l <= rozmiar && t[l] > t[x])
pmax= l;
else
pmax= x;
if (r <= rozmiar && t[r] > t[pmax])
pmax= r;
if(pmax != x) {
Zamien(x, pmax);
WykonajKopiec(pmax);
}
}
Sortowanie przez kopcowanie – praca z uczniem
Co zrobić z uczniami, którym trudno będzie
napisać program?
Sortowanie przez kopcowanie – praca z uczniem
Model pracy:
> pokaz z wykorzystaniem modelu
> samodzielna, wielokrotna analiza algorytmu
> samodzielne zastosowanie kolejnych kroków algorytmu
> sprawdzenie rozwiązania
Sortowanie przez kopcowanie – praca z uczniem
Sprawdzenie
Zastosowanie
Pokaz i analiza
Źródło: Informatyka nie tylko dla uczniów. Zakres rozszerzony, Wydawnictwo Szkolne PWN
Algorytmika z uczniem słabszym
Wieże Hanoi
Fraktale
Źródło: Informatyka nie tylko dla uczniów. Zakres rozszerzony, Wydawnictwo Szkolne PWN
Algorytmika z uczniem słabszym
Przynależność punktu do obszaru
Źródło: Informatyka nie tylko dla uczniów. Zakres rozszerzony, Wydawnictwo Szkolne PWN
Kursy programowania online
›
http://www.codecademy.com/
›
http://www.learnstreet.com
›
http://tryruby.org/
›
https://www.codeschool.com/
›
https://dash.generalassemb.ly/
Ostatni slajd
› if(nr_slajdu == ostatni)
› print ”Dziękuję za uwagę!”;