MudoL nr 1 wprowadzenie do programowania

background image

Materiały uzupełniające na prawach rękopisu do ćwiczeń
Laboratoryjnych (MudoL) „Informatyka – Programowanie”.
Wyłącznie

do

celów

dydaktycznych,

dla

studentów

Politechniki Świętokrzyskiej

Politechnika Świętokrzyska, Katedra Inżynierii Produkcji

Wersja: 2008-11-19

M

M

M

Mudo

udo

udo

udoL

L

L

L

Nr 1

Nr 1

Nr 1

Nr 1

P

P

P

P

ROGRAMOWANIE

ROGRAMOWANIE

ROGRAMOWANIE

ROGRAMOWANIE

Wybrane zagadnienia

Sławomir Luściński

background image

Programowanie

Wersja: 2008-11-19

© Sławomir Luściński. Politechnika Świętokrzyska 2008

1

S

S

S

S

PIS

PIS

PIS

PIS

T

T

T

T

REŚCI

REŚCI

REŚCI

REŚCI

Informatyka

Informatyka

Informatyka

Informatyka ................................

................................

................................

................................................................

................................

................................

.........................................................

.........................

.........................

......................... 2

2

2

2

Przedmiot informatyki ........................................................................ 2

System informacyjny .......................................................................... 2

System informatyczny ........................................................................ 3

Wprowadzenie do algorytmów

Wprowadzenie do algorytmów

Wprowadzenie do algorytmów

Wprowadzenie do algorytmów ................................

................................

................................

.............................................................

.............................

.............................

............................. 3

3

3

3

Algorytm .............................................................................................. 3

Procedury ............................................................................................ 5

Modularyzacja algorytmów ................................................................ 7

Język programowania

Język programowania

Język programowania

Język programowania ................................

................................

................................

................................................................

................................

................................

..........................................

..........

..........

.......... 8

8

8

8

Co to jest język programowania? ........................................................ 8

Twierdzenie Boehma- Jacopiniego o strukturach sterujących ......... 9

Podstawowe struktury sterujące .................................................... 9

D-struktury ...................................................................................... 9

Twierdzenie ................................................................................... 10

Proces programowania

Proces programowania

Proces programowania

Proces programowania ................................

................................

................................

................................................................

................................

................................

......................................

......

......

...... 11

11

11

11

Typy danych ...................................................................................... 11

Zasady programowania .................................................................... 12

Programy podporządkowane strukturom danych ........................... 13

Niezawodność oprogramowania ....................................................... 13

Bibliografia

Bibliografia

Bibliografia

Bibliografia ................................

................................

................................

................................................................

................................

................................

........................................................

........................

........................

........................ 16

16

16

16

background image

Programowanie

Wersja: 2008-11-19

© Sławomir Luściński. Politechnika Świętokrzyska 2008

2

IIII

NFORMATYKA

NFORMATYKA

NFORMATYKA

NFORMATYKA

Przedmiot informatyki

Przedmiot informatyki

Przedmiot informatyki

Przedmiot informatyki

Informatyka

Informatyka

Informatyka

Informatyka

jest nauką o przetwarzaniu

informacji

, zwłaszcza przy

użyciu komputerów (Turski, 1989). Informatyka, jako ogół dyscyplin
naukowych i technicznych obejmuje:

• teorie informatyczne,
• budowanie systemów informatycznych (w tym programowanie),
• budowę i działanie sprzętu komputerowego,
• zastosowania metod informatycznych w różnych dziedzinach

działalności ludzkiej i in.

Teorie informatyczne zajmują się badaniem zjawisk związanych z

operowaniem informacją. W oparciu o prawa rządzące tymi zjawiskami
konstruuje się narzędzia informatyki, na które składają się algorytmy,
języki programowania, programy, komputery, systemy przesyłu danych
itp. Teorie informatyki posługują się językiem i metodami matematyki,
logiki matematycznej oraz takich specyficznych dziedzin jak: teoria
języków formalnych i automatów, teoria algorytmów, teoria kolejek.

Informatyka określana współcześnie jako Information Technology

Information Technology

Information Technology

Information Technology (IT)

integruje przede wszystkim dwa obszary wiedzy: techniczny związany z
technologiami

komputerowymi

i

komunikacyjnymi

oraz

obszar

metodologiczny o zachowaniach środowisk społecznych i przyrodniczych.
Interdyscyplinarne tło wiedzy informatycznej obejmuje nauki techniczne,
przyrodnicze, społeczne, logikę (Bazewicz, 1993).

Programowanie i budowanie systemów informatycznych

Programowanie i budowanie systemów informatycznych

Programowanie i budowanie systemów informatycznych

Programowanie i budowanie systemów informatycznych obejmuje w

szczególności tworzenie narzędzi ułatwiających programowanie i ogólnie
— posługiwanie się komputerami. Do narzędzi tych należą: języki
programowania, translatory, systemy operacyjne i in.; do działu
informatyki związanego z programowaniem należą też metody
programowania i dowodzenia poprawności programów.

System informacyjny

System informacyjny

System informacyjny

System informacyjny

System

System

System

System informacyjny

informacyjny

informacyjny

informacyjny to „wielopoziomowa struktura, która pozwala

użytkownikowi tego systemu na transformowanie określonych informacji
wejścia na pożądane informacje wyjścia za pomocą odpowiednich
procedur i modeli” (Kisielnicki, i inni, 2005). System informacyjny (SI)
dowolnej organizacji jest zbiorem elementów określonym jako:

SI = {P, I, T, O, M, R}

SI = {P, I, T, O, M, R}

SI = {P, I, T, O, M, R}

SI = {P, I, T, O, M, R}

gdzie:

