Rodzaje deklaracji zmiennych


Programem wykonywalnym jest tylko program kompletny. Program kompletny składa się z modułu głównego, nazywanego krótko programem oraz zmiennych, zmiennych i procedur, pochodzących z modułów bibliotecznych nazywanych bibliotekami.

W ogólnym przypadku, deklaracja programu ma postać:

program name;

uses liblist;

błock.

w której name Jest nazwą programu, liblist \es\. listą identyfikatorów bibliotek, a block jest blokiem.

Poprawna jest również deklaracja, w której pominięto nagłówek programu

program name;

wyszczególnienie modułów

uses

liblist;

albo oba te napisy.

Blok składa się z części deklaracyjnej i wykonawczej. Część deklaracyjna składa się z zestawu deklaracji etykiet, z zestawu deklaracji typów, zestawu deklaracji zmiennych niezainicjowanych, zestawu deklaracji zmiennych zainicjowanych i symboli oraz z zestawu deklaracji procedury. Każdy z wymienionych zestawów deklaracji może być pominięty, albo może występować wielokrotnie i w dowolnym porządku. Należy to rozumieć w taki sposób, iż na przykład po zestawie deklaracji typów może wystąpić zestaw deklaracji procedur, po nim znowu zestaw deklaracji typów, itd. Część wykonawcza programu jest bardzo prosta . Składa się z pojedynczej instrukcji grupującej. Przykłady: struktura programu:

a) Program z nagłówkiem i wyszczególnieniem modułów

program Hello;

uses

Crt.Printer;

begin

CIrScr; {Clear Screen}

Write('Hello worid');

Writeln(Lst,'Hello, l am JdnB')

end.

Program Hello składa się z nagłówka, wyszczególnienia modelów, instrukcji grupującej i znaku . (kropka). Wykonanie programu powoduje wyprowadzenie na ekran monitora napisu Hefla worid, a na drukarkę napisu Hello. l am JanB.

b) Program bez nagłówka i wyszczególnienia modułów:

var

Dividend,Divisor: real;

begin

Write('Dividend =');

Readln(Dividend);

Write('Divisor =');

Readln(Divisor);

Writeln('Quotient = ',Dividend / Divisor :0:3)

end.

Program składa się z bloku i znaku . (kropka). Blok .składa się z deklaracji zmiennych niezainicjowanych instrukcji grupującej. Pierwszą jednostką leksykalną deklaracji zmiennych

niezainicjowanych jest .słowo kluczowe var, a ostatnią najbliższy znak (średnik). Wykonanie programu powoduje wprowadzenie dwóch liczb, a następnie wyprowadzenie ich ilorazu.

Deklaracje etykiet

Każda instrukcja programu (z wyjątkiem instrukcji grupującej stanowiącej część wykonawczą bloku) może być opatrzona etykietą. Etykieta ma postać identyfikatora albo postać liczby całkowitej dziesiętnej bez znaku o wartości mniejszej niż 10000. Każda etykieta musi być zadeklarowana. Zera wiodące nie rozróżniają etykiet.

Deklaracja etykiety ma postać

label

lab, lab, ... ,lab;

w której każde lab jest nazwa etykiety.

Przykład Deklaracje etykiet

label 25, Abort, Quit;

label

9999, Again;

Napisy 25, Abort, Qnit, 9999 ; Again są nazwami etykiet.

Deklaracje typów

Zadeklarowanie zmiennej programu polega na określeniu nazwy zmiennej i podaniu jej typu. Typ może być predeklarowanym typem standardowym, albo może zostać zadeklarowany jawnie.

Deklaracja typu ma postać:

type

id = type;

id = type;

...

id = type;

w której każde id jest identyfikatorem typu, a każde type j est opisem typu.

Przykłady Deklaracje typów

Type

whole = integer;

{opis typu standardowego}

Colour= (Red,Green,Blue,Orange);

{opis typu wyliczeniowego}

RGB= Red..Blue;

{opis typu okrojonego}

Name: string[12];

{opis typu łańcuchowego}

StringPtr = "Name;

{opis typu wskazującego nieproceduralnego} Math = function (var = First : real) :

extended;

{opis typu wskazującego procedurowego}

Table = array[1..5,1..5] of RGB;

{opis typu tablicowego}

Person = record

FirsName: string[5];

LastName: Name;

Age : byte

end;

{opis typu rekordowego}

Letters = set of 'a'..'z';

{opis typu mnogościowego}

DataBank = file of Person;

{opis typu plikowego}

Typ Whole jest synonimem .standardowego typu całkowitego integer Tylu Colour jest wyliczeniowy, RGB okrojony. Name ftańcuchowy, StringPtr i Math wskazujący, Table tablicowy. Person rekordowy. Letters mnogościowy, a DataBank plikowy.

Deklaracje zmiennych niezainicjowanych

