Informatika I 4. přednáška

Slides:



Advertisements
Podobné prezentace
Množiny Přirozená čísla Celá čísla Racionální čísla Komplexní čísla
Advertisements

Pro začátek něco lehčího
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
(Matrix Laboratory) MATLAB® (Matrix Laboratory)
Pascal - příklady.
Programování funkcí v Excelu
Uživatelem definované typy doc. Dr. Ing. Miroslav Beneš  katedra informatiky, A-1007 
Racionální čísla, operátory, výrazy, knihovní funkce
Programování v Pascalu
Algoritmizace od algoritmu k Pascalu.
Algoritmy I Cvičení č. 2. Cíl hodiny Datové typy a přetypování (int, float, double, bool, char, long, short) Konstanty – Celočíselné Desítkové – 15, 0,
Programování v Pascalu Přednáška 4
Programování v Pascalu Přednáška 3
Programování v Pascalu Přednáška 5 RNDr. Hana Havelková.
Algoritmizace a programování Datové typy v Delphi - 05
Algoritmizace a programování Operátory a příkazy v Delphi - 07
Druhé cvičení Vytváření identifikátorů Datové typy
Skriptový jazyk, který se používá při tvorbě stránek.
Programování v Pascalu Přednáška 7
Materiály k přednášce Úvod do programování Ondřej Čepek.
Vektorové a maticové operace, soustava lineárních rovnic
Základy Visual Basicu.
VY_32_INOVACE_INF_RO_12 Digitální učební materiál
Operátory (1. část) 3 A1PRG - Programování – Seminář
PHP PHP – základy syntaxe (část 1) - 03 Mgr. Josef Nožička IKT PHP
VY_32_INOVACE_ 14_ sčítání a odčítání do 100 (SADA ČÍSLO 5)
Datové typy 6 A1PRG - Programování – Seminář
Zábavná matematika.
Dělení se zbytkem 6 MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA
Dělení se zbytkem 5 MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA
Informatika I 3. přednáška
Jazyk vývojových diagramů
Čtení myšlenek Je to až neuvěřitelné, ale skutečně je to tak. Dokážu číst myšlenky.Pokud mne chceš vyzkoušet – prosím.
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í.
Dělení se zbytkem 8 MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA
Náhoda, generátory náhodných čísel
Zásady pozorování a vyjednávání Soustředění – zaznamenat (podívat se) – udržet (zobrazit) v povědomí – představit si – (opakovat, pokud se nezdaří /doma/)
ZÁKLADNÍ DATOVÉ TYPY.
Deklarace Radim Štefan. 2 Použité zkratky BP – Borland Pascal De – Delphi.
Jednoduché datové typy
Informatika I 2. přednáška
A1PRG - Programování – Seminář Ing. Michal Operátory (2. část) 4 Verze
Celá čísla Dělení.
DĚLENÍ ČÍSLEM 7 HLAVOLAM DOPLŇOVAČKA PROCVIČOVÁNÍ
Jazyk vývojových diagramů
Ú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.
Proměnné v PHP Každý programovací jazyk pracuje s nějakými hodnotami. To, do čeho se tyto hodnoty ukládají, se nazývá proměnné. Každý programovací jazyk.
Cvičení.
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,
Informatika I 7. přednáška RNDr. Jiří Dvořák, CSc.
Informatika I 8. přednáška RNDr. Jiří Dvořák, CSc.
VISUAL BASIC PRALG.
Datové typy a struktury
Programovací jazyk PASCAL
Informatika I 1. přednáška
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
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í
Uživatelem definované typy Ing. Lumír Návrat  katedra informatiky, A 1018 
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
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.
4. Typ pole 4.1 Jednorozměrná pole
České vysoké učení technické Fakulta elektrotechnická Datové typy, výrazy vstup, výstup Jazyk JAVA A0B36PRI - PROGRAMOVÁN Í v1.02.
doc. RNDr. Zdeněk Botek, CSc.
Algoritmizace a programování Aritmetické, Relační a Logické operátory, Knihovny.
Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Gymnázium, Praha 10, Voděradská 2 Projekt OBZORY Datové typy a operátory Základní programové.
Funkce výstupu (2) Funkce printf: deklarována v: stdio.h
Výukový materiál zpracován v rámci projektu
DATOVÉ TYPY určuje druh hodnoty (číslo, text, logická hodnota) a množinu operací (aritmetické, logické, ...) skalární datový typ - hodnoty jsou uspořádané.
CU01 Informatika II 2/13 Základy algoritmizace
Transkript prezentace:

Informatika I 4. přednáška RNDr. Jiří Dvořák, CSc. dvorak@uai.fme.vutbr.cz

Informatika I: přednáška 4 Obsah přednášky Datové typy real, integer, boolean, char Výčtový typ a typ interval Typ řetězec Upřesnění k příkazům přiřazení, vstupu a výstupu Datové struktury Typ pole Informatika I: přednáška 4

Informatika I: přednáška 4 Datové typy Datový typ je určen množinou hodnot a množinou operací. Datové typy můžeme členit např. podle těchto hledisek: Hledisko strukturovanosti: jednoduché typy (jejich hodnoty jsou dále nedělitelné) strukturované typy, Hledisko vztahu k programovacímu jazyku: typy v jazyku předdefinované (jsou pro ně definovány množiny hodnot i operací) typy definované uživatelem (součástí jazyka jsou některé operace a dále nástroje pro definici množin hodnot) abstraktní typy (v jazyku pro ně neexistují žádné explicitní nástroje) Informatika I: přednáška 4

Datové typy v jazyku Pascal Jednoduché typy: real, integer, boolean, char, výčet, interval, řetězec (má i některé rysy strukturovaného typu), ukazatel Strukturované typy: pole, množina záznam, soubor Předdefinované typy: real, integer, boolean, char Typy definované uživatelem: výčet, interval, řetězec, pole, množina záznam, soubor, ukazatel Informatika I: přednáška 4

Informatika I: přednáška 4 Typ integer Množina hodnot: celá čísla z intervalu [ maxint 1, maxint]; maxint = 2n1  1 kde n je počet bitů pro uložení hodnoty Aritmetické operátory: + ,  , * , div … celočíselné dělení, mod … získání zbytku po celočíselném dělení Relační operátory: = , <> , < , <= , > , >= Příklady funkcí: abs … absolutní hodnota, sqr … druhá mocnina, odd … test, zda číslo je liché Informatika I: přednáška 4

Příklady k typu integer Příklady konstant: 123, -12, +17 Příklady výsledků některých operací: 7 div 2 = 3 7 mod 2 = 1 Příklady hodnot některých funkcí (I je typu integer): ord(I) = I pred(I)= I-1 succ(I)= I+1 odd(17)= true odd(24)= false Informatika I: přednáška 4

Celočíselné typy v Delphi 6 Typ rozsah počet bytů Integer –2147483648 .. 2147483647 4 Cardinal 0 .. 4294967295 4 Shortint –128 .. 127 1 Smallint –32768 .. 32767 2 Longint –2147483648..2147483647 4 Int64 –263.. 263–1 8 Byte 0 .. 255 1 Word 0 .. 65535 2 Longword 0 .. 4294967295 4 Informatika I: přednáška 4

Informatika I: přednáška 4 Typ real Množina hodnot: konečná množina racionálních čísel; její rozsah je dán počtem bytů použitých pro reprezentaci Aritmetické operátory: + ,  , * , / Relační operátory: = , <> , < , <= , > , >= Příklady funkcí: sqrt … druhá odmocnina sqr, abs, sin, cos, arctan, exp, ln Funkce pro převod na typ integer: trunc … odseknutí desetinné části, round … zaokrouhlení Informatika I: přednáška 4

Informatika I: přednáška 4 Příklady k typu real Příklady konstant: 1.23, -0.12, +1.7, 1E6, 0.25E-4 Příklady hodnot konverzních funkcí: trunc(25.31)= 25 trunc(48.95)= 48 round(25.31)= 25 round(48.95)= 49 Informatika I: přednáška 4

