Wykład z Pascala 2

background image

Etapy rozwiązywania

problemu

1. Sformułowanie zadania
2. Określenie danych wejściowych
3. Określenie celu, czyli wyniku
4. Poszukiwanie metody rozwiązania, czyli

algorytmu

5. Przedstawienie algorytmu w postaci:

 opisu słownego
 listy kroków
 schematu blokowego

 języka programowania

6. Analiza poprawności rozwiązania
7. Testowanie rozwiązania dla różnych danych.

Ocena efektywności przyjętej metody.

background image

Algorytm

dokładny przepis podający sposób

rozwiązania określonego zadania w

skończonej liczbie kroków;

zbiór poleceń odnoszących się do pewnych

obiektów, ze wskazaniem porządku, w

jakim mają być realizowane.

background image

Algorytmika

podstawowy dział informatyki poświęcony

poszukiwaniom, konstruowaniu i badaniom

algorytmów, zwłaszcza w kontekście ich

przydatności do rozwiązywania problemów za

pomocą komputerów.

background image

Algorytm liniowy

1. Wlać do garnka zimną wodę
2. Zapalić gaz
3. Gotować wodę do wrzenia
4. Włożyć jajko
5. Odczekać trzy minuty
6. Zgasić gaz
7. Wyjąć jajko

Gotowanie jajka

background image

Algorytm z warunkiem

1. Wlać do garnka zimną wodę
2. Zapalić gaz
3. Gotować wodę do wrzenia
4. Włożyć jajko
5. Czy jako na twardo?

TAK: Odczekać 10 minut
NIE: Odczekać 6 minut

6. Zgasić gaz
7. Wyjąć jajko

Gotowanie jajka

background image

Algorytm z warunkiem

1. Wlać do garnka zimną wodę
2. Zapalić gaz
3. Gotować wodę do wrzenia
4. Włożyć jajko
5. Włożyć jajko
6. Włożyć jajko
7. Czy jako na twardo?

TAK: Odczekać 10 minut
NIE: Odczekać 6 minut

8. Zgasić gaz
9. Wyjąć jajko

Gotowanie trzech jajek

background image

Iteracja ograniczona

1. Wlać do garnka zimną wodę
2. Zapalić gaz
3. Gotować wodę do wrzenia
4. Wykonać trzy razy:

Włożyć jajko

5. Czy jako na twardo?

TAK: Odczekać 10 minut
NIE: Odczekać 6 minut

6. Zgasić gaz
7. Wykonać trzy razy:

Wyjąć jajko

Gotowanie trzech jajek

background image

Iteracja nieograniczona

1. Wlać do garnka zimną wodę
2. Zapalić gaz
3. Gotować wodę do wrzenia
4. Włożyć ziemniaki
5. Odczekać 15 minut
6. Odczekać 1 minutę
7. Czy twarde?

TAK: powrócić do 6
NIE: przejść do 8

8. Zgasić gaz
9. Wyjąć ziemniaki

Gotowanie ziemniaków

background image

Elementy schematu

blokowego

Skrzynki
graniczne:

START

STOP

Skrzynka
operacyjna:

x := 5

Skrzynka
wprowadzająca:

Podaj

x1, x2

Skrzynka
warunkowa:

x1 > 0

N

T

background image

Schemat blokowy - sumowanie

dwóch liczb

START

STOP

wynik := a
+ b

Podaj

a , b

Drukuj

wynik

background image

Wyliczanie reszty z dzielenia x przez

y

r < y

N

T

START

STOP

r := x

Podaj

x , y

Wypisz r

r :=
r-y

background image

Sumowanie n

dowolnych

liczb

gdzie n > 0

i = n

N

T

START

STOP

s := s +
x

Wypisz s

i := i +
1

s := 0
i := 1

Podaj x

Podaj n

background image

Programowanie

• projekt programu - konstrukcja

algotytmu,

• zapis programu w dowolnym języku

programowania,

• testowanie programu.

background image

Język programowania

• zbiór zasad składni, instrukcji, dzięki

którym powstaje program możliwy do
wykonania,

• języki programowania ze względu na

sposób złożoności dzieli się na:

niskiego (asembler),

wysokiego (Turbo Pascal, C/C++, Java, Fortran,
Visual Basic)

