» Utilizator
LAMP
» Parteneri» De citit» Recomandari» Taskuri securitate » Statistici
  • 64782 de mesaje.
  • 7635 de topicuri.
  • 1081 de utilizatori.
  •  
  • purcelllefevreo e ultimul utilizator inregistrat.
[Detalii]

 

| |
Pagini: [1]
Print

Un pic de ajutor [1166 afisari]

Meteora
*


Mesaje: 132
OfflineOffline

WWW

Am nevoie de niste tutoriale Pascal - despre functii si proceduri..maine dau teza si nu prea am fost la ore! Laughing
Sau spuneti voi cate ceva despre functii, proceduri ca nu am gasit nicaieri Devil
Logged

18-05-2009, 12:50 Twitt ::
Claudiu
*


Mesaje: 1537
OfflineOffline

WWW

Nu ar fii mai usor sa ne spui tu ce stii, sau ce nu stii, despre proceduri si functii ca sa stim cu ce sa te ajutam? Poate ne spui si in ce clasa esti sau ce contine programa, ce fel de exercitii/probleme faceti?

Nimeni nu o sa faca un tutorial Pascal cap-coada pana dai tu teza Smile
Logged

18-05-2009, 12:56 Twitt ::
Meteora
*


Mesaje: 132
OfflineOffline

WWW

eu invat mai bine din exemple

as vrea cate un exemplu din fiecare(functie si procedura)..sunt in clasa a 11-a Smug
Logged

18-05-2009, 13:25 Twitt ::
Claudiu
*


Mesaje: 1537
OfflineOffline

WWW

Pai eu cand faceam Pascal gandeam asa:

Procedurile fac ceva, afiseaza, deseneaza, citesc valori de la tastatura pe care apoi le folosesc dar nu am de unde sa stiu ce valori au variabilele din interiorul functiilor. De exemplu, daca am o procedura care doar citeste doua numere de la tastatura si atat, e cam inutila, in schimb as putea face o functie care sa citeasca numele si prenumele de la tastatura apoi sa-l afiseze:
Code:
procedure afiseaza(nume: String; prenume: String);
begin
   writeln('Care este numele tau? ');
   read(nume);
   writeln('Care este prenumele tau?');
   read(prenume);
   writeln('Deci te numesti ', prenume, nume, ' ?');
end;

nume si prenume sunt parametrii proceduri insotiti de tipul lor. O procedura poate avea sau nu parametrii, dupa caz.
Daca vrei sa folosesti asta intr-un program:

Code:
program proceduranume;

var num, prenum: String;

procedure afiseaza(nume: String; prenume: String; );
begin
   writeln('Care este numele tau? ');
   read(nume);
   writeln('Care este prenumele tau?');
   read(prenume);
   writeln('Deci te numesti ', prenume, nume, ' ?');
end;
 
begin
   afiseaza(num, prenum);
end.

Daca am declarat procedura cu parametrii, automat va trebui sa o apelam tot cu parametrii Winking.

Functiile in schimb returneaza o valoare, le poti folosii in expresii matematice spre exemplu. Hai sa luam o functie care ne ajuta sa rezolvam o ecuatie de gradul II:
Code:
function Delta(b, a, c:Real): Real;
begin
   Delta := b^2 - 4*a*c;
end;

Ok, aici avem o functie cu 3 parametrii de tip Real, iar tipul functiei este declarat tot Real. Cand spunem ca functia este de tip Real inseamna ca returneaza o valoare reala! Nu trebuie ignorat.

Ok, am calculat delta, programul arata cam asa:
Code:
program ecuatiegraddoi;

var a, b, c, x1, x2: Real;

function Delta(b, a, c:Real): Real;
begin
   Delta := b^2 - 4*a*c;
end;

begin
   writeln('Introduceti a: ');
   read(a);
   writeln('Introduceti b: ');
   read(b);
   writeln('Introduceti c: ');
   read(c);
   x1 := (-b + sqrt(Delta(a, b, c)))/2*a;
   x2 := (-b - sqrt(Delta(a, b, c)))/2*a;
   writeln('x1 = ', x1,' iar x2 = ', x2);
end.

Sper ca nu am gresit ceva, nu am compilator de Pascal acum sa testez...
Logged

18-05-2009, 13:49 Twitt ::
Meteora
*


Mesaje: 132
OfflineOffline

WWW

mersi... batting eyelashes
Logged

