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

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

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

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

NPRG030 Programování I, 2010/11

Programovací jazyk Pascal

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

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

Pseudonáhodná čísla = algoritmicky generovaná náhrada za náhodná čísla

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

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

2 Strukturované datové typy Pole Záznam Množina... 4

Sada 1 - Základy programování

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

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

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

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

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

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

Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově orientované programování.

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

Řízení toku programu Programátor musí být schopen nějak ovlivňovat běh programu a k tomu má několik možností:

Sada 1 - Základy programování

ALGORITMIZACE A PROGRAMOVÁNÍ

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

Programovací jazyk PASCAL Turbo

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

Algoritmizace prostorových úloh

VY_32_INOVACE_08_2_04_PR

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

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

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Sada 1 - Základy programování

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

Programování. Programování s řetězci. Martin Urza

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

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

PODPORA ELEKTRONICKÝCH FOREM VÝUKY

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

Základy programovacího jazyka Turbo Pascal

Úvod do programování

Ing. Igor Kopetschke TUL, NTI

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

Sada 1 - Základy programování

POČÍTAČE A PROGRAMOVÁNÍ

1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz

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

Jazyk C# a platforma.net

Sada 1 - Základy programování

Výčtový typ strana 67

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

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

Řídicí struktury. alg3 1

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

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

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

Algoritmizace prostorových úloh

Strukturované typy a ukazatele. Úvod do programování 1 Tomáš Kühr

Digitální učební materiál

O datových typech a jejich kontrole

Standardní algoritmy vyhledávací.

Elementární datové typy

Martin Hejtmánek hejtmmar

- jak udělat konstantu long int: L long velka = 78L;

Programovací jazyk C(++) C++ area->vm_mm->locked_vm -= len >> PAGE_SHIFT;

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:

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

Základy programování Proměnné Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události

Sada 1 - Základy programování

Sada 1 - Základy programování

Programování v jazyce JavaScript

= knihovna prostředků pro lepší práci s textovou obrazovkou, klávesnicí a generátorem zvuků

Jazyk VHDL konstanty, signály a proměnné. Jazyk VHDL paralelní a sekvenční doména. Kurz A0B38FPGA Aplikace hradlových polí

6 Příkazy řízení toku

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

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

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

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

VÝRAZY výrazy = operandy prokládané operátory, vyhodnocované podle priority operátorů

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

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

Programovani v Maplu Procedura

Poslední aktualizace: 14. října 2011

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody

Počítačová simulace logistických procesů I. 11. přednáška Programování v SimTalk. ŠAVŠ, Fábry

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

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

Uplatnění metod na zvolený jazyk

Objektově orientované programování

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

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_25 09

Zápis programu v jazyce C#

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.

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

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

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

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

Digitální učební materiál

Transkript:

NPRG030 Programování I, 2017/18 1 / 26 20. 10. 2017 11:22:16

Ordinální typy standardní: integer, char, boolean Vlastnosti ordinálních typů: 1. hodnot je konečný počet a hodnoty jsou uspořádány 2. ke každé hodnotě (kromě té největší) existuje bezprostřední následník a ke každé hodnotě (kromě té nejmenší) existuje bezprostřední předchůdce NPRG030 Programování I, 2017/18 2 / 26 20. 10. 2017 11:22:16

Funkce ORD ordinální hodnota boolean ord( FALSE )=0 ord( TRUE )=1 integer ord( N )=N char ord( c )= podle tabulky znaků NPRG030 Programování I, 2017/18 3 / 26 20. 10. 2017 11:22:16

PRED předchůdce pred( -123 )=-124 pred( 0 )=-1 pred( TRUE )=FALSE pred( '3' )='2' SUCC následník succ( -123 )=-122 succ( 9 )=10 succ( FALSE )=TRUE //POZOR BP, FPC... succ( '3' )='4' NPRG030 Programování I, 2017/18 4 / 26 20. 10. 2017 11:22:16

Příklad var zn: char; begin zn := 'A'; repeat writeln( 'Znak ',zn,' má číslo ',ord(zn) ); zn := succ( zn ) until zn > 'Z' end. NPRG030 Programování I, 2017/18 5 / 26 20. 10. 2017 11:22:16

? Jak jednoduše zjistit, jsou-li v naší znakové sadě písmena bezprostředně za sebou? NPRG030 Programování I, 2017/18 6 / 26 20. 10. 2017 11:22:16

Výčtové typy Definice typu: identifikátor = popis typu Popis výčtového typu: ( identifikátor {,identifikátor} ) NPRG030 Programování I, 2017/18 7 / 26 20. 10. 2017 11:22:16

Příklad den_tydne = (pondeli, utery, streda, ctvrtek, patek, sobota, nedele); var den1, den2: den_tydne; den1 := ctvrtek; den2 := pondeli; den1 := den2; den1 := succ( den1 );? pondeli vs. 'pondeli'? NPRG030 Programování I, 2017/18 8 / 26 20. 10. 2017 11:22:16

Typ interval popis typu interval <konstanta>..<konstanta> např. male_cislo = 0..255; cislice = '0'..'9'; pracovni_dny = pondeli..patek; cisla_od_m_do_n = m..n; NPRG030 Programování I, 2017/18 9 / 26 20. 10. 2017 11:22:16

