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 := 
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 

– ShortInt 

-128..127 

– Word 

0..65535 

– Integer 

-32768..32767 

– 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