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