Podstawowe wiadomoś ci o języku programowania Pascal.

Na początku lat siedemdziesiątych Niklaus Wirth opublikował pierwszy opis języka Pascal (był on wzorowany na języku Algol 60). Ze względu na zalety, język ten nadaje się dobrze do wprowadzenia elementó w programowania. Przejrzysty i czytelny kod źró dłowy sprawia, ż e edycja treś ci programu, jego analiza czy pó źniejsza modyfikacja jest łatwiejsza niż w wielu innych językach programowania.

Język algorytmiczny - język opisu algorytmó w i komunikacji między uż ytkownikami komputeró w.

Większoś ć ze stosowanych językó w programowania spełnia wymagania językó w algorytmicznych.

Język strukturalny - umoż liwia budowanie programó w podzielonych na bloki, częś ci – procedury bądź

funkcje. Programowanie strukturalne ułatwia projektowanie, testowanie a takż e „utrzymanie” kodu programu.

Program źró dłowy składa się z jednostek leksykalnych oraz separatoró w (spacja, tabulacja, ś rednik, przecinek, kropka, znak zmiany wiersza i komentarz). Treś ć programu źró dłowego wpisuje się do pliku tekstowego (najczęś ciej o rozszerzeniu 'PAS').

Uwaga: W jednym pliku moż e być umieszczony tylko jeden program źró dłowy.

Jednostki leksykalne to:

a) Słowa kluczowe - są to spó jne ciągi liter, któ re tworzą zarezerwowane słowa angielskie o ustalonym znaczeniu.

absolute

downto

in

or

then

and

else

inherited

packed

to

array

end

inline

private

type

asm

external

interface

procedure

unit

assembler

far

interrupt

program

until

begin

file

label

public

uses

case

for

mod

record

var

const

forward

near

repeat

virtual

constructor

function

nil

set

while

destructor

goto

not

shl

with

div

if

object

shr

xor

do

implementation

of

string

b) Identyfikatory - są to spó jne ciągi liter i cyfr rozpoczynające się od litery, nie będące słowem kluczowym.

- nie są rozró ż niane duż e i małe litery.

- znak podkreś lenia _ uznawany jest za literę;

Identyfikatory służ ą do oznaczania: programó w, stałych, typó w, zmiennych, pó l w rekordach, procedur, funkcji, parametró w formalnych.

Uwaga: słowa kluczowe nie mogą być uż ywane jako identyfikatory.

c) Liczby – całkowite, rzeczywiste.

d) Napisy – ciągi znakó w między apostrofami (np. ’ to jest napis ’ ).

e) Literały logiczne - mają postać napisu true lub false.

f) Komentarze - nie wpływają na wykonywanie programu i wykorzystywane są do zwiększenia czytelnoś ci programu i zrozumienia jego treś ci. Są to napisy umieszczone w klamrach (* ... *) lub

{ ... } .

Struktura programu:

1. Nagłó wek programu

2. Deklaracja modułó w

3. Blok definicji i deklaracji

4. Blok podprogramó w

5. Blok głó wny

W każ dym programie muszą wystąpić zawsze dwa bloki 1 i 5. Istotna jest kolejnoś ć umieszczania blokó w w programie (blok 1 zawsze na początku, blok 5 na końcu).

Nagłó wek programu składa się ze słowa kluczowego „PROGRAM”, po któ rym umieszcza się nazwę programu (identyfikator) oraz ewentualnie ujętą w nawiasy okrągłe listę parametró w (kolejne elementy tej listy oddzielamy przecinkami). Lista parametró w moż e być pomijana. Nagłó wek programu zakończony jest ś rednikiem.

PAU - Pascal cz.1

1 / 5

Blok głó wny programu rozpoczyna się od słowa „begin” a zakończeniem bloku (programu) jest słowo

„end.” (obowiązkowo z kropką). Pomiędzy słowami „begin” a „end” wpisuje się instrukcje programu oraz wywołania podprogramó w (procedur, funkcji). Instrukcje umieszczone w programie oddzielane są od siebie ś rednikami.

Program Nazwa_Programu ;

{ nagłó wek programu }

begin

{ początek bloku głó wnego }

Instrukcja_1 ;

Instrukcja_2 ;

. . .

Instrukcja_N

end.

{ koniec bloku głó wnego }

Operatory:

§ arytmetyczne:

+

-

*

/

div

mod

§ relacyjne:

=

<

>

<>

<=

>=

§ logiczne:

and

or

not

Przykłady:

a + 1

NOT ( x = 0 )

suma / ( ( 3 + 2 * licznik ) - 31.567 )

( x = 3 ) OR ( x MOD 5 = 0)

liczb_1 <= liczba_2

( x = 5 ) OR ( y = 4 ) OR ( z = ‘T’)

