Programování I. Martin Pergel, perm@kam.mff.cuni.cz



Podobné dokumenty
Programování I. Martin Pergel, 10. října Martin Pergel, Programování I

Úvod do programování

Základy elementární teorie čísel

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2

Základy elementární teorie čísel

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

NMIN101 Programování 1 2/2 Z --- NMIN102 Programování /2 Z, Zk

Algoritmizace. Cíle předmětu

Prvočísla a čísla složená

NMIN101 Programování 1 2/2 Z --- NMIN102 Programování /2 Z, Zk

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

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

Největší společný dělitel

Testování prvočíselnosti

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

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

PB029 Elektronická příprava dokumentů

Principy indukce a rekursivní algoritmy

2. lekce Algoritmus, cyklus Miroslav Jílek

Programování: základní konstrukce, příklady, aplikace. IB111 Programování a algoritmizace

3 Co je algoritmus? Trocha historie Definice algoritmu Vlastnosti algoritmu... 3

Algoritmy a datové struktury

NPRG030 Programování I 3/2 Z --- NPRG031 Programování II --- 2/2 Z, Zk

Název předmětu: Školní rok: Forma studia: Studijní obory: Ročník: Semestr: Typ předmětu: Rozsah a zakončení předmětu:

Lekce 01 Úvod do algoritmizace

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

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

Program a životní cyklus programu

Základy algoritmizace a programování

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

MATEMATIKA 6. ROČNÍK. Sada pracovních listů CZ.1.07/1.1.16/

DSA, První krok: máme dokázat, že pro left = right vrátí volání f(array, elem, left, right)

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

Matematika. Vlastnosti početních operací s přirozenými čísly. Sčítání a odčítání dvojciferných čísel do 1 000, zpaměti i písemně.

Sada 1 - Základy programování

Binární soubory (datové, typované)

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

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

Objektově orientované programování

Algoritmizace- úvod. Ing. Tomáš Otáhal

)(x 2 + 3x + 4),

ALGORITMIZACE A PROGRAMOVÁNÍ

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)

Kód trezoru 1 je liché číslo.

Překladač a jeho struktura

Identifikátory označují objekty v programu používané (proměnné, typy, podprogramy).

Polynomy nad Z p Konstrukce faktorových okruhů modulo polynom. Alena Gollová, TIK Počítání modulo polynom 1/30

BI-EP1 Efektivní programování 1

Školní kolo soutěže Mladý programátor 2015, kategorie A, B

Historie matematiky a informatiky Cvičení 1

Algoritmy. BI-PA1 Programování a Algoritmizace I. Ladislav Vagner

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

ŘÍDÍCÍ STRUKTURY - PODMÍNKY

Magické čtverce. Tomáš Roskovec. Úvod

Cvičení Programování I. Stručné poznámky ke cvičení ze

IB111 Úvod do programování skrze Python Přednáška 13

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

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

10 Důkazové postupy pro algoritmy

Algoritmizace a programování

Seminář z Informatiky a výpočetní techniky. Slovanské gymnázium Olomouc 4. září 2014 Tomáš Kühr

Algoritmizace a programování

Projekt podpořený Operačním programem Přeshraniční spolupráce Slovenská republika Česká republika

Datové struktury. alg12 1

Digitální učební materiál

Riemannova hypotéza Martin Havlík 2. A

Anotace. Dynamické programování, diskrétní simulace.

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Řídicí struktury. alg3 1

1.8.5 Dělení mnohočlenů

Dijkstrův algoritmus

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

(A) o 4,25 km (B) o 42,5 dm (C) o 42,5 m (D) o 425 m

Matematika IV 10. týden Kódování

Svobodná chebská škola, základní škola a gymnázium s.r.o. Dělitelnost Rozklad na součin prvočísel. Dušan Astaloš

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

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

Řetězové zlomky. již čtenář obeznámen. Důraz bude kladen na implementační stránku, protože ta je ve

Algoritmus. Cílem kapitoly je seznámit žáky se základy algoritmu, s jeho tvorbou a způsoby zápisu.

Diskrétní matematika 1. týden

Programovanie I. Úvod do programovania Mgr. Stanislav Horal, Katedra informatiky, FPV, UCM

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

Každé dítě bude mít 4 kuličky. Zkouška: (např. sečtením kuliček každého z dětí) = 20.

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

Úvod do informatiky. Miroslav Kolařík

Matematika IV - 3. přednáška Rozklady grup

Složitost Filip Hlásek

Volitelné semináře ve 3. ročníku

Hledání v textu algoritmem Boyer Moore

Obecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012

Poslední nenulová číslice faktoriálu

Základy algoritmizace a programování

ZŠ ÚnO, Bratří Čapků 1332

Implementace LL(1) překladů

Rekurze. Pavel Töpfer, 2017 Programování 1-8 1

Standardní algoritmy vyhledávací.

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr

Programovani v Maplu Procedura

Micro:bit lekce 3. - Konstrukci If Then a If Then Else najdete v kategorii Logic - Podmínky od If (např. porovnání < >= atd.) najdete taktéž v Logic

Transkript:

30. září 2009

Informace o přednášce, cvičeních a Praktiku z programování Kurz je zakončen zápočtem, zkouška bude v létě.

Informace o přednášce, cvičeních a Praktiku z programování Kurz je zakončen zápočtem, zkouška bude v létě. Podmínky zápočtu:

Informace o přednášce, cvičeních a Praktiku z programování Kurz je zakončen zápočtem, zkouška bude v létě. Podmínky zápočtu: Zápočtový test (praktický povinně v Pascalu!),

Informace o přednášce, cvičeních a Praktiku z programování Kurz je zakončen zápočtem, zkouška bude v létě. Podmínky zápočtu: Zápočtový test (praktický povinně v Pascalu!), zápočtový program (domácí práce),

Informace o přednášce, cvičeních a Praktiku z programování Kurz je zakončen zápočtem, zkouška bude v létě. Podmínky zápočtu: Zápočtový test (praktický povinně v Pascalu!), zápočtový program (domácí práce), další dle požadavků cvičících.

Informace o přednášce, cvičeních a Praktiku z programování Kurz je zakončen zápočtem, zkouška bude v létě. Podmínky zápočtu: Zápočtový test (praktický povinně v Pascalu!), zápočtový program (domácí práce), další dle požadavků cvičících. Praktikum z programování:

Informace o přednášce, cvičeních a Praktiku z programování Kurz je zakončen zápočtem, zkouška bude v létě. Podmínky zápočtu: Zápočtový test (praktický povinně v Pascalu!), zápočtový program (domácí práce), další dle požadavků cvičících. Praktikum z programování: Volitelný předmět,

Informace o přednášce, cvičeních a Praktiku z programování Kurz je zakončen zápočtem, zkouška bude v létě. Podmínky zápočtu: Zápočtový test (praktický povinně v Pascalu!), zápočtový program (domácí práce), další dle požadavků cvičících. Praktikum z programování: Volitelný předmět, v rozvrhu letos maskováno jako druhé cvičení (zpravidla od 19:00 + Po 12:20 K11),

Informace o přednášce, cvičeních a Praktiku z programování Kurz je zakončen zápočtem, zkouška bude v létě. Podmínky zápočtu: Zápočtový test (praktický povinně v Pascalu!), zápočtový program (domácí práce), další dle požadavků cvičících. Praktikum z programování: Volitelný předmět, v rozvrhu letos maskováno jako druhé cvičení (zpravidla od 19:00 + Po 12:20 K11), začne v listopadu,

Informace o přednášce, cvičeních a Praktiku z programování Kurz je zakončen zápočtem, zkouška bude v létě. Podmínky zápočtu: Zápočtový test (praktický povinně v Pascalu!), zápočtový program (domácí práce), další dle požadavků cvičících. Praktikum z programování: Volitelný předmět, v rozvrhu letos maskováno jako druhé cvičení (zpravidla od 19:00 + Po 12:20 K11), začne v listopadu, během října cvičící vytipují zájemce.

Cíle předmětu: Ovládání prostředí Borland Pascal, Jednotlivé položky budou probírány paralelně!

Cíle předmětu: Ovládání prostředí Borland Pascal, jazyk Pascal, Jednotlivé položky budou probírány paralelně!

Cíle předmětu: Ovládání prostředí Borland Pascal, jazyk Pascal, algoritmy, Jednotlivé položky budou probírány paralelně!

Cíle předmětu: Ovládání prostředí Borland Pascal, jazyk Pascal, algoritmy, a teorie s nimi související. Jednotlivé položky budou probírány paralelně!

Proč Pascal: Mýtus: Pascal je zastaralý!

Proč Pascal: Mýtus: Pascal je zastaralý! Skutečnost: Pascal je osvědčený.

Proč Pascal: Mýtus: Pascal je zastaralý! Skutečnost: Pascal je osvědčený. Java, C#, Jazyk C... pěkné ale komplikované.

Proč Pascal: Mýtus: Pascal je zastaralý! Skutečnost: Pascal je osvědčený. Java, C#, Jazyk C... pěkné ale komplikované. Pascal: Nevýhoda: Věkovitost Výhoda: Jednoduchost.

Proč Pascal: Mýtus: Pascal je zastaralý! Skutečnost: Pascal je osvědčený. Java, C#, Jazyk C... pěkné ale komplikované. Pascal: Nevýhoda: Věkovitost Výhoda: Jednoduchost. My: Borland Pascal, Free Pascal, GNU Pascal, Delphi.

Organizační záležitosti Stroj CodEx (alias Code Examiner a účet na něm)

Organizační záležitosti Stroj CodEx (alias Code Examiner a účet na něm) Účty v příslušných počítačových učebnách (Karlín, Malá Strana)

Organizační záležitosti Stroj CodEx (alias Code Examiner a účet na něm) Účty v příslušných počítačových učebnách (Karlín, Malá Strana) Existují dvě paralelní přednášky, které jsou ekvivalentní, nikoliv totožné.

Organizační záležitosti Stroj CodEx (alias Code Examiner a účet na něm) Účty v příslušných počítačových učebnách (Karlín, Malá Strana) Existují dvě paralelní přednášky, které jsou ekvivalentní, nikoliv totožné. Pozor, programování je dovednost náročná na čas!

Organizační záležitosti Stroj CodEx (alias Code Examiner a účet na něm) Účty v příslušných počítačových učebnách (Karlín, Malá Strana) Existují dvě paralelní přednášky, které jsou ekvivalentní, nikoliv totožné. Pozor, programování je dovednost náročná na čas! Literatura: Pavel Töpfer: Algoritmy a programovací techniky, Pavel Satrapa: Pascal pro zelenáče, Niklaus Wirth: Algorithms + Data Structures = Programs (slovenský překlad Algoritmy a Štruktury údajov ) [poměrně věkovitější, zajímavější jsou v ní algoritmy než jazyk]

Organizační záležitosti Stroj CodEx (alias Code Examiner a účet na něm) Účty v příslušných počítačových učebnách (Karlín, Malá Strana) Existují dvě paralelní přednášky, které jsou ekvivalentní, nikoliv totožné. Pozor, programování je dovednost náročná na čas! Literatura: Pavel Töpfer: Algoritmy a programovací techniky, Pavel Satrapa: Pascal pro zelenáče, Niklaus Wirth: Algorithms + Data Structures = Programs (slovenský překlad Algoritmy a Štruktury údajov ) [poměrně věkovitější, zajímavější jsou v ní algoritmy než jazyk] Dotazy? [pokud ano, ptejte se ihned]

Algoritmy: Definition Algoritmy jsou přesně definované a záměrně vytvořené postupy. Algoritmus je postup, jak řešit určitý problém.

Algoritmy: Definition Algoritmy jsou přesně definované a záměrně vytvořené postupy. Algoritmus je postup, jak řešit určitý problém. Realizací algoritmu dojdeme od zadaných (vstupních) dat k požadovanému výsledku.

Algoritmy: Definition Algoritmy jsou přesně definované a záměrně vytvořené postupy. Algoritmus je postup, jak řešit určitý problém. Realizací algoritmu dojdeme od zadaných (vstupních) dat k požadovanému výsledku. Sestává z kroků zvaných příkazy (příklad - alg. sčítání čísel).

Algoritmy: Definition Algoritmy jsou přesně definované a záměrně vytvořené postupy. Algoritmus je postup, jak řešit určitý problém. Realizací algoritmu dojdeme od zadaných (vstupních) dat k požadovanému výsledku. Sestává z kroků zvaných příkazy (příklad - alg. sčítání čísel). Správný algoritmus musí být:

