Pokračování příkladu: funkce s2cos pro výpočet y = sin 2 (x) cos(x) function y = s2cos(x) y = (sin(x).^ 2).* cos(x);

Podobné dokumenty
Příklad: Součet náhodných čísel ve vektoru s počtem prvků, které zadá uživatel, pomocí sum() a pomocí cyklu for. Ověříme, že příliš výpisů na

E+034 = ; = e E+034

Pozn. %% - tiskne znak %

KTE / PPEL Počítačová podpora v elektrotechnice

cyklus s daným počtem opakování cyklus s podmínkou na začátku (cyklus bez udání počtu opakování)

Příklad: Vytvoření uživatelské funkce prolozeni_bodu pro polynomiální regresi: Vstupní data: x-ové a y-ové souřadnice bodů (2 vektory x, y), stupeň

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

Stručný návod k programu Octave

- jak udělat konstantu long int: L long velka = 78L;

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

pi Ludolfovo číslo π = 3,14159 e Eulerovo číslo e = 2,71828 (lze spočítat jako exp(1)), např. je v Octave, v MATLABu tato konstanta e není

Systém je citlivý na velikost písmen CASE SENSITIVE rozeznává malá velká písmena, např. PROM=1; PROm=1; PRom=1; Prom=1; prom=1; - 5 různých proměnných

- transpozice (odlišuje se od překlopení pro komplexní čísla) - překlopení matice pole podle hlavní diagonály, např.: A.' ans =

Formátové specifikace formátovací řetězce

Příklad: Řešte soustavu lineárních algebraických rovnic 10x 1 + 5x 2 +70x 3 + 5x 4 + 5x 5 = 275 2x 1 + 7x 2 + 6x 3 + 9x 4 + 6x 5 = 100 8x 1 + 9x 2 +

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Formátová specifikace má tvar (některé sekce nemají smysl pro načítání) %

while cyklus s podmínkou na začátku cyklus bez udání počtu opakování while podmínka příkazy; příkazy; příkazy; end; % další pokračování programu

KTE / PPEL Počítačová podpora v elektrotechnice

Programy na PODMÍNĚNÝ příkaz IF a CASE

% vyhledání prvku s max. velikostí v jednotlivých sloupcích matice X

SEMESTRÁLNÍ PRÁCE Z PŘEDMĚTU MODELOVÁNÍ MATLABEM

Školní kolo soutěže Baltík 2009, kategorie C

Kreslení grafů v Matlabu

2. cvičení z ZI1 - Excel

Úvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu

C# konzole Podíl dvou čísel, podmínka IF

6. Příkazy a řídící struktury v Javě

Sada 1 - Základy programování

Základy algoritmizace a programování

Algoritmizace a programování

Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

II. Úlohy na vložené cykly a podprogramy

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Histogram. 11. února Zadání

Znak Slovy Popis Zdroj Výsledek Formátova cí řetězec v CZ verzi Excelu

X37SGS Signály a systémy

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Základy algoritmizace a programování

Základy jazyka C. Základy programování 1 Martin Kauer (Tomáš Kühr)

Algoritmizace a programování. Terminálový vstup a výstup

Jazyk C# a platforma.net

Příklady k prvnímu testu - Matlab

VISUAL BASIC. Přehled témat

3 KTE / ZPE Informační technologie

Základní vzorce a funkce v tabulkovém procesoru

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Tabulkový procesor. Základní rysy

Lekce 01 Úvod do algoritmizace

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Zápis programu v jazyce C#

Programovací jazyk Pascal

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Jednoduché příkazy jazyka Pascal

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

VISUAL BASIC. Práce se soubory

2. Numerické výpočty. 1. Numerická derivace funkce

Basic256 - úvod do programování Příklady. ing. petr polách

Zadání: TÉMA: Zápis algoritmu, čtení textového souboru, porovnání řetězců.

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

C2110 Operační systém UNIX a základy programování

DATABÁZE A SYSTÉMY PRO UCHOVÁNÍ DAT 61 DATABÁZE - ACCESS. (příprava k vykonání testu ECDL Modul 5 Databáze a systémy pro zpracování dat)

Algoritmus pro generování normálních magických čtverců

