02 Składnia i typy


Wstęp
do programowania
Wykład 2
Składnia języka, typy, struktura programu
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 wyraznie 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
STANDARDOWE SYMBOLE JZYKA 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ądz ciągiem
znaków alfabetu języka.
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 :
<> <= >= := ..
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
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
wðpoprawne nazwy: liczba_1, stala21, a, B_2_2, c
wðniepoprawne nazwy: 2tablica, Å›cieżka, dzieÅ„, cx2-1, 1@,
Pascal, Delphi nie rozróżniają małych i dużych
liter
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 moż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ą.
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.
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ądz 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 wskaznikowy.
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.
Typy
TYP
strukturalny łańcuchowy prosty wskaznikowy proceduralny
porzÄ…dkowy rzeczywisty
wyliczeniowy okrojony całkowity logiczny znakowy
Byte ShortInt Word Integer LongI
Typ Zakres B
Typy
Integer  2 147 483 648 .. 4B
2 147 483 647
Cardinal 0 .. 4 294 967 295 4B
porzÄ…dkowy:
Shortint  128 .. 127 1B
całkowity
Smallint  32 768 .. 32 767 2B
Longint jak integer 4B
Int64  2^63 .. 2^63 1 8B
Byte 0 .. 255 (tj. 0..$FF) 1B
Przykład :
var a,c : SmallInt ;
Word 0 .. 65 535 2B
b : Byte;
(0..$FFFF)
Longword jak cardinal 4B
Typ Zakres il. cyfr B
Typy
Real48 2.9e 39 .. 1.7e38 11 12 6B
Single 1.5e 45 .. 3.4e38 7 8 4B
prosty:
Real 5.0e 324 .. 1.7e308 15 16 8B
rzeczywisty
=Double
Extended
3.6e 4951 .. 1.1e4932 19 20 10
B
Comp jak int64 (nie 19 20 8B
zalecane)
Currency 
19 20 8B
922337203685477.5808
Przykład :
..
var x : Double ;
922337203685477.5807
y,z : Single;
Zmienna typu logicznego może przyjmować dwie
Typy
wartości : true (prawda) lub false (fałsz) Obie
stałe logiczne są predefiniowane.
porzÄ…dkowy:
Boolean (false, true) 1B
logiczny
(ByteBool 1B, WordBool 2B, LongBool 4B)
Przykład :
var decyzja : boolean;
Char #0..#255 1B
znakowy
=AnsiChar
(WideChar 2B),  A a" #65, ^G a" #7,
Przykład :
Chr(65) a"  A , Ord( A ) a" 65
var jeden_znak : char;
Zmienna typu znakowego jest jednym znakiem ze
zbioru wszystkich znaków ASCII
Typy
· wyliczeniowe
(identf1, identyf2, ident3f, ...
porzÄ…dkowy:
np. (pon, wt, sr, czw, pt, sob, ndz)
wyliczeniowy
Przykład :
var dzien =(pon, wt, sr, cz, pt, so, ndz)
liczby =(1,7,13);
Greckie=(alfa, beta, gamma, delta)
Typy
const1 .. const2
1 .. 100,
porzÄ…dkowy:
-15 .. MaxN-1,
 A ..  F
okrojon
Ord, Pred, Succ, High, Low, SizeOf, Inc, Dec
np.
Ord(false) a" 0,
Succ(2) a" 3,
Low(Shortint) a" -128,
High(Byte) a" 255;
Przykład :
SizeOf(int64) a" 8,
var zakres : 10..100; inc(i) a" i=i+1,
Litery1 :  c .. k inc(k,3)
cyfry: 0..9; Dec(i)=i-1
Pred(5)=4
il. B
Typ
Typy
znakow
ShortString 0 .. 255 2B ..
łańcuchowy
= string gdy {$H-} 256B
string = AnsiString 0 .. 4B ..
~2^31 2GB
WideString 0 .. 4B ..
~2^30 2GB
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] a"  W , s[4] a"  a , s[1] :=  w ; {s a"  witaj }
Length, SetLength, np. Length(s) a" 5
s[0]=5  długość łańcucha jest umieszczona w zerowej komórce
Typy
łańcuchowy
Deklaracja typu string:
" type nazwa_typu=string
" type nazwa_typu=string [ stała ]
5 N A P I S
var s1,s2,s3,s4 :string
0 1 2 3 4 5 6 7
s1 :=  Liczba ;
s2 :=  Pierwsza ;
s1s3:=s1+s2; //LiczbaPierwsza
s4:=s2+  +s1; //Pierwsza Liczba
s2s1[0] Typy
łańcuchowy
- 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 i 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.
Typy
Tablicowy (strukturalny)
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
Typy
Tablicowy
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ę.
Typy
Tablicowy z wartościami początkowymi
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]);
Typy
Rekordowy
record
pole1:typ1
pole2:typ2
...
poleN :typN
var D :TDane;
end;
begin
Type
D.imie:= Teodor ;
D.plec:= M ;
Tdane=record
D.wiek:=23;
Imie : string[20];
D.praca[1]= Zakłady energetyczny ;
Plec : char;
Wiek : byte
Praca : array[1..10] of string
End;
Typy
Tablicowy
Tablice dynamiczne:
Identyfikator array of TypElementu
var A : array of integer;
begin ...
SetLength(A , 10); {High(A) a" 9}
A[0]:=15; A[9]:=-24;
A:=nil;
Typy
type znaki = set of char;
Mnogościowe
var a,b,c:znaki;
z:char;
begin
·ð set of typ
....
type
a:=['0'..'9', 'a'..'z', 'A'..'Z'];
CharSet = set of Char;
b:=[];
Digits = set of 0..9;
z:=#27;
Day = (Sun, Mon, Tue, Wed, Thu, Fri);
c:=[z];
Days = set of Day;
.....
end.
-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.
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
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. :=)
delta identyfikator
Zmienne
ìð
zmienna
íð
123
(byte)
îð
wartość typ
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).
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
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;
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);
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
a ×ðb
×ð d
c
c ×ð d
Np.. 1+5 / 2
a * b / c * d
1+(a-3) / (4+x)
Typ zwracanego wyniku zależy
zazwyczaj od typu argumentów operacji
pewne specyficzne operatory arytmetyczne
zdefiniowane są dla liczb całkowitych, jak:
wðdiv  dzielenie caÅ‚kowite bez reszty,
wðmod  reszta z dzielenia caÅ‚kowitego;
Np. 7 div 3 (równa się 2)
7 mod 2 (równa się 1)
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
operatory logiczne
koniunkcji , alternatywy, negacji, różnicy symetrycznej
and or not xor
a > 2 and a < 9 ... //zle
(a > 2) and (a < 9) ... //dobrze
(a=2) or (dnot a in [ 1..5 ]
if (zn in [ 0 .. 9 ,  A , C .. H ]) then ....
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;
Priorytet operatorów
priorytet kategoria
operator
1
jednoargumentowe
+,  , @, not, ()
(najwyższy)
multiplikatywne
*, /, div, mod, and 2
+,  , or, xor 3 addytywne
=, <>, <, >, <=, >=, in 4 relacyjne
WARTOŚCIOWANIE WYRAŻEC - 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
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;
Składnia języka
Każdy język ma swoją
składnię:
słowa kluczowe
instrukcje
itd ....
Struktura programu
Program w języku Pascal ma pewną
ustalonÄ… strukturÄ™:
program nazwa_programu;
część deklaracyjna
begin
część wykonywalna
end.
Struktura programu
program wyklad02;
nagłówek
Część
const max=10;
programu
deklaracyjna
var liczba:byte;
begin
begin
Blok writeln( poczÄ…tek');
ciÄ…g instrukcji
programu
liczba:=5+max;
writeln('liczba= , liczba);
end.
writeln ( Koniec );
Readln;
end.
Instrukcje programu kończą się zazwyczaj
średnikami
wð 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
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.
program Zdanie1; //nagłówek
// ciÄ…g dalszy programu
//cz. deklaracyjna
var
{$APPTYPE CONSOLE}
IndeksTabl, N :
uses SysUtils;
TIndeksTabl;
x :Integer = 1;//ale nie w
//deklar. sta%ych
podprogr.
const
// indent = wartość
//deklaracja podprogramów
MaxN = 100;
//dek. Funkcji
MaxN1 = MaxN+1;
//cz. wykonawcza
//deklar. typÇw
begin
Type
I := 1;
//ident = typ;
I := I + 1;
int = Integer;
N := MaxN;
TIndeksTabl = Integer;
//....
//deklaracja zmiennych
I := MaxN;
var
{ komentarz}
// ident : typ;
end.
I :Integer;
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.
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.
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.
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;
// CiÄ…g dalszy
x := 4;
dec(x);
ok := x > 1;
writeln(ok);
writeln(x);
dzień := wt;
writeln(high(x));
writeln(ord(dzień));
inc(dzień);
writeln(low(x));
writeln(ord(dzień));
readln;
// CiÄ…g dalszy
end.
// 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.
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
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
Instrukcja przypisania
:= (operator przypisania)
wyrażenie
:=
identyfikator zmiennej
przykłady
Liczba := 3;
Napis:=  dowolny tekst! ;
znak:= h ;
Wiek:= 20;
B[i] :=2.3;
Blok instrukcji
Begin
begin
CiÄ…g Instrukcji
Instrukcja_1
end;
Instrukcja_2
przykłady
Instrukcja_N
Begin
x := 3;
y:=x+b;
end;
z:=x+y+z ;
writeln(z);
end;
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.


Wyszukiwarka

Podobne podstrony:
02 Podstawowe typy algorytmów ewolucyjnych
Margit Sandemo Cykl Saga o czarnoksiężniku (02) Blask twoich oczu
t informatyk12[01] 02 101
introligators4[02] z2 01 n
02 martenzytyczne1
OBRECZE MS OK 02
02 Gametogeneza
02 07
Wyk ad 02
r01 02 popr (2)
1) 25 02 2012

więcej podobnych podstron