Generalizarea este mama invatarii. Introducere în limbajul C

Tutorial pentru programarea în C++ folosind Borland C++ Builder 5.0 - Bobrovsky S. - 2001

Cartea a fost pregătită de redactorii I-Press la solicitarea editurii
Grup de pregătire a publicației:
Redactor-șef: Serghei Simonovici
Editor științific: Georgy Evseev
Editor literar: Irina Simonovici
Aspect computer: Irina Simonovich
Corector: Elena Sorokina

Dess com
Apăs
Moscova - 2001

ISBN 5-93650-013-6 („DESS KOM*”)
Bobrovsky SI, 2001
Colegiul editorial „I-Press”, 2001
Editura „DESS KOM”, 2001
ID licență nr. 00219 din 10/11/99. Semnat pentru publicare la 10 noiembrie 2000.
Format 70x100/16. Imprimare offset. Pech. l. 17. Adăugați. tiraj 1000. Ordin 1064
SRL „DESS COM”, 105484. Moscova, st. 16 Parkovaya, 21, bldg. 1.
Imprimat din folii transparente gata făcute
la Tipografia Academică „Știință” a Academiei Ruse de Științe
199034, Sankt Petersburg, 9 Line, 12

Conţinut

Introducere

Ce este un limbaj de programare?
Ce este un compilator?
De ce C++?
Ce este programarea vizuală?
De ce Borland C++ Builder?
Ce fel de computer avem nevoie?

1. Prima cunostinta

Instalarea Borland C++Builder
Lansarea C++Builder
Mediu de dezvoltare integrat
Componentele principale ale Borland C++Builder
Fereastra principală C++Builder
Designer vizual al formularelor de lucru
Ce este forma?
De la componente de formular la controale de program
Forme principale și suplimentare
Inspector de obiecte
Proprietăți obiect
Evenimente de program și sistem
Editor de programe
Editor sursă

2. Pornire rapidă

Învață să lucrezi cu componente vizuale
Componente vizuale
Componente non-vizuale
Realizarea unui calculator valutar
Editați componenta (câmp de intrare)
Componenta Etichetă
Componenta butonului
Salvați proiectul
Să începem programarea
Variabile
Tip variabil
Cum sunt create variabilele?
Cuvinte rezervate C++
Ordinea definirii variabilelor
Comentarii
Cum să obțineți un șir dintr-un câmp de intrare?
Caracteristici standard C++Builder
Tipul funcției
Stocarea valorii într-o variabilă
Reguli pentru scrierea operatorilor C++
Afișarea rezultatului pe ecran
Crearea primului nostru program de lucru
Compilarea unui program
Construirea programului
Pornirea programului
Îmbunătățirea calculatorului
Transformarea rublelor în dolari
Variabile locale și domeniul de aplicare
Variabile globale și blocuri logice imbricate
Verificarea funcționării calculatorului
Alte tipuri pentru numere întregi
Tipuri pentru numere foarte mari, foarte mici și fracționale
tip plutitor
Tip dublu
Tastați long double
Corectarea tipurilor de variabile
Vechimea operațiunii
Alte funcții număr-text
Oficializăm rezultatul
Rotunjirea rezultatului
Descrierea funcției și a conexiunii bibliotecilor standard
Aducând frumusețe
Programul este gata

3. Privind în interiorul programului care rulează

Redeschiderea proiectului
Efectuarea unei acțiuni interzise
Verificarea valorilor variabilelor
Oprirea programului

4. Optimizarea textului programului

Aruncăm operatorii care nu sunt necesari
Compilatorul emite un avertisment
Este întotdeauna necesar să economisiți?

5. Tratarea excepțiilor

Vânătoare de insecte
Stabilirea controlului asupra programului
Procedura de gestionare a excepțiilor
Gestionarea mai multor excepții

6. Clasele și metodele lor

Metode în loc de funcții
Cum să găsești metoda potrivită
Mod de modă veche

7. Calcule condiționale

Filtre de valoare
Operator condiționat
Scrierea unei declarații condiționate
Expresii booleene
Ordinea de evaluare a expresiei
Complex expresii logice si efecte secundare
Creați un filtru
Compararea numerelor în virgulă mobilă

8. Joacă-te cu computerul. Exemplu mai complex

Ce o să ne jucăm?
Pregătim un nou proiect
Formularea problemei
Nu vă grăbiți să vă așezați la computer
Proiecta interfața cu utilizatorul
Crearea unui meniu FROM
„Butoane rapide”
Proiectarea structurii interne a programului
Eveniment nou joc
Ieșire din eveniment
Evenimentul „Aruncă zarurile”
Evenimentul „Transfer coada de turnare”
Descrierea claselor
Cum să includeți o nouă clasă în program
Restricționarea disponibilității conținutului clasei
Definirea primei clase
Simularea aruncării zarurilor
Descrierea clasei „Jucător”.
Constructorul este apelat o singură dată
Conectăm judecătorul
Accesarea variabilelor interne și a proprietăților clasei
Constantele sunt un lucru util

9. Programarea interfeței cu utilizatorul

Adăugarea unei variabile judecător
Renunțarea la joc
Un joc nou
Utilizarea constantelor de text
Alocații variabile lungi ale claselor imbricate
Verificarea finalizării lotului curent
Operator condițional extins
Adăugarea unui rând la o listă
Când este selectat elementul de meniu Joc nou
Când este selectat elementul de meniu „Roll Die”.
Când este selectat elementul de meniu „Transfer coada de turnare”.
Configurarea butoanelor de comandă
Verifică dacă totul este în regulă
Depanare pas cu pas
Elimina jocurile repetitive
Operator de buclă
Alegerea unui algoritm pentru comportamentul unui player pe computer
Ciclu în loc de copiere manuală
În interiorul buclei
Oprirea unui ciclu
Forme incomplete de notare ale operatorului buclă
Crearea unei casete de dialog
Crearea unui formular nou
Negație logică
Apelarea unui formular nou
De la constante la variabile
Afișarea unei noi valori într-o casetă de dialog
Pregătirea aplicației complete
Pozitionarea ferestrelor
Alegerea pictogramei potrivite
Crearea unui program terminat
Trei piloni ai C++

10. Generalizarea este mama invatarii

Ce urmeaza?
O matrice este baza pentru stocarea datelor omogene
Cum se descrie o matrice
Dimensiunea matricei
Tip matrice
Accesarea unui element dintr-o matrice de clasă
Matrice multidimensionale
Controlul frontierelor
Matricele și buclele sunt frați
Solitaire "Ei bine"
De ce solitaire?
Proiect nou
Regulile „Fântânii”
De unde pot obține desene de hărți?
Proiectarea interfeței
Încărcarea hărților în componentă
Implementarea claselor necesare
Proiectarea unui pachet de cărți
Clasa „Hartă”
Clasa „Deck”
Constante obligatorii
Implementarea hărților
Construirea unei punți folosind bucle imbricate
Amestecând puntea
Scoaterea unei cărți din pachet
Adăugarea unei cărți la pachet
Verifică dacă puntea este goală
Partea principală a solitaire
Proiectarea logicii de lucru forma principală
Transformarea unei hărți într-un index imagine
Adăugarea și îndepărtarea cărților din grămezi
Mutarea hărții
Un joc nou
Cea mai importantă metodă
Cea mai importantă metodă-2
Există carduri?
Logica interfeței
Prinderea mouse-ului
Procesarea unui clic
Inițializarea matricelor
Continuăm testarea interfeței cu utilizatorul
Joacă după reguli
Programare de sus în jos
Verificare la sfârșitul jocului
Ultimele lucruri mici

unsprezece . INTRARE ȘI IEȘIRE

De ce este necesar acest lucru?
Cum să lucrați cu fișiere în C++
Salvați aspectul curent
Creați un fișier
Suprascrieți cu precauție
Dialog cu utilizatorul
Salvarea datelor într-un fișier
Controlul erorilor
Închideți fișierul și rezumați
Citirea datelor
Selectați fișiere arbitrare
Alte opțiuni pentru lucrul cu fișiere în C++Builder
Funcții standard pentru lucrul cu fișiere

12. Componente care vor fi la îndemână

Asamblare din cuburi
Panou standard
Ceea ce este deja cunoscut
Rame
Meniul contextual
Câmp de introducere pe mai multe linii
Caseta de bifat
Intrerupator
Schimbați grupul
Bara de defilare
Grup de elemente
Panou
Panou suplimentar
Ceea ce este deja cunoscut
Câmp de introducere prin mască
Masă cu șiruri
Masa pentru orice
Imagine
Figura geometrică
Cadru
Zona derulabilă
Titlu
Panoul de elemente
Diagramă
Panoul Win32
Ceea ce este deja cunoscut
Filele
Editor de text puternic
Glisor
Indicator de progres
Butoane de contor
Tasta rapidă
Animaţie
Câmp de introducere a datei și orei
Calendar lunar
Antet cu secțiuni
Bara de stare
Panoul de elemente
Bara de defilare
Panoul de sistem
Temporizator
Zona de desen
Player universal
Container OLE
Panoul de dialoguri
Nu va fi suficient!
Proprietățile de bază ale componentelor C++Builder
Note pe tabele
Proprietățile de bază ale componentelor

13. Concluzie

Ce altceva poate face Borland C++Builder?
Lucrul cu baze de date
Analiza datelor
Generarea de rapoarte
Internet
Calcul distribuit
Servere
Perspective
Index alfabetic

Universitatea Tehnică de Aviație de Stat Ufa

Departamentul de Inginerie Calculatoare

și protecția informațiilor

Notă explicativă

pentru munca de curs

la disciplina: „Metode de programare și algoritmi aplicați”

„Dezvoltarea unui algoritm aplicat și implementarea lui în C++”

Este realizat de un student:

Zaguraev A.N.

Facultatea: IRT

Grupa: ZI-225

Acceptat de profesor asociat, doctorat:

Strokina Yu.G.

1. Enunțarea problemei……………………………………………………………………….……3

2. Mediul de programare Borland C++ Builder………..4

3. Software de matematică…………………………………………10

4. Dezvoltarea unui algoritm de program sub forma unei diagrame bloc…….……11

5. Descrierea programului………….…………………………….12

6. Concluzii……………………………………………………………………………………….15

7. Lista referințelor…….………………………….16

Anexa…………………………………………………………..……………..17

Formularea problemei

Exercițiu: Dezvoltați un program de căutare iterativă a mărimii plăților uniforme ale împrumuturilor. Plățile și dobânzile acumulate la suma rămasă se fac lunar. Date inițiale: mărimea creditului, perioada de rambursare (de la 1 la 5 ani), rata dobânzii. În caseta de dialog, afișați un grafic cu modificările soldului sumei împrumutului.

Mediu de programareBorlandC++ Constructor

Introducere

Borland C++ Builder este un mediu de dezvoltare rapidă a aplicațiilor. Sistemele de dezvoltare rapidă (sisteme RAD, Rapid Application Development - un mediu pentru dezvoltarea rapidă a aplicațiilor) se bazează pe tehnologia designului vizual și a programării evenimentelor, a cărei esență este că mediul de dezvoltare preia cea mai mare parte a muncii de generare a codului de program, lăsând munca programatorului pentru proiectarea casetelor de dialog și scrierea funcțiilor de procesare a evenimentelor. Productivitatea programatorului la utilizarea sistemelor RAD crește semnificativ.

Sistemul de programare orientat pe obiecte Borland C++ Builder este proiectat pentru sistemele de operare Windows. C++ Builder IDE oferă viteza dezvoltării vizuale, productivitatea componentelor reutilizabile, combinate cu puterea instrumentelor de limbaj C++, instrumente avansate și acces la baze de date pe mai multe scari.

C++ Builder poate fi folosit oriunde doriți să extindeți aplicațiile existente cu standardul avansat al limbajului C++, să îmbunătățiți performanța și să oferiți o interfață de utilizator de calitate profesională.

Viteza de dezvoltare vizuală

Instrumentele profesionale de limbaj C++ sunt integrate în mediul de dezvoltare vizuală. C++Builder oferă un compilator Borland C++ rapid, un încărcător incremental eficient și capabilități flexibile de depanare atât la nivel de sursă, cât și la nivel de asamblare, pentru a satisface cerințele solicitante ale programatorilor profesioniști.

Designul prin glisare și plasare vă permite să creați o aplicație prin simpla glisare a componentelor vizuale capturate din paletă în formularul de cerere. Inspectorul de obiecte oferă posibilitatea de a opera cu proprietățile și evenimentele componentelor, creând automat șabloane pentru funcțiile de procesare a evenimentelor care sunt completate cu cod și editate în timpul procesului de dezvoltare.

Proprietățile, metodele și evenimentele sunt tocmai acele elemente de limbaj care permit dezvoltarea rapidă a aplicațiilor în cadrul programării orientate pe obiecte. „Proprietăți” vă permit să setați cu ușurință diverse caracteristici ale obiectelor. „Metode” efectuează anumite operații, uneori destul de complexe, asupra unui obiect. „Evenimentele” conectează impacturile utilizatorilor asupra obiectelor cu coduri de răspuns la aceste impacturi. Evenimentele pot apărea în timpul unor astfel de schimbări specifice în starea obiectelor, cum ar fi actualizarea datelor în elementele de interfață pentru accesarea bazelor de date. Lucrând împreună, proprietățile, metodele și evenimentele formează un mediu RAD (Rapid Application Development) pentru programarea rapidă și intuitivă a aplicațiilor Windows robuste.

Visual Shape Inheritance întruchipează un aspect critic al programării orientate pe obiecte într-un instrument de proiectare vizuală ușor de utilizat. Caracteristicile unui formular nou de cerere pot fi moștenite de la orice altă formă existentă, ceea ce asigură reproducerea centralizată a modificărilor interfeței cu utilizatorul, facilitează controlul codului și reduce timpul necesar introducerii de noi atribute de calitate.

Expertul de instalare ghidează crearea pachetelor de distribuție unificate pentru aplicațiile dezvoltate.

Codul sursă al Bibliotecii de componente vizuale facilitează dezvoltarea de noi componente bazate pe exemple gata făcute.

Instrumentele API deschise pot fi integrate direct în mediul vizual al sistemului. Vă puteți conecta obișnuit editor de text sau creați-vă propriul vrăjitor pentru a automatiza procedurile repetitive.

Biblioteca matematică extinsă conține funcții suplimentare unificate pentru calcule statistice și financiare.

InterfațăBorlandC++ Constructor.

Interfața C++ Builder include:

Componentele paletei conține peste 100 de componente reutilizabile oferite pentru aplicații de construcție.

Editor de formulare conceput pentru a crea o interfață de program cu utilizatorul.

Editor cod este destinat scrierii textului programului, în special funcțiilor de procesare a evenimentelor.

Inspector de obiecte vă permite să setați vizual proprietățile obiectelor fără a fi nevoie de programare de rutină și conține evenimente care pot fi asociate cu coduri de reacție a obiectelor la apariția lor.

Depozitarea obiectelor conține obiecte precum formulare și module de date care sunt partajate între multe aplicații pentru a reduce timpul de dezvoltare.

C++Builder implementează o metodă vizuală pentru construirea aplicațiilor prin selectarea elementelor de control necesare din Paleta de componente (Fig. 1). Fiecare componentă (cum ar fi un buton) are proprietăți asociate care îi schimbă aspectul și comportamentul. Orice componentă poate declanșa o serie de evenimente care îi determină răspunsul la diverse influențe.

Probleme de compatibilitate

C++ Builder aduce puterea și bogăția limbajului C++ întregii familii de sisteme de programare orientate pe obiecte. C++ Builder poate fi utilizat oriunde doriți să îmbunătățiți aplicațiile existente cu standardul industrial avansat C++, să îmbunătățiți performanța și să creați o interfață de utilizator cu aspect profesional.

C++BuilderȘiBorland C++

Există o interoperabilitate completă și reciprocă între C++ Builder și produsele software Borland C++. C++ Builder adaugă o nouă calitate procesului de programare - dezvoltarea vizuală rapidă a aplicațiilor în limbajul C++. Dacă sunteți obișnuit să lucrați în sistemele de programare Borland C++ (versiunile 3.1, 4.5 și 5.0), atunci treceți la sistem nou, nici întoarcerea la cea veche nu va fi prea dificilă. Un administrator de fișiere de proiect convenabil, un compilator și un încărcător incremental vă rămân la dispoziție.

La început, C++ Builder va dezamăgi mulți dezvoltatori, deoarece, în loc de bibliotecile familiare OWL și MFC, folosește biblioteca VCL necunoscută până acum. Fiecare bibliotecă reprezintă un model specific de programare orientată pe obiecte pentru Windows. Fiecare bibliotecă rezolvă problemele OOP în felul său și nu se poate spune că cineva face față sarcinii mai bine sau mai rău decât alții.Versiunile Borland C++ 5.0 și superioare suportă introducerea de formulare standard concepute în mediul C++ în OWL sau dezvoltat anterior. Programe MFC Builder bazat pe VCL. Dezvoltatorul optează pentru acest tip de reluare dintr-un motiv simplu: C++Builder vă permite să includeți toate dialogurile cu utilizatorul în formular extrem de rapid, oferind aplicației Windows un aspect complet profesional, eliminând toată coaja de cod auxiliar din program și lăsând doar partea semnificativă care întruchipează ideea principală a algoritmului. Astfel, compatibilitatea este asigurată la nivel de formă. Nu este surprinzător, lucrul împreună cu două biblioteci de clase de obiecte crește semnificativ dimensiunea fișierului EXE.

Tehnologii de programare. Esența abordării orientate pe obiecte a programării. Scopul lui Xi, informații istorice. Alfabetul, tipurile de bază și descrierea datelor. Structuri și asociații. operatori C++. Funcții. Bibliotecă de rulare.

Trimiteți-vă munca bună în baza de cunoștințe este simplu. Utilizați formularul de mai jos

Studenții, studenții absolvenți, tinerii oameni de știință care folosesc baza de cunoștințe în studiile și munca lor vă vor fi foarte recunoscători.

Programare orientată pe obiecte în Borland C++

Texte ale prelegerilor susținute la Universitatea de Stat de Economie, Statistică și Informatică din Moscova

Textele cursului discută principiile și instrumentele de bază ale programării orientate pe obiecte folosind limbajul C++ și sistemul de programare Borland C++. Anexa conține sarcini pe care le puteți rezolva singur. Se presupune că cititorul este deja familiarizat cu elementele de bază ale limbajelor de programare de uz general. Manualul este destinat studenților specialității „Matematică aplicată” și poate fi folosit de studenții altor specialități pentru studiul independent al C++.

1. Abordare orientată pe obiecte a programării

1.1 Tehnologii de programare

Tehnologia de programare este un set de metode și instrumente pentru dezvoltarea (scrierea) programelor și procedura de utilizare a acestor metode și instrumente.

