Algoritmy a datové struktury



Podobné dokumenty
6 Příkazy řízení toku

Úvod do programování - Java. Cvičení č.4

Větvení a cykly. Úvod do programování 1 Tomáš Kühr

Řídicí struktury. alg3 1

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

Algoritmizace. 1. Úvod. Algoritmus

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

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Algoritmizace a programování

Základy algoritmizace a programování

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

Řídicí příkazy KAPITOLA 3. Vstup znaků z klávesnice

Implementace LL(1) překladů

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

2. lekce Algoritmus, cyklus Miroslav Jílek

Lekce 01 Úvod do algoritmizace

Funkce, podmíněný příkaz if-else, příkaz cyklu for

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

Řídící struktury, if, while, switch

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

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

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

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

Řídící struktury, if, while, switch

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

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

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

Vývojové diagramy - zápis algoritmu

1. Téma 03 - Rozhodování

Algoritmizace a programování

Algoritmizace a programování

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

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Základy algoritmizace a programování

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

Programování v C++ 1, 1. cvičení

1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1

PROGRAMOVÁNÍ V SHELLU

Algoritmus pro hledání nejkratší cesty orientovaným grafem

Úvod do programování. Lekce 3

Poslední nenulová číslice faktoriálu

Větvení programů příkaz IF

Vstupní požadavky, doporučení a metodické pokyny

Výukový materiál zpracován v rámci projektu EU peníze školám

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

NPRG030 Programování I RNDr.Tomáš Holan, Ph.D. 4.patro, č

Příkaz while. while (podmínka) { příkaz; } Příklad: int i=0; while (i < 10) { System.out.println(i); i++; } // vypíše čísla od 0 do 9

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

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

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19

Stručný návod k programu Octave

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Poslední aktualizace: 14. října 2011

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

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: Předmět: ZAP

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Podmíněný příkaz

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


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

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

Algoritmizace prostorových úloh

Příkazy if, while, do-while, for, switch

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

Programovani v Maplu Procedura

ŘÍDÍCÍ STRUKTURY - PODMÍNKY

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Středoškolská technika 2017 PROGRAM NA GENEROVÁNÍ PRVOČÍSEL

VISUAL BASIC. Přehled témat

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

Lekce 04 Řídící struktury

Hledání správné cesty

Pro kontrolu správného formátu hodnoty N použijeme metodu try-catch.

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01

PSK3-9. Základy skriptování. Hlavička

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Zdůvodněte, proč funkce n lg(n) roste alespoň stejně rychle nebo rychleji než než funkce lg(n!). Symbolem lg značíme logaritmus o základu 2.

Přerušovací systém s prioritním řetězem

Standardní algoritmy vyhledávací.

Sada 1 - Základy programování

LED_007.c Strana: 1/5 C:\Michal\AVR\Výukové programy\archiv\ Poslední změna: :01:48

Programování I. Martin Pergel,

Překladač a jeho struktura

IAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write("\nPrumerna teplota je {0}", tprumer);

BI-EP1 Efektivní programování 1

Algoritmizace prostorových úloh

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

Základní stavební prvky algoritmu

10 Algoritmizace Příklad 2 Word 2007/ VBA

Algoritmizace řazení Bubble Sort

KTE / ZPE Informační technologie

Úvod. Programovací paradigmata

Paralelní programování

Textové soubory. alg9 1

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

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

Sestavování kódované tabulky kontury (CONTPRON)

Pracovní listy - programování (algoritmy v jazyce Visual Basic) Algoritmus

Transkript:

Algoritmy a datové struktury 1 / 34

Obsah přednášky Základní řídící struktury posloupnost příkazů podmínka cyklus s podmínkou na začátku cyklus s podmínkou na konci cyklus s pevným počtem opakování Jednoduchá proměnná Struktury (třídy) Pole Matice 2 / 34

Posloupnost příkazů Nejjednodušší konstrukce Sled postupně prováděných příkazů, bez možnosti změny Příklad 1. Vezmi konvici 2. Napusť vodu 3. Dej vařit Ve většině jazyků se bloky nějak oddělují složené závorky klíčová slova Pro lepší orientaci se většinou odsazují o několik znaků 3 / 34

