marți, 11 mai 2010

Aplicaţii în fizică şi geometrie

Etapele rezolvării unei probleme cu ajutorul calculatorului:

  • Definirea problemei: este etapa când se urmăreşte înţelegerea problemei şi stabilirea datelor care se cunosc şi care se cer, ipoteza şi concluzia.
  • Elaborarea programului în Pascal: se indentifică variabilele, li se dă un nume fiecăreia, se specifică tipul lor şi se stabilesc care sunt variabilele de intrare şi variabilele de ieşire. Se elaborează programul, care constă dintr-o succesiune de instrucţiuni şi operaţii finite care să conducă la aflarea datelor care nu se cunosc şi se cer aflate, succesiune numită şi algoritm.
  • Compilarea şi rularea programului: etapă în care se corectează eventualele erori (de sintaxă sau logice) apărute, iar la final se obţine rezultatul corect al problemei.






Întotdeuna se porneşte de la rezolvarea matematică sau fizică a problemei. De la geometrie ştim că în orice triunghi măsura unhiurilor este egală cu 1800, adică scris matematic: A + B + C = 1800.

Observăm că în toate din cele trei exemple datele noaste de intrare sunt măsurile unghiurilor A şi B care se cunosc iniţial, iar concluzia reprezintă măsura unghiului C, care trebuie aflată.

Formula de calcul a unghiului C valabilă pentru orice triunghi este deci:

C = 1800 - A - B.

Putem trece la elaborarea programului Pascal:

Vom defini trei variabile, câte una pentru fiecare unghi şi denumite la fel ca şi unghiurile triunghiului, dar notate cu litere mici, pentru nu se confunda unghiul A cu variabila a, corespunzătoare lui. Variabile sunt de tipul integer (presupunând că măsurile unghiurilor sunt valori întregi, fără zecimale). Numărul 180 este o constantă, el nu trebuie nici definit, nici citit de la tastatură, el face parte din formulă şi atât.

program unghiuri;
VAR a, b, c: integer;
begin
write(‘Introduceti masura primului unghi=’);
readln(a); {prima variabila isi primeste valoarea}
write(‘Introduceti masura celui de al doilea unghi=’);
readln(b); {a 2-a variabila isi primeste valoarea}
c:=180–a–b; {a 3-a variabila isi primeste valoarea}
writeln(‘Masura unghiului cerut este= ‘,c);
end.

Conţinutul a doua din aceste variabile (a şi b) se cunoaşte dinainte, deci va fi introdus de la tastatură prin operaţia de citire readln, ele se numesc variabile de intrare. În schimb conţinutul variabilei c nu se cunoaşte, el fiind cel care reprezintă defapt soluţia problemei şi se numeşte variabilă de ieşire.

Dar variabilei c i se poate atribui o valoare aflată prin calcul, pe baza formulei cunoscută din geometrie. Deci în rândul c:= 180 – a – b; avem o operaţie de atribuire şi anume variabilei c i se va atribui o valoare rezultată din efectuarea calculului aritmetic pe baza fomulei descrisă. Mai precis din 180 se scad valorile conţinute de variabilele a şi b în momentul respectiv.

Cu riscul de a vă plictisi, vreau să rezum cele spuse de mai sus în următorul tabel:


Mărimi matematice

Variabile corespunzătoare în program

Se cunosc, se dă:

A şi B

a respectiv b

Se cere:

C

c

Pentru a rezolva toate cele trei triunghiuri, programul va trebui rulat tot de trei ori, de fiecare dată pentru câte un triunghi. Observăm că programul nu se modifică cu nimic, variabilele rămân aceleaşi (numele lor adică), numărul şi tipul lor la fel, ceea ce se schimbă la fiecare execuţie a programului este doar valoarea conţinută de variabilele programului.

Dacă luăm ca exemplu primul triunghi, vom avea a=60 şi b=60 de unde va rezulta prin calcul c=60, în al 2-lea triunghi vom avea a=80 şi b=70 iar valoare lui c va rezulta 30.

