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('Wartoo† 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.