Jerzy Kisielewicz
Jakub Gładysz
Karol Puchała
Instrukcja nr 1 do Laboratorium
z Programowania Obiektowego
Zaj
ę
cia 1-5 Tydzie
ń
INEW002L
Semestr 2
Kierunek:
Informatyka (INF)
Teleinformatyka (TIN)
Studium Kształcenia Podstawowego (SKP)
Wrocław 2009
Zaj
ę
cia Laboratoryjne składaj
ą
si
ę
z 15 zaj
ęć
po 90 minut ka
ż
de. Podczas
pierwszych zaj
ęć
prowadz
ą
cy winien przeprowadzi
ć
szkolenie BHP oraz
zapozna
ć
studentów z Regulaminem Pracowni. Warunkiem uczestnictwa w
zaj
ę
ciach jest odbycie w/w szkolenia i po
ś
wiadczenie go czytelnym podpisem.
Na ka
ż
de zaj
ę
cia przygotowana b
ę
dzie instrukcja laboratoryjna z zestawem
zada
ń
do zrobienia oraz wskazówkami. Zadania z bie
żą
cego laboratorium
powinny by
ć
oddane na nast
ę
pne zaj
ę
cia. Oddanie zada
ń
po terminie skutkuje
obni
ż
eniem oceny za dane laboratorium. Oprócz tego na niektórych zaj
ę
ciach
b
ę
dzie sprawdzana wiedza Studentów poprzez rozwi
ą
zanie zada
ń
testowych w
systemie Moodle (w czasie 6 laboratoriów). Tematyka zada
ń
testowych na dane
laboratorium znajduje si
ę
w Tabeli na nast
ę
pnej stronie. W przypadku oceny
niedostatecznej z testu, student dopuszczony jest do laboratorium, przy czym na
kolejnych zaj
ę
ciach b
ę
dzie zobowi
ą
zany do zaliczenia tego testu. Ocena za test
b
ę
dzie wówczas
ś
redni
ą
punktów z pierwszego oraz drugiego podej
ś
cia.
Oprócz list zada
ń
ka
ż
dy student otrzyma Projekt Indywidualny, który powinien
zosta
ć
zrealizowany najpó
ź
niej na przedostatnie zaj
ę
cia laboratoryjne.
Propozycje tematów semestralnych znajduj
ą
si
ę
w instrukcji nr 4 i
zaprezentowane zostan
ą
podczas drugich zaj
ęć
laboratoryjnych. Zadania
ostatecznie przydzielone powinny zosta
ć
do czwartych zaj
ęć
laboratoryjnych.
Mo
ż
liwa jest własna propozycja tematu semestralnego, przy czym zawarto
ść
Projektu musi pokrywa
ć
si
ę
z tematyk
ą
wykładu oraz laboratorium.
Warunkiem koniecznym zaliczenia przedmiotu jest:
1) Ucz
ę
szczanie
na
zaj
ę
cia
(mo
ż
liwe
jedynie
2
nieobecno
ś
ci
nieusprawiedliwione),
2) Zrealizowanie WSZYSTKICH zada
ń
przewidzianych do zrobienia w czasie
laboratorium (w czasie zaj
ęć
mog
ą
by
ć
zaproponowane dodatkowe
zadania na ocen
ę
celuj
ą
c
ą
dla ochotników),
3) Zaliczenie zada
ń
testowych z danej tematyki laboratorium,
4) Zrealizowanie indywidualnego Zadania Projektowego.
Szczegółowe zasady zalicze
ń
i proporcje przedstawia prowadz
ą
cy.
Obowi
ą
zuj
ą
ca Platforma Programowa to Visual Studio C++ 2008.
Zaliczenie laboratorium jest warunkiem koniecznym dopuszczenia do
egzaminu z wykładu!
Program laboratorium przedstawia si
ę
nast
ę
puj
ą
co:
Lab
.
Instrukcja
Temat Laboratorium
Test
1
1
Wst
ę
p. Uruchomienie prostej aplikacji terminalowej
2
1
Prosta aplikacja terminalowa. Formatowanie
obiektowego wej
ś
cia i wyj
ś
cia
Propozycje programów semestralnych
Podstawy C,
Wska
ź
niki i struktury
3
1
Definicja prostej klasy (punkt, prostok
ą
t, zesp, itp).
Obserwacja konstruktorów i destruktorów
4
1
Aplikacja dialogowa – budowa interfejsu u
ż
ytkownika
+ przydział tematów semestralnych
Podstawy C++
5
1
Rozbudowa aplikacji dialogowej – programowanie
obsługi wybranych kontrolek
6
2
Klasa z alokacj
ą
pami
ę
ci – definiowanie
konstruktorów, destruktora i operatora przypisania
Klasy i ich metody
7
2
Przeci
ąż
anie operatorów. Definiowanie klas
pochodnych, dziedziczenie proste i wielobazowe
8
2
(kontynuacja
ć
wiczenia 7)
Klasy pochodne,
Diedziczenie,
Polimorfizm
9
2
Funkcje wirtualne, klasy abstrakcyjne
10
3
Aplikacja dialogowa
11
3
Aplikacja SDI
Windows (zdarzenia,
aplikacje dialogowe i SDI)
12
3
Aplikacja SDI (cd.)
13
4
Program semestralny
UML, Wyj
ą
tki
14
4
Program semestralny (c.d.)
15
4
Program semestralny (c.d.) i wpisy
Ć
wiczenie 1. Wst
ę
p.
Uruchomienie prostej aplikacji terminalowej.
Propozycja programów semestralnych.
Celem
ć
wiczenia jest poznanie
ś
rodowiska kompilatora Microsoft Visual Studio
2008 Professional C++, sposobu tworzenia aplikacji terminalowych.
Zapozna
ć
si
ę
z edytorem i kompilatorem.
1. Wybra
ć
z menu File|New|Projects.
Wybra
ć
lokalizacj
ę
, czyli katalog, w którym automatycznie powstanie
podkatalog (przestrze
ń
robocza tworzonego programu -> ang location). W
przestrzeni roboczej b
ę
d
ą
umieszczone pliki tworzonego programu.
Wpisa
ć
nazw
ę
projektu (b
ę
dzie to nazwa podkatalogu i równocze
ś
nie
programu) -> name.
Z listy projektów wybra
ć
: Visual C++|Win32| Win32 Console Application i
nacisn
ąć
„OK”.
2. nacisn
ąć
klawisz „Next”, nast
ę
pnie wybra
ć
typ aplikacji „Console Application”
i nacisn
ąć
klawisz „Finish”.
3. W funkcji _tmain wpisa
ć
cout <<„Własny tekst”<<endl;
4. Skompilowa
ć
i uruchomi
ć
wybran
ą
aplikacj
ę
. Wybra
ć
z menu: Build|Build ...,
a nast
ę
pnie po poprawnej kompilacji uruchomi
ć
program wybieraj
ą
c:
Build|Execute ... .
Wszystkie programy powinno si
ę
uruchamia
ć
dopisuj
ą
c do takiego programu kolejne
instrukcje i sprawdzaj
ą
c, co pewien czas, czy tworzony niekompletny program si
ę
kompiluje i czy prawidłowo si
ę
wykonuje. Podstawowa idea polega na tym, aby cały
czas pracowa
ć
z „chodz
ą
cym” programem
Ć
wiczenie 2. Definicja prostej klasy.
Obserwacja konstruktorów i destruktorów .
Celem
ć
wiczenia jest poznanie zasad formatowania obiektowego wej
ś
cia i
wyj
ś
cia.
Zadania laboratoryjne (czas realizacji: 1 tydzie
ń
)
1.1. Napisz i uruchom program, który wczyta
1
kilka liczb rzeczywistych do tablicy
TAB[Max] (Max=1000), nast
ę
pnie wyprowadzi te liczby w wyrównanej
kolumnie. W programie kontroluj, aby zadany rozmiar tablicy nie przekroczył
maksymalnego.
1.2. W programie z zadania 1.1 zredaguj precyzj
ę
wyprowadzanych liczb tak, aby
była ona zale
ż
na od
ż
yczenia u
ż
ytkownika. Jako dane wprowadzaj liczby o
ró
ż
nej liczbie cyfr po kropce dziesi
ę
tnej oraz liczby całkowite.
1.3. Sformatuj wyprowadzane liczby tak, aby miały one jednakow
ą
zadan
ą
liczb
ę
cyfr po kropce oraz aby kropki dziesi
ę
tne były pisane w jednej kolumnie.
1.4. Wyprowadzaj ka
ż
d
ą
liczb
ę
dwukrotnie: w notacji zwykłej i naukowej Np. w
postaci „TAB[7]= 3.20 3.20E+00”.
1.5. Zaproponuj konwersje wprowadzonych liczb do postaci ósemkowej oraz
szesnastkowej.
1.6. Jakie pliki zawiera przestrze
ń
robocza programu i jaka jest zawarto
ść
pliku
StdAfx.h?
*Do wczytywania liczb nale
ż
y u
ż
ywa
ć
obiektowych operatorów wej
ś
cia.
Dodatkowo mile widziane b
ę
dzie wczytywanie danych z pliku (strumienie
plikowe).
1
Do wczytywania liczb nale
ż
y u
ż
ywa
ć
obiektowych operatorów wej
ś
cia. Dodatkowo mile widziane
b
ę
dzie wczytywanie danych z pliku (strumienie plikowe).
Ć
wiczenie 3. Definicja prostej klasy.
Obserwacja konstruktorów i destruktorów .
Zadania laboratoryjne (czas realizacji: 1 tydzie
ń
)
Celem
ć
wiczenia jest poznanie zasad definiowania oraz obserwacja konstruktorów i
destruktorów poprzez tworzenie prostych obiektów.
1. Napisz w j
ę
zyku obiektowym C++ nast
ę
puj
ą
cy program:
Stwórz klas
ę
definiuj
ą
c
ą
okr
ę
g. Ka
ż
dy okr
ę
g składa si
ę
ze współrz
ę
dnych
ś
rodka
oraz promienia (współrz
ę
dne
ś
rodka x,y powinny by
ć
zmiennymi całkowitymi,
promie
ń
r – liczb
ą
rzeczywist
ą
nieujemn
ą
). Dokonaj wczytania liczb ze sprawdzeniem
poprawno
ś
ci (r>=0).
W programie obiektowym u
ż
yj konstruktora z parametrami do przypisania
warto
ś
ci pocz
ą
tkowych na standardowe współrz
ę
dne
ś
rodka S(0,0) oraz promie
ń
r=1. U
ż
yj konstruktora z tzw. list
ą
inicjalizuj
ą
c
ą
. Oprócz konstruktora z
parametrami
zdefiniuj
oraz
zbadaj
przykład
u
ż
ycia
konstruktora
bezparametrowego
oraz
konstruktora
z
niepełn
ą
liczb
ą
parametrów.
Wy
ś
wietleniem komunikatu na ekran informuj u
ż
ytkownika który konstruktor
został wywołany. Napisz funkcje obliczaj
ą
ce Pole oraz Obwód okr
ę
gu oraz
wyprowadzaj
ą
ce wynik z dokładno
ś
ci
ą
do 0,001. Wprowad
ź
dane dwóch okr
ę
gów
oraz zbadaj czy wprowadzone okr
ę
gi maj
ą
punkty wspólne. Program powinien
poinformowa
ć
o tym u
ż
ytkownika w postaci wyprowadzenia komunikatu o ilo
ś
ci
punktów wspólnych (zero, jeden, dwa lub niesko
ń
czenie wiele).
2. Niech obiektem b
ę
dzie klasa Student posiadaj
ą
ca nast
ę
puj
ą
ce pola: Imie (typu
String), Nazwisko (String) , Nr_albumu (integer) , Srednia (float), Przedmioty
(dynamiczna tablica typu String). Na pocz
ą
tku programu u
ż
ytkownik podaje liczb
ę
tworzonych obiektów K i zostaje przydzielona pami
ęć
na tablic
ę
K obiektów typu
Student. Nast
ę
pnie nale
ż
y wczyta
ć
dane poszczególnego Obiektu z klawiatury. W
czasie wczytywania ka
ż
dego obiektu powinno znale
źć
si
ę
zapytanie o ilo
ść
Przedmiotów N dla danego obiektu Student, a nast
ę
pnie dynamicznie przydzielona
pami
ęć
na N Przedmiotów oraz ich wczytanie. Nale
ż
y stworzy
ć
Menu umo
ż
liwiaj
ą
ce:
a) Dodanie i wprowadzenie danych nowego studenta (zwi
ę
kszaj
ą
c pami
ęć
o 1 obiekt
klasy student),
b) Wy
ś
wietlenie aktualnego stanu tablicy,
c) Zapisanie zawarto
ś
ci bazy do pliku student.txt (
ś
rednia z dokładno
ś
ci
ą
do 2
miejsc po przecinku, nr indeksu w notacji szesnastkowej),
d) Skasowanie całej zawarto
ś
ci i zako
ń
czenie programu.
Program powinien działa
ć
w p
ę
tli a zwi
ę
kszanie tablicy obiektów klasy student
powinno odbywa
ć
si
ę
dynamicznie z chwil
ą
wprowadzania nowego studenta.
Zaproponuj odpowiedni konstruktor, destruktor, do wypisywania danych u
ż
yj
przeci
ąż
onego operatora <<. Czy w zadaniu mo
ż
na u
ż
y
ć
destruktora domy
ś
lnego
czy konieczne b
ę
dzie u
ż
ycie konstruktora jawnego?
Ć
wiczenie 4. Aplikacja dialogowa – budowa interfejsu u
ż
ytkownika
Przydział tematów semestralnych
Zadania laboratoryjne (czas realizacji: 1 tydzie
ń
)
Celem
ć
wiczenia jest poznanie sposobu tworzenia aplikacji windowsowych MFC
oraz zasad umieszczania i programowania podstawowych kontrolek w oknie
dialogowym.
Uruchomi
ć
program, który w zale
ż
no
ś
ci od wyboru: doda, odejmie, pomno
ż
y lub
podzieli dwie liczby. W tym celu nale
ż
y wykona
ć
poni
ż
sze kroki.
1. Wybra
ć
z menu File|New|Projects.
a. Wybra
ć
lokalizacj
ę
, czyli katalog, w którym automatycznie powstanie
podkatalog (przestrze
ń
robocza tworzonego programu -> ang
location). W
przestrzeni
roboczej
b
ę
d
ą
umieszczone
pliki
tworzonego programu.
b. Wpisa
ć
nazw
ę
projektu
(b
ę
dzie
to
nazwa
podkatalogu
i
równocze
ś
nie programu) -> name.
c. Z listy projektów wybra
ć
: VisualC++|MFC|MFC Application. i
nacisn
ąć
„OK”.
2. Step1 – Nacisn
ąć
„Next”. Wybra
ć
typ aplikacji „Dialog based” i nacisn
ąć
klawisz „Finish”.
3. Skompilowa
ć
i uruchomi
ć
wybran
ą
aplikacj
ę
. Wybra
ć
z menu: Build|Build…,
a nast
ę
pnie po poprawnej kompilacji uruchomi
ć
program wybieraj
ą
c:
Debug| Start Without Debugging ... .
Powieli si
ę
okno z nazw
ą
programu – zako
ń
czy
ć
program naciskaj
ą
c
klawisz „OK.” lub „Cancel”.
4. Klikn
ąć
napis “TODO: Place dialog controls here.” ( kontrolka „Static Textt”
) Przesun
ąć
okienko z tym tekstem do górnej kraw
ę
dzi okna programu.
Klikn
ąć
prawym klawiszem na ww. tekst i wybra
ć
„Properties”. W okienku
wła
ś
ciwo
ś
ci w linii edycyjnej „Appearance|Caption” wpisa
ć
inny dowolny
tekst. W zakładce „Align Textt” mo
ż
na zmieni
ć
zmieni
ć
poło
ż
enie tekstu.
5. Z okienka „Toolbox” przeci
ą
gn
ąć
myszk
ą
ikony Aa (Static Textt) oraz ab|
(Edit Box) na wybrane miejsca obok siebie w okienku programu. Jak w p. 4
wprowadzi
ć
do kontrolki „Static Textt” tekst z opisem pierwszej danej, która
b
ę
dzie wprowadzana do linii edycyjnej „Edit Box”. Powtórzy
ć
(dwa razy)
czynno
ś
ci z p. 5 dla drugiej danej i dla wyniku. Uruchomi
ć
program.
6. We wła
ś
ciwo
ś
ciach linii edycyjnej wyniku wybra
ć
zakładk
ę
„Behavior” i
ustawi
ć
opcj
ę
„Read-only” na TRUE.
7. Zdefiniuj obsług
ę
zdarze
ń
w pierwszej linii edycyjnej. Kliknij jej ikon
ę
prawym klawiszem i wybierz „Add Event Handler…”. W okienku „Message
type:” pod
ś
wietl EN_KILLFOCUS (zdarzenie wyj
ś
cia mysz
ą
z obszaru linii
edycyjnej). Naci
ś
nij klawisz „Add and Edit” i zaakceptuj nazw
ę
funkcji.
Pojawi si
ę
okno do edycji kodu
ź
ródłowego w C++. Wpisz nast
ę
puj
ą
c
ą
zawarto
ść
funkcji obsługi zdarzenia (je
ś
li IDC_EDIT1 identyfikuje t
ę
lini
ę
edycyjn
ą
– sprawdzisz to w jej wła
ś
ciwo
ś
ciach).
CEdit* pEdit=(CEdit*)GetDlgItem(IDC_EDIT1);
pEdit->GetWindowTextt(m_Text);
a=atof(m_Text);
m_Text.Format("%.*lf", prec, a);
pEdit->SetWindowTextt(m_Text);
8. Aby wróci
ć
do edycji graficznej w lewym oknie (w zakładce „Res..”) rozwi
ń
drzewo i gał
ąź
„Dialog” oraz wybierz (dwuklik) okno dialogowe programu
(IDE_Nazwa_Projektu_DIALOG). Powtórz to samo dla drugiej linii edycyjnej
(z identyfikatorem IDC_EDIT2) u
ż
ywaj
ą
c zmiennej b w miejsce zmiennej a.
Skompiluj program. Bł
ę
dy kompilacji wykazuj
ą
brak definicji zmiennych:
m_Text, a, prec, b.
9. Zdefiniuj ww. zmienne w klasie okna dialogowego. Kliknij prawym
klawiszem nazw
ę
klasy okna dialogowego w zakładce „Clas..” i wybierz
„Add|Member Variable”. Dodobnie dodaj zmienn
ą
prec typu int oraz
zmienne a, b typu double.
10. Dodaj zmienn
ą
zabezpieczon
ą
(Protected) m_Text typu CString do klasy
dialogowej. W tym celu przejd
ź
do zakładki Class View. Wykonaj dwuklik
na klas
ę
dialogow
ą
- przejdziesz do edycji tej funkcji. Po instrukcji double
b
;
dopisz inicjacje zmiennej CString m_Text;
11. Zmie
ń
system kodowania znaków. Przy otwartym projekcie wejd
ź
w
Project->Properties->Configuration
Properties->General,
znajd
ź
pole
Character Set i wybierz Use Multi-Byte Character Set.
12. Klikinij na klas
ę
dialogowa. W poni
ż
ej uka
żą
si
ę
funkcje tej kasy. Wykonaj
dwuklik na funkcji „OnInitDialog()” – przejdziesz do edycji tej funkcji. Przed
instrukcj
ą
return TRUE; dopisz inicjacj
ę
zmiennej prec – dopisz instrukcj
ę
prec=3;. Skompiluj i uruchom program. Spróbuj wpisywa
ć
dane.
13. W podobny sposób zainicjuj zmienne a i b oraz linie edycyjne wpisuj
ą
c do
funkcji „OnInitDialog” instrukcje:
a=b=1;
m_Text.Format("%.*lf", prec, a);
((CEdit*)GetDlgItem(IDC_EDIT1))->SetWindowTextt(m_Text);
((CEdit*)GetDlgItem(IDC_EDIT2))->SetWindowTextt(m_Text);
14. Dodaj funkcj
ę
obsługi klikni
ę
cia klawisza „OK.”. W edytorze graficznym
kliknij ten klawisz prawym klawiszem myszki i wybierz „Add Event
Handler…”., a nast
ę
pnie klawisz „Add and Edit” i zaakceptuj nazw
ę
funkcji.
W edytorze tekstu
ź
ródłowego usu
ń
instrukcj
ę
OnOK(); i na jej miejsce
wpisz instrukcje:
CEdit* pEdit=(CEdit*)GetDlgItem(IDC_EDIT3);
double wynik=a+b;
m_Text.Format("%.*lf", prec,wynik);
pEdit->SetWindowTextt(m_Text);
15. Przetestuj działanie programu.
16. Do okna programu (edycja graficzna) wstaw kontrolk
ę
„Group Box” i
zwi
ę
ksz jej wymiary. W obszar kontrolki wstaw jeden pod drugim 4 przyciski
„Radio Button”. Zaznacz te przyciski i kliknij prawym klawiszem myszki, a
nast
ę
pnie wyrównaj poło
ż
enie przycisków wybieraj
ą
c „Align Left Edges”.
17. Podobnie jak w p. 4 zaopatrz przyciski w teksty; „Dodaj”, „Odejmij”,
„Pomnó
ż
” i „Podziel”. W oknie wła
ś
ciwo
ś
ci pierwszego przycisku („Dodaj”)
zaznacz opcj
ę
„Group” -> TRUE Dla tego przycisku stwórz zmienn
ą
m_zadanie typu int – klikaj
ą
c go prawym klawiszem i wybieraj
ą
c „Add
Variable…”. W „Add Member Variable Wizard” zmie
ń
„Category” na „Value”.
Nast
ę
pnie ustaw „Variable Type ” na typ całkowity „int”. nadaj nazw
ę
zmiennej w okienku „Variable Name” i naci
ś
nij „OK”.
18. W konstruktorze klasy okna dialogowego sprawd
ź
warto
ść
pocz
ą
tkow
ą
zmiennej m_zadanie. Je
ż
eli warto
ść
b
ę
dzie ró
ż
na od 0, zmie
ń
j
ą
na „0”.
Nast
ę
pnie sprawd
ź
działanie programu.
19. Zmodyfikuj działanie funkcji obsługi naci
ś
ni
ę
cia klawisza OK. tak, aby wynik
zale
ż
ał od warto
ś
ci zmiennej m_zadanie (po wykonaniu funkcji
UpdateData(), aktualizowane s
ą
warto
ś
ci zmiennych stowarzyszonych z
przyciskami i zmienna m_zadanie otrzymuje warto
ś
ci: 0 – dodawanie, 1 –
odejmowanie, 2 – mno
ż
enie i 3 – dzielenie).
20. Umie
ść
w oknie dialogowym tekst statyczny i lini
ę
edycyjn
ą
do
wprowadzenia wymaganej liczby cyfr ułamkowych – precyzji. Napisz
funkcj
ę
obsługi tej kontrolki „Edit Control”, aby wprowadzon
ą
liczb
ę
całkowit
ą
podstawia
ć
do zmiennej prec zdefiniowanej w klasie okna
dialogowego.
Ć
wiczenie 5. .Rozbudowa aplikacji dialogowej – programowanie
obsługi wybranych kontrolek
Wielu kontrolkom ( np.: Edit Control, Button, Check Box, Radio Button, Combo
Box, List Box,…) mo
ż
na przypisa
ć
zmienne zgodne z typem wprowadzanych
danych. Np. linii edycyjnej "Edit Control" mo
ż
na przypisa
ć
zmienn
ą
tekstow
ą
typu
CString, aby wprowadza
ć
teksty, zmienn
ą
typu int, aby wprowadza
ć
liczby
całkowite, zmienn
ą
typu double itp. Zmiennym mo
ż
na ogranicza
ć
zakres
akceptowanych danych. Np. mo
ż
na okre
ś
li
ć
rozmiar zmiennej tekstowej
ograniczaj
ą
c długo
ść
tekstu. Zmiennym liczbowym mo
ż
na okre
ś
li
ć
minimaln
ą
i
maksymaln
ą
warto
ść
.
Aby przekaza
ć
dane z kontrolek do przypisanych im zmiennych, nale
ż
y
wywoła
ć
funkcj
ę
UpdateData() z domy
ś
lnym argumentem TRUE.
Aby przekaza
ć
dane ze zmiennych do przypisanych im kontrolek, nale
ż
y wywoła
ć
funkcj
ę
UpdateData(FALSE).
Zadania laboratoryjne (czas realizacji: 1 tydzie
ń
)
Celem
ć
wiczenia jest doskonalenie umiej
ę
tno
ś
ci posługiwania si
ę
kontrolkami.
Zadanie 1
1. W programie z
ć
wiczenia 4 doda
ć
do linii edycyjnej do wprowadzania precyzji
zmienn
ą
m_prec typu int i ograniczy
ć
zakres wprowadzanych warto
ś
ci do
przedziału od 0 do 8. W tym celu klikaj
ą
c prawym klawiszem na kontrolk
ę
wybieramy Add Variable…”. W powstałym oknie „Add Member Variable
Wizard” zmieniamy „Category” na „Value”. Nast
ę
pnie ustaw „Variable Type ”
na typ całkowity „int”. nadaj nazw
ę
zmiennej w okienku „Variable Name”.
Nast
ę
pnie okre
ś
lamy minimaln
ą
i maksymaln
ą
warto
ść
. i naci
ś
nij „OK”.
Na koniec zmieniamy zawarto
ść
funkcji obsługi kontrolki na:
UpdateData();
prec=m_prec;
2. We wła
ś
ciwo
ś
ciach klawiszy „OK.” i „Cancel” zmie
ń
teksty na klawiszach na
„Oblicz” i „Koniec”. Wstaw pocz
ą
tkowy napis „3” do kontrolki wprowadzania
precyzji – w funkcji „OnInitDialog” w miejsce linii prec=3; wstaw linie
m_prec=prec=3;
UpdateData(FALSE);
3. We wła
ś
ciwo
ś
ciach klawisza „Oblicz” zmie
ń
tekst na nim na „Dodaj”. Do
kontrolek Radio Button dodaj funkcje obsługi zdarzenia BN_CLICKED. W
ka
ż
dej funkcji zmieniaj tekst na klawiszu na zgodny z wybranym przyciskiem.
Np. aby zmieni
ć
tekst na „Podziel”, nale
ż
y w funkcji dodanej do przycisku
„Odejmij” wpisa
ć
instrukcj
ę
((CEdit*)GetDlgItem(IDOK))->SetWindowText("Podziel");
gdzie IDOK jest identyfikatorem klawisza.
4. Dopisz pokazanie okna klasy CAboutDlg zdefiniowanego automatycznie w
Twoim programie. Do tego celu u
ż
yj dodatkowego klawisza, któremu nadaj
wła
ś
ciwo
ś
ci Caption: „O Programie” oraz identyfikator IDC_ABOUT. Niech
funkcja obsługi zdarzenia BN_CLICKED utworzy obiekt klasy CAboutDlg i
wykona na nim funkcj
ę
DoModal().
Zadanie 2
1. Stwórz now
ą
aplikacj
ę
MFC i napisz funkcje realizuj
ą
ce nast
ę
puj
ą
ce
operacje Stwórz 2 pola umo
ż
liwiaj
ą
ce wprowadzenie dwóch liczb
naturalnych n i k z zakresu <0-100> oraz (n>=k) a nast
ę
pnie napisz 4
funkcje licz
ą
ce:
a) silnie podanej liczby n lub k*
b) kombinacje (n po k)
c) n-t
ą
lub k-t
ą
liczb
ę
pierwsz
ą
*
d) n
k
*) Nale
ż
y u
ż
ytkownikowi umo
ż
liwi
ć
wybór
2
Stwórz pole umo
ż
liwiaj
ą
ce wprowadzenie tekstu (
ś
cie
ż
ki do pliku
tekstowego - np. dane.txt), w którym b
ę
dzie zawarta w pierwszej linii ilo
ść
elementów tablicy A, a w drugiej i nast
ę
pnych liczby naturalne oddzielone
znakiem spacji. Odczytaj ilo
ść
liczb, a nast
ę
pnie stwórz dynamiczn
ą
tablic
ę
integer wielko
ś
ci A i wpisz do niej elementy z pliku dane.txt. Na danych z
pliku dokonaj nast
ę
puj
ą
cych operacji:
a) znajd
ź
element maksymalny oraz minimalny,
b) rozpi
ę
to
ść
danych, czyli ró
ż
nice pomi
ę
dzy elementem max a min,
c) policz warto
ść
ś
redni
ą
elementów z dokładno
ś
ci
ą
do 0.01.
Nast
ę
pnie zapisz te warto
ś
ci do pliku wyj
ś
ciowego wyniki.txt – ka
ż
d
ą
policzon
ą
warto
ść
w osobnej linii.