Şi aşa mai departe, dacă se cunosc măsurile a două unghiuri dintr-un triunghi, programul poate calcula măsura celui de al treilea unghi pe baza formulei cunoscută din geometrie, lucru valabil pentru orice triunghi existent, adică pentru o infinitate de triunghiuri.

Elevii sunt invitaţi să rezolve cu ajutorul acestui program şi alte probleme din manuaul de matematică de clasa a VI-a, sau culegeri.

Acesta este avantajul informaticii şi anume că se scrie programul o singură dată, pentru o clasă de probleme, urmând ca după aceea cu ajutorul acelui program, să se poată rezolva toate problemele de acel gen.



Problema 2: Să se calculeze aria unui triunghi, când se cunosc baza şi înălţimea sa.

problema2

În toate cele trei triunghiuri se cunosc lungimea bazei BC şi înălţimea AA1. Acestea reprezintă datele ce se dau, ipoteza şi sunt notate la fel în toate cele trei triunghiuri doar valoarea lor diferă de la un triunghi la altul. Concluzia o reprezintă aria fiecărui triunghi notată cu A (de mână), notată deasemenea la fel în toate cele trei triunghiuri, doar valoarea ei va diferi de la un triunghi la altul.

În etapa scrierii programului observăm că pentru a scrie programul Pascal avem nevoie să definim trei variabile, tot atâtea câte mărimi sunt prezente în formula de mai sus şi notate la fel ca şi datele problemei noastre: BC, AA1 şi A.

De ce tip vor fi aceste variabile? Ne uităm la unităţiile de măsură exprimate în acest caz în centimetrii. În problema anterioară era vorba de grade. Lăsând la o parte unităţiile de măsură, observăm că datele noastre reprezintă defapt nişte numere şi atât. Deci variabilele noastre vor fi de tip numeric, mai precis integer sau real. Asta pentru că dacă luăm ca exemplu o adunare 40 + 60 va da întodeuna ca şi rezultat 100, indiferent ca aceştia reprezintă grade, centimetri, litri, metri, sau orice altceva, iar limbajul Pascal nu ţine cont de unităţiile de măsură.

Vom avea deci variabila BC ce va reprezenta baza triunghiurilor noastre, ea va conţine valorile bazelor triunghiurilor, iar dacă vom lua ca exemplu datele din primul triunghi, variabila BC va primi valoarea de 25. Faptul că aceştia sunt centimetrii nu mai interesează programului nostru, programul îi va considera un simplu număr. Analog şi pentru celelalte două variabile AA1 şi A, valorile ce le vor conţine vor fi privite ca simple numere.

Observăm deci că:


Mărimi matematice

Variabile corespunzătoare în program

Se cunosc, se dă:

BC şi AA1

BC respectiv AA1

Se cere:

A

A

Programul poate arata în felul următor:

program arii; {program pt calculul ariei
oricarui triunghi}
VAR BC, AA1, A: real;
begin
write (‘Introduceti baza triunghiului=’);
readln (BC);
write (‘Introduceti inaltimea triunghiului=’);
readln (AA1);
A:=(BC+AA1)/2;
writeln (‘Aria triunghiului este=‘,A:6:2);
end.

Aşa cum formula din geometrie este valabilă pentru calculul ariei oricărui triunghi (o infinitate) şi programul nostru poate calcula aria oricărui triunghi, dacă se cunosc şi se introduc valorile corespunzătoare bazei triunghiului şi a înălţimii acestuia.

Folosind manualul de matematică sau culegeri, se pot da mai multe exemple de triunghiuri în care se cunoaşte lungimea bazei şi a înălţimii pentru a exersa calculul ariei, utilizând programul arii.

Variabile - date generale

Să ne gândim că vindem un program unui client care nu ştie deloc Pascal, ce s-ar întâmpla de fiecare dată când el ar dori modificarea rezultatului programului? Ar trebui să ne cheme pe noi ca să intervenim în structura programului. Din această cauză în orice program sunt folosite variabilele. Ele pot stoca datele noastre de intrare şi ieşire, fără a fi necesară modificarea programului de către programator. Astfel toate programele fiind scrise nu pentru a rezolva o situaţie particulară sau o singură problemă, ci o familie de probleme care se bazează pe aceeaşi metodă sau formulă de rezolvare.