poziomu.

background image

Translatory

• interpretery
• kompilatory

background image

• Pascal - strukturalny język programowania

stworzony przez N. Wirtha na początku lat
70,

• Turbo Pascal - opracowana przez firmę

Borland w połowie lat osiemdziesiątych XX w.
realizacja języka programowania Pascal,
wzbogacona o elementy niezbędne przy
wytwarzaniu oprogramowania, m. in.
możliwość modularyzacji i programowania
obiektowego oraz zaopatrzona w graficzną
bibliotekę wejścia-wyjścia.

background image

Symbole podstawowe

litery:

– A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q R, S, T,

U, V, W, X, Y, Z, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p,
q r, s, t, u, v, w, x, y, z, _

cyfry:

– 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

znaki specjalne:

– odstęp (znak niewidoczny)

+ - * / = ^ < > ( ) [ ] { } . , : ; ‘
# $ @

znaki sterujące: znaki o kodach ASCII od 0 do 31

małe i wielkie litery nie są rozróżniane (Pascal =

PASCAL)

background image

Dwuznaki

operator przypisania: :=
operatory relacji: <>

<= >=

zakres: ..
nawiasy kwadratowe: (. .)
nawiasy klamrowe: (* *)

background image

Operatory

• arytmetyczne

+, -, *, /, DIV, MOD

• logiczne:

and, or, not

• relacyjne:

= , < , > , <> , <= , >= , in (jest

elementem)

background image

Słowa kluczowe

and

file

nil

shr

array

for

not

string

asm

function

object

then

begin

goto

of

to

case

if

or

type

const

implementation packed

unit

constructor

in

procedure

until

destructor

inherited

program

uses

div

inline

record

var

do interface

repeat

while

downto

label

set

with

else

mod

shl

xor

end

background image

Struktura programu

PROGRAM Nazwa_programu; {Nagłówek}
USES { Deklaracja Modułów }
{ Początek części opisowej }
LABEL

{ Deklaracja etykiet }

CONST

{ Deklaracja stałych }

TYPE

{ Deklaracja typów }

VAR

{ Deklaracja zmiennych }

PROCEDURE

{ Procedury }

FUNCTION {

Funkcje }

{ Koniec części opisowej }
BEGIN
Instrukcje { Część wykonawcza programu }:
END

.

background image

Nagłówek programu

program identyfikator;

Przykłady:

program Funkcja;
program nasz_program;

background image

Deklaracje modułów

uses lista-nazw-modułów

Przykłady:

uses Crt;
uses Dos, Printer;

background image

Moduły standardowe

System - wszystkie procedury
standardowe),

Crt - obsługa ekranu, klawiatury,
głośnika),

Dos - wywołania systemowe MS-DOS,

Printer - obsługa drukarki,

OverLay - obsługa tzw. nakładek,

Graph - grafika,

Turbo3 - moduł "uzgadniający" z Turbo
Pascalem 3.0,

Graph3 - tzw. grafika żółwia, używana w
Turbo Pascalu 3.0.

background image

Deklaracje etykiet

label lista-etykiet;

Przykłady:

label etykieta1;
label alfa, beta;

background image

Deklaracje stałych

const identyfikator =
wyrażenie-stałe;

Przykłady:

const tekst = ‘komputer’;
const e = 2,718;

nazwisko = ‘Nowak’

background image

Zmienna

dana, która może przyjmować różne

wartości w ramach typu przypisanego

lub określonego tej zmiennej

• globalne
• lokalne
nazwa zmiennej - ciąg liter lub cyfr

zaczynający się od litery

Np. a, kod_ucznia, x2, x_2

background image

Deklaracje zmiennych

var lista-identyfikatorów : opis-
zmiennej;
Przykład:
var

i,j,k : Integer;

x,y : Real;

koniec : Boolean;
tab : array [1..10] of Real;

background image

c a łk o w it y

z n a k o w y

lo g ic z n y

w y lic z e n io w y

o k r o jo n y

p o r z ą d k o w y

r z e c z y w is t y

p r o s ty

ta b lic o w y

r e k o r d o w y

p lik o w y

z b io r o w y

s t r u k t u r a ln y

w s k a ź n ik o w y

ła ń c u c h o w y

