Documente Academic
Documente Profesional
Documente Cultură
Introducere
Limba de programare C ++ a fost dezvoltată pe baza limbajului cu Bjarne Stroustrup.
Autorul limbajului C aparține lui Denis Ritchie, angajat al AT & T Bell Laboratories
(1970). Mai întâi limba C a fost scrisă pentru a crea și a susține sistemul de operare
UNIX. Până la acel moment, toate software - ul sistemului de operare UNIX au fost scrise fie
pe asamblare lang ke s, sau în limba B, dezvoltat de Ken Thompson - cu dătătorul sistemului
UNIX.limbajul C - un limbaj de uz general, și poate fi folosit pentru a scrie o varietate de
programe, dar populația sa p Nosta a fost asociat în principal cu sistemul de operare
UNIX. Pentru sistemul bo Derzhko UNIX a fost necesar pentru a scrie programe în limba C.
C și UNIX se potrivesc , astfel încât , împreună în curând mediul UNIX, aproape toate
programele comerciale au fost scrise în limba C. C a devenit atât de popular încât acesta este
special adaptat pentru alte sisteme de operare, iar utilizarea sa nu se limita la sistemele bazate
pe UNIX. În ciuda acestei popularități, limba C nu a fost lipsită de deficiențe.
Mai ales cu limba este ca fiind limba de nivel înalt, a păstrat multe caracteristici ale
limbajului de nivel scăzut. Limba Cu dezintegrări de fals undeva între limbi este
foarte de nivel înalt și de nivel scăzut de limbi, iar acest lucru este forte și punctele
slabe ale acesteia, în același timp. Ca limbaj de asamblare (limbaj de nivel scăzut),
limbajul de programare C poate NEP despresredstvenno gestiona memoria calculatorului. Pe
de altă parte, C și care posedă un nivel înalt caracteristici lingvistice, astfel încât programele C
să citească și să scrie mai bine decât un program în limbaj de asamblare. Limbajul C este foarte
ușor de utilizat pentru scrierea programelor de sistem, dar într - un program C pentru alte
scopuri, este adesea dificil de înțeles decât în Progra m max, scrise în alte limbi. Limbajul C
are , de asemenea , mai puține Ce pot Nost pentru verificarea automată a programelor decât
alte lang s nivel înalt de ki.
Pentru a depăși aceste și alte neajunsuri ale C, Bjarne strut t RUE de la AT & T Bell
Laboratories în 1980, a dezvoltat pe baza lui C ++ limbajul de programare. Cele mai multe C
reprezintă un subset al limbajului C ++ și, prin urmare, majoritatea programelor C sunt și
programe C ++. Programele în C ++, puteți utiliza texte în limba C și accesul la
funcții de bibliotecă C Limba EXC principală și Chiyo de C ++ de la C este de a
pune în aplicare programarea orientată spre obiecte - extrem de puternic
metoda de programare moderne.
După câțiva ani de utilizare practică C ++ sute Dl DART caietul de sarcini limba a
devenit de fapt , AT & T C ++ eliberare limbaj limbaj 2.0, dezvoltat de B. Stroustrup de la
compania Bell Laboratories AT & T. În prezent, Institutul Național American de Standarde
(ANSI) are un comitet pe limba C ++ (X3J16). O descriere a limbajului cu comentarii în 1990
a fost adoptată de comitetul ANSI ca material de bază pentru standardizarea C ++. Ultima
versiune a standardului este data de 26 mai 1994.
În prezent, se utilizează pe scară largă implementarea limbajului în Visual C ++,
Borland C ++ xx, Borland C ++ Builder x etc. În acest tutorial vom fi ghidați de versiunea
Borland C ++ 3.1.
2. Elemente ale limbii
2.1. Primele programe
Să scriem cel mai simplu program.
#include <iostream.h>
void main () {
cout << "Bună ziua, lume! \ n";
}
#include <iostream.h>
void main () {
int m, n, suma; // Descrieri.
cout << "Pentru a introduce numere, introduceți două cifre pe tastatură \ n";
cout << "(separate prin spații), apoi pe E n ter \ n.";
cin >> m >> n; // Introduceți
numerele.
suma = m + n;
cout << "Pentru m =" << m << "și n =" << n
<< "suma lor este egală cu" << sum << ". \ N"; // Efectuați rezultatul.
}
Fața aia 1 b
Punctul și caracterele speciale
Acest grup include spații, tab - uri, pagina traducerea ki, un retur de car, traducerea
paginii. Aceste simboluri separătoken-urile limbii. Orice secvență de caractere goale este
considerat în calculator și lyatsii ca un singur spațiu.
2.3. Comentarii
Comentariile sunt limitate la:
// la sfârșitul liniei.
sau așa:
/ * caractere
simboluri
...
caractere * /
Comentariul a personajelor - este nu numai literele alfabetului C ++, dar l u pa
simboluri posibile, inclusiv scrisori rusești.
2.9. descriere
Toate variabilele trebuie descrise înainte de a le folosi. Opis constă dintr - un tip de
specificatorul , urmată de o listă de n Move GUVERNAMENTALE, care va avea un anumit
tip specificat:
int i, j, k, pmax;
flotați radix, a, b, s_m;
dublă k, kr;
char ch, ch1;
simbol char;
3. Expresii
O expresie este o combinație între operanzi și operațiuni. Și Exemplul H:
a + b a / b c << d, etc.
Aici, am primește valoarea 3, iar valoarea 777 este prea mare pentru a fi reprezentat ca
un char, astfel încât valoareaCH va depinde de modul în care punerea în aplicare specifică
efectuează conversia dintr - o mai mare la un număr întreg mai mic.
Există așa-numita operațiune combinată pentru a atribui un aspect vizual
a op = b este echivalentă cu
a = a op b, cu excepția faptului că exprimarea adresei gândit am etsya doar o singură
dată.
exemple:
a+=2 și un sens a=a+2
Operațiunea ^ . Dacă unul dintre biții comparate sunt egali cu 0 , iar celălalt este 1,
bitul corespunzător al rezultatului este setat la 1 într - o linie dreaptă Altfel, adică Atunci când
ambele biți sunt 1 sau ambele sunt 0, bitul de ieșire Stabilim șiINDICA 0.
Acesta transmite celor șapte biți mai puțin semnificativi ai C N, presupunând restul la 0. (C
primul zero în C ++ începe să constantele octale la 0X - hex și dtsaterichnye CONSTA n tine).
Să presupunem că N = 642. Se dă reprezentarea biților N, constanta octal 0177
și rezultatul C:
N 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0
0177 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1
C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
o 0 1 0 0 0 1 0 1 1 1 1 1 1 1 1 1
b 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
c=a^ 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0
b
c=a|b 0 1 0 0 0 1 0 1 1 1 1 1 1 1 1 1
c=a& 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
b
c=~b 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0
Cu operare și poate fi determinată prin împărțirea reziduurilor op e rand
unsigned int tip 2, 4, 8, 16, etc. Pentru aceasta este suficient ca operatia sa fie
aplicata si divizibil cu masti 0x01, 0x03, 0x07, 0x0f, 0x1f, etc. H ca un exemplu:
7 și 0x03 dă 3.
Cu alte cuvinte, numărul alocat de biți mai puțin semnificativi, iar restul
au un tanavliv și sunt 0.
3.6. schimburi
<< >> operațiune de deplasare se realizează , respectiv , trecerea din stânga
și din dreapta a operandului stâng , în număr de poziții de bit definite de
drept și operandul vym. Astfel, X X << 2 schimburi spre stânga prin poziția 2
a unui biți plin părăsite cu zero, ceea ce este echivalent cu multiplicarea cu 4.
Valoarea deplasarea la dreapta , urmată de adăugarea de biți fără semn superior
cu zerouri. Deplasare la dreapta de o asemenea magnitudine pe n biți echiv un caz
de Postul Mare întreg e INJ operandul din stânga de 2 la puterea n .
De exemplu,
5 << 3 dă 40;
7 >> 2 dă 1.
Rețineți că operandul potrivit trebuie să fie constant exprimat și mâncat,
adică o expresie care include numai constante. Dacă operandul din dreapta este
negativ sau este mai mare sau egal cu numărul de biți de operă din stânga n da,
atunci schimba rezultatul nu este definit. Tipul rezultatului operației de schimbare
este tipul operandului stâng.
3.7. Autoincrement și operații de reducere automată ++ și - -
Aceste operațiuni sunt misiuni unare. respectiv Ele cresc sau scad valoarea
operandului la operandului 1 ar trebui să fie un număr întreg sau plutitoare de tip
punct (sau un pointer) și să fie expresia adresă constantă (adică fără
cuvântul const în inventar și NII). Tipul de rezultat corespunde tipului
de operă n da.
Forma prefixelor de operare:
++ operand - operand
Forma Postfix:
operand ++ operand .
Dacă semnul operației este înaintea operandului , rezultatul operației este
valoarea mărită sau scăzută a operandului . Rezultatul este expresia adresei
( Ɩ -value).
Dacă semnul operand este după operand , valoarea expresiei este
valoarea operandului . După ce se utilizează acest rezultat , valoarea
operandului crește sau scade. forma postfix Rezultatul opere și țiilor nu este Ɩ
- valoare.
Exemple :
int i = 0, j = 0, k, 1;
k = ++ i; // Aici k = 1 și i este 1;
l = j ++; // l = 0 și j devine 1;
- - k; // k = 0;
+ + j; // j devine 2.
Cu alte cuvinte, rezultatul executării
k = ++ i; la fel ca și în secvența operatorilor
i = i + 1; k = i;
Și rezultatul
k = i ++; la fel ca în
k = i; i = i + 1;
4. Operatorii
În C ++, un punct și virgulă reprezintă un semn al sfârșitului instrucțiunii.
4.4. publicitate
În C ++ operatorii de limbă sunt anunțuri și pot sta în cazul în care
caracteristici extinse ale soțiilor oricărui alt operator C ++:
s = 0,3; d / = s; int k = 5;
d = s + 2 * k;
dublu f = s + d; f = k;
4.5. Declarație condiționată
Există două forme de declarație condiționată:
1) dacă operatorul ( expresie )1
2) dacă ( expresie ) operator1 altă declarație2
Statement1 este executata daca expresia ia n th zero. Dacă expresia
este evaluată la 0 (sau pointer NULL), apoi statement2 .
Exemple :
void main () {
int = 2, b = 7, c = 3;
dacă (a> b)
dacă (b <c) c = b;
altfel c = a;
cout << "c =" << c << ". \ n";
}
În cazul în care altcineva aparține celui de al doilea if .
Ca rezultat, linia c = 3 va fi afișată .
[caz constant_integer_expression2:]
[Operatorii]
...
[cazul constant_integer_expresiune m:]
...
[caz constant_integer_expression n:]
[Operatorii]
[implicit:] [operatori]}
comuta (i) {
cazul 1: caz2: caz3: cout << "i =" << i << "\ n";
cazul 4: cout << "i =" << i << "i ^ 2 =" << i i << "\ n";
d = 3 i - 4; cout << "d =" << d << ". \ n";
pauză;
cazul 5: cout << "i = 5. \ n"; pauză;
implicit: cout << "Valoarea i este mai mică de 1 sau mai mare de 5. \ n";
}
Dacă este introdus un număr 2, acesta va fi imprimat
i=2
i=2i^2=4
d = 2.
Dacă i este 4, va fi afișat
i = 4 i ^ 2 = 16
d = 8.
Când i = 5, se afișează
i = 5.
Pentru toate celelalte valori ale lui i va fi imprimat
Valoarea lui i este mai mică de 1 sau mai mare de 5.
Exemplul 2:
caractere;
int x, y, z;
cout << "Setați semnul de operare + - * / \ n";
semnul cin >>;
cout << " Set x și y \ n ";
cin >> x >> y;
comutator (semn) {
cazul "+": z = x + y; pauză;
cazul "-": z = x - y; pauză;
cazul '*': z = x * y; pauză;
case / ': dacă (y = = 0) {cout << "Nu poți împărți cu zero! \ n"; ieșire (1);}
altfel z = x / y; pauză;
implicit: cout << "Operație necunoscută! \ n"; ieșirea (1);
}
Aici, ieșirea (1) este un apel către o funcție care determină oprirea
programului imediat.
Exemplul 2:
în timp ce (1) {operatori ...}
Acesta este un ciclu infinit.
Exemplul 3:
char c;
în timp ce ((c = cin.get (c)) = = '' || c = = '\ n' || c = = '\ t');
Această instrucțiune de buclă creează așa-numitele spații albe când citesc
din fluxul cin . Aici, get () este o altă formă a unei funcții care citește un caracter
din flux. Se returnează un număr întreg - cod de caractere, sau numărul 1, în cazul
în care te întâlnești cu un semn domnului fișier tsa.
operator1
în timp ce ( expression1 ) { statement2 expression2 ; }
Uneori, un operator1 este numit inițializator de buclă, iar expresia2 este o
reintroducere și un blocaj.
Oricare dintre cele trei părți pot fi omise, deși punctul este de a cruța - mi că
trebuie să rămână. Dacă nu există nicio verificare, adică expresia1 , atunci se
consideră că expresia1 a m este personal de la 0, așa că
pentru (;;) {. . . } este o buclă infinită și trebuie anulată într-un fel.
Exemplul 1:
int n = 20, s = 0;
pentru (int i = 1; i <= n; i + +) s + = i i;
Aici se calculează suma pătratelor de întregi de la 1 la 20.
Exemplul 2:
duble s, suma, den = 0,85, eps = 1e-10;
pentru (s = 1, suma = 0; s> eps; s = den) suma + = s;
Aici, suma progresiei geometrice se calculează 1, 1 0,85,
1 0,85 0,85, etc., până când următoarea sa durată devine mai mică de 10 -10 .
În exemplul următor, vom calcula și de ieșire la masa de afișare și funcția
zu pentru etapele .
#include <iostream.h>
#include <math.h>
#include <conio.h>
void main () {
int n = 10;
dublă x0 = 0, xk = M_PI_2, y ,
h = (xk - x0) / n, xt = xk + h / 2;
clrscr ();
cout << "xy \ n"
pentru (dublu x = x0; x <x; x + = h) {
y = sin (x * x);
cout.width (4); cout.precision (2);
cout << x;
cout.width (10); cout.precision (4);
cout << y << '\ n';
}
}
5. Indicatori
5.1. Definiția pointers
Un pointer este o variabilă care conține adresa unui obiect, de exemplu o
altă variabilă. Mai precis - adresa primului octet al acestui obiect. Acest lucru
permite accesul indirect la obiect printr - un decret și Tel. Fie x o variabilă de
tip int . Să desemnam px ca un pointer. Una p Nye & operatorul emite un obiect
adresă, astfel încât operatorul
px = & x;
atribuie adresa variabilă px a variabilei x . Se spune că px „Arătând și este“
pe x . Operația & este aplicabilă numai expresiilor de adresă, deci construcțiile
formulei & ( x- 1) și & 3 sunt ilegale.
operațiune unar numit razadresatsii operațiune sau opere și rezoluția
adresa TION. Această operațiune tratează operanzilor și modul în care ei e res și
se referă la această adresă pentru a prelua obiectul conținut la această adresă.
Prin urmare, dacă y are și tipul int , atunci
y = px;
Acesta atribuie y conținutul care este indicat de px . Astfel, urmașii lui s Nosta
px = & x;
y = px;
atribuie y aceeași valoare ca și operatorul
y = x;
Toate aceste variabile trebuie descrise:
int x, y;
int px;
Ultimul este o descriere a indicatorului. Acesta poate fi considerat ca
plural e monic. Se spune că combinația de px este de tip int sau, altfel, px este
un pointer la int . Aceasta înseamnă că dacă px apare ca px , atunci acesta este
echivalent cu o variabilă de tip int .
Din descrierea indicelui, rezultă că poate indica doar un anumit tip de obiect
(în acest caz int ). Razadresovanny decret și Tel poate introduce orice expresie
în care un obiect poate apărea tipul la care Indicând pointer ca este. Astfel,
operatorul
y = px + 2;
atribuie valoarea y , 2 mai mult decât x .
Rețineți că operațiunile unare prioritatea și k este de așa natură încât
op e radioul legat de operanzii lor mai bine decât operatorii aritmetici, astfel încât
regex și tensiune
y = px + 2
ia valoarea indicat de px , adaugă 2 și atribuie rezultatele s variabila TAT y .
Dacă pixelul indică x , atunci
px = 3;
presupune x egal cu 3, și
px + = 1;
crește cu x cu 1, precum și expresie
( px) ++
Sunt necesare paranteze aici. Dacă le omite, adică, pui de somn și
se așeză px ++, apoi, pentru că operatorii unari ca și ++ efectuează eu sunt
pe dreapta - la stânga, va crește expresia px , mai degrabă decât variabila la care.
Dacă py este un alt pointer la int , puteți efectua o sarcină
py = px;
Aici adresa de la px este copiată în py . În consecință, py indică la fel
ca px .
float b [10];
float pb = b;
pb ++; // Aceasta este echivalentă cu pb = pb_1.
// Aici indicatorul pb va indica
// pe elementul matricei b [1].
pb + = 3; // Aici pb indică elementul matricei b [4].
șir cu T r despre la și \n \0
tampon \0
n r despre b și \ n \ 0
șir
Pentru a copia șirul " sample \ n " în tampon , puteți face acest lucru:
char buffer [] = " „;
char p = " eșantion \ n";
int i = 0;
în timp ce ((tampon [i] = p [i])! = '\ 0') i ++;
Sau așa :
char buffer [] = " "
char p = " eșantion \ n";
char buf = tampon;
în timp ce ( buf ++ = p ++);
Aici, prima p este copiată la buf , adică Simbolul "n" este copiat la
adresa buf , care coincide cu adresa tampon , adică tamponul [0] devine
'n'. Apoi, indicatorii p și buf sunt incrementați , ceea ce duce la o " sonda \ n " și
la avansarea tamponului de -a lungul liniilor . Ultimul caracter copiat este '\ 0',
valoarea lui este 0, iar instrucțiunea while se oprește.
Chiar și mai ușor de utilizat funcția de bibliotecă, un prototip pentru o Tora
încearcă să ditsya fișier string.h :
strcpy (tampon, "proba \ n");
Când este necesară copierea pentru a se asigura că volumul
memoriei s împărțit printr - un tampon , a fost suficientă pentru a stoca șirul
copiat.
zi zi +1 zi + 2 zi + 3 zi + 4
cu la b b despre T și \ în despre cu la r e cu e n s e \
0 0