Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
1
C – strukturované příkazy
Mgr. Lenka Švancarová
2
Úvod do problematiky U předchozích programů jsme vždy vykonávali všechny příkazy jeden po druhém. Pokud budeme chtít, aby se některé příkazy vykonaly jen za určité podmínky a nebo se opakovaly jen za určité podmínky, budeme muset v programech využít strukturovaných příkazy. Strukturované příkazy řídí chod programu na základě toho, zda je podmínka v nich obsažená splněna (vrací nenulovou hodnotu) či nikoliv (vrací nulu).
3
Podmínka Pascal C a=5 not(p=’V’) nelze (p=’V’) or (p =’v’)
(j=’Jan’) and not(a=0) (a mod 2)=0 //mod //vrací zbytek po dělení (a==5) (!(p==’V’)) (p!=’V’) (a==p) //různé typy dat ((p==’V’) || (p ==’v’)) ((j==’Jan’) && (a!=0)) (a%2==0) (p=’V’) //co se stane? Podmínka v C musí být uzávorkovaná. V C lze porovnávat i hodnoty proměnných různých datových typů (v Pascalu ne).
4
C – větvení Mgr. Lenka Švancarová
5
Úplné větvení Sémantika (stejná jak v TP) Vývojový diagram
Jestliže je splněna podmínka (vrací nenulovou hodnotu), vykonají se příkazy pravdivé větve, když není (vrací nulu), vykonají se příkazy nepravdivé větve. Vždy se tedy vykonají příkazy jen v jedné větvi a pokračuje se dál v programu. Podmínka + - Příkaz(y) Příkaz(y)
6
if syntaxe if (podmínka) { jeden nebo více příkazů pravdivé větve
} else { jeden nebo více příkazů nepravdivé větve } Nepoužijeme-li v pravdivé větvi {}, musíme (jeden) neuzávorkovaný příkaz ukončit středníkem (na rozdíl od TP, kde před else středník psát nelze). Pokud je v pravdivé či nepravdivé větvi jeden příkaz, je na nás, zda použijeme { } či nikoliv. V případě více příkazů jsou { } povinné.
7
C – úplné větvení Nakresli vývojový diagram a napiš zdrojový kód. Řeš s využitím úplného větvení. Uživatel zadá číslo. Vypočte se jeho absolutní hodnota a výsledek se vypíše na obrazovku. |7|=7 obecně |x|=x pokud je x kladné |-8|=8 obecně |x|=-x pokud je x záporné
8
printf(”|x|=%.0f\n”, x*(-1))
if úplné větvení Start scanf(”%f”,&x) (x < 0) + - printf(”|x|=%.0f\n”, x*(-1)) printf(”|x|=%.0f\n”, x) Stop
9
if neúplné větvení #include <stdio.h> int main() { float x;
printf(”Zadej cislo: ”); scanf(”%f”,&x); if (x < 0) printf(”|x|=%.0f\n”, x*(-1)); else printf(”|x| = %.0f\n”,x); return(0); } #include <stdio.h> int main() { float x; printf(”Zadej cislo: ”); scanf(”%f”,&x); if (x < 0) { printf(”|x|=%.0f\n”, x*(-1)); } else { printf(”|x| = %.0f\n”,x); } return(0); } Pokud je v pravdivé či nepravdivé větvi jeden příkaz, je na nás, zda použijeme {}. V případě více příkazů jsou {} povinné.
10
Neúplné větvení Sémantika (stejná jak v TP) Vývojový diagram
Jestliže je splněna podmínka (vrací nenulovou hodnotu), vykonají se příkazy pravdivé větve, když není (vrací nulu), přes nepravdivou větev se pouze projde (nejsou v ní příkazy, tak není co vykonávat). Podmínka + - Příkaz(y)
11
if syntaxe if (podmínka) { jeden nebo více příkazů pravdivé větve }
Protože v nepravdivé větvi nejsou žádné příkazy, není ani v zápisu. Pokud je v pravdivé větvi jeden příkaz, je na nás, zda použijeme { } či nikoliv. V případě více příkazů jsou { } povinné.
12
C – neúplné větvení Nakresli vývojový diagram a napiš zdrojový kód. Řeš s využitím neúplného větvení. Uživatel zadá číslo. Vypočte se jeho absolutní hodnota a výsledek se vypíše na obrazovku. |7|=7 obecně |x|=x pokud je x kladné |-8|=8 obecně |x|=-x pokud je x záporné
13
if neúplné větvení Start Stop scanf(”%f”,&x) x < 0 - + x=x*(-1)
printf(”|x|=%.0f\n”, x) Stop
14
if neúplné větvení #include <stdio.h> int main() { float x;
printf(”Zadej cislo: ”); scanf(”%f”,&x); if (x < 0) x=x*(-1); printf(”|x| = %.0f\n”,x); return(0); } #include <stdio.h> int main() { float x; printf(”Zadej cislo: ”); scanf(”%f”,&x); if (x < 0) { x=x*(-1); } printf(”|x| = %.0f\n”,x); return(0); } Pokud je v pravdivé či nepravdivé větvi jeden příkaz, je na nás, zda použijeme {} či nikoliv. V případě více příkazů jsou {} povinné.
15
C – větvení Nakresli vývojový diagram a napiš kód.
Uživatel zadá dvě čísla. Jestliže nebude druhé zadané číslo nula, čísla se vydělí, jinak se vypíše „nulou dělit nelze“ a toto tvrzení se podtrhne. Uživatel zadá celé číslo. Vypíše se, zda je zadané číslo liché nebo sudé. Uživatel zadá dvě celá čísla. Určí se, zda jsou navzájem dělitelná.
16
C – větvení Nakresli vývojový diagram a napiš zdrojový kód.
Uživatel zadá číslo a program vypíše buď je to známka (pro čísla 1, 2, 3, 4, 5) nebo není to známka. Program určí, zda uživatelem zadané číslo leží v intervalu (2,7>. Uživatel zadá tři kladná čísla – třetí největší. Vypište Je to trojúhelník nebo Není to trojúhelník.
17
if vnořování V kladné větvi či záporné může být libovolný příkaz, tedy i další if. Předchozí věta nám říká, že příkazy if lze do sebe zanořovat. Je-li v sobě vnořeno několik if, patří else k poslednímu if bez else.
18
if vnořování Nakresli vývojový diagram k tomuto zdrojovému kódu.
#include <stdio.h> int main() { float x,y; printf(”Zadej prvni cislo :”); scanf(”%f”,&x); printf(”Zadej druhe cislo :”); scanf(”%f”,&y); if (x > y) { printf(”Vetsi cislo je %f\n”,x); printf(”Mensi cislo je %f\n”,y);} else if (x = = y) printf(”Cisla jsou stejna.\n”); else { printf(”Vetsi cislo je %f\n”,y); printf(”Mensi cislo je %f\n”,x);} return(0); } Nakresli vývojový diagram k tomuto zdrojovému kódu.
19
Pascal – úplné větvení (opakování)
Nakresli vývojový diagram a napiš zdrojový kód. Uživatel zadá číslo. Vypíše se, zda je zadané číslo nula, kladné nebo záporné. (Tedy vždy jen jeden z uvedených výpisů.)
20
C – if Uživatel zadá, zda chce u obdélníku vypočítat obsah či obvod a pak jeho rozměry. Program spočte požadované. Uživatel zadá reálné číslo, jeden ze znaků +, –, * nebo / a poté druhé reálné číslo. Program vypíše výsledek. Jsou zadána tři čísla. Napiš program, který určí největší z nich. Napiš program, který vypočte kvadratickou rovnici.
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.