Podstawy programowania



Podobne dokumenty
Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

Wstęp do programowania. Różne różności

Podstawy programowania

Podstawy programowania w języku C i C++

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Podstawy programowania

Wstęp do programowania

Podstawy programowania

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

typ zakres sposob zapamietania shortint integer bajty (z bitem znaku) longint byte word

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

Pascal - wprowadzenie

Programowanie Delphi obliczenia, schematy blokowe

Instrukcje podsumowanie. Proste: - przypisania - wejścia-wyjścia (read, readln, write, writeln) - pusta - po prostu ; (średnik) Strukturalne:

Algorytmy i struktury danych

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1

Algorytmy i struktury danych. wykład 1

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Podstawy programowania

Język programowania PASCAL

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

Instrukcja standardowa Writeln

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Podstawy programowania

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma};

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

Wprowadzenie do programowania w języku C

Podstawy Programowania C++

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Wprowadzenie do języka Pascal

Algorytmika i Programowanie VBA 1 - podstawy

Informatyka 1. Przetwarzanie tekstów

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

ForPascal Interpreter języka Pascal

Podstawy programowania w języku C++

Podstawy Programowania Podstawowa składnia języka C++

Podstawy programowania skrót z wykładów:

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

3. Instrukcje warunkowe

Wykład III PASCAL - iteracja cz, 2, - liczby losowe, - tablice

Informatyka 1. Wyrażenia i instrukcje cd., ręczna symulacja, operacje wejścia/wyjścia

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

Podstawy programowania w języku C

20. Pascal i łączenie podprogramów Pascala z programem napisanym w C

WIADOMOŚCI WSTĘPNE WPROWADZENIE DO JĘZYKA TURBO PASCAL. Klawisze skrótów. {to jest właśnie komentarz, moŝna tu umieścić dowolny opis}

Podstawy programowania C. dr. Krystyna Łapin

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Programowanie w Turbo Pascal

1 Podstawy c++ w pigułce.

Podstawy programowania w języku C++

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze

Lekcja 6: Pascal. Procedura i funkcja

Visual Basic for Application (VBA)

PODSTAWY PROGRAMOWANIA

Podstawy programowania

Programowanie RAD Delphi

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

PASCAL Kompendium. Środowisko TURBO PASCAL Skróty klawiaturowe. Edycja kodu Pomoc spis treści. Skopiowanie zaznaczonego bloku do schowka

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Zasady Programowania Strukturalnego

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Podstawy programowania

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Programowanie komputerowe. Zajęcia 1

Wykład I Cyfrowa reprezentacja informacji Algorytmy metody prezentacji i zapisu Tablice (wstęp) Rzut okiem na języki programowania

Instrukcja warunkowa i wyboru

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Język ludzki kod maszynowy

C++ wprowadzanie zmiennych

Odczyt danych z klawiatury Operatory w Javie

Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL

Warunki logiczne instrukcja if

Przykład programu Rozwiązanie równania postaci:

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński

Ćwiczenie 2 Wczytywanie i zapisywanie do plików tekstowych

Wprowadzenie komentarzy do programu

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe

Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Ćwiczenie 1. Podstawy. Wprowadzenie do programowania w języku C. Katedra Metrologii AGH

Języki programowania zasady ich tworzenia

Ada 95 #1/5 - typy. Typy skalarne. Hierarchia typów w Adzie. Typ znakowy. Typy dyskretne. Plan wykładu

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Obsługa klawiszy specjalnych

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu

Podstawy i języki programowania

Wstęp do informatyki- wykład 5 Instrukcja selekcji if-else Operatory arytmetyczne i logiczne

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Konstrukcja alternatywy

OPERACJE NA PLIKACH. Podstawowe pojęcia:

Programowanie. Wprowadzanie danych i wyprowadzanie wyników. Klasa 2 Lekcja 24 WEJŚCIE/WYJŚCIE

1 Podstawy c++ w pigułce.

Wstęp do informatyki- wykład 2

dr inż. Jarosław Forenc

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Transkrypt:

Podstawy programowania Część piąta Proste typy danych w języku Pascal Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski 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.

w języku Pascal ogólnie 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. Copyright Roman Simiński Strona : 2

Podział typów danych w języku Pascal Proste (skalarne) Typy wskaźnikowe Złożone (strukturalne) Rzeczywiste Porządkowe Typy plikowe Typy zbiorowe Typ rzeczywisty Real Typ logiczny Boolean Typy wyliczeniowe Typy rekordowe Typy tablicowe Typ znakowy Char Typy okrojone Typy zależne od implementacji Typy rzeczywiste większej prcyzji Typ całkowity Integer Inne typy całkowite Typy standardowe (wbudowane) Copyright Roman Simiński Strona : 3

Typy porządkowe Porządkowe Typ logiczny Boolean Typy wyliczeniowe Typ znakowy Char Typy okrojone Typ całkowity Integer Inne typy całkowite Dla dowolnego typu porządkowego określone są funkcje: Ord liczba porządkowa elementu w danym typie, Succ wyznacza następnika (następny element w typie), Pred wyznacza poprzednika (poprzedni element w typie). Copyright Roman Simiński Strona : 4

Predefiniowane typy porządkowe typ Integer Integer typ całkowity, w reprezentacji komputerowej jest to podzbiór zbioru liczb całkowitych. 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), Z := 5 Div 2; Z 2 a nie 2.5 wyznaczanie reszty z dzielenie (Mod). Copyright Roman Simiński Strona : 5

Predefiniowane typy porządkowe typ Integer W języku Pascal, do dzielenia liczb całkowitych używa się operatora Div. Wynik dzielenia jest również liczbą całkowitą. Dla operatorów Div i Mod spełnione jest: ( m div n ) * n + ( m mod n ) = m Var I : Integer;... WriteLn( 5 Div 2 ); 2 2 I := 7 Div 3; WriteLn( I ); WriteLn( '5 Div 2 =', 5 Div 2 ); WriteLn( '5 Mod 2 =', 5 Mod 2 ); I := 11 Div 3; WriteLn( I ); 2 1 3 2 I := 11 Mod 3; WriteLn( I ); Copyright Roman Simiński Strona : 6

Zastosowanie operatorów Div i Mod 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. Copyright Roman Simiński Strona : 7

Zastosowanie operatorów Div i Mod Start Wczytaj rok true rok podzielny przez 400 false Rok przestępny true rok podzielny przez 100 false Rok zwykły true rok podzielny przez 4 false Rok przestępny Rok zwykły Stop Copyright Roman Simiński Strona : 8

Jak sprawdzić podzielność liczby określające rok? Copyright Roman Simiński Strona : 9

Wykorzystanie operatora Mod do testowania podzielności Załóżmy deklarację: Var Rok : Integer; Warunek logiczny pozwalający testować podzielność zmiennej Rok: 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). Copyright Roman Simiński Strona : 10

Operator Mod i instrukcja If-Then 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: If Rok Mod 400 = 0 Then WriteLn( 'Przestepny'); lub If ( Rok Mod 400 ) = 0 Then WriteLn( 'Przestepny'); Copyright Roman Simiński Strona : 11

Przykładowa realizacja z wykorzystaniem trzech instrukcji warunkowych 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. Copyright Roman Simiński Strona : 12

Wykorzystanie operatorów logicznych do testowania przestępności roku 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 Copyright Roman Simiński Strona : 13

Typy całkowite i ich zakresy Turbo Pascal 7.0 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 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 Copyright Roman Simiński Strona : 14

Typy całkowite i ich zakresy, cd.... 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 64-bity..9223372036854775807 LongWord 0..18446744073709551615 64-bity LongestInt -9223372036854775808 64-bity..9223372036854775807 LongestWord 0..18446744073709551615 64-bity Comp -9223372036854775808 64-bity..9223372036854775807 SmallInt -32768..32767 16-bitów Copyright Roman Simiński Strona : 15

Typy całkowite i ich zakresy, cd.... Free Pascal fragment dokumentacji pakietu Copyright Roman Simiński Strona : 16

Predefiniowane typy porządkowe typ Boolean 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. Copyright Roman Simiński Strona : 17

Wykorzystanie typu Boolean 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 } Copyright Roman Simiński Strona : 18

Wykorzystanie typu Boolean, cd.... { cos tam } If Not JestKobieta Then Begin WriteLn( 'Podaj numer WKU: ' ); { cos tam } End Else Begin WriteLn( 'Czy wykorzystano urlop macierzynski?' ); End End. { cos tam } Copyright Roman Simiński Strona : 19