p r o c e d u r a ln y

o b ie k t o w y

T y p d a n y c h

Typy danych

background image

Typy całkowite

Nazwa typu

Zakres

Liczba bajtów

– Byte

0..255

1

– ShortInt

-128..127

1

– Word

0..65535

2

– Integer

-32768..32767

2

– LongInt

-2147483648..2146483647 4

Przykład:
var x,y

: Integer;

i : Byte;

background image

Typy rzeczywiste

Nazwa typu

Zakres

Liczba

bajtów

– Real

2.9E-39

.. 1.7E38

6

– Single

1.5E-45..4.0E38

8

– Double

5.0E-324..1.7E308

8

– Extended

3.4E-4932..1.1E4932

10

– Comp

-9.2E18..9.2E18

8

Przykład:
var x,y : Real;

background image

Typ znakowy

Elementami tego typu są znaki ASCII, z
których każdy jest pamiętany w jednym bajcie
pamięci

identyfikator-zmiennej : Char;

Przykład:
var znak : Char;

background image

Typ łańcuchowy

ciągi znaków (w tym spacje)

identyfikator-zmiennej : string [rozmiar]
rozmiar 0 .. 255 (gdy nie podano rozmiar =
255)

Przykład:
var nazwisko : string [20]

background image

Typ logiczny

Elementami tego typu są dwie predefiniowane
stałe:

False - fałsz
True - prawda

identyfikator-zmiennej : Boolean;

Przykład:
var czy_koniec : Boolean;

background image

Typ tablicowy

Tablica - ustalona liczba elementów tego samego typu

identyfikator-zmiennej = array [typy-indeksowe] of

typ-składowy

Przykłady:
var tab : array [0..20] of Integer;
var macierz : array [1..3,1..5] of Real;
(3 wiersze x 5 kolumn)

background image

Typ rekordowy

Rekord - złożona struktura danych, której składowe zwane
polami mogą być różnych typów

identyfikator-typu : record [lista-deklaracji-pól] end;

Odwołanie do pola

zmienna-rekordowa.identyfikator-pola

background image

Typ rekordowy

Przykład:
var data : record
rok

: Integer;

miesiac

: 1 .. 12;

dzien

: 1 .. 31;

end;
begin

data.rok:=3;
data.miesiac:=7;
data.dzien:=5

end.

background image

Deklaracje typów

type identyfikator-typu = opis-
typu;

Przykłady:

type tekst = String;
type znak1 = Char;
i = Integer;

background image

Typ wyliczeniowy

zbiory o małej liczbie elementów na których
nie dokonuje się operacji arytmetycznych

type identyfikator-typu

=

(lista_identyfikatorów);

Przykłady:
type pora_roku = (wiosna, lato, jesien, zima);
type student = (Adam, Ania, Wojtek);

background image

Typ okrojony

ograniczenie zakresu wartości typów porządkowych

type identyfikator-typu

=

stała .. stała;

Przykład:
type tydzien = (poniedziałek, wtorek, środa,
czwartek,

piątek, sobota, niedziela);

dni_robocze = poniedziałek .. piątek;
type zakres = 0 .. 20;
type zakres = ‘A’ .. ‘K’;

background image

Typ zbiorowy

zbiór wszystkich podzbiorów danego typu
porządkowego

type identyfikator-typu = set of typ-porządkowy;

Przykład:
type dni_robocze = set of (poniedzialek, wtorek,
sroda,

czwartek, piątek);

background image

Typ rekordowy

type identyfikator-typu = record [lista-deklaracji-pól]

end;

Przykład:
type data = record
rok

: Integer;

miesiac

: 1 .. 12;

dzien

: 1 .. 31;

end;

var data_ur : data;

background image

Typ plikowy

ciąg elementów tego samego typu, przy czym
liczba jego składowych jest zmienna

type identyfikator-typu = file of opis-typu-
elementów-pliku;

Przykład:
type dane = file of Integer;

wyniki = file of Real;

background image

Zgodność typów

• zmiennej rzeczywistej można przypisać wartość

dowolnej zmiennej całkowitej lub rzeczywistej,

• zmiennej typu LongInt można przypisać dowolną

wartość typu całkowitego,

• zmiennej typu Integer, Word, Byte oraz ShortInt

