Semestr zimowy 2003/04
- Wstęp do informatyki (ćwiczenia do wykładu prof.
L. Plaskoty)
- Metody numeryczne (ćwiczenia do wykładu prof. K.
Moszyński)
Konsultacje: Czwartek 12-13, inne
terminy ewentulnie i najlepiej wcześniej umówić się e-mailem:
lmarcin at mimuw.edu.pl, pok.1020 (na parterze
koło biblioteki). Należy też sprawdzić: Plan.
Wstęp do informatyki (I
rok matematyki do wykładu Leszka Płaskoty)
Zaliczenie: kolokwium (40p) + projekt tzn program w Pascalu (50) -
trzeba zaliczyc program i w sumie miec co najmniej 45p pktów.
Życzę powodzenia na egzaminie i
radzę powtórzyć ostani wykład tzn implementację drzew binarnych.
Wyniki kolokwium i pkty z labu
Projekty (do wyboru): termin ostani lab - po terminie
ilość pktów zmniejszona
- Projekt
1 (wstępny) (dla chętnych, odrobinę trudniejszy może
być napisany w Pascalu,C, lub C++), termin : do ostatniego labu czyli
pierwszy albo drugi tydzień stycznia 2003 (
plik pdf )
- Projekt 2: prosty notes w trybie tekstowym. Maja Panstwo
miec dane osob z telefonami, imionami i nazwiskami i adresami na dysku
w pliku tekstowym (tak aby mozna bylo niezaleznie ten plik edytowac).
Program ma umożlić wczytanie/zapisywanie danych do/z tego pliku, w
trybie tekstowym wypisanie listy nazwisk w porzadku alfabetycznym albo
posortowanych wg imienia, następnie możliwość oglądania danych dla
danego nazwiska (lub imienia), edycje danych, dodawanie/usuwanie danych
w pliku na dysku . Wyszukiwanie rekordu o zadanym nazwisku. W zakres
projektu wchodzi też zaprojektowanie jak ma ten program szczegółowo
działać. Nie ma w tym projekcie żadnych trudności algorytmicznych poza
ewentualnym sortowaniem (można zastosować możliwie prosty algorytm
sortowania o koszcie kwadratowym jak selection-sort) ale może to być
dość żmudne - trzeba zadbać o wiele szczegółów: jaką strukturę danych
wybrać - jak wypisywać na ekranie listę co zrobić jak się nazwiska nie
zmieszczą na ekranie itp. Ewentualne uproszczenia np trzymanie danych
nie w pliku tekstowym a pliku rekordów będzie skutkowało obniżeniem
ilości pktów.
- Projekt 3: Zaimplementować algorytm HeapSort -
sortowania przez kopcowanie dla listy dwuwskaźnikowej. Wczytywać rekordy
z pliku na dysku a następnie posortowane mają być zapisane na dysku
w pliku o innej ustalonej nazwie. Jako test posortować rekordy z
kluczem typu integer i porządkiem '<=' z kluczami losowymi np. ze
zbioru {-1000,..1000}, niech jeden program je wylosuje np. 20 albo 50
rekordów, i zapisze na dysk, drugi posortuje HeapSortem a trzeci
wczyta z dysku i pokaże na ekranie, dodatkowo niech podczas sortowania
program drugi (HeapSort) wypisze klucze najpierw nie uporządkowane
(wylosowane), potem wypisze kopiec (tylko klucze) a na końcu klucze
posortowane. (Ponieważ algorytm HeapSort jak i lista dwuwskaźnikowa
będą opisane szczegółowo na wykładzie więc wydaje się być ten projekt
najłatwiejszym - tylko że od wprowadzenia wskaźników do terminu oddania
jest mało czasu: realnie ze 2-3 tygodnie - chyba że ktoś samodzielnie
znajdzie potrzebne informacje). Uwaga!
Ponieważ w grudniu na wykładzie nie było listy 2-wskaźnikowej to można
zaimplementować algorytm na tablicy wskaźników -> Projekt 3' poniżej.
- Projekt 3': Zaimplementować
algorytm HeapSort - sortowania przez kopcowanie dla rekordów
trzymanych w tablicy wskaźników, pozostałe wymagania jak w Projekcie 3. (Tzn wpisujemy
adresy wczytanych rekordów do tablicy - i działamy na tej tablicy -
praktycznie ta wersja HeapSortu
niewiele sie różni od wersji tablicowej a nie musimy przepisywać
potencjalnie dużych rekordów)
Terminy labów:
Średnio co 2 tyg. choć szczególnie w październiku/listopadzie
częściej. Terminy: 15 X, 22X, 5XI, 12XI, 26XI, 3XII, 17XII, 7.I,
14.I.2004.
Program labów: (wstępny; w razie opóźnienia część
tematów przesuwa się na następny lab albo do domu).
Plik z
opisem do Free Pascala (pdf).
Free Pascal to freeware -
program dostepny za darmo - emuluje wiekszosc opcji Turbo Pascal i
Delphi (Borlanda) - mozna go zainstalowac zarowno pod Linuxem jak
Windows czy FreeBSD.
- wstępne zapoznanie sie ze środowskiem Turbo Pascala lub Free
pascala, kompilacja możliwie prostych programów, instrukcje I/O
write,witeln, read,realn, pętla 'For'. Program na sumowanie liczb od 1
do n dla zadanego n, ewentalnie wszystkich parzystych itp Pętle while,
repeat until, program na dzielenie modulo z wykorzystaniem tylko
dodawania liczb calkowitych, program zapis dowolnej liczby calkowitej
binarnie, itp Nowe typy zmiennych jak tablice. (15X)
- Kontynuacja. Procedury, funkcje. (22X)
- Rekordy, Sprytne potęgowanie - z wykorzystanie rozkładu
binarnego potęgi, podobne dzielenie całkowite (przy założeniu że mamy
dostępne operacje dodawania całk., mn, dziel. oraz brania reszty z
dzielenia przez 2), algorytm Hornera - liczenie wartości wiel. w pkcie
i ewentualnie znajdowanie unormowanych pochodnych w pkcie. Unity np.
unit z rekordem imitujacym liczby zespolone i dzialaniami na tych
liczbach jak dodawanie, mnozenie, modul, odwrotnosc itp, rekurencja:
programy rekurencyjne na: silnia, wieże Hanoi, dwumian Newtona - ich
wersje nierekurencyjne. (5,12XI)
- Kontynuacja. Ewent. sortowanie o koszcie kwadratowym - bubble
sort, insort itp(26XI).
- Pliki, stos, kolejka. Listy jedno-dwukierunkowe, wskaźniki.
- Zaliczenie zadań komputerowych (14 I 2004)
Metody Numeryczne: Informatyka
II/III rok, środy 10:15-11:45 sala 3120, czw 8:30-10 sala 3240
Zaliczenie na
podstawie pierwszego kolokwium (od 20pktów) - ocena lepsza od dost
będzie zależeć też od pktów z zadań komputerowych (40kol + 2x7pkt=
54pkt w sumie). Osoby które nie zaliczyły pierwszego kolokwium będą
dopuszczone do egzaminu (o ile chodziły na ćwiczenia ale będą musiały
rozwiązać dodatkowe zadania - szczegóły ustali wykładowca: prof. K. Moszyński.
Życzę powodzenia na egzaminie,
na stronie www
prof K. Moszyńskiego znajdziecie też Państwo zadania z kolokwiów i
egzaminów z poprzednich lat.
Osoby mające z kolokwium 18-19pktów mogą zaliczyć oddając oba programy.
Oceny(o ile kol zaliczone): 20-25
zal, 26-32 dst, 33-36 dst+, 37-40 db, 41-47 db+, 48-54 bdb
Kolokwia:
Pierwsze
- zakres to co było do kolokwium na ćwiczeniach czyli: normy wektorów i
macierzy, interpolacja Hermite'a i Lagrange'a - alg. różnic dzielonych,
oszacowania błędów interpolacji w normie max (dla funkcji o różnej
gładkości), funkcje kawałkami wielomianowe (błąd), interpolacja
trygonometryczna zespolonych funkcji okresowych (FFT), rzuty
prostopadłe i skośne, ich normy, własności macierzy Gramma. Można mieć
swoje zeszyty czy odręczne notatki ale nie książki czy wydruki skryptów.
Zadania komputerowe: (w ocenie
ZK sensowność testowania jest brana pod uwagę w istotnym stopniu!)
- Interpolacja Lagrange'a na dowolnym [a,b] i węzłach dowolnych,
przy czym testować w szczególności dla węzłów równodległych i węzłów
Czebyszewa dla funkcji 1/(1+x*x) na odcinku [-5,5] i sin(x) na [0, 2Pi].
Rysować na ekranie funkcję i wielomian interpolacyjny z węzłami i pktami
przecięcia . (Węzły Czebyszewa to zera n-tego wielomianu Czebyszewa T
n odpowiednio przesunięte i przeskalowane - n-ty
wielomian Czebyszewa na [-1,1] jest zdefiniowany jako Tn(x)=cos(n*arccos(x))
ma dokładnie n różnych zer : -1<x i<1, które z tego
wzoru od razu dają się policzyć). Rysowanie na ekranie może być za
pomocą jakiegoś narzędzia np gnuplota pod linuxem. (Czyli zgrać wyniki
do pliku i gnuplotem wyświetlić.)
- Kwadratura trapezów złożona : testować funkcje różnej gładkości
na [0,1] dla których całka jest znana np sin(x), wielomiany niskich
stopni np 1,2 czy x^p , p=k/2 k=1,2,3,4,5 itd, testować dla
h,h/2,h/4,h/8 dla h = 0.1 (h= 1/N gdzie N - ilość węzłów), porównywać
błąd.Tzn obliczać całkę dla zadanego h i drukować bład między
przybliżoną wartością całki a dokładna całką którą dla funkcji całkowych
możemy obliczyć, przy okazji można obliczyć i wypisać na ekranie iloraz
błędu dla h przez błąd dla h/2.
Aby otrzymać pkty trzeba mi zaprezentować program działający na
wydziale - przesłanie mailem raczej nie wystarczy - mogę nie mieć
kompilatora, programu do wizualizacji albo obsluga programu nie dość
jasna będzie itp i wtedy nawet zero pktów albo znacząco mniej.
Najlepiej jakby mogli mi Państwo okazać programy w działaniu w labie.
Trzeba też się liczyć z tym że mogę nie mieć czasu w sesji. Zachęcam do
oddania przed sesją.
Powrót do
mojej strony domowej
Strona ostatnio uaktualniona - 14 stycznia 2004.