Wykorzystanie typu Boolean, cd.... Zamiast wykorzystania instrukcji warunkowej: If Znak In [ 'K', 'k' ] Then JestKobieta := True Else JestKobieta := False; można napisać prościej: JestKobieta := Znak In [ 'K', 'k' ]; Zapis bez wykorzystania zbiorów: If ( Znak = 'K' ) Or ( Znak = 'k' ) Then JestKobieta := True Else JestKobieta := False; lub prościej: JestKobieta := ( Znak = 'K' ) Or ( Znak = 'k' ); Copyright Roman Simiński Strona : 20

Predefiniowane typy porządkowe typ Char Char typ znakowy, obejmujący zbiór znaków używanych do komunikacji z człowiekiem (monitor, klawiatura, drukarka, tekstowe transfery sieciowe). 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). Uporządkowanie liter i cyfr w kodzie ASCII Znak: spójne obszary kodowe Cyfry Duże litery Małe litery... 0 1... 9... A B... Z... a b... z........................ Kod: 0 48 49 57 65 66 90 97 98 122 255 'K' '@' 's' 'k' '2' '%' itp., itd.... Literały znakowe Copyright Roman Simiński Strona : 21

Predefiniowane typy porządkowe typ Char, cd.... Dla typu Char określona jest jak dla każdego typu porządkowego funkcja Ord oraz 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 ) Chr( 65 ) 65 A Chr( Ord( A ) ) 65 A Ord( Chr( 65 ) ) 65 A Copyright Roman Simiński Strona : 22

Typ Char to rzeczywiście typ porządkowy Program Znaki; Var C : Char; Begin For C := 'A' To 'Z' Do WriteLn( C, Chr( Ord( C ) + 32 ) ); End. 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): If ( C >= 'a' ) And ( C <= 'z' ) Then C := Chr( Ord( C ) - 32 ); Copyright Roman Simiński Strona : 23

Typ Char a kodowanie ASCII Uwaga mimo, że kodowanie ASCII wydaje sie standardem obecnym wszędzie, może się zdarzyć platforma sprzętowo systemowa, kodująca znaki inaczej. 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. Copyright Roman Simiński Strona : 24

Typy porządkowe definiowane przez programistę typy wyliczeniowe 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. Copyright Roman Simiński Strona : 25

Typy porządkowe definiowane przez programistę typy wyliczeniowe Typy wyliczeniowe się definiuje programista sam określa nazwę typu oraz wylicza jego wartości, stąd nazwa typy wyliczeniowe. Definicja przykładowych typów wyliczeniowych: 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 ); Copyright Roman Simiński Strona : 26

Typy wyliczeniowe w akcji Program Auta; Type TypNadwozia = ( Sedan, Coupe, Hatchback ); Var Nadwozie : TypNadwozia; Znak : Char; Sekcja definicji typów Sekcja definicji zmiennych 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 } Copyright Roman Simiński Strona : 27

Typy wyliczeniowe w akcji, cd.... { 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. Copyright Roman Simiński Strona : 28

Instrukcja Case czasem świetnie zastępuje wiele instrukcji If-Then Zamiast trzech instrukcji warunkowych: 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!' ); Jedna instrukcja wyboru: Case Nadwozie Of Sedan : WriteLn( 'To elegancka limuzyna!' ); Coupe : WriteLn( 'To unikatowa sportowa linia!' ); Hatchback : WriteLn( 'To wygodny samochod rodzinny!' ); End; {Case} Copyright Roman Simiński Strona : 29

Typy wyliczeniowe są typami porządkowymi 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 ); Typ Boolean jest predefiniowanym typem wyliczeniowym Type Boolean = ( False, True );... WriteLn( Ord( False ) ); WriteLn( Ord( True ) ); 0 1 Copyright Roman Simiński Strona : 30

Typy porządkowe definiowane przez programistę typy okrojone 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. Copyright Roman Simiński Strona : 31

Definicja przykładowych typów wyliczeniowych 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. Copyright Roman Simiński Strona : 32

Typ Real nie jest typem porządkowym 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 Copyright Roman Simiński Strona : 33