Príkazy.

Obsah kapitoly:

 Príkaz if a príkaz if-else.

Najprv vysvetlím príkaz if (z angličtiny ak) a začnem hneť príkladom.

Príklad 1:

      if(i > 2)       //Ak i je väčšie ako 2
          printf(“Ahoj“);       //vypíš Ahoj.
      if(i < 2)       //Ak i je menšie ako 2
          printf(“Nazdar“);       //vypíš Nazdar.
      if(i = = 2)       //Ak i je rovné dvom (medzi znamienkami rovná sa nie je medzera)
          printf(“Servus“);       //vypíš Servus.

Uvedená časť programu vypíše na obrazovku Ahoj ak v premennej i je číslo väčšie ako 2, alebo vypíše Nazdar ak v premennej i je číslo menšie ako 2, alebo Servus ak i je rovné 2. Ako vidieť z príkladu, za slovíčkom if nasledujú okrúhle zátvorky v ktorých je uvedená podmienka.

      if(i > 2)

Pod príkazom if sú v zložených zátvorkách uvedené veci (príkazy, volania funkcií, a pod.), ktoré sa vykonajú ak je spomínaná podmienka splnená.

      if(i > 2)
      {
          printf(“Ahoj.”);
      }

Zložené zátvorky je možné vynechať ak sa má vykonať len jedna jediná vec (jeden príkaz, alebo jedno volanie funkcie a pod.) čo je aj náš prípad.

      if(i > 2)
          printf(“Ahoj.“);

Ak podmienka splnená nie je tak „veci“ patriace pod príslušný príkaz if sa nevykonajú, ale preskočia a v programe sa normálne pokračuje ďalej. Iste ste si všimli, že za príkazom if nie je(a ani nesmie byť) uvedená bodkočiarka.

Teraz si vysvetlíme príkaz if-else (else z angličtiny inak) a začneme opäť príkladom.

Príklad 2:

      if(i = = 2)       //Ak i je rovné dvom
          printf(“ahoj”);       //vypíš ahoj.
      else                   //Inak
          printf(“nazdar”);  //vypíš nazdar.

Ako je zrejmé z uvedeného príkladu, ak je podmienka splnená (teda ak i je rovné dvom), tak sa vypíše na obrazovku ahoj, inak (ak podmienka splnená nie je) sa vypíše nazdar. Príkazy if a if – else môžu byť aj do seba vnorené, ako to ukazuje nasledujúci príklad.

Príklad 3: Program vypíše väčšie z dvoch zadaných celých čísel.

      #include<stdio.h>
      main()
      {
          int a, b, max;       //definovali sme tri premenné (a,b,max)
          printf(“Zadaj dve celé čísla:\n”);       //výpis textu na obrazovku
          scanf(“%d%d”,&a,&b);       //načítanie čísel z klávesnice
          if(a = = b)       //zisťujeme či sa čísla náhodou nerovnajú
              printf(“\nČísla sa rovnajú.“);
          else
              if(a >b)       //zisťujeme, ktoré z čísel je väčšie
                  max = a;
              else
                  max = b;
          printf(“\nVäčšie číslo je: %d”,max);       //výpis väčšieho čísla na obrazovku
          return (0);
      }

Úlohy:

      1. Napíšte program, ktorý zistí, ktoré z troch zadaných celých čísel je najväčšie.
          Program prebehne takto:
                    § Vyzve užívataľa, aby zadal tri celé čísla.
                    § Po zadaní čísel, program vyhodnotí, ktoré z nich je najväčšie a vypíše ho na obrazovku. Ak sa čísla rovnajú, tak vypíše, že sa rovnajú.

      2. Upravte predošlí program tak, aby fungoval aj pre reálne čísla, teda, aby správne spracovával aj desatinné čísla.


 Cykly while, do-while a for.

