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

Podobne dokumenty