Variabilele - mărimi care îşi pot schimba conţinutul o dată sau de mai multe ori pe parcursul execuţiei unui program. Avem în principal patru tipuri de variabile:

integer, real - numerice;

char, string - pentru caractere;

Variabilele integer - sunt folosite pentru memorarea numerelor întregi.

Exemple de nr întregi: 0; 1; 20; -5; 100; -186;

Atentie Se pot memora numere cuprinse doar în intervalul [-32768; 32767]. Dacă vom avea nevoie să lucrăm cu numere mai mari, va trebui să folosim variabile de tip real.

Variabilele real - sunt folosite pentru memorarea numerelor reale.

Exemple de nr reale: 1.55; 2.8; -15.82; 3.14; 289.7435;

Atentie În Pascal, ca de altfel în notaţia americană, numerele zecimale nu se scriu cu virgulă ci cu punct. 1,55 = 1.55

Variabilele char - sunt folosite pentru memorarea unui singur caracter. Ca şi caractere avem toate caracterele (literele) alfabetului, cele 10 cifre, precum şi semnele de punctuaţie. Spaţiul dintre cuvinte este şi el considerat caracter. Acest tip de variabile memorează întotdeauna doar unul din aceste caractere şi le veţi folosi foarte des în programe mai complexe, dar care depăşesc programa clasei a VI-a.

Caracterele: A, B, C, … Z, a, b, c, … z, 0, 1, 2, 3 , … 9 ; , . :

Atentie Pascalul fiind conceput de americani, lipsesc cu desăvârşire literele româneşti: ă, â, î, ş, ţ.

Variabilele string - sunt folosite pentru memorarea şirurilor de caractere, sau propoziţiilor.

Exemple de string: “Tata este inginer”, “Eu merg la scoala”, “How are you!”, “bla bla bla”.

Erori ce pot apărea într-un program

Programarea este unul din domeniile ce solicită la maxim capacitatea de concentrare şi atenţia programatorului. Deoarece calculatorul nu poate ghici ceea ce doream noi să execute, el poate doar executa ceea ce i-am spus noi să facă, intrucţiunile pe care i le dăm trebuie să fie scrise într-un limbaj folosit la modul cel mai corect. Bineîţeles situaţia este valabilă nu doar pentru programele scrise în Pascal, ci pentru toate programele scrise în orice limbaj.

Şi pentru că a greşi este totuşi omeneşte, să vedem ce erori pot apare în timpul scrierii unui program şi unde trebuie să fiţi mai atenţi.

În principal avem două tipuri de erori:


Erori de sintaxă: apar datorită neatenţiei şi sunt erorile cauzate de scrierea incorectă sau incompletă a unor porţiuni de program. Ca şi exemple am putea aminti:

scrierea greşită a denumirilor de instrucţiuni, sau de variabile (în cel de al doilea caz folosiţi defapt nume de variabile nedeclarate).

scrierea greşită a semnelor de punctuaţie (două puncte în loc de punct şi virgulă sau invers, etc).

alegerea incorectă a tipului unor variabile.

Toate aceste erori sunt detectate de către compilator în timpul operaţiei de compilare, ele nu permit compilarea programului, compilatorul afişând în schimb diverse mesaje de eroare.


Erori logice: sunt datorate alegerii incorecte a metodei sau formulei de rezolvare a problemei pe care vrem s-o rezolvăm cu ajutorul calculatorului. Ceea ce face şi mai dificilă depistarea şi corectarea acestor erori, este că compilatorul nu le detectează.

Ca să luăm un exemplu simplu, să presupunem că în programul ce calculează media a două numere reale, în formula de calcul a mediei nu folosim parantezele ci scriem media:=a+b/2;

Aici compilatorul nu are de unde ghici ce vrem noi defapt să calculăm şi dacă restul programului este scris corect, compilarea este posibilă, deci şi execuţia programului.