‘A’ + ‘z’ { źle ‘A’ + 1 }

( x = 1 ) AND ( ( x = y ) OR ( x = z) )

( x = 1 ) AND NOT ( ( x = y ) OR ( x = z) )

Instrukcja przypisania to symbol dwuznakowy „ := ” i służ y do przypisania zmiennej wartoś ci i ma następującą postać :

zmienna := stała lub wyraż enie Przykłady:

x := 1 ;

{ źle 1 := x }

wynik := suma / populacja ;

a := 127 ; a := a + 1;

{ źle a + 1 := x }

a := a + c * 12 ;

{ źle a := x*2 + ‘A’ }

znak := ‘A’ ;

{ źle znak := ‘A’+’z’, jeż eli zmienna znak moż e "przechowywać " tylko jeden znak }

napis := 'Egzamin JPK ' ;

napis := napis + '2004'; { źle napis := napis + 2004 ; }

zmienna_logiczna := true ; { źle zmienna_logiczna := 'false' }

debet := stan_konta < 0 ;

udzielic_kredyt := (K1 and K2) or K3;

Uwaga: Każ da zmienna uż yta w programie musi być w nim zadeklarowana.

Blok deklaracji zmiennych - rozpoczyna się od słowa kluczowego VAR, po któ rym następuje wykaz deklaracji zmiennych.

var

lista_identyfikatorow_1 : nazwa_typu ;

. . .

lista_identyfikatorow_N : nazwa_typu ;

Lista identyfikatoró w to oddzielona przecinkami lista nazw zmiennych, a nazwa typu zawiera okreś lenie typu zmiennej.

Typy danych (wybrane) :

§ zbió r liczb całkowitych:

(rozmiar zajmowanej pamięci)

- Byte

0 ... 255

(1 bajt)

- Word

0 ... 65 535

(2 bajty)

- ShortInt

-128 ... +127

(1 bajt)

- Integer

-32 768 ... +32 767

(2 bajty)

- LongInt

-2 147 483 648 ... +2 147 483 647

(4 bajty)

§ zbió r liczb rzeczywistych:

- Real

2.9e-39 ... 1.7e38

(6 bajtó w)

§ zbió r znakó w

- Char

znak ASCII np. ‘A’, 'z', ‘5’, ‘$’, ‘@’, '+'

(1 bajt)

§ zbió r wartoś ci logicznych:

- Boolean

wartoś ci logiczne: true, false

(1 bajt)

PAU - Pascal cz.1

2 / 5

Przykłady deklaracji zmiennych:

Dobrze:

Źle:

a : byte ;

błędna deklaracja : liczba ;

L1, L2, L3, L4 : word ;

5 : byte ;

suma : integer ; srednia : real ;

2005rok : word ;

liczba_glosow : longint ;

%procent : real ;

Instrukcja WRITE

Składnia: write ( lista_parametró w ) lub writeln ( lista_parametró w ) Interpretacja: Wyś wietlenie informacji na ekranie monitora (np. tekstu, wartoś ci zmiennej, stałej, wyraż enia, funkcji).

Przykłady:

write ( 2004 ) ;

write ( zmienna ) ;

write ( ‘napis’ ) ;

writeln ( ‘suma=‘ , s ) ;

writeln ( ‘napis1‘ , zm1, ... , ‘napisN‘ , zmN ) ;

writeln ( ‘wynik obliczeń = ‘ , suma / ( n + 2 ) ) ;

Instrukcja READ

Składnia: read ( lista_parametró w ) lub readln ( lista_parametró w ) Interpretacja : Wprowadzenie do komputera wartoś ci z klawiatury i podstawienie wczytanej wartoś ci pod wskazaną zmienną (zmienne) - parametr instrukcji.

Przykłady:

Dobrze:

Źle:

read ( x ) ; readln ( suma ) ;

readln ( 255 ) ; read ( ‘A‘ ) ; read ( false ) ; read ( liczba1 , liczba2 ) ;

readln ( ‘napis ‘ , zm ) ;

readln ( zm1 , zm2 , ... zmN ) ;

readln ( zm + 1 ) ;

Przykład programu obliczającego sumę i ś rednią dwó ch liczb, któ rych wartoś ć jest wprowadzana z klawiatury (dwie wersje).

{ przypadek gdy:

(* przypadek gdy wartoś ci liczb mogą

liczba1 >= 0 i liczba2 >=0 }

być ujemne *)

(*** nagłó wek programu ***)

program Srednia_liczb_wersja_2;

program Srednia_liczb_wersja_1;

var

liczba1, liczba2 : integer ; { dane }

(*** deklaracje zmiennych ***)

suma : longint ;

{ wynik }

var

srednia : real ;

{ wynik }

liczba1 : byte ;

{ dane we }

begin

liczba2 : byte ;

