podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfpodstawy...

33
Podstawy Podstawy programowania programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi uważnego w nim uczestnictwa. Opracowanie to jest chronione prawem autorskim. Wykorzystywanie jakiegokolwiek fragmentu w celach innych niż nauka własna jest nielegalne. Dystrybuowanie tego opracowania lub jakiejkolwiek jego części oraz wykorzystywanie zarobkowe bez zgody autora jest zabronione. Roman Simiński [email protected] www.us.edu.pl/~siminski Autor Kontakt

Upload: others

Post on 24-May-2020

14 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Podstawy Podstawy programowaniaprogramowania

Proste typy danychw języku Pascal

Część piąta

Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi uważnego w nim uczestnictwa.Opracowanie to jest chronione prawem autorskim. Wykorzystywanie jakiegokolwiek fragmentu w celach innych niż nauka własna jest nielegalne.

Dystrybuowanie tego opracowania lub jakiejkolwiek jego części oraz wykorzystywanie zarobkowe bez zgody autora jest zabronione.

Roman Simiński

[email protected]/~siminski

Autor

Kontakt

Page 2: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Typy danych w języku Pascal ― ogólnieTypy danych w języku Pascal ― ogólniePodstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 2Strona :

Typy danychTypy danych

Typ danych określa zbiór wartości:

do którego należy stała,

które może przyjmować zmienna,

które mogą być generowane przez operatory lub funkcje.

Typ danych określa również operacje jakie można wykonywać na stałych, zmiennych czy wyrażeniach danego typu.

W sensie deklaracji zmiennych — typ danych określa:

jakie wartości może przyjmować zmienna,

jakie wolno na niej wykonywać operacje,

ile pamięci dana zmienna będzie zajmować w pamięci operacyjnej.

Page 3: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Podział typów danych w języku PascalPodział typów danych w języku PascalPodstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 3Strona :

Typy danychTypy danych

Typy danych

Proste(skalarne)

Rzeczywiste

Typ rzeczywistyReal

Typywskaźnikowe Złożone

(strukturalne)

Typytablicowe

Typyrekordowe

Typyplikowe

Typyzbiorowe

Porządkowe

Typ logicznyBoolean

Typ całkowityInteger

Typ znakowyChar

Typywyliczeniowe

Typyokrojone

Typy rzeczywistewiększej prcyzji Typy standardowe (wbudowane)

Typy zależne od implementacji

Inne typycałkowite

Page 4: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Typy porządkoweTypy porządkowePodstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 4Strona :

Typy danychTypy danych

Porządkowe

Typ logicznyBoolean

Typ całkowityInteger

Typ znakowyChar

Typywyliczeniowe

Typyokrojone

Inne typycałkowite

Ord — liczba porządkowa elementu w danym typie,

Succ — wyznacza następnika (następny element w typie),

Pred — wyznacza poprzednika (poprzedni element w typie).

Dla dowolnego typu porządkowego określone są funkcje:

Page 5: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Predefiniowane typy porządkowe ― typ IntegerPredefiniowane typy porządkowe ― typ IntegerPodstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 5Strona :

Typy danychTypy danych

Zakres wartości : zależy od implementacji, zdefiniowana z wykorzystaniem stałej MaxInt:

-MaxInt, -MaxInt + 1, ..., -1, 0, 1, ..., MaxInt –1, MaxInt

Dozwolone operacje :

dodawanie (+),

odejmowanie (-),

mnożenie (*),

dzielenie całkowite (Div),

wyznaczanie reszty z dzielenie (Mod).

Integer — typ całkowity, w reprezentacji komputerowej jest to podzbiór zbioru liczb całkowitych.

Z := 5 Div 2;

Z ← 2 a nie 2.5

Page 6: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Predefiniowane typy porządkowe ― typ IntegerPredefiniowane typy porządkowe ― typ IntegerPodstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 6Strona :

Typy danychTypy danych

Dla operatorów Div i Mod spełnione jest:

