background image

Wstęp 

do programowania

Wykład 2

Składnia języka, typy, struktura programu  

background image

Język programowania pascal

Cechy języka Pascal

Pascal jest językiem wysokiego poziomu; oznacza to, że użytkownik piszący

program w języku pascal nie musi znać szczegółów wewnętrznej budowy
komputera.

Pascal ma wbudowane precyzyjne mechanizmy kontroli struktur i reguł
gramatycznych; dzięki temu łatwa jest identyfikacja i poprawienie błędów.

Pascal jest językiem

algorytmicznym

, pomyślanym tak aby łatwo było w

nim zapisywać algorytmy opracowane przez użytkownika.

Pascal jest językiem

strukturalnym

;

oznacza to że poszczególne

fragmenty algorytmu można zapisać w postaci wyraźnie wyodrębnionych
struktur językowych.

Pascal jest językiem

modularnym

. Cecha ta pozwala składać program z

oddzielnych 'cegiełek' - modułów które w razie potrzeby można wymieniać
bez naruszenia pozostałej części programu.

Pascal jest językiem

publikacyjnym

co oznacza możliwość opublikowania

oryginalnego, interesującego algorytmu w notacji języka Pascal

background image

STANDARDOWE SYMBOLE JĘZYKA PASCAL

J

ęzyki programowania służą do przedstawienia 

algorytmów w takiej postaci, w której  mogą być one 
wykonane przez komputery.

Jedną z wygodnych form komunikacji człowiek - maszyna 

jest zapis tekstowy. 

Program jest więc tekstem. Ze względu na ograniczenia 

praktyczne, tekst ten jest ci

ągiem znaków, tzn nie ma  

indeksowania stosowanego w np.. matematyce. -
obowi

ązuje jeden poziom znaków. 

Program pascalowy buduje

się z elementarnych jednostek

tekstowych j

ęzyka nazywanych symbolami.

Symbol

może być pojedynczym znakiem bądź ciągiem

znaków alfabetu języka.

background image

Standardowe symbole 

Alfabet :

– małe i duże litery alfabetu łacińskiego
- cyfry od 0 - 9
- odst

ęp (spacja)

- jednoznakowe symbole specjalne :

+ - * / = < >
[ ] ( ) { } spacja

. ,

‘ : ; ^ @ $ % & # _

- dwuznakowe symbole specjalne :

<> <=

>=

:=

..

background image
background image

Standardowe symbole 

– słowa kluczowe

AND

DOWNTO

IF

OR

THEN

ARRAY

ELSE

IN

PACKED

TO

BEGIN

END

LABEL

TYPE

CASE

FILE

MOD PROGRAM

UNTIL

CONST

FOR

NIL

RECORD

VAR

DIV

FUNCTION

NOT

REPEAT

WHILE

DO

TYPE

OF

SET

WITH

Słowa kluczowe maja specjalne znaczenie

Są nazwami typów wbudowanych, nazwami  operatorów, 

elementami instrukcji, itp 

background image

Identyfikatory 

-Nazwy dozwolone 

Nazwy

(identyfikatory, ang. 

identifiers

) mogą 

odnosić się do podprogramów, zmiennych, 

stałych, funkcji, tablic, klas ...

nazwą może być dowolnie długi ciąg liter (

nie 

używamy polskich!

), cyfr i znaków podkreślenia.

Nazwa musi zaczynać się od litery

poprawne nazwy: 

liczba_1, stala21, a, B_2_2, c

niepoprawne nazwy: 

2tablica, ścieżka, dzień, cx2-1, 1@,

Pascal,  Delphi nie rozróżniają małych i dużych 

liter

background image

Identyfikatory

Podobnie jak s

łowa kluczowe identyfikatory są symbolami

j

ęzyka Pascal/Delphi złożonymi z ciągu znaków.

Pewne identyfikatory maj

ą ustalone nazwy. Czyli są to

identyfikatory

standardowe.

U

żytkownik

m

oże

przedefiniowa

ć znaczenie tych identyfikatorów w sekcji

deklaracji programu i u

żywać ich w zdefiniowanym

znaczeniu. Jednak, oznacza to utrat

ę wbudowanych w

j

ęzyku ułatwień.

Natomiast

u

żytkownik

