Laboratorium 5 – Przetwarzanie obrazów 2

Zakres materiału

Struktury. Zmienne dynamiczne. Tablice dynamiczne. Argumenty wywołania programu. Asercje i obsługa błędów. Podział programu na moduły. Dokumentacja programu.

Przygotowanie do zajęć

Przed przystąpieniem do zajęć przygotuj następujące elementy oprogramowania:

Ponadto również:

Zadanie do wykonania

Zmodyfikować program do przetwarzania obrazów z laboratorium 3 zgodnie z następującymi założeniami:

Zadania dodatkowe (dla chętnych)

Przebieg ćwiczenia

Wydaje się, że najłatwiej można dokonać wymaganych zmian wprowadzając je jedną po drugiej w kolejności opisu w części Zadanie do wykonania.

Sprawozdanie

Sprawozdanie powinno zawierać: Ponieważ w tym zadaniu program będzie składał się z kilku plików, jako plik sprawozdania można wykorzystać plik zawierający funkcję main programu. Pozostałe pliki należy dołączyć do sprawozdania tworząc archiwum poleceniem tar, w sposób pokazany poniżej
[john_doe@diablo:~]$ tar -cvf sprawozdanie5.tar makefile plik1.c plik2.c plik2.h itp
Tak utworzone archiwum jest plikiem binarnym, dlatego też, w celu przekazania go pocztą elektroniczną lub systemem studinfo, musi zostać zakodowane za pomocą znaków z podstawowego zakresu kodów ascii (kodowanie transportowe). Podczas gdy programy pocztowe takie kodowanie wykonują zazwyczaj automatycznie, dla systemu studinfo trzeba zrobić to samodzielnie poleceniem uuencode, w sposób pokazany poniżej
[john_doe@diablo:~]$ uuencode sprawozdanie5.tar sprawozdanie5.tar > sprawozdanie5.tar.uu
Czyności odwrotne do powyższych (dla chcących sprawdzić poprawność wykonanych poleceń) mają postać
[john_doe@diablo:~]$ uudecode sprawozdanie5.tar.uu
[john_doe@diablo:~]$ tar -xvf sprawozdanie5.tar
UWAGA! Jeśli lokalny katalog będzie zawierał pliki o nazwach identycznych z nazwami plików zawartych w archiwum, to zostaną one nadpisane. Także bezpiecznie jest przeprowadzić całą operację w jakimś katalogu tymczasowym, po skopiowaniu archiwum tamże.

Pytania kontrolne

  1. Jak zdefiniować strukturę zawierającą obraz PGM, lub PPM?
  2. Wskaż powód zamiany struktur do przechowywania informacji o obrazie z zestawu zmiennych (przetwarzanie obrazów 1) na pojedynczą strukturę.
  3. Jakie kroki należy wykonać, by móc korzystać z dynamicznej tablicy dwuwymiarowej?
  4. Jaka jest struktura zmiennej argv?
  5. Omów sposób obsługi błędów w przykładowym programie opcje.c.
  6. Czym są asercje? Jak powinna wyglądać asercja dla funkcji wczytującej obraz?
  7. Jaka powinna być zawartość pliku nagłówkowego modułu?
  8. W skład programu wchodzą następujące pliki: modul.c (z definicjami funkcji eksportowanych) oraz main.c (z definicją funkcji głównej i nagłówkami funkcji importowanych). Jak powinny wyglądać poszczególne kroki kompilacji programu?