Skip to main content

Programování v C++ (Ukázka, strana 99)

Page 1

5

Začínáme naostro

V předchozích kapitolách jsme si na řadě příkladů ukázali některé z možností, které nám programovací jazyk C++ nabízí. V této kapitole začneme soustavný výklad jazyka C++.

5.1  Jak budeme jazyk C++ popisovat Zjednodušená pravidla formálního popisu syntaxe vybraných konstrukcí jazyka C++ jsme potkali už ve třetí kapitole. Nyní tato pravidla doplníme a upřesníme. Při popisu programovacího jazyka se rozlišují koncové (terminální) a nekoncové (neterminální) symboly. To sice zní tajemně, ale nejde o nic složitého: ◾ Koncový symbol můžeme beze změny opsat do programu. ◾ Nekoncový symbol musí být někde dále popsán, musí být řečeno, jak ho vytvoříme z koncových symbolů. To znamená, že nekoncový symbol je jméno složitější konstrukce, která už byla, nebo teprve bude vysvětlena.

5.1.1  Pravidla popisu syntaxe Při popisu syntaxe (skladby) jazyka C++, tedy pravidel, podle nichž sestavujeme deklarace, příkazy a jiné konstrukce, budeme postupovat takto: ◾ Před popisem uvedeme na samostatné řádce záhlaví obsahující název popisované konstrukce ukončený dvojtečkou. ◾ Vlastní popis bude začínat odrážkou ▪. ◾ Koncové symboly, tedy části, které lze do programu beze změny opsat, zapíšeme tučným písmem. ◾ Nekoncové symboly, tedy části, které je třeba dále definovat (nebo jsme je už někde definovali), zapíšeme kurzivou. Bude-li se neterminální symbol skládat z několika slov, spojíme je v jeden celek pomlčkami. (Nebude-li hrozit nedorozumění, budeme je vynechávat.) ◾ Části konstrukce, které lze vynechat, označíme indexem nep. Vynecháním se může, ale nemusí změnit význam popisované konstrukce. ◾ Popisované konstrukce mohou mít několik možností. V takovém případě: ◾ buď každou z nich umístíme na samostatnou řádku a ta bude začínat odrážkou ▪, ◾ nebo do záhlaví připojíme za dvojtečku slova jeden z, všechny možnosti vypíšeme do téže řádky a oddělíme je mezerou. Občas nahradíme přesný syntaktický popis neformálním vysvětlením – v mnoha situacích to bude výrazně srozumitelnější. Někdy také použijeme zjednodušený popis a doplníme ho výkladem. Popis syntaxe musí být samozřejmě doplněn vysvětlením významu (sémantiky) dané konstrukce. 98 Programování v jazyce C++

Ukázka elektronické knihy, UID: KOS245812


PŘÍKLAD 5.1: KOMENTÁŘ Prvním příkladem bude popis syntaxe komentáře v jazyce C++. komentář: ◾/* ◾ text-víceřádkového-komentáře nep */ ◾// ◾ text-jednořádkového-komentáře nep Tento popis ukazuje, že v jazyce C++ existují dva druhy komentářů. První z nich začíná znaky /* (v popisu jsou tučně, takže je můžeme přímo zapsat do svého programu). Pak následuje text-víceřádkového-komentáře. Tento symbol je zapsán kurzivou, takže budeme ještě muset vysvětlit, o co jde. To znamená, že musíme buď uvést další syntaktický popis, nebo ho nahradit výkladem. V tomto případě je vhodnější neformální výklad: text-víceřádkového-komentáře (zde můžeme bez nebezpečí nedorozumění napsat text víceřádkového komentáře, tedy vynechat pomlčky) je prostě jakýkoli text, který může zabírat i několik řádků. Tento symbol je označen indexem nep, který říká, že ho můžeme vynechat (komentář nemusí obsahovat žádný text). Druhý druh komentáře začíná dvěma lomítky (v popisu jsou opět tučně, takže je můžeme přímo zapsat do programu), za nimiž následuje text-jednořádkového-komentáře. Neterminální symbol text-jednořádkového-komentáře opět vysvětlíme neformálně: Jedná se o jakýkoli text ukončený přechodem na novou řádku.

