Cyklus v jazyku Pascal (druhá časť)

prvá časť -- druhá časť

Po teoretickom úvode nasleduje niekoľko praktických príkladov na použitie cyklov. Spočítame súčet čísel od 1 do 100. Začneme od nuly, a postupne pridávame hodnotu počítadla, ktoré ide od 1 do 100.

var
  pocitadlo : Integer;
  medzisucet : Integer;

begin
  medzisucet := 0;
  for pocitadlo := 1 to 100 do begin
    medzisucet := medzisucet + pocitadlo
  end;
  WriteLn('Sucet cisel od 1 do 100 je ', medzisucet)
end

Vypíšeme jednotlivé písmená daného reťazca. A keď už ten reťazec rozoberieme na jednotlivé písmená, zároveň ich poskladáme v opačnom poradí. Vytvoríme si obrátený reťazec, ku ktorému budeme písmená postupne pridávať na začiatok. Dĺžku reťazca získame pomocou funkcie "Length".

var
  retazec : String;
  pocitadlo : Integer;
  znak : Char;
  retazec_naopak : String;

begin
  retazec := 'Bryndzove halusky';
  retazec_naopak := '';
  for pocitadlo := 1 to Length(retazec) do begin
    znak := retazec[pocitadlo];
    WriteLn('Na pozicii cislo ', pocitadlo, ' je znak ', znak);
    retazec_naopak := znak + retazec_naopak
  end;
  WriteLn('Retazec naopak je ', retazec_naopak)
end

Vypýtame si od používateľa päť čísel. Potom ich všetky vypíšeme... ale do jedného riadku. To znamená, že ich nebudeme vypisovať pomocou "WriteLn" ale pomocou "Write", a až nakoniec riadok ukončíme pomocou "WriteLn". Na záver vypíšeme najväčšie a najmenšie číslo, a súčet všetkých čísel. (Začína to byť zložité? Nebojte sa.)

Súčet naštartujeme od nuly, ale čím máme naštartovať najmenšie a najväčšie číslo? Pomôžeme si trikom a na naštartovanie použijeme prvé z týchto piatich čísel. Ďalej budeme doteraz nájdené najmenšie a najväčšie číslo porovnávať s nasledujúcimi číslami. Ak nájdeme menšie než doteraz najmenšie, prípadne väčšie než doteraz najväčšie, zapamätáme si to nové číslo.

var
  cisla : Array[1..5] of Integer;
  pocitadlo : Integer;
  najmensie : Integer;
  najvacsie : Integer;
  sucet : Integer;

begin
  for pocitadlo := 1 to 5 do begin
    Write('Zadajte cislo: ');
    ReadLn(cisla[pocitadlo])
  end;

  najmensie := cisla[1];
  najvacsie := cisla[1];
  sucet := 0;
  Write('Zadali ste cisla:');

  for pocitadlo := 1 to 5 do begin
    Write(' ', cisla[pocitadlo]);
    if cisla[pocitadlo] < najmensie then begin
      najmensie := cisla[pocitadlo]
    end;
    if cisla[pocitadlo] > najvacsie then begin
      najvacsie := cisla[pocitadlo]
    end;
    sucet := sucet + cisla[pocitadlo]
  end;

  WriteLn('.');
  WriteLn('Najmensie je ', najmensie);
  WriteLn('Najvacsie je ', najvacsie);
  WriteLn('Sucet je ', sucet)
end

Na tomto poslednom príklade vidím pár vecí, ktoré by sa dali vylepšiť. Šesťkrát sa tam opakuje "cisla[pocitadlo]", čiže to číslo, na ktoré práve ukazuje počítadlo, a to je trochu neprehľadné. Program by bol síce o čosi dlhší, ale aj o čosi prehľadnejší, keby sme si vytvorili novú premennú "cislo", do ktorej si na začiatku cyklu uložíme hodnotu "cisla[pocitadlo]", a ďalej už budeme pracovať s touto premennou.

Pomohli sme si trikom, že do premenných "najmensie" a "najvacsie" sme na začiatku vložili prvé z piatich čísel. Ale potom ideme od prvého čísla po piate a porovnávame... to prvé číslo porovnávame celkom zbytočne. Čo keby sme teda opakovali iba od druhého po piate číslo? To prvé číslo sa však využíva aj na iné veci, takže ho potrebujeme na začiatok priradiť do premennej "sucet", a takisto vypísať v úvodnom príkaze "Write".

No čo? To je domáca úloha. Snáď nečakáte, že budem všetko programovať za vás? ;-)

Komentáre: 0


Google