În primele etape ale programării, când programele erau scrise ca secvențe de instrucțiuni ale mașinii, nu exista o tehnologie de programare. Primii pași în dezvoltarea tehnologiei au constat în reprezentarea unui program ca o secvență de declarații. Scrierea unei secvențe de instrucțiuni de mașină a fost precedată de întocmirea unei diagrame operator care reflectă succesiunea operatorilor și tranzițiile dintre ei. Abordarea operatorului a făcut posibilă dezvoltarea primelor programe care să automatizeze compilarea programelor - așa-numitele componente ale programului.

Odată cu creșterea dimensiunii programelor, părțile lor separate au început să fie identificate și proiectate ca subrutine. Unele dintre aceste subrutine au fost combinate în biblioteci, din care subrutinele puteau fi incluse în programele de lucru și apoi apelate din programele de lucru. Aceasta a marcat începutul programare procedurală- un program mare era reprezentat de un set de proceduri-subrutine. Una dintre subrutine a fost cea principală, iar execuția programului a început cu ea.

În 1958, au fost dezvoltate primele limbaje de programare, Fortran și Algol-58. Un program Fortran a constat dintr-un program principal și o serie de proceduri - subrutine și funcții. Programul de pe ALGOL-58 și versiunea sa ulterioară ALGOL-60 era un singur întreg, dar avea o structură de bloc, inclusiv blocul principalși blocuri imbricate de subrutine și funcții. Compilatorii pentru Fortran au furnizat traducerea separată a procedurilor și integrarea lor ulterioară într-un program de lucru; primii compilatori pentru Algol au presupus că întregul program a fost tradus dintr-o dată; nu a fost furnizată traducerea separată a procedurilor.

Abordarea procedurală a necesitat structurare program viitor, împărțindu-l în proceduri separate. Când dezvoltați o procedură separată, trebuia doar să știți despre alte proceduri scopul lor și cum să le apelați. A devenit posibilă reelaborarea procedurilor individuale fără a afecta restul programului, reducând în același timp costul forței de muncă și timpul de calculator pentru dezvoltarea și modernizarea programelor.

Următorul pas în aprofundarea structurării programelor a fost așa-numita programare structurată, în care programul în ansamblu și procedurile individuale au fost considerate ca secvențe de structuri canonice: secțiuni liniare, cicluri și ramuri. A devenit posibil să se citească și să verifice un program ca text secvențial, ceea ce a crescut productivitatea programatorilor la dezvoltarea și depanarea programelor. Pentru a spori structura programului s-au înaintat cerințe pentru o mai mare independență a subrutinelor; subprogramele trebuie să comunice cu programele care le apelează doar prin transmiterea de argumente; utilizarea în subrutine a variabilelor aparținând altor proceduri sau programului principal a fost considerat nedorit.

Programarea procedurală și structurată a afectat, în primul rând, procesul de descriere a unui algoritm ca o secvență de pași care conduc de la variația datelor de intrare la rezultatul dorit. Pentru a rezolva probleme speciale, au început să fie dezvoltate limbaje de programare, axate pe o anumită clasă de probleme: sisteme de management al bazelor de date, modelare de simulare etc.

La dezvoltarea traducătorilor, s-a acordat din ce în ce mai multă atenție detectării erorilor în codul sursă al programelor, reducând astfel timpul petrecut cu depanarea programelor.

Utilizarea programelor în diverse domenii ale activității umane a condus la necesitatea îmbunătățirii fiabilității tuturor software-ului. Una dintre direcțiile de îmbunătățire a limbajelor de programare a fost creșterea nivelului de tastare a datelor. Teoria tipurilor de date presupune că fiecare dată utilizată într-un program aparține unui singur tip de date. Tipul de datum definește setul de valori posibile pentru datum și setul de operații permise pe acest datum. În unele cazuri, datele de un anumit tip pot fi convertite în date de alt tip, dar o astfel de conversie trebuie să fie reprezentată în mod explicit în program. În funcție de gradul de îndeplinire a cerințelor enumerate, putem vorbi despre nivelul de tastare al unui anumit limbaj de programare. Dorința de a crește nivelul de scriere a unui limbaj de programare a dus la apariția limbajului Pascal, care este considerat un limbaj puternic tipizat, deși permite unele conversii implicite de tip, de exemplu, întregul în real. Utilizarea unui limbaj tastatut strict la scrierea unui program face posibilă identificarea multor erori în utilizarea datelor chiar și la traducerea textului sursă și, prin urmare, crește fiabilitatea programului. În același timp, tastarea strictă a restrâns libertatea programatorului și a făcut dificilă utilizarea unor tehnici de conversie a datelor adesea folosite în programarea sistemului. Aproape simultan cu Pascal a fost dezvoltat limbajul C, mai concentrat pe programarea sistemuluiși legate de limbaje slab tipizate.

Toate limbajele de programare universale, în ciuda diferențelor de sintaxă și cuvinte cheie utilizate, implementează aceleași structuri canonice: operatori de atribuire, bucle și ramuri. Toate limbile moderne au tipuri de date predefinite (de bază) (tipuri aritmetice întregi și reale, tipuri de caractere și, eventual, șiruri), și este posibil să se utilizeze agregate de date, inclusiv matrice și structuri (înregistrări). Pentru datele aritmetice, normal operatii aritmetice, pentru agregatele de date există de obicei doar o operație de atribuire și posibilitatea de a accesa elementele agregatului. În același timp, atunci când se dezvoltă un program pentru a rezolva o problemă aplicată specifică, este de dorit să existe o apropiere conceptuală cât mai apropiată a textului programului de descrierea problemei. De exemplu, dacă rezolvarea unei probleme necesită efectuarea de operații pe numere complexe sau matrici pătrate, este de dorit ca programul să includă în mod explicit operatori pentru adunarea, scăderea, înmulțirea și împărțirea datelor, cum ar fi un număr complex, adunarea, scăderea, înmulțirea și inversarea datelor precum ca o matrice pătrată. Există mai multe moduri de a rezolva această problemă:

Prin construirea unui limbaj de programare care să conțină cât mai multe tipuri de date și alegând un subset al acestui limbaj pentru fiecare clasă de probleme. Acest tip de limbaj este uneori numit limbaj shell. Limbajul PL/1 a pretins rolul unui limbaj shell, dar s-a dovedit a fi atât de complex încât nu a fost niciodată posibil să se construiască o descriere oficială a acestuia. Lipsa unei descrieri oficializate nu a împiedicat însă utilizarea pe scară largă a PL/1 atât în ​​Europa de Vest, cât și în URSS.

Construcția unui limbaj extensibil care conține un nucleu mic și poate fi extins pentru a completa limbajul cu tipuri de date și operatori care reflectă esența conceptuală a unei clase specifice de probleme. Un astfel de limbaj se numește limbaj de bază. Limbile Simula și Algol-68 au fost dezvoltate ca limbaje de bază; nu au fost utilizate pe scară largă, dar au avut o mare influență asupra dezvoltării altor limbaje de programare.

O dezvoltare ulterioară a celei de-a doua căi a fost abordarea orientată pe obiecte a programării, discutată în paragraful următor.

1.2. Esența abordării orientate pe obiecte a programării

Ideile principale ale abordării orientate pe obiecte se bazează pe următoarele prevederi:

Un program este un model al unui proces real, parte a lumii reale.

Un model al lumii reale sau o parte a acesteia poate fi descris ca un set de obiecte care interacționează între ele.

Un obiect este descris printr-un set de parametri, ale căror valori determină starea obiectului și un set de operațiuni (acțiuni) pe care obiectul le poate efectua.

Interacțiunea dintre obiecte se realizează prin trimiterea de mesaje speciale de la un obiect la altul. Un mesaj primit de un obiect poate necesita anumite acțiuni, cum ar fi schimbarea stării obiectului.

Obiectele descrise de același set de parametri și capabile să efectueze același set de acțiuni constituie o clasă de obiecte de același tip.

Din perspectiva limbajului de programare, o clasă de obiecte poate fi gândită ca un tip de datum, iar un obiect individual poate fi gândit ca un datum de acest tip. Definirea de către programator a propriilor clase de obiecte pentru un set specific de sarcini ar trebui să îi permită să descrie sarcini individuale în termenii clasei de sarcini în sine (cu o alegere adecvată a numelor de tip și a numelor obiectelor, parametrii acestora și acțiunile efectuate).

Astfel, abordarea orientată pe obiect presupune că la dezvoltarea unui program trebuie determinate clasele de obiecte utilizate în program și construite descrierile acestora, apoi trebuie create instanțe ale obiectelor necesare și trebuie definită interacțiunea dintre ele.

Este adesea convenabil să structurați clasele de obiecte astfel încât acestea să formeze o structură ierarhică. De exemplu, clasa „Student”, care descrie un student abstract, poate servi ca bază pentru construirea claselor „elev anul I”, „elev anul II”, etc., care au toate proprietățile unui student în general și niste proprietăți suplimentare, care caracterizează un student la un anumit curs. La dezvoltarea unei interfețe cu utilizatorul, programele pot folosi obiecte din clasa generală „Ferestre” și obiecte din clase de ferestre speciale, de exemplu, ferestre de mesaje de informații, ferestre de introducere a datelor etc. În astfel de structuri ierarhice, o clasă poate fi considerată ca clasă de bază pentru alte clase derivate din ea. Un obiect al unei clase derivate are toate proprietățile clasei de bază și unele proprietăți proprii și poate răspunde la aceleași tipuri de mesaje de la alte obiecte ca un obiect al clasei de bază și la mesaje care sunt semnificative numai pentru clasa derivata. Se spune în mod obișnuit că un obiect al unei clase derivate moștenește toate proprietățile clasei sale de bază.

Unii parametri ai unui obiect pot fi localizați în interiorul obiectului și nu sunt disponibili pentru influența directă din exteriorul obiectului. De exemplu, în timp ce o mașină-obiect se mișcă, șoferul-obiect poate influența doar un set limitat de comenzi (volan, benzină, pedale de ambreiaj și frână, maneta de viteze) și nu poate accesa o întreagă gamă de parametri care caracterizează starea. a motorului și a mașinii în ansamblu.

Evident, pentru a utiliza în mod productiv abordarea obiect pentru dezvoltarea programului, sunt necesare limbaje de programare care să susțină această abordare, adică. permițându-vă să construiți o descriere a claselor de obiecte, să generați date despre tipurile de obiecte și să efectuați operații asupra obiectelor. Unul dintre primele astfel de limbaje a fost limbajul SmallTalk, în care toate datele sunt obiecte ale anumitor clase, iar sistemul general de clasă este construit ca o structură ierarhică bazată pe clase de bază predefinite.

Experiența în programare arată că orice abordare metodologică în tehnologia de programare nu trebuie aplicată orbește, ignorând celelalte abordări. Acest lucru se aplică și abordării orientate pe obiecte. Există o serie de probleme tipice pentru care utilitatea sa este cea mai evidentă; astfel de probleme includ, în special, sarcini de modelare de simulare și dialoguri de programare cu utilizatorul. Există, de asemenea, probleme în care utilizarea abordării obiect nu va duce la altceva decât la costuri inutile cu forța de muncă. În acest sens, limbajele de programare orientate pe obiecte, care permit combinarea abordării obiectului cu alte metodologii, au devenit cele mai răspândite. În unele limbi și sisteme de programare, utilizarea abordării obiectului este limitată la instrumentele de interfață cu utilizatorul (de exemplu, versiunile timpurii ale Visual FoxPro).

Cele mai frecvent utilizate limbaje orientate pe obiecte astăzi sunt Pascal cu obiecte și C++, cu cele mai avansate instrumente de lucru cu obiecte conținute în C++.

Aproape toate limbajele de programare orientate pe obiecte sunt limbaje în evoluție; standardele lor sunt rafinate și extinse în mod regulat. Consecința acestei dezvoltări este diferențele inevitabile în limbajele de intrare ale compilatorilor diferitelor sisteme de programare. . Cele mai comune sisteme de programare în prezent sunt Microsoft C++, Microsoft Visual C++ și sistemele de programare de la Borland International. Mai multe materiale din acest manual sunt prezentate în legătură cu sistemul de programare Borland C++. Acest lucru se datorează în primul rând prezenței în acest sistem de programare a unui mediu integrat dezvoltat care combină un editor de text, un compilator, un linker (linker) și instrumente de depanare.

2. Informații de bază despre limbajul C

2.1 Scopul lui Xi, informații istorice

Limbajul C a fost dezvoltat în anii 70 ca limbaj de programare a sistemelor. În același timp, sarcina a fost obținerea unui limbaj care să asigure implementarea ideilor de programare procedurală și structurată și capacitatea de a implementa tehnici specifice de programare a sistemului. Un astfel de limbaj ar permite dezvoltarea unor programe complexe la un nivel comparabil cu programarea de asamblare, dar mult mai rapid. Aceste obiective au fost în mare măsură atinse. Majoritatea compilatoarelor C sunt scrise în C, sistemul de operare UNIX<также почти полностью написана на Си. Недостатком Си оказалась низкая надежность разрабатываемых программ из-за отсутствия контроля типов. Попытка поправить дело включением в систему программирования Си отдельной программы, контролирующей неявные преобразования типов, решила эту проблему лишь частично.

Bazat pe C, limbajul C++ a fost dezvoltat în anii 80, numit inițial „C cu clase”. C++ practic include limbajul C și este completat cu instrumente de programare orientate pe obiecte. Versiunea de lucru a C++ a apărut în 1983. De atunci, limbajul a continuat să se dezvolte și au fost publicate mai multe versiuni ale proiectelor de standarde C și C++.

Un număr de companii de software au dezvoltat compilatoare pentru C și C++. Sistemele de programare Borland International se remarcă printre alte companii în primul rând prin abordarea lor cuprinzătoare a dezvoltării programelor, care se exprimă prin includerea în sistemul de programare a unui mediu de dezvoltator integrat care combină, sub control comun, un editor de text pentru introducerea codurilor sursă a programului, un compilator, un editor de linkuri și un set de instrumente de depanare. În 1989, această companie a lansat sistemul Turbo C++, care includea un compilator C++ care rulează în sistemul de operare DOS; din 1992 au fost produse sisteme Borland C++, care conțin compilatoare C++ pentru DOS și WINDOWS; din 1997, versiunea Borland a fost furnizată C 5.0, care conține compilatoare C++ pentru WINDOWS, și compilatorul pentru WINDOWS vă permite acum să dezvoltați atât versiuni pe 16 biți, cât și pe 32 de biți ale programelor pentru PC-uri cu procesoare i486 și Pentium.

Un program C/C++ este unul sau mai multe fișiere sursă care pot fi traduse separat. Rezultatele traducerii (fișierele obiect) sunt combinate în fisier executabil editor de linkuri (linker). În general, există două tipuri de fișiere sursă: fișiere antet și fișiere program. Fișierele antet conțin descrieri ale tipurilor de date și prototipurilor de funcții și sunt destinate să fie incluse în fișierele de program înainte de a fi compilate; numele lor au de obicei extensia .h, cum ar fi stdio.h. Fișierele program conțin descrieri ale funcțiilor și, eventual, variabile globale și constante; numele lor sunt de obicei scrise cu extensiile .c sau .cpp, de exemplu, myprog.cpp. Același fișier antet poate fi inclus în mai multe fișiere de program

Fiecare fișier conține o secvență de așa-numitele „definiții externe” care descriu tipuri de date, variabile, constante și funcții.

Următoarele paragrafe din această secțiune oferă o prezentare generală a caracteristicilor C/C++ care nu sunt legate de orientarea obiectelor C++.

2.2 Alfabetul, tipurile de bază și descrierea datelor.

Alfabetul limbii include aproape toate simbolurile găsite pe o tastatură standard de computer:

Literele latine A...Z, a...z;

Cifre 0...9;

Semne de funcționare și separatoare:

{ } () . , -> & * + - ~ ! / % ? : ; = < > | # ^

Unele operații sunt indicate prin combinații de simboluri; semnificațiile simbolurilor operaționale în unele cazuri depind de contextul în care sunt utilizate.

Tipurile de date de bază (predefinite) sunt combinate în două grupuri: date întregi și date în virgulă mobilă (reale).

Datele întregi pot fi un întreg obișnuit cu semn sau un întreg fără semn. Pe baza numărului de biți utilizați pentru a reprezenta o valoare dată (gamă de valori), se face o distincție între numere întregi obișnuite (int), numere întregi scurte (short int) și lungi (long int). Datele de caractere (char) sunt, de asemenea, tratate ca un întreg și pot fi semnate sau nesemnate.

Constantele de tip întreg sunt scrise ca șiruri de cifre zecimale, tipul constantei depinde de numărul de cifre din notația constantă și pot fi specificate prin adăugarea literelor L sau l (tip lung), U sau u (tip fără semn) sau o combinație a acestora la sfârșitul constantei:

321 - constanta de tip int,

5326u - constantă de tip int nesemnată,

45637778 - constantă de tip int lung,

2746L - constantă de tip int lung.

Constantele întregi pot fi scrise în sistemul de numere octale, în acest caz prima cifră trebuie să fie 0, numărul poate conține doar cifre 0 ... 7:

0777 - constanta de tip int,

0453377 - constantă de tip lung.

Constantele întregi pot fi de asemenea scrise sistem hexazecimal notație, în acest caz, intrarea constantă începe cu caracterele 0x sau 0X:

0x45F - constantă de tip int,

0xFFFFFFFF - constantă de tip lung nesemnată.

Constantele de tip char sunt întotdeauna cuprinse între ghilimele simple, iar valoarea constantei este specificată fie printr-un caracter din setul de caractere utilizat, fie printr-o constantă întreagă precedată de o bară oblică inversă: „A”, „\33”, „\042 ", "\x1B". Există, de asemenea, o serie de caractere speciale care pot fi specificate ca valori constante de caractere:

„\n” - linie nouă,

„\t” - filă orizontală,

„\v” - filă verticală,

„\r” - întoarcere transport,

„\f” - feed de pagini,

"\A" - semnal sonor,

"\"" - ghilimele simple (apostrof),

„\”” este ghilimele duble,

„\\” este o bară oblică inversă.

Numerele reale pot fi unul din trei tipuri: float, double, long double. Gama de valori pentru fiecare dintre aceste tipuri depinde de computerul și compilatorul utilizat. Constantele de tip real pot fi scrise în forme naturale sau exponențiale și sunt de tip double în mod implicit, de exemplu, 15.31, 1.43E-3, 2345.1e4. Dacă este necesar, tipul unei constante poate fi specificat scriind la sfârșit sufixul f sau F pentru tipul float, sau sufixul l sau L pentru tipul dublu lung.

Definiția exterioară de declarare a variabilelor constă dintr-un specificator opțional de clasă de stocare, specificatori de tip și o listă de așa-numiți declaratori de inițializare, fiecare dintre care declară identificatorul unei variabile și, eventual, valoarea atribuită variabilei atunci când este declarată. Definiția exterioară se termină cu punct și virgulă:

int i, j, k; // Trei variabile int fără inițializare explicită

dublu x=1, y=2; //Două variabile duble cu valorile inițiale 1 și 2

char c1="0"; // Variabilă de tip char, valoarea sa este codul caracterului 0

Textul scris după semnele // din aceste exemple este un comentariu și servește doar la documentarea programului. Un astfel de comentariu poate ocupa doar o linie de text și este permis în textele programelor C++. Un comentariu care se întinde pe mai multe rânduri este inclus între paranteze speciale /* și */.

Definiția externă poate specifica unul dintre cuvintele cheie extern, static sau typedef ca specificatori de clasă de memorie. Specificatorul extern înseamnă că obiectul declarat aparține unui alt fișier de program, iar aici sunt date informații despre numele și tipul său și nu trebuie să fie nicio expresie de inițializare. prezent. Specificatorul static limitează domeniul de aplicare al numelui declarat la un fișier sau bloc dat, dacă declarația este conținută într-un bloc.

Dacă declarația de date este conținută în corpul funcției (declarație locală), atunci pot fi specificați specificatorii clasei de registru sau memorie auto. Specificatorul de registru este de natură consultativă; compilatorul încearcă să plaseze această clasă într-un registru de procesor dacă în prezent există registre libere. Specificatorul automat este implicit și, prin urmare, nu este specificat în mod explicit; înseamnă că clasa auto trebuie să fie plasată în stiva software atunci când funcția este apelată.

Specificatorul typedef este folosit pentru a atribui un nume tipului de date descris și va fi discutat mai detaliat în paragraful următor.

Împreună cu constantele literale prezentate mai sus, ale căror valori sunt determinate de reprezentarea lor în program, C și C++ oferă constante cărora li se atribuie propriile nume - constante denumite. Descrierea unei constante numite conține descriptorul const, de exemplu,

const dublu Pi = 3,141592653;

O variabilă al cărei identificator este declarat cu un descriptor const nu i se poate atribui o altă valoare decât cea setată la declararea identificatorului. Este necesară valoarea de inițializare la declararea unei constante.

Alături de tipurile întregi și reale de diferite dimensiuni, un program poate declara și utiliza date de tipuri definite de programator: pointeri, referințe, agregate de date și date enumerate.

Un tip de enumerare este utilizat pentru datele întregi care pot lua un set limitat de valori. Fiecare valoare are propriul nume de identificare și un număr întreg, valoarea acestui nume. Declarația unui tip enumerat este construită după următoarea schemă:

enum identifier (lista de enumerare) declarator-initializatori;

Aici identificatorul specifică numele tipului de enumerare, lista de enumerare este formată din enumeratori despărțiți prin virgule. Fiecare enumerator este specificat printr-un identificator și, eventual, o valoare întreagă de tip char sau int, de ex.

enum color (ROSU, VERDE, ALBASTRU) en_color;

enum lex_type ( CNST, VAR, OPER=3, FUNC );

Dacă nu este specificată o valoare de enumerator, primul primește o valoare de 0, iar fiecare din următorul primește o valoare mai mare decât 1. În general, orice enumerator are implicit o valoare cu 1 mai mare decât precedentul. În C/C++ este obișnuit să scrieți identificatori de enumerator cu litere mari. Numele enumeratorilor sunt folosite fie ca constante numite, fie pentru atribuirea unor variabile de tip enumerat.

În C/C++, pointerii sunt folosiți pentru a face referire la o variabilă de un tip sau altul. Un pointer este un tip de date a cărui valoare este adresa altei date. La declararea unui pointer, semnul * este scris înaintea identificatorului. Pointerul poate fi inițializat cu adresa celui dat; operația & (ampersend) este folosită pentru a obține adresa:

dublu *px, *py =

Pentru pointeri, sunt definite operații de comparare, adăugând un pointer la un număr întreg, scăzând doi pointeri, precum și o operație de indexare (operație).

Pentru a accesa o variabilă prin pointer, se efectuează o operație de dereferențiere, notată cu * (asterisc), de exemplu, *py = 7,5; .

Când se declară un pointer, se poate folosi un descriptor const, de exemplu,

const int cc = 20;

const int *pc = // Poate fi inițializat cu adresa unei constante.

dublu *const delta = 0,001; // Pointer - constantă

Pe lângă variabilele și pointerii obișnuiți, C++ are un tip de „referință variabilă”, care specifică un nume suplimentar (alias) pentru variabilă. Reprezentarea internă a unei legături este aceeași cu un pointer, adică. sub forma unei adrese de variabilă, dar accesarea unei variabile prin referință este scrisă în aceeași formă cu accesarea acesteia după numele de bază. O variabilă de tip referință este întotdeauna inițializată prin specificarea numelui variabilei la care se referă referința. Când declarați o legătură, numele tipului este urmat de & (ampersend):

Cu această descriere, operatorii aii = 5; și ii = 5; sunt echivalente.

Matricele pot fi formate din variabile de orice tip. Când declarați o matrice în declaratorul de inițializare, identificatorul de matrice este urmat de numărul de elemente ale matricei între paranteze drepte:

int a [ 5 ] ; // Matrice de cinci elemente de tip int

Indicii elementelor matrice încep întotdeauna de la 0, indicele ultimului element este cu unul mai mic decât numărul de elemente din matrice. O matrice poate fi inițializată cu o listă de valori între acolade:

int b [ 4 ] = ( 1, 2, 3, 4 );

Dacă aveți o listă de inițializare care acoperă toate elementele matricei, nu trebuie să specificați numărul de elemente ale matricei; acesta va fi determinat de compilator:

int c = (1, 2, 3); // Matrice de trei elemente de tip int

Matricele cu o dimensiune de 2 sau mai multe sunt tratate ca și tablouri de matrice și numărul de elemente este specificat pentru fiecare dimensiune:

dublu aa [ 2 ] [ 2 ] = ( 1, 2, 3, 4 ); // Matricea 2 * 2

Matricele de tip char pot fi inițializate cu un literal șir. Un șir literal este o secvență de orice caractere, altele decât ghilimele și barele oblice inverse, cuprinse între ghilimele. Dacă un șir literal nu se potrivește pe o linie, acesta poate fi întrerupt cu un caracter „\” și continuat de la începutul liniei următoare. Standardul C++ oferă, de asemenea, o altă modalitate de a scrie literale lungi sub forma mai multor literale șir scrise pe rând. Dacă nu există alte caractere decât spații între literalele șir, astfel de literale sunt îmbinate într-unul singur de către compilator.

Când este plasat în memorie, caracterul „\0” este adăugat la sfârșitul literalului șirului, adică. octet nul. Un literal șir poate fi folosit și pentru a inițializa un pointer către un tip de caractere:

char str1 [ 11 ] = „Acesta este un șir”,

str2 = "Mărimea acestei matrice este determinată"

„număr de caractere în literal + 1”;

char *pstr = "Pointer cu inițializare șir";

Un nume de matrice în C/C++ este un pointer constant care se referă la primul element al matricei, care are un indice zero. Pentru a accesa un element de matrice, specificați identificatorul matricei și indexul elementului în paranteze, de exemplu, c, aa.

2.3 Structuri și uniuni

Alături de matrice, C/C++ are agregate de date, cum ar fi structuri și uniuni. Un tip de structură este o colecție ordonată de date de diferite tipuri care pot fi accesate ca date unice. Descrierea tipului structural este construită conform următoarei scheme:

identificator de struct

( declaratori membri ) declarator_initializers;

Un astfel de anunț îndeplinește două funcții, în primul rând anunță tip structural, în al doilea rând, sunt declarate variabile de acest tip.

Identificatorul de după cuvântul cheie struct este numele tipului de structură. Numele tipului poate lipsi, atunci tipul va fi fără nume și datele de acest tip nu pot fi declarate în alte părți ale programului. Declaratorii_inițializatorii declară variabile specifice ale unui tip de structură, de exemplu. date de tipul descris, pointeri către acest tip și matrice de date. Declarators_initializers pot fi absenți, caz în care declarația descrie doar tipul structurii.

Structura care descrie un punct pe un plan poate fi definită după cum urmează:

struct Point_struct // Numele structurii

( int x, y; ) // Declaratori ai membrilor structurii

point1, *ptr_to_point, arpoint ; // Date de tip structural

Membrii (componentele) unei structuri sunt descriși în mod similar cu datele de tipul corespunzător și pot fi date scalare, pointeri, matrice sau date de alt tip de structură. De exemplu, pentru a descrie tipul structural „dreptunghi cu laturile paralele cu axele de coordonate”, pot fi oferite mai multe opțiuni:

(Punctul p1; // Coordonatele colțului din stânga sus

Punctul p2; // Coordonatele colțului din dreapta jos

(Punctul p; // Colțul din stânga sus

int lățime; // Lățimea

int mare; // Înălțimea dreptunghiului

Deoarece numai numele de tip definite anterior trebuie folosite la declararea membrilor structurii, există o opțiune de a predeclara o structură prin specificarea doar a numelui tipului de structură. De exemplu, pentru a descrie un element al unui arbore binar care conține pointeri către ramurile din stânga și dreapta ale arborelui și un pointer către o structură de tip Value care conține valoarea nodului dat, puteți face acest lucru:

struct Tree_element

Element_arbore *stânga, *dreapta;

Membrii structurilor pot fi așa-numitele câmpuri de biți, când mai multe date întregi de lungime mai mică sunt plasate în câmpul de memorie al unei variabile de tip întreg (int sau int fără semn). Să fie, de exemplu, într-un program de analiză, descrierea unui lexem să conțină tipul lexemului (până la șase valori) și numărul de serie al lexemului în tabelul tipului corespunzător (până la 2000 de valori). Pentru a reprezenta o valoare de tip token, sunt suficiente trei cifre binare (trei biți), iar pentru a reprezenta numere de la 0 la 2000, sunt necesare 11 cifre binare (11 biți). Descrierea structurii care conține informații despre token poate arăta astfel:

(unsigned int type_lex: 3;

unsigned int num_lex:11;

Un două puncte cu un număr întreg după numele membrului structurii indică faptul că este un câmp de biți, iar un număr întreg specifică dimensiunea câmpului în biți.

O uniune poate fi definită ca o structură ale cărei componente sunt toate localizate în memorie de la aceeași adresă. Astfel, uniunea la fiecare moment în timp conține una dintre valorile posibile. Pentru a găzdui un sindicat, este alocată o zonă de memorie suficient de mare pentru a găzdui cel mai mare membru al sindicatului. Utilizarea unei uniuni permite, de asemenea, accesul aceluiași câmp de memorie cu nume diferite și interpretat ca valori de diferite tipuri.

Descrierea unei uniuni este construită după aceeași schemă ca și descrierea unei structuri, dar în loc de cuvântul cheie struct, se folosește cuvântul union, de exemplu, union uword vă permite să interpretați un câmp de memorie fie ca un int nesemnat. , sau ca o matrice de două elemente de tip unsigned char.

(nesemnat int u;

caracter nesemnat b [ 2 ];

Descrierile tipurilor declarate de programator, inclusiv structurile și uniunile, pot fi destul de mari, astfel încât C/C++ oferă posibilitatea de a atribui nume proprii (sinonime) tipurilor, sporind astfel claritatea textele programului. Un sinonim de nume de tip este introdus cu cuvântul cheie typedef și este construit ca anunț obișnuit, dar identificatorii din declaratori în acest caz sunt interpretați ca sinonime ale tipurilor descrise. Sinonimele pentru numele de tip sunt de obicei scrise cu majuscule pentru a le distinge de identificatorii de variabile. Mai jos sunt câteva exemple de declarare a sinonimelor de nume de tip.

typedef struct ( double re, im ) COMPLEX;

typedef int *PINT;

După astfel de declarații, un sinonim de nume poate fi folosit ca specificator de tip:

COMPLEX ca, *pca; // variabilă de tip COMPLEX și pointer către COMPLEX

PINT pi; // pointer către int

Descrierea de mai sus a structurilor și uniunilor corespunde practic cu construcția lor în limbajul C. În C++, structurile și uniunile sunt cazuri speciale de tipuri de date obiect. Informații suplimentare acest lucru va fi discutat atunci când luăm în considerare instrumentele C++ orientate pe obiecte.

2.4 Operații și expresii

În ciuda setului limitat de tipuri de date de bază (date aritmetice întregi și reale și literali șir), limbajul C++ definește un set extins de operații asupra datelor, dintre care unele corespund direct comenzilor mașinii. Ca în toate limbajele de programare, operațiunile sunt folosite pentru a construi expresii. O expresie este o succesiune de operanzi și semne de operație și este folosită pentru a calcula o anumită valoare.

Operanzii din expresie sunt identificatori de variabile, constante și literali șir, care sunt expresii primare. O expresie cuprinsă între paranteze este, de asemenea, tratată ca o expresie primară. Fiecare operație presupune utilizarea anumitor tipuri de operanzi (întregi, reali, pointeri). Operatorul de atribuire în C++ este, de asemenea, o expresie; prin urmare, există o distincție între operanzi cărora li se poate atribui o nouă valoare și operanzi a căror valoare nu se poate modifica. Pentru ca unui operand să i se atribuie o valoare, acesta trebuie să corespundă unei locații de memorie și compilatorul trebuie să cunoască adresa acelei memorie. Astfel de operanzi se numesc expresii L (din engleză stânga) deoarece pot fi scrise în partea stângă a operatorului de atribuire.

Rezultatul evaluării unei expresii depinde de prioritățile operațiilor. În C++ un sistem complex priorități operaționale, inclusiv 16 niveluri. Tabelul 2.1 prezintă o listă de operațiuni C++ indicând prioritățile, scopul și schema de înregistrare a acestora.

Tabelul 2.1

O prioritate

Semnul operațiunii

Scop

Sistem

Accesarea unui nume global sau a unui nume dintr-un alt domeniu

::identificator (global)
nume domeniului: : nume_membru_structură

Accesarea unui membru al structurii printr-un pointer către structură

pointer -> structura_nume_membru

nume_structură. nume_membru_structură

Accesarea unui element de matrice

index [index]

Conversia tipului de date

tip_nume (expresie) sau (tip) expresie

Apelarea unei funcții

functie(argumente)

Creștere automată

Valoarea L sau
Valoarea L++

Auto-reducere

Valoarea L sau
valoarea L--

Inversarea biților

~ expresie_întreg

Negație logică

Expresie

Un singur minus

Expresie

Single Plus

Expresie

Obținerea unei adrese

& L-valoare

Dereferința indicatorului

* indicator

Alocarea dinamică a memoriei

nou tip de date

Eliberarea memoriei

șterge indicatorul

Eliberarea memoriei pentru o matrice

șterge indicatorul

Dimensiunea acestuia

dimensiunea expresiei

Tipul de mărime dat

sizeof (nume tip)

Multiplicare

expresie * expresie

expresie / expresie

Restul împărțirii în întreg

expresie % expresie

Accesarea unui membru al structurii prin indicator

pointer_to_structure ->* nume_membru al structurii_pointer

Referirea la un membru al structurii prin numele structurii

nume_structură.*
nume de membru al structurii pointerului

Plus

expresie + expresie

Scădere

expresie – expresie

Schimbați la stânga

expresie_întreg<< целое_выражение

Schimbați la dreapta

expresie_intreg >> expresie_intreg

expresie< выражение

Mai puțin sau egal

expresie<= выражение

expresie > expresie

Mai mult sau egal

expresie >= expresie

expresie == expresie

expresie != expresie

Conjuncție pe biți

expresie & expresie

Negarea echivalenței

expresie ^ expresie

Disjuncție pe biți

expresie | expresie

„ȘI” logic

expresie && expresie

„SAU” logic

expresie | | expresie

Expresie condiționată

expresie? expresie1: expresie2

Sarcina simplă

expresie = expresie

Atribuire compusă, semnul @ - unul dintre semnele operatorului * / % + -<< >> & ^ |

expresie @= expresie

Urmați operațiunea

expresie, expresie

Să luăm în considerare caracteristicile utilizării principalelor operațiuni enumerate mai sus.

Operația „: :” (două două puncte) este folosită pentru a clarifica numele unui obiect de program în cazul în care două nume identice sunt cunoscute în acest loc în program, de exemplu, când un nume este declarat global, iar celălalt în corpul unei funcții. Dacă numele este precedat de două puncte, atunci este un nume global.

Pentru a accesa membrii unei structuri sau uniuni, puteți utiliza fie numele datelor structurii, fie un pointer către datele structurii. In primul caz Numele complet a unui membru al structurii constă din numele structurii în sine și numele membrului structurii, separate printr-un punct. În al doilea caz, numele indicatorului către structură este urmat de un semn -> (săgeată), urmat de numele membrului structurii. Lăsați un program să declare un tip structural AnyStruct care conține o componentă numită membru de tip int și declarată

AnyStruct s1; // Date s1 de tip AnyStruct

AnyStruct *ps1 = // Indicator către o dată de tip AnyStruct

Apoi membrul membrului structurii din s1 poate fi accesat ca s1.member sau ca ps1->member.

Deoarece un membru al unei structuri poate fi un pointer, C++ are operații speciale pentru dereferențiarea unui astfel de pointer, operațiile .* și ->. Fie ca unul dintre membrii structurii AnyStruct să fie un pointer pp1 către o dată de tip int. Apoi expresiile s1.*pp1 și ps1->*pp1 vor oferi acces la valoarea de referință indicată de pp1 din s1.

S-a remarcat mai sus că numele unui tablou în C/C++ este interpretat ca un pointer constant către primul element al matricei. Pentru a dereferi un indicator, de ex. Pentru a accesa un dat printr-un pointer către acest dat, utilizați operația * (asterisc). Prin urmare, dacă programul declară o matrice

int Matrice1[10];

atunci expresia *Matrice1=0 este folosită pentru a atribui o valoare zero primului element al matricei. Pentru a accesa un element de matrice arbitrar, trebuie să specificați indexul elementului, de exemplu, Matrice1. Această expresie este echivalentă cu *(Array1 + 3), adică. mai întâi trebuie să incrementați pointerul Array1 cu 3 unități, apoi să anulați referința indicatorului rezultat. Când adăugați un indicator la un obiect de tip T cu un întreg N, valoarea indicatorului este mărită de N ori lungimea de acest tip T. Rețineți că indexul poate fi setat nu numai pentru numele de matrice, ci și pentru orice tip de pointer, cu excepția unui pointer către un tip void:

int *pint = &Array[ 4 ]; pint [2] =1;

În acest exemplu, indicatorul pint este inițializat la adresa celui de-al cincilea element al matricei, iar apoi celui de-al șaptelea element al acelei matrice i se atribuie valoarea 1.

Indicele poate fi orice expresie cu o valoare de tip întreg.

Deoarece C++ este un limbaj tipizat, definește conversiile explicite și implicite ale tipurilor de date. Conversiile implicite sunt efectuate pe operații aritmetice duble și de atribuire și se numesc conversii aritmetice standard. Aceste transformări sunt efectuate în următoarea secvență:

Dacă un operand este un dublu lung, celălalt operand este convertit într-un dublu lung;

În caz contrar, dacă un operand este de tip double, celălalt operand este convertit în tipul double;

În caz contrar, dacă un operand este de tip float, celălalt operand este convertit în float;

În caz contrar, dacă un operand este de tip unsigned long int, celălalt operand este convertit în tipul unsigned long int;

În caz contrar, dacă un operand este de tip long int, >celălalt operand este convertit în tipul long int;

În caz contrar, sunt efectuate conversiile întregi standard, câmpurile de biți char, short int și int fiind convertite în int, atunci dacă un operand are marime mai mare(gamă mai mare de valori) decât celălalt operand, apoi al doilea operand este convertit la tipul operandului mai mare;

În alte cazuri, operanzii sunt de tip int.

Conversia explicită a tipului poate fi specificată în două forme. Prima formă este compatibilă cu C și urmează numele tipului din paranteze cu valoarea de convertit, care poate fi o expresie primară sau o expresie cu un operator cu un singur loc. Numele tipului în acest caz poate fi reprezentat printr-o succesiune de descriptori, de exemplu, (long int *) pp specifică conversia unor date pp într-un tip pointer la long int. A doua formă de conversie a tipului este scrisă ca un apel de funcție, unde numele tipului trebuie specificat printr-un identificator, cum ar fi int(x). Trebuie remarcat faptul că rezultatul unei conversii explicite nu este o valoare L.

Operațiile de autoincrement și autodecrement (++ și --) pot fi prefix sau postfix și provoacă o creștere (scădere) a operandului său cu unul, adică. expresia ++x este echivalentă cu x = x +1, iar --x este echivalent cu x = x - 1. O operație de prefix este efectuată înainte ca operandul său să fie utilizat în evaluarea expresiei, iar o operație de postfix este efectuată după ea. operandul este folosit în expresie, de exemplu, ca rezultat al evaluării expresiei

X * 2 + y-- *3

variabila x se mărește mai întâi cu 1 și apoi se înmulțește cu 2, variabila y se înmulțește mai întâi cu 3, apoi se micșorează cu 1. Dacă înainte de a evalua această expresie x și y erau egale cu 1, atunci rezultatul expresiei va fi egal. la 5, în plus, variabila x va primi valoarea 2, iar variabila y este valoarea 0. Astfel, operațiile de autoincrement și autodecrement au întotdeauna ca efect secundar modificarea valorilor operanzilor lor. Operanzii acestor operații trebuie să fie valori L.

Operatorul ~ (tilde) se aplică numai unei valori întregi și înlocuiește toți biții operandului său cu o valoare de la 0 la 1 și biții cu o valoare de la 1 la 0.

Negația logică (operație!) returnează valoarea 0 a unui tip întreg dacă operandul nu este zero, sau valoarea 1 dacă operandul este zero.

Operațiile „singur +” și „single -” au semnificația matematică obișnuită, semnul + nu schimbă valoarea operandului, semnul - schimbă semnul operandului la opus.

Pentru a obține adresa operandului, care este o valoare L, se folosește operatorul & (ampersand). Rezultatul acestei operațiuni va fi un pointer către tipul de date corespunzător. Dereferențiarea pointerului, de ex. obţinerea unei valori date de la un pointer către aceasta este asigurată de operaţia * (asterisc). Rezultatul operației de dereferire este valoarea L.

C++ definește operațiuni pentru plasarea datelor în memoria dinamică și eliminarea datelor dinamice din memorie.

Noua operație necesită un nume de tip ca operand și are scopul de a plasa tipul specificat în memoria dinamică; rezultatul operației va fi un pointer către cel dat. Dacă este imposibil să alocați memorie, noua operație returnează NULL - o constantă predefinită care are valoare nulăîn aproape toate compilatoarele C și C++. Memoria alocată prin noua operațiune poate fi inițializată prin specificarea unei valori inițiale în paranteze după numele tipului de date scalare; setarea valorilor inițiale pentru agregatele de date va fi discutată mai târziu. Exemple de utilizare a noii operațiuni:

int *ip = int nou; /* creând un obiect de tip int și obținerea unui pointer către el */

int *ip2 = new int(2); // la fel cu instalarea valoarea initiala 2

inr *intArray = int nou [ 10 ]; // matrice de 10 elemente de tip int

dublu **matr = dublu nou [ m ] [ n ]; // matrice de m rânduri și n coloane

Datele plasate în memoria dinamică prin noua operație sunt șterse din memorie prin operația de ștergere cu un operand pointer a cărui valoare este obținută prin noua operație, de exemplu,

șterge intArray; șterge ip2;

Operația de ștergere eliberează doar memoria dinamică, dar nu modifică valoarea operandului pointer. Programatorul trebuie să-și amintească că după eliberarea memoriei, acest indicator nu poate fi folosit pentru a accesa datele.

Mărimea unui tip dat sau dat în octeți poate fi obținută folosind dimensiunea operației. Operandul poate fi de orice tip, cu excepția tipului funcției și a câmpului de biți. Dacă operandul este un nume de tip, acesta trebuie inclus între paranteze. Valoarea returnată are un tip predefinit size_t, acesta este un tip întreg a cărui dimensiune este determinată de implementarea compilatorului, de obicei tipul size_t corespunde cu unsigned int. Mărimea matricei este egală cu numărul de octeți ocupați de matrice în memorie, dimensiunea unui șir literal este numărul de caractere din literalul +1, adică. octetul nul final este luat în considerare la determinarea lungimii literalului. Valoarea returnată de sizeof este o constantă.

Operațiile aritmetice duble de înmulțire (*), împărțire (/), rest de împărțire întregi (%), adunare (+) și scădere (-) au sensul obișnuit și prioritatea relativă obișnuită. Dacă operanzii unei operații aritmetice sunt de diferite tipuri, mai întâi se efectuează conversii aritmetice standard, iar tipul rezultatului operației este determinat de tipul comun al operanzilor după conversiile standard. Prin urmare, expresia 7/2 va avea ca rezultat 3 int, deoarece ambii operanzi sunt de tip int, iar expresia 7.0/2 va avea ca rezultat 3,5 duble, deoarece primul operand este de tip.

Operații ale relației dintre două expresii (<, <=, >, >=) necesită operanzi de tip aritmetic sau ambii operanzi trebuie să fie pointeri către același tip. Pentru operanzi de tip aritmetic, se evaluează valorile operanzilor, se efectuează conversii aritmetice standard și se returnează un int de tip 1 dacă relația este valabilă (adevărat) sau 0 dacă relația nu este valabilă (fals). Când sunt comparați doi pointeri, rezultatul depinde de plasarea relativă în memorie a obiectelor la care se referă pointerii. Operațiile de comparare (== și !=) sunt efectuate într-un mod similar, dar au o prioritate mai mică.

Expresiile relaționale pot fi conectate prin conjunctive logice && (conjuncție, înmulțire logică) și | | (disjuncție, adunare logică). În general, operanzii conectivului logic pot fi orice valori scalare, iar operația && dă un rezultat egal cu 1 de tip int dacă ambii operanzi au valori diferite de zero, iar | | dă un rezultat de 0 dacă ambii operanzi sunt zero. Se folosește o formă scurtă de calculare a valorii conectivelor logice: dacă în operația && primul operand este zero, atunci al doilea operand nu este calculat și este returnat 0, dacă în | | Primul operand nu este zero, apoi al doilea operand nu este evaluat și se returnează valoarea 1.

După cum s-a menționat deja, atribuirea, notată prin semnul = în C/C++, este tratată ca o operație și returnează valoarea care a fost atribuită operandului din stânga. Operația de atribuire este evaluată de la dreapta la stânga, adică. mai întâi se calculează valoarea de atribuit, apoi se realizează atribuirea. Acest lucru vă permite să scrieți expresii precum x = y = z = 1 pentru a seta mai multe variabile la aceeași valoare. Este posibil, deși acest lucru reduce claritatea programului, să se construiască expresii cu efecte secundare de forma (x = 2) * (y = 3) + (z = 4). Rezultatul acestei expresii va fi 24, dar în același timp variabilele x, y și z vor primi valori noi.

Pe lângă atribuirea simplă, există un set de operații de atribuire compusă în care o atribuire este combinată cu un operator dublu specificat. Scrierea x += y este echivalentă cu x = x + y.

Operațiile de schimbare la stânga și la dreapta sunt definite pentru operanzi întregi. La efectuarea operației e1<< e2 биты первого операнда сдвигаются влево на e1 разрядов и результат имеет тип первого операнда. Освобождающиеся правые разряды заполняются нулями. При сдвиге вправо (e1 >> e2) dacă e1 este de tip nesemnat, biții stângi liberi sunt umpluți cu zerouri, iar dacă e1 este de tip semnat, bitul cu semn se repetă în biții stângi liberi.

Operațiile de înmulțire logică pe biți, adunare logică și exclusiv sau (negarea echivalenței) sunt permise peste operanzi întregi. În aceste operații, operanzii sunt tratați ca secvențe de biți și operația este efectuată pe fiecare pereche de biți corespunzători din ambii operanzi. De exemplu, rezultatul expresiei (x >> (p - n +1)) & (~(~0<< n)) будет выделение из целого беззнакового x n битов, начиная с бита с номером p, и сдвиг выделенных битов вправо, т.е. выделение n-разрядного целого, хранящегося в машинном слове x начиная с p-го разряда.

C/C++ are o construcție numită expresie condiționată. Expresia condiționată este construită după următoarea schemă:

condiție? expresie1: expresie2

Condiția poate fi orice expresie scalară. Dacă rezultatul calculării condiției este diferit de zero, atunci valoarea întregii expresii va fi expresia1; dacă condiția este zero, valoarea întregii expresii este determinată de expresia2. Al doilea și al treilea operanzi ai expresiei condiționate trebuie să fie fie ambele tipuri aritmetice, fie structuri sau uniuni de același tip, fie pointeri de același tip, fie unul dintre ei este un pointer către un anumit tip, iar celălalt operand este NULL sau are tip void*. Expresia x > 0 ? 1:0 returnează 1 dacă x este mai mare decât 0 și 0 în caz contrar.

O expresie poate fi reprezentată ca o secvență de expresii separate prin virgule, caz în care toate expresiile sunt evaluate de la stânga la dreapta și este returnată valoarea ultimei expresii din listă. De exemplu, ca urmare a evaluării expresiei

x = 2, e * 3, x +1 se va obține valoarea 3 și în același timp x va primi valoarea 2. Rezultatul înmulțirii e * 3 nu poate fi folosit în niciun fel.

2.5 Operatori C++

Operatorii sunt constructe sintactice care definesc acțiunile efectuate de un program. Următoarele tipuri de operatori sunt disponibile în C/C++: operatori de expresie, operatori de selecție, operatori de buclă și operatori de salt. Sintaxa unor operatori conține expresii care joacă rolul de condiții, în funcție de îndeplinirea sau neîndeplinirea cărora este selectată o anumită secvență de acțiuni. Deoarece nu există expresii booleene în C, orice expresie care se evaluează la o valoare scalară este utilizată ca condiții, iar condiția este îndeplinită dacă valoarea este diferită de zero și eșuează dacă este zero. Mai multe instrucțiuni pot fi combinate într-o instrucțiune compusă prin includerea lor între acolade (operator). Sfârșitul unei instrucțiuni (cu excepția unei instrucțiuni compuse) este indicat printr-un punct și virgulă, care în acest caz face parte din instrucțiune.

Orice operator poate fi precedat de o etichetă sub forma unui identificator separat de operator fiind marcat cu două puncte. Eticheta servește doar pentru a o indica în declarația de salt.

Cel mai simplu este operatorul expresiei, care este o expresie completă care se termină cu punct și virgulă, de exemplu,

x = 3; y = (x +1) * t; i++;

O expresie scrisă ca operator este evaluată, dar valoarea ei se pierde și efectul operatorului de expresie sunt efectele secundare care însoțesc evaluarea, de exemplu, atunci când se efectuează operații de atribuire, autoincrementare și autodecrementare.

Operatorii de selecție în C/C++ sunt reprezentați de un operator condiționat și un comutator. Instrucțiunea condiționată este similară instrucțiunilor condiționate din alte limbaje de programare și poate fi folosită în forme scurte și complete, care corespund schemelor:

if (expresie condiționată) declarație

if (expresie condiționată) statement-1 else statement-2

În forma scurtă a operatorului condițional, se evaluează expresia condiției și, dacă valoarea acesteia este diferită de zero, se execută instrucțiunea care urmează condiției, în caz contrar nu se întreprinde nicio acțiune.

Documente similare

    Analiza programării orientate pe obiecte care simulează modul în care se fac lucrurile. Principii de bază ale programării orientate pe obiecte: încapsulare, moștenire, polimorfism. Conceptul de clase, câmpuri, metode, mesaje, evenimente.

    test, adaugat 22.01.2013

    Utilizare limbaj de scripting programare pentru dezvoltarea aplicaţiilor web (scenarii). Aflați elementele de bază ale programării orientate pe obiecte în limbaj PHP. Familiarizarea cu metode speciale de lucru cu clasele. Scopul interfețelor.

    test, adaugat 14.03.2015

    caracteristici generale abordare orientată pe obiect în programare, proprietățile și principiile sale de bază. Dezvoltarea unui program de automatizare a activităților de cafenea bazat pe o abordare orientată pe obiecte, proiectarea și implementarea unei scheme de date.

    lucrare de curs, adăugată 22.01.2012

    Caracteristicile și proprietățile limbajelor de programare. Studiul evoluției limbajelor de programare orientate pe obiecte. Construirea unei hărți evolutive a mecanismelor OOP. Dezvoltarea unui model conceptual de funcționare a interfeței cu utilizatorul.

    lucrare curs, adăugată 17.11.2014

    Utilizarea programarii orientate pe obiecte - buna decizie atunci când se dezvoltă proiecte software mari. Obiectul și clasa ca bază a unui limbaj orientat pe obiecte. Conceptul de limbaje orientate pe obiecte. Limbi și medii software.

    test, adaugat 17.01.2011

    Studiul principiilor programarii orientate pe obiecte, in care conceptele principale sunt conceptele de clase si obiecte. Proprietăți ale acestui tip de programare: încapsulare, polimorfism, moștenire. Descrierea clasei. Constructori și destructori.

    prezentare, adaugat 14.10.2013

    Crearea de software - un sistem de modelare de simulare pe tema „Linie de producție cu puncte tehnice de control”. Descrierea datelor de intrare și de ieșire. Programare orientată pe obiecte. Diagrame de module și procese.

    lucrare curs, adăugată 01.09.2014

    Proprietățile unui limbaj de programare orientat pe obiecte. Concepte de încapsulare și moștenire. Funcții virtuale și polimorfism. Inițializarea unei instanțe de obiect folosind un constructor. Crearea dinamică a obiectelor. Compatibilitatea tipului de obiect.

    rezumat, adăugat 15.04.2015

    Conceptul de algoritm și caracteristicile acestuia ca element de bază al programării. Forme de prezentare a algoritmilor, structuri algoritmice de bază. Programare structurată și orientată pe evenimente. Programare orientată pe obiecte.

    rezumat, adăugat 17.07.2008

    Dezvoltarea unui program folosind principiile programarii orientate pe obiecte intr-un limbaj de nivel inalt Cu instrumente Microsoft Visual Studio 2010. Construirea unui algoritm de implementare. Clasa de program, instrucțiuni de utilizare a programului.

Textele cursului discută principiile și instrumentele de bază ale programării orientate pe obiecte folosind limbajul C++ și sistemul de programare Borland C++. Anexa conține sarcini pe care le puteți rezolva singur. Se presupune că cititorul este deja familiarizat cu elementele de bază ale limbajelor de programare de uz general. Manualul este destinat studenților specialității „Matematică aplicată” și poate fi folosit de studenții altor specialități pentru studiul independent al C++.

1. Abordare orientată pe obiecte a programării

1.1 Tehnologii de programare

Tehnologia de programare este un set de metode și instrumente pentru dezvoltarea (scrierea) programelor și procedura de utilizare a acestor metode și instrumente.

În primele etape ale programării, când programele erau scrise ca secvențe de instrucțiuni ale mașinii, nu exista o tehnologie de programare. Primii pași în dezvoltarea tehnologiei au constat în reprezentarea unui program ca o secvență de declarații. Scrierea unei secvențe de instrucțiuni de mașină a fost precedată de întocmirea unei diagrame operator care reflectă succesiunea operatorilor și tranzițiile dintre ei. Abordarea operatorului a făcut posibilă dezvoltarea primelor programe care să automatizeze compilarea programelor - așa-numitele componente ale programului.

Odată cu creșterea dimensiunii programelor, părțile lor separate au început să fie identificate și proiectate ca subrutine. Unele dintre aceste subrutine au fost combinate în biblioteci, din care subrutinele puteau fi incluse în programele de lucru și apoi apelate din programele de lucru. Aceasta a marcat începutul programării procedurale - un program mare era reprezentat de o colecție de proceduri subrutine. Una dintre subrutine a fost cea principală, iar execuția programului a început cu ea.

În 1958, au fost dezvoltate primele limbaje de programare, Fortran și Algol-58. Un program Fortran a constat dintr-un program principal și o serie de proceduri - subrutine și funcții. Programul din ALGOL-58 și versiunea sa ulterioară ALGOL-60 era un singur întreg, dar avea o structură de bloc, inclusiv un bloc principal și blocuri imbricate de subrutine și funcții. Compilatorii pentru Fortran au furnizat traducerea separată a procedurilor și integrarea lor ulterioară într-un program de lucru; primii compilatori pentru Algol au presupus că întregul program a fost tradus dintr-o dată; nu a fost furnizată traducerea separată a procedurilor.

Abordarea procedurală a necesitat structurarea viitorului program, împărțirea acestuia în proceduri separate. Când dezvoltați o procedură separată, trebuia doar să știți despre alte proceduri scopul lor și cum să le apelați. A devenit posibilă reelaborarea procedurilor individuale fără a afecta restul programului, reducând în același timp costul forței de muncă și timpul de calculator pentru dezvoltarea și modernizarea programelor.

Următorul pas în aprofundarea structurării programelor a fost așa-numita programare structurată, în care programul în ansamblu și procedurile individuale au fost considerate ca secvențe de structuri canonice: secțiuni liniare, cicluri și ramuri. A devenit posibil să se citească și să verifice un program ca text secvențial, ceea ce a crescut productivitatea programatorilor la dezvoltarea și depanarea programelor. Pentru a spori structura programului s-au înaintat cerințe pentru o mai mare independență a subrutinelor; subprogramele trebuie să comunice cu programele care le apelează doar prin transmiterea de argumente; utilizarea în subrutine a variabilelor aparținând altor proceduri sau programului principal a fost considerat nedorit.

Programarea procedurală și structurată a afectat, în primul rând, procesul de descriere a unui algoritm ca o secvență de pași care conduc de la variația datelor de intrare la rezultatul dorit. Pentru a rezolva probleme speciale, au început să fie dezvoltate limbaje de programare, axate pe o anumită clasă de probleme: sisteme de management al bazelor de date, modelare de simulare etc.

La dezvoltarea traducătorilor, s-a acordat din ce în ce mai multă atenție detectării erorilor în codul sursă al programelor, reducând astfel timpul petrecut cu depanarea programelor.

Utilizarea programelor în diverse domenii ale activității umane a condus la necesitatea îmbunătățirii fiabilității tuturor software-ului. Una dintre direcțiile de îmbunătățire a limbajelor de programare a fost creșterea nivelului de tastare a datelor. Teoria tipurilor de date presupune că fiecare dată utilizată într-un program aparține unui singur tip de date. Tipul de datum definește setul de valori posibile pentru datum și setul de operații permise pe acest datum. În unele cazuri, datele de un anumit tip pot fi convertite în date de alt tip, dar o astfel de conversie trebuie să fie reprezentată în mod explicit în program. În funcție de gradul de îndeplinire a cerințelor enumerate, putem vorbi despre nivelul de tastare al unui anumit limbaj de programare. Dorința de a crește nivelul de scriere a unui limbaj de programare a dus la apariția limbajului Pascal, care este considerat un limbaj puternic tipizat, deși permite unele conversii implicite de tip, de exemplu, întregul în real. Utilizarea unui limbaj tastatut strict la scrierea unui program face posibilă identificarea multor erori în utilizarea datelor chiar și la traducerea textului sursă și, prin urmare, crește fiabilitatea programului. În același timp, tastarea strictă a restrâns libertatea programatorului și a făcut dificilă utilizarea unor tehnici de conversie a datelor adesea folosite în programarea sistemului. Aproape concomitent cu Pascal a fost dezvoltat limbajul C, mai orientat spre programarea sistemului și legat de limbaje slab tipizate.

Toate limbajele de programare universale, în ciuda diferențelor de sintaxă și cuvinte cheie utilizate, implementează aceleași structuri canonice: operatori de atribuire, bucle și ramuri. Toate limbile moderne au tipuri de date predefinite (de bază) (tipuri aritmetice întregi și reale, tipuri de caractere și, eventual, șiruri), și este posibil să se utilizeze agregate de date, inclusiv matrice și structuri (înregistrări). Pentru datele aritmetice sunt permise operații aritmetice obișnuite; pentru agregatele de date sunt furnizate de obicei doar operația de atribuire și posibilitatea de a accesa elementele agregatului. În același timp, atunci când se dezvoltă un program pentru a rezolva o problemă aplicată specifică, este de dorit să existe o apropiere conceptuală cât mai apropiată a textului programului de descrierea problemei. De exemplu, dacă rezolvarea unei probleme necesită efectuarea de operații pe numere complexe sau matrici pătrate, este de dorit ca programul să includă în mod explicit operatori pentru adunarea, scăderea, înmulțirea și împărțirea datelor, cum ar fi un număr complex, adunarea, scăderea, înmulțirea și inversarea datelor precum ca o matrice pătrată. Există mai multe moduri de a rezolva această problemă:

Prin construirea unui limbaj de programare care să conțină cât mai multe tipuri de date și alegând un subset al acestui limbaj pentru fiecare clasă de probleme. Acest tip de limbaj este uneori numit limbaj shell. Limbajul PL/1 a pretins rolul unui limbaj shell, dar s-a dovedit a fi atât de complex încât nu a fost niciodată posibil să se construiască o descriere oficială a acestuia. Lipsa unei descrieri oficializate nu a împiedicat însă utilizarea pe scară largă a PL/1 atât în ​​Europa de Vest, cât și în URSS.

Construcția unui limbaj extensibil care conține un nucleu mic și poate fi extins pentru a completa limbajul cu tipuri de date și operatori care reflectă esența conceptuală a unei clase specifice de probleme. Un astfel de limbaj se numește limbaj de bază. Limbile Simula și Algol-68 au fost dezvoltate ca limbaje de bază; nu au fost utilizate pe scară largă, dar au avut o mare influență asupra dezvoltării altor limbaje de programare.

O dezvoltare ulterioară a celei de-a doua căi a fost abordarea orientată pe obiecte a programării, discutată în paragraful următor.

1.2. Esența abordării orientate pe obiecte a programării

Ideile principale ale abordării orientate pe obiecte se bazează pe următoarele prevederi:

Un program este un model al unui proces real, parte a lumii reale.

Un model al lumii reale sau o parte a acesteia poate fi descris ca un set de obiecte care interacționează între ele.

Un obiect este descris printr-un set de parametri, ale căror valori determină starea obiectului și un set de operațiuni (acțiuni) pe care obiectul le poate efectua.

Interacțiunea dintre obiecte se realizează prin trimiterea de mesaje speciale de la un obiect la altul. Un mesaj primit de un obiect poate necesita anumite acțiuni, cum ar fi schimbarea stării obiectului.

Obiectele descrise de același set de parametri și capabile să efectueze același set de acțiuni constituie o clasă de obiecte de același tip.

Din perspectiva limbajului de programare, o clasă de obiecte poate fi gândită ca un tip de datum, iar un obiect individual poate fi gândit ca un datum de acest tip. Definirea de către programator a propriilor clase de obiecte pentru un set specific de sarcini ar trebui să îi permită să descrie sarcini individuale în termenii clasei de sarcini în sine (cu o alegere adecvată a numelor de tip și a numelor obiectelor, parametrii acestora și acțiunile efectuate).

Astfel, abordarea orientată pe obiect presupune că la dezvoltarea unui program trebuie determinate clasele de obiecte utilizate în program și construite descrierile acestora, apoi trebuie create instanțe ale obiectelor necesare și trebuie definită interacțiunea dintre ele.

Este adesea convenabil să structurați clasele de obiecte astfel încât acestea să formeze o structură ierarhică. De exemplu, clasa „Student”, care descrie un student abstract, poate servi ca bază pentru construirea claselor „elev anul I”, „elev anul II”, etc., care au toate proprietățile unui student în general și unele proprietăți suplimentare care caracterizează un student al unui anumit curs. La dezvoltarea unei interfețe cu utilizatorul, programele pot folosi obiecte din clasa generală „Ferestre” și obiecte din clase de ferestre speciale, de exemplu, ferestre de mesaje de informații, ferestre de introducere a datelor etc. În astfel de structuri ierarhice, o clasă poate fi considerată ca clasă de bază pentru alte clase derivate din ea. Un obiect al unei clase derivate are toate proprietățile clasei de bază și unele proprietăți proprii și poate răspunde la aceleași tipuri de mesaje de la alte obiecte ca un obiect al clasei de bază și la mesaje care sunt semnificative numai pentru clasa derivata. Se spune în mod obișnuit că un obiect al unei clase derivate moștenește toate proprietățile clasei sale de bază.

Dimensiune: px

Începeți să afișați de pe pagină:

Transcriere

1 Agenția Federală pentru Transportul Feroviar Ural State Transport University Departamentul de Tehnologii Informaționale și Securitate Informațională A. V. Kibardin PROGRAMARE ÎN LIMBAJUL C++ Partea 3 Fundamente programare vizualăîn mediul Borland C++ Builder Editura Ekaterinburg UrGUPS 2012

2 UDC (075.8) K38 K38 Kibardin, A. V. Programare în C++. În 3 ore Partea 3. Bazele programării vizuale în mediul Borland C++ Builder: metodă educațională. indemnizaţie / A. V. Kibardin. Ekaterinburg: Editura UrGUPS, p. Manualul este destinat învățării elementelor de bază ale designului vizual și al programării orientate pe evenimente în limbajul algoritmic C++ în mediul pachetului Borland C++ Bulder. Se adresează studenților din domeniul „Mecatronică și Robotică”, precum și studenților, studenților absolvenți, studenților Facultății de Educație și Departamentului pregătitor, care studiază bazele tehnologiilor informaționale moderne. UDC (075.8) Publicat prin hotărâre a consiliului editorial și editorial al universității Autor: A. V. Kibardin, Conf. univ. al Departamentului de Tehnologii Informaționale și Securitate Informațională, Ph.D. fizica si matematica Științe, USGUPS Recenzători: G. B. Smirnov, Profesor al Departamentului de Informatică, Doctor în Inginerie. Științe, UrFU numit după. Primul președinte al Rusiei B.N. Elțin V.I. Radchenko, profesor al Departamentului de Tehnologii Informaționale și Securitate Informațională, doctor în fizică și matematică. Științe, UrGUPS Ural State University of Transport and Communications (URGUPS), 2012

3 CUPRINS INTRODUCERE... 4 BAZELE PROGRAMĂRII ÎN MEDIUL C++ BUILDER... 5 LUCRUL CU UN MEDIU INTEGRAT DE DEZVOLTARE A APLICAȚIILOR..9 DEZVOLTAREA INTERFEȚEI PROGRAMULUI. C++ BUILDER COMPONENTE DEZVOLTAREA CODULUI APLICAȚIEI. EVENIMENTE ȘI MANIPULATORI DE EVENIMENTE.17 MANIPULAREA SITUAȚIUNILOR EXCEPȚIONALE ÎN PROGRAM 20 DEZVOLTAREA INTERFEȚEI APLICAȚIEI PREGĂTIREA APLICAȚIEI PENTRU DISTRIBUȚIE LUCRARE CU GRAFICE LUCRARE CU FIȘIERE CU BAZE DE DATE UNELE COMPONENTE PENTRU PIERDERE DE DATE ÎNTREBĂRI PENTRU DISTRIBUȚIILE PROGRAMULUI LISTA BIBLIOGRAFICĂ

4 INTRODUCERE Dezvoltarea rapidă a tehnologiei de calcul, nevoia de mijloace eficiente Dezvoltarile software au dus la aparitia pe piata software a unui numar de sisteme de programare axate pe dezvoltarea rapida a aplicatiilor, printre care trebuie remarcate Microsoft Visual Basic si Borland Delphi. Sistemele de dezvoltare rapidă se bazează pe tehnologia designului vizual și a programării bazate pe evenimente, a căror esență este că mediul de dezvoltare preia cea mai mare parte a muncii de generare a codului de program, lăsând programatorul să proiecteze casete de dialog și să scrie funcții pentru procesarea evenimentelor. care apar în program. Este clar că astfel de sisteme măresc dramatic productivitatea programatorului. Succesul și popularitatea Delphi au făcut ca Borland să dorească să extindă metoda de dezvoltare rapidă în domeniul programării profesionale, ceea ce a dus la apariția Borland C++ Builder. C++ Builder este un mediu de dezvoltare rapidă care utilizează limbajul C++ extins (limbajul C++ Builder) ca limbaj de programare. Acest tutorial descrie tehnologiile de programare vizuală și bazate pe evenimente în C++ în mediul C++ Builder. Pentru a lucra cu instrucțiuni metodologice, trebuie să stăpânești elementele de bază ale programării în C++ și să cunoști următoarele tehnologii: programare structurată; programare modulară; programare orientată pe obiecte (OOP). C++ Builder este un mediu de dezvoltare rapidă în care, ca limbă, o mare cantitate de literatură educațională este dedicată acestor tehnologii, inclusiv. 4

5 BAZELE PROGRAMĂRII ÎN MEDIUL C++ Builder Caracteristici ale programării în mediul Windows Sistemul C++ Builder este conceput pentru dezvoltarea de programe care rulează în mediul Windows. Programarea în Windows are următoarele caracteristici: 1) codul programului constă în proceduri de procesare a mesajelor pe care Windows le trimite către o aplicație (program); 2) Windows înregistrează evenimentele care au loc în programe și hardware și trimite mesaje corespunzătoare programului; 3) mai multe programe pot fi executate simultan. Aceste programe împart resursele computerului între ele; 4) programul care rulează se află în zona memoriei de lucru și așteaptă mesaje din Windows la care trebuie să răspundă; 5) interacțiunea cu hardware-ul are loc prin interfața grafică a dispozitivelor. Windows oferă dezvoltatorului programului ceea ce se numește un mediu bazat pe evenimente, în care codul programului este executat ca răspuns la un anumit eveniment. Windows generează un mesaj de intrare pentru fiecare eveniment de intrare generat de utilizator folosind mouse-ul sau tastatura. Windows stochează mesajele de intrare în coada de mesaje de sistem. Aceste mesaje sunt apoi trimise în coada de mesaje a aplicației. Un mesaj către o aplicație Windows este generat prin crearea unei intrări de mesaj în coada de mesaje. Unele mesaje din Windows sunt trimise direct în fereastra aplicației; acestea sunt așa-numitele mesaje în afara ordinului. O aplicație își poate crea propriile mesaje, le poate plasa într-o coadă de mesaje și le poate trimite către alte aplicații. Fiecare aplicație rulează în propria fereastră, care are o descriere unică a mânerului. Deoarece înregistrarea mesajului specifică cui este destinat mesajul, Windows îl redirecționează la adresa specificată. Aplicația trebuie să poată procesa orice mesaj. Pentru aproape fiecare eveniment, Windows are o procedură standard de gestionare. Aplicația trebuie să specifice că atunci când are loc un eveniment NM pentru care nu există cod special în program, trebuie să execute procedura standard Windows. Majoritate mesaje standard Programul este procesat automat deoarece toate obiectele C++ Builder au o procedură de gestionare a mesajelor încorporată. 5