Informatika I: přednáška 4 Reálné typy v Delphi 6 Typ Real Real48 Single Double Extended Comp Currency rozsah 5.0 × 10–324 .. 1.7 × 10308 2.9 × 10–39 .. 1.7 × 1038 1.5 × 10–45 .. 3.4 × 1038 3.6 × 10–4951 .. 1.1 × 104932 –263+1 .. 263 –1 –922337203685477.5808 .. 922337203685477.5807 počet bytů 8 6 4 10 Informatika I: přednáška 4

Informatika I: přednáška 4 Typ boolean Množina hodnot: true … pravda, false … nepravda Relační operátory: = , <> , < , <= , > , >= platí vztah false<true Logické operátory: not … negace, and … konjunkce (logický součin), or … disjunkce (logický součet) Informatika I: přednáška 4

Příklady k typu boolean Příklady výsledků logických operací: not false = true true and false = false true or false = true Příklady hodnot některých funkcí: ord(false) = 0 pred(true) = false succ(false)= true Informatika I: přednáška 4

Informatika I: přednáška 4 Typ char Množina hodnot: 256 znaků kódu ASCII (American Standard Code for Information Interchange); znaky jsou očíslovány od 0 do 255. Číslice, velká písmena, malá písmena zaujímají souvislé intervaly a mají přirozené uspořádání. Zápisy konstant: 'znak' , #pořadové_číslo_znaku Relační operátory: Výsledek srovnání znaků je stejný, jako kdybychom srovnávali jejich ordinální čísla. Příklady funkcí: ord, pred, succ chr … inverzní funkce k funkci ord Informatika I: přednáška 4

Informatika I: přednáška 4 Příklady k typu char Příklady konstant: 'A', '5', '+', #65 Výrazy 'A' a #65 reprezentují stejnou hodnotu. Příklady výsledků relačních operací: 'A' > 'B' = false 'P' < 'Q' = true Příklady hodnot některých funkcí: ord('1')= 49, ord('A')= 65, ord('a')= 97, pred('Q')= 'P', succ('A')= 'B', chr(49)= '1', chr(65)= 'A', chr(ord('H')+ord('a')-ord('A'))= 'h' Informatika I: přednáška 4

Příklady výrazů s typem char Podmínka pro test, zda hodnotou proměnné Zn je velké písmeno: ('A'<=Zn) and (Zn<='Z') Převod velkého písmene na malé (předpokládáme, že proměnná Zn obsahuje velké písmeno): chr(ord(Zn)+ord('a')-ord('A')) Informatika I: přednáška 4

Možnosti deklarace proměnných pro uživatelsky definované typy a) Pomocí pojmenovaných typů: type ident_typu = typ; var ident_prom : ident_typu; b) Pomocí nepojmenovaných typů: var ident_prom : typ; Informatika I: přednáška 4

Informatika I: přednáška 4 Výčtový typ Definice: (hodnota1, hodnota2, … ) Vlastnosti: Typ výčet je ordinální typ a jeho hodnotami jsou identifikátory. Každá hodnota v seznamu má určené pořadí, počínaje nulou. Jsou definovány relační operace a funkce ord, pred, succ. Hodnoty výčtového typu nemohou být použity při čtení/zápisu z/do textového souboru. Využití: konstrukce množiny, indexování pole, hodnoty selektoru větvení v příkazu case Informatika I: přednáška 4

Příklady pro výčtový typ Definice typů a deklarace proměnných: type TDen = (Po,Ut,St,Ct,Pa,So,Ne); TBarva =(cervena,zluta,modra,fialova); var Den:TDen; B1,B2:TBarva; Teplota:(nizka,stredni,vysoka); Výsledky relačních operací: Po < So = true cervena > modra = false Hodnoty některých funkcí: ord(Po)=0, ord(zluta)=1, pred(Ne)=So, succ(modra)=fialova Informatika I: přednáška 4

Informatika I: přednáška 4 Typ interval Definice: konstanta1 .. konstanta2 Vlastnosti: Typ interval vymezuje interval hodnot v množině hodnot nějakého ordinálního typu a jsou pro něj definovány tytéž operace jako pro hostitelský typ. Využití: konstrukce množiny indexování pole hodnoty selektoru větvení v příkazu case Informatika I: přednáška 4

