15. Příkazy vstupu a výstupu, přiřazovací příkaz

Proměnná, přiřazovací příkaz, příkazy vstupu a výstupu

Základní pojmy

Syntaxe příkazu vždy popisuje, jak tento příkaz správně bez chyby vytvořit.
Sémantika popisuje význam tohoto příkazu.

Základní pojmy

Syntaxe příkazu vždy popisuje, jak tento příkaz správně bez chyby vytvořit.
Sémantika popisuje význam tohoto příkazu.

Proměnná

(variable) je objekt, který má pevně stanovené označení a nese určitou hodnotu. Tato hodnota se může v průběhu programu měnit. Pro označení proměnných se používají jména složená z písmen a číslic, první však musí být písmeno.
Konstanta (constant) je také pojmenovaný objekt určité hodnoty, na rozdíl od proměnné se hodnota konstanty nemůže měnit. Konstanta pi například může obsahovat hodnotu 3.14.
Proměnná může získávat hodnotu dvěma způsoby: načtením vstupní hodnoty pomocí příkazu vstupu nebo přiřazovacím příkazem

Proměnná, která dosud nezískala žádnou hodnotu, má nedefinovaný obsah.

Přiřazovací příkaz

  • Je základem všech algoritmů zapsaných jak pomocí diagramů, tak i v libovolném programovacím jazyce.
  • Syntaxe přiřazovacího příkazu je proměnná:=výraz.
  • Čte se: „Do proměnné přiřaď výraz.“
  • Symbol přiřazení se nachází uprostřed, často se bude jednat o znak :=.
  • Výrazy mohou obsahovat konstanty i proměnné, aritmetické operátory, kulaté závorky.
  • Základní aritmetické operátory jsou +, -, *, /.

Pozor! Pokud se ve výrazu na pravé straně přiřazovacího příkazu vyskytuje proměnná, musí mít již nějakou hodnotu!!!

Sémantika přiřazovacího příkazu je následující:
Nejprve se vyhodnotí hodnota výrazu na pravé straně přiřazovacího příkazu. Tato hodnota je pak přiřazena proměnné uvedené na levé straně příkazu. Předchozí hodnota této proměnné je nenávratně ztracena.

Příklad několika přiřazení:

 a:=0
 b:=a+5
 c:=2*(b+4)
 a:=a+1

vysvětlení:
do proměnné a je vložena hodnota nula,
do b se přiřadí hodnota o 5 větší, tedy 5,
v c bude 2*(5+4)=18
a nakonec do a bude přiřazena hodnota o jedničku větší, než má teď, tedy 1

 

Příkazy vstupu a výstupu

rozdělíme na dva druhy . Vstup z klávesnice a výstup na monitor (těmi se nyní budeme zabývat ) a vstup a výstup z disku (tyto rozebereme později).

Příkaz vstupu z klávesnice

Tento příkaz slouží k zadání vstupních dat do programu z klávesnice a má tvary:
čti proměnná a v Pascalu: read ( proměnná);
read (proměnná1, …, proměnnáN);

Průběh operace závisí na typu parametru proměnná :
typ proměnné :
char přečte se jeden znak a přiřadí se proměnné
integer přečte se posloupnost znaků tvořící dekadický zápis celého čísla ukončená mezerou, čárkou nebo znakem konce řádku
real podobně jako u INTEGER

readln; přeskočí zbytek aktuálního řádku a dalším příkazem read se začíná od začátku nového řádku
readln (proměnná); má stejný význam jako realizace příkazů
read(proměnná);
readln;

Příkaz výstupu na monitor

Tento příkaz slouží k výstupu hodnot (výstupních dat) z programu na obrazovku a má tvary:
piš proměnná a v Pascalu: write (proměnná);
write (proměnná1, …, proměnnáN);
writeln; další výstup bude od začátku dalšího řádku

Vystupující hodnota se udává výrazem, jehož typ může být CHAR, INTEGER, REAL nebo BOOLEAN, přičemž hodnoty TRUE i FALSE vystupují jako řetězce.
Řetězce v uvozovkách ( ‘ … ‘ ) vystupují beze změny.

write ( parametr );

Parametr může mít jeden z následujících tvarů:
a) výraz reprezentující výstupní hodnotu
b) výraz : počet , kde počet reprezentuje počet znaků výstupu
c) výraz : počet : desmísta , kde desmísta udává počet desetinných míst výstupu

Například:
writeln(kolik,znak)        vypíše    5k
writeln(‘Výsledek je’ , kolik )        vypíše       Výsledek je 5

Příklady:


Příklad1:


Vytvořte program pro výpočet obsahu a obvodu obdélníka se zadanými stranami delka,sirka (celá nezáporná čísla).

