Program komputera Wtęp do informatyki Programowanie komputerów PC Komputer jet mazyną wykonująą poleenia odzytywane z pamięi operayjnej (intrukje proeora kod programu) Intrukje proeora dotyzą protyh operaji na rejetrah wewnętrznyh oraz odzyie i zapiie komórek pamięi. Interakja mazyny z uŝytkownikiem odbywa ię poprzez urządzenia we/wy, które zamieniają ygnały wyyłane przez złowieka i zamieniają je na potać yfrową i odwrotnie. Cezary Bolek bolek@ki.uni.lodz.pl ROM, RAM CPU ALU Uniwerytet Łódzki Wydział Zarządzania Katedra Informatyki In/Out Rejetry proeora Wtęp do informatyki Cezary Bolek <bolek@ki.uni.lodz.pl> 2 Pamięć operayjna ROM + RAM np. 01001000 00001000 11001010 00001011 11111110 48 h 08 h CA h 0B h FE h Język mazynowy Intrukja proeora (kod programu) w pamięi zapiane ą w potai lizb dwójkowyh. Zapi programu za pomoą lizb, które mogą być bezpośrednio wykonywane przez mazyną nazywa ię językiem mazynowym., 48, 08, CA, 0B, FE, Pianie programów w języku mazynowym przez złowieka jet bardzo Ŝmudne, ale było toowane do programowania komputerów I i II generaji. Wtęp do informatyki Cezary Bolek <bolek@ki.uni.lodz.pl> 3 Język aemblera KaŜdej intrukji proeora (która moŝe zajmować jeden lub więej bajtów) moŝna przypiać krót literowy (mnemonik), a kaŝdemu rejetrowi nazwę. Zapi programu za pomoą mnemoników nazywa ię językiem aemblera, który jet znaznie łatwiejzy do opanowania przez złowieka. np. 48 h 08 h CA h 0B h FE h BL,8 BL,8 Program zapiany w języku aemblera nie moŝe być wykonywany bezpośrednio przez komputer i wymaga tłumazenia na kod mazynowy za pomoą programu zwanego aemblerem. PoniewaŜ itnieje śiły związek pomiędzy mnemonikami a intrukjami mazynowymi, proe tłumazenia (aemblaja) jet tounkowo proty. Proe odwrotny nazywa ię deaemblają (za pomoą diaemblera). BL,8 Aembler, 48, 08, CA, 0B, FE, Wtęp do informatyki Cezary Bolek <bolek@ki.uni.lodz.pl> 4 1
Języki wyokiego poziomu Program zapiany w języku wyokiego poziomu harakteryzuje: Abtrakja danyh programita operuje na zmiennyh bez konieznośi organizaji wykorzytania rejetrów proeora i lokalizaji lizb w pamięi ZłoŜone truktury danyh prote jet deklarowanie i korzytanie ze złoŝonyh truktur lizb jak np. tablie (maierze), toy, kolejki, drzewa, et. Zaawanowane kontrukje terująe określenie kolejnośi wykonywania programu realizuje ię z pomoą intuiyjnyh kontrukji warunkowyh typu IF-THEN-ELSE, FOR, DO-WHILE, et. Dowolność układu zapiu programu programita moŝe zapiywać program w potai najbardziej dla niego zytelnej i zgodnej z upodobaniami. for (i=1; i<10, i++) { n=10+x*2 }; for (i=1; i<10, i++) { n=10+x*2 }; for (i=1; i<10, i++) { n=10+x*2 }; Kompilaja programów Programy napiane w językah wyokiego poziomu muzą być tłumazone na język mazynowy za moą programu zwanego kompilatorem, a proe tłumazenia nazywa ię kompilają. for (i=1; i<10, i++) { n=10+x*2 }; Kompilator, 48, 08, CA, 0B, FE, BL,8 Kompilaja programów jet zadaniem bardzo złoŝonym, ze względu na mnogość moŝliwośi realizaji zadania w języku aemblera. Kompilatory ą jednymi z najbardziej zaawanowanyh i złoŝonyh programów dla komputerów oobityh. X = X + Y*Z MUL ADD AL,X BL,Y CL,Z CL,BL lub AL,CL X,AL MUL ADD AL,Y BL,Z AL,BL BL,X AL,BL X,AL MUL ADD lub AL,Z AL,Y CL,X X,AL Wtęp do informatyki Cezary Bolek <bolek@ki.uni.lodz.pl> 5 Wtęp do informatyki Cezary Bolek <bolek@ki.uni.lodz.pl> 6 Kompilatory optymalizująe Kompilator optymalizująy (optimizing ompiler) kompilator, który generuje kod mazynowy optymalny pod pewnym względem, np.zybkośi działania lub rozmiaru kodu, korygują program, tak aby nie wpływało to na wyniki jego działania. Optymalizaja programu moŝliwa jet równieŝ poprzez optymalne wykorzytanie zaobów proeora (peyfizne intrukje, tryby adreowania, wykorzytanie rejetrów wewnętrznyh, et.) FOR I:=1 TO 10 DO FOR J:=1 TO 10 DO A=I / 100; B:=A + J / 100; WRITE(B); oryginalny fragment programu FOR I:=1 TO 10 DO A=I / 100; FOR J:=1 TO 10 DO B:=A + J / 100; WRITE(B) przypiezenie poprzez eliminaję niepotrzebnyh oblizeń zmiennej A Kompilatory krośne Kompilator krośny (ro-ompiler) kompilator, który generuje kod mazynowy na inny proeor, niŝ ten na którym jet uruhomiony. Kompilatory krośne uŝywa ię do tworzenia oprogramowania dla ytemów komputerowyh, w któryh jet to niemoŝliwe ze względu na rozmiary, zatoowanie zy wygodę pray: telefony komórkowe palmtopy, notey elektronizne, gry elektronizne, et. przęt Audio-Video komputery wbudowane (terowniki mazyn, ) np. JavaME (miro edition) kompilator programów w języku Java na telefony komórkowe (java.un.om) Wtęp do informatyki Cezary Bolek <bolek@ki.uni.lodz.pl> 7 Wtęp do informatyki Cezary Bolek <bolek@ki.uni.lodz.pl> 8 2
Debugging Debugging oznaza proe wykrywania błędów w kompilowanyh programah w trakie ih nadzorowanego uruhamiania. Nadzorowane uruhamianie programów polega na wykonywaniu pozzególnyh linii programu (praa krokowa) i prawdzaniu wartośi zmiennyh w dowolnym momenie wykonywania. Program do nadzorowanego uruhamiania nazywa ię Debugger em Biblioteki Biblioteka jet to zebrana razem grupa podprogramów realizująyh określone zadania np. funkje matematyzne. Podprogramy bibliotezne, kompilowane do kodu mazynowego, dołązane ą do programu uŝytkownika podza jego kompilaji. Proe łązenia plików biblioteznyh ze kompilowanym programem uŝytkownika nazywa ię konolidają (linking). Podprogramy bibliotezne Program w języku wyokiego poziomu korzytająy z funkji biblioteznyh x=b* a=in(x) Biblioteka funkji matemat. Kompilator Konolidator intr1 intr2 CALL SIN intr4 intr5 STOP intr1 intr2 intr3 powrót Wykonywalny program w języku mazynowym Kompletny konolidowany program Wtęp do informatyki Cezary Bolek <bolek@ki.uni.lodz.pl> 9 Wtęp do informatyki Cezary Bolek <bolek@ki.uni.lodz.pl> 10 Przenośność oprogramowania Oprogramowanie przenośne (portable) to takie, które moŝna kompilować i uruhomić pod róŝnymi ytemami operayjnymi, a jego działanie pozotaje niezmienione (np. Arobat Reader, Netape, ) Programy w językah wyokiego poziomu ą zwykle przenośne, o ile nie konentrują ię na zaawanowanym wykorzytaniu urządzeń we/wy. Problem przenośnośi oprogramowania prowadza ię zwykle do itnienia przenośnyh bibliotek dla języków wyokiego poziomu. np. www.fox-toolkit.org - wieloplatformowa biblioteka grafizna dla języka C++ Kompilaja a interpretaja Wykonanie programu napianego w języku wyokiego poziomu moŝe być realizowane na dwa pooby: 1. kompilaja ałego programu, a natępnie jego uruhomienie 2. odzytywanie pojedynzyh intrukji języka, kompilaja w loie i natyhmiatowe wykonywanie tzw. interpretaja (przez interpreter) (nigdzie nie jet tworzony kod mazynowy ałego programu) Języki programowania moŝna podzielić na dwie kategorie, w zaleŝnośi od poobu wykonywania: 1. języki kompilowane: Fortran, C, C++, Paal, Delphi, Java (zęśiowo) 2. języki interpretowane: Bai, Java (zęśiowo), języki kryptowe: Perl, Tl Zalety kompilaji: duŝa zybkość wykonywania programów, moŝliwość wykonywania ię programów bez wpomagania innego oprogramowania. Zalety interpretaji: zybkie tetowanie i modyfikowanie programów (brak etapu kompilaji), moŝliwość tetowanie niekompletnyh programów, znazna przenośność oprogramowania, itnienie programu tylko w werji źródłowej. Wtęp do informatyki Cezary Bolek <bolek@ki.uni.lodz.pl> 11 Wtęp do informatyki Cezary Bolek <bolek@ki.uni.lodz.pl> 12 3
Języki programowania PASCAL język akademiki PASCAL: pozątek lat 70-tyh, Niklau Wirth język o duŝyh walorah dydaktyznyh, idealny do nauki programowania intuiyjne kontrukje terująe, ułatwiająe programowanie trukturalne moŝliwość uŝywania róŝnorodnyh truktur danyh moŝliwośi definiowania i zagnieŝdŝania proedur i funkji jane zaady zaięgu zmiennyh moŝliwość deklarowania włanyh typów danyh bogaty zetaw proedur biblioteznyh wpółzene języki dla środowik grafiznyh oparte na kładni języka Paal: Delphi http://www.freepaal.org Wtęp do informatyki Cezary Bolek <bolek@ki.uni.lodz.pl> 13 Wtęp do informatyki Cezary Bolek <bolek@ki.uni.lodz.pl> 14 PASCAL - truktura programu Najprotza potać programu w języku PASCAL: PROGRAM nazwa(input,output); tala = warto; zmienna : typ; FUNCTION nazwa( PROCEDURE nazwa( intrukja; intrukja;. nagłówek programu deklaraje zmiennyh uŝywanyh w programie definije funkji i proedur tekt programu, kładająy ię z intrukji oddzielonyh znakami średnika Słowa kluzowe: łowa o pejalnym znazeniu w języku programowania, które nie mogą być uŝywane w innyh elah, np. jako nazwy zmiennyh. Wtęp do informatyki Cezary Bolek <bolek@ki.uni.lodz.pl> 15 PASCAL - typy danyh Podtawowe typy danyh w języku PASCAL: integer typ lizb ałkowityh zakre (typowy): -32768 +32767 (lizby 16 bitowe w kodzie U2) real typ lizb rzezywityh zakre (typowy): -1.2e-38 3.4e+38 (lizby 32-bitowe IEEE754) boolean typ logizny tylko dwie wartośi: prawda fałz (true fale) har typ znakowy wartośi ą znakami dotępnymi w ytemie komputerowym (8-bitów) np. index: integer; pole : real; litera: har; konie: boolean; Wtęp do informatyki Cezary Bolek <bolek@ki.uni.lodz.pl> 16 4
PASCAL kontrukje terująe PASCAL - kontrukje terująe elekja ekwenja IF THEN 1 ELSE 2; 1 2 n 1; 2; n; grupowanie za pomoą - pozwala traktować ekwenję intrukji jako pojedynzą intrukję i jet koniezne tam, gdzie w programie moŝe wytąpić tylko jedna intrukja 1 1 2 2 3 W kontrukji IF-THEN-ELSE wykonana zotanie tylko jedna z dwóh intrukji 1 lub 2, w zaleŝnośi od pełnienia warunku. IF THEN 1; 2 ELSE 3; Po łowah kluzowyh THEN i ELSE moŝe wytąpić tylko jedna intrukja, jeśli ma ih być więej naleŝy zatoować grupowanie intrukji - Wtęp do informatyki Cezary Bolek <bolek@ki.uni.lodz.pl> 17 Wtęp do informatyki Cezary Bolek <bolek@ki.uni.lodz.pl> 18 PASCAL - kontrukje terująe PASCAL - kontrukje terująe elekja wielokrotna 1 2 n CASE OF warto_1 : 1; warto_2 : 2; warto_n : n; Kontrukja CASE-OF- umoŝliwia wykonanie tylko jednej z podanyh intrukji 1,2,..,n w zaleŝnośi od wartośi jaką przyjmuje wyraŝenie. ykle T N N T WHILE DO ; Intrukja jet wykonywana dopóki pełniony jet warunek. Po łowie kluzowym DO moŝe wytąpić tylko jedna intrukja, jeśli ma ih być więej naleŝy zatoować grupowanie intrukji - REPEAT UNTIL ; Intrukja jet wykonywana do momentu pełnienia warunku. Wtęp do informatyki Cezary Bolek <bolek@ki.uni.lodz.pl> 19 Wtęp do informatyki Cezary Bolek <bolek@ki.uni.lodz.pl> 20 5
PASCAL - kontrukje terująe PASCAL przykład ykl i i+1 T i Start i Stop N FOR i=start TO Stop DO ; Cykl FOR-TO-DO łuŝy do kontruowania ykli o dokładnie określonej liznie wykonań. Po łowie kluzowym DO moŝe wytąpić tylko jedna intrukja, jeśli ma ih być więej naleŝy zatoować grupowanie intrukji - PROGRAM kolo(input,output); read, write, writeln funkje bibliotezne realizująe odzyt z klawiatury i Pi = 3.1415926; drukowanie na monitorze. pole : real; obwod: real; r: real; {promien} write( Podaj promien kola r= ); read(r); pole:= Pi*r*r; obwod:=2*pi*r; writeln( Pole wynoi=,pole); writeln( Obwod wynoi=,obwod);. Wtęp do informatyki Cezary Bolek <bolek@ki.uni.lodz.pl> 21 Wtęp do informatyki Cezary Bolek <bolek@ki.uni.lodz.pl> 22 Funkje i proedury umoŝliwiają modułową realizaję programu. Funkje i proedury Funkja to moduł programowy, który moŝe przyjmować wiele argumentów (danyh wejśiowyh), ale zwraa tylko jedną wartość jako wynik wojego działania. Proedura to moduł programowy, który moŝe przyjmować wiele argumentów (danyh wejśiowyh), ale nie zwraa Ŝadnego wyniku i moŝe być uŝywana jak normalna intrukja języka. Definija funkji pole wywołanie funkji pole Funkje - parametry PROGRAM kolo(input,output); Pi = 3.1415926; p : real; r : real; FUNCTION pole(a:real) : real; pole:= Pi*a*a; ; Parametr formalny funkji (a) Parametr aktualny funkji (r) write( Podaj promien kola r= ); read(r); p:= pole(r); writeln( Pole wynoi=,p);. Parametry formalne ą nazwami zmiennyh uŝywanymi w deklaraji funkji Określenie typu zwraanego wyniku funkji Parametry aktualne ą zmiennymi lub lizbami w hwili uŝyie funkji. Są one podtawiane pod parametry formalne w zaie wykonywania. Wtęp do informatyki Cezary Bolek <bolek@ki.uni.lodz.pl> 23 Wtęp do informatyki Cezary Bolek <bolek@ki.uni.lodz.pl> 24 6
Definija funkji pole Definija proedury drukuj wywołanie proedury drukuj Proedury - parametry PROGRAM kolo(input,output); Pi = 3.1415926; r : real; FUNCTION pole(a:real) : real; pole:= Pi*a*a; Parametr formalny ; proedury (b) PROCEDURE drukuj(b:real); writeln( Pole wynoi=,b); ; write( Podaj promien kola r= ); read(r); drukuj( pole(r) );. Parametr aktualny proedury (jet nim wynik funkji pole) Parametry formalne ą nazwami zmiennyh uŝywanymi w deklaraji proedury Proedura nie zwraa Ŝadnego wyniku Parametry aktualne ą zmiennymi lub lizbami w hwili uŝyie proedury. Są one podtawiane pod parametry formalne w zaie wykonywania. Przekazywanie parametrów Przekazywanie parametrów moŝliwe jet na dwa pooby: przez wartość proedura (funkja) otrzymuje kopie zmiennyh i nie moŝe zmienić wartośi oryginalnej zmiennej przez zmienną (wkaźnik) proedura (funkja) otrzymuje oryginalną zmienną (wkazanie na zmienną) i moŝe zmienić wartośi oryginalnej zmiennej (o oznaza ię łowem kluzowym var przed parametrem formalnym) x : real; PROCEDURE F(x:real); x:= 1; x:= 0; F(x); write(x); wydrukuje wartość 0 x : real; PROCEDURE F(var z:real); z:= 1; x:= 0; F(x); write(x); wydrukuje wartość 1 Wtęp do informatyki Cezary Bolek <bolek@ki.uni.lodz.pl> 25 Wtęp do informatyki Cezary Bolek <bolek@ki.uni.lodz.pl> 26 7