Dar oare rezultatul afişat va fi cel corect?


O metodă de verificare (deşi nu perfectă) a acestor erori logice, este compararea rezultatelor. Adică în primul rând se rezolvă problema manual pe hârtie, luând doua-trei exemple (cu cât mai multe cu atât mai bine), iar apoi se rezolvă problema şi cu ajutorul programului.

Ca să rămânem tot la exemplul nostru cu programul medie, luaţi mai întâi o hârtie şi calculaţi media a două sau trei perechi de numera oarecare (puteţi să vă folosiţi şi de un calculator de buzunar). Sau puteţi să vă folosiţi şi de exemple rezolvate din manuale sau culegeri, dacă există. După aceasta calculaţi media aceloraşi perechi de numere prin intermediul programului scris de voi. Dacă rezultatele sunt identice, aveţi şanse ca programul să fie corect, dacă rezultatele nu coincid trebuie revăzut programul şi depistate erorile.


Desigur că în cazul unor programe simple cum este cel pentru calculul mediei aritmetice, nu este greu ca acestea să fie scrise corect. Dar mai târziu când veţi ajunge să scrieţi programe mai lungi, mai complexe, ce conţin calcule matematice complicate, posibilitatea apariţiei unor astfel de erori este foarte mare.


sâmbătă, 8 mai 2010

Programarea

Acum că aveţi stabilită configuraţia ferestrelor şi salvată, se poate vedea mai clar elementele componente ale interfeţei TP 7:


Ferestre TP 7


Principalele etape ce trebuiesc urmate în conceperea şi utilizarea unui program scris în limbajul Pascal, folosindu-vă de mediul de programare Turbo Pascal 7.0 sunt:

  1. Scrierea programului
  2. Compilarea lui
  3. Lansarea programului în execuţie
  4. Salvarea programului (opţional)

1. Scrierea programului:

Scrierea unui program folosindu-vă de editorul de texte inclus în TP 7 nu este deloc dificilă. Dacă aţi mai lucrat cu un editor de texte cum este Microsoft Word nu veţi avea probleme.

Atenţie la meniul Edit care conţine în principal funcţiile Copy şi Paste şi pe care la puteţi folosi atunci cînd într-un program mai mare aveţi una sau mai multe linii de program identice, care se repetă.

2. Compilarea programului:

După scrierea programului puteţi trece la compilarea lui. Aşa cum este evident, compilarea se face accesând operaţia Compile din meniul cu acelaş nume din bara de meniuri, sau folosindu-vă de combinaţia de taste Alt+F9. Dacă din neatenţie aţi comis erori de sintaxă şi deci programul nu este scris corect, operaţia de compilare nu este posibilă, compilatorul afisând în schimb diverse mesaje de eroare, din care voi va trebui să deduceţi despre ce fel de erori este vorba şi unde (vezi şi capitolul despre erori din curs).

Dacă programul nu are erori sau toate erorile au fost corectate, compilarea va fi încununată de succes, lucru evidenţiat printr-o fereastră de forma:


Compiling


Mesajul cel mai important, îmbucurător şi care ne interesează, este conţinut în ultima linie, iar Press any key înseamnă că pentru a trece la pasul următor puteţi apăsa orice tastă.

3. Execuţia programului:

După operaţia de compilare efecutată cu succes, ceea ce vă mai rămâne de făcut este lansarea în execuţie a programului. Aceasta se face accesând meniul Run de unde alegeţi comanda Run, sau după cum se vede, puteţi rula un program şi apelând la combinaţia de taste Ctrl+F9. Rezultatele execuţiei programului, vor fi afişate în fereastra neagră Output.

Execuţia pas-cu-pas a programului:

Nu este o etapă obligatorie, dar este recomandată. Rularea unui program pas-cu-pas presupune apăsarea repetată a tastei F8 sau meniul Run spre Step over, de atîtea ori cîte instrucţiuni conţine programul. Veţi vedea astfel mai bine ce face şi care este rolul fiecărei instrucţiuni din program. Desigur trebuie să ţineţi cont şi de indicaţiile din program, adică de exemplu, în cazul când execuţia programului se opreşte şi aşteaptă introducerea unei valori de la tastatură, va trebui să faceţi acel lucru.

