Slovník | Vyhledávání | Mapa webu
 
Základy informatiky pro biologyVýpočetní matematické systémy Jak pracovat s MATLABem Programování v MATLABu Základní programové struktury

Logo Matematická biologie

Základní programové struktury

Mezi základní programové struktury patří příkaz větvení a příkaz cyklu. Tyto struktury je samozřejmě možné použít i v příkazové řádce MATLABu. Nejprve se tedy zmíníme o větvení programu.

Větvení programu

Větvení se provádí příkazem if. Syntaxe jeho použití se řídí následujícím schématem:

Větve else a elseif jsou samozřejmě nepovinné, přičemž elseif je možné použít vícekrát. Příkazů v každé větvi může být víc. Znázorněné odsazení je nepovinné a je použito kvůli větší přehlednosti. Všechny podmínky, příkazy i klíčová slova je  možné uvést v jediném řádku,  v tomto  případě  je  nutno  použít oddělovač příkazů, tedy čárku nebo středník.

Podmínky po klíčových slovech if a elseif jsou obecně matice. Platí, že podmínka je splněna, jestliže všechny její prvky jsou nenulové. Například pokud má podmínka1 tvar A==B, kde A, B jsou matice, pak tento výraz vrátí matici s jedničkami nebo nulami, podle  toho,  zda  se  jednotlivé  odpovídající prvky shodují nebo ne. Větev příkazy1 by  se  provedla  jen  v tom případě,  že  výsledná   matice  obsahuje  jenom   jedničky.

 Klíčové slovo elseif je  možné nahradit dvojicí else  a if, ovšem potom je potřeba o jeden end více. Schéma by  pak vypadalo následovně:

Jako příklad vytvoříme soubor davka1.m. Po zadání příkazu davka1 z příkazové řádky je uživatel vyzván, aby zadal libovolné číslo. Po zadání hodnoty a stisknutí klávesy ENTER se vypíše na obrazovku, jestli uživatel zadal kladné nebo záporné číslo.

Dalším typem větvení je switch. Syntaxe jeho použití se řídí následujícím schématem:

Tento typ větvení se používá především v situacích, kdy proměnná výraz nabývá více hodnot. Přepínač switch sleduje hodnotu proměnné výraz a pro jednotlivé případy (case) provede příslušné příkazy. Pokud nenastane žádný z popsaných případů, vykonají se příkazy_jiné. Znázorněné odsazení je nepovinné a je použito kvůli větší přehlednosti.

Jako příklad vytvoříme soubor davka2.m, ve kterém je uživatel vyzván, aby zadal číslo, které odpovídá pořadí dne v týdnu. Po zadání hodnoty a stisknutí klávesy ENTER se vypíše na obrazovku den, který odpovídá zadanému číslu.

 

Cykly

Pro cyklus jsou  v MATLABu  dva příkazy.  Je to  příkaz while a příkaz for.

Cyklus while se používá v případech, kdy předem neznáme počet průběhů cyklem, který je závislý na předem splnění dané podmínky. Použití příkazu while vypadá následovně:

Pro vyhodnocení podmínky podmínka  platí v podstatě  tatáž pravidla jako pro příkaz if. Příkazy mezi while a end se vykonávají, pokud je podmínka pravdivá.

Jako příklad vytvoříme soubor davka3.m, po jehož spuštění z příkazové řádky je uživatel vyzván, aby zadal nějaký text. Po zadání textu a stisknutí klávesy ENTER se vypíše na obrazovku libovolná permutace textu. Zadá-li uživatel pouze klávesu ENTER, dávka se ukončí.

Příkaz for se používá především v případech, kdy předem známe počet průchodů cyklem. Jeho syntaxe je následující:

Výraz v uvedeném přiřazení dá obecně  matici. Proměnná prom je pak sloupcový vektor, který  v průběhu  cyklu  postupně  nabývá hodnot jednotlivých sloupců této matice. Velmi typické je následující použití:

Je třeba si  uvědomit, že  výraz "1:n"  vytvoří matici o jednom řádku a n sloupcích,  hodnoty  v tomto  řádku  budou čísla od  1 do  n, takže  proměnná k bude postupně  nabývat těchto hodnot. V tomto případě  se  tedy  chová  příkaz  for podobně, jak to známe z jiných programovacích jazyků.  Pokud je jako výraz použita nějaká  konstantní matice a v průběhu cyklu ji změníme,  proměnná  prom  bude  nabývat  původních hodnot sloupců  matice. Běh  obou cyklů  je možné  předčasně přerušit, slouží k tomu příkaz "return". Tato situace může nastat třeba při řešení soustavy lineárních rovnic, kdy během výpočtu zjistíme, že matice soustavy je singulární.

V MATLABu je často možné nahradit použití cyklu  jedním nebo  několika  příkazy,   pokud   využijeme   některé   již definované funkce. Jako příklad  nám  může  sloužit  výpočet faktoriálu.  Pokud  chceme  vypočítat  faktoriál  z čísla  n v běžném   programovacím   jazyce,   postupujeme   obvykle následovně:

 

Pro tento účel stačí v MATLABu napsat příkaz

Tento příkaz dá správný výsledek  i pro n=0, neboť  součin přes prázdnou matici dává jako výsledek jedničku.

 
vytvořil Institut biostatistiky a analýz Lékařské fakulty Masarykovy univerzity