Subprogramele Predefinite (Funcții de Sistem) în C++ 9
1. Obiectivele lecției:
- Să înțeleagă conceptul de subprograme predefinite în C++.
- Să învețe cum să utilizeze funcțiile de sistem pentru diverse operații.
- Să implementeze exemple practice cu funcții predefinite din biblioteci standard.
2. Ce sunt subprogramele predefinite?
- Definiție: Subprogramele predefinite, cunoscute și ca funcții de sistem, sunt funcții oferite de bibliotecile standard ale limbajului C++ pentru a realiza operații comune fără a fi nevoie să fie implementate de utilizator.
- Exemple de utilizare: Operații matematice, manipularea șirurilor, gestionarea fișierelor, manipularea timpului, și altele.
3. Categorii de funcții predefinite
1. Funcții matematice (<cmath> sau <math.h>)
Funcție | Descriere | Exemplu |
sqrt(x) | Rădăcina pătrată a lui x. | sqrt(16) -> 4.0 |
pow(x, y) | Ridică x la puterea y. | pow(2, 3) -> 8.0 |
abs(x) | Valoarea absolută a lui x. | abs(-5) -> 5 |
ceil(x) | Rotunjire în sus la cel mai apropiat întreg. | ceil(4.2) -> 5.0 |
floor(x) | Rotunjire în jos la cel mai apropiat întreg. | floor(4.8) -> 4.0 |
log(x) | Logaritm natural al lui x. | log(10) -> 2.3026 |
exp(x) | Ridică e la puterea x. | exp(1) -> 2.718 |
sin(x), cos(x), tan(x) | Funcții trigonometrice. | sin(3.14) -> ~0.0 |
Exemplu: Utilizarea funcțiilor matematice
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double numar = 25.0;
cout << „Rădăcina pătrată: ” << sqrt(numar) << endl;
cout << „Puterea a doua: ” << pow(numar, 2) << endl;
cout << „Valoarea absolută: ” << abs(-numar) << endl;
return 0;
}
2. Funcții pentru șiruri de caractere (<cstring>)
Funcție | Descriere | Exemplu |
strlen(sir) | Returnează lungimea șirului. | strlen(„abc”) -> 3 |
strcmp(sir1, sir2) | Compară două șiruri lexicografic. | strcmp(„abc”, „abd”) -> -1 |
strcpy(dest, src) | Copiază șirul src în dest. | strcpy(dest, „hello”) |
strcat(dest, src) | Concatenează șirul src la sfârșitul lui dest. | strcat(dest, ” world”) |
strtok(sir, delim) | Împarte un șir în segmente. | strtok(„a,b,c”, „,”) -> „a” |
Exemplu: Funcții pentru șiruri
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char sir1[50] = „Salut”;
char sir2[] = ” lume!”;
strcat(sir1, sir2);
cout << „Concatenare: ” << sir1 << endl;
cout << „Lungime: ” << strlen(sir1) << endl;
return 0;
}
3. Funcții pentru manipularea timpului (<ctime>)
Funcție | Descriere | Exemplu |
time(NULL) | Returnează timpul curent în secunde de la epoca UNIX. | time(NULL) -> 1672444800 |
localtime(&time) | Conversie timp în structura tm (timp local). | localtime(&t) |
strftime(buffer, size, format, &time) | Formatare timp. | strftime(buf, 80, „%Y-%m-%d”, &t) |
clock() | Returnează timpul procesorului folosit de program. | clock() |
Exemplu: Afișarea timpului curent
#include <iostream>
#include <ctime>
using namespace std;
int main() {
time_t timpCurent = time(NULL);
tm* timpLocal = localtime(&timpCurent);
cout << „Ora curenta: ” << timpLocal->tm_hour << „:”
<< timpLocal->tm_min << „:” << timpLocal->tm_sec << endl;
return 0;
}
4. Funcții pentru generarea numerelor aleatoare (<cstdlib>)
Funcție | Descriere | Exemplu |
rand() | Generează un număr aleator între 0 și RAND_MAX. | rand() |
srand(seed) | Inițializează generatorul cu un număr specific (seed). | srand(time(NULL)) |
Exemplu: Generarea numerelor aleatoare
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main() {
srand(time(NULL));
for (int i = 0; i < 5; i++) {
cout << „Numar aleator: ” << rand() % 100 << endl; // Număr între 0 și 99
}
return 0;
}
5. Activități practice pentru elevi
- Scrieți un program care calculează aria unui cerc folosind funcția pow și M_PI (constantă din <cmath>).
- Realizați un program care verifică dacă două șiruri sunt identice utilizând funcția strcmp.
- Implementați un program care generează 10 numere aleatoare între 1 și 50 și le afișează sortate.
6. Scheme logice
- Calcul matematic:
- Start -> Apel funcție matematică -> Returnează rezultat -> Stop.
- Manipularea șirurilor:
- Start -> Citire șiruri -> Apel funcție (strlen, strcat, etc.) -> Afișare rezultat -> Stop.
- Generare aleatorie:
- Start -> Inițializare generator -> Generare număr -> Afișare -> Stop.
7. Concluzie
- Funcțiile predefinite din C++ oferă soluții rapide și eficiente pentru probleme comune.
- Alegerea funcției corecte depinde de tipul de problemă: matematică, manipulare șiruri, timp sau generare aleatoare.
- Practica utilizării funcțiilor predefinite ajută la dezvoltarea rapidă a programelor.