Array ca parametru al procedurii

Programul poate fi plasat complet într-un singur bloc. Dar, de regulă, programele reale au un volum semnificativ, iar plasarea într-un singur bloc face dificilă scrierea și depanarea acestora. În plus, orice sarcină poate fi împărțită în sub-sarcini relativ independente. Proiectarea fiecărei submăsuri sub forma unui bloc separat facilitează împărțirea lucrărilor la program în etape independente și introducerea rapidă a schimbărilor.







Blocurile alocate pentru sub-sarcini se numesc unități de program. În Fortran există trei tipuri de unități de program independente:

Unitățile software independente au sisteme de etichetare independente și pot fi compilate separat. Toate elementele unității de program independente sunt locale. adică sunt disponibile în cadrul acestei unități și nu sunt disponibile în afara acesteia.

O parte a unităților de programe independente poate fi procedurile interne - proceduri, a căror descriere este inclusă în programul de transport.

Programul principal este o componentă obligatorie a oricărui program. La pornirea programului, sistemul de operare transferă controlul către operatorii programului principal. Programul principal trebuie să fie unic, altfel este imposibil să se determine punctul de intrare - operatorul de la care începe programul.

Structura programului principal este următoarea:

În parantezele pătrate, părțile opționale ale textului programului sunt închise, care pot lipsi. După cum puteți vedea, singurul element obligatoriu al programului principal este operatorul. O caracteristică distinctivă a programului principal este absența operatorilor speciali (subrutină, funcție sau modul) în antetul său: aceasta este ceea ce caracterizează această componentă ca fiind programul principal.

Declarația finală a programului principal nu marchează numai sfârșitul componentei programului, ci este, de asemenea, un semnal pentru oprirea întregului program. O bună organizare a programelor vă permite revenirea controlului la programul principal în etapa finală de lucru, dar dacă trebuie să opriți programul în altă parte, se va utiliza operatorul de oprire.

Dacă instrucțiunea de sfârșit conține numele programului, trebuie să se potrivească cu numele specificat în instrucțiunea programului din antet.

Descrierea blocurilor. Dacă există, operatorii executabili trebuie să precede blocul. Absența unui bloc Operatorii executivi sunt posibili, dar este lipsit de sens.

Operatorul conține separări de instrucțiuni executabile din descrierea procedurilor interne.

Procedurile externe sunt unități de program care servesc la execuția de subtascuri separate în cadrul întregului obiectiv general al programului.

Adesea, secvența de comenzi care efectuează acțiuni specifice trebuie repetată la mai multe puncte specifice din program. Secvența operatorilor pentru efectuarea acestor acțiuni poate fi scrisă sub forma unei proceduri.

Opinia generală a procedurii externe:







Pentru ca procedura să înceapă, este necesar să o apelați. Unitatea de program din care este apelată procedura se numește unitatea de programare apelată. Procedurile sunt solicitate din programul principal sau din alte proceduri, iar la finalizare, controlul unității de programare apelată este returnat.

Revenirea controlului de la procedură la unitatea de programare a apelantului până la punctul de apel al procedurii este efectuată de operatorul de retur. Operatorend indică nu numai sfârșitul procedurii, dar acționează și ca o declarație de returnare. Instrucțiunea de întoarcere poate întrerupe procedura în orice loc și poate reveni la locul apelului. Precum operatorul de oprire. poate fi parte a unei declarații condiționate.

Toate procedurile ar trebui să poată face schimb de date cu unitățile de apelant - să primească informații de la programul apelant și să le transmită rezultatele activității lor. Schimbul de informații cu procedurile poate avea loc prin parametrii (argumentele) procedurilor și / sau prin intermediul datelor globale. Organizarea datelor globale este discutată în secțiunea "Module".

Atunci când se transferă date prin parametri, antetul procedurii specifică o listă de parametri formali - o listă de variabile și / sau tablouri care sunt utilizate în timpul procedurii.

Operatorii de apeluri de procedură specifică o listă de parametri reali. Atunci când se solicită procedura, parametrii reali înlocuiesc parametrii formali.

Fiecare parametru al procedurii are următoarele caracteristici principale:

- rang - dimensiune sau număr de măsurători; rangul variabilei este 0;

- atribuirea parametrilor este de intrare, ieșire sau universală (variabilă).

Alocarea formală a parametrilor definește atributul de intenție:

intent (in) - parametru de intrare;

intent (out) - parametru de ieșire;

intenția (inout) este un parametru universal.

Dacă atributul alocării parametrilor nu este specificat, atunci în mod prestabilit, parametrul este considerat universal (inout).

Există două tipuri principale de proceduri: funcții procedură-funcții și proceduri de subrutine cu subrutine subrutine.

Structura funcției procedură are forma:

[Type] funcția nume funcție (lista de parametri formali)

Funcția de procedură calculează valoarea tipului specificat și readuce controlul la unitatea de programare apelată împreună cu această valoare. Valoarea rezultată se numește valoarea returnată. În programul de apel, valoarea returnată poate fi atribuită unei variabile sau înlocuită într-o expresie.

Operatorul de funcții se numește antetul funcției. Tipul de funcție specificat în antetul său este tipul valorii returnate. În plus, antetul specifică un nume de funcție unic, compilat în conformitate cu regulile Fortran, și o listă de parametri formali în paranteze.

Printre instrucțiunile de descriere trebuie să existe descrieri ale parametrilor formali ai funcției și ale variabilelor interne și ale matricei.

Dintre operatorii executivi trebuie să fie definită valoarea returnată a unei funcții al cărei nume este același cu numele funcției.

Dacă numele funcției este specificat în instrucțiunea de sfârșit, trebuie să se potrivească cu numele din antetul funcției.

Apelarea unei funcții nu necesită un operator special. Apelul la funcție este numele funcției și lista parametrilor reali în paranteze, de exemplu:

A = numele funcției (lista parametrilor actuali)

Exemple de apeluri către funcție:

a = sqrt (x) + sqrt (s)

Sub forma unei funcții, găsiți elementul în matricea reală cu valoarea maximă absolută. În programul principal este necesar să se normalizeze matricea, adică să se împartă toate elementele sale în elementul primit.

funcția reală Max_Abs (Array, cRows, cCols)

antetul funcției; valoarea de retur a tipului real

implicit nici unul. operatorul trebuie să fie în fiecare unitate de program

parametrii formali ai matricei de funcții, numărul de rânduri și coloane

integer, intenție (în). cRows, cCols

întreg. i, j. cicluri variabile

întreg. NumI, NumJ. coordonatele elementului matricei

Num1 = 1; NumJ = 1. Considerăm modulul maxim de module (1.1)







Articole similare

Trimiteți-le prietenilor: