» Utilizator
Salut, vizitatorule!

SkullBox este o comunitate formata din programatori si administratori de sisteme sau retele care iti sta la dispozitie cand ai o problema legata de calculatoare. Daca esti un utilizator existent, autentifica-te.

Daca nu te-ai inregistrat inca pe forum, alatura-te noua astfel marind comunitatea si ajutandu-i pe cei care au nevoie de informatii.

Daca te-ai inregistrat dar inca nu ai primit codul de activare, il poti cere aici.




Autentifica-te cu numele de utilizator si parola pentru a putea posta pe forum sau pentru a accesa ariile disponibile doar utilizatorilor inregistrati.
» Promovam
» Parteneri » Statistici
  • 59774 de mesaje.
  • 7153 de topicuri.
  • 1002 de utilizatori.
  •  
  • BirthBaby e ultimul utilizator inregistrat.
[Detalii]

 
SkullBox Forum  |  Development  |  Delphi & Pascal (Moderator: AdyX)  |  Topic: Un pic de ajutor
Pagini: [1]
Print
Un pic de ajutor [900 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: 1368
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: 1368
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: 1499
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: 3333
OfflineOffline

WWW

@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

Document my code? Why do you think it's called "code"?

To think is to differ - Clarence Darrow
18-05-2009, 14:39 Twitt ::
Claudiu
*


Mesaje: 1368
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: 370
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: 1368
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 ::
Reclama
VIP

Hosting

Mesaje: 25.90
OnlineOnline

WWW
 

   Pe ABCDomenii: 250MB spatiu + 20GB trafic + 5 subdomenii = 0.95 €
 
 

The problem with troubleshooting is that trouble shoots back.
Azi 
Pages: [1]
Print
SkullBox Forum  |  Development  |  Delphi & Pascal (Moderator: AdyX)  |  Topic: Un pic de ajutor
Jump to: