Webové stránky věnované informatice a fyzice

určeno pro studenty Gymnázia, Vlašim

Úvod do algoritmizace a základní struktury

6. 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.

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. 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 +,-,*,/.

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č.

  
 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.
copyright(c) Marta Bechyňová 2010								design by bech