{{indexmenu_n>7}} ====== Lab 07 - Dynamická alokace a načítání vstupu ====== * Pro vyučující: [[courses:bab36prga:internal:tutorialinstruction:07|]] {{ :courses:bab36prga:labs:prga-lab07-sources.zip |Výchozí soubory prga-lab07-sources.zip}} ===== Procvičovaná témata ===== * Funkce ''malloc'', ''realloc'', ''free'' * Dynamická alokace * Příprava na hledání textu v souborech ===== Úkoly ===== Naimplementujte program, který bude načítat vstupní řetězec ze standardního vstupu, případně ze souboru, pokud je zadán vstupní argument. Vstupní řetězec odpovídá náhodné DNA sekvenci, generované například programem ''dgen.c''. Ve vstupním řetězci detekujte jeden ze zvolených stop codonů TAG, TAA nebo TGA a vstupní řetězec rozdělte na samostatné řádky, které vytiskněte na standardní výstup, případně do souboru, který může být zadán jako druhý argument programu. Detekujte chybové stavy a reportujte chyby na standardní chybový výstup. Postupujte podle následujících kroků. - Identifikujte základní funkce, které v programu budete potřebovat, např. definice chyboých stavů, načítání vstupních argumentů, načítání řetězce, detekci řetězce, reportování chyb, atd. - Zvolte si jeden ze stop codonů. - Definujte si možné chybové stavy a zprávy reportující příslušnou chybu. - Napište funkci pro načítení celého vstuptu s využitím dynamické alokace, např. ''realloc()'' a detekujte přidělení paměti. - Navrhněte funkce, které budou v načteném řetězci detekovat zvolený stop codon. Definujte rozhraní a logiku programu. //Můžete se například inspirovat funkcí ''strstr()'' z knihovny ''''. K řešení [[courses:bab36prga:hw:hw5|HW 5]] může být výhodnější implementovat vlastní funkci.// - Implementujte navržený program s využitím ''stdin'' a ''stdout''. - Program otestujte a vyzkoušejte přesměrování výstupu programu ''dgen'', např. ''./dgen | ./main''. Inspirujte se případně upravte přiložený program ''dgen.c''. ==== Rozšíření ==== * Program rozšiřte o zpracování argumentů programu specifikující vstupní a výstupní soubory. Detekujte chyby při načítání a zápisu z/do souboru. * Rozšiřte program výpis počtů detekovaných stop codonů. * Rozšiřte program o uvažování všech tří možných stop codonů TAG, TAA nebo TGA. * Můžete ošetřit konce nových řádku na vstupu. V základní zadání je neuvažujeme.