...rezolvarii subproblemei corespunzatoare. Descrierea se va incheia cu cuvantul SFSUBALGORITM sau SF-nume.Dam ca exemplu un subalgoritm cu numele MAXIM, care gaseste maximul dintre componentele vectoruluiX x1,x2, ..., xn.Datele cunoscute pentru acest subalgoritm sunt vectorul X si numarul n al componentelor vectorului X. Ca rezultat vom obtine maximul cerut, pe care-l vom nota cu max. Deci lista parametrilor formali contine trei variabile, n, X si max. Subalgoritmul este dat in continuare.SUBALGORITMUL maximn,X,max ESTE FIE maxx1 PENTRU i2n EXECUT DAC ximax ATUNCI maxxi SFDACSFPENTRUSF-maximIn cadrul multor algoritmi este necesar calculul valorilor unei functii in diferite puncte. Este necesar sa definim functia printr-un subalgoritm de tip functie.Pentru definirea unui subalgoritm de tip functie se foloseste un antet care precizeaza numele functiei si variabilele de care depinde ea. Subalgoritmul are formaFUNCbIA numelpf ESTEIAntetul functieiS textIcorpul functieiSSF-numeImarca de sfarsitSIn corpul functiei trebuie sa existe cel putin o atribuire in care numele functiei apare in partea stanga, deci prin care functia primeste o valoare.Dam ca exemplu o functie numar R -- I2,3,4,5S, definita matematic astfelIn Pseudocod descrierea este urmatoareaFUNCbIA numarx ESTE DAC x0.2 ATUNCI numar2 ALTFEL DAC x0.5 ATUNCI numar3 ALTFEL DAC x0.9 ATUNCI numar4 ALTFEL numar5 SFDAC SFDAC SFDAC SF-numarAm vazut ca definitia unei functii consta dintrun antet si dintrun bloc care va defini actiunile prin care se calculeaza valoarea functiei. In antet se precizeaza numele functiei si lista parametrilor formali.In concluzie, exista doua categorii de subalgoritmi de tip functie si subalgoritmi propriu-zisi, carora li se mai spune si proceduri. Importanta lor va fi subliniata prin toate exemplele care urmeaza in acest curs. In incheiere mentionam ca subprogramele de tip functie se folosesc in scopul definirii functiilor, asa cum sunt cunoscute ele din matematica, in timp ce subalgoritmii de tip procedura se refera la rezolvarea unor probleme ce apar ca subprobleme, fiind algoritmi de sine statatori.2.2 Apelul unui subalgoritmAm vazut ca un subalgoritm este dedicat rezolvarii unei subprobleme S a unei probleme mai complexe C. Algoritmul corespunzator problemei C va folosi toate operatiile necesare rezolvarii problemei S, deci va folosi ca parte intregul subalgoritm conceput pentru rezolvarea subproblemei S. Spunem ca el va apela acest subalgoritm.In Pseudocod apelul unei functii se face scriind intro expresie numele functiei urmat de lista parametrilor actuali. Trebuie sa existe o corespondenta biunivoca intre parametrii actuali si cei formali folositi in definitia functiei. Desi denumirile variabilelor din cele doua liste pot sa difere, rolul variabilelor care se corespund este acelasi. Mai exact, parametrul formal si parametrul actual corespunzator trebuie sa se refere la aceeasi entitate, trebuie sa aiba aceeasi semnificatie, sa reprezinte aceeasi structura de date. Putem considera ca in timpul executiei algoritmului cei doi parametri devin identici. Folosirea unui subalgoritm in cadrul unui algoritm se face apeland acest subalgoritm prin propozitia standard CHEAM nume lpa unde nume este numele subalgoritmului apelat iar lpa este lista parametrilor actuali. Aceasta lista contine toate datele de intrare cele cunoscute in subproblema corespunzatoare si toate rezultatele obtinute in subalgoritm. i in acest caz intre lista parametrilor formali din definitia subalgoritmului si lista parametrilor actuali din propozitia de apel trebuie sa existe o corespondenta biunivoca, ca si in cazul functiilor. Ca o prima verificare a respectarii acestei corespondente, subliniem ca numarul parametrilor actuali trebuie sa coincida cu numarul parametrilor formali...
Download