Rozbor testu č.1 – nejčastější chyby



Čtěte pozorně zadání – každá část má bodové ohodnocení (je-li napsáno, že má být funkce, potom správný algoritmus v main nemůže získat body za definici a volání funkce).

Násobení (krát) má v C podobu „*“ ne „ . “ (tečka – ta je určena pro jiné mechanizmy)

Dávejte přednost typu double před float.

U cyklu
for(i=0;i<10;i++)
   f(i);
se inkrementace proměnné i, provede po skončení těla cyklu, tj. poprvé se provede až po prvním volání funkce f(i). Po nesplnění podmínky se už tělo neprovede.

Escape sekvence s číslem '\072' '\0' se převede na číslo mající danou hodnotu uvedenou za lomítkem (zde oktalově), takže '\0' se interpretuje jako hodnota 0 (nula).

Voláme-li funkce, které něco vypočtou a vrátí výsledek, je rozumné (nutné) výsledek někam uložit.

Při hledání minima (maxima) z více parametrů je dobré uvažovat i situaci, kdy minimální (maximální) hodnoty nabývá více parametrů.

Při volání funkce se uvádí typ u každé proměnné – správně je int funkce(int i, int j, int k) a ne int funkce(int i, j, k)

Pokud se má napsat prototyp k funkci, která je volána s konstantním parametrem (číslem) funkce1(2), funkce2(3.14), potom při psaní prototypu funkce, která by měla odpovídat tomuto volání, nejdříve určíme typ přímo dosazené proměnné (zde tedy int a double) a pro ten napíšeme prototyp funkce – int funkce(int aP) a int funkce2(double aP).

Pokud funkce počítá hodnoty, tak základním typem pro výpočty by měl být double (int pouze v situacích, kdy to vyplývá z typu úlohy a je to tedy odůvodnitelné – výpočet obvodu kruhu určitě v double, výpočet obvodu/plochy obdélníku v int v případě, že máme čtvercový rastr, který nikdy nebudeme chtít dělit (v budoucnu takový požadavek může přijít)).

Je-li funkce zapsána pouze pomocí hlavičky (bez těla), jedná se o deklaraci, která patří do hlavičkového souboru. Má-li funkce tělo, jedná se o definici a umístí se do zdrojového souboru (.c).
int f2(int aI); // deklarace funkce – patří do hlavičkového souboru – soubor.h
int f3(double aD) {} // definice funkce – patří do zdrojového souboru – soubor.c

Do funkcí, které vykonávají nějakou činnost (která je opakovaná a hrozí tedy vícenásobné použití v budoucnosti) nedávat I/O operace (tisk, načítání) pokud to není nezbytně nutné. Použítím těchto operací se znemožní univerzální použití. Je lepší hodnoty načítat/tisknout mimo funkci. Funkce „pouze pracuje“ na základě parametrů (vstupních a výstupních) a tím je přenositelná a vícenásobně použitelná.

Při zápisu x = f(i) * j +c ; se nejprve vyhodnotí pravá strana (v přesnosti nejpřesnějšího typu – zde návratový typ funkce, j a c) a následně dojde ke konverzi na typ výsledku (zde typ proměnné x).

++bb a bb++ se liší tím, že v prvním případě se nejprve přičte jednička a výsledek se použije, zatímce ve druhém případě se nejdříve použije proměnné a potom se k ní přičte jednička.

Operátor ^ je XOR a ne mocnina. Pro mocniny nižších řádů se dá použít násobení (x * x * x), pro vyšší řády potom funce pow (power).

Pokud používáme konstantu (jako například Pí), potom je vhodné ho na jedniném místě nadefinovat (#define, konstantní proměnné) a jinde používat. Určitě není vhodné předávat Pí jako parametr do funkce, nebo ji v každém použití vypisovat znovu.





Poslední změna 2014-03-21