Příklady pro typ interval Definice typů a deklarace proměnných: type TDen = (Po,Ut,St,Ct,Pa,So,Ne); TPracDen = Po..Pa; TVelkaPismena = 'A'..'Z'; TRozsahIndexu = 1..100; var PD: TPracDen; VP1,VP2: TVelkaPismena; i,j: TRozsahIndexu; Cfr: '0'..'9'; Informatika I: přednáška 4

Informatika I: přednáška 4 Typ řetězec Definice: string[max_délka] Vlastnosti: Max_délka je celé číslo z intervalu [1, 255]. Řetězec je vlastně jednorozměrné pole znaků. Reprezentace: Řetězec je uložen v (max_délka + 1) bytech. Nultý byte obsahuje znak, jehož ordinální číslo určuje skutečnou délku řetězce. Konstanta: 'posloupnost znaků' Posloupnost znaků může být i prázdná. Pozn.: Typ string bez uvedení délky je standardní typ, který je v Turbo Pascalu totožný s typem string[255]. Od verze Delphi 2 tento typ umožňuje pracovat s delšími řetězci, které jsou reprezentovány jinak, než je uvedeno výše. Informatika I: přednáška 4

Operace nad typem řetězec Přístup ke složce: ProměnnáTypuŘetězec[index] Index je výraz celočíselného typu. Relační operace: Řetězce se porovnávají lexikograficky (porovnávají se znaky na 1.pozici, v případě jejich shody znaky na 2.pozici, atd.) Spojení řetězců: Ke spojování řetězců slouží operátor +. Přiřazení: Proměnné typu řetězec je možno přiřadit výraz typu znak nebo výraz libovolného typu řetězec. Určení délky řetězce: length(výraz typu řetězec) Informatika I: přednáška 4

