1) C++ Základní řídící struktury Flashcards

1
Q

pojem algoritmus, vlastnosti, způsob zápisu

A

Algoritmus je návod či postup, kterým lze vyřešit daná úloha. Vprogramování se jedná o určité příkazy, které zpracují data a vrátí zpracovaný výstup. Jako algoritmus lze ale i chápat např. kuchařský recept. Vprogramování se zapisuje formou příkazů vdaném programovacím jazyce, ale lze ho zapsat i např. na papír pomocí vývojového diagramu.

Algoritmus musí splňovat i následující cíle:

  1. Přehlednost
  2. Snadná modifikovatelnost
  3. Snadná verifikovatelnost

Principy, kterými dosáhneme těchto tří cílů:

  • Princip abstrakce – úloha jako celek je rozdělena na dílčí úkoly, které se při rozboru pojmenují a řeší se až v další fázi.
  • Princip jednoduchosti – používáme strukturované programování
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Strukturované programování

A

Strukturované programování je takové, které využívá pouze základních řídících struktur. Tyto struktury jsou takové, které mají právě jeden vstup a právě jeden výstup;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

sekvence

A

Vícero příkazů jdoucích za sebou (posloupnost příkazů)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

selekce (větvení) - příkazy if, switch

A

Klíčovým prvkem této struktury je podmínka. Na základě této podmínky vzniká rozhodování, zda provést či neprovést příkaz v kladné či záporné větvi.

Podmínka je výraz, o kterém lze vždy rozhodnout, zda je pravdivý, či nepravdivý. Pokud platí podmínka, provede se Příkaz1, v opačném případě se provede Příkaz2.

Pokud kladná a záporná větev obsahuje více příkazů, vytvoříme složený příkaz pomocí složených závorek {}:

Pokud v záporné větvi není žádný příkaz, část else vynecháme.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

iterace (cyklus) - while, do while, for

A

Cykly

WHILE

Dokud je splněna podmínka, opakuje se příkaz v těle cyklu. Podmínka je na začátku cyklu, tělo nemusí proběhnout vůbec. Pokud tělo cyklu obsahuje více příkazů, vytvoříme složený příkaz:

DO WHILE

do příkaz while (podmínka);

Nejprve se provede tělo cyklu a pak je teprve zkoumána podmínka. Pokud je podmínka splněna, tělo cyklu se opakuje.

Podmínka cyklu je na konci, tělo musí proběhnout aspoň jednou.

FOR

Tento cyklus má stanovenýpevný počet opakovánía hlavně obsahuje tzv. řídící proměnnou (celočíselnou), ve které se postupně během běhu cyklu mění hodnoty. Syntaxe (zápis) cyklu for je následující:

for (deklarace; podminka; aktualizace)

deklarace

  • zde deklarujeme řídící proměnnou cyklu, které nastavíme počáteční hodnotu (nejčastěji 0, protože v programování vše začíná od nuly, nikoli od jedničky). Např. tedy int i = 0. Samozřejmě si můžeme proměnnou i vytvořit někde nad tím a už nemusíme psát slovíčko int, bývá ale zvykem používat právě int i.

podmínka

  • je podmínka vykonání dalšího kroku cyklu. Jakmile nebude platit, cyklus se ukončí. Podmínka může být např (i < 10).

aktualizace

  • zde měníme hodnotu řídící proměnné. Tato část proběhne na konci každého kroku. Zde využijeme speciálních příkazů ++ a –, ty samozřejmě můžete používat i úplně běžně mimo cyklus, slouží ke zvýšení nebo snížení proměnné o 1.

Průběh cyklu for:

  • Provedou se deklarace vprvní části
  • Ověří se platnost podmínky, a pokud podmínka platí, provede se tělo cyklu a na závěr příkazy vaktualizační části. Tento bod se stále opakuje, dokud podmínka platí.
  • Jakmile přestane podmínka platit, cyklus skončí.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

generování náhodných čísel

A

Pro generování náhodných čísel se používá funkce rand. Tato funkce vrací pseudonáhodná celá čísla zrozsahu 0 až RAND_MAX (32 767).

Vždy před prvním voláním funkce rand je vhodné použít funkci srand. Jinak bude posloupnost generovaných čísel vždy stejná. Zmíněné funkce jsou definovány následujícím předpisem.

```jsx
int rand(void);
void srand(unsigned int seed);
~~~

Funkce srand nastaví výchozí stav pro generování řady pseudonáhodných celých čísel. Chceme-li tedy generovat vždy stejnou řadu čísel, použijte funkci srand vždy se stejným argumentem. Jakákoliv jiná hodnota argumentu nastaví generátor na jiný výchozí stav. Volání funkce rand bez předchozího volání funkce srand generuje stejnou řadu jako by byla volána funkce srand sargumentem 1.

Ztohoto důvodu se, jako argument funkce srand, často využívá aktuální čas. Funkce nevrací žádnou hodnotu.

```jsx
srand((unsigned)time(NULL));
srand(time(0));
~~~

Hodnota vrácená funkcí time je předána jako argument funkce srand.

Generování náhodných celých čísel

Voláme funkci rand pro získávání čísel zgenerátoru.

```jsx
int x = rand();
~~~

Funkci rand se nepředává žádný argument a vrací celé číslo zintervalu 0..RAND_MAX.

Pro získání řady celých čísel zlibovolného intervalu

How well did you know this?
1
Not at all
2
3
4
5
Perfectly