OBSAH WEBU
ČTĚTE!
Dělíme na funkce a příkazy
Deklarace funkce = prototyp. double sqrt(double x); - návratový typ jméno (parametry); - deklarujeme funkci před jejím použítím, využivá se v hlavičkových souborech
Definice funkce = implementace návratový typ jméno (parametry) {telo funkce, return}
return - ukončuje provádení funkce, může být kdekoliv, ne pouze na konci, i vícekrát
- pokud funkci použijeme dříve než jí definujeme, musí být předtím deklarována.
Jednoduchý příkaz - zkrátka příkaz, např a = b + c;
Složený příkazy - více příkazů, složeny do bloků
V bloku mohou být lokální proměnné, i se stejným jménem jako mimo blok, mají platnost pouze v bloku. Nelze je použít mimo.
klasické if/else. V některých jazycích lze pouze if, nekdě je nutná i else část. Může být v bloku i bez bloku, pokud je bez bloku, počítá se pouze první příkaz za podmínkou. Ja slovem if následuje výraz. Tyto podmínky lze libovolně vnořovat - pozor na správné zavorkovíní.
Přepínač slouží k větvenívýpočtu podle hodnoty celočíselného výrazu (v některých jazicích to mohou být i znaky a řetězce).
Cykly lze take libovolne vnorovat, nebo kombinovat s podminkami a vsim ostatnim.
while - while (vyraz) {telo} - dopředu neznáme počet iterací, cyklus nemusí proběhnout ani jednou.
do while - do {} while (vyraz); - proběhne alespoň jednou
for for( inicializace ; test podmínky ; zmena ridici promenne) {telo}
break - tímto příkazem lze kdykoliv ukončit nejblíže vnořený cyklus
continue - tímto příkazem lze kdykoliv ukončit aktualní opakování a začít další iteraci.
goto
goto navesti; printf("Toto se nikdy nevytiskne."); navesti: printf("Toto se vytiskne.");
- nepoužívá se! - jako příkaz skoku se dá označit i break a continue, protože také přesunou vykonávání na jiné místo.
Datová struktura - abstraktní vyjádření zúčastněných vlastností (atributů) prvků (objektů) řešeného problému
Abstraktní datový typ (ADT) - je definován množinou hodnot, jichž mohou nabývat prvky tohoto typu a množinou operací definovaných nad tímto typem. Jeden konkrétní prvek ADT bývá označován jako abstraktní datová struktura (ADS).
Základní datové strukuty nám často nabízí samotný programovací jazyk, například strutury, uniony, množiny. O tom ale tato otázka asi být nemá, jde o struktury které si vytváříme sami a musíme pracovat s pamětí.
Seznam je homogenní, lineární, dynamická struktura.
Lineárnost = každý prvek struktury má právě jednoho předchůdce a jednoho následníka (mimo první a poslední prvek).
Prvkem seznamu může být libovolný datový typ (klidně další seznam). Seznam může být i prázdný. Přístup k prvnímu prvku je přímý, k ostatním sekvenční ve směru průchodu.
Jednosměrný seznam – průchod jedním směrem.
Operace:
Dvojsměrný seznam - průchod oběma směry
- doplnění operací jednosměrného First → First, Last; Post → Post, před
Kruhový jednosměrný – poslední prvek ukazuje na první
Typické operace nad seznamem – zjištění délky, ekvivalence dvou seznamů, hledání prvku v seznamu, řazení prvků v seznamu, konkatenace (spojení) seznamů
- homogenní, lineární, dynamická struktura
- lze odvodit od seznamu pokud má přístup pouze od začátku
- struktura typu lifo
- implementace polem, seznamem
Operace:
- dynamická, homogenní, lineární struktura
- struktura typu FIFO
Operace:
Rekurzivní definice: Binární strom je buď prázdný nebo se sestává z jednoho uzlu zvaného kořen a dvou podstromů – levého a pravého.
Binární strom je váhově vyvážený pokud pro všechny jeho uzly platí že počty uzlů jejich levého a pravého podstromu se rovnají nebo se liší právě o 1.
Binární strom je výškově vyvážený pokud pro všechny jeho uzly platí že výška levého a pravého podstromu se rovná nebo se liší právě o 1.
Absolutně vyvážený strom – n výška stromu n > 0 a 2n – 1 = počet uzlů.
Algoritmy nad BS můžou být rekurzivní i nerekurzivní.
Průchod stromem:
- preorder - jdeme po stromu, kdyz k prvku dorazime zleva, zapiseme ho
- inorder - jdeme po stromu, kdyz k prvku dorazime zespodu, zapiseme ho
- postorder - jdeme po stromu, kdyz k prvku dorazime zprava, zapiseme ho
26 | ||
---|---|---|
Celé jméno | OK | !!! |
Diskuze
Toto mi přijde jako dobrý výpis algoritmů: http://dudka.cz/studyIAL
Jinak by si to sgsi mohl trochu zpřehlednit. Přijde mi to tu dost naházený, že jsem nad některýma bodama musel přemýšlet, co jimi vlastně chceš sdělit.