Části vyznačené fialově se týkají pouze jazyka C++. Tučnou kurzívou jsou vyznačena důležitá místa, červeně případná místa změněná proti původní verzi zveřejněné na počátku semestru.
Aby se snížilo riziko chyb v programu a zdrojový text programu byl srozumitelnější, je velmi žádoucí řídit se při programování určitými konvencemi. Některé z nich jsou dokonce vyžadovány normou jazyka C, resp. C++. V příkladech, které budete zpracovávat ve cvičení a ke zkoušce je dodržování všech dále uvedených konvencí vyžadováno.
Za normu se v současné době považuje ISO/IEC C (zvané C99) pro jazyk C, ANSI/ISO C++ pro jazyk C++.
Zejména se doporučuje:
/*
komentář */
(vhodné pro víceřádkové komentáře), nebo // komentář
(vhodné
pro krátké komentáře). main
vrací vždy hodnotu typu int
. Občas (i v
učebnicích) můžete spatřit deklaraci void main()
, ale ta neodpovídá
ani klasickému Céčku Kernighana-Ritchieho, ani žádné z norem jazyka C, ani normě jazyka C++
(přestože mnoho překladačů ji akceptuje bez varování).
main
rovněž určila
hodnotu, která se má vrátit. Je zvykem vracet nulu, pokud program při zpracování
nezjistil chybu a malé kladné číslo, pokud na chybu narazil. Konkrétní hodnotou je
vhodné rozlišit jednotlivé typy chyb (např. chybné volání programu, chybná data,
neexistenci řešení apod.) Pokud program zpracovává několik příkladů, přičemž
některá data zpracoval bez problémů a v jiných zjistil chybu, je třeba
indikovat návratovou hodnotou chybu (není špatný nápad vrátit počet chybných
dat). K předepsání návratové hodnoty se používá příkaz
return
číslo;
main
je sice
formálně typu int
, ale aby ji správně zpracoval shell operačního
systému, je třeba omezit se na hodnoty od 0 do 255. Zejména je nevhodné
uvádět hodnoty záporné; např. -1
shell obvykle pochopí
jako 255. #include
, pro
vlastní funkce napište deklaraci prototypu sami.
Pokud zadání vyžaduje vytvoření samostatného
hlavičkového souboru, soustřeďte v něm deklarace
všech prototypů. Hlavičkový soubor do všech částí
programu (zdrojových souborů) zahrnete direktivou #include "název.h"
. Název
hlavičkového souboru bude až na příponu totožný s názvem programu.
Hlavičkový soubor může obsahovat rovněž potřebné globální
deklarace (zejména deklarace tříd v C++), pomocí direktivy #ifndef nebo #ifdef
zajistěte, aby se do
programu deklarace proměnných uložily pouze jednou. Pozor - pro funkce a
metody se do hlavičkového souboru vkládají pouze předběžné
deklarace, definiční deklarace budou až v souboru s příponou
.
c nebo .cc .h
obvyklou
v jazyce C, ale i u starších překladačů C++,
ale jsou bez přípony. Většina překladačů zná oba druhy
hlavičkových souborů, ale ty se od sebe v detailech liší. Staré standardní hlavičkové soubory s příponou nepoužívejte.
Naproti tomu našim vlastním hlavičkovým souborům je třeba příponu .h
dát. <string>
dáváme přednost před prostředky ze <string.h>
nebo <cstring>
). pocet_bodu
nebo sumarizace()
-
jsou rozhodně vhodnější než názvy, které nic neříkají - jako nb
nebo
S()
. Šetřit na délce názvů přinese víc problémů než úspor.
typedef
,
v
C++ je mnohem vhodnější zavést vlastní třídu.make
. U příkladů v jazyce C to
však ve cvičeních ani v závěrečných příkladech nepoužívejte,
pokud to zadání výslovně nevyžaduje. V C++ bude vyžadováno, aby příklady neobsahující vlastní třídy a šablony
byly zapsány v jednom souboru (a k němu byl případně
podle bodu 7 přidán hlavičkový
soubor). V příkladech obsahujících deklarace tříd nebo šablon budou v
jednom souboru (zadaného názvu) zapsány všechny takové deklarace a další
potřebné funkce a ve druhém bude pouze hlavní program sloužící pro otestování
vytvořených tříd a šablon. Tento druhý soubor bude mít stejný název,
za nějž bude přidáno slovo main
(např. definice tříd a
funkcí v souboru xyz.
cc, hlavičkový soubor xyz.h
,
hlavní program xyzmain.
cc). Program xyzmain.
cc
však
bude sloužit pouze pro vás, cvičící budou vaše třídy a funkce
testovat zvlášť vytvořeným programem (program xyzmain.
cc
přesto
pro případnou detailní kontrolu odevzdáte.) Tyto zásady samozřejmě začněte ve svých programech používat až v okamžiku, kdy výuka postoupí tak daleko, že by vám mělo být jasné, co se jimi míní.