sobota 24. mája 2014

Algoritmická konštrukcia vetvenie

●      popíšte algoritmickú konštrukciu vetvenie
●      charakterizujte úplné a neúplné vetvenie
●      nakreslite vývojové diagramy jednotlivých typov vetvení
●      charakterizujte logický údajový typ, operácie, funkcie
●      charakterizujte pozičné a nepozičné číselné sústavy
●      vytvorte program podľa zadania (porovnanie 3 prirodzených čísel)



Algoritmická konštrucia - ak je úloha algoritmicky riešiteľná , jej algoritmus možno vytvoriť kombináciou algoritmických konštrukcií. Algoritmické konštrukcie sú - sekvencia, vetvenie a cyklus.

  • lineárna jednoduchá štruktúra (sekvenčná) - algoritmus prebieha lineárne bez opakovania a obsahuje v podstate vstupné, výpočtové a výstupné operácie. Sekvenciou rozumieme postupnosť príkazov, ktorá sa vykonáva v takom poradí, v akom sú jednotlivé časti zapísané. 
  • lineárna rozvinutá štruktúra (rozhodovacia) - algoritmus opäť prebieha lineárne bez opakovania, obsahuje však naviac operáciu výberu, keď určité operácie sa prevedú len za splnenia určitých podmienok. V opačnom prípade sa pokračuje ďalej vo výpočte alebo sa realizujú iné operácie. Dochádza teda k vetveniu v lineárnej sekvencii operácie programu. Vetvenie môže byť viacnásobné, závislé na hodnotách, ktoré obsahuje premenná nazývaná prepínač.
  • cyklická štruktúra - algoritmus môže prebiehať dvojako. V prvom prípade prebieha cyklus tak dlho, pokiaľ podmienka má hodnotu ÁNO. V druhom prípade sa opakuje tak dlho, pokiaľ podmienka má hodnotu NIE; cyklus teda prebehne minimálne raz. Tieto druhy cyklov používame v tom prípade, keď môžeme predom stanoviť počet opakovaní cyklu.

Vetvenie


Vetvenie - sa používa, ak vykonanie príkazu (alebo skupiny príkazov) je podmienené splnením určitej podmienky. Nesplnenie danej podmienky môže viesť k vykonaniu inej skupiny príkazov.

Úplné vetvenie

 Ak je podmienka splnená, program pokračuje vetvou "+", ak nie je splnená, pokračuje vetvou "-".



Neúplné vetvenie

Vetvenie môže byť aj neúplné, t.j. ak je podmienka splnená, vykoná sa príkaz, ak nie je, nevykoná sa nič.



Štruktúra podmienky


IF podmienka THEN prikaz1;
{vykoná prikaz1 len vtedy, ak je splnená podmienka}

IF podmienka THEN prikaz1 ELSE prikaz2;
{vykoná príkaz1 len vtedy, ak je splnená podmienka,
inak vykoná prikaz2}

IF podmienka1 {najskôr skontroluje platnosť podmienky1}
   THEN {ak platí podmienka1, tak}
     IF podmienka2 {skontroluje platnosť podmienky2}
  THEN {ak platí aj podmienka2, tak}
     prikaz2; {vykoná príkaz2}

IF (podmienka1) and (podmienka2) then prikaz2; {alternatívny zápis pre predchádzajúci príklad
                                                 ak je splnená podmienka1 a podmienka2, tak...}

Štruktúra zápisu zloženého príkazu


IF podmienka THEN
begin
  prikaz1;
  prikaz2;
  ...
  prikazX; {zložený príkaz - môže/nemusí byť}
end
ELSE
begin
  prikaz1;
  prikaz2;
  ...
  prikazY; {zložený príkaz - môže/nemusí byť}
end;

Logický údajový typ


Logický typ je najjednoduchší údajový typ. Je definovaný nad množinou pravdivostných hodnôt a môže nadobúdať iba dve hodnoty - pravda (true) a nie je pravda (false). Pri definovaní všetkých typov (aj logického typu) budeme postupovať tak, že najskôr uvedieme identifikátor (BOOLEAN), potom množinu hodnôt {false, true}, ktorú môže nadobúdať, potom operácie, a nakoniec štandardné funkcie.

Operácie


and logický súčin
or logický súčet
not logická negácia
< menší
> väčší
= rovný
<= menší alebo rovný
>= väčší alebo rovný
<> nerovná sa

Štandardné funkcie


succ - nasledovník
pred - predchodca
ord - poradové číslo




PASCAL - Program na porovnanie 3 prirodzených čísel

program cislo;
uses crt;
var
 a,b,c,max_num:integer;
begin
 clrscr;
 writeln('Porovnanie 3 cisel');
 writeln('------------------');
 writeln('Zadaj prve cislo');
 readln(a);
 writeln('Zadaj druhe cislo');
 readln(b);
 writeln('Zadaj tretie cislo');
 readln(c);
 clrscr;
 
 IF a > b THEN
   begin
     IF a > c THEN
       begin
         IF b > c THEN
           begin
             writeln('Najvacsie cislo je ',a,' potom ',b,' potom ',c);
           end else
           begin
             writeln('Najvacsie cislo je ',a,' potom ',c,' potom ',b);
           end;
       end else
       begin
         writeln('Najvacsie cislo je ',c,' potom ',a,' potom ',b);
       end;
   end else
   begin
     IF b > c THEN
       begin
         IF a > c THEN
           begin
             writeln('Najvacsie cislo je ',b,' potom ',a,' potom ',c);
           end else
           begin
             writeln('Najvacsie cislo je ',b,' potom ',c,' potom ',a);
           end;
       end else
       begin
         writeln('Najvacsie cislo je ',c,' potom ',b,' potom ',a);
       end;
   end;
 
 readln;
end.
 

Žiadne komentáre:

Zverejnenie komentára