You are on page 1of 19

Podstawy programowania Pojcia bazowe 1.

Programowanie Pod terminem "programowanie" bdziemy rozumie napisanie tekstu programu w specjalnym jzyku, tzw. jzyku programowania. Piszemy tekst programu w jzyku programowania w tym celu, aby specjalny program - kompilator przeczyta tekst i przeksztaci go do postaci kodu komputerowego, a ten jest wykonywany przez procesor komputera. Napisanie programu bezporednio w kodzie komputerowym jest prac mudn i czasochonn. 2. Algorytm Algorytmem nazywamy cig czynnoci do rozwizywania okrelonego zadania. Czynnoci musz by wykonywane kolejno; nie rozpoczynamy nowej czynnoci dopty, dopki nie jest zakoczona poprzednia. Czynnoci algorytmu nazywamy operacjami. Zoono kadej operacji nie ma znaczenia, ale w momencie wykonywania algorytmu kada z operacji powinna mie jasn tre. Operacja moe by algorytmem. Operacje algorytmu rozpoczynamy wykonywa na danych wejciowych, w kocu dziaania algorytmu otrzymujemy dane wyjciowe, kada operacja algorytmu moe produkowa dane porednie. W przypadku wielokrotnego korzystania z algorytmu dla rnych danych wejciowych i wielokrotnego produkowania odpowiednich danych wyjciowych mwimy o wejciowym i wyjciowym strumieniach danych. Opis algorytmu musi zawiera opis klasy (typu) danych wejciowych i wyjciowych. Kady algorytm mona stosowa tylko do swojej klasy danych. Moliwe jest stosowanie, jako operacji tego samego algorytmu, do ktrego naley operacja. W takim przypadku mwimy o algorytmie rekurencyjnym. 3. Formy zapisu algorytmu Na zapisywanie algorytmu istnieje wiele sposobw, do ktrych nale formy tekstowe w jzyku zwyczajnym lub specjalnym, formy graficzne, wyraenia matematyczne. Dla przykadu opiszemy w formie tekstowej algorytm obliczenia najwikszego wsplnego podzielnika (NWP) dwch liczb cakowitych. Szkolny algorytm obliczenia najwikszego wsplnego podzielnika (NWP) dwch liczb cakowitych polega na rozkadaniu liczb na czynniki pierwsze. Nastpnie wybieramy czynniki wsplne i mnoymy je1. Ten algorytm nigdy nie by realizowany w komputerze, poniewa wymaga duo wicej czasu ni inne algorytmy do obliczenia NWP. Do obliczenia najwikszego wsplnego podzielnika (NWP) dwch liczb cakowitych, dwch wielomianw, jak te wsplnej miary dwch odcinkw, w komputerach stosuje si algorytm Euklidesa. Algorytm Euklidesa2 dla liczb orzeka nastpujco:
1

Leitner R., akowski W., 1967: Matematyka. Kurs przygotowawczy na wysze uczelnie techniczne. Warszawa: WNT 2 Encyklopedia Powszechna PWN

Krok 1. We liczby A i B, oznacz przez M wiksz, a przez N mniejsz z nich. Krok 2. Oblicz reszt R z dzielenia M na N. Krok 3. Gdy reszta R jest zerem, wwczas N jest szukanym najwikszym wsplnym podzielnikiem i zakocz algorytm. Krok 4. Jeeli reszta R nie jest rwna zeru, wwczas w miejsce M we N, w miejsce N we R, po czym kontynuuj obliczanie reszty od kroku 2, tj. z dzielenia nowych wartoci M i N, a ktra z kolei reszta R bdzie rwna zeru. Naley przyzna, e najlepsz form zapisu algorytmu jest forma graficzna. Diagramy czynnoci graficzno-tekstowego jzyka UML (Unified Modeling Language) w porwnaniu ze schematami blokowymi (czynnociowymi) zajmuj mniej miejsca. Reguy rysowania diagramw czynnoci ilustruje rys. 2, gdzie jest pokazany diagram czynnoci algorytmu Euklidesa do obliczenia najwikszego wsplnego podzielnika dwch liczb cakowitych. Na diagramie czynnoci rys. 2 kko czarne jest pocztkiem algorytmu, kko czarne w kku - kocem algorytmu. Operacje algorytmu s wpisane wewntrz tzw. stanw akcji. Stan akcji jest narysowany w formie podunej tabletki, w ktrej krawdzie dolna i grna s rwnolege, a boczne s pkolami.

Rys. 2. Diagram czynnoci algorytmu Euklidesa

Rozgazienie zaznacza si maym pustym rombem. Warunki rozgazienia zapisuje si w nawiasach kwadratowych na liniach przej rozpoczynajcych si od rombu. Przykadem zapisu algorytmu w postaci formuy moe suy algorytm obliczenia funkcji wykadniczej n! na bazie wzorca: n!= n (n 1)! dla n > 1, 1 dla n = 0 lub 1

4. Rodzaje algorytmw Algorytmy mona klasyfikowa wedug struktury. Mwimy o algorytmach liniowych, z rozgazieniami, z powtrzeniami, rekurencyjnych, wspbienych. Algorytm liniowy jest prostym cigiem operacji. W algorytmie z rozgazieniem jest zawsze operacja sprawdzania warunku.