( m div n ) * n + ( m mod n ) = m

W języku Pascal, do dzielenia liczb całkowitych używa się operatora Div.

Wynik dzielenia jest również liczbą całkowitą.

Var I : Integer;. . .WriteLn( 5 Div 2 );

I := 7 Div 3;WriteLn( I );

22

WriteLn( '5 Div 2 =' , 5 Div 2 );WriteLn( '5 Mod 2 =' , 5 Mod 2 );

I := 11 Div 3;WriteLn( I );

I := 11 Mod 3;WriteLn( I );

2132

Page 7: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Zastosowanie operatorów Div i ModZastosowanie operatorów Div i ModPodstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 7Strona :

Typy danychTypy danych

Problem

Liczba określająca rok, możne oznaczać rok zwykły lub przestępny. Napisać program, sprawdzający czy wczytany z klawiatury rok, jest rokiem przestępnym.

Analiza

Rok przestępny w kalendarzu gregoriańskim to taki, w którym luty ma 29 dni zamiast 28, a zatem rok przestępny ma 366 dni zamiast 365.

Obecnie powszechnie stosuje się taką właśnie regułę, wprowadzoną w 1582 roku dekretem papieża Grzegorza XIII, w której rok przestępny (liczbowo) spełnia następujące warunki:

jest podzielny przez 4,

ale nie jest podzielny przez 100,

chyba że jest podzielny przez 400.

Page 8: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Zastosowanie operatorów Div i ModZastosowanie operatorów Div i ModPodstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 8Strona :

Typy danychTypy danych

Rok przestępny

Rok przestępny

Rok zwykły

Rok zwykły

true falserokpodzielny przez

400

rokpodzielny przez

100

rokpodzielny przez

4

true false

true false

Stop

Wczytaj rok

Start

Page 9: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Jak sprawdzić podzielność liczby określające rok?Jak sprawdzić podzielność liczby określające rok?Podstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 9Strona :

Typy danychTypy danych

Page 10: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Wykorzystanie operatora Mod do testowania podzielnościWykorzystanie operatora Mod do testowania podzielnościPodstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 10Strona :

Typy danychTypy danych

Załóżmy deklarację:

Warunek logiczny pozwalający testować podzielność zmiennej Rok:

Var Rok : Integer;

Rok Mod 400 = 0

jest:

prawdziwy, gdy rok jest podzielny przez 400 (reszta z dzielenia równa zero),

fałszywy, gdy rok nie jest podzielny przez 400 (reszta z dzielenia różna od zera).

Page 11: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Operator Mod i instrukcja If-ThenOperator Mod i instrukcja If-ThenPodstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 11Strona :

Typy danychTypy danych

If Rok Mod 400 = 0 Then WriteLn( 'Przestepny');

If Rok Mod 400 = 0 Then WriteLn( 'Przestepny');

If ( Rok Mod 400 ) = 0 Then WriteLn( 'Przestepny');

Ze względu na obowiązujące w języku Pascal priorytety operatorów, można napisać tak:

lub

Page 12: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Przykładowa realizacja z wykorzystaniem trzech instrukcji warunkowychPrzykładowa realizacja z wykorzystaniem trzech instrukcji warunkowychPodstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 12Strona :

Typy danychTypy danych

Program RokPrzestepny1;Var Rok : Integer;

Begin Write( 'Podaj rok: ' ); ReadLn( Rok );

If ( Rok Mod 400 ) = 0 Then WriteLn( 'Przestepny' ) Else If ( Rok Mod 100 ) = 0 Then WriteLn( 'Zwykly' ) Else If ( Rok Mod 4 ) = 0 Then WriteLn( 'Przestepny' ) Else WriteLn( 'Zwykly' );End.

Page 13: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Wykorzystanie operatorów logicznych do testowania przestępności rokuWykorzystanie operatorów logicznych do testowania przestępności rokuPodstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 13Strona :

Typy danychTypy danych

