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

Podobné dokumenty
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);

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

E+034 = ; = e E+034

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

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

Pozn. %% - tiskne znak %

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

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

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

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

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

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

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

Stručný návod k programu Octave

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

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

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

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í

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

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 +

3 KTE / ZPE Informační technologie

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

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

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

Algoritmizace a programování

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

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

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

Úvod do programování. Lekce 3

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

2. cvičení z ZI1 - Excel

Histogram. 11. února Zadání

Jazyk C# a platforma.net

Základy algoritmizace a programování

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

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

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

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

Základní jednotky používané ve výpočetní technice

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

VY_32_INOVACE_08_2_04_PR

VISUAL BASIC. Přehled témat

Základy PERLu snadno a rychle

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

VISUAL BASIC. Práce se soubory

Převody mezi číselnými soustavami

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE REALIZACE PŘEKLADAČE I

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

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

3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

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

Kreslení grafů v Matlabu

Fz =a z + a z +...+a z +a z =

ISU Cvičení 1. Marta Čudová

Pokud není uvedeno jinak, uvedený materiál je z vlastních zdrojů autora

Klíčové pojmy: Cyklus, řídící proměnná, inicializace, test podmínky, přerušení cyklu, vnořování cyklů.

Kódováni dat. Kódy používané pro strojové operace

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody

MIDAM Verze 1.1. Hlavní okno :

Programovací jazyk Pascal

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

Mikroprocesorová technika (BMPT)

Struktura a architektura počítačů (BI-SAP) 5

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

Variace. Mocniny a odmocniny

KALKULÁTORY EXP LOCAL SIN

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

Sada 1 - Základy programování

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

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

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

0.1 Úvod do matematické analýzy

Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy

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

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

Násobení pomocí sčítání

8. Posloupnosti, vektory a matice

Číselné soustavy. Ve světě počítačů se využívají tři základní soustavy:

Příklady k prvnímu testu - Matlab

Tabulkový procesor. Základní rysy

Operační systémy. Cvičení 4: Programování v C pod Unixem

MATA Př 3. Číselné soustavy. Desítková soustava (dekadická) základ 10, číslice 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.

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

I. Kalkulátor Rebell SC2040 manuál s příklady Tlačítko: MODE CLR

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

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

Závěrečná zkouška z informatiky 2011

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů

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.

Informatika Datové formáty

Libovolnou z probraných metod najděte s přesností na 3 desetinná místa kladný kořen rovnice. sin x + x 2 2 = 0.

1. Téma 03 - Rozhodování

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

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

Algoritmizace a programování

Řídicí struktury. alg3 1

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

Transkript:

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 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 while(1) 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) continue; waitbar(cykl/length(vektor)); close(h); toc disp('pomoci cyklu for: '); disp(druhy)

function testsumacewbar while(1) 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) součet prvků ve vektoru pomocí sum musí být zadán počet větší než 10 6 tic druhy = 0; h = waitbar(0,'makam jako drak...'); for cykl=1:length(vektor) druhy = druhy + vektor(cykl); if(rem(cykl,10000) ~= 0) continue; waitbar(cykl/length(vektor)); close(h); toc disp('pomoci cyklu for: '); disp(druhy)

function testsumacewbar while(1) 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) součet prvků ve vektoru pomocí sum součet prvků ve vektoru pomocí for musí být zadán počet větší než 10 6 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) continue; zbytek po dělení waitbar(cykl/length(vektor)); close(h); zavření toc okna disp('pomoci cyklu for: '); disp(druhy)

Pokračování příkladu: 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

Pozn.: ke vstupu dat Mimo input lze použít i menu. Tento příkaz obsahuje kromě výzvy pro uživatele 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 uživatel vybírá červenou b = 2 uživatel vybírá modrou b = 3 uživatel vybírá 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.

Příklad: Vytvoření uživatelské 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 uživatele 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 while(1) 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 break; otherwise break; function y = sin3x2(x) y=(sin(x.^2)).^3;

function vyberzmenu while(1) 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 break; otherwise break; Toto by nemělo nastat 1 2 3 4 function y = sin3x2(x) y=(sin(x.^2)).^3;