6 Concepte de bază ale POO în C++ Builder Programarea în C++ Builder se bazează pe limbajul C++ extins (limbajul C++ Builder). C++ introduce un tip de date special, clasa. O clasă este o structură de date formată din următoarele elemente: câmpuri; metode; proprietăți. Câmpurile conțin date de un anumit tip. Metodele sunt funcții care efectuează anumite actiuni. Proprietățile sunt câmpuri de date care afectează comportamentul unui obiect. Ele diferă de câmpurile obișnuite prin faptul că atribuirea de valori implică apelarea metodelor corespunzătoare. Limbajul folosește clasa de cuvinte rezervată pentru a descrie o clasă. Clasa este declarată în modulul de aplicație (vezi mai jos). În C++, clasa de bază pentru toate clasele este clasa abstractă TObject: prin urmare, dacă trebuie să creați o nouă clasă de date, trebuie să utilizați următoarea descriere: class TNewObject: TObject class body; Vă reamintim că atunci când descrieți o clasă, antetul acesteia listează toate clasele care sunt de bază pentru aceasta. Capacitatea de a accesa elementele acestor clase este reglementată folosind cheile de acces private, protejate și publice (vezi). Un obiect este o instanță a unei clase. O instanță a unei clase este implementată de o variabilă a unui anumit tip de clasă, de exemplu: TNewObject *NewObject; Gestionarea fișierelor în C++ Builder La începutul lucrului la un proiect, C++ Builder oferă dezvoltatorului un program practic gata făcut. Programul constă dintr-o fereastră cu titlul Form1 și are funcționalitatea unei ferestre standard Windows. Aceasta creează următoarele fișiere de aplicație. Modulul principal al proiectului Project1.cpp conține codul programului principal scris în C++. Fișierul conține link-uri către toate formularele de proiect și modulele aferente. Conține și codul de inițializare a aplicației: 6

7 // #include #pragma hdrstop // USEFORM("Unit1.cpp", Form1); // WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) try Application->Initialize(); Aplicație->CreateForm(classid(tform1), &Form1); Aplicație->Run(); catch (Excepție &excepție) Aplicație->ShowException(&exception); catch (...) try throw Exception(""); catch (Excepție &excepție) Aplicație->ShowException(&exception); returnează 0; // Module de formular Pentru fiecare formular, C++ Builder creează un modul separat, care constă din două fișiere: fișier antetși un fișier de cod (conținutul acestor fișiere este afișat în fereastra editorului de cod). Fișierul antet Unit1.h conține o descriere a formularului și arată astfel: // #ifndef Unit1H #define Unit1H //

8 #include #include #include #include // clasa TForm1: public TForm publicat: // Componente gestionate de IDE private: // Declarații utilizator public: // Declarații utilizator fastcall TForm1(TComponent* Owner); ; // extern PACHET TForm1 *Form1; // #endif Fișierul de cod (modul formular) Unit1.cpp conține o descriere a funcțiilor, inclusiv procesarea evenimentelor: // #include #pragma hdrstop #include „Unit1.h” // #pragma package(smart_init) #pragma resource „*.dfm” TForm1 *Form1; // fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) // În plus, C++ Builder, analizând acțiunile programatorului, generează un fișier care descrie proprietățile formularului (formulare, dacă există mai multe dintre ele în proiect) ca componentă a bibliotecii standard componente vizuale Unit1.dfm, fișier proiect Project1.bpr și fișier resursă de proiect. Rezultatul compilarii proiectului (aplicația executabilă) este salvat în fișierul Project1.exe. Fișierele cu extensia .tds și .obj sunt create de compilator în timpul generării fișierului executabil. Fișierele de proiect de rezervă au caracterul „~” (*.~*) ca prim caracter de extensie. 8

9 LUCRUL CU UN MEDIU INTEGRAT DE DEZVOLTARE A APLICAȚIILOR Nucleul C++ Builder este mediul integrat de dezvoltare a aplicațiilor (IDE). După lansarea C++ Builder, pe ecran vor apărea mai multe ferestre, prezentate în Fig. 1. IDE-ul constă dintr-o fereastră principală, un inspector de obiecte, un designer de forme vizuale, o fereastră de editor de programe care include un vizualizator de clase și un editor de sursă de program. Fereastra principală include un meniu principal și mai multe bare de instrumente: panou de vizualizare standard, formular și text sursă, panou de depanare, panou de selecție a setărilor de mediu, panou personalizat și paleta de componente. Paleta de componente include 19 panouri. Componentele concentrate pe zonă specifică aplicatii. Fiecare componentă este reprezentată în paletă de propria sa pictogramă. Designer vizual de formulare Un formular este o viitoare fereastră Windows care găzduiește diverse controale (butoane, meniuri, casete de text, comutatoare etc.). Când programul creat este compilat și lansat, formularul se transformă într-o fereastră Windows obișnuită și efectuează acțiunile care sunt definite pentru acesta de către dezvoltator. Pot exista mai multe astfel de ferestre într-un program, dar numai una dintre ele este considerată fereastra principală, restul sunt auxiliare. Componente de formular Componentele paletei conțin imagini generalizate ale elementelor de control și au nume adecvate („buton”, „bară de defilare”, etc.). Odată ce o componentă este plasată pe un formular, aceasta conține de fapt o instanță a componentei corespunzătoare, adică un obiect. Object Inspector Inspectorul de obiecte este conceput pentru a seta proprietățile obiectelor și a determina reacțiile acestora la diferite evenimente. Obiectul curent este afișat în partea de sus a inspectorului într-o listă derulantă. Inspectorul de obiecte conține două pagini: „Proprietăți” și „Evenimente”. Pentru a modifica o anumită proprietate, trebuie să selectați un obiect din formular, să faceți clic pe pagina „Proprietăți”, apoi să faceți clic pe linia proprietății corespunzătoare și să setați noua sa valoare în fereastra care se deschide. Pagina „Evenimente” a inspectorului vă permite să definiți răspunsul programului la diferite evenimente sub forma funcțiilor corespunzătoare. 9