Program RokPrzestepny2;Var Rok : Integer;

Begin Write( 'Podaj rok: ' ); ReadLn( Rok );

If (Rok Mod 400 = 0) Or ((Rok Mod 4 = 0) And Not(Rok Mod 100 = 0)) Then WriteLn( 'Przestepny' ) Else WriteLn( 'Zwykly' );End.

Nawiasy w tym wyrażeniu są konieczne — wymaga tego język Pascal

( Rok Mod 400 = 0 ) Or ( ( Rok Mod 4 = 0 ) And Not ( Rok Mod 100 = 0 ) )

Operatory Div i Mod wymagają zastosowania spacji wokół nich. Bez spacji kompilator będzie traktował takie zbitki jako identyfikatory, np.:

RokMod 400 = 0    lub    Rok Mod400 = 0

Page 14: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Typy całkowite i ich zakresyTypy całkowite i ich zakresyPodstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 14Strona :

Typy danychTypy danych

Nazwa typu Zakres Format wewnętrzny Shortint -128..127 8-bitów Integer -32768..32767 16-bitów Longint -2147483648..2147483647 32-bity Byte 0..255 8-bitów Word 0..65535 16-bitów

Turbo Pascal 7.0

Delphi Pascal 7.0

Nazwa typu Zakres Format wewnętrzny Integer -2147483648..2147483647 32-bity Cardinal 0..4294967295 32-bity Shortint -128..127 8-bitów Smallint -32768..32767 16-bitów Longint -2147483648..2147483647 32-bity Int64 -2^63..2^63-1 64-bity Byte 0..255 8-bitów Word 0..65535 16-bitów Longword 0..4294967295 32-bity

Page 15: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Typy całkowite i ich zakresy, cd. ...Typy całkowite i ich zakresy, cd. ...Podstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 15Strona :

Typy danychTypy danych

Dev-Pascal (z kompilatorem GNU Pascal — GPC)

Nazwa typu Zakres Format wewnętrzny ByteInt -128..128 8-bitów Byte 0..255 8-bitów ShortInt -32768..32767 16-bitów ShortWord 0..65535 16-bitów Integer -2147483648..2147483647 32-bity Word 0..4294967295 32-bity MedInt -2147483648..2147483647 32-bity MedWord 0..4294967295 32-bity LongInt -9223372036854775808

..9223372036854775807 64-bity

LongWord 0..18446744073709551615 64-bity LongestInt -9223372036854775808

..9223372036854775807 64-bity

LongestWord 0..18446744073709551615 64-bity Comp -9223372036854775808

..9223372036854775807 64-bity

SmallInt -32768..32767 16-bitów

Page 16: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Typy całkowite i ich zakresy, cd. ...Typy całkowite i ich zakresy, cd. ...Podstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 16Strona :

Typy danychTypy danych

Free Pascal — fragment dokumentacji pakietu

Page 17: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Predefiniowane typy porządkowe ― typ BooleanPredefiniowane typy porządkowe ― typ BooleanPodstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 17Strona :

Typy danychTypy danych

Boolean — typ logiczny, przeznaczony do reprezentowania wartości odpowiadających logicznej prawdzie lub fałszowi.

Zakres wartości — zawsze jedna z dwóch, predefiniowanych wartości:

True (prawda)

lub

False (fałsz).

Dozwolone operacje :

koniunkcja And,

alternatywa Or,

negacja Not.

Page 18: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Wykorzystanie typu BooleanWykorzystanie typu BooleanPodstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 18Strona :

Typy danychTypy danych

Program BooleanWAkcji;Var JestKobieta : Boolean; Znak : Char;

Begin Repeat WriteLn( 'Podaj plec osoby' ); Write( 'K - kobieta, M - mezczyzna: ' ); ReadLn( Znak ); Until Znak In [ 'K', 'k', 'M', 'm' ];

If Znak In [ 'K', 'k' ] Then JestKobieta := True Else JestKobieta := False;