Na úvod niečo o cykloch všeobecne. Cyklus použijete, ak chcete, aby sa nejaká časť vášho programu vykonala viac krát. Teda cyklus je príkaz, ktorý vám umožňuje vykonať niečo určitý počet krát, alebo ak chcete tak aj stále do kola. Všetko bude jasnejšie, keď si ukážeme nejaké príklady. Začneme cyklom while (while – kým, pokiaľ).

Príklad 1: Program vypíše na obrazovku 100-krát Ľúbim ťa.

      #include<stdio.h>
      main()
      {
          int i = 0;
          while(i < 100)       //Hlavička cyklu while.
          {       //Tu začína telo cyklu while.
              printf(“Ľúbim ťa“);       //V tele sa nachádza volanie funkcie printf() a
              i++;       //príkaz, ktorým zväčšíme hodnotu premennej i o jedna.
          }       //Tu končí telo cyklu while.
          return(0);
      }

Za slovýčkom while je v okrúhlich zátvorkách uvedená podmienka cyklu. Potom nasleduje telo cyklu, uzavreté v zložených zátvorkách.

      while(i < 100)
      {
          printf(“Ľúbim ťa“);
          i++;
      }

Pokiaľ je splnená podmienka cyklu (teda v našom prípade, pokiaľ je i menšie ako 100), tak sa vykonávajú príkazy uvedené v tele cyklu. Takto to pokračuje stále dokola, až raz, podmienka cyklu prestane byť splnená. Iste vám došlo, že podmienka sa vyhodnocuje v každom kole znova a znova a hodnota premennej i sa v každom kole zväčší o jedna, takže premenná i nakoniec dosiahne hodnotu 100, teda podmienka prestane byť splnená. Akonáhle podmienka cyklu nie je splnená, cyklus skončí a program pokračuje za cyklom. Všímavejší postrehli, že za hlavičkou cyklu nie je bodkočiarka. Je to tak správne, za cyklom, tak ako aj za príkazom if nesmie byť nikdy uvedená bodkočiarka (cyklus do-while je výnimka). Na záver ešte jedna poznámka, príkazy v tele cyklu while sa nemusia vykonať ani raz, pokiaľ podmienka cyklu nie je splnená hneď pri jej prvom testovaní.
Ako ďalší si vysvetlíme cyklus do-while. Tento cyklus je podobný cyklu while. Líši sa len tým, že príkazy v jeho tele sa vykonajú najmenej jeden krát a to aj v prípade, že podmienka cyklu nie je splnená hneď pri jej prvom testovaní. Všetko bude jasnejšie, keď si uvedieme príklad.

Príklad 2: Program vypíše na obrazovku 100-krát Ľúbim ťa.

      #include<stdio.h>
      main()
      {
          int i = 0;
          do{       //Tu začína telo cyklu while.
              printf(“Ľúbim ťa.“);       //V tele sa nachádza volanie funkcie printf() a
              i++;                         // príkaz ktorým zväčšíme hodnotu i o jedna.
          } while(i < 100);       //Tu končí telo cyklu while “a paradoxne začína jeho hlavička”.
          return(0);
      }

Ako posledný si vysvetlíme cyklus for, ktorý je najdôležitejší. Začneme opäť príkladom v ktorom budeme vypisovať Ľúbim ťa. Počet môžeme zvýšiť na 1000-krát.

Príklad 3: Program vypíše na obrazovku 1000-krát Ľúbim ťa.

      #include<stdio.h>
      main()
      {
          int i ;       //Definovali sme si riadiacu premennú pre cyklus for.
          for(i = 0; i < 1000; i++)       //Hlavička cyklu for obsahuje tri “veci” oddelené bodkočiarkami, ktoré si vysvetlíme.
          {
              printf(“Ľúbim ťa. “);
          }
          return(0);
      }

Rozoberme si tie tri „veci“ ktoré som spomenul v komentáre.

Prvá vec(výraz štart):
                                        i = 0;

je priradenie hodnoty premennej i. V našom príp. sme jej priradili hodnotu 0. Toto priradenie sa vykoná hneď na začiatku cyklu a potom nás už nemusí zaujímať, pretože v ďalších slučkách cyklu sa nevykonáva.

Druhá vec(podmienka):
                                        i < 1000;

je podmienka cyklu, ktorá sa testuje a v prípade, že je splnená vykonajú sa príkazy uvedené v tele cyklu t.j. tie veci uzavreté medzi zloženými zátvorkami, v našom prípade veľmi milé volanie funkcie printf( ).

Tretia vec(výraz iter):
                                        i++;

sa vykoná na konci každej slučky, takže hodnota premennej i sa nám v každom kole zväčšuje o jedna a približuje k hodnote 1000 (iteruje). Tento cyklus skončí, keď premenná i nadobudne hodnotu 1000, pretože podmienka prestane byť splnená. Vydíte, že v hlavičke cyklu si presne stanovujete, koľkokrát má cyklus prebehnúť. Nezabudnite na tie dve bodkočiarky, bez nich to nebude fungovať.
Na záver ešte uvediem syntax pre nekonečný cyklus t.j. cyklus, ktorý bude prebiehať do nekonečna, až kým ho niečo nezastavý.

Nekonečný cyklus while:

      while(1)
      {
          printf(“Ľúbim ťa.“);       //Do nekonečna vám bude vyznávať lásku (v skutočnosti do
      }                                           //výpadku prúdu.

Nekonečný cyklus for:

      for(;;)
      {
          printf(“Ľúbim ťa.“);
      }

Možno si niekto z vás povie "načo mi bude taký nekonečný cyklus"? Odpoveď na túto otázku nech vám dá nasledujúci príklad.

Príklad 4: Program vypíše ...... veď uvidíte čo.

      #include<stdio.h>
      #include<conio.h>
      main()
      {
          int i ;
          for(;;)
          {
              char c;
              printf(“Ľúbim ťa.\n “);
              printf(“Mám Skončiť? (A-áno, N-nie)\n\n“);       //Píta sa, či chcete aby skončil.
              c = getch();       //Načíta znak zadaný z klávesnice a uloží ho do premennej c.
              if(c == ‘a’ || c == ‘A’)       //Zisťuje či zadaný znak je A (malé, alebo veľké),
                  return(0);                   //ak áno tak program skončí.
          }
      }

Všetky veci v uvedenom programe by ste už mali poznať, okrem tých dvoch zvislých čiaročiek, ktoré znamenajú logický súčet, kto nevie čo je to logický súčet nech si ...,.., nech si namiesto tých dvoch paličiek predstaví slovíčko alebo. Potom celý inkriminovaný riadok:

      if(c == ‘a’ || c == ‘A’)

bude znieť: „Ak v premennej c je znak a, alebo v premennej c je znak A“ , no a ak v premennej c je naozaj a, alebo A, tak sa vykoná príkaz return, ktorý ako už viete ukončuje program. Takže tento program vám vypíše na obrazovku Ľúbim ťa a opíta sa vás či má skončiť. Ak stlačíte A tak skončí, ak stlačíte hocičo iné tak neskončí, ale vypíše Ľúbim ťa ešte raz a opäť sa opíta či má skončiť atď. stále dokola (do nekonečna) až kým sa nerozhodnete dať láske zbohom.

Úlohy:

      1. Budete vychádzať z uvedeného príkladu 2. Koľkokrát sa vypíše na obrazovku Ľúbim ťa, ak premennej i priradíte hneď pri definovaní                    hodnotu 100 (int i = 100;).
      2. Budete vychádzať z uvedeného príkladu 1. Koľkokrát sa vypíše na obrazovku Ľúbim ťa, ak premennej i priradíte hneď pri definovaní                    hodnoty 100, 90, 50.
      3. Prepíšte program z príkladu 3 tak, aby sa uvedený text vypísal 7-krát, každá veta na nový riadok.

predošlá kapitola       ďalšia kapitola

hore

späť

domov


© Roman Kukučka