można przypisać dowolną wartość całkowitą pod
warunkiem, że mieści się ona w zakresie danego
typu (obowiązek kontroli zakresu wyrażenia
spoczywa na programiście),

• zmiennej typu String można przypisać wartość

typu String lub Char.

background image

Procedury i funkcje

Są to wyodrębnione części programu, stanowiące pewną

całość, posiadające jednoznaczną nazwę i ustalony

sposób wymiany informacji z pozostałymi częściami

programu

• Procedura - wykonanie pewnej sekwencji czynności,

polegających zwykle na obliczaniu jednej lub wielu
wartości.

• Funkcja - obliczenie jednej wartości (typu prostego lub

wskaźnikowego).

background image

Instrukcje

• proste

– przypisania

{nadanie zmiennej nowej wartości}

– skoku {zmiana kolejności wykonywania instrukcji}
– pusta {brak działania}
– wywołania procedury {wywołanie procedury}
– „inline”{wywołanie instrukcji w kodzie maszyn.}

• strukturalne

– złożona{grupowanie instrukcji}
– iteracyjna

{wielokrotne wykonanie grupy instrukcji}

– warunkowa

{wybranie jednej z kilku instrukcji}

– wiążąca

{odwołania do pól rekordów}

background image

Instrukcja przypisania

odwołanie-do-zmiennej :=
wyrażenie

Przykłady:
a:=1;
war_log:=True;
dane:='Jan'+'Nowak';
i:=i+1;
y:=2*x+(5-k)*i;

background image

Instrukcja skoku

goto

etykieta

Przykład:

program skok;
label etyk1;
...
begin

...
goto etyk1;
...

etyk1: a:=a+1;

...

end.

background image

Instrukcja złożona

begin

instrukcja-1;
...
instrukcja-n

end;

Przykład:

begin

x:=x+1;
y:=2;
a:=abs(x)

end;

background image

Instrukcja warunkowa

„JEŚLI”

if wyrażenie then instrukcja1

if wyrażenie then instrukcja1

else instrukcja2

Przykład:

if a<b

then x:=1

else x:=2;

if x=y then a:=‘zero’
else if x>y then a:=‘dodatnia’

else a:=‘ujemna’;

czy

wyrażenie

prawdziwe

N

T

instrukcja
_2

instrukcja
_1

background image

Instrukcja wyboru

case wyrażenie of

sekwencja-instrukcji
wyboru

end

lub

case wyrażenie of

sekwencja-instrukcji
wyboru

else instrukcja
end

Przykłady:

case znak of

‘+’ : x:=x+a;
‘-’ : x:=x-a

end

case wartosc of

1..4 : x:=‘malo’;
5..9 : x:=‘duzo’

end

background image

Instrukcja iteracyjna

„DLA”

for zmienna:=wyrażenie_1 to wyrażenie_2 do instrukcja;
for zmienna:=wyrażenie_1 downto wyrażenie_2 do instrukcja;

Przykład:
{Suma liczb od 1 do 100}

suma:=0;
for i:=1 to 100 do suma:=suma+i;

{Wypełnienie tablicy 4 x 5 liczbą 10}

for i:=1 to 4 do
for j:=1 to 5 do
tab[i,j]:=10;

i <= w2

N

T

instrukc
ja

i := i +
1

i := w1

background image

Instrukcja iteracyjna

„DOPÓKI”

while wyrażenie do instrukcja;

(najpierw sprawdza warunek, gdy spełniony powtarza)

Przykład:
{Pięć razy tekst

„Pascal”}
i:=1;
while i<6 do
begin
writeln(‘Pascal);
i:=i+1

end;

czy

wyrażenie

prawdziwe

N

T

instrukc
ja

background image

Instrukcja iteracyjna

„POWTARZAJ”

repeat
instrukcja-1;
.......
instrukcja-n;
until wyrażenie;

(najpierw wykonuje, następnie sprawdza warunek; gdy spełniony kończy)

Przykład:

repeat

k:=k*k

until k>100

czy

wyrażenie

prawdziwe

N

T

instrukc
ja

background image

Procedury wejścia-wyjścia

wczytywanie danych

Read (lista-zmiennych);
Readln (lista-zmiennych);

