345


Prof.nadzw.dr hab.inż. Władysław Brzozowski Cz*stochowa-Gliwice, 15.02.1999 r.

Politechnika Częstochowska

Instytut Elektroenergetyki

Wykłady z przedmiotu:

TECHNIKA PROGRAMOWANIA

studia magisterskie, kierunek Elektrotechnika,

specjalno** Informatyka w Elektroenergetyce, sem.VI

Wyk*ad 2. Informatyka. Software. Klasyfikacja oprogramowania. Zasady techniki programowania. Fazy procesu programowania

2.1. Informatyka

Informatyk* og*lnie dekomponuje si* na nast*puj*ce dziedziny:

Informatyka

| - hardware (urzadzenia, aparatura)

| - software (oprogramowanie)

| - firmware (zintegrowane systemy urz*dze* i oprogramowania, np.

wielkie sieci komputerowe rezerwacji bilet*w lotniczych)

| - orgware (indywidualne systemy organizacyjne u*ytkownik*w)

Zajmujemy si* software'em czyli oprogramowaniem, i to tylko od strony techniki, tj. g**wnie jezyk*w programowania.

2.2. Software. Klasyfikacja oprogramowania

Oprogramowanie

| - systemy operacyjne mikrokomputer*w (DOS, Unix, QNX)

| - programy pomocnicze nak*adkowe na system operacyjny (NC)

| - pakiet programowy *rodowiska Windows

| - programy lub pakiety programowe j*zyk*w programowania (np.

| Turbo Pascal)

| - pakiety programowe system*w u*ytkowych

| | - pakiety zintegrowane (Framework, Symphony, Applause,

| | Works)

| | - edytory tekstowe (Chi Writer, Word, Word Perfect)

| | - arkusze kalkulacyjne (Lotus 1-2-3, Excel)

| | - bazy danych (DBase, Clipper, Oracle)

| | - systemy typu CAD/CAM

| | - systemy grafiki i poligrafii (Ventura, CorelDraw)

| | - systemy sieciowe (Novell)

| | - systemy zarz*dzania biurami i firmami (Office)

| | - systemy organizacji pracy (Microsoft Project)

| | - inne systemy u*ytkowe

| - programy i pakiety programowe indywidualnych programist*w

lub firm software'owych

2.3. Klasyfikacja j*zyk*w programowania

2.3.1. Klasyfikacja ze wzgl*du na przeznaczenie j*zyka

J*zyki programowania

| - j*zyki niskiego poziomu

| | - j*zyk wewn*trzny mikrokomputera (rozkazy mikroproceso-

| | ra w postaci binarnej; adresy o numerach bezpo*rednich;

| | aktualnie nie pisze si* program*w w j*zyku wewn*trz- | | nym; stosuje si* go jako wstawki programowe w j*zyku | | wysokiego poziomu oraz przy programowaniu | | mikroprocesor*w i ma*ych mikrokomputer*w jedno- | | uk*adowych)

| | - assembler (rozkazy mikroprocesora w postaci tzw. | | mnemonik*w; adresy pami*ci w postaci symbolicznej; w | | j*z. Turbo Pascal wbudowany jest wewn*trzny | | assembler; programy napisane w assemblerze cechuj* si* | | du** szybko*ci* i oszcz*dno*ci* pami*ci)

| - j*zyki wysokiego poziomu (symboliczne)

| - j*zyki uniwersalne (Algol, Fortran, Basic, C, Pascal, Turbo | Pascal)

| - j*zyki specjalistyczne

| | - j*zyki system*w zintegrowanych (np. w Framework)

| | - j*zyki edytor*w (np. WordBasic w Word)

| | - j*zyki arkuszy kalkulacyjnych (np. w Excel)

| | - j*zyki baz danych (np. DBase IV, Clipper, Oracle)

| | - j*zyki symulacyjne (Simula, Simscript, GPSS)

| | - j*zyki system*w przetwarzania danych (Cobol)

| | - j*zyki sztucznej inteligencji (Prolog, LISP)

| - j*zyki programisty (pseudo-j*zyki).

2.3.2. Klasyfikacja ze wzgl*du na strukturyzacj* problemu

