1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1



Podobné dokumenty
Programovací jazyk Pascal

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

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

NPRG030 Programování I, 2010/11

Sada 1 - Základy programování

NPRG030 Programování I, 2016/17 1 / :58:13

Anotace. Soubory a práce s nimi, rekurze podruhé, struktury (datový typ record), Martin Pergel,

NPRG030 Programování I, 2018/19 1 / :25:37

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

Digitální učební materiál

Sada 1 - Základy programování

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

Úvod do programování

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

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

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

- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů.

Cvičení 9 - Monitory. monitor m; var proměnné... procedure p; begin... end; begin inicializace; end;

Sada 1 - Základy programování

Digitální učební materiál

Sada 1 - Základy programování

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

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

Činnost: 1) Vyhodnotí se výraz E. 2) Jeho hodnota se uloží do proměnné V.

NPRG030 Programování I, 2017/18 1 / :22:16

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

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

Algoritmy a datové struktury

WSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

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

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

Binární vyhledávací stromy pokročilé partie

Syntaktická analýza. Implementace LL(1) překladů. Šárka Vavrečková. Ústav informatiky, FPF SU Opava

Poslední nenulová číslice faktoriálu

Homer. prvky. délka. přední 0 zadní 4. Použití fronty BUS STOP. 3 Lisa. 2 Bart. 4 Maggie. 1 Marge. Grafické znázornění předchozí animace:

Implementace LL(1) překladů

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

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

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

NPRG030 Programování I, 2015/16 1 / :25:32

Algoritmizace. 1. Úvod. Algoritmus

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

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

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

Digitální učební materiál

Martin Hejtmánek hejtmmar

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

Algoritmizace a programování

6 Příkazy řízení toku

Programování. Psaní čistého kódu. Martin Urza

Poslední aktualizace: 14. října 2011

Projekt OP VK Inovace studijních oborů zajišťovaných katedrami PřF UHK. Registrační číslo: CZ.1.07/2.2.00/

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.

Digitální učební materiál

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

Už známe datové typy pro representaci celých čísel i typy pro representaci

Programování 2 (NMIN102) Soubory. RNDr. Michal Žemlička, Ph.D.

Algoritmizace a programování

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Algoritmizace a programování

Sada 1 - Základy programování

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

(Úlohy z MO kategorie P, 32. část)

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

dovolují dělení velkých úloh na menší = dekompozice

Základy algoritmizace a programování

1. D Y N A M I C K É DAT O V É STRUKTUR Y

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

Klasický podprogram, který nazýváme procedura. Jedná se v podstatě o příkaz. 1

Úvod do programování. Úvod do programování. ing. Miroslav Jílek 2009, SJOP Poděbrady

ALGORITMIZACE Příklady ze života, větvení, cykly

Programovací jazyk PASCAL Turbo

Programování. Debugging a testování. Martin Urza

Náznak ukázky syntaxe a sémantiky pro projekt. 1 Syntaktické prvky. Poslední aktualizace: 8.

int t1, t2, t3, t4, t5, t6, t7, prumer; t1=sys.readint();... t7=sys.readint(); prume pru r = r = ( 1+t 1+t t3+ t3+ t4 t5+ t5+ +t7 +t7 )/ ;

Sada 1 - Základy programování

Základy algoritmizace. Hašování

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

Náhradní text k cvičení 4.11.

Anotace. Ordinalni typy - typ char, funkce ord, chr, succ, prev, inc, dec,

Několik příkladů v Turbo Pascalu

19. a 20. přednáška z kryptografie

Program a životní cyklus programu

MAXScript výukový kurz

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

Úvod do informatiky. Miroslav Kolařík

Digitální učební materiál

Anotace. Jednotky (tvorba a využití), struktury (typ record),

Základy programovacího jazyka Turbo Pascal

Řídicí struktury. alg3 1

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

ŘÍDÍCÍ STRUKTURY - PODMÍNKY

NPRG030 Programování I, 2018/19 1 / :03:07

Algoritmizace a programování

