WPROWADZENIE DO ALGORYTMÓW

Transkrypt

WPROWADZENIE DO ALGORYTMÓW
WPROWADZENIE DO ALGORYTMÓW
Mariusz Różycki
11 września 2012
1. Ocenianie
a. Po pierwsze – na lekcjach będę czasem zadawać pytania. Osoba, która udzieli
poprawnej odpowiedzi dostanie plusa. Każde 3 plusy zamieniane będą na
ocenę bardzo dobrą z aktywności.
b. Po drugie – prace domowe. Dopóki będziemy omawiać algorytmy, na koniec
każdej lekcji dawać będę wam co najmniej 3 zadania. Przynajmniej 2 dla osób,
które chcą sobie poćwiczyć zagadnienia z lekcji. Będą to zadania proste. Nie
jest obowiązkowe ich wykonywanie z lekcji na lekcję. Zwróćcie jednak uwagę,
ze mieszczą się one w omawianym zakresie materiału, więc mogą się pojawić
na klasówce lub zapowiedzianej kartkówce. Rozwiązania tych zadań można
przynieść na lekcję lub wysłać je do mnie, wtedy je sprawdzę lub pomogę w
razie wątpliwości. Nie będzie to jednak oceniane.
c. Kolejne zadanie (czasem będą to 2 zadania) będzie obowiązkowe. Będą to
zadania nieco trudniejsze niż te wspomniane przed chwilą, jednak nadal do
wykonania bez nadmiernego wysiłku przez osoby, które opanowały materiał z
lekcji. Rozwiązań tych zadań nie musicie ani przynosić na lekcję ani wysyłać do
mnie – macie je umieć zrobić i krótko omówić. Do tej kategorii (ale nie do
limitu dwóch zadań) zaliczają się także te rozwiązane na lekcji, nawet jeżeli nie
będzie to dodatkowo zaznaczone. Na każdej lekcji jedna osoba będzie brana
do odpowiedzi właśnie z tych zadań, możliwa jest też niezapowiedziana
kartkówka. Przy odpowiedzi z pracy domowej niedozwolone są jakiekolwiek
pomoce naukowe. Każda osoba ma do dyspozycji jedno nieprzygotowanie w
semestrze, które zwalnia z odpowiedzi i niezapowiedzianych kartkówek.
d. Czasami zdarzy się, że pojawi się jeszcze jedno (lub dwa) zadanie, dla
chętnych. Będzie ono nieco trudniejsze, wykraczające poza materiał z lekcji.
Jeżeli ktoś zrobi je (bez mojej czy pana Obczyńskiego pomocy) i omówi je na
lekcji (lub na przerwie, jeżeli zabraknie czasu), może dostać 6 z aktywności.
2. Wolfram Alpha
a. Jest to strona internetowa, która może być wam przydatna w nauce
matematyki. Jest zaawansowaną wyszukiwarką, ale potrafi także rozwiązywać
równania, szkicować wykresy, liczyć pochodne i całki, rozwiązywać równania
różniczkowe itp.
b. Wymaga nieco znajomości angielskiego, ale tylko trochę. Przy funkcjach
trygonometrycznych trzeba uważać – zgodnie ze zwyczajem panującym w
krajach anglosaskich Wolfram Alpha używa funkcji secans i cosecans, które są
odwrotnościami funkcji cosinus i sinus. Zatem sec x = 1/cos x.
c. Adres to wolframalpha.com
3. Czym jest algorytm?
a. Definicja ze Słownika Języka Polskiego PWN mówi, że jest to „ściśle określony
ciąg czynności, których wykonanie prowadzi do rozwiązania jakiegoś zadania”.
W kontekście informatycznym mówi się także o czynnościach
przekształcających dane wejściowe w dane wyjściowe. Bardziej po ludzku,
algorytm to po prostu pewien sposób zrobienia czegoś.
b. Istnieje wiele rodzajów algorytmów, nie tylko typowo matematycznych jak
algorytm rozkładu liczby na czynniki pierwsze, ale także w życiu codziennym –
na przykład algorytm robienia naleśników.
4. Opis algorytmu
a. Nauka o algorytmach nie miałaby sensu, gdyby algorytmy nie były
powtarzalne. Idzie za tym konieczność posiadania możliwości zapisu
algorytmu.
b. Pozostając przy przykładzie algorytmu robienia naleśników, jego zapisem
będzie nic innego, jak przepis na naleśniki. Wszyscy wiemy, jak z reguły
wyglądają przepisy kulinarne. Najpierw lista składników, potem opis
przyrządzenia danej potrawy.
c. Oprócz książki kucharskiej, opisy algorytmów znajdziemy w przeróżnych
instrukcjach obsługi, poradnikach, podręcznikach itp. Nie będziemy się takimi
algorytmami z życia codziennego zajmowali, jednak warto wiedzieć, że to
również są algorytmy.
d. W podobny sposób, co przepis na naleśniki (nawet z odpowiednikiem listy
składników), możemy opisać wspomniany wcześniej algorytm znajdowania
rozkładu liczby na czynniki pierwsze. Taki sposób zapisu nazywamy listą
kroków.
e. Istnieją oczywiście inne sposoby zapisu algorytmów, na przykład przy użyciu
schematu blokowego, czy języków programowania. Tym jednak zajmiemy się
później.
5. Stopień formalizmu zapisu algorytmu
a. Wróćmy na chwilę do przepisu na naleśniki. Czy każdy, mając przed sobą taki
opis (i oczywiście potrzebne narzędzia i składniki), byłby w stanie zrobić
naleśniki? Na pewno są osoby, które by sobie nie poradziły.
b. Nie każdy przecież wie, jaka konsystencja jest prawidłowa, co to znaczy, że
naleśnik się zarumienił. Niektórzy stając przy garach z nerwów mogą
zapomnieć, jaki jest ich ulubiony dżem. W końcu – nie każdy musi lubić dżem.
c. Nawet pokazany wcześniej opis algorytmu znajdowania rozkładu liczby na
czynniki pierwsze nie jest wolny od tego problemu. Dla przykładu, nie każdy
musi wiedzieć, czym jest liczba pierwsza.
d. Nie trzeba szukać daleko – próbując zaimplementować ten algorytm w
dowolnym języku programowania musielibyśmy wytłumaczyć komputerowi
jak ma znaleźć najmniejszą liczbę pierwszą. Co więcej – musielibyśmy mu
także wyjaśnić, co znaczy, że dana liczba jest podzielna przez inną!
e. Dlatego zapisując algorytm trzeba przyjąć pewien stopień formalizmu, pewien
zbiór pojęć i czynności pierwotnych, które uznajemy za powszechnie
zrozumiałe. Oczywiście to jak ten zbiór wygląda, zależy od sytuacji.
f. Przykład spoza świata informatyki: idziesz do odpowiedzi na matematyce i w
pewnym momencie musisz przemnożyć dwie liczby dwucyfrowe. Chociaż jest
możliwe zrobić to w pamięci, to prędzej zrobisz to metodą pisemną (pomińmy
tutaj liczenie na kalkulatorze). Nie musisz wtedy tłumaczyć co robisz –
nauczyciel i wszystkie osoby w klasie powinny wiedzieć co to jest. Jednak
spróbuj zrobić coś takiego przed uczniem pierwszej klasy podstawówki.
g. Drugi przykład – na studiach, po omówieniu całek (niestety w Polsce często
także i wcześniej), wykładowcy przyjmą, że je znasz. I będą używać ich tak
samo, jak ty teraz mnożenia czy potęgowania. Jednak gdybym próbował teraz
użyć na zajęciach całki, musiałbym wytłumaczyć co to jest i jak działa.
h. Na potrzeby naszych zajęć przyjmijmy, że do naszego zbioru pojęć pierwotnych
należą wszystkie pojęcia i czynności matematyczne, które powinien znać uczeń
rozpoczynający naukę w gimnazjum: dodawanie, odejmowanie, mnożenie,
dzielenie, dzielenie z resztą (głównie chodzi tu o resztę), porównywanie liczb,
sprowadzanie ułamków do wspólnego mianownika itp.
6. Praca domowa
a. Zadania ćwiczebne, nieobowiązkowe
i. Zapisać w postaci listy kroków algorytm przechodzenia przez ulicę.
ii. Zapisać w postaci listy kroków algorytm dodawania pisemnego.
b. Zadania obowiązkowe
i. (z lekcji) Zapisać w postaci listy kroków algorytm znajdowania rozkładu
liczby na czynniki pierwsze.
ii. (z lekcji) Zapisać w postaci listy kroków algorytm rozwiązywania
równania liniowego.
iii. Zapisać w postaci listy kroków algorytm dodawania ułamków zwykłych.
c. Zadania trudniejsze, nieobowiązkowe
i. Zapisać w postaci listy kroków algorytm znajdowania liczby rozwiązań
równania liniowego. Jeżeli posiada jedno rozwiązanie, dodatkowo
należy je podać.
ii. Zapisać w postaci listy kroków algorytm znajdowania najmniejszej
liczby pierwszej nie mniejszej od danej liczby n. Przykładowo, dla n =
20 poprawną odpowiedzią jest 23, a dla n = 103 odpowiedź to 103.

Podobne dokumenty