{ cos tam }

Page 19: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Wykorzystanie typu Boolean, cd. ...Wykorzystanie typu Boolean, cd. ...Podstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 19Strona :

Typy danychTypy danych

{ cos tam }

If Not JestKobieta Then Begin WriteLn( 'Podaj numer WKU: ' );

{ cos tam }

End Else Begin WriteLn( 'Czy wykorzystano urlop macierzynski?' );

{ cos tam }

EndEnd.

Page 20: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Wykorzystanie typu Boolean, cd. ...Wykorzystanie typu Boolean, cd. ...Podstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 20Strona :

Typy danychTypy danych

If Znak In [ 'K', 'k' ] Then JestKobieta := TrueElse JestKobieta := False;

JestKobieta := Znak In [ 'K', 'k' ];

można napisać prościej:

Zamiast wykorzystania instrukcji warunkowej:

If ( Znak = 'K' ) Or ( Znak = 'k' ) Then JestKobieta := TrueElse JestKobieta := False;

JestKobieta := ( Znak = 'K' ) Or ( Znak = 'k' );

lub prościej:

Zapis bez wykorzystania zbiorów:

Page 21: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Predefiniowane typy porządkowe ― typ CharPredefiniowane typy porządkowe ― typ CharPodstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 21Strona :

Typy danychTypy danych

Char — typ znakowy, obejmujący zbiór znaków używanych do komunikacji z człowiekiem (monitor, klawiatura, drukarka, tekstowe transfery sieciowe).

0 A a1 . . .. . .. . . . . . . . .. . .

. . . . . . . . .. . .. . .

. . .. . . . . .

B b9 Z zCyfry Duże litery Małe litery

0Kod: 48 49 57 65 66 90 97 98 122 255Znak:

Uporządkowanie liter i cyfr w kodzie ASCII

spójne obszary kodowe

Zakres wartości : konkretny wykaz znaków oraz sposób ich uporządkowania zależy od implementacji.

Jednak najpopularniejsze jest kodowanie znaków według ASCII (American Standard Code for Information Interchange).

'K' '@' 's' 'k' '2' '%' itp., itd. ... Literały znakowe

Page 22: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Predefiniowane typy porządkowe ― typ Char, cd. ...Predefiniowane typy porządkowe ― typ Char, cd. ...Podstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 22Strona :

Typy danychTypy danych

Dla typu Char określona jest — jak dla każdego typu porządkowego — funkcja Ordoraz charakterystyczna dla typu znakowego funkcja Chr:

Funkcja Ord dla typu Char określa numer porządkowy znaku w zbiorze znaków. Dla kodu ASCII jest to po prostu kod znaku wg. tabeli kodów ASCII.

Funkcja Chr pozwala przekształcić liczbę całkowitą (wartość typu Integer) w znak (o ile tej liczbie jakiś znak odpowiada). Jeżeli znamy kod pewnego znaku, możemy przy użyciu funkcji Chr otrzymać odpowiadający mu znak.

Ord( ’A’ )

65

Chr( )65

’A’

65

Ord( 65Chr( ) )’A’

’A’

Chr( Ord( ’A’ ) )65

Page 23: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Typ Char to rzeczywiście typ porządkowyTyp Char to rzeczywiście typ porządkowyPodstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 23Strona :

Typy danychTypy danych

Program Znaki;Var C : Char;

Begin For C := 'A' To 'Z' Do WriteLn( C, Chr( Ord( C ) + 32 ) );End.

If ( C >= 'A' ) And ( C <= 'Z' ) Then C := Chr( Ord( C ) + 32 );

Zamiana znaku w zmiennej C na literę małą (kod ASCII):

If ( C >= 'a' ) And ( C <= 'z' ) Then C := Chr( Ord( C ) - 32 );

Zamiana znaku w zmiennej C na literę dużą (kod ASCII):

Page 24: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Typ Char a kodowanie ASCIITyp Char a kodowanie ASCIIPodstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 24Strona :

Typy danychTypy danych

Program AsciiTable;Var Code : Integer;

Begin WriteLn; Code := 32; Repeat Write( Code : 6, ' ', Chr( Code ) ); Write( Code + 1 : 6, ' ', Chr( Code + 1 ) ); Write( Code + 2 : 6, ' ', Chr( Code + 2 ) ); Write( Code + 3 : 6, ' ', Chr( Code + 3 ) ); WriteLn; Code := Code + 4; Until Code > 127;End.

Uwaga — mimo, że kodowanie ASCII wydaje sie standardem obecnym wszędzie, może się zdarzyć platforma sprzętowo systemowa, kodująca znaki inaczej.

Page 25: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Typy porządkowe definiowane przez programistę ― typy wyliczenioweTypy porządkowe definiowane przez programistę ― typy wyliczeniowePodstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 25Strona :

Typy danychTypy danych

Typy wyliczeniowe — typy definiowane przez programistę. Typ wyliczeniowy jest to uporządkowany i skończony zbiór wartości oznaczonych różnymi, wybranymi przez programistę identyfikatorami.

Typy wyliczeniowe służą do reprezentowania w programie niewielkich zbiorów wartości, na których nie wykonuje się operacji arytmetycznych.

Typy te najczęściej reprezentują pewne abstrakcyjne, nienumeryczne pojęcia.

Dwa różne typy wyliczeniowe nie mogą mieć wspólnych wartości.

Page 26: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Typy porządkowe definiowane przez programistę ― typy wyliczenioweTypy porządkowe definiowane przez programistę ― typy wyliczeniowePodstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 26Strona :

Typy danychTypy danych

Typy wyliczeniowe się definiuje ― programista sam określa nazwę typu oraz wylicza jego wartości, stąd nazwa ― typy wyliczeniowe.

Type Ksztalt = ( Prostokat, Trojkat, Kwadrat, Elipsa, Okag ); Plec = ( Kobieta, Mezczyzna ); RGBColors = ( Red, Green, Blue ); TypNadwozia = ( Sedan, Coupe, Hatchback, Liftback ); Rejestry = ( AX, BX, CX, DX, SI, DI, SS, DS ); Direction = ( North, East, South, West );

Definicja przykładowych typów wyliczeniowych:

Page 27: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Typy wyliczeniowe w akcjiTypy wyliczeniowe w akcjiPodstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 27Strona :

Typy danychTypy danych

Program Auta;

Type TypNadwozia = ( Sedan, Coupe, Hatchback );

Var Nadwozie : TypNadwozia; Znak : Char;

Begin WriteLn( 'Wybierz typ nadwozia:' ); WriteLn( '1. Sedan' ); WriteLn( '2. Coupe' ); WriteLn( '3. Hatchback' ); Write( '>'); ReadLn( Znak );

Case Znak Of '1' : Nadwozie := Sedan; '2' : Nadwozie := Coupe; '3' : Nadwozie := Hatchback; End; { Case }

{ cos tam }

Sekcja definicji typów

Sekcja definicji zmiennych

Page 28: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Typy wyliczeniowe w akcji, cd. ...Typy wyliczeniowe w akcji, cd. ...Podstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 28Strona :

Typy danychTypy danych

{ cos tam }

WriteLn( 'Polecamy najnowszy model naszego auta.' ); If Nadwozie = Sedan Then WriteLn( 'To elegancka limuzyna!' );

If Nadwozie = Coupe Then WriteLn( 'To unikatowa sportowa linia!' );

If Nadwozie = Hatchback Then WriteLn( 'To wygodny samochod rodzinny!' );End.

Page 29: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Instrukcja Case czasem świetnie zastępuje wiele instrukcji If-ThenInstrukcja Case czasem świetnie zastępuje wiele instrukcji If-ThenPodstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 29Strona :

Typy danychTypy danych

If Nadwozie = Sedan Then WriteLn( 'To elegancka limuzyna!' );