Digitální učební materiál

Některé základní úlohy algoritmizace

Přednáška 3. Rekurze 1

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

Transkript:

1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1 1. Prvocisla: Kratky ukazkovy priklad na demonstraci baliku WEB. Nasledujici program slouzi pouze jako ukazka nekterych moznosti a sluzeb, ktere poskytuje programovaci nastroj WEB. Jak jiz vime, WEB je specialni nastroj pro tvorbu dobre dokumentovanych programu. Toto programovani nazyvame literarni programovani. Tento ukazkovy priklad mel za vzor Knuthuv priklad, ktery pomoci baliku WEB literarne naprogramoval program na vypsani prvnich 1000 prvocisel. Zatimco Knuth naprogramoval opravdu kvalitni program, ktery prevzal od Edsgera Dijkstra z jeho knihy Notes on Structured Programming, ja zde predkladam pouze jednoduche priklady na toto tema, ktere kazdy jiste sam a mozna, ze i lepe naprogramuje. Programy budu rozepisovat a strukturovat vice nez pri programovani funkcnich, ale ne ukazkovych programu. Muj ukazkovy priklad budou vlastne priklady dva: jeden na urceni, zda dane cislo je prvocislo a druhy vypise vsechna prvocisla mensi nez p. Budeme jim rikat podprogramy. Ukazkovy program na urcovani prvocisel 2 2. Jeden z podprogramu ma vstup a druhy ne. A cely program potrebuje na zacatku prace jednu vstupni hodnotu, podle ktere pozna, ktery z podprogramu ma pouzit pro vypocty. Musime si proto nadeklarovat konstanty a promenne. Ukazkovy program na urcovani prvocisel 2 program prvocisl ; const p = 30; var Promenne programu 4 ; begin Vetveni programu na dva podprogramy 3 ; end. This code is used in section 1.

2 VYBER JEDNOHO Z PODPROGRAMU 3 3. Vyber jednoho z podprogramu. Jedna z prvnich veci, ktera se musi udelat, je rozhodnout, kterou vetvi programu se budeme dale ubirat. Jak jiz jsem se zminil, sklada se priklad ze dvou podprogramu a zalezi na uzivateli, jaky program chce zrovna pouzivat. Vetveni programu na dva podprogramy 3 Vstupni hodnota pro urceni vyberu podprogramu 5 ; Vyber podprogramu podle vstupni hodnoty 6 This code is used in section 2. 4. Nadefinujeme si pomocnou promennou, ktera nam poslouzi pro nacteni vstupu a dale podle ni pozname, ktery z podprogramu se ma dale pouzit. Pomocna promenna vyber bude typu word. Promenne programu 4 vyber : word ; See also sections 8, 10, 14, and 18. This code is used in section 2. 5. Nebudeme nijak testovat vstupni hodnotu. Tzn. pri chybne vstupni hodnote se beh programu zastavi. Budeme predpokladat ze uzivatel vi, co chce a, nebude nijak zkouset dalsi vlastnosti programu. Vstupni hodnota pro urceni vyberu podprogramu 5 writeln ( Program na demonstraci prvocisel ); writeln ( Muzes si vybrat: zjisti zda zadane cislo je prvocislo...1 ); writeln ( vypis prvocisel mensich nez, p,...2 ); write ( Tva volba: ); readln (vyber ) This code is used in section 3. 6. Pomoci uzivatelem zadane vstupni hodnoty program pozna, kde bude dale pokracovat ve vypoctu. Vyber podprogramu podle vstupni hodnoty 6 case vyber of 1: Zjisti zda zadane cislo je prvocislo 7 2: Vypis prvocisel mensich nez 13 end This code is used in section 3.