Każda zmienna programu musi być zadeklarowana przed jej użyciem. W chwili utworzenia można przypisać zmiennej daną początkową. Zmienna, która jest tworzona bez przypisania jej danej początkowej jest nazywana zmienna niezainicjowaną.

Deklaracje zmiennych niezainicjowanych mają postać

Var

id, id, . . ., id : type ;

id, id, . .. , id : type ;

id, id,., id: type

w której każde id jest identyfikatorem zmiennej, a każde (type jest opisem typu. Szczególnym rodzajem

deklaracji zmiennej niezainicjowanej jest deklaracja zmiennej nałożonej. Ma ona postać:

id : type absolute base;

w której id jest identyfikatorem zmiennej, type jest opisem typu, a base jest nazwą uprzednio zadeklarowanej zmiennej bazowej albo adresem pomięci o postaci segment; offset w której segment i offset są liczbami całkowitymi bez znaku. Przyjmuje się że początek obszaru pamięci przydzielonego zmiennej nałożonej pokrywa się, z początkiem obszaru pamięci przydzielonego zmiennej bazowej albo znajduje się w miejscu określonym przez podany adres. Nic nie stoi na przeszkodzie, aby nazwa zmiennej bazowej była nazwą zmiennej nałożonej.

Przykład Deklaracje zmiennych niezainicjowanych

Var

Count: integer;

Length, Area ,Volume : extended;

Buffer: array[1..128] of char;

FirstChar: char absolute Buffer;

Numbers : array[boolean] of real;

Complex: record

Re, Im : real

end absolute Numbers;

Zmienna FirstChar jest zmienną nołożoną na zmienną Buffer. Tym samym nazwa Bufferl i nazwa FirstChar są nazwami tej samej zmiennej. Zmienna Complex jest nałożona na zmienna Numbers. W szczególności Numbers {true} i Complex.Im ,ca nazwami tej samej zmiennej.

Deklaracje zmiennych zzainicjowanych i symboli

Zmienna, której w chwili utworzenia jest przypisana dana początkowa Jest nazywana zmienną zainicjowaną. Zmienne zainicjowane są tworzone tuż przed podjęciem wykonywania programu. Deklaracje zmiennych mogą być zgrupowane z deklaracjami symboli. Przyjmuje się z definicji że symbolem jest identyfikator reprezentujący literał. Literami są m.in. liczby (np. 12.4, -50, 6E-3) i łańcuchy (np. 'Jan', 'B ').

Przykład: Deklaracje zmiennych zainicjowanych i symboli:

const

e =2.718282;

g =9.81;

myName = 'Jan Bielecki";

Truth = true;

Sum : real = 0;

Name : string = 'Izabela';

Ptr: pointer = nil;

Colours : array[1..3] ofstringf[5]

Complex: recod

Re, Im : real

end = (Re : 2.0; Im : 3.0);

Letters : set of 'a'..'z' = ['x','y'];

eMinus = -e;

Napisy e,g, myName, Truth są symbolami. Napisy takie jak np.: Suń Name są nazwami zmiennych zainicjowanych.

Deklaracje procedur

Procedury dzielą, się na funkcyjne i nie funkcyjne. Procedury funkcyjne są nazywane funkcjami.

Deklaracja procedury określa czynności jakie zostaną wykonane w ramach jej wywołania. W

przypadku funkcji określa również typ danej udostępnionej w miejscu jej wywołania nazywanej rezultatem funkcji. Deklaracje procedur dzielą się na definicję zapowiadające i uzupełniające. Typowymi deklaracjami są deklaracje definiujące. Posłużenie się deklaracja zapowiadającą a następnie uzupełniającą jest niezbędne jedynie wówczas gdy nie jest możliwe takie uporządkowanie deklaracji definiujących aby nazewnik procedury wystąpił dopiero po deklaracji procedury.

Definicje procedur

const

Val; byte = 0;

function Fun (Par: byte): byte; [ zapowiedź ]

forward;

var

Num: byte;

procedure Sub(Par: byte); [ definicja ]

begin

if Par > O then

Val:=1 +Fun(Par-1)

end;

funetion Fun; [ uzupełnienie ]

begin

if Par > O then Sub(Par -1);

Fun .= 13

end;

begin [ main program ]

Readln(Num);

Write(FUn(Num)+Va1)

end.

Program zawiera trzy deklaracje procedur: deklarację zapowiadającą funkcji Fun, deklaracje

definiująca procedury nie funkcyjnej Sub i deklarację uzupełniającą funkcji Fun. Ciało deklaracji fun składa się z deklaratora forward. Nagłówek deklaracji uzupełniającej tej funkcji nie zawiera wykazów parametrów.

2.

Typ rekordowy jest typem złożonym. Rekord jest zmienna strukturalną której można przypisać dane

składające się z ustalonej liczby komponentów nazywanych polami. Pola są zmiennymi na ogół

różnych typów. Dostęp do pól odbywa się przez selekcję. Selekcja polega na podaniu nazwy rekordu i identyfikatora pola. Nazwę od identyfikatora oddziela znak kropki.

Opis typu rekordowego ma postać :

record

list: type;

list: type;

...

list: type;

end

w której każde list jest listą identyfikatorów pól rekordu, a każde type jest opisem typu. znak średnik poprzedzający słowo kluczowe może być pominięty.

Specjalną odmianę typów rekordowych stanowią typy rekordowe z wariantami. Deklaracja

wariantów może nastąpić w miejscu ostatniego napisu

List: type

Ma ona ona w ogólnym przypadku postać:

Case sel of

Lab : (var);

Lab : (var);

...

Lab : (var);

W której sel jest opisem typu wyróżnikowego albo deklaracją pola nazywaną wyróżnikowym, każde lab jest lista etykiet wyboru wariantu, a każde var jest wyrazem składowym wariantu.

Etykieta wariantu może być dowolne wyrażenie stałe typu wyróżnikowego najczęściej literał albo symbol.

Deklaracje typów i zmiennych rekordowych

Type

Date = record

Month: 1..12;

Year:1900.. 1999

End;

Gender = (małe, female, alien);

Person = record

Name : string [20];

BrithPlace : string [30];

Case Sex : Gender Of

Małe,female : (BrithDate:Date);

Alien : (BrithDate : real;

BodyDate: record

H: integer;

W: real;

End);

End;

Var

MyBybirthDay: Datę;

EarthMan , Galaxian : Person;

Typ datę jest związany ze zbiorem danych rekordowych z których każda składa się z przy danych. Pierwsza z pary danych jest typu 1..12 a druga typu 1900.. 1999. Typ person jest związany ze zbiorem danych z których każda skłda się z co najmniej z 3 danych o typach string, string i Gender. Jeśli dana typu Gender ma wartości małe lub female to dodatkowo występuje za nią dana rekordowa składająca się z typu danych integer i real. Zmiennej typu MyBirthDay mogą być przypisywane dane typu data a zmiennym EarthMan mogą być przypisywane dane typu Person.

3.

Typ zbiorowy jest typem złożonym. Mnogość jest zmienna strukturalną którejożna przypisać dane strukturalne składające się z dowolnych kolekcji danych wybranego typu porządkowego nazywanego typem bazowym typu mnogościowego. Wymaga się aby typ bazowy był związany ze zbiorem liczącym nie więcej niż 256 danych o liczbach porządkowych należących do przedziału O...255.

Opis typu mnogościowego ma postać:

Set of type

W którym type jest opisem typu bazowego danego typu mnogościowego. Dane typu zbiorowego są reprezentowane przez wyrażenia mnogościowe. Szczególnym wyrażeniem

jest konstruktor. Składa się on w ujęte nawiasy kwadratowe listy dowolnych wyrażeń typu bazowego. Jeśli pewna podlista reprezentuje dane o liczbach porządkowych z zakresu min... max to może być zastąpiona napisem eMin... eMax której eMin jest wyrażeniem reprezentującym daną o liczbie porządkowej min, a eMax jest wyrażeniem reprezentującym daną o liczbie porządkowej max.

W szczególności napis

['a', 'z', 'c', 'b']

może być zastąpiony napisem

['a'...'c','z'].

Przykład

Deklaracje typów zmiennych zbiorowych

Type

Hue = (Red,Green,Blue);

Colour = set of Hue;

Var

Digits: setof0...9;

Paint: Colour;

ASCII: set of char;

Typ Colour oraz nie nazywane typy set of O... 9 l set of char są anonimowymi typami zbiorowymi. Zmiennej Digits może przypisywać dane zbiorowe składające się z kolekcji danych typu 0..9.zmiennej Paint można przypisać dane składające się z kolekcji danych danych typu Hue. Zmiennej ASCII może przypisać dane składające się z kolekcji znaków rozszerzonego kodu ASCII.



Wyszukiwarka

Podobne podstrony:
11 Jerzmanowski, Powstawanie, rodzaje i rola zmiennosci w ewolucji (2009)(1)
deklarowanie zmiennych
11 Jerzmanowski, Powstawanie, rodzaje i rola zmiennosci w ewolucji (2009)(1)
Rodzaje zmiennych w modelu wielorównaniowym
Rodzaje zmienno-ci - referat, oligofrenopedagogika, uczelnia, rok I, biomedyka, 2
CO TO SA SYGNATURY. JAKIE WYRÓŻNIAMY RODZAJE SYGNATUR. DO JAKICH KARTOGRAFICZNYCH FORM PREZENTACJI Z
rodzaje zmiennosci w przyrodzie
Rodzaje zmiennych
Zmienne i ich rodzaje 3
003 zmienne systemowe
RODZAJE WYSIŁKU FIZYCZNEGO
rodzaje ooznaczen i ich ochrona
Badanie korelacji zmiennych
prąd zmienny malej czestotliwosci (2)
rodzaj

więcej podobnych podstron