Programowanie komputerów
Transkrypt
Programowanie komputerów
Programowanie Komputerów 2FD Materiały pomocnicze do laboratorium 2 Spis treści ZAJĘCIA 1. WPROWADZENIE ..................................................................................................................................................... 4 1. ZAPOZNANIE SIĘ ZE ŚRODOWISKIEM PRACY.................................................................................................................................. 4 Praca w sieci lokalnej ................................................................................................................................................................. 4 Sposób logowania ....................................................................................................................................................................... 4 Katalogi robocze ......................................................................................................................................................................... 4 Programy narzędziowe................................................................................................................................................................ 4 Praca w środowisku Visual C++................................................................................................................................................ 4 Tworzenie projektu...................................................................................................................................................................... 4 Kompilacja .................................................................................................................................................................................. 7 Uruchamianie programu............................................................................................................................................................. 7 Praca krokowa ............................................................................................................................................................................ 8 2. OPRACOWANIE PROSTYCH PROGRAMÓW W JĘZYKU C++.............................................................................................................. 8 ZAJĘCIA 2: DEFINIOWANIE KLASY.......................................................................................................................................... 9 ZAGADNIENIA Z TEGO ĆWICZENIA OBEJMUJĄ UMIEJĘTNOŚCI: .......................................................................................................... 9 1. Opracowanie klasy.................................................................................................................................................................. 9 2. Opracowanie funkcji głównej (main) .................................................................................................................................. 10 ZAJĘCIA 3: ROZBUDOWA PROJEKTU – CZ. I: KONSTRUKTOR, DESTRUKTOR, ZAGADNIENIE LISTY DWUKIERUNKOWEJ (PODWÓJNIE ŁĄCZONEJ) ................................................................................................................. 11 ZAGADNIENIA Z TEGO ĆWICZENIA OBEJMUJĄ UMIEJĘTNOŚCI: ........................................................................................................ 11 • ustawiania składowych klasy w konstruktorze; ............................................................................................................... 11 • dynamicznego przydziału pamięci za pomocą operatora new;....................................................................................... 11 • zwalniania dynamicznie przydzielonej pamięci za pomocą operatora delete; ........................................................... 11 • poruszania się wskaźnikiem po elementach listy; ............................................................................................................ 11 • opracowania funkcji głównej tak, by demonstrowała (testowała) działanie poszczególnych funkcji składowych opracowanych klas; .................................................................................................................................................................. 11 ZAJĘCIA 4: INTERFEJS W TRYBIE TEKSTOWYM .............................................................................................................. 12 W TYM ĆWICZENIU NALEŻY ZAPROJEKTOWAĆ PROSTY INTERFEJS W TRYBIE TEKSTOWYM O NASTĘPUJĄCYCH OPCJACH:.............. 12 • Wprowadzanie nowego obiektu na listę zatrudnionych;.................................................................................................. 12 • Usuwanie obiektu z listy; ................................................................................................................................................. 12 • Wypisywanie całej listy na ekran; ................................................................................................................................... 12 • Przeszukiwanie listy; ....................................................................................................................................................... 12 • Zapisywanie do pliku całej listy (użycie funkcji strumieniowych – do uzupełnienia na zajęciach 5);............................. 12 • Odczytywanie listy z pliku (użycie funkcji strumieniowych – do uzupełnienia na zajęciach 5);...................................... 12 ZAJĘCIA 5: ROZBUDOWA PROJEKTU – CZ. II: KONSTRUKTOR DOMYŚLNY, KONSTRUKTOR KOPIUJĄCY, , DYNAMICZNA ALOKACJA PAMIĘCI, FUNKCJE OPERATOROWE ................................................................................ 13 ZAGADNIENIA Z TEGO ĆWICZENIA OBEJMUJĄ UMIEJĘTNOŚCI: ........................................................................................................ 13 • zdefiniowania konstruktora domyślnego (np. z argumentami domniemanymi);.............................................................. 13 • ustawiania składowych klasy na liście inicjalizacyjnej konstruktora;............................................................................. 13 • dynamicznego tworzenia tablic – przydział pamięci za pomocą operatora new; ........................................................... 13 • zwalniania dynamicznie przydzielonej pamięci za pomocą operatora delete; ........................................................... 13 • zdefiniowania konstruktora kopiującego;........................................................................................................................ 13 • zdefiniowania operatora przypisania; ............................................................................................................................. 13 • zdefiniowania funkcji operatorowych według instrukcji w ćwiczeniu;............................................................................ 13 • zdefiniowania zaprzyjaźnionych funkcji operatorowych (<<, >>) skojarzonych ze standardowymi strumieniami wyjścia, wejścia; ....................................................................................................................................................................... 13 • opracowania funkcji głównej tak, by demonstrowała (testowała) działanie poszczególnych funkcji składowych opracowanych klas.................................................................................................................................................................... 13 ZAJĘCIA 6, 7: MECHANIZM DZIEDZICZENIA, FUNKCJE WIRTUALNE – CZ. I, II. .................................................... 14 _____________________________________________________________________ 2 Katedra Podstaw Elektroniki Programowanie Komputerów - Studia dzienne – 2FD r.a. 2005/2006 semestr letni 3 ZAGADNIENIA Z TEGO ĆWICZENIA OBEJMUJĄ UMIEJĘTNOŚCI: ........................................................................................................ 14 • zdefiniowania konstruktora klasy pochodnej (wywołanie konstruktora klasy podstawowej);......................................... 14 • przydziału/zwalniania pamięci dla tablicy wskaźników; ................................................................................................. 14 • wykorzystania (użycia) zdefiniowanych funkcji klasy podstawowej w klasie pochodnej (w tym operatorowych); ......... 14 • zastosowania standardowych konwersji przy dziedziczeniu;........................................................................................... 14 • użycia mechanizmu wirtualności;.................................................................................................................................... 14 • opracowania funkcji głównej tak, by demonstrowała (testowała) działanie poszczególnych funkcji.............................. 14 _____________________________________________________________________ 3 Katedra Podstaw Elektroniki Programowanie Komputerów - Studia dzienne – 2FD r.a. 2005/2006 semestr letni 4 Zajęcia 1. Wprowadzenie 1. Zapoznanie się ze środowiskiem pracy Praca w sieci lokalnej Laboratorium prowadzone jest na komputerach wyposażonych w system operacyjny Windows NT. Ponadto katalogi robocze są umieszczone na serwerze plikowym pracującym pod kontrolą systemu Linux. Sposób logowania Aby się zalogować do systemu należy wykonać następujące czynności: 1. Sprawdzić czy w miejscu Domena znajduje się KPE, jeśli nie to ją należy wybrać. 2. W miejscu Użytkownik należy podać identyfikator grupy FD2labxy, x oznacza numer grupy laboratoryjnej; y oznacza numer zespołu w grupie (w tym semestrze jest jedna grupa laboratoryjna zatem dla wszystkich osób x = 1, przykładowy identyfikator FD2lab11) 3. W miejsce hasło nic nie wpisujemy Uwaga! Identyfikatory FD2labxy zostaną nadane zespołom przez prowadzącego zajęcia i są ważne do końca semestru i są związane z zespołem a nie z konkretnym komputerem. Katalogi robocze Pliki robocze (źródłowe) należy tworzyć w katalogach umieszczonych na serwerze plikowym, dysk h:\. Jedynie na tym dysku sieciowym można tworzyć pliki i podkatalogi. Uwaga: Pliki zapisywane na dysku lokalnym c: zostają kasowane po każdym logowaniu. Programy narzędziowe Programy narzędziowe (kompilator), z których korzysta się podczas zajęć umieszczone są na serwerze plikowym. Praca w środowisku Visual C++ Aby uruchomić środowisko programisty należy z menu Start|Programy wybrać grupę Microsoft Visual C++ 6.0, a następnie wybrać pozycję o tej samej nazwie. Tworzenie projektu Aby utworzyć nowy projekt należy wybrać File|New a następnie zakładkę Projects. Ponieważ program przedmiotu dotyczy tylko podstaw programowania obiektowego w języku C++, zatem na zajęciach będziemy korzystać tylko z jednego z dostępnych typ typów projektów czyli: Win32 Console Application. Aby utworzyć nowy projekt należy podać jego nazwę w polu Project name: i wskazać lokalizację, w której ma być on utworzony (wybieramy dysk sieciowy h:!). _____________________________________________________________________ 4 Katedra Podstaw Elektroniki Programowanie Komputerów - Studia dzienne – 2FD r.a. 2005/2006 semestr letni 5 Ten typ projektu zapewnia łatwą komunikację z urządzeniami zewnętrznymi i tworzy program działający w trybie „okienka konsolowego”. W przypadku pomyłki w typie projektu zaleca się usunięcie projektu i utworzenie nowego wg podanych wyżej zasad. Ponadto zaleca się podawanie nazw projektów identyfikujących kolejne zajęcia. Pole z nazwą katalogu jest uaktualniane automatycznie (w razie potrzeby można zmienić miejsce składowania plików projektu). Następnie wskazujemy zawartość tworzonego projektu. Chcąc tworzyć własny program wybieramy zazwyczaj pusty projekt (Empty Project). Struktura plików automatycznie utworzonego projektu jest pokazana w okienku Workspace po wybraniu trybu File View. Po utworzeniu nowego projektu wybieramy menu lokalnego File|New tworzymy nowy plik C++ Source File. _____________________________________________________________________ 5 Katedra Podstaw Elektroniki Programowanie Komputerów - Studia dzienne – 2FD r.a. 2005/2006 semestr letni 6 Następnie w polu File name: wpisujemy nazwę nowego pliku z rozszerzeniem cpp. Pamiętaj jeśli będzie odznaczona opcja Add to project: wtedy utworzony nowy plik nie będzie dołączony do aktywnego projektu. Przełączenie widoku na ClassView pokaże strukturę klas i funkcji (jeśli zostały zdefiniowane) w projekcie. Struktura klas jest tworzona na podstawie deklaracji w plikach nagłówkowych (Header Files). Do projektu można wstawiać pliki już istniejące (źródłowe albo nagłówkowe lub inne) przez otworzenie menu lokalnego (naciśnięcie prawego klawisza myszki) dla konkretnego folderu (Source Files, Header Files) i wybranie pliku, który ma być dołączony. _____________________________________________________________________ 6 Katedra Podstaw Elektroniki Programowanie Komputerów - Studia dzienne – 2FD r.a. 2005/2006 semestr letni 7 Kompilacja Narzędzia umożliwiające kompilację i konsolidację znajdują się w menu Build. Poszczególne pliki źródłowe można kompilować z osobna poleceniem Compile (po uprzednim wskazaniu pliku) albo wybrać Build *.exe, aby przeprowadzić proces kompilacji (gdy nie ma modułów obj bądź są przestarzałe) i konsolidacji albo wybrać Rebuild all, aby skompilować wszystkie pliki źródłowe i przeprowadzić konsolidację. Alternatywnie można posłużyć się klawiszami skrótów lub paletą narzędziową Build (można ją włączyć/wyłączyć Tools|Customize – Toolbars). Wyniki kompilacji i konsolidacji (w szczególności lista błędów) są pokazywane w dolnym panelu. W przypadku pojawienia się błędu można dwukrotnie kliknąć na linii z komunikatem o błędzie co spowoduje przeniesienie kursora w panelu edycyjnym do odpowiedniej linii w celu skorygowania błędu. Uruchamianie programu Po utworzeniu programu exe można go uruchomić aby zobaczyć efekty pracy przez wybranie polecenia Build|Execute albo klikając wykrzyknik na palecie Build. _____________________________________________________________________ 7 Katedra Podstaw Elektroniki Programowanie Komputerów - Studia dzienne – 2FD r.a. 2005/2006 semestr letni 8 Rezultat działania zobaczymy w postaci „okienka konsolowego”. Po zakończeniu działania proces jest wstrzymywany i czeka na reakcję użytkownika. Wykonanie programu spowoduje także wybranie polecenia Build|Start Debug|Go albo kliknięcie ikony (Go) z palety Build. Porównaj działanie obu sposobów. Praca krokowa Praca krokowa polega na wstrzymywaniu działania programu po wykonaniu instrukcji zakodowanych w jednej linii. Rozpoczęcie tego trybu pracy odbywa się przez wybranie Build|Start Debug|Step Into (albo Run to cursor). Wykonanie pojedynczej linii programu odbywa się przez Debug|Step Over. Wygodniejsze jest jednak korzystanie z palety uruchomieniowej. W czasie pracy krokowej dolny panel zawiera listę zmiennych (obiektów) tworzonych w trakcie działania programu umożliwiając śledzenie zmian ich wartości. Ponadto w panelu Watch możemy utworzyć własną listę zmiennych których zawartości chcemy podglądać. Zakończenie pracy krokowej i powrót do trybu edycji odbywa się przez wybranie polecenia Debug|Stop debugging z menu albo z palety uruchomieniowej. 2. Opracowanie prostych programów w języku C++ Propozycje funkcji będą podawane w trakcie laboratorium. _____________________________________________________________________ 8 Katedra Podstaw Elektroniki Programowanie Komputerów - Studia dzienne – 2FD r.a. 2005/2006 semestr letni 9 Zajęcia 2: Definiowanie klasy Zagadnienia z tego ćwiczenia obejmują umiejętności: 1. Opracowanie klasy a) tworzenie szkieletu klasy, b) dodanie danych składowych do utworzonej klasy, c) dodanie funkcji składowych do utworzonej klasy, d) wykorzystania mechanizmu ustawiania danych składowych; e) zastosowania wskaźnika this; f) zabezpieczania danych składowych przed modyfikacją; g) dołączania plików nagłówkowych w całym projekcie; h) korzystania z wbudowanych funkcji bibliotecznych (m.in. iostream.h, sting.h); Tworzenie szkieletu projektu • Utwórz nowy projekt w swojej przestrzeni roboczej. W trakcie tworzenia projektu zaleca się utworzenie szkieletu przez wybór An empty project. • Przełącz panel z zawartością Workspace w tryb widoku klas (ClassView) • Z menu lokalnego dla listy klas wybierz New Class i podaj tylko nazwę klasy a następnie zaakceptuj klikając OK. Zwróć uwagę na to, że w Widoku klas (po rozwinięciu) pojawia nazwa klasy oraz lista automatycznie utworzonych składników, którymi są pewne szczególne funkcje składowe o nazwach takich jak nazwa klasy. Te funkcje to konstruktor i destruktor, (którymi na obecnym etapie nie będziemy się zajmować) • Po powrocie do widoku plików (FileView) zauważysz, że utworzone zostały dwa pliki xxx.cpp i xxx.h. Ten ostatni plik zawiera szkielet klasy (deklarację) z dwoma funkcjami tj. konstruktorem i destruktorem, których ciała, zdefiniowane w xxx.cpp, są puste. Dodanie danych składowych do utworzonej klasy Przełącz panel na widok ClassView. Aby dodać daną składową od utworzonej klasy, należy z menu lokalnego dla stworzonej klasy wybrać Add Member Variable. Dodanie funkcji składowych do utworzonej klasy Przełącz panel na widok ClassView. Aby dodać daną składową od utworzonej klasy, należy z menu lokalnego dla stworzonej klasy wybrać Add Member Function. _____________________________________________________________________ 9 Katedra Podstaw Elektroniki Programowanie Komputerów - Studia dzienne – 2FD r.a. 2005/2006 semestr letni 10 Zwróć uwagę na menu lokalne dla poszczególnych składników klasy. Znajdują się tam m.in. polecenia Go to Declaration i Go to Definition ułatwiające poruszanie się zwłaszcza po dużym wielomodułowym projekcie. Staraj się korzystać z tych ułatwień. Dwukrotne kliknięcie na nazwie funkcji powoduje przejście do definicji funkcji. 2. Opracowanie funkcji głównej (main) Jeśli przy tworzeniu projektu wybrałeś An empty project to do danego projektu konieczne jest dołączenie jeszcze jednego pliku o rozszerzeniu .cpp. W tym celu z menu File należy wybrać opcję New, w zakładce Files zaznaczyć C++ Source File i podać nazwę dołączanego pliku. Funkcję główną: void main() należy umieścić właśnie w tym pliku. Będzie ona widoczna także w folderze Globals w widoku klas. Nie zapomnij o dołączeniu pliku nagłówkowego stworzonej klasy. W funkcji głównej należy zademonstrować działanie poszczególnych funkcji składowych opracowanej klasy. _____________________________________________________________________ 10 Katedra Podstaw Elektroniki Programowanie Komputerów - Studia dzienne – 2FD r.a. 2005/2006 semestr letni 11 Zajęcia 3: Rozbudowa projektu – cz. I: konstruktor, destruktor, zagadnienie listy dwukierunkowej (podwójnie łączonej) Zagadnienia z tego ćwiczenia obejmują umiejętności: • ustawiania składowych klasy w konstruktorze; • dynamicznego przydziału pamięci za pomocą operatora new; • zwalniania dynamicznie przydzielonej pamięci za pomocą operatora delete; • poruszania się wskaźnikiem po elementach listy; • opracowania funkcji głównej tak, by demonstrowała (testowała) działanie poszczególnych funkcji składowych opracowanych klas; _____________________________________________________________________ 11 Katedra Podstaw Elektroniki Programowanie Komputerów - Studia dzienne – 2FD r.a. 2005/2006 semestr letni 12 Zajęcia 4: Interfejs w trybie tekstowym W tym ćwiczeniu należy zaprojektować prosty interfejs w trybie tekstowym o następujących opcjach: • Wprowadzanie nowego obiektu na listę zatrudnionych; • Usuwanie obiektu z listy; • Wypisywanie całej listy na ekran; • Przeszukiwanie listy; • Zapisywanie do pliku całej listy (użycie funkcji strumieniowych – do uzupełnienia na zajęciach 5); • Odczytywanie listy z pliku (użycie funkcji strumieniowych – do uzupełnienia na zajęciach 5); _____________________________________________________________________ 12 Katedra Podstaw Elektroniki Programowanie Komputerów - Studia dzienne – 2FD r.a. 2005/2006 semestr letni 13 Zajęcia 5: Rozbudowa projektu – cz. II: konstruktor domyślny, konstruktor kopiujący, , dynamiczna alokacja pamięci, funkcje operatorowe Zagadnienia z tego ćwiczenia obejmują umiejętności: • zdefiniowania konstruktora domyślnego (np. z argumentami domniemanymi); • ustawiania składowych klasy na liście inicjalizacyjnej konstruktora; • dynamicznego tworzenia tablic – przydział pamięci za pomocą operatora new; • zwalniania dynamicznie przydzielonej pamięci za pomocą operatora delete; • zdefiniowania konstruktora kopiującego; • zdefiniowania operatora przypisania; • zdefiniowania funkcji operatorowych według instrukcji w ćwiczeniu; • zdefiniowania zaprzyjaźnionych funkcji operatorowych (<<, >>) skojarzonych ze standardowymi strumieniami wyjścia, wejścia; • opracowania funkcji głównej tak, by demonstrowała (testowała) działanie poszczególnych funkcji składowych opracowanych klas. _____________________________________________________________________ 13 Katedra Podstaw Elektroniki Programowanie Komputerów - Studia dzienne – 2FD r.a. 2005/2006 semestr letni 14 Zajęcia 6, 7: Mechanizm dziedziczenia, funkcje wirtualne – cz. I, II. Zagadnienia z tego ćwiczenia obejmują umiejętności: • zdefiniowania konstruktora klasy pochodnej (wywołanie konstruktora klasy podstawowej); • przydziału/zwalniania pamięci dla tablicy wskaźników; • wykorzystania (użycia) zdefiniowanych funkcji klasy podstawowej w klasie pochodnej (w tym operatorowych); • zastosowania standardowych konwersji przy dziedziczeniu; • użycia mechanizmu wirtualności; • opracowania funkcji głównej tak, by demonstrowała (testowała) działanie poszczególnych funkcji. _____________________________________________________________________ 14 Katedra Podstaw Elektroniki Programowanie Komputerów - Studia dzienne – 2FD r.a. 2005/2006 semestr letni