Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałFranciszka Łukaszyk Został zmieniony 11 lat temu
1
Typy złożone, case, stałe
2
Typ zbiorowy type typ_zb = set of typ_podstawowy; Typem podstawowym może być tylko typ porządkowy. Typem podstawowym może być tylko typ porządkowy. W TP tylko typ okrojony o granicach należących do przedziału 0..255 albo typ wyliczeniowy o liczbie elementów nie większej niż 256. W TP tylko typ okrojony o granicach należących do przedziału 0..255 albo typ wyliczeniowy o liczbie elementów nie większej niż 256. Reprezentacja zbiorów w pamięci Reprezentacja zbiorów w pamięci
3
Typ zbiorowy type tok=0..20; var a:set of tok; { 21 potencjalnych elementów } i:tok; i:tok;begin a := [4,9]; { 4 9 } a := [4,9]; { 4 9 } a := a + [1,4,5]; { suma zbiorów } { 1 4 5 9 } a := a + [1,4,5]; { suma zbiorów } { 1 4 5 9 } a := a * [1,2,9]; { przecięcie } { 1 9 } a := a * [1,2,9]; { przecięcie } { 1 9 } a := a - [3,9]; { różnica } { 1 } a := a - [3,9]; { różnica } { 1 } for i:=0 to 20 do for i:=0 to 20 do if i in a then writeln(i,': należy'); { tylko 1 } if i in a then writeln(i,': należy'); { tylko 1 } writeln(sizeof(a)); { 3 (bajty) } writeln(sizeof(a)); { 3 (bajty) } end.
4
Typ rekordowy type t_rek = record record nazwa_pola1: typ_1; nazwa_pola1: typ_1; nazwa_pola2, nazwa_pola3: typ_2; nazwa_pola2, nazwa_pola3: typ_2; { można wymienić kilka nazw pól } { można wymienić kilka nazw pól } { po przecinkach } { po przecinkach }...... nazwa_polan: typ_n nazwa_polan: typ_n end; end; reprezentacja rekordów w pamięci reprezentacja rekordów w pamięci
5
Typ rekordowy type tr = record record zx: real; zx: real; nazwa: string; nazwa: string; j,k: integer j,k: integer end; end;var r: tr; r: tr;begin r.nazwa := Łańcuch; r.nazwa := Łańcuch; r.j := 19; r.j := 19; r.zx := 4.445; r.zx := 4.445; writeln(3*r.j); { 57 } writeln(3*r.j); { 57 } writeln(sizeof(r)) {266} writeln(sizeof(r)) {266}end.
6
Typ rekordowy – instrukcja with uznawana za potencjalne źródło błędów uznawana za potencjalne źródło błędów przysłanianie nazw przez pola rekordu przysłanianie nazw przez pola rekordu (... początek jak poprzednio) begin with r do with r do begin begin nazwa := Łańcuch; nazwa := Łańcuch; j := 19; j := 19; zx := 4.445; zx := 4.445; writeln(3*j) writeln(3*j) end; end;end.
7
Typ rekordowy – instrukcja with with r1, r2, r3,..., rn do instrukcja; instrukcja; jest równoważne: with r1 do with r2 do with r2 do...... with rn do with rn do instrukcja; instrukcja;
8
Typ rekordowy z wariantami type tr = record record p1: real; p1: real; p2,p3: integer; p2,p3: integer; case p4: boolean of { p4: opcjonalne } case p4: boolean of { p4: opcjonalne } false: (k:integer; s:string); false: (k:integer; s:string); true: (t: array [1..10] of real) true: (t: array [1..10] of real)end; reprezentacja pamięciowa rekordu z wariantami reprezentacja pamięciowa rekordu z wariantami
9
Typ rekordowy z wariantami programista odpowiada za poprawną obsługę rekordu programista odpowiada za poprawną obsługę rekordu wszystkie identyfikatory muszą być unikalne wszystkie identyfikatory muszą być unikalne kolejność: najpierw część stała, później zmienna (na jej końcu może być kolejna zmienna, itd.) kolejność: najpierw część stała, później zmienna (na jej końcu może być kolejna zmienna, itd.)
10
Instrukcja wyboru case słowo kluczowe takie samo jak w rekordzie z wariantami. słowo kluczowe takie samo jak w rekordzie z wariantami.
11
Instrukcja wyboru case case wyrażenie of przypadek1: instrukcja1; przypadek1: instrukcja1;...... przypadekn: instrukcjan; przypadekn: instrukcjan; else{opcjonalne} instrukcja instrukcjaend
12
Instrukcja wyboru case case wyrażenie of przypadek1: instrukcja1; przypadek1: instrukcja1;...... przypadekn: instrukcjan; przypadekn: instrukcjan; else{opcjonalne} instrukcja instrukcjaend przypadek to lista wartości takiego typu, jak wyrażenie, (musi to być jeden z typów porządkowych), oddzielonych przecinkami. przypadek to lista wartości takiego typu, jak wyrażenie, (musi to być jeden z typów porządkowych), oddzielonych przecinkami.
13
Instrukcja wyboru case program przyk_case; var Ch: char; begin readln(Ch); readln(Ch); case Ch of case Ch of 'A'..'Z', 'a'..'z': WriteLn('Litera'); 'A'..'Z', 'a'..'z': WriteLn('Litera'); '0'..'9': WriteLn('Cyfra'); '0'..'9': WriteLn('Cyfra'); '+', '-', '*', '/': WriteLn('Operator'); '+', '-', '*', '/': WriteLn('Operator'); else else WriteLn('Znak specjalny'); WriteLn('Znak specjalny'); end; end; end.
14
Stałe Po co nam stałe? Po co nam stałe? jak je deklarujemy? jak je deklarujemy? const nazwa_stałej = wyrażenie; const MaxData = 1024 * 64 - 16; MaxData = 1024 * 64 - 16; NumChars = Ord('Z') - Ord('A') + 1; NumChars = Ord('Z') - Ord('A') + 1; Message = 'Hello world...'; Message = 'Hello world...';
15
Zmienne inicjowane TP umożliwia deklarowanie zmiennych z jednoczesnym nadaniem im początkowej wartości TP umożliwia deklarowanie zmiennych z jednoczesnym nadaniem im początkowej wartości Uwaga: składnia jest myląca! Uwaga: składnia jest myląca! Uwaga: To nie są stałe! Uwaga: To nie są stałe! const nazwa_zmiennej: typ_zmiennej = wartość_początkowa; wartość_początkowa;
16
Zmienne inicjowane const x: real = 299792.458; x: real = 299792.458; r: integer = 1999; r: integer = 1999; s: string = 'Halo'; s: string = 'Halo'; t: array[1..5] of integer = ( 2, 3, 5, 7, 11); t: array[1..5] of integer = ( 2, 3, 5, 7, 11); d: array['x'..'y',0..3] of char = (('a','b','c','d'), d: array['x'..'y',0..3] of char = (('a','b','c','d'), ('e','f','g','h')); ('e','f','g','h')); k: record x,y:real; n:integer end = (x:1.2; y:3.4; n:5); k: record x,y:real; n:integer end = (x:1.2; y:3.4; n:5); tr: array [1..3] of record n,m:integer; t:array[6..7] of char end = tr: array [1..3] of record n,m:integer; t:array[6..7] of char end = ( (n:3; m:5; t:('q','w')), (n:3; m:5; t:('q','w')), (n:8; m:4; t:('e','r')), (n:8; m:4; t:('e','r')), (n:7; m:1; t:('t','y')) (n:7; m:1; t:('t','y')) ); );
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.