program Obdelnik;
  var delka,sirka, obvod,obsah :integer; {Deklarace proměnných}
  begin
    writeln(‘Zadejte délku obdélníka’); {Napíše výzvu k zadání délky}
    read(delka); {Načte délku}
    writeln(‘Zadejte délku obdélníka’); {Napíše výzvu k zadání šířky}
   read(sirka); {Načte šířku}
    obvod:=2*(delka+sirka); {Vypočítá obvod}
    obsah:=delka*sirka; {Vypočítá obsah}
    writeln(‘Obvod je ‘,obvod); {Vytiskne obvod}
    writeln(‘Obsah je ‘,obsah); {Vytiskne obsah}
  end.
Příklad2:


Vytvořte program, který ze zadaného času v hodinách, minutách a sekundách vyjádří čas
a) v minutách a sekundách
b) v sekundách

program Cas;
  var hod,min,sek: integer;
minuty,sekundy,jensekundy:integer;
{Deklarace proměnných}
  begin
    writeln(‘Zadejte čas: hod  min  sek’); {Napíše výzvu k zadání času}
    read(hod,min,sek); {Načte hodiny,minuty,sekundy}
    minuty:=hod*60+min; {Zjistí čas v minutách}
    sekundy:=sek; {Zjistí čas v sekundách}
    jensekundy:=3600*hod+60*min+sek; {Převede čas na sekundy}
    writeln(‘Minuty a sekundy ‘, minuty,’:‘,sekundy); {Vytiskne v min a sekundách}
    writeln(‘V sekundách ‘, jensekundy); {Vytiskne jen v sekundách}
  end.
Příklad3:


Sestavte program, který po zadání obnosu v celých korunách zjistí, kolik budeme potřebovat na jeho vyplacení desetikorun, pětikorun a korun.

Nejprve si ukážeme výpočet na konkrétním příkladě. Zadaný obnos je 28 Kč.

Nové operátory:

div – celočíselné dělení

mod – zbytek po celočíselném dělení

 desetikoruny  28:10 = 2    tedy     28 div 2=2
 zbylý obnos   28 - 20 = 8  tedy     28 mod 10 = 8
 pětikoruny     8 : 5 = 1   tedy      8 div 5 = 1
 zbylý obnos    8 - 5 = 3   tedy      8 mod 5 = 3
 koruny                 3   tedy      zbylý obnos

A nyní program:

program Drobne;
  var obnos,deset,pet,jedna: integer; {Deklarace proměnných}
  begin
    writeln(‘Zadejte obnos’); {Napíše výzvu k zadání obnosu}
    readln(obnos); {Načte obnos}
    deset:=obnos div 10; {Zjistí počet desetikorun}
    obnos:=obnos mod 10; {Zbytek po vyplacení desetikorun}
    pet:=obnos div 5; {Počet pětikorun}
    obnos:=obnos mod 5; {Zbytek po vyplacení pětikorun}
    jedna:=obnos; {Počet korun}
    writeln(‘Desetikorun je ‘, deset , ‘ , petikorun je ‘, pet , ‘ a korun je ‘, jedna );
  end.

Podmínka (condition)

je logický výraz, jehož hodnotou je pravda nebo nepravda. Říkáme, že podmínka platí nebo neplatí.

Základní relační operátory jsou <,>,=,<=,>=,<>.
Ve výrazu lze použít proměnné, konstanty i kulaté závorky. Obecně v podmínce může být výraz vlevo i vpravo, navíc se dají sestavovat složené podmínky pomocí logických spojek. Toho si ale užijete až v konkrétním programovacím jazyce.
Sémantika je následující:
Nejprve se vyhodnotí podmínka. Pokud platí, provede se příkaz (nebo více příkazů) uvedený ve větvi označené symbolem +. Pokud podmínka neplatí, provede se příkaz (nebo více příkazů) uvedený ve větvi označené symbolem -. Příkazem uvnitř může být přiřazovací příkaz, vstup nebo výstup dat i další podmíněný příkaz. V posledním případě mluvíme o složeném podmíněném příkazu nebo prostě o podmínce v podmínce. Jedna z větví v rozhodovacím bloku může být prázdná, neobsahuje žádný příkaz. Obvykle se jedná o větev označenou -. Takový podmíněný příkaz nazýváme neúplný. Úplný podmíněný příkaz má v každé větvi alespoň jeden příkaz.

Příklad několika podmínek:
a=0
b>=0
i=10
n<100
s>2*(i+j)
j<>0

Opakování:

  1. Co je to proměnná?
  2. Co je to konstanta?
  3. Vysvětli rozdíl mezi sémantikou a syntaxí.
  4. Jakým způsobem může proměnná získat hodnotu?
  5. Co je to přiřazovací příkaz?
  6. Napiš posloupnost přiřazovacích příkazů pro záměnu hodnot dvou proměnných.
  7. Napiš posloupnost přiřazovacích příkazů pro záměnu hodnot tří proměnných.
  8. Napiš posloupnost přiřazovacích příkazů pro záměnu hodnot několika proměnných.
  9. Co je to příkaz vstupu? Jak se zapisuje v Pascalu?
  10. Co je to příkaz výstupu? Jak se zapisuje v Pascalu?
  11. Co je to podmínka? Uveď příklady.