Puteţi şti în orice moment care este instrucţiunea ce urmează a fi executată, prin faptul că aceasta va fi evidenţiată printr-o bară orizontală de culoare gri.

4. Salvarea programului:

Dacă un program este scris corect şi sunteţi mulţumiţi de execuţia lui, atunci merită salvat. Asta dacă nu cumva doriţi ca data următoare cînd veţi mai avea nevoie de el, să-l rescrieţi din nou. Opţiunea de salvare a unui program se găseşte în meniul File spre Save, sau puteţi apela la tasta F2. În momentul următor se va deschide o fereastră ca cea de mai jos:


Save File


Numele pe care doriţi să-l daţi fişierului trebuie să îl introduceţi în câmpul Save file as, urmând ca după aceea să apăsaţi OK (în exemplul de mai sus am dat fişierului nostru numele de primul). Desigur dacă nu doriţi să salvaţi nimic apăsaţi Cancel.

După salvare veţi mai observa că automat, numele ferestrei de editare care până atunci era NONAME00.PAS va fi înlocuit cu numele dat fişiereului.

Atentie Deoarece Turbo Pascal 7.0 este un program creat pe vremea vechiului sistem de operare MS-DOS, nu este recomandat să daţi nume de fişiere şi directoare mai lungi de 8 cifre, altfel ele vor fi trunchiate cu (~). De exemplu numele folderului (directorului) Program Files este văzut PROGRA~1.

Fişierele sursă Pascal poartă extensia .pas, aceasta fiind adăugată automat de către TP 7 numelui dat de voi. Situat mai jos, în câmpul Files, se pot vedea în figura noastră, trei fişiere existente deja (salvate anterior). Observaţi la fiecare dintre ele numele şi extensia pas.

Dacă aveţi Turbo Pascal 7.0 descărcat de la adresa menţionată mai sus în capitolul Instalarea, programul vă va salva toate fişierele în folderul Work, ce are deci path-ul C:\Program Files\TP\WORK. În schimb dacă aveţi Turbo Pascal 7.0 provenit din alte surse sau lucraţi cu Borland Pascal, e foarte probabil ca acestea să fie setate să salveze toate fişierele într-un alt folder.

Mai puteţi observa în imaginea de mai sus, tot în câmpul Files, că pe lângă celelalte fişiere pot exista şi alte subfoldere ale folderului Work. Le recunoaştem prin faptul că numele acestor directoare este urmat de semnul back slash (\). Astfel deci, în exemplul nostru se pot vedea folderele GESTIUNE\ şi TESTE\.

Dând dublu click pe oricare din aceste foldere le deschidem şi intrăm în ele.

Deasemenea puteţi observa semnul ..\ care simbolizată ieşirea spre folderul imediat superior (în cazul nostru TP, cel care îl cuprinde pe folderul Work). Dacă daţi dublu click pe semnul respectiv ieşiţi deci din folderul în care vă găsiţi la acel moment şi intraţi în cel imediat superior. Astfel puteţi deci naviga prin structura de directoare existentă a hardiscului, în cazul în care doriţi să salvaţi un fişier într-un alt director decât Work (deşi nu recomand aceasta).

Mai jos unde vedeţi scris C:\PROGRA~1\TP\WORK\*.PAS această linie afişează întotdeauna folderul în care vă găsiţi la un moment dat, folderul curent.

Dacă doriţi să deschideţi un fişier salvat anterior, folosiţi binenţeles comanda Open, aflată deasemenea în meniul File. Fereastra Open arată aproape identic şi funcţionează identic cu fereastra Save. Desigur că şi fereastra Open se va deschide de fiecare dată tot în folderul Work.

Acestea sunt cunoştinţele minime necesare pentru a putea utiliza mediul de programare Turbo Pascal 7.0. Desigur puteţi învăţa mai multe citind un manual de specialitate, sau consultând Help-ul programului (cei care cunoaşteţi bine limba engleză).