P – zbiór podmiotów, które są użytkownikami systemu,
I – zbiór informacji o sferze realnej, a więc tzw. zasoby

informacyjne,

T – zbiór narzędzi technicznych stosowanych w procesie

pobierania, przesyłania, przetwarzania,
przechowywania i wydawania informacji,

background image

Programowanie

Wersja: 2008-11-19

© Sławomir Luściński. Politechnika Świętokrzyska 2008

3

Algorytm to specyfikacja ciągu

operacji, które w wyniku

działania na wejściowy zbiór

obiektów dają wyjściowy zbiór

obiektów

(Marcotty, i inni, 1991)

O – zbiór rozwiązań systemowych stosowanych w danej

organizacji, czyli stosowana formuła zarządzania
(scentralizowana, rynkowa),

M – zbiór metainformacji, czyli opis systemu informacyjnego

i jego zasobów informacyjnych,

R – relacje pomiędzy poszczególnymi elementami.

System informatycz

System informatycz

System informatycz

System informatyczny

ny

ny

ny

System informatyczny

System informatyczny

System informatyczny

System informatyczny (SI) to „

wyodrębniona część systemu

informacyjnego, która z punktu widzenia przyjętych celów jest
skomputeryzowana”

(Kisielnicki, i inni, 2005). System informatyczny

składa się z następujących elementów:

• sprzętu (hardware),
• oprogramowania komputerów (software),
• baz danych, telekomunikacji,
• ludzi (personelu),
• organizacji.

System informatyczny zarządzania

System informatyczny zarządzania

System informatyczny zarządzania

System informatyczny zarządzania (SIZ) (

Management Information

System - MIS

) to formalny system komputerowy dokonujący wyboru,

udostępniania i integracji pochodzących z różnych źródeł danych po to,
aby w odpowiednim czasie dostarczyć informacji niezbędnych do
podejmowania decyzji

1

.

W

W

W

W

PROWADZENIE DO ALGOR

PROWADZENIE DO ALGOR

PROWADZENIE DO ALGOR

PROWADZENIE DO ALGORYTMÓW

YTMÓW

YTMÓW

YTMÓW

Algorytm

Algorytm

Algorytm

Algorytm

Za (Turski, 1979) przez algorytm będziemy rozumieć „

opis obiektów

łącznie z opisem czynności , które należy wykonać z tymi obiektami, aby
osiągnąć określony cel”

przy znanym poziomie szczegółowości

,

na

którym

formułuje się dany algorytm. Poziom szczegółowości wyznaczony jest
przez repertuar nazw czynności i klasę obiektów.

Algorytm musi być przedstawiony w formie komunikatywnej co

najmniej dla programisty. W dalszej części tekstu posłużymy się
przykładową koncepcją notacyjną – rodzajem języka – do zapisu
algorytmów przedstawioną w (Turski, 1979).

Opisy obiektów występujących w

algorytmie nazywamy

deklaracjami

, zaś

opisy czynności –

instrukcjami.

W

algorytmach występują obiekty proste i
obiekty złożone. Do obiektów prostych
zaliczamy obiekty, których wartościami
są liczby całkowite, rzeczywiste, wartości
logiczne, ciągi znakowe. Do obiektów
złożonych

zaliczamy

tablice.

1

E. Turban za (Kisielnicki, i inni, 2005)

background image

Programowanie

Wersja: 2008-11-19

© Sławomir Luściński. Politechnika Świętokrzyska 2008

4

Jednowymiarowa

tablica

(np.

kolumna

lub

wiersz)

to

ciąg

ponumerowanych obiektów, których wartości są tego samego typu;
rozmiar takiej tablicy to liczba elementów. Dwuwymiarowa tablica to
ciąg wierszy lub kolumn , z których każdy liczy tyle samo elementów o
wartościach tego samego typu. Rozmiary dwuwymiarowej tablicy to
liczba wierszy (kolumn) i liczba elementów w wierszu (kolumnie).

Tabela 1 poniżej prezentuje podstawowe schematy instrukcji

stosowanych w języku zapisu algorytmów zaproponowanego w (Turski,
1979).

Tabela 1. Schematy instrukcji. Źródło: opracowanie własne na podstawie (Turski, 1979)

Nazwa

schematu

Schemat

Instrukcja
przypisania

N

:=

W

N

jest nazwą obiektu, a

W

– wyrażeniem.

Wylicza się wartość wyrażenia

W

, a następnie podstawia się jako

wartość obiektu o nazwie

N.

Wyliczenie wartości wyrażenia

W

polega

na wykonaniu operacji, których znaki występują w

W

, na wartościach

obiektów, których nazwy figurują w

W

.

