Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Data v číslicových počítačích I.

Podobné prezentace


Prezentace na téma: "Data v číslicových počítačích I."— Transkript prezentace:

1 Data v číslicových počítačích I.
nejčastěji počítače pracují s údaji vyjádřenými ve dvojkové soustavě, tedy pomocí číslic 0 a 1 důvod dvojkové soustavy byl ten, že první počítače byly reléové, tedy šlo rozlišit pouze 2 stavy (0 – rozepnuto, 1 – sepnuto) nejmenší jednotkou informace je 1 bit (1b) z anglického binary digit

2 Data v číslicových počítačích II.
nejmenší objem dat, se kterými obvykle počítač může pracovat je 1 Byte (1 bajt, 1B) 1 Byte = 8 bit pomocí 1B lze vyjádřit 28=256 různých hodnot

3 Předpony soustavy SI kilobyte kB 10001 B 103 bajtů megabyte MB 10002 B
gigabyte GB 10003 B 109 bajtů terabyte TB 10004 B 1012 bajtů petabyte PB 10005 B 1015 bajtů exabyte EB 10006 B 1018 bajtů

4 Násobky bajtů Historicky (z technologických důvodů) vzniklo označování
1kB (malé „k“)= 103 B = 1000 B 1KB (velké „k“)= 210 B = 1024 B Problém, jak to rozlišit u dalších předpon (mega, giga,….) velikostí písmene není možné (mB není zkratkou pro megabajt) - řešení viz IEC

5 International Electrotechnical Commission (IEC) v roce 1998
kibibyte KiB 10241 B 210 bajtů mebibyte MiB 10242 B 220 bajtů gibibyte GiB 10243 B 230 bajtů tebibyte TiB 10244 B 240 bajtů pebibyte PiB 10245 B 250 bajtů exbibyte EiB 10246 B 260 bajtů v ČR převzato jako ČSN IEC

6 Obvyklé uvádění velikostí
polovodičové paměti, velikost souborů ~ 2x 1GB = 1 GiB = 230 B např. 2GB (prodejní velikost) → reálná velikost = 2*230/220= 2048MiB norma IEC není moc používána (výjimka např. WinSCP) pevné disky ~ 10x 1GB = 109 B (prodejní velikost) např. 1,5TB HDD → reálná velikost = 1.5*1012/240=1.364TiB

7 Kódování češtiny Historie - každý znak uložen v počítači jako 1 Byte, tzn. 8 bitů => 1B …. 256 různých znaků A … 65, B … 66, C … 67 Od 0 do 32 jsou systémové znaky, od 33 do 127 jsou znaky anglické abecedy (plus znaky typu závorek, zavináč apod.) a čísla od 128 do 255 jsou různé národní znaky. Přiřazení znaků k číslům se označuje jako kódování. iso (Unix), windows-1250 (Windows) š … 185 (iso ), 154 (window-1250) UNICODE pro uložení znaku používá 1 a více Byte

8 ASCII nejstarší standardizovaná znaková sada (1967)

9 WINDOWS-1250 kódování pro středoevropské jazyky (MS Windows)

10 ISO 8859-2 ISO standard kódování (Unix/Linux)

11 ISO vs. Windows-1250

12 UNICODE UTF-8 znak se ukládá pomocí 1 až 6*) Byte (pro české znaky s diakritikou 2 Byte, asijské znaky 3 Byte) zpětná kompatibilita s ASCII UTF-16 znak se ukládá pomoci 16 nebo 32 bitů UTF-32 znak se ukládá pomocí 4 Byte *) v roce 2003 omezeno jen na 4 Byte

13 UTF-8 vs. ISO

14

15 Algoritmus Definice Jedná se o posloupnost elementárních kroků
Návod jak provést určitou činnost Přesný návod či postup, kterým lze vyřešit daný typ úlohy Transformace vstupních dat na výstupní data Vstupy mají definované množiny hodnot, jichž mohou nabývat Algoritmus je procedura proveditelná Turingovým strojem teoretický model počítače popsaný matematikem Alanem Turingem Jedná se o posloupnost elementárních kroků

