Structura unui program C++

<#include...>
[#include...]		1 Directiva de preprocesare
[#define...]
using namespace std; 2
[definiții și declarații globale] 3
[definirea/declararea de subprograme] 4
int main() 5
{ *
  [declarații locale] 6
  <blocul de instrucțiuni> 7
  return 0; 8
} *
/*Legendă
<...> - trebuie obligatoriu înlocuit corespunzător
[...] - poate lipsi din algoritm */

1 a) Preprocesarea constă în prelucrarea unui fișier sursă înainte de a-l supune compilării.
  La nivel de liceu, folosim directiva #include pentru a include librării.
  Costrucția este de forma #include <nume.librarie>, unde nume.librarie se înlocuiește cu una din bibliotecile acceptate la Bacalaureat, în cazul nostru.
  Exemplul includerii celor mai comune biblioteci:

#include <iostream>
#include <fstream>
#include <cstring>
#include <cmath>

  Pentru lista celor mai importante biblioteci folosite în liceu, vezi pagina din documentația noastră, Bibliotecile C++.

  b) Macro substituirile au ca efect inlocuirea identificatorului ales cu valoarea definita in aceasta directiva. Sintaxa este #define nume valoare. În codul sursă, toate aparițiile lui nume vor fi inlocuite cu valoare.

#define nmax 50
#define a 10

2 Construcția using namespace std; va fi prezentă întotdeauna atunci când scriem un program simplu în C++. Din nou, la nivel de liceu, definirea acestui „namespace” va fi întotdeauna std (standard). Orientativ, este bine de știut că sintaxa are ca scop instruirea calculatorului să verifice în std în cazul în care noi folosim o construcție de genul cout și ea nu este definită în câmpul curent.

3 Aici sunt declarate variabilele globale, acestea fiind vizibile în tot programul. Mai multe detalii despre variabilele globale găsiți în lecția Variabile globale.

4 Zona subprogramelor (funcțiilor), unde pot fi atât definite, cât și doar declarate.

5 Funcția principală int main() este ceea ce se execută atunci când compilăm un program. Executarea instrucțiunilor se face în ordinea în care sunt scrise în interiorul funcției principale.
  În 99% din cazuri, parantezele rotunde vor rămâne goale. Respectând programa în vigoare, parametrii funcției principale nu vor exista niciodată.

6 În general, variabilele locale se declară în primele rânduri ale funcțiilor. Acest lucru este de bună practică, întrucât ele sunt grupate și ușor de observat.
  Pe parcurs, veți întâlni situații în care variabilele locale vor fi declarate în interiorul secvenței executabile, în funcție de cerința problemei și complexitatea algoritmului.
  Despre vizibilitatea lor în program, puteți găsi detalii și exemple în lecția Variabile locale.

7 Blocul de instrucțiuni conține secvențele de cod ce urmează a fi executate.

8 return 0; marchează ieșirea din funcția executată curent, astfel că fiind vorba despre funcția principală, executarea acestei construcții produce finalizarea executării algoritmului (oprirea programului). Pentru a ști calculatorul când se termină programul, această construcție se scrie pe ultimul rând al funcției pricipale.
  În urma parcurgerii materialului despre transmiterea parametrilor într-un subprogram, necesitatea și modul de funcționare al instrucțiunii va fi înțeles mai bine.

* Acoladele cuprind conținutul funcției principale. Ele sunt folosite de asemenea la structurile de control și la subprograme și pe lângă funcționalitatea lor în compilarea algoritmului, ne pot arăta sugestiv instrucțiunile care fac parte din respectiva structură.


Exemplu

Scrieți un program C++ care citește două numere naturale a și b de la tastatură și afișează perimetrul dreptunghiului de lungime a și lățime b.

#include <iostream>
using namespace std;
int main() {
    unsigned a,b;
    cin>>a>>b;
    cout<<2*a+2*b;
return 0;
}
6 7
26

Exemplu 2

  Acest exemplu conține o problemă mai complexă de clasa a XI-a și are ca scop evidențierea tutror elementelor citate mai sus (subprograme, variabile globale etc.)
  Nu vă dezamăgiți dacă nu înțelegeți nimic! Cu ajutorul acestei platforme si al materialelor disponibile veți ajunge să ințelegeți cu ușurință ce se întâmplă mai jos :D



  Se dă un cuvânt din cel mult 8 litere distincte. Să se afișeze, în ordine alfabetică, toate anagramele acestui cuvânt. Cuvântul se citește din fișierul anagrame.in, iar anagramele se scriu în fișierul anagrame.out.

#include <iostream>
#include <fstream>
#include <cstring>
#include <algorithm>
using namespace std;
ifstream in ("anagrame.in");
ofstream out ("anagrame.out");
int n ,s[10], c[10];
char cuv[10];
void afisare(){
    for (int i=0; i<n; i++)
        out<<cuv[s[i]];
    out<<'\n';
}
void anagrame(int k){
    for (int i=0; i<n; i++)
    if(!c[i]){
        s[k]=i; c[i]=1;
        if (k==n-1) afisare();
        else anagrame(k+1);
        c[i]=0;
    }
}
int main(){
    in>>cuv;
    n=strlen(cuv);
    sort(cuv, cuv+n);
    anagrame(0);
    return 0;
}