Příklady pro typ řetězec Definice typů a deklarace proměnných: type TRetezec = string[20]; var R1,R2:TRetezec; S1,S2:string[50]; S:string; Výsledky relačních operací: 'ABB'<'ABBA'= true, 'ABA'<'ABBA'= true 'ABBA'<'BA'= true Spojování řetězců a hodnoty funkce length: S:=''; {pak length(S)=0} S:=S + 'ALFA'; {pak length(S)=4} S:=S + 'BETA'; {pak length(S)=8} writeln(S);` {vypise se text ALFABETA} Informatika I: přednáška 4

Příklady pro typ řetězec var Zn,Zn1,Zn2:char; S:string[100]; i,Pocet:integer; {Urceni poctu vyskytu znaku Zn v retezci S} Pocet:=0; for i:=1 to length(S) do if Zn=S[i] then Pocet:=Pocet+1; {Nahrada znaku Zn1 znakem Zn2 v retezci S} if S[i]=Zn1 then S[i]:=Zn2; Informatika I: přednáška 4

Příklady pro typ řetězec Otočení řetězců S a Str: var S,OS:string[100]; Str,OStr:string; i,N:integer; ... N:=ord(S[0]); {ord(S[0])=length(S)} OS[0]:=S[0]; {nastaveni delky retezce OS} for i:=1 to N do OS[i]:=S[N-i+1]; {Pro typ string se to v Delphi musi udelat takto:} N:=length(Str); SetLength(OStr,N); {nastaveni delky retezce OStr} OStr[i]:=Str[N-i+1]; Informatika I: přednáška 4

Informatika I: přednáška 4 Přiřazovací příkaz a) proměnná:=výraz Výraz na pravé straně se vyhodnotí a jeho hodnota se přiřadí proměnné. b) identifikátor_funkce:=výraz Tento příkaz se musí objevit v těle funkce definované uživatelem. Zajistí, že funkce vrátí vypočtenou hodnotu do příkazu, z něhož byla volána. Typy levé a pravé strany přiřazovacího příkazu musejí být kompatibilní vzhledem k přiřazení. Zjednodušeně řečeno to znamená, že oba typy jsou identické (přitom to nesmějí být typy soubor), nebo že množina hodnot typu pravé strany je podmnožinou hodnot typu levé strany. Informatika I: přednáška 4

Informatika I: přednáška 4 Příkazy vstupu Vstup z klávesnice (v Turbo Pascalu nebo v konzolové aplikaci Delphi): read(proměnná) readln(proměnná) příkazy procedur readln eoln … funkce testující konec řádku eof … funkce testující konec souboru Příkazy vstupu mohou obsahovat několik proměnných, oddělených čárkami. Proměnné mohou být typu integer, real, char a řetězec. V normální aplikaci Delphi je vstup z klávesnice zajištěn např. pomocí komponenty Edit. Informatika I: přednáška 4

Informatika I: přednáška 4 Příkazy výstupu Výstup na obrazovku (v Turbo Pascalu nebo v konzolové aplikaci Delphi): write(parametr) writeln(parametr) příkazy procedur writeln Příkazy výstupu mohou obsahovat několik parametrů oddělených čárkami. Možné tvary parametru: výraz celočíselné výrazy výraz:PočetZnaků výraz:PočetZnaků:PočDesMíst Výraz může být typu integer, real, boolean, char a řetězec. V normální aplikaci Delphi je výstup na obrazovku zajištěn např. pomocí komponenty Edit. Informatika I: přednáška 4

Příklady klasifikace datových struktur Hledisko 1 (typ složek): homogenní (složky stejného typu) heterogenní (složky různého typu) Hledisko 2 (proměnnost struktury): statické (rozsah struktury, tj. rozsah přidělené paměti se během výpočtu nemění) dynamické (během výpočtu se mění rozsah přidělené paměti a případně také vztahy mezi složkami struktury a jejich rozmístění v paměti) Informatika I: přednáška 4

Datové struktury v Pascalu množina pole záznam soubor homogenní statické heterogenní dynamická Informatika I: přednáška 4

Informatika I: přednáška 4 Typ pole Definice: array[TypIndexu] of TypSložky array[TypIndexu1,TypIndexu2, … ] of TypSložky Vlastnosti: Typ indexu je ordinální typ. Informatika I: přednáška 4

Informatika I: přednáška 4 Operace nad typem pole Přístup ke složce: ProměnnáTypuPole[index] ProměnnáTypuPole[index1, index2, … ] Index je výraz ordinálního typu. Přiřazení: Proměnná1TypuPole := Proměnná2TypuPole Musí se jednat o proměnné téhož typu pole. Informatika I: přednáška 4

Informatika I: přednáška 4 Příklady pro typ pole Definice typů a deklarace proměnných: type TVektor = array[1..100] of real; TMatice = array[1..20,1..50] of integer; var X,Y:TVektor; A,B,C:TMatice; Cetnost:array['a'..'z'] of integer; Příklady přístupu ke složce pole: {i a j jsou typu integer, Zn je typu char} X[i], Y[2i], A[1,1], B[i,j+1], Cetnost['q'], Cetnost[Zn] Informatika I: přednáška 4

Informatika I: přednáška 4 Příklady pro typ pole Výpočet součtu prvků pole: var X:array[1..200] of real; i,N:integer; {N je skutecny počet prvku} Suma:real; ... Suma:=0; for i:=1 to N do Suma:=Suma+X[i]; Informatika I: přednáška 4

Informatika I: přednáška 4 Příklady pro typ pole Načtení matice typu (M,N): const MaxM=100; MaxN=100; type TMatice = array[1..MaxM,1..MaxN] of integer; var M,N,i,j:integer; A,B,C:TMatice; ... for i:=1 to M do for j:=1 to N do begin write('Zadej prvek ',i,',',j,': '); readln(A[i,j]); end; Informatika I: přednáška 4

Informatika I: přednáška 4 Příklady pro typ pole Určení počtu odpracovaných hodin za týden: type TDen = (Po,Ut,St,Ct,Pa,So,Ne); var Den:TDen; OdpracZaTyden:real; Odpracovano:array[TDen] of real; ... OdpracZaTyden:=0; for Den:= Po to Ne do OdpracZaTyden:= OdpracZaTyden+Odpracovano[Den]; Informatika I: přednáška 4

Informatika I: přednáška 4 Příklady pro typ pole Výpis tabulky četností malých písmen: var mp:'a'..'z'; Cetnost:array['a'..'z'] of integer; ... writeln('Tabulka cetnosti'); writeln; writeln('pismeno cetnost'); writeln('---------------'); for mp:= 'a' to 'z' do writeln(mp:4,Cetnost[mp]:9); Informatika I: přednáška 4