mo

że

stosować

w

łasne

identyfikatory dla nadawania nazw programom i wszelkim
obiektom niestandardowym w programach. Ka

żdy taki

identyfikator musi by

ć ciągiem liter i cyfr przy czym

pierwszy znak musi by

ć literą.

background image

Separatory

W programie pascalowym separatory

służą do rozdzielenia

poszczególnych obiektów programu. Separatorami są:

;

średnik

, przecinek

jedna lub wi

ęcej spacji,

‘enter’

przej

ście do nowego wiersza,

{ } //

komentarz .

Obowi

ązuje przy tym zasada, że dowolne dwa słowa kluczowe,

identyfikatory lub liczby bez znaku musz

ą być rozdzielone co

najmniej jednym separatorem.

Komentarz ma posta

ć ciągu znaków zamkniętego w nawiasy

klamrowe, np. {

nowa funkcja

}

//

licznik

pętli

Wewn

ątrz pary nawiasów można umieścić dowolny ciąg znaków za

wyj

ątkiem nawiasu klamrowego.

Umieszczenie komentarzy w tych miejscach programu w

których

mog

ą być pomocne w zrozumieniu jego konstrukcji należy do

dobrej praktyki programistycznej.

background image

Typy 

Zasad

ą jest, że każda stała, zmienna, wyrażenie lub funkcja jest

pewnego typu.

Ogólnie typ określa :

a)

zbiór wartości do którego należy stała, bądź jakie może

przyjmowa

ć zmienna czy wyrażenie, lub jakie mogą być generowane

przez funkcj

ę;

b)

zbiór operacji, które można wykonywać na zmiennych, stałych,...

•W język pascal oferuje użytkownikowi pięć różnych typów :

- standardowe typy proste

- standardowy typ strukturalny (-

łańcuch)

- niestandardowe, tj definiowane przez u

żytkownika, np. okrojony

- niestandardowe typy strukturalne

(również definiowane przez

u

żytkownika) : tablicowy, zbiorowy, rekordowy i plikowy;

- niestandardowy typ wska

źnikowy.

background image

Typy 

Standardowym lub wbudowanym, nazywamy taki typ,

którego

identyfikator,

zbiór wartości oraz dopuszczalne operacje zostały

okre

ślone standardowo w języku.

Typy

proste s

ą podstawowymi jednostkami typu w języku

Pascal/Delphi. Na ich podstawie mo

żna utworzyć inne, bardziej

rozbudowane struktury danych - typy strukturalne.

Typy strukturalne wprowadzono w zwi

ązku z dążeniem do możliwie

szerokiego zakresu zastosowa

ń języka.

Typ zmiennej okre

śla jednoznacznie zbiór

z

którego zmienna

przybiera warto

ści.

background image

Typy 

TYP

strukturalny

łańcuchowy

prosty

wskaźnikowy proceduralny

porządkowy

rzeczywisty

wyliczeniowy okrojony

całkowity

logiczny

znakowy

Byte

ShortInt

Word

Integer

LongInt

background image

porządkowy: 

całkowity

Typy 

Typ

Zakres

B

Integer

–2 147 483 648 .. 
2 147 483 647

4B

Cardinal

0 .. 4 294 967 295

4B

Shortint

–128 .. 127

1B

Smallint

–32 768 .. 32 767

2B

Longint

jak integer

4B

Int64

–2^63 .. 2^63–1

8B

Byte

0 .. 255 (tj. 0..$FF)

1B

Word

0 .. 65 535 
(0..$FFFF)

2B

Longword

jak cardinal

4B

Przykład :
var a,c : SmallInt ;

b : Byte;

background image

prosty: 

rzeczywisty

Typy 

Typ

Zakres

il. cyfr

B

Real48

2.9e

–39 .. 1.7e38

11

–12

6B

Single

1.5e

–45 .. 3.4e38

7

–8

4B

Real
=Double

5.0e

–324 .. 1.7e308

15

–16

8B

Extended

3.6e

–4951 .. 1.1e4932

19

–20

10
B

Comp

jak int64 (nie 
zalecane)

19

–20

8B

Currency


922337203685477.5808 
.. 
922337203685477.5807

19

–20

8B

Przykład :
var x : Double ;

y,z : Single;