If Nadwozie = Coupe Then WriteLn( 'To unikatowa sportowa linia!' );

If Nadwozie = Hatchback Then WriteLn( 'To wygodny samochod rodzinny!' );

Case Nadwozie Of Sedan : WriteLn( 'To elegancka limuzyna!' ); Coupe : WriteLn( 'To unikatowa sportowa linia!' ); Hatchback : WriteLn( 'To wygodny samochod rodzinny!' );End; {Case}

Zamiast trzech instrukcji warunkowych:

Jedna instrukcja wyboru:

Page 30: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Typy wyliczeniowe są typami porządkowymiTypy wyliczeniowe są typami porządkowymiPodstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 30Strona :

Typy danychTypy danych

For Nadwozie := Sedan To Hatchback Do Case Nadwozie Of Sedan : WriteLn( 'Sedan' ); Coupe : WriteLn( 'Coupe' ); Hatchback : WriteLn( 'Hatchback' ); End; {Case}

WriteLn( 'Liczba wersji nadwozia :', Ord( Hatchback ) + 1 );

Type Boolean = ( False, True );

. . .

WriteLn( Ord( False ) );WriteLn( Ord( True ) );

Typ Boolean jest predefiniowanym typem wyliczeniowym

01

Page 31: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Typy porządkowe definiowane przez programistę ― typy okrojoneTypy porządkowe definiowane przez programistę ― typy okrojonePodstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 31Strona :

Typy danychTypy danych

Typy okrojone — typ okrojony jest to podzbiór wartości pewnego, porządkowego typu pierwotnego. Wartości te są nie mniejsze niż ograniczenie dolne i nie większe niż ograniczenie górne.

Type nazwa_typu_okrojonego = ograniczenie_dolne .. ograniczenie_górne;

Oba ograniczenia muszą być stałymi tego samego typu porządkowego (zwanego typem pierwotnym), ograniczenie dolne nie może być większa niż ograniczenie górne.

Zmienne typu okrojonego mają wszystkie właściwości zmiennej typu pierwotnego z wyjątkiem wartości — mogą przyjmować jedynie wartości należące do przedziału podanego w definicji typu okrojonego.

Page 32: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Definicja przykładowych typów wyliczeniowychDefinicja przykładowych typów wyliczeniowychPodstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 32Strona :

Typy danychTypy danych

Program Test;Type DuzaLitera = 'A' .. 'Z'; Rejestry = ( AX, BX, CX, DX, SI, DI, SS, DS ); RejestryPodstawowe = AX .. DX; PierwszaSetka = 1 .. 100; BitType = 0 .. 1;Var DL : DuzaLitera; PR : RejestryPodstawowe; A, B : PierwszaSetka; B1, B2, B3 : BitType;

Begin DL := 'R'; { OK } DL := 'r'; { Bł d kompilacji }ą PR := BX; { OK } PR := DI; { Bł d kompilacji }ą A := -1; { Bł d Kompilacji }ą A := 50; { OK } B := 3 * A; { Bł d wykonania }ą B1 := 1; { OK } B2 := 1; { OK } B3 := B1 + B2;{ Bł d wykonania }ąEnd.

Page 33: Podstawy programowaniaprogramowanie.siminskionline.pl/resource/pp_pas/pp_w_05.pdfPodstawy programowania Proste typy danych w języku Pascal Część piąta Niniejsze opracowanie zawiera

Typ Real nie jest typem porządkowymTyp Real nie jest typem porządkowymPodstawy programowaniaPodstawy programowania

Copyright © Roman Simiński 33Strona :

Typy danychTypy danych

Real — typ całkowity, w reprezentacji komputerowej jest to podzbiór zbioru liczb rzeczywistych. Format liczby jest zwykle zgodny ze specyfikacją IEEE.

Konkretny zakres wartości i typy o większej precyzji są zależne od implementacji.

Free Pascal — fragment dokumentacji pakietu