DATOVÉ TYPY určuje druh hodnoty (číslo, text, logická hodnota) a množinu operací (aritmetické, logické, ...) skalární datový typ - hodnoty jsou uspořádané.

Slides:



Advertisements
Podobné prezentace
Základy ukládání dat v počítači
Advertisements

Standardní knihovní funkce pro práci s textovými řetězci
VISUAL BASIC Práce s řetězci Použitá literatura: Kvoch: Visual Basic 4.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Pascal - příklady.
Programování funkcí v Excelu
Programování v Pascalu
Algoritmizace od algoritmu k Pascalu.
Vnitřní řazení v poli (in sito)
1 Vnitřní řazení s využitím dynamických struktur Tvorba spojového seznamu je vcelku triviální záležitostí: a)Vytvořím prázdný seznam příkazem LIST:=nil.
10. Dynamické datové struktury
VISUAL BASIC Práce se soubory.
Aplikační a programové vybavení
Programování v Pascalu Přednáška 4
Programování v Pascalu Přednáška 6
Programování v Pascalu Přednáška 3
Programování v Pascalu Přednáška 5 RNDr. Hana Havelková.
Programování v Pascalu Přednáška 9 RNDr. Hana Havelková.
Třídění Seminář IVT. Definice uspořádání skupiny dat (záznamů) dle daného klíče vzestupně (od nejmenší do největší hodnoty klíče) sestupně (od největší.
Algoritmizace a programování Datové typy v Delphi - 05
Algoritmizace a programování Operátory a příkazy v Delphi - 07
Programování v Pascalu Přednáška 7
Materiály k přednášce Úvod do programování Ondřej Čepek.
Informatika pro ekonomy II přednáška 4
PHP PHP – základy syntaxe (část 1) - 03 Mgr. Josef Nožička IKT PHP
1 Vyhledávání Principy vyhledávání Klasifikace klíče:  Interní klíč – je součástí prohlížených záznamů  Externí klíč – není jeho součástí, je jím např.
Informatika I 3. přednáška
Procedury a funkce Základní charakteristika a použití v programu.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
OSNOVA: a) Řetězce v C b) Funkce stdio.h pro řetězce c) Funkce string.h pro řetězce d) Příklad Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače.
Deklarace Radim Štefan. 2 Použité zkratky BP – Borland Pascal De – Delphi.
C – strukturované příkazy
Podmienený príkaz. Kĺúčové slová  Pro podmínky se v Pascalu používají klíčové příkazy IF, THEN a ELSE.  Také se jim říká „príkaz vetvenia"..  Příkaz.
Algoritmy a programovací techniky
Úvod do Pascalu. Co je Pascal? vyšší programovací jazyk poskytuje prostředky pro popis algoritmů, které odrážejí povahu řešených problémů, a nikoliv technickou.
Informatika I 4. přednáška
Cvičení.
Radim Farana Podklady pro výuku
3. Příkazy  Příkazy dělíme na jednoduché a strukturované.  Jednoduché příkazy - žádnou jejich dílčí částí neni příkaz - přiřazovací, vstupu a výstupu,
5. Procedury a funkce Procedura je samostatně odladěný algoritmus, v programu může být volána vícekrát. Dvojí terminologie - rozlišujeme procedury a funkce.
Datové typy a struktury
Programovací jazyk PASCAL
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Algoritmizace a programování Binární soubory - 14 Mgr. Josef Nožička IKT Algoritmizace a programování
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
STROMY Datová struktura sestávající z uzlů
Aplikační a programové vybavení
10. Dynamické proměnné Dynamická proměnná se nezavádí deklarací proměnných, ale vzniká za běhu programu provedením speciálního příkazu. Nemá přidělen žádný.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
Algoritmizace a programování Textové soubory - 13 Mgr. Josef Nožička IKT Algoritmizace a programování
6. Typ záznam Strukturovaný datový typ - znamená spojení několika elementů stejného nebo různých typů do jedné proměnné. Např. pole je strukturovaný datový.
JUI přednáška Vstup a výstup, cykly RNDr. Jiří Dvořák, CSc.
Datové typy a operátory. Co jsou datové typy  Charakterizují proměnnou nebo konstantu – jaká data obsahuje  Data jsou v počítači ukládána jako skupiny.
doc. RNDr. Zdeněk Botek, CSc.
Pascal – if Mgr. Lenka Švancarová.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
4. Typ pole 4.1 Jednorozměrná pole
Pascal – strukturované příkazy
Cvičení 3-4 Procedury, funkce,řetězce. Procedury Procedura Procedura Procedura je podprogram, který mění stav programu (změnou stavu proměnných nebo změnou.
Algoritmizace a programování Aritmetické, Relační a Logické operátory, Knihovny.
M2160 – Úvod do programování II RNDr. Jaroslav PELIKÁN, Ph.D. katedra počítačových systémů a komunikací Fakulta informatiky Masarykovy univerzity Botanická.
Programování ENUM, SWITCH,pole jednorozměrná a vícerozměrná, deklarace, inicializace, kopírování, porovnání Erik Král.
Výukový materiál zpracován v rámci projektu
KIV/ZD cvičení 9 Tomáš Potužák.
Strukturované typy proměnných v programovacím jazyce Pascal - 2.hodina
Informatika pro ekonomy přednáška 8
© Copyright Radim Štefan
Opakování základních příkazů a syntaxí v programovacím jazyce Pascal
CU01 Informatika II 2/13 Základy algoritmizace
Transkript prezentace:

DATOVÉ TYPY určuje druh hodnoty (číslo, text, logická hodnota) a množinu operací (aritmetické, logické, ...) skalární datový typ - hodnoty jsou uspořádané skalární může být ordinální jednoduché strukturované integer boolean char interval výčtový typ real soubor záznam množina pole ordinální neordinální integer boolean char interval výčtový typ real soubor záznam množina pole standardní nestandardní 12/29/2018 Informatika I

ORDINÁLNÍ DATOVÉ TYPY integer boolean char interval výčtový typ ordinální jsou jednoduché (jedna proměnná daného typu obsahuje v daném okamžiku právě jednu hodnotu) všechny hodnoty z množiny hodnot lze seřadit a přidělit jim pořadové číslo, tzn. pro každou hodnotu existuje jednoznačně definovaný předchůdce a následník (splněno např. pro celá čísla, nikoliv pro racionální - tam lze rozhodnout pouze o relaci menší - větší) ord(a) ord(hi) = i-1 hi < hj Þ i < j succ(a) succ(hi) = hi+1 pred(a) pred(hi) = hi-1 ordinální číslo = pořadové číslo v množině hodnot předchůdce - predecessor následník - successor 12/29/2018 Informatika I

DATOVÝ TYP INTEGER integer - latinsky „celý“ množina hodnot: celá čísla (kladná, záporná a nula) rozsah omezen velikostí paměťového místa použitého pro uložení hodnoty pro 16 bitů -32 768 až 32 767 (-215 až 215-1) pro 32 bitů -2 147 483 648 až 2 147 483 647 (-231 až 231-1) konstanta maxint: rozsah <–maxint-1, maxint> operace: vstup a výstup přiřazení aritmetické operace relační operace operace aritmetické relační + - * div mod sčítání odčítání násobení celočíselné dělení zbytek po dělení = <> > >= < <= 10 div 3 = 3 10 mod 3 = 1 přetečení při aritmetických operacích (výsledek neleží v intervalu <-maxint-1,maxint>) 12/29/2018 Informatika I

DATOVÝ TYP INTEGER var x, y : integer; begin x := 3; y := sqr(3); if odd(y) then write('liche') else write('sude'); end; standardní funkce odd(a) abs(a) sqr(a) ord(a) succ(a) pred(a) true, když a je liché absolutní hodnota druhá mocnina ordinální číslo následník předchůdce |a| a2 a a+1 a-1 V překladačích bývají obvykle definovány další celočíselné datové typy, např.: ShortInt Smallint Longint Byte Word -128 .. 127 -32768 .. 32767 -2 147 483 648 .. 2 147 483 647 0 .. 255 0 .. 65 535 12/29/2018 Informatika I

DATOVÝ TYP BOOLEAN Logické operace: pouze dvě hodnoty: true a false přiřazení logické operace funkce ord, succ, pred ord (false) = 0 ord (true) = 1 relační operace (všechny, porovnává se podle ordinálního čísla) true > false vstup a výstup Logické operace: A B false true not A A and B A or B 12/29/2018 Informatika I

DATOVÝ TYP CHAR zkratka z character (m.j. písmeno, znak – angl.) množina hodnot: zobrazitelné znaky (písmena, číslice, různé symboly, ...), řídící znaky operace: vstup a výstup (standardní typ) přiřazení relační operace (podle abecedy - anglické, tzn. bez diakrititky) funkce ord, succ, pred a chr ordinální čísla 0..255 (uloženo v jednom bytu) ord(’A’) = 65 chr(65) = ’A’ succ(’A’) = ’B’ pred(’B’) = ’A’ Zápis konstanty: ’A’ 12/29/2018 Informatika I

DATOVÝ TYP CHAR kód = přiřazení znaků a ordinálních čísel ASCII - American Standard Code for Information Interchanges pův. 7-mibitový (max. 128 znaků), později rozšíření na 8 bitů - více způsobů (max. 256 znaků, národní abecedy) jiné kódy: CCITT (5 bitů), EBCDIC, UniCode, ... ! řídící znaky Z A B 9 1 ” # / : ; @ z a b del 33 32 90 65 66 57 48 49 34 35 47 58 59 64 122 97 98 127 nad 127: znaky národních abeced znaky pro rámečky a výplně speciální znaky (½, a, b, ¥, ø, º, ...) pro češtinu několik různých kódů (bří Kamenických, Latin2, ISO 8859-2, Windows 1250) 12/29/2018 Informatika I

DATOVÝ TYP CHAR var c : char; ... (* test, zda číslice *) if (c >= ’0’) and (c <= ’9’) then ... (* test, zda velké písmeno *) if (c >= ’A’) and (c <= ’Z’) then ... (* test, zda vůbec nějaké písmeno *) if ((c >= ’A’) and (c <= ’Z’)) or ((c >= ’a’) and (c <= ’z’)) then ... (* převod malého písmene na velké *) if (c >= ’a’) and (c <= ’z’) then c := chr(ord(c) - (ord(’a’) - ord (’A’))); 12/29/2018 Informatika I

DATOVÝ TYP INTERVAL definován pomocí již definovaného ordinálního typu (tzv. hostitelský typ) množina hodnot omezena na souvislou podmnožinu, hranice zadány v definici (např. číslo měsíce v roce je sice integer, ale smysl mají pouze hodnoty 1 až 12) hostitelský typ může být: integer, char, výčtový typ var mesic : 1 .. 12; s proměnnou mesic lze provádět stejné operace, jako s proměnnou hostitelského typu (integer) určeno hlavně pro snížení výskytu chyb: při překročení rozsahu (přiřazením) je hlášena chyba (např. mesic := 100 je špatně) v některých situacích je použití typu interval (resp. existence typu příslušných vlastností) přímo vyžadováno 12/29/2018 Informatika I

DEFINICE DATOVÉHO TYPU pokud potřebujeme více proměnných stejného nestandardního typu (deklarovaných na různých místech) patří do deklarační části programu pro jméno typu platí stejná pravidla jako pro jména proměnných type TMesic = 1 .. 12; var mesic : TMesic; lze definovat i nový název pro již existující typ type TMesic = integer; var mesic : TMesic; 12/29/2018 Informatika I

VÝČTOVÝ DATOVÝ TYP (enumerative type) nestandardní jednoduchý ordinální typ definovaný v programu explicitně pomocí výčtu množiny hodnot operace: přiřazení relační operace (dle ordinálních čísel), funkce ord, succ, pred nejsou definovány vstupy a výstupy type TDen = (Pondeli, Utery, Streda, Ctvrtek, Patek, Sobota, Nedele); TPracDen = Pondeli .. Patek; var den : TDen; ... den := Utery; if den > Patek then ... write(ord(Utery)); (* vypíše se 1 *) 12/29/2018 Informatika I

DATOVÝ TYP REAL neordinální neceločíselné hodnoty v paměti ukládáno obvykle v semilogaritmickém tvaru: m * 2 q hodnoty nemají jednotný stupeň rozlišitelnosti hodnoty: konečná podmnožina reálných čísel (spíše racionálních) maxreal - největší absolutní hodnota čísla minreal - nejmenší absolutní hodnota čísla počet zobrazitelných míst mantisy (uvádí se ekvivalent v desítkové soustavě) strojová nula: všechny hodnoty z intervalu (-minreal, minreal) podtečení (výsledkem je strojová nula) -maxreal -minreal maxreal minreal 12/29/2018 Informatika I

DATOVÝ TYP REAL operace aritmetické relační + - * / sčítání odčítání násobení dělení = <> > >= < <= Zápis konstanty: 3.14 -72.59 547.15e-15 -4E20 standardní funkce abs(x) sqr(x) sin(x) cos(x) arctg(x) ln(x) exp(x) sqrt(x) trunc(x) round(x) absolutní hodnota druhá mocnina sinus (x v radiánech) druhá odmocnina celá část x zaokrouhlení x na celé číslo |x| x2 ex 12/29/2018 Informatika I

DATOVÝ TYP REAL V překladačích obvykle definovány další neceločíselné datové typy, např.: Real Single Double Extended 2.9 E -39 až 1.7 E 38 1.5 E -45 až 3.4 E 38 5.0 E -324 až 1.7 E 308 3.47 E -4932 až 1.1 E 4932 11-12 7-8 15-16 19-20 6 4 8 10 jméno rozsah plat. cifry délka [B] Problémy s přesností numerických výpočtů (konečný počet cifer) var x : real; i : integer; ... x := 1.1E10; for i := 1 to 32767 do x := x + 0.002; 12/29/2018 Informatika I

DATOVÝ TYP POLE strukturovaný datový typ složky stejného typu složky rozlišeny pomocí indexu index může být libovolného ordinálního typu (nejčastěji integer) typ složek: jakýkoliv datový typ (mimo typu soubor) Ti – typ indexu Ts – typ složek (prvků) type T = array [Ti ] of Ts; type VEKTOR = array [1..3] of real; var A : VEKTOR; B : array [’A’..’Z’] of integer; ... A[1] := 7; B[’X’] := B [’X’] + 1; složka pole má stejné vlastnosti (a použitelnost) jako proměnná příslušného typu (A[1] jako real, B[’X’] jako integer) 12/29/2018 Informatika I

DATOVÝ TYP POLE složky pole mohou být opět typu pole - vícerozměrná pole type MATICE = array [1..10] of array [1..10] of real; var A : MATICE; ... A[1,2] := 0.2; (* nebo A[1][2] *) totéž stručněji: type MATICE = array [1..10, 1..10] of real; var A : MATICE; ... A[1,2] := 0.2; (* nebo A[1][2] *) 12/29/2018 Informatika I

DATOVÝ TYP POLE operace: zpřístupnění složky podle indexu přiřazení (stejný typ!) žádné další operace pro typ pole (vstup/výstup, relace, ...), pouze pro složky dle jejich typu velmi silný výrazový prostředek pro vyjadřování algoritmů Vstup a výstup pole (po složkách) var A : array [1..100] of real; i, n : integer; ... read(n); for i:=1 to n do read(A[i]); writeln(A[i]); 12/29/2018 Informatika I

příklady nejčastějších manipulací DATOVÝ TYP POLE příklady nejčastějších manipulací Operace s vektory, s maticemi, třídění, soustavy rovnic... var A : array [1..100] of integer; x := 0; for i:=1 to N do x := x + A[i]; x := A[1]; for i:=2 to N do if x > A[i] then x := A[i]; 12/29/2018 Informatika I

DATOVÝ TYP POLE var A : array [1..100] of integer; b : boolean; i : integer; b := false; i := 1; repeat if A[i]<>0 then b := true; i := i+1; until (i>n) or b; b ;= true; i := 1; repeat if A[i]=0 then b :=false; i := i+1; until (i>n) or not(b); 12/29/2018 Informatika I

TEXTOVÉ ŘETĚZCE víceznakový text = textový řetězec (např. ’ahoj’) je vhodné, aby slovo (věta, ...) mohly být v jedné proměnné lze použít array of char, ale zůstávají (nevýhodné) vlastnosti pole (zejm. nemožnost vstupu a výstupu) v Pascalu jsou obvykle k dispozici spec. typy pro práci s textovými řetězci (obvykle string, není to součást jazyka Pascal, takže vlastnosti závisí na implementaci!) string má vlastnosti pole (výběr znaku dle indexu), ale mnoho operací navíc (vstupy, výstupy, přiřazení, spojování řetězců, mnoho speciálních funkcí) prvek typu string je typu char var x : string; (* max. 255 nebo 232 znaků *) y : string[20]; (* max. 20 znaků *) ... read(x); write(x); y:='Ahoj'; x:=y + ', lidi!'; write(x); (* Ahoj, lidi! *) 12/29/2018 Informatika I

NĚKTERÉ FUNKCE PRO PRÁCI S ŘETĚZCI t1 + t2 length(t) pos(t1,t2) delete(t,i,n) insert(co,kam,i) copy(t,i,n) zřetězení aktuální délka řetězce (počet znaků) index prvního výskytu t1 v t2 odstranění n znaků z řetězce t počínaje znakem s indexem i vložení co do řetězce kam od indexu i získání podřetězce (n znaků z řetězce t počínaje indexem i) var s,t : string; i : integer; ... s := 'dobry'; t := s + ' den'; writeln(t); { dobry den } i := length(t); { 9 } i := pos('br',t); { 3 } delete(t,3,2); writeln(t); { doy den } insert('br',t,3); s := copy(t,3,5); writeln(s); { bry d } 12/29/2018 Informatika I

TEXTOVÉ ŘETĚZCE var x : string; i : integer; ... x:='ahoj, lidi!'; write(x); { ahoj, lidi! } { převod prvního znaku na velké písmeno } if (x[1] >= ’a’) and (x[1] <= ’z’) then x[1] := chr(ord(x[1]) - (ord(’a’) - ord (’A’))); write (x); { Ahoj, lidi! } { převod všech znaků na velké písmeno } for i:=1 to length(x) do if (x[i] >= ’a’) and (x[i] <= ’z’) then x[i] := chr(ord(x[i]) - (ord(’a’) - ord (’A’))); write (x); { AHOJ, LIDI! } 12/29/2018 Informatika I

DATOVÝ TYP MNOŽINA [s1, s2, s3] strukturovaný datový typ, hodnoty jsou množiny množina všech hodnot typu je potenční množina typ prvku báze (bázový typ) smí být jen ordinální typ nelze přímo přistupovat k jednotlivým složkám operace: zápis konstanty přiřazení množinové operace (sjednocení, průnik, množinový rozdíl) test "je prvkem množiny" relace type T = set of Ts; [s1, s2, s3] type ZNAKY = set of char; var A, B, C : ZNAKY; ... C := []; { prázdná množina } A := ['0', '1', '2']; B := ['1', 'a']; C := A + B; { ['0', '1', '2', 'a'] } C := A * B; { ['1'] } C := A - B; { ['0', '2'] } if 'a' in B then ... + sjednocení * průnik - rozdíl = rovnost <> nerovnost <= je podmnožinou >= je nadmnožinou in je prvkem 12/29/2018 Informatika I

obě přiřazení jsou ekvivalentní DATOVÝ TYP MNOŽINA var A : set of char; ... A := ['0', '1', '2', '3']; A := ['0'..'3']; obě přiřazení jsou ekvivalentní var x : char; ... if x in ['0'..'9'] then write('v x je cislice'); if x in ['A'..'Z','a'..'z'] then write('v x je pismeno'); 12/29/2018 Informatika I

DATOVÝ TYP MNOŽINA var x : string; A : set of char; i : integer; begin read(x); A := ['A','E','I','O','U','Y']; for i:=1 to length(x) do if (x[i] >= ’a’) and (x[i] <= ’z’) then x[i] := chr(ord(x[i]) - (ord(’a’) - ord (’A’))); if x[i] in A then A := A - [x[i]]; end; if A <> [] then write('ne'); writeln('byly vsechny samohlasky') end. 12/29/2018 Informatika I

DATOVÝ TYP ZÁZNAM strukturovaný datový typ prvky různého typu prvky mohou být libovolného typu (mimo soubor) typický příklad použití: databáze (tabulku DB lze chápat jako pole záznamů) operace: zpřístupnění složky přiřazení type ZELENINA = record jmeno : string[20]; mj : (kg, ks, pytel); cena : real; end; var A, B : ZELENINA; X : array [1..1000] of ZELENINA; ... A.jmeno := 'mrkev'; B := A; X[20].cena := 115.50; type T = record N1 : T1; ... end; Ni - jméno i-té složky Ti - typ i-té složky 12/29/2018 Informatika I

KLÍČOVÉ SLOVO with type XYZ = record a,b,c : integer; x, y, z : real; end; var POM : array [1..100] of XYZ; ... POM[15].a := 0; POM[15].b := 0; POM[15].c := 0; POM[15].x := 0; POM[15].y := 0; POM[15].z := 0; with POM[15] do begin a := 0; b := 0; c := 0; x := 0; y := 0; z := 0; end; 12/29/2018 Informatika I

DATOVÝ TYP SOUBOR prvky různého typu textový, binární (stejné nebo různé prvky) pro realizaci V/V operací přiřazení jména otevření souboru práce se souborem (vstup, výstup - read, readln, write, writeln) zavření souboru řada dalších funkcí: nestandardní - nastavení na pozici v souboru, čtení a zápis bloku dat definované délky (bez ohledu na typ) apod. rozdíl mezi read a readln (readln jen pro textové soubory, čte až do konce řádku) assign(g,<jméno>); přiřazení jména souboru proměnné reset(g); otevření existujícího souboru pro čtení rewrite(g); otevření existujícího nebo nového souboru pro zápis append(g); otevření existujícího souboru pro zápis, nastavení na konec close(g); zavření souboru eof(g); true na konci souboru (už dále není co číst) eoln(g); true na konci řádku při čtení z textového souboru 12/29/2018 Informatika I

DATOVÝ TYP SOUBOR zobrazení obsahu textového souboru prvni.txt na obrazovku program cat; var g : text; s : string; begin assign(g,'prvni.txt'); reset(g); while not eof(g) do readln(g,s); writeln(s); end; close(g); end. 12/29/2018 Informatika I

DATOVÝ TYP SOUBOR type ZELENINA = record jmeno : string[20]; mj : (kg, ks, pytel); cena : real; end; var X : array [1..1000] of ZELENINA; f : file of ZELENINA; i : integer; ... assign(f,'zelenina.dat'); rewrite(f); for i := 1 to 1000 do writeln(f,X[i]); close(f); 12/29/2018 Informatika I

PŘÍKAZ case vícenásobné větvení podle hodnoty výrazu (ordinální typ) zbytný příkaz (lze nahradit posloupností if - then - else if ...) case p of h1: ŘS1; h2: ŘS2; ... hn: ŘSn; else ŘSx (* žádná z uvedených *) end; p ? h2 hn h1 ŘS1 ŘS2 ŘSn if p = h1 then ŘS1 else if p = h2 then ŘS2 else ... else if p = hn then ŘSn; case c of 'A'..'Z', 'a'..'z': write('pismeno'); '0'..'9: write('cislice'); '@': write('zavinac'); else write('neco jineho'); end; 12/29/2018 Informatika I