background image

 

 

 

 

INFORMATYKA

Programowanie 

strukturalne

Dr Zdzisław Szczepanik

background image

 

 

 

 

Wzorcem Języków strukturalnych w sensie 

klasycznym jest Język programowania Pascal.

Można łatwo przebrnąć początkowe definicje tego 

języka posługując się trzema pozycjami 
literaturowymi w kolejności ich  przedstawienia:

1.Wł.Arciszewski ,” Ćwiczenia z Turbo 

Pascala”+dyskietka,  ISBN 83-7279-051-5, wyd. 
MIKOM,  

www.mikom.com.pl

2.Sam.A.Abolrous, ” Pascal podstawy 

programowania” + dyskietka, ISBN 83-7158-
075-4, wyd. MIKOM.

3.Andrzej Marciniak, Borland Pascal 7.0 z 

elementami programowania cz I a, cz I b – język 
programowania,       ISBN 83-85060-53-7, ISSN 
0867-6011, wyd. NAKOM, e-mail: nakom@soho-
online.com

background image

 

 

 

 

        

        

STRUKTURA PROGRAMU W JĘZYKU  

STRUKTURA PROGRAMU W JĘZYKU  

PASCAL

PASCAL

NAGŁÓWEK

NAGŁÓWEK

 PROGRAMU

 PROGRAMU

Program 

Program 

 

 

nazwa

nazwa

 

 

[parametry

[parametry

]

]

  

  

BLOK DEKLARACYJNY

BLOK DEKLARACYJNY

deklaracje modułów, stałych, zmiennych,definicje typów

deklaracje modułów, stałych, zmiennych,definicje typów

Uses,const,type,var,label,procedure,function

Uses,const,type,var,label,procedure,function

  

  

BLOK 

BLOK 

WYKONAWCZ

WYKONAWCZ

y

y

begin

begin

(ciąg instrukcji)

(ciąg instrukcji)

 np. begin-end, if..then..else, goto, repeat..until 

 np. begin-end, if..then..else, goto, repeat..until 

For..to, while.. Do,  case..of..else..end, := , inline(..)

For..to, while.. Do,  case..of..else..end, := , inline(..)

Wywołanie procedury, wywołanie funkcji

Wywołanie procedury, wywołanie funkcji

end.

end.

background image

 

 

 

 

Zagadnienie  zapisu liczby w 

Zagadnienie  zapisu liczby w 

dowolnym systemie liczbowym.

dowolnym systemie liczbowym.

S

S

10 

10 

= { 0,…,9 }                     

= { 0,…,9 }                     

3  2 1 0 ,-1-2

3  2 1 0 ,-1-2

                                            

                                            

2076,35 = 

2076,35 = 

= 2*10

= 2*10

3

3

+0*10

+0*10

2

2

+7*10

+7*10

1

1

+6*10

+6*10

0

0

+3*10

+3*10

-

-

1

1

+5*10

+5*10

-2

-2

S

S

7

7

 = { 0,…,6 }                      

 = { 0,…,6 }                      

3 2 1 0 ,-1-2

3 2 1 0 ,-1-2

   

   

2561,34 =

2561,34 =

= 2*7

= 2*7

3

3

+5*7

+5*7

2

2

+6*7

+6*7

1

1

+1*7

+1*7

0

0

+3*7

+3*7

-

-

1

1

+4*7

+4*7

-2

-2

=686+245+42+1+3/7+4/49=974+25/49

=686+245+42+1+3/7+4/49=974+25/49

sys.10

sys.10

background image

 

 

 

 

Przykład mnożenia w systemie 7

Przykład mnożenia w systemie 7

4*5 = 20 = 2*7

4*5 = 20 = 2*7

1  

1  

+ 6*7

+ 6*7

0

0

 = ( 26 )

 = ( 26 )

7

7

Zdefiniujmy operację dzielenia całkowitego 

Zdefiniujmy operację dzielenia całkowitego 

bez reszty w postaci :

bez reszty w postaci :

m := 20 DIV 7,   m= 2  ponieważ  20 / 7 

m := 20 DIV 7,   m= 2  ponieważ  20 / 7 

= 2 + 6/7

= 2 + 6/7

Zdefiniujmy operację otrzymania reszty z 

Zdefiniujmy operację otrzymania reszty z 

całkowitego dzielenia

całkowitego dzielenia

r := 20 MOD 7,          r = 6 

r := 20 MOD 7,          r = 6 

background image

 

 

 

 

Jak otrzymać ciąg cyfr reprezentujący 

