Konstanty
Některé hodnoty se za běhu programu nikdy nemění: sazba DPH, počet dní v týdnu, nejvyšší možný počet bodů v testu. Pro ně má C konstanty. Konstanta je proměnná, před kterou napíšete const:
const double SAZBA_DPH = 0.21;const (z anglického constant, stálý) znamená, že se hodnota nesmí změnit. Konstanta dostane hodnotu při vytvoření a drží ji až do konce programu. Názvy konstant se píšou velkými písmeny s podtržítky mezi slovy (SAZBA_DPH), abyste na první pohled poznali, že jde o konstantu.
Proč do výpočtu nenapsat rovnou 0.21? Protože konstanta má tři výhody:
- Název vysvětluje číslo.
cena * SAZBA_DPHříká, o co jde, ucena * 0.21musíte hádat. - Když se sazba změní, změníte ji na jednom místě a s ní se změní všechny výpočty, které ji používají.
- Překladač ji hlídá. Když konstantu omylem změníte, program se nepřeloží.
#include <stdio.h>
int main(void) {
const double SAZBA_DPH = 0.21;
SAZBA_DPH = 0.15;
printf("%.2f\n", SAZBA_DPH);
return 0;
}Překladač ohlásí:
main.c:5:15: error: cannot assign to variable 'SAZBA_DPH' with const-qualified type 'const double'Říká, že do proměnné SAZBA_DPH nejde přiřadit novou hodnotu, protože je typu const double. Jinak konstantu používáte jako každou jinou proměnnou:
const double SAZBA_DPH = 0.21;
double cena = 200.0;
printf("DPH: %.2f Kč\n", cena * SAZBA_DPH);Vypíše:
DPH: 42.00 KčA jak vypsat znak procenta? V printf začíná % formátovací značku, třeba %d. Když chcete vypsat samotný znak, napište ho dvakrát, %%:
printf("DPH je %d %%\n", 21);Vypíše:
DPH je 21 %S jediným %, třeba "DPH je 21 %\n", se program nepřeloží. Překladač ohlásí invalid conversion specifier '\x0a': za % čekal písmeno jako d, ale našel konec řádku (\x0a je jeho zápis pro \n).
Jak psát:
Pokyny
Z testu se dá získat nejvýš 50 bodů. Na začátku funkce main vytvořte konstantu MAX_BODU typu int s hodnotou 50.
Upravte printf tak, aby vypsal i nejvyšší počet bodů, vzatý z konstanty:
Body: 42 z 50Na další řádek vypište výsledek v procentech: body krát 100, vydělené konstantou MAX_BODU. Nejdřív násobte, protože samotné 42 / 50 je 0, jak už víte. Znak procenta vypište pomocí %%:
Výsledek: 84 %Začněte programovat zdarma
10/11