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

Zadanie na laboratorium dodatkowe.

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.