Ćwiczenia ze Wstępu do Informatyki
Termin: piątek 12:15–13:45,
Miejsce: sala 5840 / laboratorium 3041
Prowadzący: Szczepan Hummel
Punkty z ćwiczeń
Propozycje tematów programów zaliczeniowych (na szaro programy już wybrane):
- Słownik. Program wczytuję plik zawierający pary (słowo w jednym języku; słowo w drugim języku),
sortuje pary najpierw według słów w jednym języku, potem w drugim. Wyniki wypisuje w dwóch plikach.
- Formularze. Program wczytuje plik dokumentu i kilka (określone przez użytkownika) plików z danymi i tworzy
tyle plików wynikowych ile jest plików z danymi. Każdy plik wynikowy jest plikiem dokumentu,
w którym zamiast każdego wystąpienia ciągu #n (gdzie n jest liczbą naturalną)
jest wypisana n-ta linia odpowiedniego pliku z danymi.
- Hetmany. Dla podanego n program wypisuje takie ustawienie n hetmanów na planszy n*n, że żadne dwa się nie biją
(jeżeli takie ustawienie istnieje).
- Permutacje. Program wypisuje w porządku leksykograficznym (słownikowym) wszystkie permutacje zbioru {1,2,...,n}.
- Życie. Program symuluje na ekranie grę życie Conwaya na planszy n*n: W każdym momencie gry każda komórka (element tablicy)
jest żywa lub martwa. Jeżeli z jedną komórką sąsiadują dwie żywe komórki to nie zmienia ona stanu. Jeżeli dokładnie trzy żywe –
w następnym kroku komórka jest żywa. Jeżeli dowolna inna liczba (od 0 do 8) to komórka w następnej turze będzie martwa.
Zaczynamy grę ze stanu losowego lub podanego przez użytkownika (do wyboru).
- Iloczyn macierzy zespolonych. Dla podanych liczb n, m i k, oraz podanych macierzy (zawierających liczby
zespolone) n*m i m*k, program liczy iloczyn tych macierzy.
- Dzielenie wielomianów. Program liczy iloraz i resztę z dzielenia dla dwóch wielomianów jednej zmiennej podanych
przez użytkownika.
- Wielokąt wypukły. Program czyta z pliku współrzędne kolejnych wierzchołków wielokąta i sprawdza czy ten wielokąt
jest poprawny (nie ma samoprzecięć) i wypukły.
- Punkty wewnątrz wielokąta. Program wczytuje wielokąt z pliku (j.w.) i pewną listę punktów i dla każdego punktu
sprawdza czy ten leży wewnątrz wielokąta. (Program może ewentualnie odmówić wykonania zadania jeżeli wielokąt nie jest wypukły)
- Liczby rzymskie. Program zamienia liczby rzymskie na dziesiętne i na odwrót.
- Daty. Program liczy liczbę dni między dwoma podanymi datami. Program umie też obliczać jaka data jest n dni po innej
podanej dacie. (Może też obliczać dzień tygodnia dla podanej daty)
- Piramidy. Program wczytuje liczbę piramid (<10) i współrzędne i wysokości kolejnych piramid. Rysuje piramidy na
ekranie (poniżej narysowałem jak wygląda piramida wysokości 4 i współrzędnych (13,1)). Potem za pomocą naciśnięcia numeru piramidy i potem strzałek
można piramidę zmniejszać, zwiększać i przesuwać.
*
***
*****
*******
Proszę pamiętać, że:
- powyższe tematy są moimi propozycjami ale Państwo mogą też zaproponować coś swojego,
- są to tylko skrótowe opisy, nie pełne specyfikacje zadań; przed przystąpieniem do rozwiązywania
zadań należy porozumieć się z prowadzącym grupę w celu doprecyzowania wszystkich szczegułów,
- Jeżeli jakiś temat jest niezrozumiały – proszę pytać,
- wyboru tematu dokonujemy np. przez email,
- do jednego tematu może zgłosić się tylko jedna osoba, więc nie należy zbędnie zwlekać z wyborem,
- wybranie tematu nie jest podpisaniem cyrografu; będzie go można potem zmienić (oczywiście tylko na temat,
który zostanie wolny),
- należy się szybko wziąć do roboty, bo czasu nie jest za dużo,
- do końca grudnia można (jest to wręcz wskazane) się ze mną skonsultować odnośnie algorytmu i techniki rozwiązania zadania.
Terminy:
- Do końca grudnia 2007 – można skonsultować z prowadzącym sposób rozwiązania zadania
(i ewentualnie skorzystać z jego uwag, sugestii lub podpowiedzi).
- Do 11.01.2008 – programy oddane w tym terminie będzie można jeszcze poprawić po wysłuchaniu uwag prowadzącego.
- Do 18.01.2008 – ostateczny termin oddania gotowych programów.
Przy pisaniu programów proszę zwrócić uwagę na:
- Przemyślany, logiczny i sensowny podział na podprogramy (funkcje). To, oprócz poprawności programu, będzie miało największy wpływ na ocenę.
- Funkcje muszą realizować jak najbardziej wyodrębnione fragmenty programu (przekazywanie danych do funkcji przez arametry, nie używanie zmiennych globalnych).
- Komentarze – objaśniające kluczowe miejsca programu ale zwięzłe. Jeżeli poprawność użytego algorytmu wymaga dłuższego
uzasadnienia to należy je umieścić w osobnym pliku.
- Złożoność czasową i pamięciową.
- "Idiotoodporność" – na to jeszcze nigdy nie zwracaliśmy uwagi więc jak będą z tym problemy to zapewne będę mógł coś pomóc.
- Estetykę kodu – wcięcia, itp.