Configurarea programului Turbo Pascal 7.0

Toate referirile de acum înainte se vor face la programul Turbo Pascal 7.0 (TP 7), dar ele sunt valabile şi pentru Borland Pascal.

Primul aspect ce se observă după pornirea TP 7, este un ecran gri-albăstrui şi neprietenos, ce mai conţine sus o bară de meniuri care cuprinde comenzile disponibile în TP 7, iar jos observăm o bară de stare unde de la caz la caz, ne sunt afişate o serie de informaţii.

Primul lucru care îl aveţi de făcut este deschiderea unei ferestre pentru editarea şi afişarea conţinutului programelor Pascal (fereastra albastră). Aceasta se face accesând meniul File apoi New (File spre New).

A doua fereastră de care mai aveţi nevoie este cea în care o să vedeţi rezultatul execuţiei programelor (fereastra neagră). Aceasta poate fi User screen (Alt+F5), dar mai simplu şi comod se lucrează cu fereastra Output. Aceasta se evidenţiază accesând meniul Debug spre Output.

Problema care apare acum este că fereastra Output (cea neagră) este acoperită de fereastra de editare (cea albastră) şi deci trebuie micşorată aceasta din urmă. Daţi deci click mouse oriunde în fereastra albastră pentru a o activa, poziţionaţi cursorul mouse-ului în colţul dreapta jos al ferestrei, ţineţi apăsat buton stânga şi împingeţi drept în sus până se vede complet fereastra Output (vezi animaţia):



Dacă ecranul monitorului vostru arată ca ultimul cadru din animaţia de mai sus,puteţi salva această configuraţie accesând meniul Options, de unde alegem Save TPX.TP. În acest fel de fiecare dată când veţi porni TP 7 poziţionarea ferestrelor se va păstra, în caz contrar va trebui să repetaţi procedurile descrise mai sus la fiecare pornire a programului.


Instalarea programului Turbo Pascal 7.0

Pentru a putea rula un program scris în limbajul Pascal trebuie să aveţi instalat pe calculatorul vostru unul din programele Turbo Pascal sau Borland Pascal.

Atentie Trebuie să facem distincţie între limbajul Pascal şi un program Turbo Pascal. Limbajul Pascal este o colecţie abstractă de instrucţiuni şi reguli de scriere, prin care noi scriem un program, program ce poate fi compilat şi apoi înţeles de către un calculator, în vederea executării de către calculator a uneia sau mai multe sarcini date.


Programul Turbo Pascal este un program, sau mai bine zis, un mediu de programare util în scrierea şi executarea programelor concepute în limbaj Pascal.

Un mediu de programare cum este şi Turbo Pascal, are în principal următoarele componente:

  • editor texte (pentru scrierea programelor)
  • compilator Pascal
  • o serie de aplicaţii, care la nevoie servesc pentru depanarea programelor, urmărirea evoluţiei unor parametrii din programe (pe timpul rulării acestora), etc

Pentru a instala programul Turbo Pascal 7.0 îl puteţi descărca de pe internet de la download Turbo Pascal 7.0. Daţi Save şi imediat va începe descărcarea kitului de instalare şi anume fişierul tp70.exetp70.exe După finalizarea download-ului (2,5 Mby), lansând în execuţie acest fişier, el va instala pe calculatorul vostru programul Turbo Pascal 7.0 în folderul C:\Program Files\TP.

O dată instalat, programul se porneşte din meniul Start ->Programs ->Turbo Pascal 7-> TpxTpx.

Şi pentru că eu sunt adeptul utilizării întotdeauna la maxim a spaţiului unui monitor, merită făcută o mică configurare şi anume asupra link-ului Tpx mai sus amintit, să apăsaţi nu buton stânga mouse (pt a-l porni) ci buton dreapta mouse, apoi mergeţi pe Properties. Se va deschide o fereastră de configurări unde ne interesează să alegem opţiunea Full-screen din paleta Screen (vezi figura):


Tpx Properties