16 Algoritmus Jak si jej jednoduše představit:
postup pro výpočet obvodu kruhu kuchařka: recepty postup jak převést číslo ze z-adické soustavy do jiné návod pro sestavení nábytku

17 Vlastnosti algoritmů Elementární Deterministický Konečný Resultativní
Skládá se z konečného počtu jednoduchých činností (kroky) Deterministický Po každém kroku můžeme určit zda skončil nebo v jakém kroku budeme pokračovat Konečný Musí skončit po konečném počtu kroků Resultativní Vede k výsledku Hromadný (obecný) Můžeme použít k řešení celé skupiny podobných úloh Efektivní Vede k řešení v optimálním čase - rychlost

18 Metody řešení algoritmů
Shora dolů Postup řešení rozkládáme na jednodušší operace, až dospějeme k elementárním krokům Příkladem je kvadratická rovnice Vypočti diskriminant Podle něj rozhodneme, zda-li máme Jedno řešení Dvě řešení Dvě komplexní řešení Zdola nahoru Skupiny elementárních operací chápeme jako nové elementární kroky Postupně z elementárních kroků vytváříme prostředky, které nakonec umožní zvládnout požadovaný problém

19 Časová a paměťová náročnost
Samotné vyřešení úlohy ještě neznamená spokojenost Často se dá úloha řešit jednodušeji (efektivněji) Musíme použít optimalizaci? Náročnost pro počítač Při komplikovanější úloze můžeme dlouho čekat na výsledek (procesor má příliš mnoho instrukcí) Časová náročnost tedy zjednodušeně může být úměrná počtu elementů, které umístíme do algoritmu Potom co nemůžeme ovlivnit: počet vstupních dat (ale…) Příklad Výpočet absolutní hodnoty zabere 3takty procesoru sin(x) nám zabere 291taktů Není to moc, ale pokud budeme kombinovat mnoho funkcí…

20 Druhy algoritmů Rekurzivní algoritmy Hladové algoritmy
které využívají (volají) samy sebe výpočet faktoriálu Hladové algoritmy k řešení se propracovávají po jednotlivých rozhodnutích, která jakmile jsou jednou učiněna, už nejsou dále revidována Rozděl a panuj algoritmy dělí problém na menší podproblémy (shora-dolů), na něž se rekurzivně aplikují (až po triviální podproblémy, které lze vyřešit přímo), posléze se dílčí řešení vhodným způsobem sloučí Algoritmy dynamického programování postupně se řeší části problému od nejjednodušších po složitější s tím, že využívají výsledky již vyřešených jednodušších podproblémů

21 Druhy algoritmů Pravděpodobnostní algoritmy (probabilistické)
provádějí některá rozhodnutí náhodně či pseudonáhodně Paralelní algoritmy Rozdělení výpočtů mezi více počítačů (jader procesorů) pro rychlejší výpočty Genetické algoritmy Pracují na základě napodobování biologických evolučních procesů, postupným „pěstováním“ nejlepších řešení pomocí mutací a křížení Heuristické algoritmy Za cíl si nekladou nalézt přesné řešení, ale pouze nějaké vhodné přiblížení (nedostatek času nebo neexistence exaktního řešení)

22 Zápis algoritmu Slovním popisem Vývojovými diagramy (grafický zápis)
Vychází se slovního popisu algoritmu v přirozeném jazyce. Zachycuje postupný rozklad algoritmu na jemnější kroky při návrhu metodou shora dolů. Vývojovými diagramy (grafický zápis) Jednotlivé kroky jsou vyjádřeny grafickými symboly dle typu operace Posloupnost vykonávání kroků je vyjádřena orientovanou hranou