10 Fereastra principală Bare de instrumente Inspector Viewer Visual Class designer de editor de obiecte forme originale cod Fig. 1. Fereastra principală a mediului de dezvoltare a aplicațiilor Editor de programe Lângă fereastra principală a formularului se află fereastra editorului de programe. Comutarea între formular și editor de cod se poate face fie cu mouse-ul, fie cu tasta funcțională „F12”. Fereastra editorului este formată din două panouri: vizualizatorul de clase și editorul de text sursă al programului. Vizualizatorul de clasă afișează vizual structura conexiunilor dintre diferite obiecte de program și vă permite să navigați rapid prin textul acestuia. Codul programului este afișat în fereastra editorului sursă a programului. Asistent de codare intuitiv Editorul de cod are un set de instrumente care oferă o serie de funcții de asistență. Aceste instrumente sunt denumite colectiv asistent de codare intuitiv. Îndeplinește următoarele funcții: completarea codului; 10

11 lista contextuală a parametrilor; estimare rapida valori; sfaturi despre declarațiile de identificare; șabloane de cod. Manager de proiect Pe lângă formularul principal și modulul cu codul sursă al acestui formular, programul conține un fișier de proiect cu ajutorul căruia puteți gestiona fișiere (module) care sunt componente ale proiectului. Fereastra managerului este apelată de comanda View / Project Manager. Managerul de proiect vă permite să efectuați operațiuni pe fișiere. Acțiunile cu fișiere sunt efectuate folosind bara de instrumente a managerului de proiect. unsprezece

12 DEZVOLTAREA INTERFEȚEI PROGRAMULUI. COMPONENTE C++ BUILDER Dezvoltarea aplicațiilor Windows cu C++ Builder este foarte ușoară deoarece dezvoltatorul are la dispoziție o bibliotecă de obiecte extinsă (VCL). Această bibliotecă este construită pe un principiu ierarhic și se bazează pe clasa TObject. Acesta este un tip abstract definit în modulul Clase. Este strămoșul tuturor obiectelor: toate obiectele sunt derivate din el și au proprietăți moștenite de la TObject. Ierarhia obiectelor C++ Builder este prezentată în diagrama următoare. Obiect non-vizual Vizual fără control Control cu ​​fereastră non-ferestre C++ Builder Componentele sunt un tip special de obiect. Componentele, împreună cu metodele și handlerele de evenimente, au proprietăți. Proprietățile au valori prestabilite care pot fi modificate atât în ​​timpul execuției programului, cât și în timpul dezvoltării programului. Diferența dintre componente și obiecte este că componentele sunt obiecte vizuale; ele pot fi editate în timpul dezvoltării programului, dar obiectele non-vizuale nu. De exemplu, un RadioButton este un obiect vizual care este reprezentat grafic în paleta Componente. Comenzile sunt un tip special de componentă. Componentele care nu acționează ca comenzi sunt invizibile pentru utilizator; nu poate face nimic cu ei. De exemplu, componenta de meniu este vizibilă și accesibilă doar dezvoltatorului aplicației. Când lucrează cu aplicația, utilizatorul nu poate face nimic cu componenta de meniu. El vede doar rezultatul muncii programatorului cu această componentă, și anume un meniu în care puteți selecta ceva. În schimb, un buton este un element grafic vizibil utilizatorului. Utilizatorul poate efectua anumite acțiuni, cum ar fi clic pe un anumit buton. În cadrul categoriei de control, există o distincție între comenzile cu ferestre și cele fără ferestre. Comenzile ferestrelor sunt cele care: pot deveni active; poate conține alte controale; 12

13 au mâner pentru fereastră. Controalele fără ferestre sunt cele care: nu pot deveni active; nu poate conține alte controale; nu au mâner de fereastră. Să creăm o aplicație care poate calcula rădăcinile unei ecuații pătratice. Să începem cu dezvoltarea interfeței cu utilizatorul a programului. Lansați sistemul de programare C++ Builder și salvați imediat fișierul proiect și fișierul modul folosind comanda din meniul Fișier. Deoarece sistemul creează multe fișiere de lucru pentru proiectul dvs., ar trebui să le salvați într-un folder separat. Să remarcăm faptul că aveți deja o aplicație funcțională care afișează o fereastră goală. Puteți efectua acțiuni normale Windows cu această fereastră. Verificați acest lucru lansând aplicația folosind comanda de meniu Run / Run. În program, utilizatorul va trebui să introducă coeficienții ecuației a, b și c. Pentru a introduce aceste date, vom folosi componenta Editare (câmp de intrare). Componenta este plasată în fila Standard a paletei de componente. Faceți clic pe butonul Editare componentă, apoi mutați cursorul mouse-ului peste formular și faceți clic în locația dorită. Ca urmare a acestor acțiuni, pe formular va apărea un câmp de introducere cu inscripția Edit1 în interior. În acest caz, câmpul de intrare în sine va primi numele Edit1, sub care va fi disponibil programului. Numele obiectelor sunt create automat în C++Builder după următorul principiu: numele componentei plus numărul de serie al controlului plasat pe formular. Formularul cu toate controalele este prezentat în Fig. 2.!!! Dezvoltatorul de program își poate atribui propriile nume controalelor, dar acest lucru ar trebui să se facă numai prin intermediul Object Inspector, și nu în editorul de cod. Pentru a face acest lucru, trebuie să selectați proprietatea Name a elementului dorit în Object Inspector și să setați un nou nume. Să ștergem conținutul câmpului de intrare din etichetă. Pentru a face acest lucru, selectați câmpul de introducere din formular făcând clic pe acesta cu cursorul mouse-ului, în pagina „Proprietăți” a inspectorului de obiecte, selectați proprietatea Text a câmpului de introducere și în celula alăturată ștergeți inscripția Edit1. Să plasăm o inscripție deasupra câmpului de intrare, explicând că acest câmp de intrare este destinat introducerii coeficientului a. Să folosim componenta Label. Această componentă situat în fila „Standard”. Pentru a seta legenda, utilizați proprietatea Caption a acestui control. În mod similar, plasați câmpurile de intrare pentru coeficienții b și c pe formular și faceți inscripții adecvate deasupra acestora. Rezultatele calculelor, adică valorile rădăcinilor calculate x1 și x2, pot fi afișate pe formular folosind Editare și 13 componente deja cunoscute de dvs.

14 Etichetă. Plasați încă două elemente Editare și etichetele corespunzătoare deasupra lor pe formular. Orez. 2. Vizualizarea ferestrei proiectului Să plasăm două butoane pe formular: unul pentru a începe procesul de calcul, al doilea pentru a încheia programul. Să folosim componenta Button. Componenta Buton se află, de asemenea, în fila Standard. Să setăm etichetele pe butoane: „Calculați” și „Închideți”. Pentru a face acest lucru, utilizați proprietățile Caption ale butoanelor corespunzătoare. Să plasăm pe formular elemente de interfață atât de importante precum bara de meniu, bara de instrumente și bara de stare. Accesați fila „Win32” a panoului de componente și faceți clic pe pictograma ToolBar, apoi faceți clic pe formular cu cursorul mouse-ului. O bară de instrumente va apărea în partea de sus a formularului, fără niciun buton încă. Pentru a crea butoane din bara de instrumente, vom folosi componenta SpeedButton situată în fila „Adițional”. Plasați trei butoane pe bara de instrumente care corespund comenzilor Calculare, Ajutor și Ieșire. A evidentia butonul doritși folosiți proprietatea Glyph. Apoi faceți clic pe dreptunghiul cu trei puncte din bara de proprietăți. Ca rezultat, va apărea caseta de dialog editor 14

15 poze. În această fereastră, faceți clic pe butonul „Încărcare”; Găsiți subdirectorul Program Files\Common Files\Borland Shared\Images\Buttons și selectați imaginea corespunzătoare din lista de fișiere sugerate. În fereastra editorului, faceți clic pe OK. Reveniți la fila „Win32” și evidențiați pictograma StatusBar. Faceți clic pe cursorul mouse-ului pe formular. O bară de stare va apărea în partea de jos a formularului. Accesați fila Standard a paletei Componente și evidențiați pictograma MainMenu. Faceți clic pe cursorul mouse-ului oriunde în formular. Componenta MainMenu este non-vizuală, deci poate fi localizată oriunde în formular. Faceți dublu clic pe obiectul de meniu și editorul de meniu va apărea pe ecran. Pentru a-l folosi pentru a adăuga noi elemente de meniu, trebuie să efectuați următorii pași: 1) apăsați tasta „Enter”, va fi activat inspectorul de obiecte, care vă va solicita să introduceți un nume pentru elementul curent de meniu în Caption. linia; 2) introduceți cuvântul „Ecuație” și apăsați „Enter”. Sistemul va reveni la editorul de meniu. Apăsați Enter și în Object Inspector, introduceți cuvântul „Calculate”. Repetați acești pași de încă două ori pentru a adăuga subarticole Ajutor și Ieșire în meniu. Pentru a finaliza dezvoltarea interfeței programului, rămâne să adăugați încă un formular cu controalele necesare. A doua formă va fi fereastra de ajutor a programului. Utilizați comanda de meniu File/New/Form pentru a adăuga un al doilea formular la proiect. Schimbați titlul formularului în „Ajutor”. Plasați un obiect Memo1 pe formular folosind componenta Memo (câmp de introducere pe mai multe linii) din fila „Standard”. Această componentă vă permite să afișați text format din mai multe linii. Setați formularul și câmpul Memo1 la dimensiunile corespunzătoare. Pentru a face acest lucru, selectați obiectul dorit; pătratele negre vor apărea la marginile obiectului. Prin apucarea unuia dintre pătrate cu cursorul mouse-ului, puteți modifica dimensiunea obiectului. Direct sub câmpul de introducere, plasați un buton care închide fereastra de ajutor. Pentru a face acest lucru, utilizați componenta BitBtn din fila „Additiona”. În proprietatea sa Kind, selectați bkclose. Această valoare predefinită va închide această fereastră. Tot ce rămâne este să plasați textul de ajutor în câmpul de introducere. Selectați proprietatea Lines a câmpului de introducere, apoi faceți dublu clic pe butonul cu trei puncte în linia acestei proprietăți. Aceasta va deschide o fereastră de editor de text în care ar trebui să ștergeți numele câmpului și să introduceți text de ajutor, cum ar fi următorul: 15

16 Acest program calculează rădăcinile unei ecuații pătratice. Introduceți valorile coeficienților ecuației în ferestrele corespunzătoare și faceți clic pe butonul „Calculați”. Pentru a ieși, faceți clic pe butonul „Ieșire”. După ce ați introdus textul de ajutor, faceți clic pe OK. Salvați al doilea modul de formular. Aceasta completează dezvoltarea interfeței. 16

17 DEZVOLTAREA CODUL PROGRAMULUI APLICAȚIEI. EVENIMENTE ȘI MANIPULATORI DE EVENIMENTE Aplicațiile construite cu C++ Builder sunt aplicații Windows. Una dintre principalele proprietăți ale unor astfel de aplicații este managementul evenimentelor. Aceasta înseamnă că programul rulează pe baza mesajelor de eveniment generate care sunt procesate de codul aplicației. Un astfel de cod trebuie scris pentru fiecare eveniment la care programul trebuie să răspundă. O procedură concepută pentru a răspunde la un eveniment se numește funcție de gestionare a evenimentelor în C++Builder. Există două categorii de evenimente: evenimente cauzate de acțiunile utilizatorului, evenimente ale utilizatorului și evenimente regulate, evenimente controlate de software. Funcțiile pentru procesarea evenimentelor utilizatorului formează partea principală a codului aplicației. Acestea oferă interacțiune interactivă între aplicație și utilizator. C++Builder face acest lucru utilizând handlere de evenimente predefinite care pot fi utilizate de aproape toate componentele. Acestea includ manerele de evenimente pentru mouse și tastatură. Evenimentele comune (controlate de software) includ evenimente de activare, evenimente de terminare și evenimente de schimbare a stării. componente individualeși alte evenimente care sunt un rezultat indirect al acțiunilor utilizatorului. C++ Builder generează funcții pentru a gestiona fiecare eveniment și le denumește în funcție de numele componentelor pentru care sunt destinate aceste proceduri. De exemplu, dacă faceți dublu clic pe Buton1, în modulul formular va fi generată o funcție goală de gestionare a evenimentelor, care arată astfel: void fastcall TForm1::Button1Click(TObject *Sender) Apoi, trebuie să introduceți codul de program necesar în blocul compus. Selectați butonul Calculate, accesați pagina Evenimente din Object Inspector și faceți dublu clic pe numele handler-ului de evenimente OnClick. Sistemul va adăuga o funcție goală de procesare a clicurilor pe buton la textul modulului. Ce ar trebui să facă această funcție? În primul rând, trebuie să citească conținutul câmpurilor de intrare pentru coeficienții a, b și c; atunci valorile citite trebuie convertite în numere, deoarece proprietatea Text a componentei Editare are un tip de șir; atunci trebuie efectuate calculele necesare iar rezultatul plasat în câmpurile Edit4 și Edit5. 17

18 Adăugați codul de mai jos la funcție. void fastcall TForm1::Button1Click(TObject *Sender) float a,b,c,d,x1,x2; a=strtofloat(edit1->text); b=strtofloat(edit2->text); c=strtofloat(edit3->text); d=b*b-4*a*c; if (d>=0) else x1=(-b-sqrt(d))/(2*a); x2=(-b+sqrt(d))/(2*a); Edit4->Text=FloatToStr(x1); Edit5->Text=FloatToStr(x2); ShowMessage("Fără rădăcini valide"); În secțiunea directive de preprocesor a modulului formular, adăugați linia #include Acest fișier antet vă va permite să utilizați o bibliotecă de funcții matematice (în cazul nostru, funcția de calcul al rădăcinii pătrate). Să notăm următoarele puncte în text. Pentru calcule am folosit doar variabile locale, deoarece acestea nu trebuie utilizate în alte proceduri. Pentru a converti un șir de caractere într-un număr și conversia inversă, sunt utilizate funcțiile StrToFloat() și, respectiv, FloatToStr(). Pentru a afișa mesajul „Fără rădăcini valide” utilizați Funcția Windows apelarea casetei de dialog ShowMessage(). Să definim o funcție pentru procesarea unui clic pe butonul „Ieșire”. Faceți dublu clic pe acest buton și în fereastra editorului de cod care apare, adăugați linia 18 la funcția Button2Click

19 Form1->Close(); (Metoda Close() închide fereastra aplicației noastre.) Salvați proiectul și rulați-l. Verificați funcționarea acestuia sub diferite date inițiale. Dacă sistemul detectează erori, corectați-le și rulați din nou proiectul. Să definim acum evenimentele din meniu și clicurile pe buton din bara de instrumente. Nu trebuie să scriem niciun cod pentru asta. Vom conecta evenimentele necesare cu evenimentele deja definite făcând clic pe butoanele „Calculate” și „Exit”. Faceți clic pe bara de meniu și apoi selectați primul element de meniu, „Calculați”. În Object Inspector, pe pagina Evenimente, în rândul de gestionare On-Click, selectați funcția Button1Click din lista de funcții disponibile. Faceți clic pe formular și procedați la fel cu elementul de meniu „Ieșire”, abia acum conectați-l la funcția Button2Click. Selectați elementul de meniu „Ajutor”, faceți dublu clic în linia de gestionare OnClick din inspectorul de obiecte și adăugați comanda Form2->ShowModal() la funcția N3Click din editorul de cod; În secțiunea directive module din formularul principal, nu uitați să adăugați directiva pentru a include fișierul antet al modulului de ajutor #include „help_module_name.h”. Aici help_module_name este numele cu care ați salvat modulul pe disc. Metoda ShowModal() apelează fereastra de ajutor și până când aceasta nu este închisă, nu veți putea accesa fereastra principală a aplicației (starea modală a ferestrei). Selectați butonul „Calculate” din bara de instrumente și în inspectorul de obiecte pentru handler-ul OnClick, selectați funcția Button1Click; pentru butonul Ieșire funcția Button2Click. Pentru butonul Ajutor, creați o procedură care gestionează clicul în același mod în care ați procedat pentru elementul de meniu Ajutor. Rămâne de determinat funcționarea barei de stare StatusBar1. Selectați-l pe formular, accesați pagina Proprietăți a inspectorului de obiecte, găsiți proprietatea SimplePanel și setați-o la true. Faceți dublu clic pe formular și plasați următorul cod în corpul funcției FormCreate: void fastcall TForm1::FormCreate(TObject *Sender) StatusBar1->SimpleText="Introduceți coeficienții ecuației"; Salvați proiectul și verificați aplicația. 19

20 PRELUCRAREA SITUAȚIUNILOR EXCEPȚIONALE ÎN PROGRAM În programul dezvoltat, nu am ținut cont de posibilele erori de introducere a datelor. În primul rând, utilizatorul poate introduce o secvență de caractere care nu este un număr. În al doilea rând, utilizatorul poate introduce o valoare a coeficientului de a = 0, ceea ce va duce la o încercare de împărțire la zero în operatorii care calculează rădăcinile ecuației. Ambele situații sunt numite excepționale. Exemple de alte situații de excepție sunt overflow, încercarea de a deschide un fișier inexistent etc. Pentru a controla astfel de situații, sistemul C++ Builder are un așa-numit mecanism de gestionare a excepțiilor. Când apare o situație excepțională, programul generează o așa-numită excepție și calculele ulterioare din acest bloc sunt oprite. O excepție este un tip special de obiect care caracterizează o situație excepțională care a apărut într-un program. Particularitatea excepțiilor este că sunt obiecte pur temporare. Imediat ce sunt procesate de orice handler, ele sunt distruse. Dacă excepția nu este prinsă nicăieri în program, atunci aceasta este gestionată de metoda standard Tapplication.HandleException. Aceasta metoda se asigură că utilizatorul primește informații scurte într-o fereastră de mesaj și distruge instanța de excepție. Cel mai radical mod de a trata excepțiile este de a le gestiona folosind blocuri logice try and catch: try //instrucțiuni care pot provoca o excepție catch (Type &e) //comenzi care gestionează această excepție Aici Type este tipul (clasa) de excepție. C++Builder definește un număr de clase de excepție. Să luăm în considerare două dintre ele necesare în programul nostru: clasa EConvertError, asociată cu o eroare la conversia șirurilor sau obiectelor (în special, în funcția StrToFloat), clasa EZeroDivdide, asociată cu o încercare de a împărți un număr în virgulă mobilă la zero. 20