Przykłady:
Read (a);
Readln (k);
Read (a,b,c);

background image

Procedury wejścia-wyjścia

wyprowadzanie wyników

Write (lista-argumentów-wyjściowych);
Writeln (lista-argumentów-wyjściowych);

Przykłady:
Write (a);
Writeln (‘x=‘,x);
Write (y:8:3);

background image

program funkcja;
uses crt;
var a,b,x :real;
begin

clrscr;
write('a=');
read(a);
write('b=');
read(b);
if a=0

then write('Brak pierwiastków)

else begin

x:=-b/a;
writeln('x=',x);
end;

repeat until keypressed;

end.

background image

PROGRAM NWP; { Największy wspólny podzielnik 2 liczb }
uses Crt;
var a, b

: Integer;

NWP : Integer;

begin
ClrScr;
repeat
writeln('Podaj 2 liczby naturalne');
readln(a,b);
until (a>0) and (b>0);
write('Najwiekszy wspolny podzielnik ',a,' i ',b,' = ');
while a<>b do { algorytm Euklidesa na NWP }
if a>b then a:=a-b
else b:=b-a;
writeln(a);
readln
end.

background image

Funkcje arytmetyczne

• Abs

- wartość bezwzględna

• ArcTan

- arcus tangens

• Cos

- cosinus

• Exp - e do potęgi danej przez

argument

• Frac - część ułamkowa argumentu
• Int

- część całkowita argumentu

• Ln

- logarytm naturalny

• Pi

- 3,1415926535...

• Sin

- sinus

• Sqr

- kwadrat argumentu

• Sqrt - pierwiastek kwadratowy

background image

Funkcje i procedury

porządkowe

Dec (x,n) - zmniejszenie x o n lub o 1 gdy brak

n

Inc (x,n) - zwiększenie x o n lub o 1 gdy brak n
Odd (x) - test nieparzystości (wynik: True gdy

nieparzysta)

Pred (x) - wartość poprzedzająca x w danym

typie

Succ (x) - wartość następująca po x w danym

typie

background image

Funkcje i procedury

łańcuchowe

Concat (lista-łańcuchów) - łączenie łańcuchów,
Copy (łańcuch,indeks,licznik)- wartością jest

łańcuch o

długości licznik wycięty z łańcucha

począwszy od znaku określonego przez indeks,

Length (łańcuch)- długość łańcucha,
Pos (podłańcuch,łańcuch) - pozycja podłańcucha w

łańcuchu,

Delete (łańcuch,indeks,licznik) - usunięcie w

łańcuchu

liczby znaków określonych przez

licznik począwszy

od pozycji podanej przez

indeks,

Insert (podłańcuch,łańcuch,indeks)- wstawienie

podłańcucha w łańcuch,

background image

Funkcje i procedury

łańcuchowe

Str (argument-numeryczny,zmienna-

łańcuchowa) - zamiana wartości numerycznej
na łańcuch,

Val (łańcuch,zmienna-numeryczna,kod) -

zamiana wartości łańcuchowej na numeryczną
(jeżeli łańcuch nie przedstawia poprawnej
liczby to kod=pozycja pierwszego błędnego
znaku)

Przykłady:

x:=‘Jan Nowak’;
y:=Delete (x,6,6);

{y= Jan}

z:=Copy (x,5,5);
{z=Nowak}

background image

Procedury i funkcje

Są to wyodrębnione części programu, stanowiące pewną

całość, posiadające jednoznaczną nazwę i ustalony

sposób wymiany informacji z pozostałymi częściami

programu

• Procedura - wykonanie pewnej sekwencji czynności,

polegających zwykle na obliczaniu jednej lub wielu
wartości.

• Funkcja - obliczenie jednej wartości (typu prostego lub

wskaźnikowego).

background image

Funkcje i procedury

standardowe

System - dostępny automatycznie, zawiera mi.in.

funkcje i procedury obsługi zbiorów, funkcje
konwertujące, arytmetyczne, wskaźnikowe,
porządkowe i sterujące

przydziałem pamięci;

Dos - funkcje systemu operacyjnego (sterowanie

datą, czasem, wykonywanie programów);

Crt - obsługa klawiatury i ekranu;
Graph - obsługa grafiki ekranowej;
Overlay - moduł umożliwiający dzielenie programu

na tzw. segmenty;

Printer - moduł ułatwiający dostęp do drukarki;
Turbo3, Graph3 - funkcje i procedury związane z

wersją 3.0;

background image

Funkcje arytmetyczne

Abs - wartość bezwzględna

typ argumentu: rzeczywisty, całkowity
typ wyniku: rzeczywisty, całkowity
Przykład: x = Abs(-3) x=3

ArcTan - arcus tangens

typ argumentu: rzeczywisty, całkowity
typ wyniku: rzeczywisty
Przykład: x = ArcTan(1)

x=7,8539816340E-1 (radiany)

Cos - cosinus kąta podanego w radianach

typ argumentu: rzeczywisty, całkowity
typ wyniku: rzeczywisty
Przykład: x = Cos(1) x=5,4030230587E-1

background image

Funkcje arytmetyczne

Exp - e do potęgi danej przez argument

typ argumentu: rzeczywisty, całkowity
typ wyniku: rzeczywisty
Przykład: x = Exp(2) x=7.3890560989E+00

Frac - część ułamkowa argumentu

typ argumentu: rzeczywisty, całkowity
typ wyniku: rzeczywisty
Przykład: x = Frac(-2.5)

x=-5.0000000000E-01

Int - część całkowita argumentu

typ argumentu: rzeczywisty, całkowity
typ wyniku: rzeczywisty
Przykład: x = Exp(-2.5)

x=-2.0000000000E+00

background image

Funkcje arytmetyczne

Ln - logarytm naturalny

typ argumentu: rzeczywisty, całkowity (dodatni)
typ wyniku: rzeczywisty
Przykład: x = Ln(1)

x=0.0000000000E+00

Pi - Liczba Pi

typ argumentu: brak
typ wyniku: rzeczywisty
Przykład: x = Pi

x= 3,1415926536E+00

Sin - sinus kąta podanego w radianach

typ argumentu: rzeczywisty, całkowity
typ wyniku: rzeczywisty
Przykład: x = Sin(Pi/2)

x=1.0000000000E+00

background image

Funkcje arytmetyczne

Sqr - kwadrat argumentu

typ argumentu: rzeczywisty, całkowity

(dodatni)

typ wyniku: rzeczywisty, całkowity
Przykład: x = Sqr(2,5)

x=6.2500000000E+00

Sqrt - pierwiastek kwadratowy z argumentu

typ argumentu: rzeczywisty, całkowity

(dodatni)

typ wyniku: rzeczywisty
Przykład: x = Sqrt(4)

x=2.0000000000E+00


Document Outline


Wyszukiwarka

Podobne podstrony:
Wykład z Pascala 3
Wykład Pascal (6)
Sem II Transport, Podstawy Informatyki Wykład XXI Object Pascal Komponenty
Sem II Transport, Podstawy Informatyki Wykład XIV i XV Object Pascal Funkcje i procedury
Podstawy Informatyki Wykład XI Object Pascal Podstawy programowania w Object Pascalu
Podstawy Informatyki Wykład XVI Object Pascal Obiekty
Sem II Transport, Podstawy Informatyki Wykład XII Object Pascal Instrukcje sterujące
Podstawy Informatyki Wykład XIII Object Pascal Funkcje i procedury
Podstawy Informatyki Wykład XVII Object Pascal Komponenty
Tp w 10 Programowanie modularne w Turbo Pascalu, INFORMATYKA, PROGRAMOWANIE, wykłady
Podstawy Informatyki Wykład XV Object Pascal Grafika
Sem II Transport, Podstawy Informatyki Wykład XIX i XX Object Pascal Obiekty
Podstawy Informatyki Wykład XII Object Pascal Instrukcje sterujące
Informatyka Wykład Turbo pascal 7
Sem II Transport, Podstawy Informatyki Wykład XVIII Object Pascal Grafika
Podstawy Informatyki Wykład X Object Pascal Jezyki programowania, Proste typy danych
Podstawy Informatyki Wykład XIV Object Pascal Tablice, rekordy i zbiory
Sem II Transport, Podstawy Informatyki Wykład XVI i XVII Object Pascal Tablice, rekordy i zbiory

więcej podobnych podstron