
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.