{ dane we }

write (‘ wprowadź pierwszą liczbę: ‘) ;

suma : word ;

{ dane wy }

readln ( liczba1 ) ;

write (‘ wprowadź drugą liczbę: ‘) ;

(*** blok głó wny ***)

readln ( liczba2 ) ;

begin

{--- 1. Wprowadzanie danych ---}

suma := liczba1 + liczba2 ;

write (‘ wprowadź pierwszą liczbę: ‘) ;

srednia := suma / 2 ;

read ( liczba1 ) ;

write (‘ wprowadź drugą liczbę: ‘) ;

writeln ( ‘Wyniki : ‘) ;

read ( liczba2 ) ;

writeln ( ‘suma =‘ , suma, ‘ oraz ‘,

‘ś rednia=‘ , srednia )

{--- 2. Obliczenia ---}

end.

suma := liczba1 + liczba2 ;

{--- 3. Wyprowadzenie wynikó w ---}

writeln ( ‘Wyniki: ‘) ;

writeln ( ‘suma=‘ , suma ) ;

writeln ( ‘ś rednia=‘ , suma / 2)

end.

PAU - Pascal cz.1

3 / 5

Rodzaje instrukcji

1. Instrukcje proste: np. przypisania

2. Instrukcje strukturalne:

a) Instrukcja złoż ona

begin ... end

b) Instrukcje warunkowe

if ... then ... else

- ”jeż eli... wtedy... w przeciwnym razie”

if ... then

- ”jeż eli... wtedy”

case ... of

- ”wyboru”

c) Instrukcje iteracyjne

repeat ... until

- ”powtarzaj... aż do”

while ... do

- ”dopó ki... wykonuj”

for ... to ... do

- ”dla... wykonuj”

d) Instrukcja wiąż ąca

with ... do

Instrukcja złoż ona

Ciąg kilku instrukcji moż na zgrupować w jedną instrukcję tzw. złoż oną, jeż eli poprzedzi się je słowem kluczowym "BEGIN" a zakończy słowem "END".

Przykład instrukcji złoż onej:

BEGIN

instrukcja_1 ; instrukcja_2 ; . . .

Begin

instrukcja_N

Write ( ‘wprowadź x i y : ’ ) ; Readln (x,y) ;

END

Writeln (‘ x + y = ‘, x+y )

End

Instrukcja warunkowa

if wyr_log then instrukcja_PRAWDA if wyr_log then instrukcja_PRAWDA ; else instrukcja_FAŁ SZ ;

TAK

NIE

TAK

wyraż enie

wyraż enie

logiczne

logiczne

instrukcja

instrukcja

instrukcja

NIE

PRAWDA

FAŁ SZ

PRAWDA

Przykłady instrukcji warunkowej:

if liczba=7 then write ('siedem');

if (x>=1) and (x<=12) then

if (znak>='A') and (znak<='Z') then writeln ('duż a litera'); if x<=3 then kwartal := 1

else if x<=6 then kwartal := 2

if x mod y = 0

else if x<=9 then kwartal := 3

then write ( x, ' jest podzielne przez ' , y )

else kwartal := 4

else write ( x, ' nie jest podzielne przez ' , y );

else writeln ('Błędny numer miesiąca');

PAU - Pascal cz.1

4 / 5

{ Zastosowanie instrukcji warunkowej if...then...else }

(* Zastosowanie instrukcji warunkowej if...then *) PROGRAM Pole_Kola_1 ;

PROGRAM Zamianka ;

VAR promien : real ;

{ promień koła }

VAR liczba : longint ;

pole : real ;

{ pole koła }

BEGIN

BEGIN

Write ( ’ Wprowadź liczbę : ’ );

Write ( ’ Wprowadź promień koła : ’ );

ReadLn ( liczba );

ReadLn ( promien );

IF ( liczba < 0 ) THEN

pole := 3.14 * promien * promien ;

liczba := - liczba ;

IF ( promien > 0 ) THEN

Writeln ( ’ Wartoś ć bezwzględna liczby = ’ , liczba ) Writeln ( ’ Pole koła= ’ , pole )

END.

ELSE

Writeln ( ’ Brak rozwiązania ! ’ )

END.

{ Zastosowanie instrukcji warunkowej i z łoż onej }

PROGRAM Pole_Kola_2 ;

VAR promien : real ;

{ promień koła }

pole : real ;

{ pole koła }

BEGIN

Write ( ’ Wprowadź promień koła : ’ );

ReadLn ( promien );

IF ( promien > 0 ) THEN

BEGIN

pole := 3.14 * promien * promien ;

Writeln ( ’ Pole koła= ’ , pole )

END

ELSE Writeln ( ’ Brak rozwiązania ! ’ )

END.

PAU - Pascal cz.1

5 / 5