Jazyk C (príklady) - Podmienky: Rozdiel medzi revíziami
Riadok 2: | Riadok 2: | ||
[[Kategória:Informatika]] | [[Kategória:Informatika]] | ||
{{Priklady_ZI}} | {{Priklady_ZI}} | ||
− | |||
− | |||
V tejto časti sú ukázané príklady s využitím podmieného príkazu. Na pochopenie týchto príkladov sa predpokladá zvládnutie syntaxe a sémantiky príkazov if a switch. | V tejto časti sú ukázané príklady s využitím podmieného príkazu. Na pochopenie týchto príkladov sa predpokladá zvládnutie syntaxe a sémantiky príkazov if a switch. | ||
− | ==if== | + | __TOC__ |
+ | == Teória== | ||
+ | ===if=== | ||
Príkaz if má 2 verzie. | Príkaz if má 2 verzie. | ||
Riadok 43: | Riadok 43: | ||
Význam: Význam je rovnaký ako v druhom prípade, avšak teraz vykonávame viacero príkazov. V prípade ak cheme vykonať viacero príkazov, musíme tieto uzatvoriť do bloku {}. | Význam: Význam je rovnaký ako v druhom prípade, avšak teraz vykonávame viacero príkazov. V prípade ak cheme vykonať viacero príkazov, musíme tieto uzatvoriť do bloku {}. | ||
− | ==switch== | + | ===switch=== |
switch - viacnásobný výber. | switch - viacnásobný výber. | ||
<source lang="c" line> | <source lang="c" line> |
Verzia zo dňa a času 21:22, 29. apríl 2020
Riešené príklady
zdroj: Juraj Ďuďák, Zbierka úloh z algoritmizácie pre predmet Základy informatiky
ISBN: 978-80-8075-199-9
V tejto časti sú ukázané príklady s využitím podmieného príkazu. Na pochopenie týchto príkladov sa predpokladá zvládnutie syntaxe a sémantiky príkazov if a switch.
Obsah
Teória
if
Príkaz if má 2 verzie.
- 1. Skrátená verzia
- má len jednu vetvu.
1 if(podmienka)
2 príkaz;
Význam: ak je podmienka pravdivá, vykoná sa príkaz.
- 2. Úplná verzia
- má obe vetvy.
1 if(podmienka)
2 príkaz;
3 else
4 príkaz2;
Význam: ak je podmienka pravdivá vykoná sa príkaz1, v opačnom prípade sa vykoná príkaz2.
- 3. Rozšírená verzia
- vo vetvách má viacero príkazov.
1 if(podmienka)
2 {
3 príkaz1;
4 príkaz2;
5 }
6 else
7 {
8 príkaz3;
9 príkaz4;
10 }
Význam: Význam je rovnaký ako v druhom prípade, avšak teraz vykonávame viacero príkazov. V prípade ak cheme vykonať viacero príkazov, musíme tieto uzatvoriť do bloku {}.
switch
switch - viacnásobný výber.
1 switch(vyraz)
2 {
3 case hod_1: prikaz1; break;
4 case hod_2: prikaz2; break;
5
6 case hod_n: prikazn; break;
7 default: prikazD;
8 }
Význam:
vyraz môže nadobúdať celočíselné hodnoty hod_1, hod_2, ...,hod_n, alebo nejaké iné celočíselné hodnoty. V prípade že vyraz má hodnotu hod_1, vykoná sa príkaz1 a príkaz switch sa ukončí. V prípade že vyraz má hodnotu hod_2, vykoná sa príkaz2 a príkaz switch sa ukončí. Ak nadobudne vyraz nejakú inú hodnotu, vykoná sa príkazD. Ak by sa príkaz break neuviedol, vykonajú sa všetky vetvy príkazu switch postupne.
Príklady
Delenie nulou 1
- Zadanie
- Vytvorte program, ktorý načíta 2 čísla a vypíše ich podiel. Ošetrite prípad, keď deliteľ je nulový (operácia delenie 0 nie je definovaná).
- Analýza problému
- V prípade delenia nulou sa program ukončí chybovou hláškou „delenie nulou“. Tento prípad ošetríme vhodným použítím podmieňovacieho príkazu. Operáciu delenia budeme robiť iba v prípade, ak je deliteľ rôzny od nuly.
Program:
1 #include<stdio.h>
2
3 void main()
4 {
5
6 float x,y;
7 printf("Zadajte 2 reálne čísla. \n");
8 scanf("%f %f",&x,&y);
9 if(y!=0)
10 printf("podiel x/y=%.3f",x/y);
11
12 }
Delenie nulou 2
- Zadanie
- Uvažujeme predchádzajúci príklad s tou zmenou, že ak má deliteľ hodnotu 0, program vypíše upozornenie „Nulou sa delit neda“. V opačnom prípade (teda, keď je všetko v poriadku) sa vypíše podiel.
- Analýza problému
- V tomto prípade použijeme rozšírenú formu príkazu if: if-else.
1 #include<stdio.h>
2
3 void main()
4 {
5
6 float x,y;
7 printf("Zadajte 2 reálne čísla. \n");
8 scanf("%f %f",&x,&y);
9 if(y==0)
10 printf("Nulou sa delit neda");
11 else
12 printf("podiel x/y=%.3f",x/y);
13
14 }
Absolútna hodnota
- Zadanie
- Vytvorte program, ktorý vypočíta absolútnu hodnotu zadaného čísla.
- Analýza problému
- Absolútna hodnota je definovaná ako vzdialenosť čísla od nuly. Teda ak je číslo kladné, jeho absolútna hodnota je to isté číslo. Ak je číslo záporné, jeho absolútna hodnota je toto číslo, ale kladné.
abs(x)=
- x, ak je x>=0
- -1*x, ak je x<0
1 #include<stdio.h>
2
3 void main()
4 {
5
6 int x;
7 printf("Zadajte 1 celé číslo. \n");
8 scanf("%d",&x);
9 if(x<0)
10 x=-1*x;
11 printf("abs(x)=%d",x);
12
13 }
Minimálna hodnota
- Zadanie
- Máme zistiť minimálnu hodnotu z dvoch zadaných čísel x a y.
- Analýza problému
- Menšie z dvoch čísel zistíme jednoduchým porovnaním hondôt oboch premenných.
Príklad:
1 #include<stdio.h>
2 void main()
3 {
4
5 int x,y,min;
6 printf("Zadajte 2 celé čísla. \n");
7 scanf("%d %d",&x,&y);
8 if(x<y)
9 min=x;
10 else
11 min=y;
12 printf("min(%d,%d)=%d",x,y,min);
13
14 }
Maximálna hodnota
- Zadanie
- Máme zistiť maximálnu hodnotu z troch zadaných čísel x, y, a z.
- Analýza problému
- Keďže máme zistiť maximum len z troch čísel, najjednoduchším spôsobom bude porovnať každé číslo s každým. Týmto dostaneme 3 porovnania, po ktorých vieme jednoznačne určiť najväčšie číslo. Na lepšiu predstavivosť poslúži obrázok č.9.
Príklad:
1 #include<stdio.h>
2
3 int main()
4 {
5 int a, b, c, m;
6 scanf("%d %d %d",&a, &b, &c);
7 if(a>b)
8 { if(a>c)
9 m=a;
10 else
11 m=c;
12 }
13 else
14 { if(b>c)
15 m=b;
16 else
17 m=c;
18 }
19 printf("%d",m);
20 }
Slovné hodnotenie
- Zadanie
- Vytvorte prgram, ktorý by po zadaní známky (číselná hodnota) túto hodnotu previedol na textové hodnotenie. Známky majú takéto slovné hodnotenia: 1-výborne, 2-veľmi dobre, 3-dobre, 4-dostatočne, 5-nedostatočne.
- Analýza problému
- Na riešenie tohoto problému môžeme použiť príkaz if, avšak jeho použitie je v tomto prípade dosť neprehľadné. Použime teda príkaz switch.
Príklad:
1 #include<stdio.h>
2 void main()
3 {
4
5 int zn;
6 printf("Zadaj znamku (od 1 do 5)");
7 scanf("%d",&zn);
8 switch(zn)
9 {
10
11 case 1 : printf("vyborne");break;
12 case 2 : printf("velmi dobre");break;
13 case 3 : printf("dobre");break;
14 case 4 : printf("dostatocne");break;
15 case 5 : printf("nedostatocne");break;
16 default : printf("nepripustna znamka %d\n",zn);break;
17
18 }
19
20 }