21 Modificați textul funcției Button1Click pentru a se potrivi cu textul de mai jos. void fastcall TForm1::Button1Click(TObject *Sender) float a,b,c,d,x1,x2; încercați a=strtofloat(edit1->text); b=strtofloat(edit2->text); c=strtofloat(edit3->text); catch(converterror &e) ShowMessage(„Date eroare!”); întoarcere; d=b*b-4*a*c; dacă (d>=0) încearcă x1=(-b-sqrt(d))/(2*a); x2=(-b+sqrt(d))/(2*a); catch(ezerodivide &e) ShowMessage("Coeficientul a nu poate fi egal cu zero!"); întoarcere; Edit4->Text=FloatToStr(x1); 21

22 Edit5->Text=FloatToStr(x2); else ShowMessage("Fără rădăcini valide"); Salvați modificările aduse textului modulului și verificați dacă există erori.!!! Dacă rulați un proiect și specificați date eronate, depanatorul va prinde excepția și execuția programului va fi întreruptă. Faceți clic din nou pe butonul Run și veți vedea gestionarea excepțiilor pe care l-ați definit pentru rulare. Cu toate acestea, după ce realizați un proiect finalizat, excepțiile vor fi gestionate conform codului programului dvs. 22

23 DEZVOLTAREA INTERFEȚEI APLICAȚIEI Să finalizăm interfața programului nostru. Mai întâi, vom face să apară sfaturi cu instrumente pentru butoanele din bara de instrumente. Selectați butonul Calculate din bara de instrumente și, în Object Inspector, setați proprietatea Hint la Calculate și proprietatea ShowHint la true. Faceți același lucru pentru butoanele rămase. Salvați modificările aduse proiectului. Acum vom face posibilă utilizarea tastelor rapide atunci când lucrați cu meniul. Puteți seta tastele „hot” în două moduri: 1) specificați o literă „hot” în titlul elementului de meniu. Pentru a face acest lucru, faceți clic pe componenta de meniu și în inspectorul de obiecte, în fiecare antet al articolului de meniu, plasați pictograma & în fața literei dorite, de exemplu: Literele &Calculate „Hot” vor fi subliniate; 2) selectați proprietatea ShortCut pentru acest element de meniu și selectați combinația dorită Ctrl+litera din lista derulantă. Setați combinații de taste rapide pentru elementele de meniu și salvați modificările aduse proiectului. Ultimul lucru pe care trebuie să-l facem este să setăm secvența de tranziție între controale atunci când este apăsată tasta TAB. Aceasta este o practică standard pe Windows. Selectați toate controalele din formular și selectați „Comanda file” din meniul contextual. Folosiți butoanele săgeată pentru a rearanja lista de articole în următoarea ordine: Edit1, Edit2, Edit3, Button1 și faceți clic pe OK. Salvați modificările aduse proiectului. După pornirea programului, câmpul de introducere Edit1 va deveni activ. Apăsând tasta „TAB”, vă puteți deplasa printre câmpurile de introducere rămase unul câte unul.!!! Navigați prin comenzile în reversul se poate face prin apăsarea simultană a tastelor SHIFT și TAB. 23

24 PREGĂTIREA APLICĂRII DE DISTRIBUȚIE Am finalizat dezvoltarea proiectului și nu mai rămâne decât să îl pregătim pentru distribuție. Să facem ca fereastra programului să apară întotdeauna în centrul ecranului. Setați proprietatea Poziție a formularului principal la poscreencenter. Să selectăm o pictogramă pentru program (până acum am folosit pictograma standard C++ Builder). Pictograma se modifică astfel: introduceți comanda Proiect / Opțiuni; selectați fila Aplicație; faceți clic pe butonul Încărcare pictogramă; Folosind dialogul de deschidere a fișierului, selectați fișierul pictogramă pregătit în prealabil (trebuie să aibă extensia .ico). Un set mare de pictograme gata făcute este disponibil în bibliotecă standard C++ Builder în subdirectorul \Imagini\Icoane. Selectați poza dorităși faceți clic pe butonul „Deschidere”; în linia de titlu, introduceți legenda „Ecuație cuadratică”; Faceți clic pe butonul „OK”. Un program creat în C++ Builder utilizează o versiune DLL a bibliotecii de rulare (RTL) și pachete speciale de biblioteci dinamice. Pentru ca programul să funcționeze pe alt computer, trebuie să transferați biblioteca pe acest computer împreună cu fișierul exe al acestui program sau să includeți biblioteca și pachetele în fișierul exe. Pentru a face aceasta din urmă, trebuie să faceți următoarele: 1) introduceți comanda Proiect / Opțiuni și selectați fila „Pachete”, debifați caseta de selectare „Construire cu pachete de rulare”; 2) selectați fila „Linker” și debifați caseta de selectare „Utilizați RTL dinamic”. Acum trebuie să recompilați proiectul. Rulați comanda Proiect Your_Project_Name / Build. Acum, fișierul executabil al proiectului dumneavoastră (un fișier cu extensia .exe) cu bibliotecile conectate a apărut în directorul proiectului. 24

25 LUCRUL CU GRAFICA Puteți desena în program direct pe suprafața formularului, sau selectând zone speciale pe formular pentru desen, acest lucru se face folosind componentele Image și PaintBox. Formularul și componentele specificate au proprietatea Canvas, care vă permite să afișați grafice. De exemplu, operatorul Form1->Canvas->Rectangle(20, 20, 60, 60); desenează un dreptunghi pe suprafața formei. Următorul tabel listează metodele proprietății Canvas care vă permit să desenați primitive grafice de bază. Tabelul 1 Metode de desen primitive grafice Metoda MutareTo(x, y) LineTo(x1, y1) Polilinie(puncte, n) Dreptunghi(x1, y1, x2, y2) y2) y2) FillRect(x1, y1, x2, Elipse(x1, y1, x2, Arc) (x1, y1, x2, y2, x3, y3, x4, y4) Pie(x1, y1, x2, y2, x3, y3, x4, y4) TextOutA(x, y, text) Acțiune Mută ​​cursorul la punctul specificat coordonatele poziției (coordonatele sunt numărate din colțul din stânga sus al formularului sau al zonei de desen) Desenează o linie dreaptă de la poziția curentă la un punct cu coordonate (x1, y1) Desenează o polilinie; matrice de puncte de puncte de inflexiune a liniilor (vezi exemplul de mai jos ), n număr de noduri de linie Desenează dreptunghi, x1, y1, x2, y2 coordonatele colțurilor din stânga sus și, respectiv, din dreapta jos ale dreptunghiului. Desenează un dreptunghi umplut Desenează o elipsă. X1, y1, x2, y2 setează coordonatele a dreptunghiului în care se încadrează elipsa 1 2 Desenează un arc Parametrii x1, y1, x2, y2 definesc elipsa din care face parte arcul, x3, y3, x4, y4 definesc punctele de început și de sfârșit ale arcului Desenează un sector al unei elipse sau cerc Sectorul este tăiat în sens invers acelor de ceasornic de la punctul cu coordonatele (x3, y3) până la punctul (x4 , y4) Afișează textul specificat de al treilea parametru. Parametrii x, y definesc punctul de pornire de la care începe ieșirea 25

26 Pentru a afișa puncte individuale, utilizați proprietatea Pixels[x][y] a proprietății Canvas. De exemplu, următoarea instrucțiune afișează un punct roșu cu coordonate (50, 50) pe formular: Form1->Canvas->Pilxels=clRed; Aici clred este o constantă numită corespunzătoare culorii roșii. Pentru a colora un punct într-o culoare arbitrară, utilizați funcția RGB(roșu, verde, albastru), unde parametrii roșu, verde, albastru specifică proporțiile de roșu, verde și de culoare albastră ca parte a unei culori date și poate lua valori în intervalul (0, 255), de exemplu: Form1->Canvas->Pilxels=RGB(0, 163, 78); Metodele descrise mai sus oferă doar desenarea primitivelor grafice. Tipul elementului grafic este determinat de proprietățile Pen și Penie ale suprafeței (Canvas) pe care este desenat. acest element. „Creion” și „perie”, fiind proprietăți ale obiectului Canvas, sunt ele însele obiecte. Proprietățile obiectelor Pen și Penie sunt descrise în tabelele următoare. Tabelul 2 Proprietăți stil lățime culoare Proprietăți obiect stilou Definește culoarea liniei Lățimea liniei (în pixeli) Tipul liniei. pssolid solid; linia psclear nu este afișată; psdash punctat cu linii lungi; psdot punctat cu curse scurte; psdashdot alternând curse lungi și scurte Tabel 3 Proprietăți ale obiectului Pensiunea Definiții de proprietate Culoare Culoare umplerea unei zone închise Stil Stil de umplere a zonei. bssolid umplutură solidă; bshașura orizontală orizontală; bstrapa verticală; bsf umbrire diagonală diagonală cu o înclinare înainte; bsbhașura diagonală diagonală cu o înclinare înapoi; bscross într-o cușcă; bsdiag- Celula diagonală încrucișată Proprietatea Font a „pânzei” vă permite să modificați parametrii fontului. Următorul tabel descrie proprietățile obiectului Font. 26

27 Proprietate Nume Mărime Stil Culoare Tabel 4 Proprietăți ale obiectului Font Definește fontul utilizat. Valoarea proprietății este numele fontului, de exemplu Arial Size în puncte Stilul font. Definit de următoarele constante: fsbold bold; fsitalic italic; fsunderline subliniat; fsstrikeout tăiat Culoarea simbolurilor. Setați folosind constante denumite, cum ar fi clred, sau folosind funcția RGB() Exemplul 1. Afișează un punct roșu și o linie dreaptă neagră în zona de desen PaintBox atunci când este apăsat un buton. Începeți un nou proiect. Plasați o componentă PaintBox (fila Win32) și un Button pe formularul de proiect. Pentru funcția de procesare a clicului butonului, scrieți următorul cod: void fastcall TForm1::Button1Click(TObject *Sender) PaintBox1->Canvas->Pixels=clRed; PaintBox1->Canvas->MoveTo(50,50); PaintBox1->Canvas->LineTo(100,100); Exemplul 2. Desenarea unui cerc umbrit direct pe suprafața formularului. Folosim handlerul de evenimente OnPaint (redesenare) al formularului. Pentru funcția de gestionare a evenimentelor OnPaint, scrieți următorul cod: void fastcall TForm1::FormPaint(TObject *Sender) Form1->Canvas->Ellipse(40,40,140,140); Exemplul 3: Utilizarea obiectelor stilou și pensulă. Pune un alt Buton pe formular. Pentru funcția de clic pe butonul, scrieți următorul cod: 27

28 void fastcall TForm1::Button2Click(TObject *Sender) Form1->Canvas->Brush->Color=clRed; Form1->Canvas->Brush->Style=bsCross; Form1->Canvas->Pen->Width=3; Form1->Canvas->Elipse(40,40,140,140); Exemplul 4. Lucrul cu un font Utilizați handlerul de evenimente de creare a formularului OnPaint. Adăugați codul de ieșire text la funcția de procesare a evenimentelor de redesenare a formularului: void fastcall TForm1::FormPaint(TObject *Sender) Builder"); Form1->Canvas->Elipse(40,40,140,140); Form1->Canvas->Font->Name = „Times New Roman”; Form1->Canvas->Font->Size=20; Form1->Canvas->Font->Color=clBlue; Form1->Canvas->TextOutA(100, 5, „Exemple de lucru cu grafică în C++ Salvați proiectul și verificați funcționarea acestuia. Sarcină Scrieți un program care să afișeze un grafic al funcției y(x)=sin(x)e x/5 într-un interval specificat de utilizator și cu un pas dat în x. Componenta TStringGrid (tabel) Această componentă vă permite să afișați date pe formular sub forma unui tabel. Situată pe pagina „Adițional”. Proprietăți celule Această proprietate este o matrice de șiruri care conțin rânduri de text de tabel. Parametrii Acol, Arow indică numărul coloanei și, respectiv, numărul rândului tabelului. Primul rând și prima coloană sunt numerotate cu zero. Dacă O valoare numerică trebuie scrisă într-o celulă de tabel, aceasta trebuie convertită utilizând funcțiile IntToStr() sau FloatToStr(). 28

29 Exemplu float x=2,4; StringGrid1->Cells="Valoare argument"; StringGrid1->Cells="Valoarea funcției"; StringGrid1->Cells=FloatToStr(x); StringGrid1->Cells=FloatToStr(x*x); Cols Acesta este un tablou care conține rânduri pentru fiecare coloană a tabelului. Numărul de rânduri este egal cu valoarea proprietății RowCount. ColCount Determină numărul de coloane din tabel. Valoarea implicită este cinci. RowCount Determină numărul de rânduri din tabel. Valoarea implicită este cinci. Col Indică coloana celulei active în prezent. Rând Indică rândul celulei active în prezent. DefaultColWidth DefaultRowHeight Determinați lățimea tuturor coloanelor și, respectiv, înălțimea tuturor rândurilor din tabel. Pentru a modifica înălțimea rândurilor individuale și lățimea coloanelor individuale, utilizați proprietățile RowHeights și ColWidths. ColWidths RowHeights Vă permite să modificați lățimea coloanei și, respectiv, înălțimea rândului cu numărul de index. DefaultDrawing Specifică dacă celulele tabelului vor fi desenate automat (adevărat). EditorMode Determină dacă celula curentă a tabelului poate fi desenată. Dacă setul de proprietăți Opțiuni (a se vedea tabelul de mai jos) conține valoarea goediting, atunci tabelul trece automat în modul de editare. Același lucru se întâmplă când setați proprietatea EditorMode la true. În timp ce valorile Opțiuni sunt de obicei setate în timpul dezvoltării aplicației, proprietatea EditorMode poate fi modificată în timp ce programul rulează. Când proprietatea EditorMode=true, tabelul este în modul de editare dacă setul Opțiuni conține un element. În caz contrar, celulele nu pot fi editate. 29

30 Dacă proprietatea EditorMode=false și setul Options conține elementul goediting, dar nu goalwaysshoweditor, atunci utilizatorul poate trece la modul de editare folosind tasta „F2”. Opțiuni Această proprietate determină aspectul și proprietățile funcționale ale tabelului. Tabelul 5 Unele valori ale proprietății Opțiuni Valoare Setare Acțiune govertline true Liniile verticale sunt afișate între coloane gohorzline true Liniile orizontale sunt afișate între rânduri gorangeselect true Utilizatorul poate selecta un bloc de celule. Totuși, dacă este specificat elementul de editare, acest lucru nu este posibil godrawfocus- Selected false Celula activă are o culoare diferită de restul. Culoarea este setată în proprietatea Culoare. Dacă proprietatea este adevărată, atunci celula activă are aceeași culoare. Nu se poate selecta blocarea GoTabs adevărat Vă puteți deplasa printre celule folosind tastele +. gothumbtracking goalwaysshoweditor true true Tabelul intră automat în modul de editare (cu condiția ca setul de opțiuni să conțină un element de editare) Partea vizibilă a tabelului derulează sincron cu mișcarea glisorului de pe bara de defilare a tabelului 30

31 FixedColor Definește culoarea coloanelor și rândurilor fixe din tabel. FixedCols Definește numărul de coloane fixe din tabel (una implicită). Coloanele fixe rămân vizibile atunci când utilizatorul defilează prin alte coloane. FixedRows Definește numărul de rânduri de tabel fixe (unul în mod implicit). Componenta TChart (diagrama) Componenta este concepută pentru a funcționa cu tipuri complexe de diagrame. Proprietățile componentelor sunt configurate în fereastra editorului „Editare diagramă”. Editorul este apelat făcând dublu clic pe componenta Chart (Fig. 3). Orez. 3. Fereastra editorului de diagrame Proprietăți serie Reprezintă o matrice de diagrame (seri de date) afișate în zona componentei Chart, unde Index specifică numărul seriei de date. Indicele se numără de la zero. Pentru fiecare diagramă plasată în zona Chart, puteți seta următorii parametri: tip; Nume; axe; 31

32 legenda; sursă de date. Tipul de diagramă este setat în pagina Serie a editorului de proprietăți diagramă. Dacă valorile diagramei sunt generate în timp ce aplicația rulează, atunci trebuie să selectați opțiunea Fără date pentru sursa de date din pagina „Series-DataSource” a editorului. Pentru a adăuga o serie (serie de date), faceți clic pe butonul Adăugare din fereastra editorului și selectați tipul de diagramă în fereastra care apare (de exemplu, Linie rapidă). Pentru a seta titluri de serie (vor fi folosite în legendă pentru a distinge graficele) Faceți clic pe butonul „Titlu” din aceeași fereastră; acesta va deveni disponibil după setare cantitatea necesară serie (Fig. 4). Orez. 4. Fereastra de dialog a editorului de diagrame În fila „Axa” sunt setate numele axelor. Opțiunea „Stânga” corespunde axei Y, opțiunea „Jos” corespunde axei X. Pentru a eticheta axele, utilizați pagina de titlu din fila „Axa”. Pentru a seta titlul diagramei, selectați fila „Titluri”. Metode Metodele Add, Clear și Delete sunt adesea folosite pentru a controla valorile utilizate pentru a construi diagrama. Add(AValue, ALabel, AColor) Adaugă valoarea specificată de parametrul AValue la diagramă; parametrul ALabel specifică numele valorii (adică eticheta axei X); parametrul AColor specifică culoarea. AdăugațiXY(XValue,YValue, XLabel, AColor) 32

33 Adaugă valoarea graficului specificat de parametrii XValue, YValue (adică coordonatele punctului); parametrii rămași au aceeași semnificație ca și pentru funcția Add. Exemplu. Un grafic al funcției y=x^2 este construit în intervalul for(int i=0; i<10; i++) Chart1->Seria->AddXY(i, i*i); Delete(ValIndex) Șterge valorile cu numărul ValIndex din diagramă. Clear() Elimină toate valorile din diagramă. Exemplu Chart1->Series->Clear(); Sarcină Scrieți un program care calculează un tabel de valori ale funcțiilor y1(x)= sin(x) și y2(x)= cos(x) în intervalul de valori a x b, x se modifică cu pasul dx și trasează grafice ale funcțiilor. Limitele intervalului și pasul de modificare dx sunt specificate de utilizator. 33

34 LUCRUL CU FIȘIERE Mediul C++ Builder oferă trei moduri de a lucra cu fișiere: lucrul cu fluxuri folosind funcțiile I/O ale bibliotecii C, lucrul cu fluxuri în stilul C++ și utilizarea metodelor componentelor de dialog ale mediului de dezvoltare. Să rezolvăm următoarea problemă: creați un program Notepad care vă permite să introduceți text, să îl salvați și să citiți textul pregătit fisier text. Lansați sistemul de programare C++ Builder. Așezați pe formular un câmp de introducere Memo cu mai multe rânduri (în el va fi introdus textul) și patru butoane, cărora le dau nume: „Șterge”, „Scrie”, „Citește”, „Ieșire”. Pentru a salva și a căuta fișiere, utilizați componentele SaveDialog și OpenDialog. Plasați aceste componente oriunde pe formular, deoarece nu sunt vizuale. O formă posibilă este prezentată în Fig. 5. Fig. 5. Fereastra Notepad Ați lucrat deja cu componenta Memo, dar să ne uităm mai detaliat la proprietățile și metodele acesteia. Metoda Clear() șterge fereastra de intrare. Liniile plasate în fereastră sunt accesate prin proprietatea Lines, care reprezintă o matrice de linii. Proprietatea Count stochează numărul de rânduri (numărul de elemente ale matricei). Numărarea numerelor de linii începe de la zero. Metoda Add(s) adaugă șiruri de caractere la listă. Metoda Delete(n) șterge numărul rândului n. Metoda Insert(n, s) inserează un șir nou s între elementele listei de la poziția n. 34

35 Metoda SaveToFile("path/file_name") vă permite să salvați datele stocate în câmpul Memo în fișierul specificat. Metoda LoadFromFile("cale/nume fișier") vă permite să citiți datele stocate în fișierul specificat în câmpul Memo. Să creăm o funcție pentru procesarea unui clic pe butonul „Șterge”. Textul funcției este prezentat mai jos. void fastcall TForm1::Button1Click(TObject *Sender) Memo1->Clear(); // Să creăm și o procedură pentru procesarea unui clic pe butonul „Ieșire”. Folosim metoda Close pentru a finaliza lucrul cu aplicația. void fastcall TForm1::Button4Click(TObject *Sender) Form1->Close(); // Înainte de a dezvolta funcții pentru procesarea evenimentelor rămase, vom descrie lucrul cu casetele de dialog SaveDialog și OpenDialog. Metoda Execute() este folosită pentru a apela Windows. Proprietatea FileName stochează numele fișierului. Proprietatea Filtru vă permite să configurați filtre pentru căutarea fișierelor. Proprietatea DefaultExt vă permite să definiți o extensie care va fi adăugată automat la numele fișierului. Să creăm o funcție pentru procesarea unui clic pe butonul „Salvare”. Textul funcției este prezentat mai jos. void fastcall TForm1::Button3Click(TObject *Sender) SaveDialog1->DefaultExt="txt"; if (SaveDialog1->Execute()) Memo1->Lines->SaveToFile(SaveDialog1->FileName); 35

36 // Creați o funcție pentru procesarea unui clic pe butonul „Citește”. Textul funcției este prezentat mai jos. void fastcall TForm1::Button2Click(TObject *Sender) OpenDialog1->DefaultExt="txt"; if (OpenDialog1->Execute()) Memo1->Lines->LoadFromFile(OpenDialog1->FileName); // Salvați proiectul și verificați dacă funcționează. Dacă nu există erori în proiect, faceți o cerere înstrăinabilă. 36

37 LUCRUL CU BAZELE DE DATE Configurarea motorului de baze de date Borland (BDE) BDE este un procesor de baze de date (DB); definește tehnologia de acces la date. Administrator BDE 5.0 Administratorul BDE este un program pentru setarea configurației BDE. Programul este lansat folosind meniul principal Windows cu comanda Start / Programe / Borland C++ Builder / administrator BDE. Fereastra principală a programului conține două panouri. Cel din stânga include un notepad cu două pagini care prezintă următoarele opțiuni de setări: Baze de date; Configurare Panoul din dreapta conține un bloc de note cu o pagină Definiton care apare atunci când selectați o opțiune în panoul din stânga. Lista de proprietăți este împărțită în două părți: Type conține numele parametrului; Cel din stânga conține valoarea parametrului. Configurarea alias-urilor globale Prima pagină din panoul din stânga ferestrei de administrator BDE este destinată pentru vizualizarea, adăugarea, ștergerea și modificarea alias-urilor și a parametrilor acestora, oferind acces la bazele de date corespunzătoare într-un mod mai ușor. Un alias din arborele bazei de date poate fi în următoarele stări: închis, deschis, modificat și creat. Pentru a adăuga un alias, utilizați comanda de meniu Obiect / Nou. În fereastra care apare, în linia „DataBase Driver Name”, selectați valoarea STANDART pentru a crea o bază de date în format Paradox, Dbase sau FoxPro, sau valoarea MSACCESS pentru a crea o bază de date în format MS ACCESS. Fiecare alias are un set de proprietăți. Pentru aliasurile create pe baza driverului STANDART, acestea sunt următoarele: TYPE nume driver; DEFAULT DRIVER nume driver; steag BCD ACTIVAT pentru conversia valorilor câmpurilor zecimale în BCD; PATH este calea către folderul în care se află tabelele bazei de date. Un alias privat poate fi redenumit sau șters folosind comanda de meniu Obiect / Redenumire obiect / Ștergere. 37


Cursul 24 Introducere în programarea orientată pe obiecte Obiecte și clase Conceptele de bază ale POO în C++ sunt obiectul. Un obiect este o anumită unitate de program care combină proprietăți (atribute)

MS Access. Formulare Prelegeri la disciplina „Fundamentele programării și tehnologiilor informaționale”, susținute la Departamentul de FMEG al Facultății de Educație Fizică a UTN „KhPI” 1 Formulare Există trei modalități de introducere a informațiilor în Acces:

Munca practica 3 Crearea unui formular Un formular este un obiect de bază de date pe care îl puteți utiliza pentru a introduce, modifica sau afișa date dintr-un tabel sau dintr-o interogare. Formularele pot fi folosite pentru a gestiona

Lucrul cu tabele 1. Transformarea textului într-un tabel. a) Introduceți delimitatori, cum ar fi virgule sau file, în care textul trebuie împărțit în coloane. Utilizați un semn de paragraf pentru a indica