background image

porządkowy: 

logiczny

znakowy

Typy 

Boolean

(false, true)

1B

(ByteBool 1B, WordBool 2B, LongBool 4B)

Zmienna typu logicznego mo

że przyjmować dwie

warto

ści : true (prawda) lub false (fałsz) Obie

stałe logiczne są predefiniowane.

Char 
=AnsiChar

#0..#255

1B

(WideChar 2B), 

‘A’ ≡ #65, ^G ≡ #7, 

Chr(65) ≡ ’A’, Ord(‘A’) ≡ 65 

Zmienna typu znakowego jest jednym znakiem ze
zbioru wszystkich znaków ASCII

Przykład :
var decyzja : boolean;

Przykład :
var jeden_znak : char;

background image

porządkowy: 

wyliczeniowy

Typy

·

wyliczeniowe

(identf1, identyf2, ident3f, ...

np. (pon, wt, sr, czw, pt, sob, ndz)

Przykład :
var dzien =(pon, wt, sr, cz, pt, so, ndz)

liczby =(1,7,13);

Greckie=(alfa, beta, gamma, delta)

background image

porządkowy: 

okrojon

Typy

const1 .. const2

1 .. 100,

-15 .. MaxN-1,
‘A’ .. ’F’

Ord, Pred, Succ, High, Low, SizeOf, Inc, Dec
np.

Ord(false)

≡ 0,

Succ(2)

≡ 3,

Low(Shortint)

≡ -128,

High(Byte)

≡ 255;

SizeOf(int64)

≡ 8,

inc(i)

≡ i=i+1,

inc(k,3)
Dec(i)=i-1
Pred(5)=4

Przykład :
var zakres : 10..100;

Litery1 :

‘c’..’k’

cyfry: 0..9;

background image

łańcuchowy

Typy

string[n],  np. string[40] 

– 1..40 znaków

var  s :string

s := 

’’;  {brak spacji pomiędzy apostrofami}; 

s := 

’  ’ {1 spacja pomiędzy apostrofami}; 

s := 

‘Witaj'; 

s[1]

≡ ‘W’, s[4] ≡ ‘a’, s[1] := ‘w’; {s ≡ ‘witaj’}

Length, SetLength, np. Length(s)

≡ 5

s[0]=5 

– długość łańcucha jest umieszczona w zerowej komórce

Typ

il. 

znakow

B

ShortString 
= string gdy {$H-}

0 .. 255

2B .. 
256B

string = AnsiString

0 .. 
~2^31

4B .. 
2GB

WideString

0 .. 
~2^30

4B .. 
2GB

background image

łańcuchowy

Typy

Deklaracja typu string:

• type nazwa_typu=string

type nazwa_typu=string [ stała ]

var  s1,s2,s3,s4 :string

s1 := 

’Liczba’; 

s2 := 

’Pierwsza’ ;

s1<s2;        // łańcuchy można porównywać   ‘A’<‘a’ 

s3:=s1+s2;             //LiczbaPierwsza
s4:=s2+’ ‘+s1;       //Pierwsza  Liczba
s2<s4 ?
s1[0]<s2[0] ?

 

 

 

 

background image

łańcuchowy

Typy

- do poszczególnych elementów łańcucha można się odnosić tak

jak do elementów tablicy - poprzez indeks:

s[1], s[2], s[10]

trzeba pamiętać, że te elementy są już typu char a nie string

string jest jedynym typem tablicowym, na którym dopuszczalne są 

operacje agregujące np. '+'; oraz wartości tego typu mogą być
parametrami procedur write read

Różnice pomiędzy łańcuchami i tablicami o elementach znakowych:
- tablica znakowa może mieć dowolną długość,
- liczba znaków wpisanych do tablicy nie jest nigdzie zapamiętywana,
- elementy tablicy nie są w żaden sposób powiązane ze sobą

i dlatego można się do nich odwoływać pojedynczo lub w całości
jako tablicy (nie można odwoływać się do podzbiorów)

- łańcuch może być traktowany jako jednowymiarowa tablica znaków

natomiast tablica może mieć wiele wymiarów. 

background image

Tablicowy 

(strukturalny)

Typy

Do przechowywania jednorodnego w sensie typu ciągu (zestawu) 
wielkości służy typ tablicowy,

Type

Identyfikator_typy 

array

[TypIndeksu] of

TypElementu

Gdzie:
Typindeksu

jest dowolnym typem porządkowym za wyjątkiem Longint, 

TypElementu

jest dowolnym typem

type IntList = array[1..100] of Integer;  {tablice jednowymiarowe}
CharCode = array['A'..'Z'] of Byte;

var A :IntList; 

C :CharCode;

//użycie  A[10] := 14; 

C[

‘Z’] := 255

background image

Tablicowy 

Typy

type Matrix = array[0..10, -5..5 ] of Real;  {tablice 2 -wymiarowe}

Matrix   = array[0..10] of array[-5..5] of Real;

//inny sposób

Type Tab= array[1..100 ] of Single;  // tablica 1 -wymiarowa}

wynik= array[1..50 ] of Tab;

// tablice 2 -wymiarowa}

var M :Matrix; 

W :Wynik;

//użycie  M[1,0] := -1.043; 

// Matrix[1,1]:=5  -

błąd- nazw.typu 

W[2,35] := 21.25

W[2][35] := 21.25

Aby móc efektywnie korzystać z tych zmiennych należy poznać sposób 
odwoływania się do poszczególnych elementów tablicy. W opisie tego 
mechanizmu posłużymy się pojęciem selektora, który służy do wyboru 
odpowiedniego elementu składowego zmiennej złożonej. W typie 
tablicowym, podobnie jak napisowym, selektorem są nawiasy 
kwadratowe, w których podajemy indeks(y) elementu, do którego 
odwołujemy się.

background image

Tablicowy z wartościami początkowymi 

Typy

type  Tabz  = array[0..5] of char;

Dane   = array[1..4] of SmallInt;

var   znaki :Tabz=('a','z','A','X','3','|') ;

wyniki : Dane=(1,2,100,5);

writeln(znaki[2]);

writeln(wyniki[3]);

background image

Rekordowy

Typy

record

pole1:typ1
pole2:typ2
...      
poleN :typN

end;

Type
Tdane=

record 

Imie : string[20];
Plec : char;
Wiek : byte
Praca : array[1..10] of string

End;

var D :TDane;

begin

D.imie

:=’Teodor’;

D.plec:=

‘M’;

D.wiek:=23;
D.praca[1]=

’Zakłady energetyczny’;

background image

Tablicowy 

Typy

Tablice dynamiczne: 

Identyfikator array of TypElementu

var : array of integer;
begin ...

SetLength(A , 10); 

{High(A)

≡ 9}

A[0]:=15; A[9]:=-24;
A:=nil;

background image

M

nogościowe

Typy

set of typ

type

CharSet = set of Char;
Digits = set of 0..9;
Day = (Sun, Mon, Tue, Wed, Thu, Fri);
Days = set of Day;

-typ porządkowy zwany jest typem bazowym zbioru,
-typ bazowy nie może mieć więcej niż 256 możliwych wartości - dlatego typem 
bazowym nie może być np.: integer, word...
-wartości porządkowe granic zbioru muszą się mieścić w granicach od 0 do 255 
- złym typem jest zatem set of [-5..5],
-wartości typu zbiorowego wypisuje się przy pomocy konstruktora zbiorów [ ],
-kolejność wypisywania elementów wewnątrz nawiasów kwadratowych jest 
dowolna,
-element umieszczony na liście wielokrotnie interpretowany jest jak jeden 
element.

type  znaki = set of char;

var

a,b,c:znaki;

z:char;

begin

....
a:=['0'..'9', 'a'..'z', 'A'..'Z'];
b:=[];

z:=#27;
c:=[z];
.....

end.

background image

Zakresy typów

Zakresy poszczególnych typów mogą 

być albo ściśle określone, albo zależeć 

od implementacji (czyli od kompilatora)

ZAWSZE istnieje w każdym typie wartość 

największa i najmniejsza

background image

Stałe

Definicje stałych

W programie mo

żna zdefiniować pewne obiekty (tzw. stałe),

których wartość w czasie działania programu się nie zmienia
Przypisanie

stałej wartości identyfikatorowi następuje za

pomocą instrukcji :

const

nazwa =

stała

;

const

e = 2.71;

const

kierunek

= ‘telekomunikacja'  

(sta

ła nie musi być liczbą; może być np. łańcuchem znaków)

Typowy b

łąd definicji: const mc:=110

(zamiast = u

żyto znaku z

instrukcji przyp. :=)

background image

Zmienne

Na deklaracj

ę zmiennej składają się trzy elementy:

var

nazwa zmiennej

:

typ

.

var

słowo kluczowe ozanczjącą zmienną

nazwa zmiennej

(określona przez identyfikator),

Typ

zmiennej (określa zbiór wartości jaki może przyjmować

zmienna),
Wartość zmiennej (typ określa dopuszczalne wartości),
Położenie (alokacja) zmiennej w pamięci operacyjnej (tym

zajmuje się najczęściej kompilator).

Ważną rolą zmiennej jest to, że może ona opisywać pewien stan

maszyny cyfrowej (np. zawartość jednej lub kilku komórek

pamięci operacyjnej).

123

wartość

(byte)

typ

zmienna

delta

identyfikator

background image

Zmienne

Zmienne – zmienne przechowują pewne informacje

o stanie maszyny cyfrowej:

Zmienne s

ą wielkościami zmieniającymi swoją wartość w trakcie

wykonywania programu.
Ka

żda zmienna wykorzystana w programie jest całkowicie

okre

ślona przez swoją nazwę, którą nadaje się jej zgodnie z

przyj

ętymi regułami.

D

ługość identyfikatora zmiennej jest dowolna, z tym że tylko

pierwsze 63 znaki s

ą znaczące. Nazwa zmiennej powinna

sugerować rolę tej zmiennej w programie

Wszystkie zmienne

używane w programie muszą być wcześniej

zadeklarowane.
W momencie deklaracji zmiennej nie przypisywane s

ą im żadne

warto

ści liczbowe. Deklaracje sygnalizują tylko komputerowi

konieczno

ść zarezerwowania dla nich odpowiedniej jednostki

pami

ęci

background image

Deklaracje zmiennych

W programie musimy określić, jakiego typu będą 

używane  zmienne w programie oraz spowodować, 

żeby została zarezerwowana pamięć na ich 

przechowanie

deklaracje zmiennych poprzedzamy słowem  kluczowym 

var

var

nazwa_zmiennej 1

: typ;

nazwa_zmiennej 2

: typ;

var

clkowita:byte;
rzecz   :Double;
znak: char;

napis: string;
A: array[1..3]of 0..1;

background image

Deklaracje zmiennych

Podczas deklaracji zmiennym można nadać wartości 

początkowe

var

clkowita : byte=1;
rzecz   :Double=1.55;
znak: char=

’a’;

napis: string=

’trwają obliczenia’;

A: array[1..3]of 0..1=(0,1,0);

background image

Operatory

W języku pascal zdefiniowane są pewne operatory, 

których można używać do konstruowania wyrażeń 

(arytmetycznych, logicznych...)

operatory arytmetyczne:

+ - * / 

możemy przy konstruowaniu wyrażeń 

arytmetycznych używać nawiasów

a * b / c * d

Np..  

1+5 / 2

1+(a-3) / (4+x) 

d

c

b

a

d

c

b

a

background image

pewne specyficzne operatory arytmetyczne 

zdefiniowane są dla liczb całkowitych, jak: 

div – dzielenie całkowite bez reszty, 

mod – reszta z dzielenia całkowitego;

Np. 7 div 3   (równa się 2) 

mod 2   (równa się 1)

Typ zwracanego wyniku zależy 

zazwyczaj od typu argumentów operacji

background image

Operatory relacyjne (porównania)

mniejszy   nie większy   większy  nie mniejszy jest elementem

<= 

>=        in

(np.  a>2;     

B <= a-5;

var znak: char; 
zank in [’a’..’z’] ) 

„różne”  i   „równe”

<>           =

np..

a

=b

B=2
x<>10

background image

operatory logiczne 

koniunkcji , alternatywy,  negacji,  różnicy symetrycznej 

and

or           not          xor

a > 2  and  a < 9 ...

//źle

(a > 2) and (a < 9) ... //dobrze

(a=2) or (d<c) 

not a in [’1..5’]

if (zn in [‘0’..’9’, ‘A’,’C’..’H’]) then ....

background image

Operacja przypisania

Do przypisania zmiennej wartości innej zmiennej lub 

wyrażenia służy operator przypisania 

:=

liczba:=10;
Nowe_pi:=3.2;
s:=’Komentarz’
A[1,1]:=22;

background image

Priorytet operatorów

WARTOŚCIOWANIE WYRAŻEŃ 

- wyrażenia obliczane są od strony 

lewej do prawej zachowując priorytety operatorów w kolejności: 

operatory multiplikatywne a następnie addytywne; zmiana tych 

priorytetów może nastąpić w wyniku użycia nawiasów.

ZGODNOŚĆ TYPÓW

-

wartość wyrażenia występującego w instrukcji 

przypisania powinna być takiego samego typu jak zmienna, do której 

następuje przypisanie

operator

priorytet

kategoria

+, 

, @, not, ()


(najwyższy)

jednoargumentowe

*, /, div, mod, and 

2

multiplikatywne

+, 

–, or, xor

3

addytywne

=, <>, <, >, <=, >=, in

4

relacyjne

background image

Konwersja typów

Konwersja typu

- zachodzi podczas operacji na zmiennych różnego typu

var

c: Integer;

x, d: double

x:=c+d    zachodzi konwersja niejawna zmiennej c (typy całkowitego ) na 

zmienną typu rzeczywistego

Var zn : byte

lok : boolean

// konwrsje jawne

if  not lok and boolean(zn) then zn:=char(102);
zank := char(65);

c := byte(’z’) + 5;

background image

Składnia języka

Każdy język ma swoją 

składnię:

słowa kluczowe

instrukcje 

itd ....

background image

Struktura programu

Program w języku Pascal ma pewną 

ustaloną strukturę: 

program

nazwa_programu

część deklaracyjna

begin

część wykonywalna

end

.

background image

Struktura programu

nagłówek 
programu

end

.

begin

ciąg instrukcji

Część 
deklaracyjna

Blok
programu

program

wyklad02;

const  max=10;

var  liczba:byte;

begin

writeln(‘początek');

liczba:=5+max;

writeln('liczba=‘, liczba);

writeln (’Koniec’);

Readln;

end.

background image

Instrukcje programu kończą się zazwyczaj 

średnikami

wyjątkowo instrukcję zakończone są innymi 

znakami: np. kropką - ostatnia linia programu

Zazwyczaj układ tekstu w linii czy też 

rozłożenia go na kilka linii nie ma znaczenia

Część deklaracyjna

zawiera deklaracje 

typów, stałych, zmiennych, opis funkcji 

Część wykonywalna

– instrukcje do 

wykonania

background image

program Wyrazy;
{$APPTYPE CONSOLE}
//indentyfikator
n1
_1n
wst_do_progr
WstDoProgr
wstDoProgr
begin1

//litera│
-123
5.6e10
'Jakiś apis'

//słowo kluczowe

begin
if
repeat
begin

readln;

end.

background image

program Zdanie1; //nagłówek

//cz. deklaracyjna

{$APPTYPE CONSOLE}
uses  SysUtils;

//deklar. sta│ych

const
//  indent = wartość

MaxN = 100;
MaxN1 = MaxN+1;

//deklar. typˇw

Type         

//ident = typ;

int = Integer;
TIndeksTabl = Integer;

//deklaracja zmiennych

var
// ident : typ;

I :Integer;

// ciąg dalszy programu
var

IndeksTabl, N : 

TIndeksTabl;

x :Integer = 1;//ale nie w 

podprogr.

//deklaracja podprogramów
//dek. Funkcji 

//cz. wykonawcza

begin

I := 1;
I := I + 1;
N := MaxN;

//....

I := MaxN;
{ komentarz}

end.

background image

program TypyProsteNieporz;
{$APPTYPE CONSOLE} {$O-,Q+,R+}
uses  SysUtils;

var

s :string;
ok :Boolean;

begin

s := 'Pierwszy wiersz'#13#10'Drugi'^G;
writeln(s);
s := 'Apostrof '' pojedynczy';
writeln(s);
writeln(s[2]);
writeln(s[length(s)]);
readln;

end.

background image

program TypyProsteNieporz;

{$APPTYPE CONSOLE} {$O-,Q+,R+}

uses SysUtils;

var

s :string;

ok :Boolean;

i: real;

z:char;   

Begin

//cz. Wykonawcza

writeln(ord(z));

s := 'Pierwszy wiersz'#13#10'Drugi'^G;

writeln(s);

s := 'Apostrof '+' pojedynczy';

writeln(s);

writeln(s[2]);

writeln(s[length(s)]);

writeln(length(s));

writeln(ok);

ok:=boolean(1);

writeln(ok);

readln; end.

background image

program Operatory2;

{$APPTYPE CONSOLE}   {$O-,Q+,R+}

uses

SysUtils;

var

zn :char;
int :Integer;

type

T = array[1..4] of byte;

begin

zn := 'Z';
writeln(char(byte(zn)-byte('A')+byte('a')));

int:=-3;
writeln(T(int)[1]);
writeln(T(int)[2]);
writeln(T(int)[3]);
writeln(T(int)[4]);
writeln(int64(15));
readln;

end.

background image

program TypyProstePorz;

{$APPTYPE CONSOLE}
uses SysUtils;
var

ok :Boolean;

x :1..4;

dzień : (pon, wt, śr);

begin

writeln(SizeOf(int64));
writeln(low(int64));
writeln($11);

ok := FALSE;
x := 4;
ok := x > 1;
writeln(ok);

dzień := wt;
writeln(ord(dzień));
inc(dzień);

writeln(ord(dzień));

// Ciąg dalszy 

dec(x);

// Ciąg dalszy 

dec(x);

writeln(x);

writeln(high(x));

writeln(low(x));

readln;

end.

background image

//  program obliczajacy trzecia potege liczby 

program 

prog01

;

{$APPTYPE CONSOLE}
uses  SysUtils;

var 

a

,

p2

,

p3

: integer;

begin

writeln

('program oblicza trzecia potege podanej 

liczby');

write

('podaj a:'); 

readln

(

a

);

p2

:= 

a

a

;

p3

:= 

p2

a

;

write('wynik wynosi ', 

p3

);

Readln;

end.

background image

Instrukcje sterujące

W programie używamy instrukcji sterujących, 

umożliwiających warunkowe lub iteracyjne 

wykonywanie pewnych fragmentów kodu 

Instrukcje

proste:

strukturalne:

przypisania                     złożona
procedury                       warunkowa

iteracyjna

pusta                              wiążąca

background image

Instrukcja wywołania procedury

Nazwa procedury

przykłady

Writeln;          //wypisuje pusty wiersz (pustą linię)

Write;           //wypisuje pusty znak

Write(’a’);     //wypisuje znak a

Write(a);     //wypisuje wartość zmiennej  a

Writeln(x,2,y);

//wypisuje wartość zmiennej x,liczbę 2,

//   war. zmiennej y i przechodzi do następnej lini

Read;         //czyta pusty znak z klawiatury

Readln;     

//czyta znak „Enter”  - przechodzi na następnej linii

Read(a);   

//czyta z klawiatury wartość zmiennej a 

Readln(a);   

//czyta z klawiatury wartość zmiennej a  i przechodzi

// do następnej linii

background image

Instrukcja przypisania 

:= (operator przypisania)

identyfikator zmiennej

:=

wyrażenie

przykłady

Liczba := 3;

Napis:= ’dowolny tekst!’;

znak:=’h’ ;

Wiek:= 20;

B[i] :=2.3;

background image

Blok instrukcji  

begin

Ciąg Instrukcji 

end;

Begin

przykłady

Begin 

x := 3;

y:=x+b;

z:=x+y+z ;

writeln(z);

end;

Instrukcja_1

Instrukcja_2

Instrukcja_N

end;

background image

program Typy_zbiorowy;
{$APPTYPE CONSOLE}
uses  SysUtils;

type  cyfry = set of 0..9;

var

x,y,z:cyfry;

i:integer;

begin

x:=[1,9,100,9,9];   { wartość 9 wystąpi w zbiorze 
tylko raz, a 100 zostanie zignorowane }

i:=9;

y:=[i+2,3];    {wartość 11 zostaniezignorowana}

z:=[2,4,6,8];

end.