MudoL nr 1 wprowadzenie do programowania


PROGRAMOWANIE
PROGRAMOWANIE
PROGRAMOWANIE
PROGRAMOWANIE
Wybrane zagadnienia
Sławomir Luściński
Materiały uzupełniające na prawach rękopisu do ćwiczeń
Laboratoryjnych (MudoL)  Informatyka  Programowanie .
MudoL
MudoL
MudoL
MudoL
Wyłącznie do celów dydaktycznych, dla studentów
Nr 1
Nr 1
Nr 1
Nr 1
Politechniki Świętokrzyskiej
Politechnika Świętokrzyska, Katedra Inżynierii Produkcji
Wersja: 2008-11-19
Programowanie Wersja: 2008-11-19
SPIS TREÅšCI
SPIS TREÅšCI
SPIS TREÅšCI
SPIS TREÅšCI
Informatyka ......................................................................................... 2
Informatyka......................................................................................... 2
Informatyka......................................................................................... 2
Informatyka......................................................................................... 2
Przedmiot informatyki........................................................................ 2
System informacyjny .......................................................................... 2
System informatyczny ........................................................................ 3
Wprowadzenie do algorytmów ............................................................. 3
Wprowadzenie do algorytmów ............................................................. 3
Wprowadzenie do algorytmów ............................................................. 3
Wprowadzenie do algorytmów............................................................. 3
Algorytm.............................................................................................. 3
Procedury ............................................................................................ 5
Modularyzacja algorytmów ................................................................ 7
Język programowania.......................................................................... 8
Język programowania.......................................................................... 8
Język programowania.......................................................................... 8
Język programowania.......................................................................... 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 ...................................................................... 11
Proces programowania ...................................................................... 11
Proces programowania ...................................................................... 11
Proces programowania ...................................................................... 11
Typy danych ...................................................................................... 11
Zasady programowania .................................................................... 12
Programy podporzÄ…dkowane strukturom danych ........................... 13
Niezawodność oprogramowania ....................................................... 13
Bibliografia ........................................................................................ 16
Bibliografia ........................................................................................ 16
Bibliografia ........................................................................................ 16
Bibliografia ........................................................................................ 16
© SÅ‚awomir LuÅ›ciÅ„ski. Politechnika ÅšwiÄ™tokrzyska 2008 1
Programowanie Wersja: 2008-11-19
INFORMATYKA
INFORMATYKA
INFORMATYKA
INFORMATYKA
Przedmiot informatyki
Przedmiot informatyki
Przedmiot informatyki
Przedmiot informatyki
Informatyka jest nauką o przetwarzaniu informacji, zwłaszcza przy
Informatyka
Informatyka
Informatyka
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 (IT)
Information Technology
Information Technology
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 obejmuje w
Programowanie i budowanie systemów informatycznych
Programowanie i budowanie systemów informatycznych
Programowanie i budowanie systemów informatycznych
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 informacyjny to  wielopoziomowa struktura, która pozwala
System informacyjny
System informacyjny
System informacyjny
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,
© SÅ‚awomir LuÅ›ciÅ„ski. Politechnika ÅšwiÄ™tokrzyska 2008 2
Programowanie Wersja: 2008-11-19
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 informatyczny
System informatyczny
System informatyczny
System informatyczny
System informatyczny (SI) to  wyodrębniona część systemu
System informatyczny
System informatyczny
System informatyczny
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 (SIZ) (Management Information
System informatyczny zarzÄ…dzania
System informatyczny zarzÄ…dzania
System informatyczny zarzÄ…dzania
System - MIS) to formalny system komputerowy dokonujÄ…cy wyboru,
udostępniania i integracji pochodzących z różnych zródeł danych po to,
aby w odpowiednim czasie dostarczyć informacji niezbędnych do
podejmowania decyzji1.
WPROWADZENIE DO ALGORYTMÓW
WPROWADZENIE DO ALGORYTMÓW
WPROWADZENIE DO ALGORYTMÓW
WPROWADZENIE DO ALGORYTMÓ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Å›
Algorytm to specyfikacja ciÄ…gu
opisy czynności  instrukcjami. W
operacji, które w wyniku
algorytmach występują obiekty proste i
działania na wejściowy zbiór
obiekty złożone. Do obiektów prostych
obiektów dają wyjściowy zbiór
zaliczamy obiekty, których wartościami
obiektów
są liczby całkowite, rzeczywiste, wartości
(Marcotty, i inni, 1991)
logiczne, ciągi znakowe. Do obiektów
złożonych zaliczamy tablice.
1
E. Turban za (Kisielnicki, i inni, 2005)
© SÅ‚awomir LuÅ›ciÅ„ski. Politechnika ÅšwiÄ™tokrzyska 2008 3
Programowanie Wersja: 2008-11-19
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. yródło: opracowanie własne na podstawie (Turski, 1979)
Nazwa
Schemat
schematu
N := W
N jest nazwą obiektu, a W  wyrażeniem.
Instrukcja
Wylicza się wartość wyrażenia W, a następnie podstawia się jako
przypisania
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.
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 I1 w przeciwnym wypadku I2
Instrukcje z
Wyboru uzależnionego od wartości logicznej warunku W można
wyborem
dokonać pomiędzy dwoma instrukcjami I1 i I2.
(warunkowe,
przypadek N spośród ( I1 , I2 , & , In)
(selekcje)
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 I1 , I2 , & , In, której numer jest zgodny z otrzymaną wartością
wyrażenia N.
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
Iteracja 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.
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.
Instrukcje Klasa obiektu jest znana z deklaracji nazwy N; mówimy też, że nazwa
wejścia/wyjścia 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.
© SÅ‚awomir LuÅ›ciÅ„ski. Politechnika ÅšwiÄ™tokrzyska 2008 4
Programowanie Wersja: 2008-11-19
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 P(W);S ;
procedura
procedura
procedura
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
Deklarowanie jako procedury
każdemu parametrowi formalnemu
czynności wykonywanych
zostaje przyporzÄ…dkowany parametr
wielokrotnie i różniących się
aktualny - obiekt algorytmu, który
między sobą co najwyżej
zastępuje odpowiadający mu parametr
wartościami ułatwia i
formalny w treści procedury. Rodzaj
upraszcza zapis algorytmu.
parametru aktualnego musi być zgodny
Stosowanie procedur ułatwia
ze specyfikacjÄ… odpowiadajÄ…cego mu
układanie algorytmów  w
parametru formalnego.
trakcie ich pisania możemy
początkowo jedynie nazywać
Treść procedury ma taką postać, jak
pewne czynności i określić ich
instrukcja (złożona lub prosta).
parametry, pozostawiajÄ…c na
Występują w niej obiekty dwu rodzajów:
pózniej deklarację tychże
parametry formalne zastępowane w
procedur.
chwili wywołania procedury przez
parametry aktualne oraz obiekty lokalne
 zadeklarowane w treści procedury.
© SÅ‚awomir LuÅ›ciÅ„ski. Politechnika ÅšwiÄ™tokrzyska 2008 5
Programowanie Wersja: 2008-11-19
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 :=
© SÅ‚awomir LuÅ›ciÅ„ski. Politechnika ÅšwiÄ™tokrzyska 2008 6
Programowanie Wersja: 2008-11-19
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. Semantyczna niezależność modułów. Moduł algorytmu opisuje
Semantyczna niezależność modułów.
Semantyczna niezależność modułów.
Semantyczna niezależność modułów.
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ść modułów.
Syntaktyczna niezależność modułów. Moduły algorytmu łączą się w
Syntaktyczna niezależność modułów.
Syntaktyczna niezależność modułó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. Ze względu na semantyczną i
Zasada abstrakcji danych.
Zasada abstrakcji danych.
Zasada abstrakcji danych.
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.
© SÅ‚awomir LuÅ›ciÅ„ski. Politechnika ÅšwiÄ™tokrzyska 2008 7
Programowanie Wersja: 2008-11-19
Można powiedzieć, że modularyzacja
Języki programowania są
służy do ukrywania zbędnych informacji:
głównym narzędziem
dla obserwatora z zewnątrz modułu będą
programisty; aby odpowiednio
to szczegóły realizacji czynności w
wykorzystać narzędzie, należy
module, z punktu widzenia wnętrza
je najpierw w pełni zrozumieć.
modułu będą to informacje dotyczące
(Marcotty, i inni, 1991)
wszystkich innych modułów.
JZYK PROGRAMOWANIA
JZYK PROGRAMOWANIA
JZYK PROGRAMOWANIA
JZYK 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: program napisany w języku programowania (program
Kompilacja
Kompilacja
Kompilacja
zró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: program zródłowy nie jest tłumaczony, ale jest
Interpretacja
Interpretacja
Interpretacja
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 to zbiór reguł, które pozwalają generować
Formalna składnia języka
Formalna składnia języka
Formalna składnia języka
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 definiują podzbiór programów poprawnych; są podawane na
języka
języka
języka
ogół nieformalnie.
" Pragmatyka języka obejmuje zalecenia dotyczące używania różnych
Pragmatyka języka
Pragmatyka języka
Pragmatyka języka
poprawnych form lingwistycznych o zbliżonym znaczeniu
semantycznym: dotyczy wyboru między uformowanymi już zdaniami.
© SÅ‚awomir LuÅ›ciÅ„ski. Politechnika ÅšwiÄ™tokrzyska 2008 8
Programowanie Wersja: 2008-11-19
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- Jacopiniego o strukturach sterujÄ…cych
Twierdzenie Boehma- Jacopiniego o strukturach sterujÄ…cych
Twierdzenie Boehma- Jacopiniego o strukturach sterujÄ…cych
Twierdzenie Boehma- 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-struktury
D-struktury
D-struktury
D-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 s & s
1 2 n
gdzie s do s sÄ… D-strukturami
1 n
" Struktura warunkowa
if c then
s
1
else
s
2
end if
gdzie c jest warunkiem, a s s sÄ… D-strukturami.
1 2
© SÅ‚awomir LuÅ›ciÅ„ski. Politechnika ÅšwiÄ™tokrzyska 2008 9
Programowanie Wersja: 2008-11-19
" Struktura iteracyjna
while c loop
s
end loop
gdzie c jest warunkiem, a s jest D-strukturÄ….
s
s
s
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. yródło: (Marcotty, i inni, 1991)
Twierdzenie
Twierdzenie
Twierdzenie
Twierdzenie
Twierdzenie Boehma -Jacopiniego (1966) mówi nam, że D-struktury
Twierdzenie Boehma -Jacopiniego
Twierdzenie Boehma -Jacopiniego
Twierdzenie Boehma -Jacopiniego
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.
© SÅ‚awomir LuÅ›ciÅ„ski. Politechnika ÅšwiÄ™tokrzyska 2008 10
Programowanie Wersja:
Wersja: 2008-11-19
Ekwiwalentnym programem nazywamy taki program, który dla
programem nazywamy taki program, który dla
identycznych danych wejściowych daje takie same wyniki jak program
identycznych danych wejściowych daje takie same wyniki jak program
identycznych danych wejściowych daje takie same wyniki jak program
wyjściowy, dla wszystkich możliwych wartości danych wejściowych.
wyjściowy, dla wszystkich możliwych wartości danych wejściowych.
wyjściowy, dla wszystkich możliwych wartości danych wejściowych.
Dowód istnienia ekwiwalentnego programu polega na podaniu k
Dowód istnienia ekwiwalentnego programu polega na podaniu k
Dowód istnienia ekwiwalentnego programu polega na podaniu kolejnych
kroków konstrukcji schematu blokowego D struktury, który jest
kroków konstrukcji schematu blokowego D-struktury, który jest
ekwiwalentny ze schematem blokowym oryginalnego programu, przy
ekwiwalentny ze schematem blokowym oryginalnego programu, przy
ekwiwalentny ze schematem blokowym oryginalnego programu, przy
czym może on zawierać akcje, warunki i zmienne, które nie występowały
czym może on zawierać akcje, warunki i zmienne, które nie występowały
czym może on zawierać akcje, warunki i zmienne, które nie występowały
w oryginalnym programie.
w oryginalnym programie.
Zatem jeśli w jeżyku programowania dostępne są instrukcje sterujące
jeśli w jeżyku programowania dostępne są instrukcje sterujące
jeśli w jeżyku programowania dostępne są instrukcje sterujące
jeśli w jeżyku programowania dostępne są instrukcje sterujące
jeśli w jeżyku programowania dostępne są instrukcje sterujące
jeśli w jeżyku programowania dostępne są instrukcje sterujące
jeśli w jeżyku programowania dostępne są instrukcje sterujące
jeśli w jeżyku programowania dostępne są instrukcje sterujące
typu D-struktur lub inne równoważne, to teoretycznie jest to
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
typu D-struktur lub inne równoważne, to teoretycznie jest to
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
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.
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.
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.
PROCES PROGRAMOWANIA
PROCES PROGRAMOWANIA
ROCES PROGRAMOWANIA
PROCES PROGRAMOWANIA
PROCES PROGRAMOWANIA
ROCES PROGRAMOWANIA
ROCES PROGRAMOWANIA
ROCES PROGRAMOWANIA
Typy danych
Typy danych
Typy danych
Typy danych
Rysunek poniżej ilustruje proces programowania.
Rysunek poniżej ilustruje proces programowania.
Rysunek 2. Proces programowania. yródło: (Marcotty, i inni, 1991)
Proces programowania. (Marcotty, i inni, 1991)
Problemem do rozwiązania jest algorytm występujący w rzeczywistym
Problemem do rozwiązania jest algorytm występujący w rzeczywistym
Problemem do rozwiązania jest algorytm występujący w rzeczywistym
świecie i działający na rzeczywistych obiektach. Programowanie polega
działający na rzeczywistych obiektach. Programowanie polega
na opisaniu w języku programowania komputerowego modelu
saniu w języku programowania komputerowego modelu
saniu w języku programowania komputerowego modelu
rzeczywistego algorytmu. Aby utworzyć model algorytmu, programista
rzeczywistego algorytmu. Aby utworzyć model algorytmu, programista
rzeczywistego algorytmu. Aby utworzyć model algorytmu, programista
musi wybrać reprezentację obiektów dopuszczalnych w danym języku
musi wybrać reprezentację obiektów dopuszczalnych w danym języku
musi wybrać reprezentację obiektów dopuszczalnych w danym języku
programowania; konsekwencją tego wyboru jest zbiór operacji, które może
; konsekwencją tego wyboru jest zbiór operacji, które może
; konsekwencją tego wyboru jest zbiór operacji, które może
wykonać na modelu. Wszystkie operacje dopuszczalne na obiektach
konać na modelu. Wszystkie operacje dopuszczalne na obiektach
konać na modelu. Wszystkie operacje dopuszczalne na obiektach
modelu w języku programowania powinny mieć sens w świecie
modelu w języku programowania powinny mieć sens w świecie
modelu w języku programowania powinny mieć sens w świecie
rzeczywistym. Stąd w językach programowania występowanie pojęcia
rzeczywistym. Stąd w językach programowania występowanie pojęcia
rzeczywistym. Stąd w językach programowania występowanie pojęcia
typu, które definiuje się w następujący sposób:
definiuje się w następujący sposób:
Typ jest zbiorem obiektów i operacji, którymi można
Typ jest zbiorem obiektów i operacji, którymi można
w sensowny sposób przekształcać te obiekty.
w sensowny sposób przekształcać te obiekty.
© SÅ‚awomir LuÅ›ciÅ„ski. Politechnika ÅšwiÄ™tokrzyska 2008 11
Sławomir Luściński. Politechnika Świętokrzyska 2008
Programowanie Wersja: 2008-11-19
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ć
Paradoks Wynalazcy:
łatwiejsze, niż napisanie programu dla
bardziej ogólny problem
ograniczonej liczby przypadków. Warto
może być prostszy.
tu przytoczyć Edwarda de Bono który
Polya, 1964
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 znalezli 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. yró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.
© SÅ‚awomir LuÅ›ciÅ„ski. Politechnika ÅšwiÄ™tokrzyska 2008 12
Programowanie Wersja: 2008-11-19
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 podporzÄ…dkowane strukturom danych
Programy podporzÄ…dkowane strukturom danych
Programy podporzÄ…dkowane strukturom danych
Programy podporzÄ…dkowane strukturom danych
Właściwie dobrane do problemu
struktury danych umożliwiają w
konsekwencji uproszczenie zadania
Wszystko należy robić w
programistycznego polegajÄ…cego na
sposób tak prosty, jak to tylko
sprowadzeniu dużych programów do
możliwe i ani trochę prościej
małych (Bentley, 1992) . Zalecenia dla
Albert Enstein
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ść oprogramowania
Niezawodność oprogramowania
Niezawodność oprogramowania
Niezawodność 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 wedł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.
© SÅ‚awomir LuÅ›ciÅ„ski. Politechnika ÅšwiÄ™tokrzyska 2008 13
Programowanie Wersja: 2008-11-19
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. yródło: opracowanie własne na podst. (Myers, 1980)
© SÅ‚awomir LuÅ›ciÅ„ski. Politechnika ÅšwiÄ™tokrzyska 2008 14
Programowanie Wersja: 2008-11-19
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)
© SÅ‚awomir LuÅ›ciÅ„ski. Politechnika ÅšwiÄ™tokrzyska 2008 15
Programowanie Wersja: 2008-11-19
BIBLIOGRAFIA
BIBLIOGRAFIA
BIBLIOGRAFIA
BIBLIOGRAFIA
1. Bazewicz, Mieczysław. 1993. Wstęp do systemów informatycznych i
Bazewicz, Mieczysław. 1993.
Bazewicz, Mieczysław. 1993.
Bazewicz, Mieczysław. 1993.
reprezentacji wiedzy. Wrocław : Wydawnictwo Politechniki
Wrocławskiej, 1993.
2. Bentley, Jon. 1992. Perełki oprogramowania. Warszawa :
Bentley, Jon. 1992.
Bentley, Jon. 1992.
Bentley, Jon. 1992.
Wydawnictwa Naukowo-Techniczne, 1992.
3. de Bono, Edward. 1998. Atlas myślenia dla menadżera. Warszawa :
de Bono, Edward. 1998.
de Bono, Edward. 1998.
de Bono, Edward. 1998.
Wydawnictwo Medium, 1998.
4. Kisielnicki, Jerzy i Sroka, Henryk. 2005. Systemy informatyczne
Kisielnicki, Jerzy i Sroka, Henryk. 2005.
Kisielnicki, Jerzy i Sroka, Henryk. 2005.
Kisielnicki, Jerzy i Sroka, Henryk. 2005.
biznesu. III uzupełnione i zmienione. Warszawa : Wydawnictwo
PLACET, 2005.
5. Marcotty, Michael i Ledgard, Henry. 1991. W kręgu języków
Marcotty, Michael i Ledgard, Henry. 1991.
Marcotty, Michael i Ledgard, Henry. 1991.
Marcotty, Michael i Ledgard, Henry. 1991.
programowania. Warszawa : Wydawnictwa Naukowo-Techniczne,
1991.
6. Myers, Glenford J. 1980. Projektowanie niezawodnego
Myers, Glenford J. 1980.
Myers, Glenford J. 1980.
Myers, Glenford J. 1980.
oprogramowania. Warszawa : Wydawnictwa Naukowo-Techniczne,
1980.
7. Turski, Władysław M. 1989. Propedeutyka informatyki.
Turski, Władysław M. 1989.
Turski, Władysław M. 1989.
Turski, Władysław M. 1989.
Warszawa : PWN, 1989.
8.  . 1979. Propedeutyka informatyki. Warszawa : Państwowe
 . 1979.
 . 1979.
 . 1979.
Wydawnictwo Naukowe, 1979.
© SÅ‚awomir LuÅ›ciÅ„ski. Politechnika ÅšwiÄ™tokrzyska 2008 16


Wyszukiwarka

Podobne podstrony:
01 Wprowadzenie do programowania w jezyku C
Jezyk C Wprowadzenie do programowania jcwpro
Wprowadzenie do programowania w języku C
08 wprowadzenie do programowania grafikiidu39
WPROWADZENIE DO PROGRAMOWANIA
Krótkie wprowadzenie do listy nr 4
Cwiczenie nr 03 Wprowadzenie do chemii analitycznej
Krótkie wprowadzenie do listy nr 2
Wprowadzenie do algorytmiki i programowania

więcej podobnych podstron