Jak otrzymać ciąg cyfr reprezentujący 

wynik z mnożenia       4*5 

wynik z mnożenia       4*5 

10

10

 = 26 

 = 26 

7

7

Można to osiągnąć wprowadzając zapis

Można to osiągnąć wprowadzając zapis

m := (4*5) DIV 7   = 20 DIV 7

m := (4*5) DIV 7   = 20 DIV 7

 = 

 = 

2

2

r   := (4*5) MOD 7 = 20 MOD 7 = 6

r   := (4*5) MOD 7 = 20 MOD 7 = 6

A(4,5) := 10*m + r = 10*2 + 6 = 

A(4,5) := 10*m + r = 10*2 + 6 = 

26

26

background image

 

 

 

 

Spróbujmy rozwiązać problem tabliczki mnożenia w 

dowolnym systemie liczbowym na przykładzie systemu 

siódemkowego.

*

*

1

1

2

2

3

3

4

4

5

5

6

6

1

1

1

1

2

2

3

3

4

4

5

5

6

6

2

2

2

2

4

4

6

6

11

11

13

13

15

15

3

3

3

3

6

6

12

12

15

15

21

21

24

24

4

4

4

4

11

11

15

15

22

22

26

26

33

33

5

5

5

5

13

13

21

21

26

26

34

34

42

42

6

6

6

6

15

15

24

24

33

33

42

42

51

51

background image

 

 

 

 

Uniwersalny algorytm 

Uniwersalny algorytm 

tabliczki mnożenia w 

tabliczki mnożenia w 

dowolnym systemie 

dowolnym systemie 

liczbowym na 

liczbowym na 

przykładzie systemu 

przykładzie systemu 

siódemkowego.

siódemkowego.

Schemat blokowy.

Schemat blokowy.

background image

 

 

 

 

      

      

Algorytm musi spełniać  

Algorytm musi spełniać  

warunki:

warunki:

 

 

1.

1.

  

  

Uniwersalność

Uniwersalność

 – rozwiązanie 

 – rozwiązanie 

pewnej klasy

pewnej klasy

   

   

 

 

  

  

zadań a nie jednostkowego

zadań a nie jednostkowego

 zadania

 zadania

 

 

2.

2.

  

  

Dyskretność

Dyskretność

 – opis sekwencji 

 – opis sekwencji 

pewnych 

pewnych 

     

     

czynności i powiązań między nimi

czynności i powiązań między nimi

 

 

3.

3.

  

  

Jednoznaczność

Jednoznaczność

 – postać bez 

 – postać bez 

niedomówień

niedomówień

    

    

 i swobody interpretacji

 i swobody interpretacji

 

 

4.

4.

  

  

Skończoność

Skończoność

background image

 

 

 

 

O efektywności algorytmu 

O efektywności algorytmu 

decydują: 

decydują: 

Czas realizacji algorytmu – 

Czas realizacji algorytmu – 

tzw. złożoność czasowa

tzw. złożoność czasowa

Wielkość potrzebnej pamięci 

Wielkość potrzebnej pamięci 

operacyjnej 

operacyjnej 

Zajętość pamięci dyskowej

Zajętość pamięci dyskowej

background image

 

 

 

 

STAR

T

k-
podst.

system

u

i:=1

j:=1

m:=(i*j) DIV k 
 r:=(i*j) MOD 

A(i,j):=10*m+
r

j:= j+1

IF

j = k-

1

END

STO
P

Wydrukuj 

tabliczkę 

mnożenia

IF

i= k-1

i := i 

+1

tak

tak

ni
e

ni
e

background image

 

 

 

 

Jak zrealizować zadanie zapisu 

Jak zrealizować zadanie zapisu 

tego zadania w postaci 

tego zadania w postaci 

programu komputerowego w 

programu komputerowego w 

jakimś języku programowania?

jakimś języku programowania?

background image

 

 

 

 

Język programowania

Język programowania

 (

 (

programing 

programing 

language)- 

language)- 

sztucznie stworzony 

sztucznie stworzony 

język, używany przez programistów 

język, używany przez programistów 

do wydawania rozkazów (poleceń) 

do wydawania rozkazów (poleceń) 

komputerowi. Są nim pisane 

komputerowi. Są nim pisane 

wszystkie programy komputerowe. 

wszystkie programy komputerowe. 

Za pomocą języka programowania 

Za pomocą języka programowania 

tworzy się tzw. kod źródłowy 

tworzy się tzw. kod źródłowy 

programu, który tłumaczony jest na 

programu, który tłumaczony jest na 

kod maszynowy.

