Uploaded by Goia Daniel

Medii de proiectare laborator 1

advertisement
MPP – Laborator nr. 1
Laboratorul Nr. 1
La lansarea mediului Visual C++ este afişată fereastra Visual Studio.
Visual Studio a purtat numele de Developer Studio.
Acronimul IDE (Integrated Development Environment) este uneori întâlnit ca şi
referire la Visual Studio.
Visual Studio – interfaţa cu utilizatorul a lui Visual C++, suprafaţa de lucru.
Începerea unei noi aplicaţii presupune crearea unui nou proiect, folosit pentru
administrarea tuturor elementelor care compun un program Visual C++ şi care au
ca rezultat o aplicaţie Windows.
File  NewProject va afişa caseta de dialog NewProject.
Pentru specificarea tipului proiectului,
 în secţiunea Project types se selectează MFC,
 iar în secţiunea Templates, MFC Application, ce are ca efect crearea unui
proiect având ca rezultat un program executabil Windows standard.
1
MPP – Laborator nr. 1
Visual C++ este însoţit de biblioteca de clase de bază Microsoft.
MFC (Microsoft Foundation Classes) este o mulţime de clase predefinite.
 În secţiunea Name se introduce numele proiectului,
 iar la Location se precizează directorul în care vor fi situate fişierele
proiectului.
 În cadrul casetei de dialog NewProject se efectuează un clic pe OK pentru
a iniţia generarea proiectului. Se va deschide caseta de dialog MFC
Application Wizard. AppWizard are rolul de a crea un schelet de program
ce va putea fi extins ulterior.
Caseta de dialog MFC Application Wizard oferă, în secţiunea Application Type,
trei opţiuni pentru tipul de interfaţă a aplicaţiei:
 Single Document
 Multiple Documents
 Dialog Based
Selectăm ultima opţiune.
2
MPP – Laborator nr. 1
 În cadrul secţiunii Resource language se poate selecta limba care va fi
folosită pentru resurse.
 În secţiunea Generated Classes sunt confirmate detaliile proiectului ce
va fi creat de AppWizard: numele claselor C++ din proiect. Apoi se
efectuează un clic pe butonul Finish şi se deschide proiectul nou creat.
Secţiunea afişată în partea stângă a lui Visual Studio poartă denumirea de
secţiunea spaţiului de lucru. Această secţiune oferă paginile: Solution Explorer,
ClassView, Property Manager, ResourceView.
Revenirea la casetele de dialog cu opţiuni MFC Application Wizard în cadrul
unui proiect existent nu este posibilă.
Visual Studio oferă posibilitatea creării unei configuraţii de asamblare în două
variante: versiunea pentru depanare şi versiunea finală a unui fişier executabil.
Versiunea pentru depanare oferă posibilitatea inspectării codului executat şi
verificarea valorilor variabilelor.
3
MPP – Laborator nr. 1
Compilarea se realizează prin apăsarea tastei F7 sau selectarea opţiunii Build
Solution din meniul Build.
Pagina Output înfăţişeză informaţii privind procesul de asamblare.
Rularea aplicaţiei se face prin selectarea opţiunii Start Without Debugging din
meniul Debug sau se foloseşte combinaţia de taste Ctrl+F5.
Fereastra aplicaţiei create va conţine două butoane OK şi Cancel şi afişează un
text. Elementele vizuale ale unui proiect se numesc resurse (exemplu: casete de
dialog, pictograme, meniuri etc.).
Pentru adăugarea unui buton în cadrul machetei de dialog a proiectului, se va
deschide mai întâi macheta casetei de dialog astfel:
 Se selectează pagina ResourceView
 Se expandează lista de resurse şi catalogul Dialog
 În consecinţă apar doi identificatori:
o IDD_ABOUTBOX şi IDD_NumeProiect_DIALOG
 Printr-un dublu clic pe identificatorul IDD_NumeProiect_DIALOG se va
afişa macheta ferestrei de dialog principale a aplicaţiei.
4
MPP – Laborator nr. 1
Se va înlătura controlul etichetă TODO, se selectează un control buton din
caseta cu controale care se trage pe macheta ferestrei de dialog. Eticheta butonului
se poate modifica prin tastarea noii etichete fie direct, de la tastatură, fie se va
modifica secţiunea Caption, din fereastra Properties, cu condiţia ca butonul să fie
selectat (adică încadrat de un dreptunghi de formatare).
În dreapta ferestrei se va afişa secţiunea Properties pentru IDC_BUTTON1. În
cadrul secţiunii ID se tastează IDC_NumeNou (în acest caz IDC_PressMe).
Pentru a asocia un cod noului buton se procedează astfel:
 Clic cu butonul drept pe butonul nou creat
 Din meniul contextual afişat se selectează opţiunea AddEventHandler
 Se va deschide caseta de dialog Event Handler Wizard – Nume_proiect
 Se selectează BN_CLICKED din lista Message type, funcţia este adăugată
ca şi membru al clasei CNumeProiectDlg, iar în secţiunea Function handler
name se indică numele funcţiei, OnBnClickedNume_funcţie.
 Clic pe butonul Add and Edit
5
MPP – Laborator nr. 1
În acest moment se va adăuga un cod. De exemplu:
void CNumeProiectDlg::OnBnClickedPressMe()
{
//TODO: Add zour control notification handler code
MessageBox((LPCWSTR)L”Thanks, I needed that !”);
}
Aplicaţia nr. 1: Să se realizeze o aplicaţie care verifică dacă un număr este
prim. Reamintim că un număr este prim dacă se divide numai prin 1 şi prin el
însuşi. Dacă numărul nu este prim se va preciza primul divizor propriu (găsit) al
acestuia.
Rezolvarea problemei presupune două etape:
 Proiectarea intefeţei;
 Realizarea funcţionalităţii aplicaţiei.
6
MPP – Laborator nr. 1
După crearea resursei dialog, se vor adăuga în ea controalele corespunzătoare:
[1] o casetă text static (Static Text)
[2] un câmp de editare (Edit Control)
[3, 4] două butoane de comandă (Button)
[5] butonul de comandă Cancel, creat de MFC Application Wizard (căruia îi
modificăm aspectul).
7
MPP – Laborator nr. 1
Modificăm proprietăţile controalelor:
Se selectează controlul;
Modificările se vor face în fereastra Properties din dreapta ecranului;
Pentru câmpul de editare utilizăm identificatorul IDC_NUMAR;
Pentru butonul de comandă Resetare – IDC_RESETARE;
Pentru butonul de comandă Verfică dacă este prim – IDC_VERIFICA.
Maparea de variabile membru peste controalele resursei dialog:
Se selectează controlul;
Se efectuează clic dreapta pe control, iar din meniul afişat se selectează
Add Variable ...;
Se va deschide căsuţa de dialog Add Member Variable Wizard, în cadrul
căreia selectăm în secţiunea Category – Value, la Variable type – int, la
Variable name – Nr.
Apoi se apasă butonul Finish.
8
MPP – Laborator nr. 1
Interceptarea mesajelor prin adăugarea handlerelor:
Se selectează controlul de tip Button;
Se efectuează clic dreapta pe acesta, iar din meniul afişat se selectează
AddEventHandler..., ce are ca efect deschiderea căsuţei de dialog Event
Handler Wizard;
Se selectează BN_CLICKED din lista Message type, funcţia este
adăugată ca şi membru al clasei CNumeProiectDlg, iar în secţiunea Function
handler name se indică numele funcţiei, OnBnClickedNume_funcţie;
Clic apoi pe butonul Add and Edit
Folosim metoda UpdateData() (moştenită de clasa CNumeProiectDlg de la clasa
de bază CDialog) – care asigură transferul de date de la controale la variabilele
mapate. Are doi parametri: TRUE (valoarea implicită) şi FALSE.
Control
TRUE
----------------------------------------
Variabilă mapată
--------------------------------------FALSE
9
MPP – Laborator nr. 1
#include<math.h>
void CNumar_primDlg::OnBnClickedVerifica()
{
// TODO: Add your control notification handler code here
UpdateData();
CString text;
int n;
n=Nr;
for(int i=2;i<=sqrt((float)n);i++)
if(n%i==0)
{
text.Format((LPCWSTR)L"Numarul %d nu este prim (se divide
prin %d)",n,i);
AfxMessageBox(text);
return;
}
text.Format((LPCWSTR)L"Numarul %d este prim",n);
AfxMessageBox(text);
UpdateData(FALSE);
}
10
MPP – Laborator nr. 1
Pentru butonul Resetare, având ID-ul IDC_RESETARE, scriem codul:
void CNumar_primDlg::OnBnClickedResetare()
{
// TODO: Add your control notification handler code here
Nr=0;
UpdateData(FALSE);
}
Aplicaţie propusă:
1. Să se calculeze suma divizorilor proprii ai numărului dat (se observă imediat
că dacă această sumă este 0, numărul este prim). Exemplu: pentru numărul
12 suma va fi 15=2+3+4+6.
2. Să se determine cel mai mic număr prim cel puţin egal cu numărul dat.
Exemplu: dacă se dă numărul 21, numărul prim căutat va fi 23.
3. Să se determine cel mai mare număr prim cel mult egal cu numărul dat.
Exemplu: dacă se dă numărul 21, numărul prim căutat va fi 19.
11
Download