Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Informatika I 4. přednáška RNDr. Jiří Dvořák, CSc.

Podobné prezentace


Prezentace na téma: "Informatika I 4. přednáška RNDr. Jiří Dvořák, CSc."— Transkript prezentace:

1 Informatika I 4. přednáška RNDr. Jiří Dvořák, CSc.

2 Informatika I: přednáška 42 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

3 Informatika I: přednáška 43 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)

4 Informatika I: přednáška 44 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

5 Informatika I: přednáška 45 Typ integer  Množina hodnot: celá čísla z intervalu [  maxint  1, maxint]; maxint = 2 n  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é

6 Informatika I: přednáška 46 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

7 Informatika I: přednáška 47 Celočíselné typy v Delphi 6 Typ rozsah počet bytů Integer – Cardinal Shortint – Smallint – Longint – Int64 – –18 Byte Word Longword

8 Informatika I: přednáška 48 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í

9 Informatika I: přednáška 49 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

10 Informatika I: přednáška 410 Reálné typy v Delphi 6 Typ Real Real48 Single Double Extended Comp Currency rozsah 5.0 × 10 – × × 10 – × × 10 – × × 10 – × × 10 – × – –1 – počet bytů

11 Informatika I: přednáška 411 Typ boolean  Množina hodnot: true …pravda, false … nepravda  Relační operátory: =, <>,, >= platí vztah false

12 Informatika I: přednáška 412 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

13 Informatika I: přednáška 413 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

14 Informatika I: přednáška 414 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'

15 Informatika I: přednáška 415 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'))

16 Informatika I: přednáška 416 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;

17 Informatika I: přednáška 417 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

18 Informatika I: přednáška 418 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

19 Informatika I: přednáška 419 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

20 Informatika I: přednáška 420 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 = ; var PD: TPracDen; VP1,VP2: TVelkaPismena; i,j: TRozsahIndexu; Cfr: ' 0 '.. ' 9 ' ;

21 Informatika I: přednáška 421 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.

22 Informatika I: přednáška 422 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)

23 Informatika I: přednáška 423 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}

24 Informatika I: přednáška 424 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} for i:=1 to length(S) do if S[i]=Zn1 then S[i]:=Zn2;

25 Informatika I: přednáška 425 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} for i:=1 to N do OStr[i]:=Str[N-i+1];

26 Informatika I: přednáška 426 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.

27 Informatika I: přednáška 427 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.

28 Informatika I: přednáška 428 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.

29 Informatika I: přednáška 429 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)

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

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

32 Informatika I: přednáška 432 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.

33 Informatika I: přednáška 433 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]

34 Informatika I: přednáška 434 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];

35 Informatika I: přednáška 435 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;

36 Informatika I: přednáška 436 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];

37 Informatika I: přednáška 437 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);


Stáhnout ppt "Informatika I 4. přednáška RNDr. Jiří Dvořák, CSc."

Podobné prezentace


Reklamy Google