Pokračování příkladu: Volání funkce vyberzmenu uživatel vybírá červenou

Pokračování příkladu: Volání funkce vyberzmenu Rozsahy os y se liší uživatel vybírá červenou uživatel vybírá modrou

Pokračování příkladu: Volání funkce vyberzmenu Rozsahy os y se liší uživatel vybírá červenou uživatel vybírá modrou uživatel vybírá 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) Příklad: a = 56; b = 134; tisk hodnot uložených v proměnných a, b na obrazovku ('%d %d\n', a, b); 56 134

Příklad: 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

Příklad: 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

Příklad: 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 ('%6d\n',1000); 1000 ('%4d\n',1000); 1000 ('%2d\n',1000); 1000 5+3=8

Příklad: 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 číslo 1000 má 4 číslice, 6 znaků => 2 mezery, 2 +4= 6 - tisk hodnot na 8 znaků, zleva doplní poprvé nuly, podruhé mezery ('%08d %8d\n',a,b); 00000056 134 6+2=8 5+3=8 4 znaky => žádná mezera, 0 +4= 4 ('%6d\n',1000); 1000 ('%4d\n',1000); 1000 ('%2d\n',1000); 1000 2 znaky => žádná mezera, celé číslo 1000

Příklad: x = 123.3456; výpis desetinného čísla ('%f\n', x); 123.345600 výpis desetinného čísla na tři desetinná místa ('%.3f\n', x); 123.346 zaokrouhluje výpis desetinného čísla na dvě desetinná místa ('%.2f\n', x); 123.35 výpis desetinného čísla na osm desetinných míst ('%.8f\n', x); 123.34560000 Pozn. %f zobrazení čísla v pevné řádové čárce

Příklad: x = 123.3456; výpis desetinného čísla na celkem 15 znaků včetně desetinné tečky a z toho budou 2 desetinná místa (tj. na celou část zbývá minimálně 12, celá část má 3 číslice =>doplněno 9 mezerami) ('%15.2f\n', x); 123.35

Příklad: x = 123.3456; výpis desetinného čísla na celkem 15 znaků včetně desetinné tečky a z toho budou 2 desetinná místa (tj. na celou část zbývá minimálně 12, celá část má 3 číslice =>doplněno 9 mezerami) ('%15.2f\n', x); 123.35 9 mezer 9 + 3 = 12 3 číslice 1 des. tečka 2 desetinná místa 9 + 3 + 1 + 2 = 15

Pokračování příkladu: x = 123.3456; výpis desetinného čísla na celkem 15 znaků včetně desetinné tečky a z toho budou 2 desetinná místa (doplněno 9 mezerami) ('%15.2f\n', x); 123.35 a teď doplněno 9 nulami ('%015.2f\n',x); 000000000123.35

Pokračování příkladu: x = 123.3456; výpis desetinného čísla na celkem 15 znaků včetně desetinné tečky a z toho budou 2 desetinná místa (doplněno 9 mezerami) ('%15.2f\n', x); 123.35 a teď doplněno 9 nulami ('%015.2f\n',x); 000000000123.35

Pokračování příkladu: x = 123.3456; výpis desetinného čísla na celkem 15 znaků včetně desetinné tečky a z toho budou 2 desetinná místa (doplněno 9 mezerami) ('%15.2f\n', x); 123.35 ('%06.2f\n',x); 123.35 nula není doplněna, už je vypsáno 6 znaků (2 desetinná místa, 1 tečka a 3 znaky celku) a teď doplněno 9 nulami ('%015.2f\n',x); 000000000123.35

Pokračování příkladu: x = 123.3456; výpis desetinného čísla na celkem 15 znaků včetně desetinné tečky a z toho budou 2 desetinná místa (doplněno 9 mezerami) ('%15.2f\n', x); 123.35 3 + 1 + 2 = 6 ('%06.2f\n',x); 123.35 nula není doplněna, už je vypsáno 6 znaků (2 desetinná místa, 1 tečka a 3 znaky celku) a teď doplněno 9 nulami ('%015.2f\n',x); 000000000123.35