kod maszynowy.

background image

 

 

 

 

Program  komputerowy  to

 

algorytm 

zapisany 

języku 

programowania,  w  którym  czynności 
zapisane 

są 

jako 

instrukcje. 

W  programie  można  wyodrębnić 
pewne 

logiczne 

całości 

jako 

procedury,  funkcje,  moduły

  lub 

obiekty

.

Procedury, funkcje i obiekty są zwykle 
stosowane 

do 

opisu 

czynności 

wielokrotnie  powtarzanych  w  ramach 
tego  samego  programu  ale  mogą  być 
równie  dobrze  wykorzystywane  w 
różnych innych programach.

background image

 

 

 

 

Języki formalne 

Język formalny zwykle jest zdefiniowany 

poprzez podanie

• zbioru symboli (alfabetu, słownika)
• zbioru reguł konstrukcji

Zbiór wszystkich wyrażeń poprawnie 

zbudowanych danego języka formalnego 

określa jego twórca

W językach formalnych proces konstrukcji 

wyrażeń poprawnie zbudowanych zwykle jest 

jednoznacznie określony. 

Przedmiotem semantyki jest 

przyporządkowywanie językowi interpretacji. 

Teoria modeli badająca związki semantyczne 

jest więc teorią interpretacji

background image

 

 

 

 

Są dwa podstawowe typy języków:

 Języki programowania niskiego 

poziomu

 Języki programowania wysokiego 

poziomu

   

Asembler – język, w którym stosuje 

się elementarne instrukcje procesora. 

Jedno polecenie jest jednym rozkazem 

– programowanie w kodzie 

maszynowym.

 

background image

 

 

 

 

Wady programowania w asemblerze:

Wady programowania w asemblerze:

1.

1.

     

     

proces obliczeniowy rozbijany jest na 

proces obliczeniowy rozbijany jest na 

drobne elementy programowane każdy osobno, 

drobne elementy programowane każdy osobno, 

gdyż instrukcje asemblera pozwalają tylko na 

gdyż instrukcje asemblera pozwalają tylko na 

dokonywanie elementarnych operacji. Stąd 

dokonywanie elementarnych operacji. Stąd 

długość programu

długość programu

2.

2.

     

     

Postać instrukcji ma charakter 

Postać instrukcji ma charakter 

abstrakcyjny, nieczytelny dla człowieka, co 

abstrakcyjny, nieczytelny dla człowieka, co 

utrudnia proces uczenia i zwiększa możliwość 

utrudnia proces uczenia i zwiększa możliwość 

popełnienia błędu.

popełnienia błędu.

3.

3.

     

     

Przy programowaniu trzeba uwzględniać 

Przy programowaniu trzeba uwzględniać 

strukturę elektroniczną procesora

strukturę elektroniczną procesora

4.

4.

     

     

Przy pisaniu trzeba kontrolować położenie 

Przy pisaniu trzeba kontrolować położenie 

w pamięci komputera zarówno programu, jak i 

w pamięci komputera zarówno programu, jak i 

danych

danych

5.

5.

     

     

brak widocznego związku pomiędzy 

brak widocznego związku pomiędzy 

programem a matematycznym lub logicznym 

programem a matematycznym lub logicznym 

opisem jego funkcji

opisem jego funkcji

6.

6.

     

     

związek asemblera z maszyną utrudnia 

związek asemblera z maszyną utrudnia 

przenoszenie programów napisanych w tym 

przenoszenie programów napisanych w tym 

języku na inną maszynę

języku na inną maszynę

background image

 

 

 

 

Przykład : fragment programu napisanego 

Przykład : fragment programu napisanego 

w języku niskiego poziomu

w języku niskiego poziomu

ADRES    

ADRES    

  

  

 KOD INSTRUKCJI  

 KOD INSTRUKCJI  

      

      

 

 

KOD ASEMBLERA

KOD ASEMBLERA

000000D3  

000000D3  

0004              

0004              

add 

add 

[si],al

[si],al

000000D5 

000000D5 

0000              

0000              

add [bx+si],al

add [bx+si],al

000000D7  

000000D7  

004801          

004801          

add 

add 

[bx+si+0x1],cl

[bx+si+0x1],cl

000000DA 

000000DA 

0000             

0000             

add [bx+si],al

add [bx+si],al

000000DC  

000000DC  

48                

48                

dec ax

dec ax

000000F8  

000000F8  

FC                

FC                

cld

cld

000000F9  

000000F9  

0B01              

0B01              

or 

or 

ax,[bx+di]

ax,[bx+di]