Posloupnost příkazů Java { } x=z; z=x; Horní zápis ve většině případů neudělá to co jsme si představovali { } pomoc =x; x=z; z= pomoc ; 4 / 34

Podmínka Umožňuje provádět některý z bloků příkazů v závislosti na splnění podmínky větvení programu Příklad 1. Vezmi konvici 2. Jestliže je prázdná, pak napusť vodu jinak si dej pauzu 3. Dej vařit Podmínka může být úplná či neúplná (chybí větev jinak) Ve většině jazyků se podmínka uvádí klíčovým slovem IF Větev jinak (ELSE) se vztahuje k nejbližšímu IF 5 / 34

Podmínka Java if(znamka >1) { System. out. println (" Prosel skvele "); } else if( znamka >2) { System. out. println (" Prosel jen taktak "); } else { System. out.. println (" Neprosel "); } 6 / 34

Přepínač Přepínač je podobný podmínce umožňuje vícenásobné větvení většinou dost omezený switch ( mesic ) { case 1 : System. out. println (" leden "); break ; case 2 : System. out. println (" unor "); break ;... case 12 : System. out. println (" prosinec "); break ; default : System. out. println (" asi mate spatny kalendar " } 7 / 34

Cyklus s podmínkou na začátku Dokud není splněna podmínka, umožňuje vykonávat činnost Příklad 1. Vezmi konvici 2. Dokud není voda pro tři lidi 2.1 přidej 1 hrneček vody 3. Dej vařit Pokud je podmínka splněna hned na začátku, příkazy v cyklu se neprovedou Ve většině jazyků se uvádí slovem WHILE 8 / 34

Cyklus s podmínkou na začátku Java pocitadlo = 3; while ( pocitadlo <3) { pocitadlo ++; } 9 / 34

Cyklus s podmínkou na konci Umožňuje vykonávat činnost, dokud není splněna podmínka Příklad 1. Vezmi konvici 2. Přidej 1 hrneček vody 3. Pokud není voda pro tři lidi, opakuj 2 4. Dej vařit Pokud je podmínka splněna hned na začátku, příkazy v cyklu se stejně provedou 10 / 34

Cyklus s podmínkou na konci Java pocitadlo = 3; do { pocitadlo ++; } while ( pocitadlo <3); 11 / 34

Cyklus s pevným počtem opakování Umožňuje vykonávat činnost, po předem daný počet opakování Příklad 1. Vezmi konvici 2. Pro počet hrnečků 1 až 3 2.1 Přidej hrneček vody 3. Dej vařit Ve většině jazyků se používá klíčové slovo FOR Cyklus nemusí proběhnout ani jednou 12 / 34

Cyklus s pevným počtem opakování Java V javě (a ostatních C příbuzných jazycích) trochu divoký zápis for ( int i =0; i <5; i ++) { System. out. println ("i je menší než 5"); } 13 / 34

Sudé číslo Zjistěte zda dané číslo A je sudé 14 / 34

Sudé číslo vstup : číslo A výstup : ANO pokud je sudé, jinak NE jestliže a modulo 2 = 0, pak vrať ANO jinak vrať NE 15 / 34

Dělitelné dvěma nebo třema Zjistěte zda dané číslo A je dělitelné dvěma nebo třema 16 / 34

Dělitelné dvěma nebo třema vstup : číslo A výstup : ANO pokud je dělitelné dvěma nebo třema, jinak NE jestliže A modulo 2 = 0, pak vrať ANO jinak jestliže A modulo 3 = 0, pak vrať ANO jinak vrať NE nebo vstup : číslo A výstup : ANO pokud je dělitelné dvěma nebo třema, jinak NE jestliže ( A modulo 2 = 0) nebo ( A modulo 3 = 0), pak vrať ANO jinak vrať NE 17 / 34

Dělitelné dvěma a třema Zjistěte zda dané číslo A je dělitelné dvěma a třema 18 / 34

Dělitelné dvěma a třema vstup : číslo A výstup : ANO pokud je dělitelné dvěma a třema, jinak NE jestliže A modulo 2 = 0, pak jestliže A modulo 3 = 0, pak vrať ANO jinak vrať NE jinak vrať NE nebo vstup : číslo A výstup : ANO pokud je dělitelné dvěma a třema, jinak NE jestliže ( A modulo 2 = 0) a ( A modulo 3 = 0), pak jinak vrať NE 19 / 34

Dělitelné něčím prvočíslo Zjistěte zda dané číslo A je prvočíslo Číslo je prvočíslo, pokud je dělitelné pouze samo sebou a jedničkou 20 / 34

Dělitelné něčím prvočíslo Zjistěte zda dané číslo A je prvočíslo Číslo je prvočíslo, pokud je dělitelné pouze samo sebou a jedničkou Musíme zjistit dělitelnost každým z čísel 2,3,4,... A-1 Cyklus s pevným počtem opakování Pokud je dělitelné jedním z nich, pak není prvočíslo 20 / 34

Dělitelné něčím prvočíslo vstup : číslo A výstup : ANO pokud je prvočíslo, jinak NE pro I od 2 do A -1 jestliže A modulo I = 0, pak vrať NE vrať ANO 21 / 34

Dělitelné něčím prvočíslo Nelze to vylepšit? 22 / 34

Dělitelné něčím prvočíslo Nelze to vylepšit? Stačí testovat jen do odmocniny, pokud je dělitelné nějakým vyšším, muselo být dělitelné i nižším 22 / 34

Struktury Data je lepší sdružovat do logických celků popisujících nějakou entitu např. vozidlo má kola Ke strukturám lze přidávat i funkčnost např. vozidlo se pohybuje V objektově orientovaném programování (např. Java) lze od obecných entit dědit entity specializované specializovaným případem vozidla je motorové vozidlo má navíc motor 23 / 34

Geometrický bod Navrhněte strukturu (třídu), která bude popisovat bod na čtverečkovaném papíře 24 / 34

Geometrický bod třída Bod řádek sloupec 25 / 34

Vzdálenost bodů Napište algoritmus, který vypočte vzdálenost dvou bodů 26 / 34

Geometrický bod vstup : bod A a B výstup : vzdálenost A a B řádky = B. řádek - A. řádek sloupce = B. sloupec - A. sloupec vrať odmocnina z ( řádky * řádky + sloupce * sloupce ) 27 / 34

Nejvzdálenější body Napište algoritmus, který načte 10 dvojic bodů a určí dvojici s největší vzdáleností 28 / 34

Nejvzdálenější body vstup : dvojice bodů výstup : body C a D s největší vzdáleností největší vzdálenost <- 0 pro i od 1 do 10 načti dvojici bodů A a B vypočítej vdálenost bodů A a B jesltiže je vzdálenost > největší vzdálenost, pak největší vzdálenost <- vzdálenost C <- A D <- B vrať C a D 29 / 34

Pole Pole je posloupnost dat stejného typu je uložena v souvislém bloku paměti k prvkům lze přistupovat pomocí indexu Díky přímému přístupu k prvkům je pole velmi rychlé jedna z nejzákladnějších struktur přístupné ve většině jazyků Nevýhodou je omezená velikost 30 / 34

Vkládání prvku do pole Napište algoritmus, který bude načítat čísla a ukládat je do pole velikosti 10. Pokud zaplní celé pole, začne nejstarší hodnoty přepisovat novými. Algoritmus se ukonči když uživatel zadá -1 31 / 34

Vkládání prvku do pole vstup : čísla z klávesnice, pole A velikosti n výstup : v poli posledních n načtených hodnot velikost <- n pozice <- 0 opakuj načti i A[ pozice ] <- i pozice <- pozice + 1 jestliže pozice = velikost, pak pozice <- 0 dokud i různé od -1 32 / 34

Najděte a překopírujte Najděte v poli A všechna sudá čísla a zkopírujte je do pole B 33 / 34

Najděte a překopírujte Najděte v poli A všechna sudá čísla a zkopírujte je do pole B Doma vyzkoušejte 33 / 34

Konec 34 / 34