Modulul este o secvență de fragmente asociate logic, concepute ca o parte separată a programului.
Următoarele cerințe sunt impuse modulului:
1) modulul trebuie să implementeze o singură funcție, adică la construirea modulului, se utilizează conceptul: "un singur modul este o funcție". Astfel, modulul este un element al programului care efectuează o sarcină independentă. La intrarea sa, poate recepționa un anumit set de date de intrare, procesează-l în conformitate cu algoritmul specificat și returnează rezultatul procesării, adică Se aplică principiul standard al IPO (Input-Process-Output) - intrare-proces-ieșire;
2) modulul trebuie să fie menționat prin numele acestuia. Acesta trebuie să aibă o intrare și o ieșire, care să asigure închiderea modulului și simplificarea întreținerii programelor;
3) modulul trebuie să aibă o exhaustivitate funcțională; Să execute lista operațiunilor reglementate pentru realizarea fiecărei funcții separate în structură completă, suficientă pentru terminarea prelucrării inițiale;
4) modulul trebuie să returneze controlul până la punctul de apel, la rândul său, ar trebui să poată suna alte module însuși;
5) modulul nu ar trebui să salveze istoricul apelurilor sale și să le folosească în funcționarea lor;
6) modulul trebuie să aibă o independență logică, adică ieșirea modulului software depinde doar de datele sursă, dar nu depinde de funcționarea celorlalte module;
7) modulul ar trebui să aibă legături slabe de informare cu alte module software - schimbul de informații între module ar trebui să fie cât mai redus posibil;
8) modulul ar trebui să fie relativ mic, adică să fie previzibile în ceea ce privește mărimea și complexitatea. Experienții programatori recomandă dimensiunea maximă a două pagini de imprimări pe imprimantă.
Pentru a obține independența modulelor, se folosește adesea principiul localizării informațiilor. care constă în faptul că toate informațiile despre structura de date, prototipuri de funcții, constante etc. concentrează ("ascunde") într-un modul separat. Accesul la aceste informații este furnizat numai prin intermediul acestui modul (în limbajul algoritmic C / C ++, astfel de module au extensia * .h).
Programarea folosind module se numește programare modulară. A apărut la începutul anilor 60 ai secolului XX. Programarea modulară se bazează pe ideea de a utiliza nivele de abstractizare, atunci când problema complexă întreg sau sarcina este defalcate în sarcini, subactivități, rezumate și prezentate într-un arbore ierarhic de module interconectate, care reprezintă în mod colectiv software-ul generat (SW).
Avantajele programării modulare sunt următoarele:
· Mai mulți programatori pot scrie un program mare în același timp, ceea ce vă permite să terminați sarcina mai devreme;
· Puteți crea biblioteci ale celor mai comune module;
· Procedura de încărcare a unui program mare care necesită segmentare în memoria principală este simplificată;
· Există multe puncte naturale de control pentru depanarea proiectului;
· Este mai ușor să proiectați și să modificați ulterior programele.
Dezavantajele programării modulare sunt:
· Mărimea RAM necesară;
Creste timpul de compilare si de incarcare
· Timpul de execuție al programului este mărit;
Interfețele intermodule devin destul de complexe.
Modularea programării este implementată prin intermediul funcțiilor modulului. O funcție este o zonă de memorie alocată pentru a stoca codul de program care este conceput pentru a efectua o anumită sarcină. Cu alte cuvinte, funcția este modulul executabil minimal al programului C / C ++. În mod implicit, funcția este de tip extern și accesul la acesta este posibil din orice fișier program. Dar poate fi limitat de specificatorul de clasă de memorie statică.
Funcția este caracterizată de tipul, domeniul de aplicare al funcției asociate funcției, vizibilitatea numelui funcției și tipul de legare.
Introduceți funcția nume_funcțional (parametru_parametru)
Un tip este tipul valorii returnate de funcție, inclusiv void (cu excepția tipurilor de matrice sau funcții). Valoarea implicită este int. Dacă tipul de retur al funcției nu este nul, atunci corpul funcției trebuie să conțină cel puțin o instrucțiune de retur.
Numele funcției este identificatorul prin care puteți accesa funcția. Este ales arbitrar de către programator și nu trebuie să coincidă cu cuvintele de serviciu și cu numele altor obiecte de program. Cu toate acestea, orice program C / C ++ trebuie să aibă cel puțin o funcție numită principală - funcția principală care conține punctul de intrare în program.
Parametrii_parametri reprezintă o listă a parametrilor formali, adică variabile care acceptă valorile transmise funcției atunci când este apelată. Lista parametrilor formali este enumerată cu virgulă. Fiecare parametru formal trebuie să aibă următorul format:
Un tip poate fi încorporat (int, long, float, double, etc.), struct, uniune, enum, pointeri la ele sau funcții sau clase. Numele parametrului formal este numele variabilei utilizate în corp. Identificatorii parametrilor formali nu pot coincide cu numele variabilelor locale declarate în interiorul corpului funcției.
În C / C ++, sunt permise funcții, numărul de parametri pentru care funcția nu este fixată atunci când funcția este compilată și prin urmare tipurile lor rămân necunoscute. Numărul și tipurile de parametri ai acestor funcții devin cunoscute numai atunci când sunt chemați, atunci când lista parametrilor reali este specificată explicit. La definirea și descrierea unor astfel de funcții cu liste de parametri cu durată nedeterminată, specificarea parametrilor formali ar trebui să fie terminată cu virgulă și elipsă.
Fiecare funcție cu un număr variabil de parametri trebuie să aibă cel puțin un parametru obligatoriu. După lista parametrilor necesari, se introduce o virgulă, urmată de o eliptică care anunță compilatorul că nu este necesară monitorizarea ulterioară a corespondenței dintre numărul și tipurile de parametri în timpul procesării apelului funcției.
Parametrul_parametru poate să lipsească, adică parantezele pot fi goale, însă în acest caz este recomandat să specificați tipul vidului.
Funcția body_funcțională face parte din definiția funcției, delimitată de brațele curbate și plasată imediat după antetul funcției. Funcția body_funcțional poate fi fie un operator compus, fie un bloc. De exemplu: