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

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

Úvod do programování

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

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

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

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

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

Moravské gymnázium Brno s.r.o.

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

Lekce 01 Úvod do algoritmizace

Principy indukce a rekursivní algoritmy

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

Svobodná chebská škola, základní škola a gymnázium s.r.o. Dušan Astaloš. samostatná práce, případně skupinová práce. čísla soudělná a nesoudělná

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

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

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

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

Testování prvočíselnosti

Aritmetika s didaktikou I.

Dělitelnost přirozených čísel - opakování

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.

1.8.5 Dělení mnohočlenů

Program a životní cyklus programu

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

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

Sada 1 - Základy programování

BI-EP1 Efektivní programování 1

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

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

Základy algoritmizace a programování

Algoritmizace. Cíle předmětu

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ě.

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

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

Úvod do teorie dělitelnosti

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

pro každé i. Proto je takových čísel m právě N ai 1 +. k k p

Používejte jen ty konstrukty jazyka C/C++, které jsme doposud probírali (nepoužívejte STL apod.)

Historie matematiky a informatiky Cvičení 1

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

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

Diskrétní matematika 1. týden

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

Digitální učební materiál

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

Algoritmy a datové struktury

DIGITÁLNÍ UČEBNÍ MATERIÁL. Název školy SOUpotravinářské, Jílové u Prahy, Šenflukova 220. Název materiálu VY_32_INOVACE / Matematika / 03/01 / 17

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

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

Jak funguje asymetrické šifrování?

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

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

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

)(x 2 + 3x + 4),

ALGORITMIZACE A PROGRAMOVÁNÍ

2. lekce Algoritmus, cyklus Miroslav Jílek

Svobodná chebská škola, základní škola a gymnázium s.r.o. Dušan Astaloš. samostatná práce, případně skupinová práce. pochopení znaků vztahů mezi čísly

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

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

MATEMATIKA 5. TŘÍDA. C) Tabulky, grafy, diagramy 1 - Tabulky, doplnění řady čísel podle závislosti 2 - Grafy, jízní řády 3 - Magické čtverce

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

Algoritmizace řazení Bubble Sort

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

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

ŘÍDÍCÍ STRUKTURY - PODMÍNKY

Riemannova hypotéza Martin Havlík 2. A

DIGITÁLNÍ ARCHIV VZDĚLÁVACÍCH MATERIÁLŮ

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

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

Cykly a pole

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

1,2,3,6,9,18, 1,2,3,5,6,10,15,30.

Dělitelnost šesti

Aritmetika s didaktikou I.

vzdělávací oblast vyučovací předmět ročník zodpovídá MATEMATIKA A JEJÍ APLIKACE MATEMATIKA 4. BÁRTOVÁ, VOJTÍŠKOVÁ

Vektorový prostor. d) Ke každému prvku u V n existuje tzv. opačný prvek u, pro který platí, že u + u = o (vektor u nazýváme opačný vektor k vektoru u)

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

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:

Dělitelnost čísel, nejmenší společný násobek, největší společný dělitel

Časová složitost / Time complexity

Implementace LL(1) překladů

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

Překladač a jeho struktura

Školní kolo soutěže Baltík 2009, kategorie A a B

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

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

Datové struktury. alg12 1

Jan Březina. Technical University of Liberec. 30. dubna 2013

Vzdělávací oblast: Matematika a její aplikace Vzdělávací obor: Matematický kroužek pro nadané žáky ročník 9.

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

Operátory. Základy programování 1 Tomáš Kühr

O dělitelnosti čísel celých

Digitální učební materiál

1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1

Přijímací zkouška z informatiky Dz

7 = 3 = = Učivo Vysvětlení Př. + pozn. Zlomek = vyjádření části celku 3 část snědla jsem 3 kousky

4a) Racionální čísla a početní operace s nimi

Transkript:

Programování I Martin Pergel, perm@kam.mff.cuni.cz 10. října 2011

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 Borland Pascalu!), zápočtový program(domácí práce), další dle požadavků cvičících. Praktikum z programování: Volitelný předmět, (zpravidla od 19:00), začne v týdnu od 10. října(organizačně), pracovat se začne od 17. října, kdochcedocházet,alevtýdnuod10.říjnanemůžepřijít, pošle vyslance nebo se jinak spojí s cvičícím, cvičící Programování vám může zkusit poradit, ale může se mýlit!

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ý! Skutečnost: Pascal je osvědčený. Java,C#,JazykC... pěknéalekomplikované. Pascal: Nevýhoda: Věkovitost Výhoda: Jednoduchost. My: Borland Pascal(Free Pascal, GNU Pascal, Delphi).

Organizační záležitosti StrojCodEx(aliasCodeExamineraúčetnaně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. 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 hodnotui. 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, Eukleidův algoritmus. Pozorování: Jsou-li a b přirozená čísla dělitelná(rovněž přirozeným)číslemk,pakia bjedělitelnék.

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 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í Instance:NpánůaNdam.Každápostavamáseznam přijatelnosti (všech) příslušníků opačného pohlaví. Problém: Vytvořte N koedukovaných dvojic, aby vzniklé párování bylo stabilní. Párování je stabilní, pokud neexistuje dvojice I ι tak, že I κ a Kι,alekdybychomje přepojili naiιakκ,jaki,tak ιbysi polepšili. Ne zcela triviální algoritmus minule velmi vágně naznačený, konečnost lze dokázat snadno.

Rozklad na prvočinitele Nápady Naivní algoritmus: Hledej postupně prvočísla až do n a zkoušej jimi dělit. Méněnaivníalgoritmus:Hledejprvočíslaaždo n i (kden i jehodnota,kterouještězbýváfaktorizovat). Ještě méně naivní algoritmus: Zkoušej všechna čísla až do ni. Proč toto funguje?

K Eratosthenovu sítu Jak nagenerovat všechna prvočísla menší než n? Naivní algoritmus(generuj a testuj), Méně naivní algoritmus generuj a zkoušej dělit jen již nagenerovanými prvočísly. Eratosthenes:Nagenerujčísla2...n.Proiod2do npokud je i prvočíslo, proškrtej všechny jeho násobky.