Tematică științifică · 2.5
Subprograme predefinite
Funcții și metode puse la dispoziție de limbaj pentru prelucrarea numerelor, caracterelor, șirurilor și colecțiilor, cu alegerea corectă a bibliotecii, argumentelor și tipului rezultatului în C++ și Python.
El primește, dacă este nevoie, date prin parametri, execută instrucțiunile din corpul său și poate întoarce o valoare.
Într-o expresie, apelul intră în calcul cu valoarea returnată.
Subprogramele ajută la împărțirea unei probleme în operații mai mici și reutilizabile. În funcție de cine le scrie, ele pot fi:
- predefinite, puse la dispoziție de limbaj sau de bibliotecile lui;
- definite de utilizator, scrise de programator pentru problema rezolvată.
Programul îl apelează, îi transmite argumente și folosește rezultatul întors, fără să-i rescrie algoritmul.
De exemplu, pentru valoarea absolută nu este nevoie să se testeze separat dacă numărul este pozitiv sau negativ. Se apelează funcția corespunzătoare:
rezultat ← valoare_abs(n)
La examen, un subprogram predefinit se alege după tipul datelor și după operația cerută. Se verifică:
- numele exact;
- numărul argumentelor;
- tipul rezultatului;
- biblioteca sau modulul necesar.
Apelul unui subprogram predefinit
Un apel are forma generală:
nume_subprogram(argument1, argument2, ...)
Ordinea lor contează. Rezultatul poate fi atribuit unei variabile, folosit într-o expresie sau comparat direct:
maxim ← max(a, b)
dacă lungime(text) > 10 atunci
...
sfdacă
Nu toate subprogramele întorc o valoare. Unele modifică un obiect sau efectuează o acțiune, cum este sortarea unei colecții.
Funcții matematice
În C++
Funcțiile matematice uzuale se găsesc în biblioteca <cmath>:
#include <cmath>
| Funcție | Rezultat | Observație |
|---|---|---|
sqrt(x) | rădăcina pătrată | pentru x >= 0 |
pow(x, y) | x la puterea y | întoarce un tip real |
fabs(x) | modulul unui real | pentru valori reale |
sin(x), cos(x), tan(x) | funcții trigonometrice | argumentul este în radiani |
log(x) | logaritm natural | pentru x > 0 |
log10(x) | logaritm în baza 10 | pentru x > 0 |
ceil(x) | primul întreg mai mare sau egal | rezultat real |
floor(x) | ultimul întreg mai mic sau egal | rezultat real |
round(x) | rotunjire la cel mai apropiat întreg | rezultat real |
Pentru numere întregi se folosește funcția abs, din <cstdlib>; începând cu
standardul C++17, ea este declarată și în <cmath>:
#include <cstdlib>
int d = abs(a - b);
pow(2, 3) produce valoarea numerică 8, dar tipul rezultatului este de regulă
real. Dacă este necesar un întreg, conversia trebuie făcută numai când se
știe că rezultatul este exact:
int p = static_cast<int>(pow(2, 3));
Pentru o putere întreagă, înmulțirea repetată, scrisă cu o structură repetitivă,
poate fi mai potrivită decât pow, mai ales când se lucrează numai cu numere
întregi.
int p = 1;
for (int i = 0; i < exponent; i++)
p *= baza;
În Python
Funcțiile matematice suplimentare se găsesc în modulul math:
import math
| Funcție | Rezultat | Observație |
|---|---|---|
math.sqrt(x) | rădăcina pătrată | rezultat real |
math.pow(x, y) | x la puterea y | rezultat real |
abs(x) | modulul | funcție predefinită, fără import |
math.sin(x), math.cos(x) | funcții trigonometrice | argumentul este în radiani |
math.log(x) | logaritm natural | pentru x > 0 |
math.log10(x) | logaritm în baza 10 | pentru x > 0 |
math.ceil(x) | primul întreg mai mare sau egal | rezultat întreg |
math.floor(x) | ultimul întreg mai mic sau egal | rezultat întreg |
round(x) | rotunjire la cel mai apropiat întreg | funcție predefinită; la egalitate alege numărul par: round(2.5) este 2 |
Pentru puteri întregi se folosește operatorul **:
p = baza ** exponent
pow(a, b) este funcția predefinită pentru putere. Forma cu trei argumente,
pow(a, b, m), calculează eficient a**b % m pentru exponenți întregi:
rest = pow(a, b, m)
Rezultatul lui // este câtul întreg, iar % este restul împărțirii:
cat = a // b
rest = a % b
Valori extreme și funcții de comparare
În C++, pentru două valori se folosesc min și max. Ele se găsesc în
<algorithm>:
#include <algorithm>
int mic = min(a, b);
int mare = max(a, b);
Pentru mai multe valori se poate compune apelul:
int maxim = max(a, max(b, c));
O altă soluție, de obicei mai ușor de extins, este inițializarea cu primul element și parcurgerea valorilor:
int maxim = a;
maxim = max(maxim, b);
maxim = max(maxim, c);
În Python, min și max funcționează atât cu mai multe argumente, cât și cu
o colecție:
mic = min(a, b, c)
mare = max(a, b, c)
mare_din_lista = max(valori)
sum calculează suma elementelor unei colecții:
suma = sum(valori)
Pentru o colecție goală, sum([]) este 0, iar min([]) și max([])
semnalează eroare. Dacă enunțul nu garantează existența unui
element, cazul gol trebuie tratat înaintea apelului.
Materialul acesta se citește pe educamp.ro și nu se tipărește.
S-a încheiat minutul de citit liber.
Ce cuprinde subcapitolul
- Apelul unui subprogram predefinit
- Funcții matematice
- Valori extreme și funcții de comparare
- Conversia și citirea datelor
- Funcții și metode pentru șiruri
- Funcții pentru colecții
- Subprogramul potrivit pentru cerință
- Greșeli frecvente la examen
Continuă lectura ca și cursant
Cel puțin un subcapitol din fiecare capitol este disponibil gratuit și integral. Pentru a citi toate celelalte subcapitole ale disciplinei, te înscrii la cursul de pregătire.
Te înscrii, alegi în cont când începe cursul și plătești prima lună prin transfer bancar. Pentru a vedea mai întâi cum este prezentată materia, poți reveni la primul subcapitol al capitolului.
Acces la suportul de curs
25 RON / lună, fără ședințe
Ce cuprinde:
- Acces la toate lecțiile disponibile
- Suport de curs pentru tematica științifică și metodică
- Exemple, explicații și exerciții
- Acces la materialele noi adăugate pe platformă
- Posibilitatea de a adresa întrebări
Poți alege și variante cu ședințe online, în grup sau individuale. Le vezi pe pagina cursului.
Ai întrebări sau o problemă? Scrie-mi pe WhatsApp, la 0745 874 576.
Surse (4)
- Cerchez, E., Șerban, M., „Programarea în limbajul C/C++ pentru liceu”, Editura Polirom, Iași, 2005
- „Informatică. Manual pentru clasa a IX-a”, Editura Didactică și Pedagogică, București
- „Informatică. Manual pentru clasa a XI-a”, Editura Didactică și Pedagogică, București
- „Tutorialul de Python”, documentația oficială a limbajului Python, https://docs.python.org/ro/3/library/functions.html