Algoritmy: Definition Algoritmy jsou přesně definované a záměrně vytvořené postupy. Algoritmus je postup, jak řešit určitý problém. Realizací algoritmu dojdeme od zadaných (vstupních) dat k požadovanému výsledku. Sestává z kroků zvaných příkazy (příklad - alg. sčítání čísel). Správný algoritmus musí být: konečný (pro každý vstup doběhne v konečném čase)

Algoritmy: Definition Algoritmy jsou přesně definované a záměrně vytvořené postupy. Algoritmus je postup, jak řešit určitý problém. Realizací algoritmu dojdeme od zadaných (vstupních) dat k požadovanému výsledku. Sestává z kroků zvaných příkazy (příklad - alg. sčítání čísel). Správný algoritmus musí být: konečný (pro každý vstup doběhne v konečném čase) a parciálně správný (pokud doběhne, odpoví správně).

Způsoby zápisu algoritmu Karel: krok krok vlevobok krok Jazyk C: while(i) { if(i%2) printf(1); else printf(0); i/=2; } Text: Načti hodnotu i. Dokud je i > 0: Je-li je i liché vypiš "1" jinak vypiš "0" Vývojové diagramy: Načti i Je i > 0? ne Konec ano Je i sudé? ne Vypiš 1 ano Vypiš 0 Od i odečti 1 i := i/2

Způsoby zápisu algoritmu Karel: krok krok vlevobok krok Jazyk C: while(i) { if(i%2) printf(1); else printf(0); i/=2; } Text: Načti hodnotu i. Dokud je i > 0: Je-li je i liché vypiš "1" jinak vypiš "0" Vyděl i dvojkou. Vývojové diagramy: Načti i Je i > 0? ne Konec ano Je i sudé? ne Vypiš 1 ano Vypiš 0 Od i odečti 1 i := i/2

Největší společný dělitel Možnosti hledání: Najít prvočíselné rozklady a porovnat,

Největší společný dělitel Možnosti hledání: Najít prvočíselné rozklady a porovnat, Eukleidův algoritmus.

Největší společný dělitel Možnosti hledání: Najít prvočíselné rozklady a porovnat, Eukleidův algoritmus. Pozorování: Jsou-li a b přirozená čísla dělitelná (rovněž přirozeným) číslem k, pak i a b je dělitelné k.

Eukleidův algoritmus: 1. varianta (s odčítáním) Načti a, b. 1: Pokud b > a, prohoď hodnoty a a b. Pokud b je nula, vypiš a a ukonči algoritmus. Od a odečti b. GOTO 1:

Eukleidův algoritmus: 1. varianta (s odčítáním) Načti a, b. read(a); read(b); 1: Pokud b > a, prohoď hodnoty a a b. Pokud b je nula, vypiš a if b=0 then write(a); a ukonči algoritmus. Od a odečti b. a:=a-b; GOTO 1:

Eukleidův algoritmus: 2. varianta (se zbytkem po dělení) Načti a, b. 1: Pokud b > a, prohoď a a b. Pokud b je nula, vypiš a a konec. Do a přiřaď zbytek po dělení hodnoty a hodnotou b. GOTO 1:

Magické čtverce lichého řádu Snadný algoritmus, leč důkaz správnosti je komplikovaný: 6 1 8 7 5 3 2 9 4 15 8 1 24 17 16 14 7 5 23 22 20 13 6 4 3 21 19 12 10 9 2 25 18 11

Magické čtverce lichého řádu Snadný algoritmus, leč důkaz správnosti je komplikovaný: 6 1 8 7 5 3 2 9 4 1 Začneme uprostřed horního řádku. 15 8 1 24 17 16 14 7 5 23 22 20 13 6 4 3 21 19 12 10 9 2 25 18 11 2 Postupujeme šikmo doleva nahoru a vyplňujeme čísla v rostoucím pořadí. 3 Najedeme-li na vyplněné políčko, vrátíme se zpět a postoupíme o políčko dolů.

Stabilní párování Ne zcela triviální algoritmus, snadno lze dokázat konečnost, lze ovšem dokázat mnohem silnější tvrzení.