23 Základní komponenty algoritmů
Začátek/konec Posloupnost (sekvence) příkazů kroky v daném pořadí AKCE Větvení (podmínky) výběr dalších prováděných kroků závisí na splnění/nesplnění nějaké podmínky Cyklus opakované provádění kroků s pevným počtem opakování s podmínkou (na konci/na počátku) - provádění kroků se opakuje, dokud je/není splněna podmínka

24 Základní symboly vývojového diagramu

25 Základní použití symbolů

26 Základní použití symbolů
ANO ANO NE NE

27 Základní použití symbolů
NE ANO

28 Cyklus s podmínkou s podmínkou na začátku s podmínkou na konci
tělo cyklu se provede minimálně jednou

29 Základní použití symbolů

30 Proměnná „úložiště“ informace (tedy vyhrazené místo v paměti). Proměnná nebo (v beztypových jazycích) její hodnota má typ. Mezi nejčastější typy patří: číslo celé číslo "reálné" číslo - číslo s pohyblivou řádovou čárkou znak řetězec (znaků) pole (pole polí je matice) struktura nebo objekt ukazatel - obvykle může ukazovat na kterýkoliv z ostatních typů nebo na funkci

31 Algoritmus pro výpočet obvodu kruhu
zápis strukturovaným přirozeným jazykem Krok 1. - Tiskni: Zadej poloměr Krok 2. - Čti: r Krok 3. - o = 2*3.14*r Krok 4. - Tiskni: Obvod je o Krok 5. - Konec

32 Algoritmus pro výpočet obvodu kruhu
zápis vývojovým diagramem

33 Odolnost vůči špatným vstupům (aneb blbovzdornost)
není možné se spoléhat, že na vstupu se načtou údaje, se kterými má smysl dále pracovat v algoritmu pro výpočet obvodu kruhu – co když uživatel zadá záporné číslo? Výsledek by byl nesmyslný!

34 Algoritmus pro výpočet obvodu kruhu
zápis strukturovaným přirozeným jazykem Krok 1. - Tiskni: Zadej poloměr Krok 2. - Čti: r Krok 3. - Jestliže je r < 0, pak Krok 7. Krok 4. - o = 2*3.14*r Krok 5. - Tiskni: Obvod je o Krok 6. - Konec Krok 7. - Tisk: Chyba: Poloměr je záporný Krok 8. - Konec

35 Algoritmus pro výpočet obvodu kruhu

36 Jak bude vypadat algoritmus zapsaný v jazyce C?
printf("Zadej poloměr: "); scanf("%f",&r); if (r<0) printf("Chyba: Poloměr je záporný"); else { o = 2*3.14*r; printf("Obvod je %f",o); }

37 Název proměnné v názvu „nesmí“ být mezery (použijte raději podtržítko)
nedoporučují se znaky s diakritikou název proměnné by měl mít vypovídací hodnotu, k čemu proměnná slouží u víceslovného názvu proměnné první písmeno každého dalšího slova velké (různé zvyklosti u různých jazyků) objemKruhu některé programovací jazyky nerozlišují velikost písma promA, Proma, PROMa apod.

38 Vysvětlení významu Ze vstupu (např. z klávesnice) se načte hodnota do proměnné pojmenované A. Do proměnné B se uloží výsledek součinu hodnoty proměnné A a čísla 2. Do proměnné C se uloží číslo 5. Pokud je hodnota v proměnné B číslo 10, podmínka platí a na výstup se vypíše: "Zadal jste číslo 5" Do proměnné C se uloží číslo 5+10.

39 Aritmetické výrazy + sčítání - odčítání * násobení / dělení %
binární operátory + sčítání - odčítání * násobení / dělení % mod dělení modulo – zbytek po celočíselném dělení 5 % 3 = 2 3 % 5 = 3

40 Relační operátory = == rovná se > je větší < je menší >=
je větší nebo rovno <= je menší nebo rovno <> != nerovná se

41 Algoritmus výměny hodnot dvou proměnných

42 Algoritmus výměny hodnot dvou proměnných

43 Algoritmus výměny hodnot dvou proměnných – bez pomocné proměnné