PŘÍKLAD 5.2: ČÍSLICE Podívejme se na syntaktický popis pojmu číslice. číslice : jedna z ◾0◾ 1 2 3 4 5 6 7 8 9 Znaky 0–9 jsou vytištěny tučně, jde tedy o koncové symboly. To znamená: chceme-li v programu zapsat číslici, zapíšeme jeden ze znaků 0–9.

5.2  Základní pojmy 5.2.1  Komentář S komentáři se v programech setkáváme od počátku a popis syntaxe komentáře jsme uvedli v příkladu 5.1. Zde si pouze připomeneme, že komentáře se považují za tzv. bílé znaky, to znamená, že je můžeme zapsat všude, kde můžeme udělat mezeru nebo přejít na novou řádku. Komentáře odstraní ze zdrojového textu před vlastním překladem preprocesor. Komentáře začínající /* do sebe nelze vnořovat.32 To znamená, že následující řádky překladač označí za chybné: /* Ukázka chyby - vnořené komentáře while(i < 10) { n += i++; /* výpočet postupného součtu */ } */

32 Některé překladače to dovolují jako rozšíření, využívání této možnosti se však obvykle nepokládá za dobrou praxi.

Začínáme naostro 99

Ukázka elektronické knihy, UID: KOS245812


S podobnými chybami se lze setkat při ladění programů, když chceme dočasně odstranit část zdrojového kódu, ale nechceme ji mazat. Jednoduchým řešením je nahradit vnořený komentář jednořádkovým; to však není vždy možné. V oddílu 15.2.4 si ukážeme elegantnější řešení založené na direktivách preprocesoru pro podmíněný překlad.

5.2.2  Identifikátor Identifikátor je vznešené slovo pro jméno. V programech slouží k označení – pojmenování – proměnných, funkcí, tříd, metod, jmenných prostorů atd. Identifikátor je tvořen písmeny, číslicemi a znakem podtržení. Musí začínat písmenem nebo znakem podtržení. Přitom se rozlišují velká a malá písmena. Délka identifikátoru, tedy počet znaků, které identifikátor tvoří, není omezena. To znamená, že správné identifikátory jsou například _H3xY, nalevo, Nalevo, toto_ je_identifikator. Přitom nalevo a Nalevo jsou různé identifikátory. Ovšem Ahoj lidi není identifikátor, neboť obsahuje mezeru, a Ahoj-lidi také není identifikátor, neboť obsahuje pomlčku. Také 1axy není identifikátor, neboť začíná číslicí. Na druhé straně Ahoj_ lidi je správně utvořený identifikátor. Identifikátor se také nesmí shodovat se žádným z tzv. klíčových slov, jež označují deklarace, příkazy atd. Jejich přehled obsahuje tabulka 5.1. To znamená, že například if není možné použít jako identifikátor. Naproti tomu If je správný identifikátor, neboť se od klíčového slova if liší velikostí prvního písmene. Současný standard jazyka C++ dovoluje požívat v identifikátorech znaky národních abeced, tedy nejen písmena s háčky a čárkami, ale i znaky cyrilice, řecké abecedy atd. – ve skutečnosti zde smíme použít všechny znaky, které jsou považovány za písmena v kódování Unicode. To znamená, že začátek, Имя nebo Δαίδαλος jsou správně utvořené identifikátory. Některé překladače – mezi ně patří i g++ – to však zatím nedodržují a v roli písmen dovolují v identifikátorech pouze malá a velká písmena anglické abecedy.

5.2.3  Klíčová slova Takto se označují vyhrazená slova, z nichž jsou tvořeny některé příkazy, jména datových typů atd. Už víme, že klíčové slovo nelze použít jako identifikátor. Klíčová slova jazyka C++ obsahují pouze malá písmena a znak podtržení. Pro úplnost zde uvedeme přehled všech klíčových slov jazyka C++ podle současného standardu. S některými z nich se ovšem v této knize nesetkáte, neboť výklad o nich přesahuje naše možnosti. Tabulka 5.1 Klíčová slova v jazyce C++ alignas

alignof

asm

auto

char

char16_t

char32_t

class

bool

const

decltype double

explicit float

break

constexpr default

dynamic_cast export for

case

const_cast delete else

extern friend

catch continue do

enum

false goto

100 Programování v jazyce C++

Ukázka elektronické knihy, UID: KOS245812


Turn static files into dynamic content formats.

Create a flipbook