000000FB  

000000FB  

00FC              

00FC              

add ah,bh

add ah,bh

000000FD  

000000FD  

8B05              

8B05              

mov ax,

mov ax,

[di]

[di]

000000FF  

000000FF  

08FC              

08FC              

or ah,bh

or ah,bh

00000101  

00000101  

8B05              

8B05              

mov ax,[di]

mov ax,[di]

background image

 

 

 

 

Model problemu a język programowania

Model problemu a język programowania

.

.

Język  programowania  reprezentuje  abstrakcyjną 

Język  programowania  reprezentuje  abstrakcyjną 

maszynę,  która  rozumie  występujące  w  nim 

maszynę,  która  rozumie  występujące  w  nim 

terminy,  stanowiące  wyższy  poziom  abstrakcji 

terminy,  stanowiące  wyższy  poziom  abstrakcji 

w  stosunku  do  obiektów  używanych  przez 

w  stosunku  do  obiektów  używanych  przez 

rzeczywisty komputer.

rzeczywisty komputer.

Stosowanie  języka  programowania  wyższego 

Stosowanie  języka  programowania  wyższego 

poziomu jest:

poziomu jest:

wygodne,  gdyż  łatwiej  napisać  program  stosując 

wygodne,  gdyż  łatwiej  napisać  program  stosując 

słowa,  liczby,  instrukcje  niż  np.  ciągi  bitów, 

słowa,  liczby,  instrukcje  niż  np.  ciągi  bitów, 

ponadto  uwalnia  programistę  od  konieczności 

ponadto  uwalnia  programistę  od  konieczności 

wyboru  reprezentacji  danych  np.  liczby  (o  ile 

wyboru  reprezentacji  danych  np.  liczby  (o  ile 

liczba  jest  elementarnym  obiektem  w  tym 

liczba  jest  elementarnym  obiektem  w  tym 

języku).

języku).

krępujące,  bo  ogranicza  wolność  programisty, 

krępujące,  bo  ogranicza  wolność  programisty, 

język  narzuca  określone  pojęcia  podstawowe 

język  narzuca  określone  pojęcia  podstawowe 

(elementarne)

(elementarne)

a także reguły, które muszą być przestrzegane

a także reguły, które muszą być przestrzegane

.   

.   

background image

 

 

 

 

Translatory-programy do 

przetwarzania kodu programu

 

 

Kompilator (compiler)

Kompilator (compiler)

-specjalny 

program 

przetwarzający 

-specjalny 

program 

przetwarzający 

polecenia  języka  wysokiego  poziomu 

polecenia  języka  wysokiego  poziomu 

(kod  źródłowy  programu)  na  kod 

(kod  źródłowy  programu)  na  kod 

maszynowy, zrozumiały przez procesor. 

maszynowy, zrozumiały przez procesor. 

Tłumaczenie 

całego 

programu 

Tłumaczenie 

całego 

programu 

następuje 

przed 

uruchomieniem 

następuje 

przed 

uruchomieniem 

programu.

programu.

Interpreter

Interpreter

-program  przetwarzający  polecenia  języka 

-program  przetwarzający  polecenia  języka 

wysokiego  poziomu  w  trakcie  wykonywania 

wysokiego  poziomu  w  trakcie  wykonywania 

programu  (przetwarza  rozkaz  po  rozkazie  i 

programu  (przetwarza  rozkaz  po  rozkazie  i 

nie tworzy kodu programu jako całości)

nie tworzy kodu programu jako całości)

background image

 

 

 

 

Języki programowania 

wysokiego poziomu 

– używają słów języka naturalnego. 

Nowoczesne języki są związane z 

systemami programowymi (zbiór 

narzędzi wspomagających: edycja, 

translacja, testowanie). 

background image

 

 

 

 

 

 

Realizacja projektu informatycznego:

Realizacja projektu informatycznego:

 

 

defini

defini

owanie

owanie

 problemu, 

 problemu, 

wybór metody, 

wybór metody, 

opracowanie algorytmu, 

opracowanie algorytmu, 

programowanie, 

programowanie, 

testowanie, 

testowanie, 

przygotowanie dokumentacji,

przygotowanie dokumentacji,

tworzenie wersji dystrybucyjnej

tworzenie wersji dystrybucyjnej

Elementy 

programowania 

metodologia

background image

 

 

 

 

Spróbujmy użyć języka naturalnego do 

zaprogramowania naszego problemu.

Najlepiej na początku napisać program 

w języku (polskim), którym się 

posługujemy na co dzień, czyli w tak 