18-05-2009, 14:26 Twitt ::
Meteora
*


Mesaje: 132
OfflineOffline

WWW

mersi... batting eyelashes

aiic:

Code:
program proceduranume;

var num, prenum: String;

procedure afiseaza(nume: String; prenume: String; );
begin
   writeln('Care este numele tau? ');
   read(nume);
   writeln('Care este prenumele tau?');
   read(prenume);
   writeln('Deci te numesti ', prenume, nume, ' ?');
end;
 
begin
   afiseaza(num, prenum);
end.

cred ca ai gresit la apelul procedurii
nu trebuia afiseaza(nume, prenume), pentru ca astia sunt parametrii procedurii
Logged

18-05-2009, 14:28 Twitt ::
!_30
*


Mesaje: 1597
OfflineOffline


   ^ E bine cum a făcut Claudiu. Când se apelează procedura se trimit ca parametri nişte valori, în cazul tău valorile variabilelor num şi prenum. Nu contează ce nume au variabilele ("locale") din corpul procedurii (acolo este nume şi prenume, ambele string), pentru că acestea vor dobândi valorile variabilelor trimise la apelarea procedurii.
Logged
18-05-2009, 14:36 Twitt ::
DarkByte



Mesaje:

@claudiu: n-ai amintit de parametrii prin adresa.

In exemplul cu numele si prenumele ...
Code:
var nume, prenume: String;

procedure CitesteNume(var n, p: String);
begin
  Write('Nume: ');
  Readln(n);
  Write('Prenume: ');
  Readln(p);
end;

procedure AfiseazaNume(n, p: String);
begin
  Writeln('Numele tau complet este ', nume, ' ', prenume, ' ?');
  Readln; {asteapta sa apesi tasta Enter}
end;

begin
  CitesteNume(nume, prenume);
  AfiseazaNume(nume, prenume);
end.
Practic, variabilele locale sunt folosite in corpul procedurii cu numele "n" si "p". Definirea procedurii (sau a functiei) cu "var" inainte de numele parametrului semnifica faptul ca apelarea se face prin adresa (adresa variabilei care o "pasezi" in functie). In acest fel, variabilele globale isi vor mentine valorile capatate in functie si pot fi folosite in a doua functie pentru a fi afisate.
Logged
18-05-2009, 14:39 Twitt ::
Claudiu
*


Mesaje: 1537
OfflineOffline

WWW

Uite de astea chiar uitasem, mersi de completare

@Meteora Acolo e "num", "prenum" nu "nume, prenume"
Mai uita-te odata peste cod, sau da-i copy-paste Winking
Logged

18-05-2009, 16:17 Twitt ::
nice17



Mesaje: 1
OfflineOffline


Ajutatima va rog.....am practica si am nevoie de un ajutor....problema suna in felul urmator....am un nr si trebuie sa afisez numai prima si ultima cifra din acest numar...de exemple avem 2987 rezultat:27 sau 189 rezultat 19...poate stiti  cum de facut...macar dati vreo idei!!!!!.....Va rog!!!! Sad Sad
Logged
29-05-2009, 09:17 Twitt ::
yane2806
*


Mesaje: 443
OfflineOffline

WWW

ultima cifra o pastrezi intr-o variabila:
 
Code:
ultima_cifra=nr%10

prima cifra:

Code:
while(nr>9)
         {nr=nr/10;
           }
         prima_cifra=nr;

adica, elimin ultima cifra din numar pana cand raman cu o singura cifra, implicit cu prima cifra a numarului.
Logged

29-05-2009, 10:07 Twitt ::
Claudiu
*


Mesaje: 1537
OfflineOffline

WWW

Ajutatima va rog.....am practica si am nevoie de un ajutor....problema suna in felul urmator....am un nr si trebuie sa afisez numai prima si ultima cifra din acest numar...de exemple avem 2987 rezultat:27 sau 189 rezultat 19...poate stiti  cum de facut...macar dati vreo idei!!!!!.....Va rog!!!! Sad Sad

Imparti cu mod la puteri ale lui 10, si obtii rezultatul.

exemplu:
19 mod 10 = 9, 201 mod 100 = 1 and so on... Winking
Logged

29-05-2009, 13:27 Twitt ::
Pagini: [1]
Print
SkullBox Forum  |  Development  |  Delphi & Pascal  |  Topic: Un pic de ajutor