Hodnocení DU 2D pole

Chyby na které si dávat pozor a doporučení:

Při alokaci musí být ke každému alloc (new) voláno též free (delete). Každý prvek který byl naalokován (reprezentován ukazatelem na počátek bloku) musí být odalokován (pomocí téhož ukazatele).

Test na to, zda byla alokace úspěšná (zda se ukazatel nerovná NULL), je nutné provádět po každé alokaci.

Odalokovávání u vícerozměrných polí se provádí v opačném pořadí než alokace. Nejdříve se naalokuje vektor ukazatelů (na řádky), které se naplní hodnotami adres počátků bloků dat (řádků). Odalokování je naopak – nejprve jednotlivé řádky, a poté vektor ukazatelů na počátky řádků. Odalokování by se mělo provést i v okamžiku nedokončené alokace (při chybě při alokaci).

Je výhodné aby po odalokování měl ukazatel na pole hodnotu NULL, která znamená, že pole není naalokováno. Proto je nutné předávat do funkce pro odalokování ukazatel na pole („tři hvězdičky“) aby se toto nastavení projevilo i vně funkce.

Nepoužívejte globální proměnné pokud to není nevyhnutelně nutné. Použití globálních proměnných je nevýhodné v případě, že potřebujete kód použít několikrát. Potom se jednotlivé sekce (proměnné) o globální proměnné dělí což je špatně.

Pokud je uveden vzor, zkuste ho moc neměnit. Kód v něm uvedený má většinou nějaký smysl (k procvičení nějaké vlastnosti jazyka).

V případě vkládání souborů (include) používejte hlavičkové soubory. Vkládat lze samozřejmě libovolný soubor, ale vkládání zdrojových souborů není vhodné. Při překladu každá změna v tomto zdrojovém souboru zapříčiní překlad obou (a i dalších vkládaných souborů) a tím se prodlužuje doba překladu (neměněné zdrojové soubory se za normálních okolností znovu nepřekládají). Vícenásobné načtení zdrojů (include téhož zdrojového kódu ve dvou jiných zdrojových modulech) má za následek vícenásobný výskyt téhož kódu v programu a tedy chybu linkeru (duplicity funkcí).

#include “soubor“ (s uvozovkami) slouží k načítání „vlastních“ hlavičkových souborů, #include <soubor> (s ostrými závorkami) slouží k načítání „systémových“ hlavičkových souborů. V nastavení prostředí mají každé zvlášť nastaveny cesty a proto je překladač při špatném uvedení nemusí najít.

Při vkládání souborů nepoužívejte v názvu cestu k souboru (např. “C:\adr1\adr2\soubor“), protože je to nevýhodné při přenášení kódu. Lépe je relativně k poloze příslušného zdrojového souboru (např. “ ..\include\soubor“). Nebo nejlépe nastavit příslušný adresář v prostředí překladače přímo mezi cesty prohledávané při hledání hlavičkových souborů.

"problém" s prioritou "*" a "." nejdřív ozávorkovat "*" a potom teprve "."

U funkcí není nutné uvádět extern

nepoužívat lichý počet podtržítek na začátku

Práce s ukazateli (PU) - nebyla DU

Výsledky:





74705 - 90%

- PU dobře

- špatně () v součtu matic ... (*mat)[]



21585 - 100%

- PU dobře



83600 - 40 % - pozdě (s ukolem 4)

- není hlavička

- odalokovat všechny řádky



80563 - 90%

- PU dobře

- není hlavička, includuje Cpp



77705 - 100%

- PU dobře



77697 - 100%

- PU dobře



77696 - 95%

- PU dobře

- test na NULL je umístěn špatně, testovat též jednotlivé řádky

- disp_matrix - vynulovat ukazatel



77673 - 95%

- PU dobře

- ochrana hlavičky proti vícenásobnému načtení



77661 - 95%

- PU dobře

- vynulovat proměnnou po odalokování



74616 - 85%

- PU dobře

- ochrana hlavičky proti vícenásobnému načtení

- v názvu proměnné nesmí být mezera



74614 - 95%

- ošetření vícenásobného načtení hlavičky je špatně

-



74591 - 100%

- PU dobře

-



74569 - 75%

- PU dobře

- ošetření hlavičky proto vícenásobnému načtení

- test na přidělení paměti dělat po každé alokaci

- v součtu matic chybí ozávorkovat *mat

- chyba v odalokování - nejprve každý řádek a potom jednou ukazatele



74564 - 95%

- PU dobře

- ošetřit hlavičku vůči vícenásobnému načtení





74557 - 90%

- PU dobře

- include cpp



74544 - 100%



43268 - 100%



41753 - 95%

- PU dobře

- test na přidělení paměti dělat po každé alokaci



pytlikova - 95%

- PU dobře

- hlavička proti vícenásobnému načtení

-



Poslední změna 2006-11-26