7 URCI ZDA ZADANE CISLO JE CI NENI PRVOCISLO 3 7. Urci zda zadane cislo je ci neni prvocislo. Tento podprogram muzeme rozdelit na dve samostatne casti. V jedne zjistime cislo, ktere budeme dale zkoumat, a v druhe budeme provadet vlastni vypocet. Zjisti zda zadane cislo je prvocislo 7 begin Vstupni hodnota zkoumaneho cisla 9 ; Testovani zkoumaneho cisla 11 ; Vypis vysledku testu 12 ; end; This code is used in section 6. 8. V teto casti chceme nacist do pomocne promenne hodnotu testovaneho cisla, s kterou budeme dale pracovat. Po cislu budeme pozadovat, aby bylo cele a kladne. Zvolime ho typu integer. Promenne programu 4 + n: integer ; 9. Vstupni hodnotu cisla nebudeme nijak testovat, predpokladame, ze je cele a kladne. Vstupni hodnota zkoumaneho cisla 9 writeln ( Program urci zda zadane cislo je prvocislo ); write ( Zadej cele cislo vetsi nez 1: ); readln (n) This code is used in section 7. 10. Pri urcovani zda dane cislo je/neni prvocislo pouzijeme tuto myslenku: budeme postupovat od 2 k odmocnine z n a po otestovani cisla 2 testujeme pouze licha cisla. Musime si dodefinovat dalsi pomocne promenne. Dve ciselne a jednu logickou. Promenne programu 4 + delitel, odmocnina : integer ; jeprvocislo: boolean ; 11. Pro vypocet budeme pouzivat ciselne pomocne promenne delitel a odmocnina a logickou hodnotu jeprvocislo. delitel bude nabyvat lichych hodnot az do odmocnina. Budeme jim delit zadane cislo n a pomoci zbytku po celociselnem deleni pozname, jestli je n nasobkem delitel a nebo neni. Pokud se delitel rovna odmocnina a zbytek po celociselnem deleni je roven 0, pak zadane cislo je prvocislo, tzn. jeprvocislo je true. Testovani zkoumaneho cisla 11 if ((n = 2) (n = 3)) then jeprvocislo true else if odd (n) then begin odmocnina round (sqrt (n)); delitel 3; while (n mod delitel 0) (delitel < odmocnina ) do delitel delitel + 2; jeprvocislo n mod delitel 0; end else jeprvocislo false This code is used in section 7. 12. Nyni jiz staci jen vypsat vysledek. Vypis vysledku testu 12 writeln ; if jeprvocislo then writeln ( Zadane cislo n =, n, je prvocislo. ) else writeln ( Zadane cislo n =, n, neni prvocislo. ) This code is used in section 7.

4 VYPIS PRVOCISEL MENSICH NEZ P 13 13. Vypis prvocisel mensich nez p. Tento podprogram na rozdil od prvniho netestuje zda zadane cislo je nebo neni prvocislo, ale vypisuje prvocisla, ktera jsou mensi nez zadane p. Take se nyni nemusime zabyvat zadnymi vstupnimi udaji od uzivatele. Pouze mu predame vysledek. K vypoctu pouzijeme algoritmus, ktery se take nazyva Erastotenovo sito. Pouzivame zde dve pomocne ciselne mnoziny. Jedna na zacatku obsahuje vsechna cisla od 2 do p, oznacme ji sito a druha je prazdna, oznacme ji prvocisla. Da se rict, ze z mnoziny sito nam do mnoziny prvocisla propadavaji pres sito pouze prvocisla. A budeme presivat tak dlouho, dokud mnozinu sito nevyprazdnime, pak v mnozine prvocisla budou jen sama prvocisla mensi nez p. Vypis prvocisel mensich nez 13 begin Inicializace pomocnych mnozin 15 ; repeat Hledani dalsiho prvocisla 16 ; Eliminace nasobku prvocisla ze sita 17 ; until sito = [ ]; Vypis sita 19 ; end This code is used in section 6. 14. Musime si nadefinovat dve pomocne mnoziny kladnych celych cisel a pomocne ciselne promenne pro praci s cisly v mnozinach. Promenne programu 4 + sito, prvocisla : set of 2.. p; dalsiprvocislo, nasobekprvocisla : word ; 15. Dale si musime inicializovat obe pomocne ciselne mnoziny a jednu pomocnou ciselnou promennou. Inicializace pomocnych mnozin 15 prvocisla [ ]; sito [2.. p]; dalsiprvocislo 2 This code is used in section 13. 16. Z pomocne mnoziny sito budeme vybirat prvocisla a budeme je zapisovat do mnoziny prvocisla. Hledani dalsiho prvocisla 16 while (dalsiprvocislo sito) do dalsiprvocislo succ(dalsiprvocislo); prvocisla prvocisla + [dalsiprvocislo] This code is used in section 13. 17. Pak uz jen staci z mnoziny sito odebrat vsechny nasobky posledniho prvocisla. Eliminace nasobku prvocisla ze sita 17 nasobekprvocisla dalsiprvocislo; while nasobekprvocisla p do begin sito sito [nasobekprvocisla ]; nasobekprvocisla nasobekprvocisla + dalsiprvocislo; end This code is used in section 13. 18. Tento postup opakujeme dokud neodebereme z mnoziny sito posledni cislo a pak uz mame v mnozine prvocisla vysledek, ktery muzeme vypsat. K tomu pouzijeme novou pomocnou promennou i, ktera bude postupne nabyvat hodnot od 2 do p a pomoci ktere vypiseme prvocisla z mnoziny prvocisla. Promenne programu 4 + i: integer

