Podstawy programowania (PRM)
Z części laboratoryjnej można uzyskać łącznie 50 punktów. Wyniki będą pojawiać się na bieżąco w stayemie ERES. Dodaktowe terminy ćwiczeń laboratoryjnych nie są przewidziane.
Ćwiczenie laboratoryjne
Projekt
Projekt jest oceniany maksymalnie na 20 punktów. Należy wybrać temat spośród jednego z poniższych bądź zaproponować własny. Projekty będą oceniane pod kątem czytelności stylu kodowania, poprawności rozwiązania oraz wykorzystania możliwości języka.
Gry z wykorzystaniem biblioteki ncurses
-
Tetris
Napisać grę tetris. Użyć biblioteki ncurses w celu zaimplementowania grafiki w linii poleceń.
- Szachy
Napisać grę w szachy dla dwóch osób. Użyć biblioteki ncurses w celu zaimplementowania grafiki w linii poleceń. Umożliwić zapis oraz odczyt stanu gry oraz sprawdzanie jego poprawności. Tryb gry z komputerem nie jest wymagany.
- Saper
Napisać grę w saper. Użyć biblioteki ncurses w celu zaimplementowania grafiki w linii poleceń. Umożliwić zapis oraz odczyt stanu gry oraz sprawdzanie jego poprawności.
- Wąż
Napisać grę w węża. Użyć biblioteki ncurses w celu zaimplementowania grafiki w linii poleceń.
- Gra w życie
Zaimplementować zasady gry w życie na prostokątnej planszy z wykorzystaniem biblioteki ncurses w celu rysowania. Umożliwić wczytanie stanu z pliku oraz wygenerowanie go losowo.
Implementacja algorytmów
- Kody o zmiennej długości słowa
Napisać program do kompresji oraz dekompresji danych z wykorzystaniem kodów o zmiennej długości słowa oraz algorytmu Huffmana do wyznaczania optymalnego kodu dla zadanego. Pokazać wrażliwość skompresowanego ciągu bitów na zaburzenia danych oraz skuteczność kodowana dla różnego rodzaju danych.
- LZ77
Napisać program do strumieniowej kompresji oraz dekompresji danych z wykorzystaniem algorytmu LZ77. Pokazać wrażliwość skompresowanego ciągu bitów na zaburzenia danych. Długość słownika oraz bufory są parametrem czasu kompilacji. Pokazać wrażliwość skompresowanego ciągu bitów na zaburzenia danych oraz skuteczność kodowana dla różnego rodzaju danych.
- Słownik ortograficzny - tablica mieszająca
Słownik ortograficzny z wykorzystaniem tablicy mieszającej jako struktury przechowującej dane. Rozmiar tablicy pośredniej powinien być parametrem czasu kompilacji. Program ma zliczać wykonane operacje oraz zajętą pamięć. Pokazać wpływ rozmiaru tablicy pośredniej na czas wyszukiwania słowa. Dla uproszczenia można założyć tekst bez polskich znaków.
- Słownik ortograficzny - drzewo
Słownik ortograficzny z wykorzystaniem drzewa jako struktury przechowującej dane. Rozmiar tablicy pośredniej powinien być parametrem czasu kompilacji. Program ma zliczać wykonane operacje oraz zajętą pamięć. Dla uproszczenia można założyć tekst bez polskich znaków.
- Szyfrowanie - algorytm Cezara
Szyfrowanie i deszyfrowanie algorytmem Cezara. Zaproponować kryptoanalizę dla tekstu.
- Szyfrowanie - algorytm Vigenere'a
Szyfrowanie i deszyfrowanie algorytmem Vigenere'a. Zaproponować kryptoanalizę dla tekstu.
- Wyszukiwanie drogi
Napisać program realizujący algorytm Dijkstry wyszukiwania drogi. Współrzędne węzłów będą wczytywane z pliku tekstowego.