Se poate trece la capitolul următor cu tasta ► și se poate reveni la un capitol precedent cu tasta ◄

Fundamentele programării


<

C
a
p
i
t
o
l
u
l

a
n
t
e
r
i
o
r

<

Programare abstractă

Să discutăm, momentan, la nivel abstract (ceea ce va fi un adevărat ghimpe în coastă). Știu cât de supărător e pentru minte să mestece idei abstracte. E atât de ușor să vorbesc despre copaci și cer și iarba de pe câmpie și despre soarele care apune lăsând peste tot o nuanță plăcută și liniștită de arămiu fiindcă mintea e obișnuită cu asemenea idei. Cel mai probabil le-a experiementat și le poate asocia cu experiențe trăite. Însă de îndată ce aruncăm un text de genul ”Curba determinantă de reținere a claselor de obiecte abstracte definite și utilizate în medii variate de dezvoltare cât și în cadrul uneltelor de dezvoltare [...] poate fi foarte dezarmantă”. Poate prinde, dar sunt mai multe șanse să nu.

Descrierea programării

Programarea - în orice limbaj - are câteva elemente comune, elemente pe care le voi enumara aici. Partea bună e că după ce vei prinde care sunt ele, de fiecare dată când vei învăța un limbaj nou, te vei putea baza pe acestea. Un limbaj de programare are niște elemente comune cu limbile obișnuite:

- are un vocabular (o listă de cuvinte bătute în cuie); și

- o gramatică (un set de reguli după care se aranjează aceste cuvinte)

Însă au un domeniu mai restrâns decât limbajul uman. Într-un limbaj de programare nu vei vorbi de mese sau clădiri. Nu la început. Nu cât încă ești sănătos. Domeniul e destul de îngust și se rezumă la trei concepte:

- declarații;

- decizii; și

- cicluri

Pentru aceasta să le mulțimim lui Corrado Bohm și Guiseppe Jacopini căci ei au venit cu idea aceasta. Iar Edsger Dijkstra a pus trendul în lumina și în mișcare.

Programarea structurată

Aceste trei concepte formează programarea structurată. Programarea organizată. Înainte de a explica fiecare dintre cele trei, să fac puțin referire la programarea nestructurată. Genul ăsta de programare se baza foarte mult pe o instrucțiune general definită ca 'go to'. „Du-te la” urmat de o linie de cod. Dacă 1 e mai mare decât 2, du-te la linia x de cod. Dacă x egal cu 0 du-te la linia y. Totul bine și frumos, numai că atunci când începi să scrii cod și să-l urmărești, constatai că mai mult săreai ca o broască de la o parte la alta a codului, decât să înțelegi ce trebuie să faci în continuare.

Un program este o înșiruire de pași, care executați unul după altul, din datele de intrare, va furniza datele de ieșire. Așadar în primul rând e vorba de o înșiruire consecutivă de pași. Când faci curat pe birou urmezi o serie de pași pe care îi faci în ordine. Nu ștergi de praf biroul și după aia dai jos de pe el obiectele care stau. Sau când cineva face mâncare, întâi prepară ingredientele, nu le pune cum sunt în oală, și după ce sunt fierte le taie sau curăță.

Detalierea elementelor programării structurate

1. Declarațiile. Se referă la una din operațiile de atribuire, operații matematice (adunări, înmulțiri), apeluri de funcții sau metode. Orice nu e decizie.

2. Deciziile. Ca în viața reală, o decizie reprezintă momentul când ai mai multe posibilități de a continua în funcție de o condiție. Logica e la fel ca în viața obișnuită: Dacă am bani de bere, am să cumpăr. Dacă mă sună, am să fiu încântat. Dacă mă lasă în pace, o să-mi termin treabă, altfel nu știu de ce o să fiu în stare. Adică: DACĂ condiție ATUNCI ceva ALTFEL altceva.

Într-un fel sau altul, mecanismul ăsta trebuie să fie prezent în orice limbaj de programare.

3. Buclele se referă la părți ale codului care se repetă de un număr de ori. Avem 3 tipuri diferite. Bucle determinate, unde știm exact câți pași vor fi și cele nedeterminate care se împart în două: cele care se execută de 0 sau de mai multe ori și cele care se execută o dată sau de mai multe ori.

Limbajul folosit pentru cele determinate e: PENTRU contor DE LA voloare initială PÂNĂ LA valoare maximă PAS 1 [sau 2, etc.] EXECUTĂ.

Pentru cele nederminate care pot să nu se execute deloc avem: CÂT TIMP condiție EXECUTĂ.

Și ultima categorie: EXECUTĂ ... PÂNĂ CÂND condiție

Ultimele două folosesc aceleași cuvinte însă în al II-lea caz codul care se execută cel puțin o dată fiindcă prima dată se trece prin codul de executat și abia la sfârșit se face verificarea. Și există motive de ce sunt două moduri de a face, aparent, același lucru.

Informația în programare

Și pentru că programele lucrează și cu ceva mai concret, avem tipurile de date. Tip = fel, gen; iar date = informații. Programul, la fel ca mintea, lucrează cu obiecte diferite . Mintea umană este indiscutabil evoluată: lucrează cu imagini, sunete și senzații. Calculatoarele, mai primitive, lucrează cu obiecte matematice: numere, mulțimi chiar și șiruri de caractere.

Însă numerele sunt împărțite în mai multe categorii. În matematică avem numere naturale, întregi, raționale, reale și ireale. Ca deosebire, în domeniul informaticii nu putem avea concepte ca „infinit”, de aceea nu avem numere raționale sau reale. Avem aproximări. Iar pe de altă parte nu putem avea o infinitate de numere ci doar o submulțime.

Așadar, un tip de dată numeric poate fi caracterizat de o limită inferioară și superioară de unde își poate lua valori.

Dar să revenim la tipurile de date. Toate limbajele de programare au tipuri de date dar în unele limbaje le putem declara explicit iar în altele nu. Sunt două categorii mari de tipuri de date simple: numere și șiruri de caractere.

Numerele pot fi: întregi cu sau fără semn, reale cu sau fără semn și alte variante care conțin mai multe valori.

Șirurile de caractere sunt exact ce le spune numele, o mulțime de litere aranjate după o anumită ordine.

Subprograme

Iar, pentru sfârșit, e bine să avem posibilitatea de a definii funcții sau proceduri într-un limbaj de programare. Iar dacă putem defini și clase, cu atât mai bine.

Procedurile sunt programe de sine stătătoare care acceptă niște date de intrare, le prelucrează și oferă un răspuns fie datele sunt salvate, fie se schimbă ceva pe ecran.

Funcțiile sunt similare și singurul mod prin care diferă constă în faptul că ele întorc mereu o valoare. Putem privi procedurile ca pe niște funcții care nu returnează nici o valoare.

Clasele reprezintă un mod superior de organizare a informației și, pentru moment, am să spun doar că ele înglobează atât proprietăți cât și metode (funcții).


>

C
a
p
i
t
o
l
u
l

u
r
m
ă
t
o
r

>

Ți-a fost de ajutor ce am scris aici?
Hei, mersi de răspuns.