ALGORYTMY I SPOSOBY ICH
PRZEDSTAWIANIA
Definicja algorytmu:
Algorytm jest przepisem który opisuje krok po kroku
rozwiązanie problemu lub osiągniecie jakiegoś celu.
PODSTAWOWE CECHY ALGORYTMU
Uniwersalność - możliwość rozwiązania całej klasy
problemów
Ścisłość - czynności i kolejność ich wykonania są
opisane jasno i wyraźnie
Jednoznaczność - wielokrotne wykonywanie
algorytmu dla identycznych danych prowadzi do takich
samych wyników
Kompletność - algorytm uwzględnia wszystkie
możliwe przypadki, jakie mogą wystąpić podczas jego
wykonania
Skończoność - wykonanie zadania otrzymamy po
wykonaniu pewnej ilości czynności (kroków
algorytmu)
ZASADY OPRACOWYWANIA ALGORYTMÓW
Przy opracowywaniu algorytmu należy uwzględnić
specyfikę obliczeń komputerowych a w szczególnosci
- czas trwania obliczeń
- pojęcie zera jest inne w logice komputera niż w
matematyce
SPOSOBY PRZEDSTAWIANIA ALGORYTMÓW
Opis słowny
Lista kroków
Schemat blokowy
Drzewo algorytmu
Algorytm w języku programowania
OPIS SŁOWNY ALGORYTMU
Wyznaczyć wartość funkcji f(x)=x/|x|
-1 dla x <0
|x|= 0 dla x=0
1 dla x>=0
Jeżeli x=0 to wartość funkcji wynosi 0
ALGORYTM W POSTACI LISTY KROKÓW
Obliczyć wartość funkcji f(x)=x/|x|
1.Wczytać wartość x
2.jeżeli x=0 ;f(x)=0; koniec
3.Jeżeli x>0; f(x)=1; koniec
4.Jeżeli x<0; f(x)=-1; koniec
ALGORYTM - PROGRAM W JĘZYKU TURBO
PASCAL
PROGRAM oblicz;
var x :integer;
BEGIN
read (x)
if x < 0 then writeln(1);
if x = 0 then writeln (0);
if x > 0 then writeln (1)
END.
PROJEKT SYSTEMU INFORMATYCZNEGO
ETAPY PROJEKTOWANIA SYSTEMU
INFORMATYCZNEGO
Zakres systemu(cząstkowy,dziedzinowy,
wielodziedzinowy)
Poziom ewolucyjny systemu(ewidencyjny, analityczny,
SWD, SIK, ekspercki)
Stopień integracji systemu
STADIA śYCIA SYSTEMU INFORMATYCZNEGO
Tworzenie systemu
Weryfikacja systemu
Eksploatacja i doskonalenie systemu
Likwidacja systemu
PROCES TWORZENIA SYSTEMU
(Schemat)
FORMUŁOWANIE ZAŁOśEŃ
Obszar działania systemu
Zakres systemu
Rodzaj i konfiguracja komputera
Przewidywane koszty
Czasochłonność projektowania
Zapotrzebowanie na kadrę specjalistów
Przewidywane zmiany organizacyjne obiektu
Kierownictwo obiektu(system powinien być idealny)
Kierownictwo firmy informatycznej(system powinien
być powielarny najlepiej już istniejący)
Opis podstawowych funkcji merytorycznych
Powiązania z innymi systemami(modułami)
Wykaz wymagań i ograniczeń systemu
Limity środków przygotowania systemu
Błędy przy ustalaniu założeń :
1)”wszystko zrobi komputer”-aby zminimalizować
czynności przyszłego użytkownika
2)informatycy(analitycy I programiści nie rozumiejąc
procesów gospodarczych upraszczają je w algorytmach
I programach)
3)nie uwzględnia się możliwości zmian systemów i
metod zarządzania, przyzwyczajeń ludzi, ich
interpretację informacji uzyskanych z systemu
MODELOWANIE SYSTEMU
•Struktura funkcjonalna (zbiór celów, funkcji, zadań,
oraz zależności)
•Struktura informacyjna( zbiory informacji i
powiązania między nimi)
•Struktura techniczna(środki techniczne i
oprogramowanie)
•Struktura przestrzenna( zbiór miejsc w których
rozmieszczone są obiekty systemu)
SYSTEM INFORMACYJNY
System który zajmuje się przetwarzaniem informacji
nazywamy
systemem informacyjnym. W teorii organizacji i
zarządzania
jest to jeden z podsystemów systemu zarządzania.
System informacyjny określony jest przy pomocy
następujących zbiorów:
-zbiór podmiotów-użytkowników systemu(nadawcy i
odbiorcy)
-zbiory informacji (zasoby informacyjne)
-zbiór technik informacyjnych
-zbiory metainformacji
System informatyczny jest pojęciem węższym niż
system informacyjny (jest jego podsystemem)
Pojęcie informacji
Informacje określa się jako odbicie różnorodności
charakteryzującej rozpatrywany obiekt, proces,
zjawisko.(Dictionary of Computing Oxford University
Press 1986) Wg Wienera informacją nazywamy treść
zaczerpniętą ze świata zewnętrznego w procesie
naszego dostosowania się do niego i przystosowania
się do niego naszych zmysłów. W informatyce
informację nazywamy wielkość abstrakcyjną która
może być przechowywana w pewnych obiektach(np.
komputerach) przesyłana między pewnymi
obiektami(np. komputerami), przetwarza na na pewnych
obiektach(np. komputerach) i stosowana do zarządzania
pewnymi obiektami.
Podstawowe pojęcia systemu informacyjnego
Dana - jest to ta część informacji, która stanowi
materialną reprezentację informacji(informacja
ilościowa)- jest ona przedmiotem przetwarzania
Wiadomość - jest to każdy przekaz o określonym
znaczeniu wysyłany i odbierany przez człowieka lub
skonstruowane przez niego urządzenia.
Informacja - określa znaczenie a więc treść jaką po
zastosowaniu odpowiedniej interpretacji przypisuje się
wiadomościom.
Wiadomość formułuje się i interpretuje w pewnej
konwencji znanej nadawcy i odbiorcy.
Elementy systemu informacyjnego
1.Bank informacji - zbiór informacji systemu
informacyjnego.
2.Kanały przepływu informacji - łączące nadawców
informacji z odbiorcami do przesyłania tzw żądań
informacyjnych-zestawów informacji dla komórek
organizacyjnych danej instytucji.
3.Zbiór nośników informacji- w systemie
informacyjnym są to głównie różnego rodzaju
dokumenty.
4.Środki systemu informacji- urządzenia służące do
przekazywania informacji. Bank informacji zawiera
informacje podzielone według specyficznego charakteru
sfer działalności danej instytucji(kadry, płace logistyka
itp.)
Kanały informacyjne prowadzone są od odbiorcy do
nadawcy tak aby jak najlepiej zostało przekazane żądanie
informacyjne(np. dane o zużyciu materiałów może być
uzyskane z magazynu, produkcji lub księgowości)
Bierni odbiorcy informacji otrzymują informacje zależne
od woli możliwości i upodobań nadawców.
Czynni odbiorcy informacji otrzymują informacji według
określonego przez siebie zakresu schematu i
dokładności.
PODSTAWY PROJEKTOWANIA OBIEKTOWEGO
Obiektowość to: cecha języków programowania; sposób
podejścia do projektowania systemów; sposób
organizowania naszych sądów o świecie. To
organizowanie bazuje na typach rzeczy (inaczej typach
obiektowych.)
Obiekty opisuje się w kategoriach struktury i
zachowania
Struktura to statyczne ułożenie obiektów w przestrzeni.
(np. pracownicy, dokumenty, maszyny)
Zachowanie to zmiana konfiguracji i stanów obiektów -
opisuje ono procesy modyfikujące obiekty
(np. pracownik osiągnął wiek emerytalny, wykonano
operację
księgowania na dokumencie)
PODEJŚCJE OBIEKTOWE MOśE BYĆ
STOSOWANE DO PROJEKTOWANIA RÓśNEGO
RODZAJU SYSTEMÓW
Obiektowość powstała z potrzeby łatwiejszego
sposobu przedstawiania systemów
Podejście projektowania obiektowego można stosować w
takich dziedzinach jak:
inżynieria oprogramowania
inżynieria sieci
produkcja
robotyka
POJĘCIA I RZECZYWISTOŚĆ
Pojęcie jest wyobrażeniem lub oznaczeniem obiektów w
naszej świadomości
Przykłady pojęć:.......
DEFINIOWANIE POJĘĆ
•Nazwa pojęcia
•Treść pojęcia - intensja
•Zakres pojecia - ekstensja
Pojęcia mogą występować bez obiektów np. perpetum
mobile, kompetentny rząd
Pojęcia mogą nie mieć nazwy np.
zaksięgowanie na konto 21-45 prowizji ze sprzedaży
DZIEDZINY
Dziedzina jest obszarem zainteresowań, który zawiera
kolekcję obiektów będących egzemplarzami specyfikacji
dziedziny
Specyfikacja jest kolekcją pojęć odnoszących się do
dziedziny
„Ola wysoko zaszła”
dziedzina :firma, wspinaczka wysokogórska
pojęcia:stopnie kariery w firmie, nazwy zdobytych
szczytów
OBIEKTY
Obiektem jest to do czego da się zastosować jakieś
pojęcie. Obiekt jest egzemplarzem pojęcia.
Pojęcia mogą być też obiektami, np. FIAT 126, np. FIAT
126 rok 1998 np. fiat 126 rok 1998 biały(dla np. fabryki
to pojęcia; dla własciciela to obiekty)
Cykl życia obiektu-obiekty istnieją w naszej
ś
wiadomości gdy po raz pierwszy zastosujemy do nich
jakieś pojecie i znikają gdy tego pojęcia nie można już do
nich stosować(np. mój samochód-dla mnie przestaje być
obiektem gdy go sprzedam lub oddam na złom)
Należenie do zbioru. Zbiór jest klasą(kolekcją
obiektów). Jeden obiekt może należeć do wielu zbiorów.
Np. Jan K. Może należeć do zbioru łysych oraz do zbioru
profesorów
KOJARZENIE OBIEKTÓW
schemat
Kolekcja połączeń między typami obiektowymi
(organizacja, osoba)
stanowi specjalny rodzaj typu obiektowego tak zwany
typ związku. Umożliwia odwzorowanie obiektów
jednego zbioru na obiekty drugiego zbioru i na odwrót.
Odwzorowanie przypisuje obiekty jednego typu
obiektom drugiego typu
Odwzorowania typów przedstawiają sam typ obiektowy
a nie poszcze-
gólne obiekty z kolekcji obiektów tego typu.
Odwzorowania typów pozwalają definiować powiązania
dotyczące
typów, a nie ich pojedyńczych egzemplarzy
RELACJE JAKO TYPY OBIEKTOWE
RELACJE MOGĄ MIEĆ WŁASNOŚCI
Jeżeli relacje nie mają własności notacja liniowa
Jeżeli chcemy przedstawić własności związku -notacja
węzłowa
KROTKI
KROTKA JEST NIEZMIENNYM POŁĄCZENIEM
OBIEKTÓW
Jeżeli małżeństwo przestanie istnieć-przestanie istnieć
odpowiednia krotka(numer).
Jeżeli jeden ze współmałżonków zawrze ponownie
związek małżeński powstanie nowa krotka(o innym
numerze), mimo że istota związku (małżeństwo) nie
zmieni się.Dawna krotka(oznaczona np. numerem 2
przestanie istnieć).
Klasyfikowanie jest aktem lub wynikiem zastosowania
pojęcia
( tzn. typu obiektowego ) do obiektu
Uogólnianie jest aktem lub wynikiem wyróżnienia
pojęcia(tzn. typu obiektowego), które całkowicie zawiera
(obejmuje) inne
Składanie jest aktem lub wynikiem tworzenia całości
obiektu
używając innych obiektów jako jego części
Klasyfikowanie, uogólnianie i składanie są relacjami
dotyczącymi obiektów i typów
obiektowych
---------------------------------------------------------------------
deklarowanie rekordow :
type dane=record;
imie:string[10];
nazwisko:[20];
rok_urodz:integer;
mc_urodz:integer;
dz_urodz:integer;
end;
dane1:dane
write('podaj nazwisko ');
read dane1.nazwisko
deklarowanie plikow :
type plik=file of real;
I
I
opis zmiennej plikowej
skojarzenie pliku z fizycznym zbiorem danych
otwarcie piku
wykonanie opreacji na pliku
zamkniecie pliku
---------------------------------------------------------------------
{program pokazuje najwiekszy i najmniejszy obiekt
zboiru}
Program wybierak;
type tab=array[1..10] of integer;
ob=object
t:tab;
max,min:integer;
suma:integer;
procedure czytaj;
procedure max1;
procedure min1;
procedure su;
procedure pisz;
end;
var k:ob;
i:integer;
procedure ob.czytaj;
begin
for i:=1 to 10 do
begin
writeln('podaj ',i,'element tablicy');
read(t[i]);
end;
end;
Procedure ob.max1;
begin
max:=t[1];
for i:=2 to 10 do
if t[i]>max then max:=t[i];
end;
procedure ob.min1;
begin
min:=t[10];
for i:=1 to 9 do
if t[i]<min then min:=t[i];
end;
procedure ob.pisz;
begin
writeln('maksymalna liczba z tablicy
wynosi',max);
writeln('minimalna liczba z tablicy
wynosi',min);
end;
begin
k.czytaj;
k.max1;
k.min1;
k.pisz;
end.
{ZAD.1 PROGRAM Oblicza dla dowolnego x wartosci
funkcji :}
Program funkcja;
type punkt=object
x:real;
procedure czytaj;
function wartosc:real;
end;
procedure punkt.czytaj;
begin
WRITELN('Podaj dowolna liczbe:');
READ(X);
end;
function punkt.wartosc;
begin
if (x<=-3) or (x>3) then wartosc:=sqrt(x*x - 9);
if (x>-3) and (x<0) then wartosc:=abs(x+2);
if (x>=0) and (x<4) then wartosc:=x*x-4*x + 7;
end;
var p:punkt;
begin
p.czytaj;
WRITE('Wartosc=', p.wartosc:2:2);
readln;
end.
{Zad.2. Program sprawdza ktora z nazw imie czy
nazwisko jest dluzsza}
Program lancuchy;
Type
nazwy=object
imie,nazwisko:string;
dl_im,dl_na:byte;
procedure czytaj;
procedure dlugosc;
function warunek:boolean;
procedure pisz;
end;
procedure nazwy.czytaj;
begin
Writeln('Podaj imie');
Readln(imie);
Writeln('Podaj nazwisko');
Readln(nazwisko);
end;
procedure nazwy.dlugosc;
begin
dl_im:=length(imie);
dl_na:=length(nazwisko);
end;
function nazwy.warunek;
begin
warunek:=(dl_im>dl_na);
end;
procedure nazwy.pisz;
begin
if nazwy.warunek then writeln('Imie ma wiecej znakow')
else
writeln('Nazwisko ma wiecej znakow');
end;
var
n:nazwy;
begin
n.czytaj;
n.dlugosc;
n.pisz;
Readln;
end.
{Program wczytuje i wyświetla elementy tabilcy 4
elementowej}
program tablice;
type tab=array[1..4] of integer;
ob=object
t:tab;
procedure czytaj;
procedure pisz;
end;
var k:ob;
i:integer;
procedure ob.czytaj;
begin
for i:=1 to 4 do
begin
write('podaj',i,'element tablicy');
read(t[i]);
end;
end;
procedure ob.pisz;
begin
for i:=1 to 4 do
write(t[i]);
end;
begin
k.czytaj;
k.pisz;
end.
{program pokazuje najwiekszy obiekt zboiru}
Program wybierak;
type tab=array[1..10] of integer;
ob=object
t:tab;
max,min:integer;
procedure czytaj;
procedure max1;
Procedure min1;
procedure pisz;
end;
var k:ob;
i:integer;
procedure ob.czytaj;
begin
for i:=1 to 10 do
begin
writeln('podaj ',i,'element tablicy');
read(t[i]);
end;
end;
Procedure ob.max1;
begin
max:=t[1];
for i:=2 to 10 do
if t[i]>max then max:=t[i];
end;
procedure ob.min1;
Begin
min:=t[10];
for i:=1 to 9 do
if t[i]<min then
max:=t[i];
end;
procedure ob.pisz;
begin
writeln('maksymalna liczba z tablicy
wynosi',max);
writeln('minimalna liczba z
tablicy wynosi ',min);
end;
begin
k.czytaj;
k.max1;;
k.pisz;
end.
{program sprawdza czy dany punkt nalezy do zadanego
obszaru}
program zbior;
type
obszar=object
x,y:real;
nazwa:string;
procedure czytaj;
function sprawdz:boolean;
function pisz:string;
end;
procedure obszar.czytaj;
begin
writeln ('podaj nazwe punktu');
readln(nazwa);
writeln('podaj wspolrzedna x-owa
punktu',nazwa);
read(x);
writeln('podaj wspolrzeda y-owa
punktu',nazwa);
read(y);
end;
function obszar.sprawdz;
begin
sprawdz:=(abs(x)+abs(y)<=1) and (sqr(x-
1)+sqr(y)<=1)
end;
function obszar.pisz;
begin
if sprawdz then pisz:=' nalezy'
else pisz:=' nie nalezy';
end;
var
o:obszar;
begin
o.czytaj;
o.pisz;
write('punkt A ',o.pisz);write(' do podanego
obszaru');
end.
{{Program coś sobie liczy ale nie wiem co }
program liczby;
type ob=object
s,i:integer;
procedure we;
procedure petla;
end;
var p:ob;
procedure ob.we;
begin
write ('podaj i ');
read(i);
end;
procedure ob.petla;
begin
s:=0;
while i<11 do
begin
s:=s+i;
i:=i+1;
writeln ('suma wynosi s = ',s);
end;
end;
begin
p.we;
p.petla;
end.
{program liczy sobie pierwiastek i resztę dla liczb
mniejszych od 5}
program liczby;
type ob=object
i:integer;
procedure we;
procedure petla;
end;
var p:ob;
procedure ob.we;
begin
write ('podaj i ');
read(i);
end;
procedure ob.petla;
begin
while i<5 do
begin
write ('i=',i);
write ('kwadrat = ',sqr(i));
write ('szescian =', i*i*i);
write ('pierwiastek=',sqrt(i));
i:=i+1
end;
end;
begin
p.we;
p.petla;
end.
{program liczy }
program liczby;
type ob=object
s,i:integer;
k:real;
procedure we;
procedure petla;
end;
var p:ob;
procedure ob.we;
begin
write ('podaj i ');
read(i);
end;
procedure ob.petla;
begin
s:=0;
while i<11 do
begin
k:=i/2;
if frac(k)=0 then s:=s+i;
if frac(k)<>0 then s:=s+i;
end;
end;
begin
p.we;
p.petla;
end.
{program segreguje liczby parzyste i nieparzyste
program liczby;
type ob=object
s1,s2,i:integer;
k:real;
procedure we;
procedure petla;
end;
var p:ob;
procedure ob.we;
begin
write ('podaj i ');
read(i);
end;
procedure ob.petla;
begin
s1:=0 ; s2:=0;
while i<11 do
begin
k:=i/2;
if frac(k)=0 then s1:=s1+i;
if frac(k)<>0 then s2:=s2+i;
i:=i+1;
writeln('parzyste= ',s1);
writeln('nieparzysta=',s2);
end;
end;
begin
p.we;
p.petla;
end.
{program liczy średnie z 5 przedmiotów 5 studentom}
program studenci;
type tab=array[1..5,1..5] of integer;
t2=array[1..5] of integer;
ob=object
procedure wczytaj;
procedure licz;
procedure wyswietl;
end;
var t:tab;
i,j:integer;
s:integer;
sr:real;
tt:t2;
k:ob;
procedure ob.wczytaj;
begin
for i:=1 to 5 do
for j:=1 to 5 do
begin
writeln('podaj oceny ',i,'studenta');
read(t[i,j]);
end;
end;
procedure ob.licz;
begin
for i:=1 to 5 do
s:=s+t[i,j];
sr:=s/5;
end;
procedure ob.wyswietl;
begin
for i:=1 to 5 do
begin
writeln('srednia ',i,'studenta wynosi',sr);
read;
end;
end;
begin
k.wczytaj;
k.licz;
k.wyswietl;
end.
{program liczy sume wszystkich elementów tablicy i
ś
rednią}
program tablice;
type tab=array[1..4] of integer;
ob=object
t:tab;
suma:integer;
srednia:real;
procedure czytaj;
procedure pisz;
procedure licz;
end;
var k:ob;
i:integer;
procedure ob.czytaj;
begin
for i:=1 to 4 do
begin
write('podaj ',i,' element tablicy ');
read(t[i]);
end;
end;
procedure ob.pisz;
begin
for i:=1 to 4 do
write(t[i]);
end;
procedure ob.licz;
Begin
for i:=1 to 4 do
suma:=suma+t[i];
writeln(suma);
srednia:=suma/4;
writeln(srednia);
end;
begin
k.czytaj;
k.pisz;
k.licz;
end.
{program liczący sume i średnią tablicy 4x4}
Program tab;
type dane=array[1..4,1..4] of integer;
ob=object
t:dane;
procedure we;
procedure suma;
procedure wyswietl;
end;
var
k:ob;
i,j,s:integer;
sr:real;
Procedure ob.we;
begin
for i:=1 to 4 do
for j:=1 to 4 do
Begin
Write('podaj',i,j,'element tablicy');
Readln(t[i,j]);
end;
end;
Procedure ob.suma;
Begin
for i:=1 to 4 do
for j:=1 to 4 do
s:=s+t[i,j];
sr:=s/4;
end;
procedure ob.wyswietl;
begin
writeln('suma wynosi :',s,'˜rednia wynosi',sr);
read;
end;
Begin
k.we;
k.suma;
k.wyswietl;
end.
Program wyświetla elementy bedące na przekątnej}
Program tab;
type dane=array[1..5,1..4] of integer;
ob=object
t:dane;
procedure we;
procedure wy;
end;
var
k:ob;
i,j:integer;
Procedure ob.we;
begin
for i:=1 to 5 do
for j:=1 to 4 do
Begin
Write('podaj',i,j,'element tablicy');
Readln(t[i,j]);
end;
end;
Procedure ob.wy;
Begin
for i:=1 to 5 do
for j:=1 to 4 do
if i=j then
writeln('Element',i,j,' tablicy
wynosi',t[i,j]);
end;
Begin
k.we;
k.wy;
end.
{program oblicza wartosc wyrazenia dla dowolnego a,
nastepnie zaokragla
ten wynik do liczby calkowitej}
program oblicz;
type
wyrazenie=object
a:real;
procedure czytaj;
function wynik:longint;
end;
procedure wyrazenie.czytaj;
begin
Writeln('podaj dowolnĄ liczb©');
read(a);
end;
function wyrazenie.wynik;
var
lok:real;
begin
lok:=sqrt(a*a+4)+abs(3*pi+sin(2*a))+exp(4*a+3);
If frac(lok)>0.5 then lok:=lok+1 else lok:=lok;
end;
var
w:wyrazenie;
begin
w.czytaj;
write('Warto˜† wyrazenia dla a =',w.a:0:3);
writeln('Wynosi b= ',w.wynik);
readln;
end.
{program zapisuje pliki a po co}
program pliki;
type plik=file of string;
ob=object
zn:char;
a:string;
p:plik;
na:string;
procedure we;
procedure wy;
end;
var
k:ob;
procedure ob.we;
begin
writeln('podaj nazwe pod ktora zostanie zapisany
plik');
readln(na);
assign(p,na);
rewrite(p);
repeat
write('podaj kolejny element pliku');
readln(a);
write(p,a);
writeln('cy koniec danych? t/n');
readln(zn);
until zn='t';
close(p);
end;
procedure ob.wy;
begin
assign(p,na);
reset(p);
while not EOF (p) do
begin
read(p,a);
writeln(a)
end;
close(p)
end;
begin
k.we;
k.wy;
end.