19 VYPIS PRVOCISEL MENSICH NEZ P 5 19. Nyni budeme testovat jestli cislo i je v mnozine prvocisla. Jestli ano, pak je vypiseme, jestli ne testujeme i o jednicku vyssi. Jako prvni prvocislo vypiseme cislo 1, ktere sem samozrejme take patri, ale kvuli vypoctu jsme ho do pomocne mnoziny sito nezahrnuli, jiste kazdy vi proc. Vypis sita 19 writeln ( 1 ); for i 2 to p do if i prvocisla then writeln (i) This code is used in section 13.

6 INDEX 20 20. Index. Zde je rejstrik vsech pouzitych pojmu. boolean : 10. dalsiprvocislo: 14, 15, 16, 17. delitel : 10, 11. Dijkstra, Edsger: 1. Erastotenovo sito: 13. false : 11. integer : 8, 10, 18. jeprvocislo: 10, 11, 12. Knuth, Donald E: 1. nasobekprvocisla : 14, 17. odd : 11. odmocnina : 10, 11. prvocisl : 2. prvocisla : 13, 14, 15, 16, 18, 19. readln : 5, 9. round : 11. sito: 13, 14, 15, 16, 17, 18, 19. sqrt : 11. succ: 16. true : 11. vyber : 4, 5, 6. word : 4, 14. write : 5, 9. writeln : 5, 9, 12, 19.

20 NAMES OF THE SECTIONS 7 Eliminace nasobku prvocisla ze sita 17 Used in section 13. Hledani dalsiho prvocisla 16 Used in section 13. Inicializace pomocnych mnozin 15 Used in section 13. Promenne programu 4, 8, 10, 14, 18 Used in section 2. Testovani zkoumaneho cisla 11 Used in section 7. Ukazkovy program na urcovani prvocisel 2 Used in section 1. Vetveni programu na dva podprogramy 3 Used in section 2. Vstupni hodnota pro urceni vyberu podprogramu 5 Used in section 3. Vstupni hodnota zkoumaneho cisla 9 Used in section 7. Vyber podprogramu podle vstupni hodnoty 6 Used in section 3. Vypis prvocisel mensich nez 13 Used in section 6. Vypis sita 19 Used in section 13. Vypis vysledku testu 12 Used in section 7. Zjisti zda zadane cislo je prvocislo 7 Used in section 6.

Section Page Prvocisla: Kratky ukazkovy priklad na demonstraci baliku WEB............................. 1 1 Vyber jednoho z podprogramu.......................................................... 3 2 Urci zda zadane cislo je ci neni prvocislo................................................. 7 3 Vypis prvocisel mensich nez p.......................................................... 13 4 Index............................................................................... 20 6