Instrukcje z
wyborem
(warunkowe,
(selekcje)

jeśli W to I

W

jest opisem warunku, a

I

– opisem instrukcji którą zamierzamy

wykonać, jeśli wartość logiczna warunku = Prawda.

jeśli W to I

1

w przeciwnym wypadku I

2

Wyboru uzależnionego od wartości logicznej warunku

W

można

dokonać pomiędzy dwoma instrukcjami

I

1

i

I

2

.

przypadek N spośród ( I

1

, I

2

, …, I

n

)

Najbardziej ogólna postać selekcji który interpretuje się następująco:
wylicza się wartość wyrażenia

N

przyjmującego wyłącznie wartości

całkowite z przedziału [1:n], następnie wykonuje się tę instrukcję z
wykazu

I

1

,

I

2

, …, I

n,

której numer jest zgodny z otrzymaną wartością

wyrażenia

N.

Iteracja

powtarzaj I aż do W

Instrukcja

I

jest powtarzana tyle razy, ile trzeba na doprowadzenie do

spełnienia warunku

W

.

Uwaga: jeśli warunek

W

nie zależy od zmian stanu powstających na

skutek wykonania instrukcji

I

to iteracja taka może być nieskończona

(co świadczy o błędzie logicznym)

dopóki W wykonuj I

Instrukcja

I

jest powtarzana tyle razy, ile można, nie naruszając

prawdziwości warunku

W

.

Instrukcje
wejścia/wyjścia

czytaj(N)

Wykonanie instrukcji wejścia polega na odczytaniu z urządzenia
zewnętrznego (plik, klawiatura) tylu znaków binarnych, ile trzeba , aby
uzyskać ciąg kodowy wartości obiektu należącego do ustalonej klasy.
Klasa obiektu jest znana z deklaracji nazwy

N

; mówimy też, że nazwa

N stanowi

parametr

instrukcji wejścia .

pisz(W)

Wykonanie instrukcji wyjścia polega na znalezieniu wartości wyrażenia
W i wydaniu jej na zewnątrz w kodzie i postaci obowiązującej dla
konkretnego urządzenia wyjściowego.

background image

Programowanie

Wersja: 2008-11-19

© Sławomir Luściński. Politechnika Świętokrzyska 2008

5

Deklarowanie jako procedury

czynności wykonywanych

wielokrotnie i różniących się

między sobą co najwyżej

wartościami ułatwia i

upraszcza zapis algorytmu.

Stosowanie procedur ułatwia

układanie algorytmów – w

trakcie ich pisania możemy

początkowo jedynie nazywać

pewne czynności i określić ich

parametry, pozostawiając na

później deklarację tychże

procedur.

Przykład zapisu algorytmu wyliczania silni z liczby naturalnej:

początek

całkowite

liczba, silnia, i;

i := 1

silnia := 1

czytaj(liczba)

dopóki

i<=

liczba wykonuj początek

i:=i+1

;

silnia := silnia*i

koniec

pisz (silnia)

koniec

Procedury

Procedury

Procedury

Procedury

Wyodrębnioną (zwykle ze względu na wielokrotne użycie w różnych

miejscach) część algorytmu, posiadającą jednoznaczną nazwę ustalony
sposób wymiany informacji z pozostałymi częściami algorytmu
nazywamy procedurą. Procedurę opisuje się przy pomocy deklaracji,
stosuje zaś przez wywołanie. Raz zdeklarowaną procedurę można
wywoływać w dowolnie wielu miejscach algorytmu.

Deklaracja procedury składa się z nagłówka i treści. Nagłówek

procedury ma postać:

procedura

procedura

procedura

procedura

P

(

W

);

S

;

gdzie:

P

jest

nazwą

procedury ,

W

– wykazem

parametrów formalnych

, a

S – specyfikacją

parametrów formalnych. Wykaz parametrów formalnych

jest listą nazw parametrów formalnych, zaś specyfikacja opisem ich
własności.

Parametr

formalny

jest

obiektem, który występuje w treści
procedury; w chwili użycia procedury
każdemu

parametrowi

formalnemu

zostaje

przyporządkowany

parametr

aktualny

- obiekt algorytmu, który

zastępuje odpowiadający mu parametr
formalny w treści procedury. Rodzaj
parametru aktualnego musi być zgodny
ze specyfikacją odpowiadającego mu
parametru formalnego.

Treść procedury ma taką postać, jak

instrukcja

(złożona

lub

prosta).

Występują w niej obiekty dwu rodzajów:
parametry formalne zastępowane w
chwili

wywołania

procedury

przez

parametry aktualne oraz obiekty lokalne
– zadeklarowane w treści procedury.

background image

Programowanie

Wersja: 2008-11-19

© Sławomir Luściński. Politechnika Świętokrzyska 2008

6

Wywołanie procedury w algorytmie ma postać:

P

(

WA

)

gdzie:

P

jest

nazwą

procedury ,

WA

– wykazem parametrów aktualnych,

zgodnym co do liczby z wykazem

W

parametrów formalnych w deklaracji

procedury. Wykonanie wywołanej procedury polega na wykonaniu z
parametrami aktualnymi instrukcji tworzących ich treść.

Przykład użycia procedury w algorytmie wyliczającym sumę silni

trzech liczb naturalnych:

początek całkowite

x; y; z; xs; ys; zs; suma;

procedura

silnia(liczba, wynik);

całkowite

liczba;

całkowite

wynik;

początek

całkowite

i;

i := 1

wynik:= 1

dopóki

i<=

liczba wykonuj początek

i:=i+1

;

wynik:= wynik*i

koniec

czytaj(x); czytaj(y), czytaj (z)

silnia(x, xs)

silnia(y,ys)

silnia(x, zs)

suma := xs+ys+zs

pisz(suma)

koniec

koniec

Kolejnym ułatwieniem jest użycie procedur funkcyjnych, w przypadku
których nazwa pełni podwójną rolę: jako nazwa procedury i jako nazwa
obiektu, uzyskującego określoną wartość na skutek wykonania procedury.
Deklarację procedury funkcyjnej poprzedzamy określeniem typu wartości,
które przyjmuje obiekt nazwany tak samo jak procedura. W treści
procedury musi wystąpić co najmniej jedna instrukcja przypisania z
nazwą procedury po lewej stronie znaku :=

background image

Programowanie

Wersja: 2008-11-19

© Sławomir Luściński. Politechnika Świętokrzyska 2008

7

Poniżej przykład użycia procedury funkcyjnej.

początek całkowite

x; y; z; xs; ys; zs; suma;

całkowite procedura

silnia(liczba);

całkowite

liczba;

początek

całkowite

i;

i := 1

silnia := 1

dopóki

i<=

liczba wykonuj początek

i:=i+1

;

silnia := silnia*i

koniec

koniec

czytaj(x); czytaj(y), czytaj (z)

suma := silnia(x)+silnia(y)+silnia(z)

pisz(suma)

koniec

Modularyzacja algorytmów

Modularyzacja algorytmów

Modularyzacja algorytmów

Modularyzacja algorytmów

Modularyzacja algorytmów to technika układania algorytmów

polegająca na wyodrębnieniu w algorytmie możliwie niezależnych części –
modułów, z których każdy opisuje dobrze opisane czynności na dobrze
opisanych obiektach przy jednoczesnym ustaleniu zasad łączenia takich
części w spójną całość.

Własności modułów:

I.

Semantyczn

Semantyczn

Semantyczn

Semantyczna

a

a

a nieza

nieza

nieza

niezależność

leżność

leżność

leżność modułów.

modułów.

modułów.

modułów. Moduł algorytmu opisuje

dobrze opisane czynności na dobrze opisanych obiektach, co
oznacza że sens modułu możemy zinterpretować niezależnie od
pozostałych części algorytmu. Zatem jeśli w danym algorytmie
wymienimy wskazany moduł na inny ale o identycznym znaczeniu
(interpretacji), całość algorytmu nie zmieni znaczenia.

II.

Syntaktyczna niezależność

Syntaktyczna niezależność

Syntaktyczna niezależność

Syntaktyczna niezależność modułów.

modułów.

modułów.

modułów. Moduły algorytmu łączą się w

całość

zgodnie

z

ustalonymi

regułami

określającymi

współzależności i współdziałanie poszczególnych modułów, zatem
reguły budowy wewnętrznej indywidualnych modułów mogą być
różne, co np. pozwala stosować różne konwencje notacji dla
poszczególnych modułów (przypadek kilku autorów algorytmu).

III.

Zasada abstrakcji danych.

Zasada abstrakcji danych.

Zasada abstrakcji danych.

Zasada abstrakcji danych. Ze względu na semantyczną i
syntaktyczną niezależność modułów interpretacja przekazywanych
informacji nie może być zależna od interpretacji obowiązującej
wewnątrz modułów.

Patrząc na moduł z zewnątrz, możemy traktować go jako spójną

całość; nie wnikając w szczegóły poprzestajemy na stwierdzeniu że jest to
opis czynności mających w określonych warunkach określone skutki.

background image

Programowanie

Wersja: 2008-11-19

© Sławomir Luściński. Politechnika Świętokrzyska 2008

8

Języki programowania są

głównym narzędziem

programisty; aby odpowiednio

wykorzystać narzędzie, należy

je najpierw w pełni zrozumieć.

(Marcotty, i inni, 1991)

Można powiedzieć, że modularyzacja
służy do ukrywania zbędnych informacji:
dla obserwatora z zewnątrz modułu będą
to szczegóły realizacji czynności w
module, z punktu widzenia wnętrza
modułu będą to informacje dotyczące
wszystkich innych modułów.

J

J

J

J

ĘZYK

ĘZYK

ĘZYK

ĘZYK PROGRAMOWANIA

PROGRAMOWANIA

PROGRAMOWANIA

PROGRAMOWANIA

Co to jest język programowania?

Co to jest język programowania?

Co to jest język programowania?

Co to jest język programowania?

Język programowania

jest zbiorem konwencji umożliwiających

komunikatywność algorytmów zarówno dla programistów jak i dla
komputerów.

Programem

nazywamy algorytm wyrażony w języku

programowania (Marcotty, i inni, 1991).

Implementacją

nazywamy

realizację języka programowania jako systemu komputerowego, która
może przyjąć jedną z dwóch form:

kompilacji

lub

interpretacji.

• Kompilacja

Kompilacja

Kompilacja

Kompilacja: program napisany w języku programowania (

program

źródłowy)

jest tłumaczony na równoważny program (

program

wynikowy

) w języku maszynowym tego komputera (maszyny

docelowej), na którym ma być wykonany.

• Interpretacja

Interpretacja

Interpretacja

Interpretacja: program źródłowy nie jest tłumaczony, ale jest
wykonywany

bezpośrednio

przez

interpretator

program

wykonywany na maszynie docelowej. Interpretacja każdej instrukcji
polega na jej sprawdzeniu i wykonaniu operacji przez nią
specyfikowanych.


W uczeniu się języków programowania należy uwzględnić następujące
podstawowe aspekty języków formalnych, do jakich należą: składnia
(

syntaktyka

) języka, sensowność zdań jakiegoś języka (

semantyka

) oraz

zalecenia dotyczące używania różnych poprawnych form lingwistycznych
o zbliżonym znaczeniu semantycznym (

pragmatyka

).

• Formalna składnia języka

Formalna składnia języka

Formalna składnia języka

Formalna składnia języka to zbiór reguł, które pozwalają generować
syntaktycznie poprawne zdania rozważanego języka. W przypadku
języków programowania znajomość składni umożliwia zapisanie
konstrukcji złożonych z symboli elementarnych danego języka –
łańcuchów symboli – które nazywamy

programami poprawnymi

syntaktycznie

.

• Tylko niewielka część programów poprawnych syntaktycznie może

być wykonana poprawnie, jako że reguły składniowe nie dotyczą akcji
zachodzących podczas wykonywania programów. Reguły semantyczne

Reguły semantyczne

Reguły semantyczne

Reguły semantyczne

języka

języka

języka

języka definiują podzbiór programów poprawnych; są podawane na
ogół nieformalnie.

• Pragmatyka języka

Pragmatyka języka

Pragmatyka języka

Pragmatyka języka obejmuje zalecenia dotyczące używania różnych
poprawnych

form

lingwistycznych

o

zbliżonym

znaczeniu

semantycznym: dotyczy wyboru między uformowanymi już zdaniami.

background image

Programowanie

Wersja: 2008-11-19

© Sławomir Luściński. Politechnika Świętokrzyska 2008

9


Przykład zapisu fragmentu programu w języku VBA, który choć
poprawny syntaktycznie to zawiera błąd semantyczny (jest semantycznie
błędny).

K = 0

V = 3 / K

Twierdzenie Boehma

Twierdzenie Boehma

Twierdzenie Boehma

Twierdzenie Boehma---- Jacopiniego o strukturach sterujących

Jacopiniego o strukturach sterujących

Jacopiniego o strukturach sterujących

Jacopiniego o strukturach sterujących

Podstawowe struktury sterujące

Podstawowe struktury sterujące

Podstawowe struktury sterujące

Podstawowe struktury sterujące

Do definicji ciągu wykonywanych instrukcji służą takie narzędzia

języka programowania jak pętle (iteracje), instrukcje warunkowe,
instrukcje skoku.

W analizie przekazywania sterowania jest wygodnie przedstawić

program w postaci schematu blokowego. Schemat blokowy to zbiór
wierzchołków oznaczających akcje programu połączonych drogami z
zaznaczonym kierunkiem, które pokazują przepływ sterowania. Schemat
blokowy reprezentuje ciąg, w którym wykonywane są akcje programu
(Marcotty, i inni, 1991). Rozróżniamy trzy rodzaje wierzchołków:

Akcje podstawowe

– reprezentowane przez prostokąty. Oznaczają

akcje które mogą zmienić wartość zmiennych, ale nie mogą zmienić
sterowania. Mają tylko jedną drogę wyjściową.

Warunki

- reprezentowane są przez romby, które mogą zmienić

sterowanie, ale nie mogą zmienić wartości zmiennych. Z warunku
wychodzą dwie drogi ilustrujące binarny wybór sterowania.

Połączenia

– odpowiadają im miejsca połączeń dwóch dróg. Nie

oznaczają żadnych akcji, a więc nie mogą zmienić wartości zmiennych
i mają tylko jedną drogę wyjściową.

D

D

D

D----struktury

struktury

struktury

struktury

Bruno i Steiglitz (1972) zdefiniowali klasę prostych struktur

sterujących, zwanych D-strukturami (D – od nazwiska Dijkistra).

D- strukturą jest:

Akcja podstawowa

– instrukcja przypisania, wywołanie procedury,

instrukcja wejścia lub wyjścia lub jeden z następujących elementów, z
których każdy jest kompozycją D-struktur:

Ciąg
s

1

s

2

… s

n

gdzie s

1

do s

n

są D-strukturami

Struktura warunkowa
if c then
s

1

else

s

2

end if

gdzie c jest warunkiem, a

s

1

s

2

D-strukturami.

background image

Programowanie

Wersja: 2008-11-19

© Sławomir Luściński. Politechnika Świętokrzyska 2008

10

Struktura iteracyjna
while c loop
s
end loop

gdzie c jest warunkiem, a

ssss

jest D-strukturą.


Program skonstruowany wyłącznie z D-struktur jest też D-strukturą.
Na rysunku poniżej przedstawiono schematy blokowe D-struktur.

Rysunek 1. Schematy blokowe D-struktur. Źródło: (Marcotty, i inni, 1991)

Twierdzenie

Twierdzenie

Twierdzenie

Twierdzenie

Twierdzenie Boehma

Twierdzenie Boehma

Twierdzenie Boehma

Twierdzenie Boehma ----Jacopiniego

Jacopiniego

Jacopiniego

Jacopiniego (1966) mówi nam, że D-struktury

wystarczają do konstrukcji dowolnego programu. Dowód tego twierdzenia
przedstawił Mills (1972). Podstawowa konkluzja twierdzenia jest
następująca:

Dla dowolnego programu istnieje ekwiwalentny program,

który jest D-strukturą.

Dowolny program oznacza tutaj program komputerowy spełniający

następujące warunki:

1.

Istnieje dokładnie jedno wejście i jedno wyjście z programu.

2.

Dla każdego wierzchołka w schemacie blokowym programu istnieje co

najmniej jedna droga prowadząca od wejścia do programu przez ten
wierzchołek do wyjścia z programu.

background image

Programowanie

© Sławomir Luściński. Politechnika Świętokrzyska 2008

Ekwiwalentnym programem nazywamy

identycznych danych wejściowych daje takie same wyniki jak program
wyjściowy, dla wszystkich możliwych wartości danych wejściowych.
Dowód istnienia ekwiwalentnego programu polega na podaniu k
kroków konstrukcji schematu blokowego D
ekwiwalentny ze schematem blokowym oryginalnego programu, przy
czym może on zawierać akcje, warunki i zmienne, które nie występowały
w oryginalnym programie.

Zatem jeśli w jeżyku progra

jeśli w jeżyku progra

jeśli w jeżyku progra

jeśli w jeżyku progra

typu D

typu D

typu D

typu D----struktur lub inne równoważne, to teoretycznie jest to

struktur lub inne równoważne, to teoretycznie jest to

struktur lub inne równoważne, to teoretycznie jest to

struktur lub inne równoważne, to teoretycznie jest to

wystarczający zbiór do zaprogramowania dowolnego problemu.

wystarczający zbiór do zaprogramowania dowolnego problemu.

wystarczający zbiór do zaprogramowania dowolnego problemu.

wystarczający zbiór do zaprogramowania dowolnego problemu.

P

P

P

P

ROCES PROGRAMOWANIA

ROCES PROGRAMOWANIA

ROCES PROGRAMOWANIA

ROCES PROGRAMOWANIA

Typy danych

Typy danych

Typy danych

Typy danych

Rysunek poniżej ilustruje proces programowania.

Rysunek 2. Proces programowania.

Problemem do rozwiązania jest algorytm występujący w rzeczywistym

świecie i działający na rzeczywistych obiektach.
na opisaniu w języku programowania komputerowego modelu
rzeczywistego algorytmu. Aby utworzyć model algorytmu, programista
musi wybrać reprezentację obiektów dopuszczalnych w danym języku
programowania; konsekwencją tego wyboru jest zbiór operacji, które może
wykonać na modelu. Wszystkie operacje dopuszczalne na obiektach
modelu w języku programowania powinny mieć sens w świecie
rzeczywistym. Stąd w językach programowania występowanie pojęcia

typu,

które definiuje się w następujący sposób:

Typ jest zbiorem obiek

w sensowny sposób przekształcać te obiekty.

Wersja:

Sławomir Luściński. Politechnika Świętokrzyska 2008

programem nazywamy

taki program, który dla

identycznych danych wejściowych daje takie same wyniki jak program
wyjściowy, dla wszystkich możliwych wartości danych wejściowych.
Dowód istnienia ekwiwalentnego programu polega na podaniu k
kroków konstrukcji schematu blokowego D-struktury, który jest
ekwiwalentny ze schematem blokowym oryginalnego programu, przy
czym może on zawierać akcje, warunki i zmienne, które nie występowały
w oryginalnym programie.

jeśli w jeżyku progra

jeśli w jeżyku progra

jeśli w jeżyku progra

jeśli w jeżyku programowania dostępne są instrukcje sterujące

mowania dostępne są instrukcje sterujące

mowania dostępne są instrukcje sterujące

mowania dostępne są instrukcje sterujące

struktur lub inne równoważne, to teoretycznie jest to

struktur lub inne równoważne, to teoretycznie jest to

struktur lub inne równoważne, to teoretycznie jest to

struktur lub inne równoważne, to teoretycznie jest to

wystarczający zbiór do zaprogramowania dowolnego problemu.

wystarczający zbiór do zaprogramowania dowolnego problemu.

wystarczający zbiór do zaprogramowania dowolnego problemu.

wystarczający zbiór do zaprogramowania dowolnego problemu.

ROCES PROGRAMOWANIA

ROCES PROGRAMOWANIA

ROCES PROGRAMOWANIA

ROCES PROGRAMOWANIA

Rysunek poniżej ilustruje proces programowania.

Proces programowania. Źródło:

(Marcotty, i inni, 1991)

Problemem do rozwiązania jest algorytm występujący w rzeczywistym

działający na rzeczywistych obiektach. Programowanie polega

saniu w języku programowania komputerowego modelu

rzeczywistego algorytmu. Aby utworzyć model algorytmu, programista
musi wybrać reprezentację obiektów dopuszczalnych w danym języku

; konsekwencją tego wyboru jest zbiór operacji, które może

konać na modelu. Wszystkie operacje dopuszczalne na obiektach

modelu w języku programowania powinny mieć sens w świecie
rzeczywistym. Stąd w językach programowania występowanie pojęcia

definiuje się w następujący sposób:

Typ jest zbiorem obiektów i operacji, którymi można
w sensowny sposób przekształcać te obiekty.

Wersja: 2008-11-19

11

taki program, który dla

identycznych danych wejściowych daje takie same wyniki jak program
wyjściowy, dla wszystkich możliwych wartości danych wejściowych.
Dowód istnienia ekwiwalentnego programu polega na podaniu kolejnych

struktury, który jest

ekwiwalentny ze schematem blokowym oryginalnego programu, przy
czym może on zawierać akcje, warunki i zmienne, które nie występowały

mowania dostępne są instrukcje sterujące

mowania dostępne są instrukcje sterujące

mowania dostępne są instrukcje sterujące

mowania dostępne są instrukcje sterujące

struktur lub inne równoważne, to teoretycznie jest to

struktur lub inne równoważne, to teoretycznie jest to

struktur lub inne równoważne, to teoretycznie jest to

struktur lub inne równoważne, to teoretycznie jest to

wystarczający zbiór do zaprogramowania dowolnego problemu.

wystarczający zbiór do zaprogramowania dowolnego problemu.

wystarczający zbiór do zaprogramowania dowolnego problemu.

wystarczający zbiór do zaprogramowania dowolnego problemu.

(Marcotty, i inni, 1991)

Problemem do rozwiązania jest algorytm występujący w rzeczywistym

Programowanie polega

saniu w języku programowania komputerowego modelu

rzeczywistego algorytmu. Aby utworzyć model algorytmu, programista
musi wybrać reprezentację obiektów dopuszczalnych w danym języku

; konsekwencją tego wyboru jest zbiór operacji, które może

konać na modelu. Wszystkie operacje dopuszczalne na obiektach

modelu w języku programowania powinny mieć sens w świecie
rzeczywistym. Stąd w językach programowania występowanie pojęcia

tów i operacji, którymi można

background image

Programowanie

Wersja: 2008-11-19

© Sławomir Luściński. Politechnika Świętokrzyska 2008

12

Paradoks Wynalazcy:

bardziej ogólny problem

może być prostszy.

Polya, 1964

Zasady programowania

Zasady programowania

Zasady programowania

Zasady programowania

Oto wybrane zasady zalecane do stosowania w procesie

programowania (Bentley, 1992)

Właściwe zrozumienie

problemu

. Znajomość i zrozumienie kontekstu,

w jakim pojawił się problem.

Określ abstrakcyjny problem

. Przejrzyste, lapidarne sformułowanie

problemu pomaga nam ten problem rozwiązać, a następnie to samo
rozwiązanie zastosować do innych
zadań. Napisanie ogólnego programu
dla N przypadków może się okazać
łatwiejsze, niż napisanie programu dla
ograniczonej liczby przypadków. Warto
tu przytoczyć Edwarda de Bono który
zwraca uwagę na fakt, że „poprawnego
określenie problemu możemy dokonać
jedynie z perspektywy znalezionego rozwiązania” (de Bono, 1998).
Ponieważ jest mało prawdopodobne, abyśmy znaleźli najlepszą
definicję, należy szukać określeń alternatywnych.

Zbadaj przestrzeń rozwiązań.

Nie należy przystępować do

programowania w oparciu o pierwszy pomysł rozwiązania problemu,
jaki przychodzi nam do głowy. Badając przestrzeń rozwiązań, należy
zadać sobie pytanie: jak moglibyśmy rozwiązać to samo zadanie w
inny sposób.

Spojrzenie wstecz.

„Zawsze pozostaje coś do zrobienia, przy

odpowiedniej dozie namysłu i dociekań moglibyśmy poprawić każdy
projekt, a w każdym razie możemy pogłębić nasze zrozumienie
mechanizmów rozwiązania” (Polya, 1964)


W

rozwiązywaniu

problemów

związanych

z

zadaniami

programistycznymi

szczególnie

przydatne

może

być

zalecenie

pokonywania blokad koncepcyjnych rozumianych jako „powstałe w
umyśle tamy, które odgradzają rozwiązującego pewien problem od
właściwego postrzegania tego problemu, czy też poszukiwania”.


Rysunek 3. Rozwiązanie problemu. Źródło:

(de Bono, 1998)

Rysunek powyżej zaczerpnięty z (de Bono, 1998) przedstawia
rozwiązanie określonego problemu i dokładnie określony punkt wyjścia.

background image

Programowanie

Wersja: 2008-11-19

© Sławomir Luściński. Politechnika Świętokrzyska 2008

13

Wszystko należy robić w

sposób tak prosty, jak to tylko

możliwe i ani trochę prościej

Albert Enstein

Pomiędzy nimi znajduje się obszar nieokreśloności, w którym należy
wytyczyć drogę od punktu wyjścia do rozwiązania.

„Rozwiązanie problemu może wymagać idei w takim samym stopniu jak
informacji… Zajmując się jakimś problemem, dobrze jest zebrać jak
najwięcej danych i stwierdzić, czy rozwiązanie będzie zależeć od
uzyskania większej liczby informacji, czy od nowej idei.”

Programy podpo

Programy podpo

Programy podpo

Programy podporządkowane strukturom danych

rządkowane strukturom danych

rządkowane strukturom danych

rządkowane strukturom danych

Właściwie dobrane do problemu

struktury

danych

umożliwiają

w

konsekwencji

uproszczenie

zadania

programistycznego polegającego na
sprowadzeniu dużych programów do
małych (Bentley, 1992) . Zalecenia dla
programisty w odniesieniu do struktur
danych formułuje się następująco:

• Przekształć powtarzający się kod w tablice. Długie ciągi podobnych do

siebie instrukcji często najlepiej jest wyrazić w najprostszej
strukturze danych, tzn. w tablicy.

• Zapoznaj się z bardziej złożonymi strukturami danych.
• Pozwól, by dane określały strukturę programu. Dane mogą narzucić

programowi kształt pozwalający zastąpić skomplikowany kod
odpowiednią strukturą danych.
Przed napisaniem kodu dobrzy programiści starannie analizują

wejście i wyjście oraz pośrednie struktury danych, na których opierają się
ich programy.

Niezawodność

Niezawodność

Niezawodność

Niezawodność oprogramowania

oprogramowania

oprogramowania

oprogramowania

Glenford J. Myers w swojej książce poświęconej niezawodności

oprogramowania pisze: „

błędy są wrodzoną własnością programów…

Możemy wykryć pewne błędy , takie jak nieskończona pętla, lecz z racji
pierwotnej natury błędów oprogramowania nigdy nie wykryjemy ich
wszystkich

(Myers, 1980)

.

Definicja błędu oprogramowania

w

edług

Myers’a jest następująca:

Błąd

oprogramowania

występuje

wówczas,

gdy

oprogramowanie

nie

spełnia

sensownych

oczekiwań

użytkownika. Awaria oprogramowania jest to wystąpienie
błędu oprogramowania.

Niezawodność oprogramowania jest funkcją wpływu błędów na

użytkowników systemu, przy czym niekoniecznie odzwierciedla wielkość
błędu wewnątrz systemu. Myres podaje przykład fiaska bezzałogowej
wyprawy na Wenus z powodu braku przecinka w instrukcji pętli
programu. Definicja niezawodności oprogramowania jest następująca:

Niezawodność oprogramowania jest prawdopodobieństwem,

że oprogramowanie działa bez awarii w określonym przedziale
czasu, opatrzonym wagą odpowiadającą kosztom poniesionym
przez użytkownika z powodu każdej zaistniałej awarii.

background image

Programowanie

Wersja: 2008-11-19

© Sławomir Luściński. Politechnika Świętokrzyska 2008

14

Niezawodność nie jest wrodzoną cechą programu i zależy przede

wszystkim od sposobu użycia programu. Przez

prawdopodobieństwo

w

powyższej definicji należy rozumieć prawdopodobieństwo nie wystąpienia
zdarzenia polegającego na wprowadzenia przez użytkownika zestawu
danych wejściowych do programu, który powoduje awarię systemu.

Proces budowy oprogramowania można przedstawić jako ciąg

czynności poczynając od sformułowania problemu, a kończąc na
obszernym zestawie szczegółowych instrukcji sterujących komputerem w
trakcie wykonywania programu. Budowa programu polega na dokonaniu

pewnej liczby przekładów informacji,

tłumaczących problem początkowy

na różne rozwiązania pośrednie, aż do otrzymania szczegółowego kodu
maszynowego.”

Zatem:

Główną przyczyną błędów oprogramowania są błędy w

tłumaczeniu informacji.

Rysunek poniżej przedstawia makroskopowy model tłumaczenia

występujący w procesie budowy oprogramowania.

Rysunek 4. Model makroskopowy. Źródło: opracowanie własne na podst. (Myers, 1980)

background image

Programowanie

Wersja: 2008-11-19

© Sławomir Luściński. Politechnika Świętokrzyska 2008

15

Etapy programowania:

I.

Wymagania. Opis rozwiązywanego problemu, ma zwykle postać
wymagań użytkownika.

II.

Tłumaczenie wymagań użytkownika na język założeń dla

budowanego programu.

III.

Przekształcenie założeń w specyfikacje zewnętrzne precyzyjnie

opisujące zachowanie całości systemu z punktu widzenia
użytkownika.

IV.

Tłumaczenie opisu zewnętrznego na strukturę składowych

oprogramowania (np. modułów) i przetłumaczenie każdej z tych
składowych na opis kroków proceduralnych (np. schematy blokowe)

V.

Przełożenie logicznej specyfikacji oprogramowania na język
programowania.


Pętle sprzężenia zwrotnego:

VI.

Jako wynik przedsięwzięcia programistycznego uzyskujemy sam

program oraz jego dokumentację. Dokumentacja – określana jako
publikacje – powstaje jako translacja specyfikacji zewnętrznych na
informacje i dyrektywy przeznaczonego dla określonego typu
użytkownika.

VII.

Bezpośrednie współdziałanie użytkownika z programem, które

uwarunkowane jest sposobem zaprojektowania i wykonania
interfejsu użytkownika.

VIII.

Czytanie i rozumienie istniejących już tekstów programów dotyczy

zarówno pielęgnacji oprogramowania (usuwania błędów) jak i jego
modyfikacji (wzbogacania o nowe funkcje)

background image

Programowanie

Wersja: 2008-11-19

© Sławomir Luściński. Politechnika Świętokrzyska 2008

16

B

B

B

B

IBLIOGRAFIA

IBLIOGRAFIA

IBLIOGRAFIA

IBLIOGRAFIA

1.

Bazewicz, Mieczysław. 1993.

Bazewicz, Mieczysław. 1993.

Bazewicz, Mieczysław. 1993.

Bazewicz, Mieczysław. 1993.

Wstęp do systemów informatycznych i

reprezentacji wiedzy.

Wrocław : Wydawnictwo Politechniki

Wrocławskiej, 1993.

2.

Bentley, Jon. 1992.

Bentley, Jon. 1992.

Bentley, Jon. 1992.

Bentley, Jon. 1992.

Perełki oprogramowania.

Warszawa :

Wydawnictwa Naukowo-Techniczne, 1992.

3.

de Bono,

de Bono,

de Bono,

de Bono, Edward. 1998.

Edward. 1998.

Edward. 1998.

Edward. 1998.

Atlas myślenia dla menadżera.

Warszawa :

Wydawnictwo Medium, 1998.

4.

Kisielnicki, Jerzy i Sroka, Henryk. 2005.

Kisielnicki, Jerzy i Sroka, Henryk. 2005.

Kisielnicki, Jerzy i Sroka, Henryk. 2005.

Kisielnicki, Jerzy i Sroka, Henryk. 2005.

Systemy informatyczne

biznesu.

III uzupełnione i zmienione. Warszawa : Wydawnictwo

PLACET, 2005.

5.

Marcotty, Michael i Ledgard, Henry.

Marcotty, Michael i Ledgard, Henry.

Marcotty, Michael i Ledgard, Henry.

Marcotty, Michael i Ledgard, Henry. 1991.

1991.

1991.

1991.

W kręgu języków

programowania.

Warszawa : Wydawnictwa Naukowo-Techniczne,

1991.

6.

Myers, Glenford J. 1980.

Myers,

Glenford

J.

1980.

Myers,

Glenford

J.

1980.

Myers,

Glenford

J.

1980.

Projektowanie

niezawodnego

oprogramowania.

Warszawa : Wydawnictwa Naukowo-Techniczne,

1980.

7.

Turski, Władysław M. 1989.

Turski,

Władysław

M.

1989.

Turski,

Władysław

M.

1989.

Turski,

Władysław

M.

1989.

Propedeutyka informatyki.

Warszawa : PWN, 1989.

8.

—. 1979.

. 1979.

. 1979.

. 1979.

Propedeutyka informatyki.

Warszawa : Państwowe

Wydawnictwo Naukowe, 1979.


Wyszukiwarka

Podobne podstrony:
08 wprowadzenie do programowani Nieznany
Automatyka- Wprowadzenie do programu Matlab
001 wprowadzenie do programowania wsadowego
materiały szkoleniowe, Outlook Express 5 Pomoc, Pomoc Wprowadzenie do programu Outlook Express
Jezyk C Wprowadzenie do programowania
Wprowadzenie do programowania obiektowego
PSYCHOLOGIA PAMIĘCI I UCZENIA ćw nr 1 Wprowadzenie do psychologii pamięci Jagodzińska [115 148]
Jezyk C Wprowadzenie do programowania jcwpro
Wprowadzenie do programu WMM, Multimedia i Grafika
Wprowadzenie do Programowania, listy, ĆWICZENIE 1
10 Wprowadzenie do programowania robotów przemysłowych
ImageJ wprowadzenie do programu id 210
08 wprowadzenie do programowani Nieznany
Jezyk C Wprowadzenie do programowania jcwpro
Windows Azure Wprowadzenie do programowania w chmurze winazu
Windows Azure Wprowadzenie do programowania w chmurze

więcej podobnych podstron