Lucrul cu șabloane documente standard Ghidul utilizatorului de tehnologii cognitive Moscova, 2015 2 REZUMAT Acest document oferă informații despre utilizarea pachete software„E1 Eufrat”

EDITOR VISUAL BASIC Gedranovich Valentina Vasilievna 28 iunie 2012 Rezumat Capitolul 18 din UMK: Gedranovich, V.V. Fundamentele tehnologiilor informatice informatice: metoda educaţională. complex / V.V. Gedranovici,

PRELEGERE-1. INTRODUCERE. SCOPUL, COMPOZIȚIA ȘI ELEMENTELE DE BAZĂ ALE INTERFEȚEI SOFTWARE-ULUI DE APLICAȚIE PENTRU PRELUCRAREA INFORMAȚIILOR DE AFACERI Întrebări: 1. Conceptul de software și clasificarea acestuia

Subiectul 8 Stiluri Un stil este un set de opțiuni de formatare care are un nume. Se folosesc stiluri: - pentru proiectarea profesională a documentelor; - pentru a schimba rapid parametrii textului; - pentru a da uniformitate

Lucrări de laborator 12. Tema: Aplicații cu mai multe ferestre. Ferestre modale și fără model. Probleme cheie: Aplicarea mai multor forme în proiecte. Luarea în considerare a diferitelor tipuri de ferestre, modale și non-modale.

Lucrări de laborator 7 Tema: Formatarea elegantă a documentelor. Crearea unui cuprins. Utilizarea stilurilor Când creați un document, deseori trebuie să vă ocupați de titluri. De obicei, titlurile

Bare de defilare 3 LAB 1 SISTEM DE AJUTOR ȘI REZULARE PROGRAME ÎN WINDOWS. Sarcini: Porniți computerul și porniți în sistemul de operare Windows. Pe suprafața desktopului, găsiți panoul

6. PROGRAMUL DE VOPSEA 6.1. Informații generale Program de vopsea este unul dintre cei mai populari editori grafici printre utilizatorii începători. Este destinat pentru vizualizare, creare și editare

Instituția de învățământ de la bugetul de stat de învățământ profesional superior „Academia Medicală de Stat Smolensk” a Ministerului Sănătății Federația Rusă Facultatea de Medicină Dentară Departamentul de Fizică, Matematică și Informatică Medicală Discutate

OpenOffice.org Impress Impress este un program inclus în OpenOffice.org pentru lucrul cu prezentari de diapozitive (prezentări). Puteți crea diapozitive care conțin multe elemente diferite, inclusiv text, marcatori

INSTRUCȚIUNI PENTRU EDITORUL HTML CKEDITOR Descrierea editorului CKeditor Formatarea textului 1. Serviciile editorului CKeditor 2. Stiluri de font 3. Structurarea textului 4. Alinierea textului 5. Inserarea legăturilor,

Capitolul 3 Suita Microsoft Office 2013 În acest capitol, ne vom uita la munca unora dintre aplicațiile incluse în Microsoft Office 2013. Scopul acestei cărți nu permite un studiu aprofundat al lucrului cu acestea.

Cuprins. 1 EDITOR DE TEXTE CUVINTE...2 BARE DE INSTRUMENTE...2 SISTEM DE AJUTOR...2 BAZELE LUCRĂRII CU TEXT...2 INSERAREA TEXT...2 ȘTERGEREA TEXTULUI...2 SELECTAREA TEXTULUI...2 ÎNLOCUIREA TEXTULUI SELECTAT

LUCRU CU SISTEMUL DE GESTIUNE A BAZEI DE DATE MICROSOFT ACCESS 1 TERMENI DE BAZĂ Interogare - Interogările sunt un instrument puternic pentru procesarea datelor stocate în tabelele Access. Folosind interogări, puteți vizualiza

Ministerul Căilor Ferate al Federației Ruse Universitatea de Transport de Stat din Moscova (MIIT) Departamentul „Alimentarea cu energie electrică a căilor ferate electrice” Aprobat de editorial și de publicare

BAZELE DE LUCRU ÎN ACCES MICROSOFT. PROIECTAREA BAZEI DE DATE. CREAREA BAZEI DE DATE. CREAREA DE FORME, RAPOARTE, INTEROGĂRI 1. Proiectarea bazelor de date 2. Crearea unei baze de date 3. Crearea de formulare, rapoarte, interogări

Bazele lucrului în MS Word 2007 Descrierea ferestrei programului După pornirea programului MS Word, pe ecran se deschide fereastra acestuia. Titlul ferestrei spune numele deschide fișierul sau Document1, Document2, dacă

Cum se deschide Microsoft Word 2010 3. Bazele lucrului în Microsoft Word 2010 Microsoft Word este un program multifuncțional de procesare a textului de pe desktop (editor) sistem de publicare. În Cuvânt noi

2 10 Crearea de aplicații grafice în mediul Scilab Scilab vă permite să creați nu numai programe convenționale pentru automatizarea calculelor, ci și aplicații vizuale care vor rula în mediul Scilab.

Instituția de învățământ bugetar de stat regional Tambov de învățământ secundar profesional „Colegiul de fabricare a instrumentelor” Interfață procesor de text Microsoft Word 2007 Concept

Lucrare practică 4 „Cartea de referință”, Pagina-1, Total - 6 Lucrarea practică 4, CARTEA DE REFERINȚĂ Enunțarea problemei Creați un program care efectuează următoarele acțiuni. După pornirea programului, utilizatorul selectează

BUGET REGIONAL DE STAT INSTITUȚIA DE ÎNVĂȚĂMÂNTUL SECUNDAR PROFESIONAL „COLEGIUL DE TRANSPORT AUTO SMOLENSK denumit după E.G. Trubitsyn” INSTRUCȚIUNI METODOLOGICE pentru pregătirea pentru implementare

TEST: „DBMS ACCES 2007 – TEST DE CONTROL”. Sarcina #1 Câte câmpuri sunt selectate pentru a fi incluse în RAPORTUL generat Selectați una dintre cele 5 opțiuni de răspuns: 1) 1 2) 2 3) 3 4) 4 5) 5 Sarcina #2 Va fi specificat

Lecție practică 1 Crearea formularelor VBA personalizate Când lucrați în Excel, ca în majoritatea altor aplicații, trebuie să vă ocupați de elemente de interfață, cum ar fi casetele de dialog. De conversaţie

A face cunoștință Birou deschis complex OO sistem de birou, conceput pentru tastarea, editarea și formatarea documentelor text de orice complexitate. Pe lângă documentele text, Open Office permite

Instituție de învățământ municipal liceu şcoală cuprinzătoare 7 Kolomna, regiunea Moscova Dezvoltarea unei lecții despre studierea mediului Delphi OOP pe tema: „Proprietăți generale ale unor componente”

Introducere în Micrsft Excel 1. Structura tabelului 1. Foaie de calcul este format din celule situate la intersecția rândurilor și coloanelor. Rândurile sunt numerotate cu numere, coloanele - cu litere latine. Fiecare celulă

PRELEȚIA 7. PROGRAMUL TOTAL COMMANDER Obiectiv: Studierea principiilor de funcționare a managerului de fișiere Total Commander. Managerul de fișiere Total Commander oferă o altă modalitate de a lucra cu fișiere și foldere

Lucrați 10 tabele și diagrame în Word. Calcule în tabele Obiectivul lucrării: învățați să introduceți tabele și diagrame într-un document, efectuați calcule în tabele Conținutul lucrării: 1 Introducerea și formatarea tabelelor

Lucrări de laborator 2. Bazele lucrului cu MathCAD MathCAD, ca majoritatea altor programe, lucrează cu documente. Din punctul de vedere al utilizatorului, un document este Foaie albă hârtie pe care să se așeze

Lucrări de laborator 1. Tematica. Fundamentele programarii orientate pe obiecte. Sistem de programare vizuală Borland Delphi. Crearea interfeței programului. Setarea proprietăților formularului (fereastră). De bază

Standard Components Library Manager CSoft Development, 2009. Toate drepturile rezervate Cuprins Standard Components Library Manager...2 Notă de securitate...4 Pornirea Library Manager

Etichetele caracteristicilor din ArcMap Etichetele sunt orice text care vă ajută să identificați caracteristicile de pe o hartă și să înțelegeți mai bine conținutul hărții. ArcMap vă permite să etichetați spațial

SA „Baumann” APROBAT RU.74533456.00009-02 34 01-LU Complex de securitate integrat „KODOS” Program „Diagrama mnemonică” Manual de utilizare RU.74533456.00009-02 34 01 2015 CUPRINS 1 GENERALE...

Scopul programului Automatizarea tuturor tipurilor de acțiuni cu texte. Funcții: creare, editare, formatare, salvare, procesare și imprimare. Editor de text profesional Word 2007,

LECȚIA PRACTICĂ 5 TEMA: Utilizarea integrată a capabilităților MS Word pentru a crea documente mari OBIECTIV: Învățați să utilizați în mod cuprinzător capacitățile MS Word pentru a crea documente mari

Lucrare de laborator 8 „Tehnologia de lucru în programul Explorer” Scopul lucrării: studierea tehnicilor de lucru cu programul Explorer 1. Rezumat informatii teoretice Inclus sistem de operare Windows XP disponibil

Capitolul 8 Crearea și utilizarea formularelor După cum sa menționat în capitolele 1 și 2 ale acestei cărți, obiectele bazei de date, cum ar fi formularele, sunt concepute în primul rând pentru a funcționa cu o singură înregistrare la un moment dat.

LUCRĂRI DE LABORATOR 1. 1. Intrarea în mediul VB Pentru a intra în mediul VB, utilizați fila Dezvoltator din fereastra Excel, care se află pe același rând cu filele Acasă, Inserare etc.. Dacă lipsește, ar trebui să efectuați

VERTICAL-Rapoarte Sistem de generare a documentației tehnologice Ghidul utilizatorului Informațiile conținute în acest document pot fi modificate fără notificare prealabilă. Nicio parte

Lucrul cu ABBYY FineReader Bank 7 Ghidul utilizatorului ABBYY 2013 Procesarea documentelor în programul ABBYY FineReader Bank constă din patru etape: Încărcare Recunoaștere Verificare Descărcare

PROGRAMUL „MANAGER MODULE DE MEMORIE” V 1.0.0 MANUAL DE OPERARE CUPRINS 1. Descrierea programului 3 1.1. Scopul programului 3 1.2. Cerințe de sistem 3 1.3. Instalarea programului 3 2. Personalizat

Șters: 1C-Bitrix: Site Management 6.x Ghid pentru crearea și plasarea formularelor web pe un site Cuprins Introducere...3 Crearea unui formular web într-un mod simplificat...3 Adăugarea unui formular web...4 Crearea întrebărilor

164 1C: Întreprindere 8.2. Ghid practic dezvoltator Sau le puteți selecta din lista derulantă disponibilă când vă aflați în modulul formular (Figura 5.19). Orez. 5.19. Lista evenimentelor de formular În aceasta

Modulul 2. Calculatorul ca set de hardware și software ANEXA 2 Încărcarea sistemului de operare După pornirea computerului, va dura ceva timp până când acesta este gata de utilizare.

CUPRINS Capitolul 13: AMPLASAREA MULTIPLE HORAME Cuprins PREZENTARE GENERALĂ...2770 AMPLASAREA AUTOMATĂ A MULTIPLE GRAME...2771 Utilizarea ferestrei Expert Plasare automată a MULTIPLE GRAPE

Lecție practică. „Lucrul cu stiluri și șabloane. Crearea unui cuprins automat și a unei liste de ilustrații" Formatarea stilurilor și crearea de șabloane. 1) Lansați MS Word. 2) Setați următoarele

Lucrări practice 6 Pregătirea documentelor folosind procesoare de text precum Microsoft Word Scopul muncii: Familiarizarea cu caracteristicile documentelor electronice și mijloacele de editare a acestora în mediu

FAR MANAGER SOFTWARE SHELL Plan: shell-uri software. Far Manager Lansarea elementelor FM și a interfeței Panourile FM Taste funcționale Meniul FM Selectarea vizualizărilor panoului utilizând meniul Sortare obiecte

Etapele dezvoltării bazei de date De regulă, neprofesioniștii lucrează cu baze de date, astfel încât se pot formula următoarele cerințe pentru baza de date. Dezvoltatorii, atunci când creează o bază de date, ar trebui să se concentreze pe acestea

Instrucțiuni scurte pentru lucrul cu programul Microsoft Algoritmul de acțiuni PowerPoint De unde să începeți? Pornirea unui program 1. În bara de activități, faceți clic pe butonul Start. 2. În meniul care se deschide, faceți clic pe comanda Programs.

Laboratorul 8 „Setarea parametrilor dispozitiv periferic computer" Scopul muncii: obținerea de informații despre configurarea interfeței cu utilizatorul a dispozitivelor periferice care utilizează sistemul de operare