Pokračování příkladu: x = 123.3456; výpis desetinného čísla na celkem 15 znaků včetně desetinné tečky a z toho budou 2 desetinná místa (doplněno 9 mezerami) ('%15.2f\n', x); 123.35 3 + 1 + 2 = 6 ('%06.2f\n',x); 123.35 nula není doplněna, už je vypsáno 6 znaků (2 desetinná místa, 1 tečka a 3 znaky celku) ('%04.2f\n',x); 123.35 vypsáno 6 znaků (2 desetinná místa, 1 tečka a 3 znaky celku) a teď doplněno 9 nulami ('%015.2f\n',x); 000000000123.35

Pokračování příkladu: x = 123.3456; výpis desetinného čísla na celkem 15 znaků včetně desetinné tečky a z toho budou 2 desetinná místa (doplněno 9 mezerami) ('%15.2f\n', x); 123.35 3 + 1 + 2 = 6 ('%06.2f\n',x); 123.35 nula není doplněna, už je vypsáno 6 znaků (2 desetinná místa, 1 tečka a 3 znaky celku) ('%04.2f\n',x); 123.35 4 1 2 = 1 vypsáno 6 znaků (2 desetinná místa, 1 tečka a 3 znaky celku) a teď doplněno 9 nulami ('%015.2f\n',x); 000000000123.35

Pokračování příkladu: x = 123.3456; výpis desetinného čísla na celkem 15 znaků včetně desetinné tečky a z toho budou 2 desetinná místa (doplněno 9 mezerami) ('%15.2f\n', x); 123.35 a teď doplněno 9 nulami ('%015.2f\n',x); 000000000123.35 3 + 1 + 2 = 6 ('%06.2f\n',x); 123.35 nula není doplněna, už je vypsáno 6 znaků (2 desetinná místa, 1 tečka a 3 znaky celku) ('%04.2f\n',x); 123.35 4 1 2 = 1 vypsáno 6 znaků (2 desetinná místa, 1 tečka a 3 znaky celku) uvedené číslo říká "alespoň 4 znaky celkem", nesmí být oříznuta delší celá část.

Příklad: + značí vždy tisknout znaménko + nebo, např.: %+d, %+f c = 7; d = -34; x = 123.3456; ('%+d %+d %+.1f\n', c, d, x); +7-34 +123.3 - znamená zarovnat doleva, např.: %-8.3f ('%-8.3f\n', x); 123.346 ('%-15.3f\n', x); 123.346

Příklad: + značí vždy tisknout znaménko + nebo, např.: %+d, %+f c = 7; d = -34; x = 123.3456; ('%+d %+d %+.1f\n', c, d, x); +7-34 +123.3 - znamená zarovnat doleva, např.: %-8.3f ('%-8.3f\n', x); 123.346 Pozn. bez znaménka doplnění ('%-15.3f\n', x); mezerami vlevo (před číslem) 123.346 ('%15.3f\n', x); 123.346 ('%8.3f\n', x); před nejsou mezery 123.346

Příklad: a = 234; b = 398; c = 25; ('V desitkove soustave: %d %d %d\n', a, b, c); V desitkove soustave: 234 398 25 ('V osmickove soustave: %o %o %o\n', a, b, c); V osmickove soustave: 352 616 31 ('V 16kove soustave: %x %x %x\n', a, b, c); V 16kove soustave: ea 18e 19 ('V 16kove soustave: %X %X %X\n', a, b, c); V 16kove soustave: EA 18E 19 ('OCT %o, DEC %d\n', 25, 25); OCT 31, DEC 25

Příklad: a = 234; b = 398; c = 25; ('V desitkove soustave: %d %d %d\n', a, b, c); V desitkove soustave: 234 398 25 ('V osmickove soustave: %o %o %o\n', a, b, c); V osmickove soustave: 352 616 31 ('V 16kove soustave: %x %x %x\n', a, b, c); V 16kove soustave: ea 18e 19 ('V 16kove soustave: %X %X %X\n', a, b, c); V 16kove soustave: EA 18E 19 hexadecimální ('OCT %o, DEC %d\n', 25, 25); OCT 31, DEC 25 dekadická, decimální oktalová