background image

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 

background image

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 

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! 

background image

Program laboratorium przedstawia si

ę

 nast

ę

puj

ą

co:  

Lab

Instrukcja 

Temat Laboratorium 

Test 

Wst

ę

p. Uruchomienie prostej aplikacji terminalowej

 

 

Prosta aplikacja terminalowa. Formatowanie 
obiektowego wej

ś

cia i wyj

ś

cia 

Propozycje programów semestralnych 

Podstawy C,  
Wska

ź

niki i struktury 

 

Definicja prostej klasy (punkt, prostok

ą

t, zesp, itp). 

Obserwacja konstruktorów i destruktorów

 

 

Aplikacja dialogowa – budowa interfejsu u

ż

ytkownika 

+ przydział tematów semestralnych

 

Podstawy C++

 

Rozbudowa aplikacji dialogowej – programowanie 
obsługi wybranych kontrolek

 

 

Klasa z alokacj

ą

 pami

ę

ci – definiowanie 

konstruktorów, destruktora i operatora przypisania

 

Klasy i ich metody

 

Przeci

ąż

anie operatorów. Definiowanie klas 

pochodnych, dziedziczenie proste i wielobazowe

 

 

(kontynuacja 

ć

wiczenia 7)

 

Klasy pochodne, 
Diedziczenie, 
Polimorfizm

 

Funkcje wirtualne, klasy abstrakcyjne

 

 

10 

Aplikacja dialogowa

 

 

11 

Aplikacja SDI

 

Windows (zdarzenia, 
aplikacje dialogowe i SDI) 

 

12 

Aplikacja SDI (cd.)

 

 

13 

Program semestralny

 

UML, Wyj

ą

tki

 

14 

Program semestralny (c.d.)

 

 

15 

Program semestralny (c.d.) i wpisy

 

 

 

background image

Ć

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 

background image

Ć

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 

ż

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). 

 

background image

Ć

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 

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 

background image

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?  

 

background image

Ć

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 

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

ą

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.  

background image

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;

 

 

background image

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”. 

background image

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. 

background image

Ć

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

ż

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; 

background image

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 lub k* 

b)  kombinacje (n po k

c)  n-t

ą

 lub k-t

ą

 liczb

ę

 pierwsz

ą

d)  n

 

*) Nale

ż

y u

ż

ytkownikowi umo

ż

liwi

ć

 wybór  

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

ę

 

background image

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.