J*zyki programowania

| - j*zyki strukturalne (takie, kt*re odwzorowuj* z*o*on* struktur* | problemu obliczeniowego lub obiektu modelowanego - Algol, | Pascal, Turbo Pascal, Simula, Prolog, LISP)

| - j*zyki niestrukturalne (wszystkie j*zyki niskiego poziomu oraz j*zyki wysokiego poziomu, niewymienione powy*ej np. C)

2.3.3. Klasyfikacja ze wzgl*du na matematyczn* i logiczn* prezentowalno** algorytm*w

J*zyki programowania

| - j*zyki algorytmiczne (Algol, Pascal, Turbo Pascal)

| - j*zyki niealgorytmiczne (wszystkie pr*cz wy*ej wymienionych)

2.3.4. Klasyfikacja ze wzgl*du na realizacj* program*w wykonawczych

J*zyki programowania

| - j*zyki interpretowane (takie, *e program w nich napisany | wyst*puje tylko w postaci zbioru *r*d*owego; w momencie | realizacji takiego programu jest on t*umaczony instrukcja po | instrukcji na j*zyk wewn*trzny mikrokomputera i wykonywa- | ny. To t*umaczenie nazywa si* interpretacj* i realizowane jest | przez program -interpretator j*zyka. Interpretator musi by* | wczytany do pami*ci operacyjnej i dzia*a* stale podczas | wykonywania programu. Cech* j*zyk*w interpretowa- | nych jest w zwi*zku z tym powolno**, du*a zaj*to** pami*ci | operacyjnej; zalet* -wi*ksza elastyczno**, mo*liwo** korekt w | trakcie realizacji programu. J*zykami interpretowanymi s* | Basic, DBase

| - j*zyki kompilowane (takie, *e program napisany w tych jezykach, przed pierwszym wykonaniem jest jednorazowo t*umaczony na j*zyk wewn*trzny mikrokomputera. To t*umaczenie nazywa si* kompilacj* i realizowane jest przez program j*zyka - kompilator. P**niej wykonywany jest ju* wielokrotnie tylko gotowy program wykonawczy bez potrzeby wczytywania kompilatora. Taki tryb post*powania by* w*a*ciwy dla starszych j*zyk*w takich jak Algol, Fortran. W nowszych (C, Turbo Pascal) jest nadal taka mo*liwo** (nazywa si* to wykorzystaniem zewn*trznego kompilatora - w Turbo Pascalu ma on nazw* tpc.exe); wykorzystuje si* j* przy pisaniu bardzo du*ych program*w. W przypadku program*w mniejszych, uruchamia si* je wewn*trz systemu j*zyka. Jest to korzystne szczeg*lnie w trakcie pisania i uruchamiania programu; mo*na korzysta* w*wczas z edytora oraz programu debuggera (usuwania b**d*w), kt*re s* wbudowane w system. J*zykami kompilowanymi s* wszystkie inne, opr*cz powy*ej wymienio- nych.

2.4. Zasady techniki programowania. Wyb*r j*zyka programowania

G**wnym problemem, kt*ry stoi przed informatykiem - programist* jest decyzja: czy wybra* jeden z gotowych pakiet*w u*ytkowych czy te* opracowywa* w*asne programy, systemy i pakiety.

Taniej i szybciej jest wybra* gotowy pakiet. Maj* one cz*sto wiele udogodnie* formalnych, systemy okien, w*asne edytory itd., ale niestety wi*kszo** takich pakiet*w reprezentuje cz*sto niski poziom merytoryczny (matematyczny). Pierwszym krokiem jest wi*c zawsze gruntowne przetestowanie pakiet*w dost*pnych na rynku. Nale*y im zada* jaki* z*o*ony problem obliczeniowy, kt*rego optymalne rozwi*zanie jest wcze*niej przygotowane i znane, i zbada* jak zostanie ono przez badany pakiet potraktowane. Wad* gotowych pakiet*w jest te* to, *e s* najcz**ciej niekompatybilne z innymi systemami i niedost*pne adaptacyjnie. Systemy zachodnie zw*aszcza z zakresu zarz*dzania zwykle nadal jeszcze nie odpowiadaj* warunkom krajowym.

Nie b*dziemy zajmowa* si* pakietami gotowymi. Zak*adamy, *e podj*li*my decyzj* o samodzielnym opracowaniu programu lub pakietu programowego. W takim razie nast*pn* decyzj* jest wyb*r j*zyka programowania, a szczeg*lnie czy wybra* j*zyk uniwersalny (Turbo Pascal, C, Borland Delphi), czy jeden z j*zyk*w specjalistycznych.

Decyzja ta zale*y od rozmiaru problemu projektowego. Przyk*adowo: je*li ma si* stworzy* du** baz* danych np. dla remont*w du*ego zak*adu przemys*owego, to bezwzgl*dnie nale*y u*y* specjalizowanego i nowoczesnego j*zyka baz danych (np. Oracle). Je*li ma to by* baza niewielka (do 1000 rekord*w) i lokalna jakiego* dzia*u, to wygodniej i taniej jest j* napisa* w j*zyku uniwersalnym (np. Turbo Pascalu). To samo dotyczy system*w symulacyjnych.

Aktualnie zaleca si* programowa* w j*zyku Borland Delphi (kt*ry staje si* standardem). Jest to j*zyk programowania obiektowego z wykorzystaniem gotowych bibliotek metod (tak nazywamy podprogramy i funkcje wchodz*ce w sk*ad obiekt*w). J*zyk ten uwalnia nas od konieczno*ci pisania tzw. program*w i podprogram*w narz*dziowych. Zaleta jego jest te* to, *e programy wykonawcze, czyli aplikacje zyskuj* ujednolicon* standardow* posta* do kt*rej zwykle przyzwyczajaj* si* u*ytkownicy.

Borland Delphi opiera si* o j*zyk Borland Pascal. Konieczne jest, przed pisaniem program*w w tym j*zyku, dobrze opanowa* klasyczn* technik* programowania, w tym zrozumie* dobrze nie*atw* filozofi* programowania obiektowego, aby moc przej** potem na wy*szy poziom techniki programowania.

2.5. Fazy procesu programowania

Wyr**nia si* nast*puj*ce fazy procesu programowania:

Analiza obliczeniowego problemu technicznego. Sformu*owanie celu oblicze*. Jakiego typu rozwi*zania oczekujemy od procesu obliczeniowego.

Dob*r odpowiedniej metody matematycznej. Metoda powinna by* jak najprostsza. Nale*y wykorzysta* du** szybko** oblicze* mikrokomputera. Przyk*adowo: rozwi*zuj*c problem optymalizacji nale*y preferowa* prost* metod* przeliczania wszystkich mo*liwych wariant*w rozwi*zania, nawet je*li komputer liczy*by ten problem kilka godzin a mo*e nawet dni. Dopiero gdy problem jest tak du*y, *e komputer nie policzy go w rozs*dnym czasie, trzeba uciec si* do bardziej z*o*onych metod matematycznych np. analitycznych z zakresu tzw. bada* operacyjnych. Cz*sto warto skorzysta* z metod tzw. heurystycznych, kt*re na*laduj* mechanizmy my*lenia m*zgu ludzkiego. Metody te nie s* tak *cis*e jak analityczne, ale na og** znacznie efektywniejsze.

Dekompozycja problemu, czyli podzia* na niezale*ne systemy mikrokomputerowe; w ramach jednego systemu na pakiety mikrokomputerowe; w ramach pakietu na programy; w ramach programow na modu*y. Okre*lenie architektury oraz funkcji poszczeg*lnych sk*adowych problemu.

Opracowanie algorytmu - do programu lub w przypadku du*ego programu - do poszczeg*lnych modu**w. Algorytmem nazywamy ci*g wzor*w matematycznych rozwi*zuj*cy dany problem, obejmuj*cy i funkcje matematyczne i kompletne funkcje logiczne. Je*li problem nie jest bardzo skomplikowany, to algorytm tworzy si* automatycznie w trakcie pisania programu. Je*li jednak problem jest z*o*ony, to algorytm nale*y sporz*dzi* wcze*niej na papierze. Warto taki algorytm opracowa* w postaci tabelarycznej, w uk*adzie kolumn: - numer bloku obliczeniowego algorytmu; - nazwa bloku obliczeniowego; - co wyliczamy w danym bloku; - wzory matematyczne i logiczne; - symbole matematyczne zmiennych; - jednostki; - symbole programowe zmiennych; - typy zmiennych programowych; - formaty zmiennych programowych; - pochodzenie zmiennych programowych (gdzie czytane lub gdzie wcze*niej obliczone); - uwagi. Bardzo pomocna jest tu tak*e forma schematu blokowego oblicze*. Niekiedy schemat taki rysuje si* na roboczo dla rozpracowania jakiego* jednego podprogramu a nawet jednej instrukcji, np. szczeg*lnie z*o*onej instrukcji logicznej. Je*li pisze si* niezbyt du*y program, to wszystkie powy*sze dane: wzory, zmienne, typy, formaty, pochodzenie zmiennych itd. mo*na zamie*ci* wprost w programie w postaci komentarzy. Generalnie w programie *r*d*owym warto pisa* jak najwi*cej komentarzy, gdy* wracaj*c do programu po jakim* czasie cz*sto ju* si* nie pami*ta o co w nim chodzi*o.

Zaprojektowanie dokument*w *rod*owych oraz wydawnictw, czyli wej*cia-wyj*cia z programu.

Napisanie tekstu programu, pod wewn*trznym edytorem systemu programowania, z zapisem na dysk.

Uruchamianie programu. Faza usuwania b**d*w sk*adniowych w trakcie kompilacji. B**dy sk*adniowe wy*apuje sam kompilator.

Uruchamianie programu. Faza usuwania b**d*w formalnych, np. postaci wydawnictw, format*w liczb itp. Bl*d*w tych kompilator nie jest w stanie wykry*, ale s* one dobrze zwykle widoczne przy pr*bnych obliczeniach.

Je*li stwierdza si*, w trakcie wst*pnych prac uruchomieniowych, *e program jest powolny, nie mie*ci si* w pami*ci, zajmuje za du*o miejsca na dysku lub w pami*ci operacyjnej, to po fazie wst*pnego testowania programu nast*puje faza jego optymalizacji.

Uruchamianie programu. Faza usuwania b**d*w merytorycznych. B**dy te s* cz*sto niewidoczne, cho* gro*ne, bo powoduj* zafa*szowanie wynik*w oblicze*. Obowi*zuje generalna zasada, *e nie wolno oddawa* u*ytkownikowi programu, kt*ry nie zosta*by gruntownie przetestowany. To testowanie musi odbywa* si* na drodze r*wnoleg*ych oblicze* kontrolnych realizowanych na kalkulatorze lub, je*li to wyj*tkowo jest mo*liwe, przez por*wnanie z wynikami z innego podobnego programu, co do poprawno*ci ktorego ma si* zaufanie. Obliczenia kontrolne powinny by* wielowariantowe. Dane do tych oblicze* nale*y przygotowa* w nast*puj*cy spos*b: - ka*dy program mo*na przedstawi* w postaci drzewa rozga*eziaj*cych si* *cie*ek. Takie rozga**zienia w jez. Turbo Pascal wynikaj* np. z instrukcji wyboru "Case nazwa_zmiennej of", z instrukcji warunkowej "if warunek then else", z instrukcji skoku itp. W trakcie oblicze* kontrolnych sterowanie powinno przej** cho*by raz po ka*dej *cie*ce rozga**zie*; - nale*y tak przygotowa* dane kontrolne, by przetestowany zosta* ka*dy cho*by najmniejszy podprogram lub funkcja, a tak*e ka*da opcja wszystkich menu programu; - warto*ci wej*ciowych danych kontrolnych dobra* tak zw*aszcza, *eby wypada*y na: granicy przedzia**w deklaracji zmiennych i granicach wyra*e* logicznych w instrukcjach warunkowych, w punktach nieci*g*o*ci r**nych zmiennych i charakterystyk. Do*wiadczenie uczy, *e b**dy najcze*ciej pope*nia si* na r**nych tego typu granicach.

Przedostatnia faza jest to tzw. kosmetyka programu, czyli drobne poprawki i upi*kszenia programu.

Ostatni* faz* jest wydanie dokumentacji programu, tj. obowi*zkowo instrukcji dla u*ytkownika. Zwykle u*ytkownikowi nie udost*pnia si* program*w *r*d*owych, ale teksty tych program*w warto wydrukowa* na papierze i z*o*y* we w*asnym archiwum, niezale*nie od zabezpieczenia tekst*w tych program*w na no*nikach magnetycznych lub CD w kilku kopiach.

2.6. Wytyczne pisania programu

Dobry program:

ma struktur* modu*ow* i nak*adkow*. Chodzi o to by zajmowa* jak najmniej miejsca w pami*ci operacyjnej;

zawiera du*o procedur i funkcji. Powt*rzenie jakiego* fragmentu tekstu jest b**dem w sztuce programowania - nale*y fragment ten zorganizowa* w postaci podprogramu lub funkcji;

uwzgl*dnia ka*d* sytuacj* obliczeniowa (np. koincydencj* danych), jaka mo*e si* zdarzy* w przysz*o*ci i ma z g*ry okre*lone procedury dzia*ania w tych sytuacjach;

ma z*o*on* cho* maksymalnie uporz*dkowan* struktur*. Sprawdzianem, *e program jest dobrze napisany jest brak w nim (lub jest minimalna liczba) instrukcji skoku "goto etykieta". Dobry program wykorzystuje wiele wzajemnie zagnie*d*onych instrukcji "Case zmienna of";

jest w maksymalnym stopniu przyjazny u*ytkownikowi tzw. user friendly, tzn. ma zorganizowane rozwijaj*ce si* menu sterowane klawiszami kursora lub mysz*, ma wewn*trzny w*asny edytor u*atwiaj*cy wprowadzanie danych, w ka*dym momencie a przynajmniej w w*z*ach decyzyjnych oferuje u*ytkownikowi pomoc tzn. help, uwzgl*dnia wszystkie mo*liwe warianty konfiguracji komputera np. systemy polskich liter, wydaje cz*sto komunikaty informuj*ce u*ytkownika o stanie i post*pie oblicze*, oraz o r**nych sytuacjach awaryjnych, w maksymalny sposob prowadzi u*ytkownika za r*k* zw*aszcza tam gdzie ma on podja* jak** decyzj*;

nie dopuszcza do wyst*pienia b**du sygnalizowanego przez DOS, tzn. zawczasu przechwytuje kontrol* nad b**dami, wydaje komunikat i instruuje u*ytkownika jak wyj** w spos*b kontrolowany z sytuacji awaryjnej;

jest tzw. „idiotoodporny”, tzn. kontroluje ka*d* liczb* lub inn* dan* wprowadzan* przez u*ytkownika, reaguje na przyciskanie b**dnych klawiszy, nie pozwala na zniszczenie danych w spos*b przypadkowy (**da potwierdzenia wyboru niebezpiecznych opcji), obejmuje helpy dostosowane do r**nych u*ytkownik*w od pocz*tkujacych do zaawansowanych, umo*liwia zawsze kontrolowane wyj*cie z ka*dej opcji menu (przez ESC), je*li u*ytkownik wszed* w t* opcj* bezmy*lnie.

 Koniec wyk*adu 2

Plik W2TEPR99.DOC

Edytor WORD 6.0 PL



Wyszukiwarka

Podobne podstrony:
345
Mahabharata Księga V (Udyoga Parva) str 291 345
Tłumaczenie Bm3452
plik (345)
pd wykl pr 345, Termin „społeczność międzynarodowa” opisujący krąg podmiotów uczestniczą
344 345
Jagodzińska, Psychologia pamięci, badania, teoria, zastosowania, 20, 64 68, 345 371
345
344 i 345, Uczelnia, Administracja publiczna, Jan Boć 'Administracja publiczna'
345
345
345
344-345
arkusz Geografia poziom r rok 2006 345
345 LTPCRNFKKIT4GPVQWGQYUFXZDEKUOLLMPIRS2TA
345
MPLP 344;345 24.05.;05.06.2012

więcej podobnych podstron