Doňar B., Zaplatílek K.: MATLAB - tvorba uživatelských aplikací, BEN - technická literatura, Praha, (ISBN:

VZORCE A VÝPOČTY. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen Ročník: sedmý

Základy PERLu snadno a rychle

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Řešení sady 1. Úvod do programování 1 Tomáš Kühr

Iterační výpočty. Dokumentace k projektu č. 2 do IZP. 24. listopadu 2004

Příklad elektrický obvod se stejnosměrným zdrojem napětí

3.T Technické výpočty v Octave/Matlabu zpracování a zobrazení dat

Operace s vektory a maticemi + Funkce

KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM

Kódy pro formát čísla

Programování v jazyce C pro chemiky (C2160) 5. Čtení dat ze souboru

Příklady k druhému testu - Matlab

8. Posloupnosti, vektory a matice

Skriptování aneb funkce a procedury, cykly a vstupy a výstupy

Příklady: (y + (sin(2*x) + 1)*2)/ /2 * 5 = 8.5 (1+3)/2 * 5 = /(2 * 5) = 1.3. Pavel Töpfer, 2017 Programování 1-3 1

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Inovace bakalářského studijního oboru Aplikovaná chemie

1. Průběh funkce. 1. Nejjednodušší řešení

Základy jazyka C. Základy programování 1 Tomáš Kühr

LEKCE 6. Operátory. V této lekci najdete:

16. Goniometrické rovnice

Mezinárodní kolo soutěže Baltík 2010, kategorie C a D

Popis programu EnicomD

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

POZOR!!! INSTALACE POD WINDOWS 200 / XP / VISTA PROBÍHÁ VE DVOU ETAPÁCH A JE NUTNÉ DOKON

1. Otevřete dokument, který chcete číst. 2. Na kartě Zobrazení klikněte ve skupině Zobrazení dokumentů na položku Čtení na celé obrazovce.

Úvod do programování. Lekce 3

WSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z

Algoritmizace a programování

Transkript:

Vytvořte skou funkci s2cos_graf bez parametrů. Tato funkce s2cos_graf bude vykreslovat graf křivky dané rovnicí y = sin 2 (x) cos(x) pro x z intervalu, jehož dolní mez, horní mez a krok zadá z klávesnice. Je třeba ošetřit, aby dolní mez byla menší než horní, aby krok byl kladný a nepřevyšoval hodnotu 1/10 z rozdílu mezi horní a dolní mezí intervalu. Pro výpočet y = sin 2 (x) cos(x) bude vytvořena další funkce s2cos s jedním vstupním parametrem x a jedním výstupním parametrem y. Funkce s2cos bude volána ve funkci s2cos_graf. Funkce mohou být napsány každá v samostatném souboru a uloženy ve stejné složce nebo mohou být napsány v jednom souboru (nejprve hlavní funkce s2cos_graf a potom funkce s2cos). Nejdříve vytvoříme funkci s2cos_graf: function s2cos_graf dolni = input('zadejte pocatecni hodnotu: '); horni = input('zadejte koncovou hodnotu: '); krok = input('zadejte krok: '); if (horni <= dolni) return; if (krok <= 0) krok musí být kladný disp('je pripustny pouze kladny krok...'); return; elseif (krok > ((horni - dolni)./ 10)) disp('krok je prilis velky...'); return; ; osa_x = dolni:krok:horni; osa_y = s2cos(osa_x); plot(osa_x, osa_y) je požadován krok max 1/10 ze zadaneho intervalu volání funkce s2cos se vstupem osa_x pro výpočet y Tuto funkci s2cos musíme nyní vytvořit : funkce s2cos pro výpočet y = sin 2 (x) cos(x) function y = s2cos(x) operace prvek po y = (sin(x).^ 2).* cos(x); prvku nutné Funkce s2cos je využita ve funkci s2cos_graf. Příklady volání funkce s2cos_graf jejím názvem : s2cos_graf Zadejte pocatecni hodnotu: 0 Zadejte koncovou hodnotu: 2*pi Zadejte krok: 100 Krok je prilis velky... s2cos_graf Zadejte pocatecni hodnotu: 0 Zadejte koncovou hodnotu: 2*pi Zadejte krok: 2*pi/100 Funkci s2cos lze volat i z příkazového řádku, pokud je uložena v samostatném souboru. Příklady volání funkce s2cos jejím názvem : vstup = 0:0.1:1; kolik = s2cos(vstup); Funkce s2cos slouží pro výpočet, pak vykreslíme graf plot(vstup, kolik) Pro vstup 0: y = s2cos(0) y = 0 function y = s2cos(x) y = (sin(x).^ 2).* cos(x); Pro jiný vstup tatáž funkce: x = [-pi:0.1:pi]; vysledek = s2cos(x); A ještě vykreslíme graf plot(x,vysledek) Vytvořte skou funkci s2cos_fajn bez parametrů. Tato funkce s2cos_fajn bude vykreslovat graf křivky dané rovnicí y = sin 2 (x) cos(x) pro x z intervalu, jehož dolní mez, horní mez a krok zadá z klávesnice. Je třeba ošetřit, aby dolní mez byla menší než horní, aby krok byl kladný a nepřevyšoval hodnotu 1/10 z rozdílu mezi horní a dolní mezí intervalu. Pokud se zmýlí, bude mu umožněno dolní mez, horní mez a krok zadat znovu. Pro výpočet y = sin 2 (x) cos(x) bude využita funkce s2cos. Takže vylepšíme skou funkci s2cos_graf, která byla uvedena dříve, a přidáme cykly. 1

function s2cos_fajn dolni = input('zadejte pocatecni hodnotu: '); horni = input('zadejte koncovou hodnotu: '); if (horni > dolni) krok = input('zadejte krok: '); if (krok <= 0) disp('je pripustny pouze kladny krok...'); elseif (krok > ((horni - dolni)./10)) disp('krok je prilis velky...'); ; ; osa_x = dolni:krok:horni; osa_y = s2cos(osa_x); plot(osa_x, osa_y) function y = s2cos(x) y = (sin(x).^ 2).* cos(x); function s2cos_fajn dolni = input('zadejte pocatecni hodnotu: '); horni = input('zadejte koncovou hodnotu: '); if (horni > dolni) krok = input('zadejte krok: '); if (krok <= 0) break - ukončí disp('je pripustny pouze kladny krok...'); běh cyklu a elseif (krok > ((horni - dolni)./10)) disp('krok je prilis velky...'); ; ; osa_x = dolni:krok:horni; osa_y = s2cos(osa_x); plot(osa_x, osa_y) vyskočí z něj za jeho koncový, continue - vyvolá okamžitě další otočku cyklu function y = s2cos(x) y = (sin(x).^ 2).* cos(x); Volání funkce jejím názvem: s2cos_fajn Zadejte pocatecni hodnotu: 10 Zadejte koncovou hodnotu: 0 Dolni mez je mensi nebo stejna s horni! Zadejte pocatecni hodnotu: 1 Zadejte koncovou hodnotu: 5 Zadejte krok: 20 Krok je prilis velky... Zadejte krok: 0.1 a už se vykreslí graf se zadanými hodnotami... Vytvořte skou funkci s2cos_super bez parametrů. Tato funkce s2cos_super bude vykreslovat graf křivky dané rovnicí y = sin 2 (x) cos(x) pro x z intervalu, jehož dolní mez, horní mez a krok zadá z klávesnice. Je třeba ošetřit, aby dolní mez byla menší než horní, aby krok byl kladný a nepřevyšoval hodnotu 1/10 z rozdílu mezi horní a dolní mezí intervalu. Pokud se zmýlí, bude mu umožněno dolní mez, horní mez a krok zadat znovu. Ve funkci bude provedeno ošetření počtu chyb e, maximální počet chyb, které může udělat, bude 10. Pro výpočet y = sin 2 (x) cos(x) bude využita funkce s2cos. Takže k funkci s2cos_fajn(), která byla uvedena dříve, přidáme počítání chyb. function s2cos_super kolik_chyb = 0; dolni = input('zadejte pocatecni hodnotu: '); horni = input('zadejte koncovou hodnotu: '); if (horni > dolni) kolik_chyb = kolik_chyb + 1; switch kolik_chyb case 0 disp('chybka programu, nula chyb, tady nemam byt?!?!'); case 1 disp('tak to byla prvni chyba...'); case 2 disp('tak to byla druha chyba...'); case 3 disp('tak to bylo do tretice...'); case {4, 5, 6, 7, 8, 9} disp(['uz ',num2str(kolik_chyb),... '. chyba, to snad neni mozne!']); Pokračování case 10 disp('jubileum, 10. chyba! Bude konec!'); otherwise disp('uz si nemame co rici... Jsi beznadejny pripad.'); return; ; krok = input('zadejte krok: '); if (krok <= 0) disp('je pripustny pouze kladny krok...'); elseif (krok > ((horni - dolni)./10)) disp('krok je prilis velky...'); ; ; osa_x = dolni:krok:horni; osa_y = s2cos(osa_x); plot(osa_x, osa_y) Ošetření počtu chyb u zadávání kroku bychom provedli podobně function y = s2cos(x) y = (sin(x).^ 2).* cos(x); 2

Volání funkce jejím názvem: s2cos_super Zadejte pocatecni hodnotu: 3 Zadejte koncovou hodnotu: 0 Tak to byla prvni chyba... Dolni mez je mensi nebo stejna s horni! Zadejte pocatecni hodnotu: 5 Zadejte koncovou hodnotu: 0 Tak to byla druha chyba... Dolni mez je mensi nebo stejna s horni! Zadejte pocatecni hodnotu: 6 Zadejte koncovou hodnotu: -1 Tak to bylo do tretice... Dolni mez je mensi nebo stejna s horni! Zadejte pocatecni hodnotu: 0 Zadejte koncovou hodnotu: 20 Zadejte krok: 0.1 a už se vykreslí graf se zadanými hodnotami... Uživatel v tomto případě udělal 3 chyby při zadávání. Součet náhodných čísel ve vektoru s počtem prvků, které zadá, pomocí sum() a pomocí cyklu for. Ověříme, že příliš výpisů na obrazovku zpomaluje tím, že zobrazíme okno (proužek) o stavu výpočtu. h = waitbar(x,'zpráva') vytváří a zobrazuje proužek částečně zaplněný podle velikosti x, které by mělo být mezi 0 a 1. V horní části se zobrazuje aktuální text zprávy. Pozn.: rem(x,y) zbytek po celočíselném dělení, např. rem(3,2) ans = 1 3/2=1, zbytek 1 (3 je liché číslo) rem(4,2) ans = 0 4/2=2, zbytek 0 (4 je sudé číslo) rem(78,5) ans = 3 78/5=15, zbytek 3 function testsumacewbar pocet_cisel = input('zadej pocet cisel vetsi nez milion: '); if(pocet_cisel>1e6) break vektor = rand(1,pocet_cisel); tic prvni = sum(vektor); toc disp('pomoci sum: '); disp(prvni) tic druhy = 0; h = waitbar(0,'makam jako drak...'); for cykl=1:length(vektor) druhy = druhy + vektor(cykl); if(rem(cykl,10000) ~= 0) waitbar(cykl/length(vektor)); close(h); toc disp('pomoci cyklu for: '); disp(druhy) function testsumacewbar pocet_cisel = input('zadej pocet cisel vetsi nez milion: '); if(pocet_cisel>1e6) break musí být zadán počet větší než 10 6 vektor = rand(1,pocet_cisel); tic prvni = sum(vektor); toc disp('pomoci sum: '); disp(prvni) součet prvků ve vektoru pomocí sum tic druhy = 0; h = waitbar(0,'makam jako drak...'); for cykl=1:length(vektor) druhy = druhy + vektor(cykl); if(rem(cykl,10000) ~= 0) waitbar(cykl/length(vektor)); close(h); toc disp('pomoci cyklu for: '); disp(druhy) function testsumacewbar pocet_cisel = input('zadej pocet cisel vetsi nez milion: '); if(pocet_cisel>1e6) break musí být zadán počet větší než 10 6 vektor = rand(1,pocet_cisel); tic prvni = sum(vektor); toc disp('pomoci sum: '); disp(prvni) součet prvků ve vektoru pomocí sum součet prvků ve vektoru pomocí for jen každý 10000cí obrat provede výpis tic druhy = 0; h = waitbar(0,'makam jako drak...'); for cykl=1:length(vektor) druhy = druhy + vektor(cykl); if(rem(cykl,10000) ~= 0) zbytek po dělení waitbar(cykl/length(vektor)); close(h); zavření toc okna disp('pomoci cyklu for: '); disp(druhy) Volání funkce jejím názvem, např.: testsumacewbar Zadej pocet cisel vetsi nez milion: 5 Zadej pocet cisel vetsi nez milion: 50 Zadej pocet cisel vetsi nez milion: 1e7 Elapsed time is 0.011707 seconds. Pomoci sum: 4.9997e+006 Elapsed time is 2.582634 seconds. Pomoci cyklu for: 4.9997e+006 Spotřebovaný čas pomocí for s výpisem Spotřebovaný čas pomocí sum 3

Pozn.: ke vstupu dat Mimo input lze použít i menu. Tento příkaz obsahuje kromě výzvy pro e i několik možných voleb (počet volíme podle potřeby). Uživatel si zvolí volbu, jejíž pořadové číslo bude pak přiřazeno proměnné. Např.: b = menu('vyber si barvu','cervena','modra','zelena') b = 1 červenou b = 2 modrou b = 3 zelenou Stejný výsledek lze dosáhnout i příkazem input (a např. if, příp. switch). Funkce menu celý postup pouze může usnadnit. Vytvoření ské funkce vyberzmenu bez parametrů. Tato funkce vyberzmenu bude vykreslovat grafy křivek dané rovnicemi: f(x) = sin 3 (x 2 ) červeně, f(x) = 2 sin 3 (x 2 ) modře, f(x) = 3 sin 3 (x 2 ) zeleně. Křivka bude vykreslena podle volby e vždy pro x z intervalu od 0 do 5. Pro výpočet y = sin 3 (x 2 ) bude vytvořena další funkce sin3x2 s jedním vstupním parametrem x a jedním výstupním parametrem y. Funkce sin3x2 bude volána ve funkci vyberzmenu a její výstup bude využit při vykreslení grafů. Pozn.: pause čekání na stisk klávesy pause(1.45) čeká 1,45 sec. a pak pokračuje function vyberzmenu volba = menu('vyber si barvu','cervena','modra','zelena','konec'); switch volba case 1 barva = 'Cervena'; plot(0:0.01:5,sin3x2(0:0.01:5),'r'); title([barva,' sin^3x^2 ']) case 2 barva = 'Modra'; plot(0:0.01:5,2.*sin3x2(0:0.01:5),'b'); title([barva,' 2.sin^3x^2 ']) case 3 barva = 'Zelena'; plot(0:0.01:5,3.*sin3x2(0:0.01:5),'g'); title([barva,' 3.sin^3x^2 ']) case 4 disp('konec, okna budou zavřena') pause(1.5); close all; % zavře všechna grafická okna otherwise function y = sin3x2(x) y=(sin(x.^2)).^3; function vyberzmenu volba = menu('vyber si barvu','cervena','modra','zelena','konec'); switch volba case 1 barva = 'Cervena'; plot(0:0.01:5,sin3x2(0:0.01:5),'r'); title([barva,' sin^3x^2 ']) case 2 barva = 'Modra'; plot(0:0.01:5,2.*sin3x2(0:0.01:5),'b'); title([barva,' 2.sin^3x^2 ']) case 3 barva = 'Zelena'; plot(0:0.01:5,3.*sin3x2(0:0.01:5),'g'); title([barva,' 3.sin^3x^2 ']) case 4 disp('konec, okna budou zavřena') pause(1.5); close all; % zavře všechna grafická okna otherwise Toto by nemělo nastat 1 2 3 4 function y = sin3x2(x) y=(sin(x.^2)).^3; Volání funkce vyberzmenu Volání funkce vyberzmenu Rozsahy os y se liší červenou červenou modrou 4

Volání funkce vyberzmenu červenou modrou Rozsahy os y se liší konec Konec, okna budou zavřena ('formatovací sekvence', argumenty) vypíše argumenty v požadovaném formátu v pořadí v jakém jsou zapsány. Formátovací sekvence začínají znakem % : %d nebo %i desítkové číslo (znaménkové) %o číslo v osmičkové soustavě %u desítkové číslo (neznaménkové) %x nebo %X číslo v šestnáctkové soustavě (a f nebo A F) %f desetinné číslo %e nebo %E desetinné číslo v exponenciálním tvaru (e nebo E) %g nebo %G použito %f nebo %e resp. %E exponenciální tvar se použije, je-li třeba, tj. je-li číslo moc velké nebo malé. Navíc vypouští nevýznamné nuly %c tisk znaku (z proměnné) %s tisk textového řetězce (z proměnné) Pozn. %% - tiskne znak % Důležité řídící znaky: \n nová řádka \t tabelátor \r návrat na začátek téhož řádku (záleží na operačním systému) \a v některých operačních systémech pípnutí \b Backspace vymazání předchozího znaku \\ - tiskne znak \ (zpětné lomítko) a = 56; b = 134; tisk hodnot uložených v proměnných a, b na obrazovku ('%d %d\n', a, b); 56 134 a = 56; b = 134; - tisk hodnot na 8 znaků, zleva doplněny mezery ('%8d %8d\n',a,b); 56 134 - tisk hodnot na 8 znaků, zleva doplní poprvé nuly, podruhé mezery ('%08d %8d\n',a,b); 00000056 134 a = 56; b = 134; - tisk hodnot na 8 znaků, zleva doplněny mezery ('%8d %8d\n',a,b); 56 134 a = 56; b = 134; uvedené číslo říká "alespoň 8 znaků", nesmí oříznout delší celé číslo. - tisk hodnot na 8 znaků, zleva doplněny mezery ('%8d %8d\n',a,b); 56 134 - tisk hodnot na 8 znaků, zleva doplní poprvé nuly, podruhé mezery ('%08d %8d\n',a,b); 00000056 134 6+2=8 5+3=8 - tisk hodnot na 8 znaků, zleva doplní poprvé nuly, podruhé mezery ('%08d %8d\n',a,b); 00000056 134 6+2=8 5+3=8 ('%6d\n',1000); 1000 ('%4d\n',1000); 1000 ('%2d\n',1000); 1000 5

a = 56; b = 134; - tisk hodnot na 8 znaků, zleva doplněny mezery ('%8d %8d\n',a,b); 56 134 - tisk hodnot na 8 znaků, zleva doplní poprvé nuly, podruhé mezery ('%08d %8d\n',a,b); 00000056 134 6+2=8 5+3=8 uvedené číslo říká "alespoň 8 znaků", nesmí oříznout delší celé číslo. 4 znaky => žádná mezera, 0 +4= 4 číslo 1000 má 4 číslice, 6 znaků => 2 mezery, 2 +4= 6 ('%6d\n',1000); 1000 ('%4d\n',1000); 1000 ('%2d\n',1000); 1000 2 znaky => žádná mezera, celé číslo 1000 výpis desetinného čísla ('%f\n', x); 123.345600 tři desetinná místa ('%.3f\n', x); zaokrouhluje dvě desetinná místa ('%.2f\n', x); osm desetinných míst ('%.8f\n', x); 123.34560000 Pozn. %f zobrazení čísla v pevné řádové čárce desetinné tečky a z toho (tj. na celou část zbývá minimálně 12, celá část má 3 číslice =>doplněno 9 mezerami) ('%15.2f\n', x); desetinné tečky a z toho (tj. na celou část zbývá minimálně 12, celá část má 3 číslice =>doplněno 9 mezerami) ('%15.2f\n', x); 9 mezer 3 číslice 1 des. tečka 2 desetinná místa 9 + 3 = 12 9 + 3 + 1 + 2 = 15 ('%15.2f\n', x); ('%015.2f\n',x); 000000000 ('%15.2f\n', x); ('%015.2f\n',x); 000000000 6

('%15.2f\n', x); ('%015.2f\n',x); 000000000 ('%06.2f\n',x); nula není doplněna, už je vypsáno 6 znaků (2 desetinná ('%15.2f\n', x); ('%015.2f\n',x); 000000000 3 + 1 + 2 = 6 ('%06.2f\n',x); nula není doplněna, už je vypsáno 6 znaků (2 desetinná ('%15.2f\n', x); ('%015.2f\n',x); 000000000 3 + 1 + 2 = 6 ('%06.2f\n',x); nula není doplněna, už je vypsáno 6 znaků (2 desetinná ('%04.2f\n',x); vypsáno 6 znaků (2 desetinná ('%15.2f\n', x); ('%015.2f\n',x); 000000000 3 + 1 + 2 = 6 ('%06.2f\n',x); nula není doplněna, už je vypsáno 6 znaků (2 desetinná ('%04.2f\n',x); 4 1 2 = 1 vypsáno 6 znaků (2 desetinná ('%15.2f\n', x); ('%015.2f\n',x); 000000000 3 + 1 + 2 = 6 ('%06.2f\n',x); nula není doplněna, už je vypsáno 6 znaků (2 desetinná ('%04.2f\n',x); 4 1 2 = 1 vypsáno 6 znaků (2 desetinná uvedené číslo říká "alespoň 4 znaky celkem", nesmí být oříznuta delší celá část. + značí vždy tisknout znaménko + nebo, např.: %+d, %+f c = 7; d = -34; ('%+d %+d %+.1f\n', c, d, x); +7-34 +123.3 - znamená zarovnat doleva, např.: %-8.3f ('%-8.3f\n', x); ('%-15.3f\n', x); 7

+ značí vždy tisknout znaménko + nebo, např.: %+d, %+f c = 7; d = -34; ('%+d %+d %+.1f\n', c, d, x); +7-34 +123.3 - znamená zarovnat doleva, např.: %-8.3f ('%-8.3f\n', x); Pozn. bez znaménka doplnění ('%-15.3f\n', x); mezerami ('%15.3f\n', x); ('%8.3f\n', x); nejsou mezery a = 234; b = 398; ('V desitkove soustave: %d %d\n', a, b); V desitkove soustave: 234 398 ('V osmickove soustave: %o %o\n', a, b); V osmickove soustave: 352 616 ('V 16kove soustave: %x %x\n', a, b); V 16kove soustave: ea 18e ('V 16kove soustave: %X %X\n', a, b); V 16kove soustave: EA 18E m = 123.3456; ('%f\n', m); 123.345600 ('%e\n', m); 1.233456e+002 ('%E\n', m); 1.23456E+002 ('%g\n', m); ('%G\n', m); n = 1.23440000e34; ('%f\n', n); 12344000000000001000000000000000000.000000 ('%e\n', n); 1.234400e+034 ('%E\n', n); 1.234400E+034 ('%g\n', n); 1.2344e+034 ('%G\n', n); 1.2344E+034 Pozn.: porovnání s format,který nastavuje výstupní formát zobrazení čísla na obrazovku, např. y = 123.4567890123456789; format long e y y = 1.234567890123457e+002 format short e y y = 1.2346e+002 format long g y y = 123.456789012346 format short g y y = 123.46 format y y = 123.4568 ('%f\n',y) 123.456789 ('%e\n',y) 1.234568e+002 ('%.4e\n',y) 1.2346e+002 ('%.12e\n',y) 1.234567890123e+002 ('%g\n',y) 123.457 funkce pro výpis podílu pomocí disp a různými způsoby, dělenec codelit a dělitel cimdelit jsou vstupními parametry funkce function vystupytest1(codelit,cimdelit) if(cimdelit==0) disp('nulou nedelim!!!') return x = codelit / cimdelit; disp(['vysledek je: ',num2str(x)]); hlaska = 'Vysledek je: '; format short disp(hlaska); disp(x); format long g; disp(hlaska); disp(x); format rat; disp(hlaska); disp(x); ('\nvysledek je %.3f\n',x); Volání funkce: vystupytest1(17,3) Vysledek je: 5.6667 Vysledek je: 5.6667 Vysledek je: 5.66666666666667 Vysledek je: 17/3 Vysledek je 5.667 Nebo: vystupytest1(-59,0) Nulou nedelim!!! function vystupytest2(codelit,cimdelit) if(cimdelit==0) disp('nulou nedelim!!!') return x = codelit / cimdelit; ('Vysledek je x = %-8.3f\nA to je spravne...\n',x); ('\nnebo presneji x = %-8.6f\n', x); ('\nnyni prehledne v tabulce:\n'); (' %15s %15s %15s \n','delenec','delitel','podil'); (' %15.3f %15.3f %15.3f \n\n', codelit,cimdelit,x); vystupytest2(17,3) volání funkce Vysledek je x = 5.667 A to je spravne... Nebo presneji x = 5.666667 Nyni prehledne v tabulce: Delenec Delitel Podil 17.000 3.000 5.667 8

function vystupytest3(codelit,cimdelit) if(cimdelit==0) disp('nulou nedelim!!!') return x = codelit / cimdelit; function vystupytest4(codelit,cimdelit) if(cimdelit==0) disp('nulou nedelim!!!') return x = codelit / cimdelit; ('\njeste jednou, tentokrat zarovnano doleva:\n'); (' %-15s %-15s %-15s \n', 'Delenec','Delitel','Podil'); (' %-15.3f %-15.3f %-15.3f \n\n', codelit,cimdelit,x); Volání funkce: vystupytest3(17,3) Jeste jednou, tentokrat zarovnano doleva: Delenec Delitel Podil 17.000 3.000 5.667 ('\na oddeleno jen tabelatorem:\n'); ('%15s\t%15s\t%15s\t\n','Delenec', 'Delitel', 'Podil'); ('%15.3f\t%15.3f\t%15.3f\n\n', codelit,cimdelit,x); Volání funkce: vystupytest4(17,3) A oddeleno jen tabelatorem: Delenec Delitel Podil 17.000 3.000 5.667 Vstup a tisk znaků (příp. textového řetězce) zadany_znak = input('zadejte pismeno: ', 's'); Zadejte pismeno: n ('Bylo zadano: %c\n', zadany_znak); Bylo zadano: n zadany_text = input('zadejte text: ', 's'); Zadejte text: Ahoj, jak je? ('Bylo zadano: %s\n', zadany_text); Bylo zadano: Ahoj, jak je? Pozn. zadany_text = input('zadejte text: ', 's'); Zadejte text: Ano! ('Bylo zadano: %c\n', zadany_text); Bylo zadano: A Bylo zadano: n Bylo zadano: o Bylo zadano:! Pozn.: k zadávání znaků Pokud zadá více znaků, lze se přebytečných zbavit např. takto: zadany_znak = input('zadejte pismeno: ', 's'); Zadejte pismeno: Ahoj, jak je? if (length(zadany_znak) > 1) zadany_znak = zadany_znak(1,1); ; ('Bylo zadano: %c\n', zadany_znak); Bylo zadano: A Pozn.: k zadávání znaků Pokud zadá více znaků, lze se přebytečných zbavit např. takto: zadany_znak = input('zadejte pismeno: ', 's'); Zadejte pismeno: Ahoj, jak je? if (length(zadany_znak) > 1) zadany_znak = zadany_znak(1,1); ; ('Bylo zadano: %c\n', zadany_znak); Bylo zadano: A Pozn.: k zadávání znaků Pokud zadá více znaků, lze se přebytečných zbavit např. takto: zadany_znak = input('zadejte pismeno: ', 's'); Zadejte pismeno: Ahoj, jak je? if (length(zadany_znak) > 1) zadany_znak = zadany_znak(1,1); ; ('Bylo zadano: %c\n', zadany_znak); Bylo zadano: A ('Bylo zadano: %5c\n', zadany_znak); Bylo zadano: A 9

Pozn.: k zadávání znaků Pokud zadá více znaků, lze se přebytečných zbavit např. takto: zadany_znak = input('zadejte pismeno: ', 's'); Zadejte pismeno: Ahoj, jak je? if (length(zadany_znak) > 1) zadany_znak = zadany_znak(1,1); ; ('Bylo zadano: %c\n', zadany_znak); Bylo zadano: A Doplněno 4 mezerami, 4 +1= 5 ('Bylo zadano: %5c\n', zadany_znak); Bylo zadano: A Tisk do řetězce r = sprintf('formatovací sekvence', argumenty) vrací řetězec, do řetězce r jsou vypsány argumenty v požadovaném formátu v uvedeném pořadí, stejně jako u, formátovací sekvence jsou také stejné jako u. Příklady: zadany_text = input('zadejte text: ', 's'); Zadejte text: Ahoj, jak je? hlaska = sprintf('bylo zadano: %s\n', zadany_text); figure % prázdné grafické okno title(hlaska) % titulek grafu z řetězce hlask Tisk do řetězce r = sprintf('formatovací sekvence', argumenty) vrací řetězec, do řetězce r jsou vypsány argumenty v požadovaném formátu v uvedeném pořadí, stejně jako u, formátovací sekvence jsou také stejné jako u. Příklady: zadany_text = input('zadejte text: ', 's'); Zadejte text: Ahoj, jak je? hlaska = sprintf('bylo zadano: %s\n', zadany_text); figure % prázdné grafické okno title(hlaska) % titulek grafu z řetězce hlaska disp(hlaska) Bylo zadano: Ahoj, jak je? ('%s\n',hlaska) Bylo zadano: Ahoj, jak je? Tisk do řetězce r = sprintf('formatovací sekvence', argumenty) vrací řetězec, do řetězce r jsou vypsány argumenty v požadovaném formátu v uvedeném pořadí, stejně jako u, formátovací sekvence jsou také stejné jako u. Příklady: zadany_text = input('zadejte text: ', 's'); Zadejte text: Ahoj, jak je? hlaska = sprintf('bylo zadano: %s\n', zadany_text); figure % prázdné grafické okno title(hlaska) % titulek grafu z řetězce hlaska disp(hlaska) Bylo zadano: Ahoj, jak je? ('%s\n',hlaska) Bylo zadano: Ahoj, jak je? Tisk do řetězce sprintf Příklady: zadany_text = input('zadejte text: ', 's'); Zadejte text: Ahoj, jak je? hlaska = sprintf('bylo zadano: %s\n', zadany_text); msgbox(hlaska,'problem','error'); Tisk do řetězce sprintf Příklady: zadany_text = input('zadejte text: ', 's'); Zadejte text: Ahoj, jak je? hlaska = sprintf('bylo zadano: %s\n', zadany_text); msgbox(hlaska,'problem','error'); msgbox(zpráva,titulek,ikona) - vytvoří okno se zprávou, titulek se objeví v liště, ikona určuje, jaký obrázek ('error', 'help', 'warn') se zobrazí v okně se zprávou. Pozn.: další okna viz help - pod heslem Predefined Dialog Boxes msgbox(zpráva,titulek,ikona) - vytvoří okno se zprávou, titulek se objeví v liště, ikona určuje, jaký obrázek ('error', 'help', 'warn') se zobrazí v okně se zprávou. Pozn.: další okna viz help - pod heslem Predefined Dialog Boxes 10

Funkce jednoduchá kalkulačka Uživatel zadá dvě čísla a bude vybírat z operací: +, -, *, /, \. Pokud zadá matici nebo vektor, jako zadané číslo je uvažován prvek v prvním řádku a prvním sloupci. Uživateli bude umožněno po skočení výpočtu provádět další výpočet nebo zadat jiná čísla a opět pokračovat ve výpočtech. function kalkulacka a = input('zadej prvni cislo:'); if (length(a)>1) a = a(1,1); b = input('zadej druhe cislo:'); if (length(b)>1) b = b(1,1); znak = menu('vyber','+','-','*','/','\','jina cisla','konec'); switch (znak) case 1 s = sprintf('%.1f + %.1f = %.2f',a,b,a+b); case 2 s = sprintf('%.1f - %.1f = %.2f',a,b,a-b); case 3 s = sprintf('%.1f * %.1f = %.2f',a,b,a.*b); case 4 s = sprintf('%.1f / %.1f = %.2f',a,b,a./b); case 5 s = sprintf('%.1f \\ %.1f = %.2f',a,b,a.\b); case 6 msgbox('zadej jina cisla','informace','warn'); case 7 msgbox('konec','informace','warn'); return; msgbox(s,'vypocet','help'); Volání funkce kalkulacka Zadej prvni cislo:15 Zadej druhe cislo:3 Volání funkce kalkulacka Zadej prvni cislo:15 Zadej druhe cislo:3 + * * Volání funkce kalkulacka Zadej prvni cislo:15 Zadej druhe cislo:3 + Volání funkce kalkulacka * / jiné zadání Zadej prvni cislo:1 Zadej druhe cislo:2 11

Volání funkce kalkulacka \ Volání funkce kalkulacka \ jiné zadání jiné zadání Konec Zadej prvni cislo:1 Zadej druhe cislo:2 Zadej prvni cislo:1 Zadej druhe cislo:2 12