Sunteți pe pagina 1din 4

CAP. 8 STRUCTURA PROGRAMELOR FORTRAN 8.

1 Uniti de program
Orice program, atunci cnd este executat de computer, ndeplinete un scop, realizeaz a anumit misiune caracterizat de ndeplinirea unor obiective precise de prelucrare a datelor. Mulimea obiectivelor impuse ce definesc o misiune de prelucrare a datelor se numete task. Proiectarea unui program ncepe ntotdeauna cu descrierea taskului. Atunci cnd misiunea programului este prea complicat, se folosete tactica "divide et impera": un task T se mparte n subtaskuri T1 , T2 , , Tn cu condiia ca ndeplinirea taskurilor T1 , T2 , , Tn s nsemne ndeplinirea taskului T . Orice program Fortran executabil este alctuit din una sau mai multe uniti de program. Unitate de program poate fi: programul principal (main), un subprogram extern (subrutin sau funcie), un modul, sau un bloc de date (block data). Dac programul este format dintr-o singur unitate de program, acea unitate, n mod obligatoriu, este programul principal. Dac un program executabil ndeplinete un task T, fiecare unitate de program corespunde unuia din subtaskurile T1 , T2 , , Tn care contribuie la ndeplinirea taskului T. Fiecare unitate de program este format din instruciuni executabile i neexecutabile (8.2). Fiecare unitate de program ncepe cu o instruciune iniial special i se termin cu o instruciune END. Atunci cnd programul este alctuit din mai multe uniti de program, programul principal controleaz i ordinea n care se execut diferitele uniti de program. Subprogramul extern (funcie sau subrutin) se poate folosi pentru a efectua prelucrri asupra unor entiti care sunt disponibile subprogramului extern. Aceste entiti pot fi argumente ale subprogramului care se dau n referina de subprogram, sau, sunt fcute accesibile subprogramului prin alte mijloace, de exemplu, prin blocuri common. Pentru a apela o subrutin se folosete instruciunea CALL. Atunci cnd este nevoie de valoarea unei funcii se apeleaz un subprogram funcie. Procesul computaional specificat de o funcie sau de o subrutin se numete procedur. Altfel spus, un subprogram extern definete o procedur. O procedur se poate apela din orice alt unitate de program. Modulele i blocurile de date nu sunt executabile; de aceea ele nu sunt considerate proceduri. O unitate de program BLOCK DATA conine numai definiii de date i se folosete pentru a specifica valori iniiale pentru un anumit set de obiectedate. Modulul conine definiii ce pot fi fcute accesibile altor uniti de program. Modulul conine definiii de date, definiii de tip, definiii de procedur, numite subprograme modul, i specificaii de interfee procedur. Subprogramele modul pot fi subprograme subrutin sau funcie. Un subprogram modul poate fi apelat de orice alt subprogram modul sau de orice alt unitate de program ce are acces la modul. Programul principal, subprogramele externe i subprogramele modul pot conine subprograme interne care pot fi subrutine sau funcii. Programul principal, sub116

programul extern sau subprogramul modul ce conine un subprogram intern se numete gazda (host) subprogramului intern. Subprogramele interne se introduc cu instruciunea CONTAINS. Subprogramele interne pot fi apelate de subprogramele lor gazd sau de alte subprograme interne ale aceleiai gazde. Toate unitile de program, cu excepia blocurilor de date, pot conine blocuri de interfa. Un bloc de interfa descrie interfaa la o procedur extern, adic numele procedurii, numrul de argumente, tipul lor, atribute, nume. Aceast informaie permite procesorului s verifice dac accesul a fost fcut n mod corect. Structura unitilor de program este artat n Fig. 8.1.

main

modul

subprogram intern subprogram extern

subprograme modul

subprograme interne

Fig. 8.1

8.2 Clasificarea instruciunilor Fortran


Instruciunile Fortran se pot mpri n instruciuni executabile i instruciuni neexecutabile. O instruciune executabil cauzeaz o aciune, un proces de prelucrare a informaiei. O instruciune neexecutabil nu provoac aciuni de procesare; instruciunea neexecutabil este de natur informativ, ea descrie, clasific sau specific formatul unor elemente ale programului (date, uniti de program, puncte de intrare). Instruciuni executabile sunt aa-numitele instruciuni de aciune. n cele ce urmeaz

117

descriem sintaxa instruciunilor de aciune. Numele instruciunii este dat de un cuvnt cheie pe care l scriem cu litere mari. Formele instruciunilor de aciune sunt:
ALLOCATE ( list_de_alocaie [ , STAT = var_scal_int ] ) ASSIGN et TO var_scal_int BACKSPACE unitate_de_fisier_extern CALL nume_de_sub [ ( [ list_de_spec_arg_act ] ) ] CLOSE ( list_de_spec_close ) CONTINUE CYCLE [ nume_de_constr_DO ] DEALLOCATE ( list_de_nume [ , STAT = var_scal_int ] ) ENDFILE unitate_de_fiier_extern ENDFILE ( list_de_spec_de_poziie ) EXIT [ nume_de_constr_DO ] GO TO et GO TO ( list_de_et ) [ , ] expr_scal_int GO TO var_scal_int [ [ , ] ( list_de_et ) ] IF ( expr_logic_scal ) instr_de_aciune IF ( expr_num_scal ) et , et , et INQUIRE ( list_de_spec_inquire ) [ list_de_spec_output ] NULLIFY ( list_de_ob_pointer ) OPEN ( list_de_spec_de_conect ) PAUSE ( cod_acces )

118

PRINT format [ , list_de_ent_output ] READ ( list_de_spec_de_control_io ) [ list_de_ent_input ] READ format [ , list_de_ent_input ] RETURN [ expr_scal_int ] REWIND unitate_de_fiier_extern REWIND ( list_de_spec_de_poziie ) STOP

[ cod_de_acces ]

WHERE ( expr_logic_tablou ) instr_de_atrib_tablou WRITE ( lista_de_spec_de_control_io ) [ lista_de_ent_output ]

var_pointer => expr_int (instruciune de atribuire pointer) var = expr ( instruciune de atribuire ) Mai sus am folosit prescurtrile din tabelul 8.1. Tabelul 8.1
Prescurtare Semnificaie Prescurtare Semnificaie

act arg atrib conect constr dimens ent et execut expr fin incr

actual(e) argument(e) atribuire conectare contrucie dimensiune(i) entitate(entiti) etichet(e) executabil() expresie final() increment

init int instr io num ob scal sel spec sub val var

iniial() ntreg(ntreag) instruciune input-output numeric(numeric) obiect(e) scalar() selector specificaie(i) subrutin valoare(valori) variabil

Prin construcie de control nelegem un anumit grup de instruciuni cu care se realizeaz instruciunile compuse ale programrii structurate (7.8), adic instruciuni executabile, de pild instruciuni de aciune i instruciuni ce controleaz ordinea n

119

S-ar putea să vă placă și