W algorytmie z powtrzeniem poza operacj sprawdzania warunku ma miejsce przejcie na powtrzenie ju wykonanej czci algorytmu. Przykadem algorytmu z powtrzeniem jest algorytm pokazany na rys. 2.. Jeeli operacj algorytmu jest ten sam algorytm, to mwimy o algorytmie rekurencyjnym. Realizacja algorytmu rekurencyjnego jest moliwa, poniewa w przypadku algorytmu rekurencyjnego w pamici komputera rozmieszczane s kopie kodu komputerowego odpowiadajcego algorytmowi. Liczba kopii rwna si gbokoci rekurencji i moe by bardzo dua, ale ograniczona. Jeeli chcemy opisa cig wspbienych czynnoci, to mwimy o specjalnym rodzaju algorytmw - algorytmach wspbienych. Algorytm wspbieny zawiera wykonywane jednoczenie (wspbienie) algorytmy, ktre od czasu do czasu wspdziaaj przez wsplne dane. 5. Operacje algorytmu i operacje komputerowe Algorytm realizowany w komputerze jest cigiem operacji z zestawu operacji procesora i innych blokw komputera. W procesie przygotowywania algorytmu do realizacji w komputerze pierwotne operacje algorytmu s zamieniane na operacje z zestawu operacji komputera. Algorytm z operacjami komputera, ktry (algorytm) jest otrzymany w wyniku przeksztacenia pierwotnego algorytmu, nazywamy interpretacj algorytmu w komputerze. Program jest interpretacj komputerow algorytmu. Oprcz przeksztacenia operacji potrzebna jest interpretacja danych pierwotnych danymi komputerowymi, tj. danymi zachowywanymi w uporzdkowanych obszarach pamici komputera. Algorytm z operacjami procesora jest kodem komputerowym. Zapisywanie algorytmu bezporednio w kodzie komputerowym jest pracochonne i lepiej korzysta z pewnego systemu programowania, ktry pomaga wyprodukowa kod komputerowy. 6. Dane Dan nazywamy istot, ktra zachowuje informacj. Dane wprowadzane do komputera mog by liczbami, znakami, wyrazami, rysunkami lub mie inne postacie. Ilo informacji przechowywanej w danej oceniamy po stopniu zmniejszenia nieokrelonoci zajcia moliwego zdarzenia. Jednostk informacji jest bit. Jeden bit, jako jednostka informacji zmniejsza do zera nieokrelono zajcia jednego z dwch zdarze jednakowego prawdopodobiestwa. Inaczej mwic, jeden bit informacji wystarczy do wyboru midzy dwoma wartociami jednakowo prawdopodobnymi. Konkretna warto 1 lub 0 jednej dwjkowej cyfry w dwjkowej postaci liczby jest wykazem niewidocznej jednostki informacji (bitu). Z powodu tego dwjkowa cyfra czsto jest nazywana bitem, co formalnie nie jest poprawne. Bajtem nazywamy 8 cyfr dwjkowych. Jasne, e bajt przechowuje 8 bitw informacji. 7. Typy danych Poprawne i szybkie programowanie nie jest moliwe bez dobrej znajomoci programowych typw danych wybranego jzyka programowania. Programowym typem danych nazywamy fragment tekstu programu, informujcy kompilator o waciwociach obiektu programowego.

Wyznaczajc w programie typ danych pewnego obiektu informujemy kompilator o rozmiarze miejsca wymaganego do umieszczenia obiektu w pamici oraz o ograniczeniach w operacjach z nim. Nazwa typu danych ma posta sowa kluczowego lub zoonej konstrukcji syntaktycznej jzyka programowania. Typy danych mona podzieli na dwie grupy: - typy podstawowe (inne nazwy: typy standardowe, typy proste, typy zwyke), - typy pochodne (inne nazwy: typy niestandardowe, typy strukturalne). Typem pochodnym nazywamy typ, ktry jest zoeniem innych typw. Liczba typw danych w jednym programie jest nieograniczona i nie tylko dla typw pochodnych, lecz rwnie dla typw podstawowych, dlatego e prawie kady jzyk programowania daje moliwo definiowania przez programist wasnych typw danych. W jzykach C++, C# (czytaj C szarp lub Cis) poprzez funkcj sizeof(), a w jzyku Object Pascal poprzez funkcj SizeOf(), mona uzyska informacj o rozmiarze pamici (liczb bajtw) przydzielan przez kompilator do rozmieszczenia danych. Do typw podstawowych zaliczamy typ liczbowy, znakowy, logiczny, okrojony. Za pomoc typw podstawowych mona deklarowa zmienne, stae i tablice. W przypadku deklaracji staych kompilator moe sam wybiera odpowiedni typ danych. Do deklarowania typw pochodnych w jzykach programowania wykorzystuje si specjalne konstrukcje syntaktyczne, z ktrych najwaniejszymi s tablice, w tym tablice dynamiczne, oraz struktury, unie, klasy, interfejsy. Projektowanie programw 1. Wytwarzanie programu Aby stworzy program w jzyku typu kompilacyjnego naley: 1) napisa tekst w jzyku programowania wedug cisych regu, 2) wykona kompilacj tekstu do postaci pliku obiektowego za pomoc programu - kompilatora, 3) konsolidowa plik obiektowy lub grup plikw obiektowych do postaci pliku wykonywalnego za pomoc programu - konsolidatora. W graficznych rodowiskach BorlandC++ Builder3, Delphi oraz Microsoft Visual Studio program - kompilator i program - konsolidator mog by poczone wewntrz systemu programowania. System programowania moe od razu produkowa plik wykonywalny z rozszerzeniem exe. Oprcz pliku wykonywalnego system programowania moe produkowa dodatkowe pliki: plik biblioteki importu z funkcjami programu (plik z rozszerzeniem lib), plik dla wykrywacza usterek (ang. debugger) z informacj o nazwach i typach zmiennych i funkcji (plik z rozszerzeniem tds). eby stworzy i wywoa program w jzyku typu interpretacyjnego naley: 1) napisa tekst w jzyku programowania wedug cisych regu, 2) wykona kompilacj tekstu za pomoc programu - kompilatora do postaci pliku interpretacyjnego ("pliku klasowego" w jzyku Java),

Obecnie rodowiska RAD C++Builder oraz Delphi przeja firma Embarcadero Technologies

3) interpretowa plik interpretacyjny razem z plikami bibliotecznymi za pomoc programu - interpretatora. W pierwszych jzykach interpretacyjnych (np. w pierwszych BASIC'ach) tekst programu by interpretowany "od razu" linia po linii bez etapu kompilacji (etapu 2). 2. Metody programowania Przy napisaniu programu mona korzysta z jednej z trzech metod: metody ucile (zstpujcej) nazywan te metod od ogu do szczegu, wedug ktrej najpierw rozpatrujemy algorytm, jako cig wielkich operacji do rozwizywania zagadnienia i piszemy program, jako cig wywoa podprogramw, a pnej piszemy podprogramy odpowiadajce kadej z operacji algorytmu, metody wstpujcej (rozszerzajcej) nazywanej te metod od szczegu do ogu, wedug ktrej najpierw programujemy niewielkie operacje opisujce mae grupy czynnoci do rozwizywania zagadnienia, a pnej dodajemy czce fragmenty, metody mieszanej (metody kolejnych ulepsze), wedug ktrej programujemy na zmian tak wielkie, jak i niewielkie operacje. Trudno powiedzie, jaka metoda jest lepsza. 3. Programowanie zorientowane obiektowo W ostatnich latach aktywnie rozwijao si tzw. programowanie zorientowane obiektowo. Programowanie zorientowane obiektowo to napisanie programu z tak struktur, w ktrej zmienne i funkcje nalece do jednego obiektu, koncentruj si w jednym miejscu programu w postaci jzykowych konstrukcji, zwanych zwykle klasami. Skoncentrowanie zmiennych i funkcji daje moliwo programicie budowa obiekty programowe jako odpowiedniki obiektw z przestrzeni przedmiotowej, a to pozwala na lepsze rozumienie wspdziaania obiektw programu. Klasy programu opisuj struktur i zachowanie obiektw programu. Obiekt programu jest interpretowany jako egzemplarz klasy. Obiekt, o ktrym czsto si mwi w programowaniu zorientowanym obiektowo, jest czym, co ma okrelone granice, stan charakteryzujcy jego jednoznaczne i widoczne wasne zachowanie w formie pewnego cigu stanw. Programowanie zorientowane obiektowo wywaro wielki wpyw na metodologie procesu projektowania. Pojawio si projektowanie zorientowane obiektowo jako projektowanie, w ktrego trakcie jest budowana obiektowa dekompozycja przestrzeni przedmiotowej, a stworzona struktura nie zmienia si w procesie projektowania. Przez projektowanie pewnego systemu technicznego bdziemy rozumie przeksztacenie pierwotnego opisu systemu w zadaniu technicznym na jego opis kocowy w postaci dokumentacji technicznej (tj. dokumentacji, na ktrej podstawie mona stworzy system) poprzez opisy porednie, wrd ktrych moe si znajdowa projekt wstpny, projekt szkicowy, projekt techniczny itp. Pord jzykw zorientowanych obiektowo najlepsze moliwoci opracowania szybkich i zoonych aplikacji ma jzyk C++. rdem zalet programowania zorientowanego obiektowo jest zwikszenie strukturalnoci programu. Korzystanie z klas oraz nierzadko z hierarchii klas, nieuchronnie doprowadzi do zaistnienia w programie strukturalnych komponentw (moduw itp.). Zwikszenie strukturalnoci pomaga programicie lepiej rozumie swj program, a to zmniejsza liczb bdw i skraca czas projektowania.

Wan zalet programowania zorientowanego obiektowo jest to, e klasy mona wykorzysta ponownie w innych projektach, co te wpywa pozytywne na czas projektowania. Autonomiczno klasy doprowadzi do tego, e w przypadku modernizacji programu, aby na przykad zwikszy szybko dziaania, nierzadko mona ogranicza si do miejscowej korekty kluczowych metod (podprogramw) klasy i unikn oglnych zmian niebezpiecznych dla projektu. W literaturze o programowaniu zorientowanym obiektowo rzadko pisze si o jego wadach. Programowanie zorientowane obiektowo ma jednak wady i w niektrych przypadkach mog one wykluczy zastosowanie programowania zorientowanego obiektowo. Gwn wad programowania zorientowanego obiektowo jest zmniejszenie szybkoci programu. Szybko zmniejsza si z powodu trzech przyczyn: w programie zorientowanym obiektowo wystpuje wicej wywoa podprogramw ni w rwnowanym mu programie bez klas; w przypadku dziedziczenia klas adres podprogramu moe zalee lokalnie od nazwy klasy. Adres podprogramu znany jest wwczas tylko przy wywoaniu programu, a to pociga dodatkowe nakady czasu dla formowania adresu podprogramu; przy programowaniu zorientowanym obiektowo kada klasa zapisuje si z reguy w odrbnym pliku, a typowy konsolidator umieszcza kod odpowiadajcy kademu plikowi w odrbnym segmencie pamici. Wobec czego w przypadku zwykego stronicowania pamici komputera przy midzy klasowych wywoaniach podprogramw potrzebne s dodatkowe nakady czasu do przeczenia w procesorze rejestru segmentw. Naley zaznaczy, e jzyki zorientowane obiektowo maj konstrukcje skadniowe zezwalajce programowa nieobiektowo tj. bez klas. Jzyki programowania 1. Elementy jzyka programowania Jzyk programowania jest opisywany dwoma gramatykami: leksykaln (ang. lexical grammar) i syntaktyczn (ang. syntactic grammar). Gramatyka leksykalna(ang. lexical grammar) opisuje jak znaki jzyka s czone w elementy leksykalne - leksemy (ang. form tokens). Leksemami s sowa kluczowe, symbole operatorw, separatory, identyfikatory itd. Gramatyka syntaktyczna(ang. syntactic grammar) opisuje jak leksemy (ang. form tokens) mog by czone w programach. Leksemy s poczone w kategorie skadniowe. Opis jzyka zawiera nie tylko listy standardowych kategorii skadniowych, ale i reguy tworzenia kategorii skadniowych, ktre definiuje programista. Zdania jzyka programowania zbudowane s z leksem i kategorii skadniowych poczonych wedug regu jzyka. Sowa kluczowe (symboli terminalne) s zawsze wypisane w opisie jzyka. Przykady sw kluczowych: for, define, begin, end. Symbole operatorw w wikszoci s pobrane z matematyki, na przykad +, -, *. Separatory su do rozdzielenia kategorii skadniowych. Do separatorw nale: odstp (spacja), przecinek, rednik itd.

2. Meta - jzyk Do opisania kadego jzyka jest potrzebny meta - jzyk. Meta - jzyk jest nad jzykiem, poniewa zasadniczo jest niemoliwe opisa kategorie jzyka korzystajc tylko z samego jzyka. Czsto jzyk programowania jest opisywany w jzyku naturalnym. W standardach z opisem jzyka programowania na pocztku standardu definiuje si meta - jzyk. Jako meta - jzyk standardu czsto wykorzystywana jest zmodyfikowana notacja Backusa - Naura (MBNF) oraz diagramy syntaktyczne.
2.1. Zmodyfikowana notacja Backusa - Naura

Zmodyfikowana notacja Backusa - Naura jest zestawem regu jzykowych w postaci: Nazwa_definiowanej_kategorii_skadniowej = Meta-wyraenie W niezmodyfikowanej notacji Backusa - Naura zamiast znaku "=" jest wykorzystana konstrukcja "::=". Obydwa warianty znakw naley czyta jako "to jest". W prawej czci reguy w meta-wyraeniu s wykorzystywane sowa kluczowe, wczeniej zdefiniowane kategorie skadniowe i nastpujce operatory: konkatenacja, alternatywa, powtrzenie, opcja. Operatorowi konkatenacji nie odpowiada specjalny symbol. Konkatenacja jest realizowana za pomoc bezporedniego zapisu znak za znakiem. Przykad definicji kategorii Uamek_dziesitny za pomoc operatora konkatenacji: Uamek_dziesitny = .Liczba_dziesitna_cakowita_bez_znaku W przykadzie w meta-wyraeniu widzimy znak ." (kropka) i kategori skadniow Liczba_dziesitna_cakowita_bez_znaku. W celu rozdzielenia kategorii skadniowych meta-wyraenie moe zawiera nieznaczce spacji. W niezmodyfikowanej notacji Backusa - Naura kategorie skadniowe s zapisywane w nawiasach ze znakw "<" i ">", na przykad: <Uamek_dziesitny> ::= .<Liczba_dziesitna_cakowita_bez_znaku> Operator alternatywy jest zaznaczany symbolem | i ma znaczenie lub wariant zapisany za symbolem. Przykad definicji kategorii Cyfra_dziesitna za pomoc symbolu alternatywy i symbolw leksykalnych 0, 1, ..., 9: Cyfra_dziesitna = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Operator powtrzenia jest zaznaczany nawiasami klamrowymi. Zawarto nawiasw moe wystpowa w kategorii dowoln ilo razy, w tym zero razy, tj. w ogle nie wystpi.

Przykad definicji kategorii Liczba_dziesitna_cakowita_bez_znaku za pomoc operatora powtrzenia i kategorii Cyfra_dziesitna: Liczba_dziesitna_cakowita_bez_znaku = Cyfra_dziesitna{Cyfra_dziesitna} Operator opcji jest zaznaczany nawiasami kwadratowymi. Zawarto nawiasw moe nie wystpowa w kategorii. Przykad definicji kategorii Liczba_dziesitna_cakowita za pomoc operatora opcji i kategorii Liczba_dziesitna_calkowita_bez_znaku: Liczba_dziesitna_cakowita = [+|-] Liczba_dziesitna_calkowita_bez_znaku Definicja kategorii moe by rekurencyjn. Przykad: Nazwa = Litera | Nazwa Litera | Nazwa Liczba Przedstawiona rekurencyjna definicja kategorii Nazwa wymusza, e nazwa moe rozpoczyna si tylko od litery.
2.2. Diagramy syntaktyczne

Diagramy syntaktyczne s graficzn form dokadnego opisu jzyka programowania. Na diagramach syntaktycznych lepiej wida powtrzenia kategorii lub warianty budowanych kategorii. Kady diagram ma nazw definiowanej kategorii skadniowej. eby przeczyta diagram syntaktyczny trzeba przechodzi w wyobrani wzdu linii strumieniowych z lewej strony diagramu na prawu stron. Trzeba wybiera wszystkie z moliwych wariantw przechodzenia. Leksemy (symbole terminalne) zapisuj si w kkach, a wczeniej zdefiniowane kategorie skadniowe - w prostoktach. Na przykad definicja kategorii Cyfra_dziesitna przez diagram syntaktyczny wyglda nastpujco:

Przykad definicji kategorii Liczba_dziesitna_cakowita_bez_znaku:

Przykad definicji kategorii Liczba_dziesitna_cakowita:

Przykad definicji kategorii Uamek_dziesitny:

Przykad definicji kategorii Nazwa

Naley zwrci uwag, e tym razem definicja kategorii Nazwa jest definicj bez rekurencji (bez jawnej rekurencji). 3. Przegld jzykw programowania zorientowanego obiektowo
3.1. Jzyk C++

Jzyk C++4 stworzony przez Bjarna Stroustrupa jest czsto nazywany C z klasami, poniewa w warstwie proceduralnej by osadzony w notacji jzyka C, ktrego zaproponowali Brian Kernighan i Denis M. Ritchie. Autor jzyka C++ Bjarn Stroustrup zapoyczy z jzyka Simula 67 koncepcj klasy. Analiza jzyka C++ ujawnia rwnie wpyw na ten jzyk jzyka Algol 68. Istniej liczne kompilatory jzyka C++ znanych firm: Borland, Microsoft, Watcom. Rozszerzone wersje jzyka C++ s wczone w szeroko znane systemy oprogramowania (rodowiska) Borland C++ Builder oraz Visual C++ (cz Visual Studio firmy Microsoft). Jzyk C++ jest standaryzowany od 1994 komisj ISO/ANSI, standard z ostateczn korekt - standard ANSI 14882 2003 roku. Jzyk C++ jest najszerzej uywanym jzykiem. Jzyk C++ wywar wielki wpyw na inne jzyki.
3.2. Jzyk Java

Jzyk Java5 jest jzykiem niezalenym od platformy i przystosowanym do zdalnego sterowania w Internecie. Kompilator jzyka Java produkuje tak zwany plik klasowy (ang. class file). Plik klasowy zawiera kod bajtowy Javy (ang. byte code) - instrukcje tak zwanej wirtualnej maszyny Javy (Java Virtual Machine). Wirtualna maszyna Javy jest aplikacj do implementacji na danym komputerze wyprodukowanego przez kompilator pliku klasowego i doczonych bibliotek. Wirtualna maszyna i kompilator tworz interpretator jzyka Java. Za pomoc jzyka Javy mona stworzy aplikacj autonomiczn lub tzw. aplet (ang. applet). Samodzielne programy w jzyku Java s nazywane aplikacjami, a programy, ktre s wykonywane przegldarkami internetowymi - apletami. Aplet jest pobierany na danie, podobnie jak bitmapa, plik dwikowy, itp. Istniejce przegldarki internetowe maj wbudowane interpretatory apletw jzyka Java i mog wykonywa aplety Javy. Jzyk Java pochodzi od jzyka C++. Jzyk Java ma w porwnaniu z C++ duo mniejsze moliwoci. W jzyku Java nie ma jawnych wskanikw, tylko referencje (odwoania). Brak jawnych wskanikw wyklucza moliwo programowego czysz4

Stroustrup B.,1994: The Design and Evolution of C++. Addision Wesley. Kisilewicz J., 2002: Jzyk C++: programowanie obiektowe. Wrocaw: Oficyna Wydawnicza Politechniki Wrocawskiej.
5

Morgan M., 1999: Poznaj jzyk JAVA 1.2. Warszawa: Wydawnictwo MIKOM

czenia sterty pamici z niepotrzebnych obiektw dynamicznych. Dla rozwizania problemu z czyszczeniem wirtualna maszyna Javy ma modu mieciarza, ktry od czasu do czasu czyci pami.
3.3. Jzyk Object Pascal

Popularny jzyk programowania Pascal powsta w 1971 roku. Autor jzyka Niklaus Wirth szeroko znany ze swoich publikacji zorientowa Pascal na strukturalne programowanie metod z gry na d. Jzyk Pascal zmienia si wiele razy. W kocu lat siedemdziesitych firma Apple zbudowaa jzyk Object Pascal, w ktrym zjawiy si pierwsze konstrukcje obiektowe. Firma Borland twrczo przerobia jzyk Object Pascal i w 1983 roku zbudowaa system programowania (rodowisko) Turbo Pascal, ktry zawiera oprcz kompilatora redaktor tekstu i narzdzie wykrywania usterek (debugowania). W 1989 roku pojawia si wersja Turbo Pascal 5.5, w ktrej jzyk Object Pascal zawiera konstrukcje skadniowe potrzebne do programowania zorientowanego obiektowo. Znacznym krokiem w rozwoju programowania stao si ukazanie rodowiska programowego Delphi6 w jzyku Object Pascal z rozwinit bibliotek klas graficznych obiektw.
3.4. Jzyk Visual Basic

Jzyk Visual Basic7 powsta w firmie Microsoft w 1991 roku. Sowo Basic w nazwie jzyka przypomina o jzyku Basic (Beginners All - Purpose Symbolic Instruction Code), ktry ma zbir sw kluczowych jasnych dla szerokiego grona osb. Firma Microsoft prawie, co rok wypuszczaa na rynek nastpne rodowiska Visual Basic z now wersj jzyka. Od pierwszej wersji samo rodowisko Visual Basic byo oprogramowane obiektowo, ale programista mg tylko bra obiekty z wbudowanej biblioteki graficznych obiektw lub podcza obiekty ActiveX. Dla zbudowania obiektw wedug technologii ActiveX trzeba byo kupi dodatkowy program. Od wersji 5.0 Visual Basic mona uwaa za jzyk zorientowany obiektowo. Uwieczeniem rozwoju jzyka Visual Basic stao si najnowsze rodowisko Visual Basic .NET, w ktrym jzyk jest gsto przeplatany z bibliotek klas i elementami rodowiska. Program w jzyku Visual Basic .NET mona wywoa tylko za pomoc platformy .NET Framework firmy Microsoft.

6 7

Kwasowiec W., 2002: Wprowadzenie do Object Pascal i Delphi. Warszawa: Wydawnictwo MIKOM Halvorson M. Microsoft Visual Basic Professional 6.0 krok po kroku. Wydawnictwo RM Sp. z o.o., Warszawa 1998

10

rodowiska programowania W celu zwikszenia wydajnoci pracy programisty powstay systemy programowania. System programowania tworz redaktor tekstw w jzyku programowania, kompilator, konsolidator, wykrywacz bdw (ang. debugger) oraz biblioteki z gotowymi komponentami. Kompilator przeksztaca tekst programu w form poredni, ktra nazywa si w wikszoci jzykw kodem obiektowym, a w jzyku Java - kodem klasowym. Konsolidator czy midzy sob kody obiektowe projektu aplikacji oraz docza biblioteki z kodami obiektowymi i przeksztaca kod obiektowy do postaci kodu komputerowego (maszynowego). Do kodu komputerowego (maszynowego) konsolidator dodaje nagwek. System operacyjny korzystajc z informacji zapisanej w nagwku aduje kod komputerowy (maszynowy) do pamici komputera i uruchamia aplikacje przekazujc sterowanie do pierwszej instrukcji. Kod klasowy jzyka Java jest interpretowany wirtualn maszyn Javy (ang. Java Virtual Machine) Programista przygotowuje program w zintegrowanym rodowisku programowania (ang. Integrated Development Environment - IDE), ktre czy programist z komponentami systemu programowania oraz zawiera liczne funkcje serwisowe (na przykad, wywietla innym kolorem sowa kluczowe, komentarzy itp.). Zintegrowane rodowisko programowania zawieraj zazwyczaj podsystem pomocy. Najnowsze z wersji zintegrowanych rodowisk programowania pomagaj programowa pokazujc moliwe warianty nastpnego fragmentu tekstu, na przykad list atrybutw i metod klasy obiektu programowego. Rozpatrzymy systemy programowania z jzykami C++, Java, Visual Basic, Object Pascal. 1. System programowania Borland C++ Builder System programowania Borland C++ Builder ma na celu tworzenie wszystkich rodzajw aplikacji, napisanych w jzyku ANSI C++, tj. w takim dialekcie jzyka, ktry odpowiada standardowi ANSI. System Borland C++ Builder zawiera rozwinit bibliotek VCL (skrt od Visual Component Library). W bibliotece VCL znajduj si komponenty zorientowane na system operacyjny Windows. Z systemu Borland C++ Builder mona skorzysta te do przygotowywania aplikacji dla systemu operacyjnego Linux. System Borland C++ Builder (w wersji 6.0) zawiera bibliotek CLX (skrt dla Borland Component Library for Cross-Platform). Komponenty biblioteki CLX s "uniwersalnymi", tj. mog by wykorzystane w aplikacjach tak dla Windows, jak i dla Linux. 2. System programowania Visual Studio 2005 System programowania Visual Studio 2005 jest zbiorem narzdzi do tworzenia aplikacji ekranowych (ang. desktop applications), ASP - aplikacji internetowych (ang. ASP Web applications, skrt ASP od Active Server Pages), XML - aplikacji internetowych obsugujcych klientw serwera (ang. XML Web services), oraz aplikacji dla urzdze mobilnych (tj. komrek itp.) (ang. mobile applications).

11

Jzyki Visual Basic, Visual C++, Visual C#, oraz Visual J# systemu programowania Visual Studio 2005 s dostpne w jedynym zintegrowanym rodowisku programowania. Zintegrowane rodowisko daje moliwo tworzenia "mieszanej" aplikacji, ktrej fragmenty s napisane w rnych jzykach. Wskazane jzyki s wsparte przez platform .NET Framework, ktra jest niezbdna do wykonywania ASP - aplikacji oraz XML - aplikacji. 3. System programowania Borland Delphi System programowania Borland Delphi pomaga stworzy w jzyku Dephi, ktry opiera si o jzyk Object Pascal, aplikacje z graficznym interfejsem uytkownika (ang. GUI applications, skrt GUI od Graphical User Interface), aplikacje konsolowe (ang. console applications), aplikacje obsugujce klientw serwera (ang. service applications), biblioteki dynamiczne (ang. DLLs, skrt od Dynamic-link Libraries) oraz pakiety Delphi, ktre s rodzajem bibliotek dynamicznych. Jedne z wersji systemu programowania Borland Delphi daj moliwo programowania dla platformy Linux. System programowania Delphi podobnie jak system C++ Builder zawiera dwie biblioteki: bibliotek VCL (skrt od Visual Component Library) z komponentami zorientowanymi na system operacyjny Windows i bibliotek CLX (skrt dla Borland Component Library for Cross-Platform) z "uniwersalnymi" komponentami tak dla Windows, jak i dla Linux. 4. Systemy programowania dla jzyka Java Najpopularniejszy system programowania dla jzyka Java to JavaBeans. rodowisko JavaBeans zawiera kompilator, konsolidator, interpretator, przegldark apletw oraz wykrywacz bdw. Oprcz systemu JavaBeans istnieje system programowania "w czciach": pakiet JDK i rodowisko JRE. Instalacja pakietu JDK (ang. Java Development Kit) dostarcza biblioteczne procedury, a take rodowisko JRE (ang. Java Runtime Environment) do wykonania aplikacji oraz apletw. Instalacja rodowiska JCreator firmy Xinox Software jako jednego ze rodowisk programowania dla Java daje moliwo pracy z tekstem programu i uruchomienia aplikacji lub apletu. rodowisko JCreator zawiera kompilator, konsolidator, interpretator, przegldark apletw oraz wykrywacz bdw.

12

Konstrukcje jzyka programowania 1. Zmienne Zmienna programowa jest obszarem pamici komputera, ktrego rozmiar zaley od wskazanego lub ustawionego domylnie typu zmiennej. Nazwa zmiennej jest identyfikatorem obszaru pamici przydzielonego przez kompilator. Wyznaczajc w programie typ zmiennej informujemy kompilator nie tylko o rozmiarze miejsca w pamici wymaganego do umieszczenia wartoci zmiennej, no i o moliwych operacjach z t zmienn. Nazw zmiennej wybiera programista przy nastpujcych ograniczeniach: - nazwa musi rozpoczyna si od litery, lub od znaku _, lub znaku "$", - nazwa nie moe by dusza ni 255 znakw lub 31 znakw w zalenoci od kompilatora, - nazwa nie moe by jednym z kluczowych sw jzyka programowania. W tzw. notacji wgierskiej jest zalecane rozpoczyna nazw od liter - skrtw od typu zmiennej, co daje programicie moliwo samokontroli typw danych. Na przykad przedrostkami mog by litery: n lub "i" (od ang. integer) w nazwach zmiennych typu cakowitego, b (od ang. boolean) w nazwach zmiennych typu logicznego, x, "y" w nazwach wsprzdnych, "s" (od ang. string) w nazwach tablic tekstowych, "sz" (od ang. string, zero) w nazwach tablic tekstowych ze znakiem "zero" na koncu, "p" (od ang. pointer) w nazwach zmiennych typu wskanikowego, "pfn" (od ang. pointer on function) w nazwach wskanikw na funkcji, itp. Due i may litery rozrnia si w jzyku C/C++, Java i nie rozrnia si w jzykach Object Pascal i Visual Basic .NET. 1.1. Deklaracje zmiennych Deklaracje zmiennych zawieraj informacji o typie i nazwie zmiennej. Typ zmiennej naley wybiera w zalenoci od rodzaju danych i oczekiwanych wartoci zmiennej (tab. 1). Typ Decimal w jzyku Visual Basic .NET ma na celu reprezentacj danych finansowych. Typ decimal (Decimal) posiada niezwyke wielki zakres wartoci. 128-bitowa (16-bajtowa) reprezentacja typu Decimal skada si z 96-bitowej mantysy i 32bitowego sowa, w ktrym zakodowany jest czynnik skalujcy oraz znak mantysy. Czynnik skalujcy ma zakres od 0 do 28 i wskazuje na liczb miejsc dziesitnych po przecinku. Jeeli czynnik rwna si 0 to typ Decimal stosuje si do liczb cakowitych ze znakiem. Typ Decimal opiera si na specjalnej, dziesitn arytmetyce, dziki czemu osignita jest idealna dokadno dla liczb zmiennoprzecinkowych dziesitnych. Na przykad liczba 0,01 nie moe by dokadne reprezentowana przez typy Single lub Double, ale przez typ Decimal jak najbardziej.

13

Tabela 1 Typy zmiennych w zalenoci od rodzaju danych i oczekiwanych wartoci


Rodzaj danych i zakres wartoci Liczba cakowita ze znakiem od -128 do +127 Liczba cakowita bez znaku od 0 do 255 Liczba cakowita ze znakiem od -32768 do +32767 Liczba cakowita bez znaku od 0 do 65535 Jzyk C/C++ VB.NET C/C++ VB.NET C/C++ VB.NET C/C++ Typ signed char __int8 unsigned char unsigned __int8 Byte short __int16 Short unsigned short unsigned __int16 Przykad signed char ii; __int8 ii; unsigned char jj; unsigned __int8 jj;

Liczba cakowita ze znakiem od -2147483648 do +2147483647 Liczba cakowita bez znaku od 0 do 4294967295 Liczba cakowita ze znakiem od -92233 72036854775808 do +92233720368 54775807 Liczba cakowita bez znaku od 0 do 18446744073709551615 Liczba zmienno-przecinkowa z dokadnoci 7 cyfr dziesitnych Liczba zmienno-przecinkowa z dokadnoci 15 cyfr dziesitnych Liczba zmienno-przecinkowa z dokadnoci 18 cyfr dziesitnych Liczba stao-przecinkowa z dokadnoci 28 cyfr dziesitnych

VB.NET C/C++ VB.NET C/C++ VB .NET C/C++ VB.NET C/C++ VB .NET C/C++ VB .NET C/C++ VB .NET C/C++ VB .NET C/C++ VB .NET

Dim symb As Byte short kk; __int16 kk; Dim kk As Short unsigned short rodz; unsigned __int16 rodz; int int rozm; long long rozm; __int32 __int32 rozm; Integer Dim rozm As Integer unsigned long unsigned long NN; unsigned __in- unsigned __int32 t32 NN; __int64 __int64 ind; Long Dim ind As Long unsigned __int64 float Single double Double long double Decimal unsigned __int64 ui6; float flo; Dim flo As Single double doub; Dim doub As Double long double d18; Dim dec28 As Decimal

1.2. Nadanie zmiennym wartoci pocztkowych Wartoci zmiennym, w tym wartoci pocztkowe, nadajemy operatorem przypisania. Lewa cz operatora przypisania zawiera nazw zmiennej, a prawa - litera. Nadanie zmiennym wartoci pocztkowych mona poczy z deklaracj. Jzyk C/C++ i Java Przykady: int rozm = 175; double doub = 3.74;

14

Jzyk Visual Basic .NET Przykady: Dim rozm As Integer = 175 Dim doub As Double = 3.74 2. Bloki programowe Bloki programowe s wprowadzone w celu ograniczenia zakresu widzialnoci zmiennych. Blok programowy daje programicie moliwo korzystania w rnych blokach z jednakowych nazw zmiennych i jednakowych nazw innych konstrukcji jzykowych. Granicy blokw s zaznaczane specjalnymi symbolami - separatorami lub granicami deklaracji konstrukcji programowej. Granicami bloku mog by pocztek i koniec pliku. W jzykach C/C++ i Java granicy blokw s zaznaczane nawiasami figurowymi { i }. Sowa kluczowe begin i end s granicami bloku w jzyku Object Pascal. W jzyku Visual Basic .NET granicami bloku su granicy konstrukcji programowej. Koniec konstrukcji programowej czsto jest pokazywany sowem kluczowym End razem z nazw konstrukcji programowej, na przykad, End Structure, End While itp. Bloki mog by woone jeden w drugi bez ogranicze (oprcz wyczerpania pamici operacyjnej). Blok najwikszego rozmiaru odpowiada caemu programu i nie jest zaznaczony nawiasami lub innymi symbolami. Obiekt (zwykle zmienna) zdefiniowany w bloku nazywa si obiektem lokalnym (zmienn lokalnej). Obiekt zdefiniowany w najwikszym bloku, tj. w granicach programu, ale poza woonymi blokami, nazywa si obiektem globalnym (zmienna globalnej). Moduem nazywamy grup plikw dotyczcych autonomicznego obiektu, a mianowicie aplikacji, biblioteki dynamicznej (DLL) itp. Jednostk programowej (unit) nazywamy grup plikw dotyczcych okna graficznego. W rodowisku Borland Delphi do jednostki programowej nale plik implementacji z rozszerzeniem .pas, plik z opisaniem formularza z rozszerzeniem .dfm i plik resursw z rozszerzeniem .res. W rodowisku Borland C++ Builder do jednostki programowej nale plik nagwkowy z rozszerzeniem .h, plik implementacji z rozszerzeniem .cpp, plik z opisaniem formularza z rozszerzeniem .dfm i plik resursw z rozszerzeniem .res. 3. Zmienne globalne i lokalne Zmienne mog by globalne i lokalne. Jeeli programista planuje posugiwa si adresem komrki pamici zmiennej w zasigu caego programu, to on definiuje zmienn jako globaln. Miejsce w pamici, w ktrym jest rozmieszczona globalna zmienna nie zmienia si w trakcie wykonywania programu. Mwimy, e globalna zmienna ma zasig caego programu. Jeeli zmienna jest potrzebna tylko w czci programu, to naley zdefiniowa zmienn jako lokaln. Miejsce, w ktrym jest rozmieszczona lokalna zmienna, moe by wykorzystane przez system operacyjny w innych czciach programu do rozmieszczenia innych zmiennych. Zdarza si, e w przypadku powtrzenia fragmentu

15

programu system operacyjny zmienia miejsce rozmieszczenia tej samej zmiennej lokalnej. Lokalna zmienna ma zasig bloku, w ktrym ona jest zdefiniowana. Jzyki C i C++ Przykad deklaracji zmiennych globalnych: int rozm = 175; double doub = 3.74; void main(void) { ... } Przykad deklaracji zmiennych lokalnych: void main(void) { int rozm = 175; double doub = 3.74; ... } Jzyk Visual Basic .NET Przykad deklaracji zmiennych globalnych: Dim rozm As Integer = 175 Dim doub As Double = 3.74 Sub Main() ... End Sub Sub Dim Dim ... End Przykad deklaracji zmiennych lokalnych: Main() rozm As Integer = 175 doub As Double = 3.74 Sub

4. Deklaracje zmiennych importowanych Jeeli tekst programu jest rozdzielony na pliki i pewna globalna zmienna jest wykorzystana nie tylko w tym pliku, w ktrym ona jest zdefiniowana, to zmienna powinna by zadeklarowana jako importowana w miejscu jej wykorzystania. Deklaracja zmiennej importowanej zawiera modyfikator importu: sowo extern, lub import, itp. W deklaracji zmiennej importowanej nie mona wskazywa pocztkowe wartoci. Deklaracje zmiennych importowanych najwygodniej zapisywa do odrbnych plikw nazywanych plikami nagwkowymi.

16

Jzyki C i C++ Przykady deklaracji zmiennych: #include <stdio.h> //import pliku nagwkowego z nazw "stdio.h" extern int rozm; extern double doub; void main(void) { doub = rozm * 3.1415; ... } Jzyk Visual Basic .NET Przykad deklaracji zmiennych: Import Windows Dim rozm As Integer Dim doub As Double 5. Rodzaje zmiennych lokalnych Dla zmiennej lokalnej mona zada jeden z nastpujcych rodzajw: automatyczna, statyczna lub rejestrowa. Zmienna automatyczna jest alokowana i inicjowana przy kadym wykonywaniu instrukcji bloku. Po zakoczeniu instrukcji bloku warto zmiennej automatycznej nie jest zachowywana. Zmienna statyczna jest alokowana i inicjowana tylko przy pierwszym wykonywaniu instrukcji bloku. Po zakoczeniu instrukcji bloku warto zmiennej statycznej jest przechowywana. Zmienna rejestrowa mieci si w jednym z rejestrw komputera, co powoduje szybkie wykonywanie operacji z t zmiennej. Po zakoczeniu instrukcji bloku warto zmiennej rejestrowej bdzie stracona. Jeeli w bloku programowym zdefiniowano za duo zmiennych rejestrowych kompilator zamienia zbdne zmienne rejestrowe na zmienne automatyczne. Jzyki C i C++ Przykad deklaracji zmiennych lokalnych: void main(void) { static licznik = 0; // zmienna statyczna register int indeks = 0; // zmienna rejestrowa double pi = 3.1415; //zmienna automatyczna ... } Jzyk Visual Basic .NET W jzyku Visual Basic .NET wszystkie zmienne s automatyczne. Przykad deklaracji zmiennych lokalnych: Sub Main() Dim rozm As Integer = 175

17

Dim doub As Double = 3.74 ... End Sub 6. Stae Sta mona zdefiniowa na dwa sposoby. Po pierwsze, mona wykorzysta zmienn z pocztkowej wartoci, ktra nie jest zmieniana. Mona poinformowa kompilator o niezbdnoci ledzenia, aby instrukcje programu nie zmienili warto zmiennej. W tym celu w jzykach C, C++ i Object Pascal jest wykorzystane sowo kluczowe const. Przykady w jzykach C i C++: const int rozm = 175; const char litera = A; const char autor[] = Autor; Po drugiej, mona zadeklarowa nazw staej i jej warto. W tym przypadku kompilator decyduje o poprawnym rozmieszczeniu staej i wybiera typ w zalenoci od wartoci staej. Jzyki C i C++ W jzykach C i C++ naley wykorzysta deklaracj define, na przykad: #define rozm 175 lub sowo kluczowe const, na przykad: const litera = A; Jzyk Visual Basic .NET W jzyku Visual Basic .NET mona zadeklarowa sta wykorzystujc sowo kluczowe Const Przykad w jzyku Visual Basic .NET: Const rozm = 175 7. Tablice programowe Tablice programowe opisuj kolejno rozmieszczone w pamici elementy jednakowego typu. Tablice definiowane s zawsze przez typ elementu tablicy. Jzyk C++ W deklaracji tablicy w jzyku C++ powinny by wskazane typ danych elementu tablicy i liczba elementw tablicy lub liczba elementw w kadym wymiarze, jeeli tablica jest wielowymiarowa.. Przykady deklaracji tablic programowych w jzyku C++: int tabl1[5];//tablica na 5 elementw typu int unsigned int tabl2[7][10];//tablica z 7*10 elementw typu unsigned int Kompilator jzyka C++ rozmieszcza w pamici elementy tablicy wielowymiarowej w kolejnych komrkach pamici w ten sposb, aby z dwch ssiadujcych indeksw tablicy indeks z prawej strony zmienia si prdzej.

18

Jzyk Visual Basic .NET W jzyku Visual Basic .NET nietrudno zdefiniowa zarwno tablic jednowymiarow, jak i wielowymiarow. Niezwyk regu jzyka jest wskazanie w deklaracji nie liczby elementw, lecz najwikszej wartoci indeksw w kadym wymiarze. Najmniejsza warto indeksu rwna si 0. Kompilator jzyka Visual Basic .NET rozmieszcza elementy tablicy wielowymiarowej w takie kolejnoci, e indeks prawy zmienia si szybciej ni indeks lewy. Przykady deklaracji tablic w jzyku Visual Basic .NET: Dim tabl1(4) As Integer deklaracja tablicy na 5 elementw typu Integer Dim tabl2(6,9) As Double deklaracja tablicy na 7*10 elementw typu Double

19

You might also like