Typ interval obě konstanty: stejný typ ordinální typ první <= druhá Interval je podmnožinou hostitelského typu => všechny jeho hodnoty jsou zároveň hodnotami hostitelského typu definice typů jsou uvozeny klíčovým slovem TYPE NPRG030 Programování I, 2017/18 10 / 26 20. 10. 2017 11:22:16

Příkaz cyklu FOR for <identifikátor> := <výraz> to/downto <výraz> do <příkaz> = pro cykly, kde předem známe počet opakování Např. for i:=1 to N do soucet := soucet + i; for zn := 'a' to 'z' do writeln( 'znak ',zn, 'má číslo ',ord(zn) ); NPRG030 Programování I, 2017/18 11 / 26 20. 10. 2017 11:22:16

for i:=1 to N do i := 1; while i<=n do begin... i := succ(i) end; for i:=n downto 1 do i := N; while i>=1 do begin... i := pred(i) end; NPRG030 Programování I, 2017/18 12 / 26 20. 10. 2017 11:22:16

continue ukončení těla cyklu break vyskočení z cyklu!! Nedosazujte do řídící proměnné cyklu!! NPRG030 Programování I, 2017/18 13 / 26 20. 10. 2017 11:22:16

Strukturované datové typy umíme strukturovat příkazy, můžeme strukturovat i data POLE slovo popis typu: array[typ{,typ}] of typ slovo: array[1..12] of char; NPRG030 Programování I, 2017/18 14 / 26 20. 10. 2017 11:22:16

Pole indexovaná proměnná proměnná[výraz{,výraz}] slovo[3] = 'O' slovo[9] = 'V' příklad: obracet slova příklad: frekvence znaků NPRG030 Programování I, 2017/18 15 / 26 20. 10. 2017 11:22:16

Eratosthenovo síto ( Ἐ ρατοσθένης, 276/272 194 př. n. l. v Alexandrii) NPRG030 Programování I, 2017/18 16 / 26 20. 10. 2017 11:22:16

Vícerozměrné pole = podle definice slovník = array[1..velikostslovniku] of array[jazyky] of array[1..maxdelka] of char lze zapsat i jako slovník = array[ 1..VelikostSlovniku, jazyky, 1..MaxDelka] of char NPRG030 Programování I, 2017/18 17 / 26 20. 10. 2017 11:22:16

podobně sl[cislohesla][jazyk][pismeno] lze zapsat i jako sl[cislohesla, jazyk, pismeno]? Co znamená zápis sl[cislohesla[jazyk]][pismeno]?? Kolik prvků typu integer má pole A: array[-2..2,3..8,boolean] of integer? NPRG030 Programování I, 2017/18 18 / 26 20. 10. 2017 11:22:16

Vyhledávání v poli Úloha: V neuspořádaném poli najít prvek s jednou konkrétní hodnotou 1: for i:=zac to kon do if P[i]=HLEDANY then... 2: i:=zac; while (i<=kon) and (P[i]<>HLEDANY] do i := i+1;! Pokud vyhodnocuje booleovské výrazy nezkráceně, dojde k chybě! (RangeCheck!) NPRG030 Programování I, 2017/18 19 / 26 20. 10. 2017 11:22:16

3: trik: vyhledávání se zarážkou pole o 1 prvek delší a tam umístíme hledanou hodnotu P[kon+1] := HLEDANY; i := zac; while P[i]<>HLEDANY do i := i+1; if i = kon+1 then... { nebyl tam } NPRG030 Programování I, 2017/18 20 / 26 20. 10. 2017 11:22:16

Strukturované konstanty v BP const <jmeno>: <typ> = <hodnota>; Příklad: const A: array[1..10] of integer = (2,3,5,7,11, 13,17,19,23,29); AA: array[boolean, 1..5] of char = ( ('f','a','l','s','e'), (' ','t','r','u','e') ); Ve skutečnosti to jsou jen proměnné s počáteční hodnotou! NPRG030 Programování I, 2017/18 21 / 26 20. 10. 2017 11:22:16

Representace znakových řetězců (nejen v pascalu) pole a) ukládat délku b) ukončovací znak V TP: typ string var a: string; b, c: string[10]; d: string[50]; NPRG030 Programování I, 2017/18 22 / 26 20. 10. 2017 11:22:16

string[ MaxDelka ] string[ N ] je representováno jako array[0..n] of char, 0-tý prvek obsahuje délku řetězce (jako char) length(s) copy( s, odkud, kolik ) pos( co, kde ), vrací 0, pokud neobsahuje NPRG030 Programování I, 2017/18 23 / 26 20. 10. 2017 11:22:16

Příklad: nalezení všech výskytů podřetězce Příklad: náhrada podřetězce NPRG030 Programování I, 2017/18 24 / 26 20. 10. 2017 11:22:16

Těžká úloha: Napište program, který vytiskne svůj vlastní zdrojový kód (aniž by ho odněkud četl). Ten program nemusí dělat nic jiného. Pokud se vá to podaří, pošlete mailem, Subj.: SELF. NPRG030 Programování I, 2017/18 25 / 26 20. 10. 2017 11:22:16

NPRG030 Programování I, 2017/18 26 / 26 20. 10. 2017 11:22:16