44 NA POŘADÍ ZÁLEŽÍ!!!!!

45 Algoritmus pro vyhodnocení, zda zadané číslo je sude nebo liché

46 Cyklus s pevným počtem opakováni
tělo cyklu se provede 3krát proměnná i bude nabývat postupně hodnot: 1, 2, 3

47 Cyklus s pevným počtem opakováni
tělo cyklu se provede 7krát proměnná i bude nabývat postupně hodnot: 1, 0, -1, -2, -3, -4, -5

48 Cyklus s pevným počtem opakováni

49 Algoritmus, který ověří, že ze zadaných 3 délek stran lze sestrojit trojúhelník.
Nekontroluje se nezápornost vložených čísel!!!

50 Booleova algebra I. logický součet OR, logický součin AND, negace NOT

51 Booleova algebra II. při vyhodnocování složené podmínky má přednost logický součin (AND), pořadí vyhodnocování lze ovlivnit pomocí závorek Vyhodnoťte následující 2 podmínky: P1: (a>1) AND (b>1) OR (c>1) P2: (a>1) AND ((b>1) OR (c>1)) a b c P1 P2 4 2 1 5

52 Booleova algebra III. Vyhodnoťte následující 2 podmínky:
P1: (a>1) AND (b>1) OR (c>1) P2: (a>1) AND ((b>1) OR (c>1))

53 Booleova algebra IV. – mnemotechnická pomůcka
PRAVDA => 1, NEPRAVDA => 0, AND => *, OR => + př.: pravda AND nepravda OR pravda AND pravda = 1 * * = 1, tedy výsledek je větší než 0 => výsledek podmínky je PRAVDA

54 Algoritmus, který ověří, že ze zadaných 3 délek stran lze sestrojit trojúhelník.
je si však třeba uvědomit, že se vždy vyhodnotí všechny 3 podmínky, což nemusí být časově zanedbatelné.....

55 Algoritmus ze vstupu načte 3 čísla a určí, které číslo je největší, a to vypíše.
pozn. pokud jsou zadána 3 stejná čísla, číslo se vypíše

56

57 Násobení dvou celých čísel (A
Násobení dvou celých čísel (A*B) bez operace násobení – procesor neumí násobit A*B = A+A+………+A=0+A+A+………+A Bé-krát se přičte A

58 Nutno myslet „strojově“
stroj neumí provést celou operaci A+A+………+A najednou je nutné postupně přičítat hodnotu proměnné A číslo cyklu 1 2 3 4 5 6 7 ….. B 0+A +A ..…

59 Násobení dvou celých čísel (A
Násobení dvou celých čísel (A*B) bez operace násobení – procesor neumí násobit

60 Násobení dvou celých čísel (A*B) bez operace násobení
chyba: co když bude B=0? Cyklus se provede dvakrát (i=1, i=0) => V=0+A+A chyba: nefunguje pro B<0

61 Násobení dvou celých čísel (A*B) bez operace násobení, B>0
efektivnější algoritmus o 1 opakování chyba: co když bude B=1? Cyklus se provede dvakrát (i=1, i=0) => V=A+A+A

62 Násobení dvou celých čísel (A*B) bez operace násobení, B>1
efektivnější algoritmus o 1 opakování optimálnější by však bylo počítat 5*3, než 3*5 = úspora 2 opakování těla cyklu

63 Násobení dvou celých čísel (A*B) bez operace násobení, B>1, A>1
optimálnější by však bylo počítat 5*3, než 3*5 = úspora 2 opakování těla cyklu vyplatilo by se při 2*3?

64 Násobení dvou celých čísel (A
Násobení dvou celých čísel (A*B) bez operace násobení, (pro libovolné A, B)

65 Vytvořte algoritmus, který vypíše ciferný součet zadaného celého čísla
např. pro číslo 5426 bude výsledek 17 ( ) můžete použít pouze základní aritmetické operace +, -, *, /, % a funkci abs() pro výpočet absolutní hodnoty

66

67 Vytvořte algoritmus, který vypočítá n-tou mocninu čísla X (Xn)
můžete použít pouze základní aritmetické operace +, -, *, /, % a funkci abs() pro výpočet absolutní hodnoty Xn = X*X*X*…..*X (n-krát násobení X pro n>0) Xn = 1 𝑋∗𝑋∗𝑋∗…….∗𝑋 (pro n<0) Xn = 1(pro n=0)

68

69 Vytvořte algoritmus, který bude počítat faktoriál ze zadaného celého čísla R >= 0
R!=R*(R-1)! R!=R*(R-1)*….*2*1 R!=1*2*….*(R-1)*R 0!=1

70 Mohl by cyklus hned začít s i=2? (tzn. i=2..R)

71 Algoritmus zapsaný pomocí cyklu s podmínkou na začátku

72 Vykreslete obdélník pomocí. , výšku a šířku načtěte ze vstupu
Vykreslete obdélník pomocí *, výšku a šířku načtěte ze vstupu. (V>0, S>0) příklad pro 4*14: ************** pro tisk znaků můžete použít funkci CHAR, které dejte do parametru číslo znaku z ASCII tabulky: CHAR(42) je znak *, CHAR(13) CHAR(10) je konec řádku

73 vnitřní (vnořený) cyklus
tělo vnějšího cyklu

74 Vylepšete algoritmus, aby se vykresloval jen obrys obdélníku
Vylepšete algoritmus, aby se vykresloval jen obrys obdélníku. (zjednoduš.V>2,S>2) příklad pro 4*14: ************** * * CHAR(32) je znak mezery

75

76 Násobení tří celých čísel (A. B
Násobení tří celých čísel (A*B*C) bez násobení – A>0, B>0, C>0 A*B*C = A*B+A*B+A*B+.....A*B (počet A*B je C) =A+A+A+....A + A+A+A+....A A+A+A+....A

77 Násobení tří celých čísel (A. B
Násobení tří celých čísel (A*B*C) bez násobení – A>0, B>0, C>0 zkouška pro 5*3*2=30

78 Vytvořte algoritmus, kterým ověříte, že zadané přirozené číslo (>1) je prvočíslo.
prvočíslo – beze zbytku dělitelné pouze číslem 1 a sebou samým 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, …….

79

80 Vytvořte algoritmus, který vypíše všechna prvočísla až do zadaného čísla

81

82 Pole (vektor) Označuje datovou strukturu, která uchovává konečný počet prvků (čísel, textových řetězců, … ) stejného datového typu. K jednotlivým prvkům pole se přistupuje pomocí jejich indexu (celého čísla, označujícího pořadí prvku). 1 5 6 10 3 2 7 8 a i= 1 2 3 4 5 6 7 8

83 Pole / pokračování i= 1 2 3 4 5 6 7 8 1 5 6 10 3 2 7 8 a[2] = 5
a[i] Pokud chceme projít celé pole musíme: projít postupně všechny prvky pomocí indexu i, který postupně nabývá hodnot i=1..m (kde m značí velikost pole)

84 vytvoří se pole a a hodnoty jeho prvků se načtou ze vstupu, rozměr pole (počet prvků pole) je m
na výstup se vypíše hodnota druhého prvku pole; CHYBA, pokud má pole pouze 1 prvek pokud první prvek (a[1]) má hodnotu >3, na výstup se vypíše počet prvků pole vytvoří se pole p, rozměr pole je 5 prvků - hodnoty prvků pole nejsou definovány prvek s indexem 1 pole p se nastaví na hodnotu 25

85 Načtení pole budeme používat zjednodušení
v praxi však nutno načítat hodnoty prvků jednotlivě budeme používat zjednodušení

86 Algoritmus, který načte pole ze vstupu a poté vytiskne postupně hodnoty všech prvků pole.

87 Vytvořte algoritmus, který načte pole ze vstupu a sečte hodnoty všech prvků v poli

88 Vytvořte algoritmus, který načte pole ze vstupu a sečte všechny hodnoty prvků v poli větší než 3

89 Vytvořte algoritmus, který načte pole ze vstupu a vymění hodnoty prvků tímto způsobem:
a[1] <=> a[8] a[2] <=> a[7] a[3] <=> a[6] a[4] <=> a[5] první s posledním druhý s předposledním atd. 1 5 6 10 3 2 7 8 8 7 2 3 10 6 5 1

90 Algoritmus funkční pro sudý počet prvků

91 Plně funkční algoritmus

92 Plně funkční algoritmus

93 Vytvořte algoritmus, který načte pole čísel, vytvoří nové pole a zkopíruje do něj hodnoty prvků načteného pole zvětšené o číslo indexu prvku. 1 5 6 10 3 2 7 8 a i= 1 2 3 4 5 6 7 8 2 7 9 14 8 16 b

94

95 algoritmy řazení čísel

96 Bubble sort – řazení zaměňováním
Vzestupné řazení: porovnává hodnoty dvou sousedních prvků, a pokud je nižší číslo napravo od vyššího, tak je prohodí a se stejnou logikou se pokračuje na dalším indexu. Pokud jsou čísla ve správném pořadí, tak je neprohodí – pouze postoupí na další index. prochází se pole a porovnávají se dva sousední prvky (index j a j+1). Pokud platí, že prvek s indexem j > prvek s indexem j+1, pak oba prvky zaměníme. na konci prvního provedení postupu se tímto způsobem na konec pole vždy dostane to největší číslo. po n-1 opakováních algoritmu je pole seřazeno (n je počet prvků v poli)

97 Vzestupné setřídění čísel pomocí Bubble sort I.
1 2 3 4 5 6 7 5 8 4 9 7 2 1 5 4 8 9 7 2 1 5 4 8 7 9 2 1 5 4 8 7 2 9 1 5 4 8 7 2 1 9

98 Vytvořte algoritmus na postup, kterým se jednou projde pole, porovnávají se hodnoty sousedních prvků a pokud prvek s menším indexem má větší hodnotu než prvek s větším indexem, hodnoty obou prvků se vymění.

99

100 Vzestupné setřídění čísel pomocí Bubble sort II.
na začátku: 5 8 4 9 7 2 1 po prvním zopakování postupu: 5 4 8 7 2 1 9 po druhém zopakování postupu: 4 5 7 2 1 8 9 po šestém zopakování postupu: 1 2 4 5 7 8 9

101

102 Efektivnější algoritmus Bubble sort
všimněte si 5 8 4 9 7 2 1 1. 5 4 8 7 2 1 9 2. 4 5 7 2 1 8 9 3. 4 5 2 1 7 8 9 4. 4 2 1 5 7 8 9 5. 2 1 4 5 7 8 9 6. 1 2 4 5 7 8 9

103 Bubble sort Algoritmus (pro vzestupné seřazení):
1. prochází se pole a porovnávají se dva sousední prvky (index j a j+1). Pokud platí, že prvek s indexem j > prvek s indexem j+1, pak oba prvky zaměníme. 2. krok 1 se opakuje pro pole délky n, n-1, ....,2

104

105 Efektivnější algoritmus Bubble sort
při prvním a každém dalším provádění postupu se kontroluje, zda se vůbec vyměnily hodnoty dvou prvků pokud ano – postup se znovu zopakuje pokud ne – čísla jsou již seřazena, není třeba postup opakovat 1 2 3 4 5 6 7 1 3 4 6 7 9 12

106

107 Select sort - řazení výběrem maximálního prvku
Vzestupné řazení: 1. nalezení prvku s maximální hodnotou 2. záměna maximálního prvku s posledním prvkem pole (pro vzestupné řazení) Algoritmus spočívá v aplikování základních kroků postupně na pole délky n, n-1, n-2,....,2; tato pole vzniknou z původního pole zkráceného o maximální prvky (postupně o 1, 2, 3,……. n-2 prvků)

108 1 2 3 4 5 6 7 5 8 4 9 7 2 1 5 8 4 1 7 2 9 5 2 4 1 7 8 9 5 2 4 1 7 8 9 1 2 4 5 7 8 9 1 2 4 5 7 8 9

109 Vytvořte algoritmus na postup, kterým se projde pole načtených hodnot a nalezne se index prvku s maximální hodnotou v celém poli.

110

111 Select Sort cyklus délka prohledávaného pole změněné pole prvků 1 6
základní pole prvků: 10, 5, 9, 3, 1, 4 cyklus délka prohledávaného pole změněné pole prvků 1 6 4, 5, 9, 3, 1, 10 2 5 4, 5, 1, 3, 9, 10 3 4 4, 3, 1, 5, 9, 10 1, 3, 4, 5, 9, 10

112

113 algoritmy vyhledávání čísel

114 Sekvenční vyhledávání
Algoritmus spočívá v procházení prvků pole a v jejich porovnávání s hledanou hodnotou, dokud se prvek nenajde, nebo dokud se nedojde na konec pole.

115

116 Vyhledávání binárním půlením
Algoritmus je aplikovatelný pouze na neklesající posloupnost prvků (pole), případně po modifikaci na nerostoucí posloupnost prvků. Rekurzivně se opakuje porovnání hledaného prvku X s prvkem uprostřed pole a[i] (i=n/2 nebo i=(n+1)/2). Pokud se hodnota obou prvků shoduje pak je prvek nalezen. Pokud X<a[i], algoritmus se aplikuje na polovinu menších prvků, jinak na polovinu větších prvků.

117 Hledá se číslo 3 1 2 3 4 5 6 7 1 2 3 4 5 9 10 1 2 3 4 5 9 10 1 2 3 4 5 9 10

118 Hledané číslo nenalezeno.
Hledá se číslo 40 1 2 3 4 5 6 7 8 9 10 11 12 1 5 7 13 14 22 23 24 35 49 55 99 1 5 7 13 14 22 23 24 35 49 55 99 1 5 7 13 14 22 23 24 35 49 55 99 Hledané číslo nenalezeno.

119 Vyhledávání – binárním půlením (příklad)
základní pole prvků: 1, 2, 3, 4, 5, 9, 10 hledaný prvek: 3 cyklus prohledávané pole 1 1, 2, 3, 4, 5, 9, 10 2 1, 2, 3 3

120

121 Matice =dvojrozměrné pole, prvky matice se nacházejí v řádcích a sloupcích a[1][1] a[i][k] i – řádek k – sloupec a[3][2] a[3][4] číslování řádků a sloupců od 1 a[5][1] a[5][4]

122 vytvoří se matice a a hodnoty jejích prvků se načtou ze vstupu, rozměr matice je m řádků a n sloupců
na výstup se vypíše hodnota prvku ve 2. řádku a 3. sloupci matice; CHYBA, pokud matice má 1 řádek nebo 2 sloupce pokud hodnota prvku a[1][2] >3, na výstup se vypíše počet prvků v matici

123 vytvoří se matice a a hodnoty jejích prvků se načtou ze vstupu, rozměr matice je m řádků a n sloupců
vytvoří se matice b, rozměr matice je 1 řádek a 3 sloupce – hodnoty prvků matice nejsou definovány vytvoří se matice c, rozměr matice je m řádků a n sloupců - hodnoty prvků matice nejsou definovány vytvoří se pole p, rozměr pole je 5 prvků - hodnoty prvků pole nejsou definovány

124 Načtení matice budeme používat zjednodušení
v praxi však nutno načítat hodnoty prvků jednotlivě budeme používat zjednodušení

125 Algoritmus, který načte matici ze vstupu a poté vytiskne postupně hodnoty všech prvků matice po řádcích.

126 Algoritmus, který načte matici ze vstupu a poté vytiskne postupně hodnoty všech prvků matice po sloupcích.

127 Algoritmus načte matici ze vstupu a vypíše součet všech prvků v matici.
součet se provádí po řádcích

128 Algoritmus načte matici ze vstupu a vypíše součet všech prvků v matici.
součet se provádí po sloupcích

129 Algoritmus, který načte čtvercovou matici a vymění prvky na hlavní a vedlejší diagonále po řádcích.

130 Algoritmus, který vymění prvky na hlavní a vedlejší diagonále čtvercové matice po řádcích.

131 Algoritmus, který vymění prvky na hlavní a vedlejší diagonále čtvercové matice po řádcích.

132 Algoritmus, který vymění prvky na hlavní a vedlejší diagonále čtvercové matice po řádcích.

133 Algoritmus, který načte matici A, vytvoří novou matici B stejných rozměrů a vloží do ní hodnoty prvků z načtené matice A, ale k hodnotám prvků v prvním sloupci se přičte číslo řádku, ve kterém se nacházejí. matice A matice B =5+1 =4+2 =5+3 =7+4 =5+5

134

135

136 Algoritmus, který načte matici a vrátí součet hodnot prvků na hlavní diagonále.

137 Algoritmus, který načte matici a vrátí součin hodnot prvků na hlavní diagonále.
jak se změní předchozí algoritmus?

138 Vytvořte algoritmus, který načte pole čísel, vypíše největší z nich a index prvku, ve kterém se nachází

139 pokud by byla jistota, že pole je minimálně dvouprvkové, cyklus by mohl být „i=2..m“

140 Vytvořte algoritmus, který načte matici a vytvoří novou matici, transponovanou z načtené

141

142 Pomocí vývojového diagramu zapište algoritmus na sečtení všech prvků v matici, které jsou zároveň v lichých sloupcích a lichých řádcích. Tyto prvky navíc nastavte na hodnotu 0 (nula).

143

144

145 Vytvořte obecný algoritmus, který načte dvě matice stejného rozměru a do třetí vytvořené matice vloží jejich součet. konkrétní příklad 6 4 1 7 5 4 2 5 1 6 8 3 12 1 + =

146

147 Vytvořte obecný algoritmus, který načte dvě matice a do třetí vytvořené matice vloží jejich součin.
konkrétní příklad 6 4 1 7 5 8 44 10 14 39 20 5 4 1 2 5 * = c[1][1]=a [1][1]*b [1][1]+a [1][2]*b [2][1] c[1][2]=a [1][1]*b [1][2]+a [1][2]*b [2][2] c[1][3]=a [1][1]*b [1][3]+a [1][2]*b [2][3] c[2][1]=a [2][1]*b [1][1]+a [2][2]*b [2][1] c[2][2]=a [2][1]*b [1][1]+a [2][2]*b [2][2] c[2][3]=a [2][1]*b [1][1]+a [2][2]*b [2][3] …. c[3][3]=a [3][1]*b [1][3]+a [3][2]*b [2][1]

148

149 Čtení algoritmu Máte k dispozici vývojový diagram algoritmu. Když se na vstupu načte níže uvedené pole, jaké hodnoty bude mít načtené pole na konci algoritmu a jakých hodnot budou postupně nabývat uvedené proměnné (i, j, P) v označeném místě algoritmu?

150

151 1 2 5 3 -1 1 5

152 Máte k dispozici vývojový diagram algoritmu
Máte k dispozici vývojový diagram algoritmu. Jaký bude výsledek algoritmu (výstup), když se na vstupu načte níže uvedená matice, jaké hodnoty bude mít načtená matice na konci algoritmu a jakých hodnot budou postupně nabývat uvedené proměnné (i, k, V) v označeném místě algoritmu?

153

154 1 2 6 3 8 13 18 19 17 výpis algoritmu: Součet je 19


Stáhnout ppt "Data v číslicových počítačích I."

Podobné prezentace


Reklamy Google