zwanym pseudojęzyku.

Później przeniesiemy nasz tekst na 

język formalny, strukturalny, 

obiektowy czy inny. Dużo lepiej wtedy 

zrozumiemy czego oczekujemy w 

rozwiązaniu naszego zadania. 

Nie zawsze przeniesiemy treść w 

pseudojęzyku na język formalny.

background image

 

 

 

 

STAR

T

k-
podst.

system

u

i:=1

j:=1

m:=(i*j) DIV k 
 r:=(i*j) MOD 

A(i,j):=10*m+
r

j:= j+1

IF

j = k-

1

END

STO
P

Wydrukuj 

tabliczkę 

mnożenia

IF

i= k-1

i := i 

+1

tak

tak

ni
e

ni
e

et1

et1

et3

et3

et2

et2

et4

et4

background image

 

 

 

 

Program ma nazwę

Program ma nazwę

  tabliczka_mnożenia_w_dow_syst ;

  tabliczka_mnożenia_w_dow_syst ;

Biblioteki używane w programie

Biblioteki używane w programie

Standartowa ekranu ;

Standartowa ekranu ;

Etykiety

Etykiety

 et1, et2, et3, et4, et5 ;

 et1, et2, et3, et4, et5 ;

Zmienne w programie

Zmienne w programie

 

 

I, j, k, m, r : całkowite ;

I, j, k, m, r : całkowite ;

A : tablica dwuwymiarowa [ 1..9 , 1..9 ] ;

A : tablica dwuwymiarowa [ 1..9 , 1..9 ] ;

blok1

blok1

Drukuj na ekranie ( ‘ tabliczka mnożenia w dowolnym’) 

Drukuj na ekranie ( ‘ tabliczka mnożenia w dowolnym’) 

;

;

Drukuj na ekranie ( ‘          systemie liczbowym ’) ;

Drukuj na ekranie ( ‘          systemie liczbowym ’) ;

Drukuj na ekranie ( ‘Podaj podstawę systemu k = ? ’) ;

Drukuj na ekranie ( ‘Podaj podstawę systemu k = ? ’) ;

Czytaj z ekranu ( k ) ;

Czytaj z ekranu ( k ) ;

background image

 

 

 

 

i := 1 ;

i := 1 ;

et1: 

et1: 

j := 1 ;

j := 1 ;

et2:

et2:

m := ( i * j ) DIV k ;

m := ( i * j ) DIV k ;

  

  

r := ( i * j ) MOD k ;

r := ( i * j ) MOD k ;

A ( i , j ) := 10 * m + r ;

A ( i , j ) := 10 * m + r ;

            

            

jeżeli

jeżeli

 j = k – 1 

 j = k – 1 

wtedy wykonaj

wtedy wykonaj

 skok do et3 

 skok do et3 

w przeciwnym

w przeciwnym

   

   

przypadku

przypadku

 

 

blok2

blok2

 

 

j:= j + 1 ; skok do et2 

j:= j + 1 ; skok do et2 

koniec bloku2

koniec bloku2

et3:      

et3:      

jeżeli

jeżeli

 i = k – 1 

 i = k – 1 

wtedy wykonaj

wtedy wykonaj

 

 

background image

 

 

 

 

blok3

blok3

  

  

 

 

Drukuj na ekranie ( ‘ tabliczka mnożenia ’) ;

Drukuj na ekranie ( ‘ tabliczka mnożenia ’) ;

dla

dla

  i=1 

  i=1 

aż do

aż do

 k-1 

 k-1 

wykonuj

wykonuj

dla

dla

  j=1 

  j=1 

aż do

aż do

 k-1 

 k-1 

wykonuj

wykonuj

blok4

blok4

Drukuj na ekranie (‘ A( ‘, i ,’ , ‘, j ,’ ) = ‘, A ( i , j ): 4:0 ) ; 

Drukuj na ekranie (‘ A( ‘, i ,’ , ‘, j ,’ ) = ‘, A ( i , j ): 4:0 ) ; 

koniec bloku 4

koniec bloku 4

skok do et4 ;

skok do et4 ;

koniec bloku 3

koniec bloku 3

i:= i + 1 ;

i:= i + 1 ;

Skok do et1 ;

Skok do et1 ;

et4 : czytaj 1 znak z ekranu ; stop ; { zatrzyma ekran }

et4 : czytaj 1 znak z ekranu ; stop ; { zatrzyma ekran }

Koniec bloku 1.

Koniec bloku 1.

background image

 

 

 

 

***********************

***********************

*****

*****


Document Outline