Programarea înseamnă scrierea de texte sursă. Cartea referită prin:
Stelian NICULESCU - Inițiere în FORTRAN, Editura Tehnică, București, 1972, 280 pag.
conține 44 de texte sursă tipărite așa cum apar ele de la imprimanta calculatorului și aceste texte sursă trebuie analizate prin prisma obiectivului cărții, de a a-l învăța pe cititor să utilizeze facilitățile limbajului de programare FORTRAN în a-și rezolva problemele, desigur la nivelul anului 1972, nu acum.
În primul rând, remarc consecvența autorului cărții Stelian NICULESCU de a păstra notațiile din enunțul problemei în schema logică și mai apoi în textul sursă.
La pagina 132 se află textul sursă destinat implementării metodei de calcul al unei integrale folosind metoda trapezelor. Funcția f(x) este referită în programul FORTRAN ca F(A), F(B), F(A+X), căci programatorul a identificat mai multe subexpresii în formula de calcul a integralei folosind metoda trapezelor.
Stelian NICULESCU - Inițiere în FORTRAN, Editura Tehnică, București, 1972, 280 pag.
conține 44 de texte sursă tipărite așa cum apar ele de la imprimanta calculatorului și aceste texte sursă trebuie analizate prin prisma obiectivului cărții, de a a-l învăța pe cititor să utilizeze facilitățile limbajului de programare FORTRAN în a-și rezolva problemele, desigur la nivelul anului 1972, nu acum.
În primul rând, remarc consecvența autorului cărții Stelian NICULESCU de a păstra notațiile din enunțul problemei în schema logică și mai apoi în textul sursă.
La pagina 132 se află textul sursă destinat implementării metodei de calcul al unei integrale folosind metoda trapezelor. Funcția f(x) este referită în programul FORTRAN ca F(A), F(B), F(A+X), căci programatorul a identificat mai multe subexpresii în formula de calcul a integralei folosind metoda trapezelor.
Sunt alese denumiri sugestive de variabile și de subprograme. Programul de la pagina 144 care un factorial, utilizează un subprogram de tip FUNCTION numit FACT()
Dacă programatorul își dorește să-și construiască propria bibliotecă de subprograme, va face astfel de alegeri și-i va fi foarte ușor să identifice componentele bibliotecii atunci când dorește să le reutilizeze.
La paginile 150 și 151 se află textul sursă care exemplifică utilizarea lucrului cu matrici utilizate la definire folosind instrucțiunea DATA și, respectiv, prin citirea elementelor ale căror valori se află perforate cu un anumit format pe cartele. Programul apelează două subprograme de tip SUBROUTINE fără transmitere de parametri în listă, datorită faptului că acei parametri se află specificați în instrucțiunile COMMON scrise atât în programul apelator, cât și în subrutine. Autorul Stelian NICULESCU a ales pentru subprogramul de transpunere a unei matrice, numele TRANSPUS, iar pentru subprogramul de înmulțire a matricilor numele PRODUS.
Se știe că atunci când cineva vrea să scrie un program, o face pentru a rezolva toate problemele din clasa de probleme căreia aparține enunțul problemei pe care a preluat-o programatorul și de aceea, acesta caută să se asigure că atunci când va dori să mai rezolve și o altă problemă din aceeași clasă, nu va fi necesar să intervină pe textul sursă să facă oarece modificări. Autorul cărții, Stelian NICULESCU, a ținut seama de această cerință și în capitolul 11 intitulat APLICAȚII, a matricele de dimensiuni suficient de mari, încât să acopere cât mai multe dintre problemele care ar apărea de-a lungul timpului. În textul sursă al programului 11.1 se definesc matrici cu 50 de linii și 50 de coloane și vectori cu 50 de elemente, prin instrucțiunea:
DIMENSION A(50,50),B(50,50),X(50)
Și în cazul programului 11.7 se definesc matrici de dimensiuni mult mai mari, precum:
DIMENSION A(45,45),B(50,45),P(45,45),T945,45)
iar programatorul care va vrea să înmulțească două matrici și să tipărească matricea produs și transpusa acestui produs, nu va face altceva decât să folosească programul, dacă și numai dacă, matricile lui au numărul de linii și de coloane care să se încadreze în dimensiuniel matricelor definite în programul scris și testat cândva, căci presupunem că textul sursă 11.7 are un set de cartele perforate, o imprimantă și câteva detalii de pregătire a cartelelor cu propriile valori ale eleentelor matricelor A și B.
Când am citit textele sursă 5.9 de la pagina 124 și 5.11 de la pagina 126, mi-am adus aminte de seminariile mele de programare din studenție, când Ștefan MUSTĂȚEA, asistentul nostru ne-a prezentat problemele de alegere a elementului maxim dintr-un șir și de ordonare crescătoare e a elementelor unui șir pentru a scrie programe în COPCODER pe care să le rulăm pe calculatorul japonez NEAC 1240. Am studiat cu atenție textele scrise de autorul cărții, Stelian NICULESCU am regăsit aceleași idei în care inițializam o variabilă de lucru Y=X(1) după care o comparam cu celelalte elemente din șir și o modificam dacă Y era mai mică decât respectiva valoare a șirului.
În cazul ordonării elementelor unui șir, asistentul nostru ne-a prezentat mai multe variante, dar una dintre ele era eficientă, căci dacă șirul era deja ordonat, procesul de ordonare se oprea automat. Stelian NICULESCU definește o variabilă INDEX care contorizează inter-schimburile de elemente și procesul se încheie dacă și numai dacă după un proces de comparare nu mai apar interschimburi de elemente, ceea ce înseamnă că șirul este ordonat.
Programul de la capitolul 10 intitulat SEGMENTAREA PROGRAMELOR corespunde vremurilor de demult când erau restricții severe de memorie internă a unui calculator, iar dimensiunile operanzilor erau foarte, foarte mari. Atunci se segmentau programele, ceea ce însemna că exista un segment de bază, permanent în memorie cu operanzi necesari tuturor etapelor și segmente care se încărcau dinamic, executau prelucrări, după care lăsau loc altor segmente de program. Este ceea ce în viața de zi cu zi se întâmplă cu depozitările temporare a mărfurilor.
În programul 10.1 aturoul cărții Stelian NICULESCU a definit un segment principal unde a inițializat matricele A(45,45) și B(45,45) de mari dimensiuni, pe care le-a inițializat. Această parte de text sursă a plasat-o în segmentul numit S1. A construit o subrutină unde a adunat martricele A și B și a aflat elementul maxim al matricei rezultate din adunare. Acest fragment de text sursă l-a plasat într-un segment numit S2. El a mai construit un segment numit S3 în care a scris liniile sursă ale unei subrutine destinată scăderii dintre două matrice și aflării elementului minim din matricea rezultat.
Apelurile folosind instrucțiunea CALL realizează mai întâi încărcarea segmentului S1 și apoi executarea operațiilor procedurii AD(MAX). Celălalt apel determină încărcarea segmentului S3, apoi execuția operațiilor de prelucrare corespunzătoare ale subrutinei SC(MINI).
Autorul folosește în acest text sursă și ideea de procedură cu mai multe puncte de intrare ENTRY SUBSC pentru a da un pic de culoare textului sursă, căci toată lumea știe că soluția era un pic alta dacă ENTRU e precedat de RETURN.
Chiar dacă este vorba de concepte ceva mai aride ale limbajului FORTRAN, autorul a găsit modalități clare de prezentare, fără a-l speria pe cititor că limbajul este greu, că este pândit la tot pasul de erori. Este foarte clar că prezentarea elementelor limbajului și exemplificarea fără a introduce eventuale erori pe care le-ar face programatorul, arată caracterul pozitiv al abordării. La paginile 47 și 48 cititorul este atenționat care sunt erorile pe care dacă le face, construcțiile sale nu mai sunt identificatori, căci ies în afara definiției
<identificator> ::= < literă > | <identificator> < literă > | <identificator> < cifră >
Faptul că există textele sursă tipărite după listingurile obținute la imprimanta un calculator FELIX C 256, dovedește că toate programele au fost rulate și cititorul dacă va avea și el un set de cartele perforate identice, va obține la rulare exact programele existente în cartea lui Stelian NICULESCU.
Am scris undeva că recitind această carte, am remarcat prospețimea ei, deși limbajul FORTRAN este istorie, căci problemele enunțate, soluțiile propuse și secvențele de texte sursă sunt exact ceea ce trebuie unui programator. Cărțile despre alte limbaje de programare din zilele noastre au cam aceeași structură. Este adevărat că limbajele de azi folosesc pointeri, structuri de tip articol, obiecte, recursivitate, alocări dinamice de memorie și numeroase biblioteci de funcții, dar cu un mic efort de imaginație, toate ar putea fi alipite aici, adăugând noi capitole, dacă și numai dacă limbajul FORTRAN ar mai fi și el un pic șlefuit și ar fi aruncate peste bord restricțiile prea dure, puse în vremurile de demult pentru a avea pentru el un compilator cu fiabilitate cât mai ridicată.
Nu spun că trebuie să privim cu indulgență ceea ce era acum 54 de ani, dar trebuie să acceptăm ideea că fără progresele generat de produsele software scrise în limbajul FORTRAN multe dintre realizările de care beneficiem acum nu ar fi existat și mă refer la construcțiile ale căror calcule de rezistență s-au obținut prin rulări de programe FORTRAN, la navele gigantice care circulau pe oceane, a căror proiectare s-a făcut pe calculator cu programe FORTAN, ca să nu mai zic prea multe despre zborurile omului spre Lună, care au fost dirijate la NASA tot folosind programe scrise în FORTRAN.
(22 august 2026)
No comments:
Post a Comment