QReferate - referate pentru educatia ta.
Cercetarile noastre - sursa ta de inspiratie! Te ajutam gratuit, documente cu imagini si grafice. Fiecare document sau comentariu il poti downloada rapid si il poti folosi pentru temele tale de acasa.



AdministratieAlimentatieArta culturaAsistenta socialaAstronomie
BiologieChimieComunicareConstructiiCosmetica
DesenDiverseDreptEconomieEngleza
FilozofieFizicaFrancezaGeografieGermana
InformaticaIstorieLatinaManagementMarketing
MatematicaMecanicaMedicinaPedagogiePsihologie
RomanaStiinte politiceTransporturiTurism
Esti aici: Qreferat » Documente informatica

Notiuni primare de programare in Pascal si C



Notiuni primare de programare in Pascal si C



In spiritul celor spuse mai sus, vom introduce acum 'intr-un ritm alert', prin exemple concrete, notiunile elementare de programare in limbajele Pascal si C (in paralel). Vom pleca de la prezentarea structurii generale a unui program iar apoi vom trece la prezentarea celor patru structuri-instructiuni elementare continute in psedo-limbajul de descriere a algoritmilor. Vom avea in plus grija de a precede descrierea fiecarei structuri elementare de liniile de declarare a tipului variabilelor implicate. Peste tot vor apare linii de comentariu (ignorate de compilator). In limbajul Pascal comentariile sint cuprinse intre acolade , pe cind in C ele sint cuprinde intre constructia de tipul /* comentariu*/ sau apar la sfirsitul liniei precedate de doua slash-uri //comentariu.




Structura unui program

Program Nume_de_Program;


BEGIN


END.

(Orice se va scrie dupa punct va fi ignorat de catre compilator)


// linii de incluziuni de fisiere header


// declaratii de variabile si functii externe (globale)


void main(void)


Exemplu :

Program Un_Simplu_Test;

Const e=2.68;

Var x:real;

BEGIN

x:=1./2+e*(1+e);

Writeln('Rezultatul este:',x);

END.


Exemplu :

#include <stdio.h>


int e=2.68;

float x;

void main(void)

Atribuirea :  var:=expresie;


Var i,j:integer;perimetrul:real;


j:=2000 div 15;

i:=i+(j-1)*Sqr(2*j+1);

perimetrul:=2*PI*i;

#include <math.h> // declara constanta M_PI

int i,j; float perimetrul;


j=2000 / 15; // impartire intreaga implicita !!

i+=(j-1)* (2*j+1)*(2*j+1); // in C avem operatorul

// de adunare + inainte de egal = ; functia putere in

// C este pow(x,y)

perimetrul=2*M_PI*i;

Intrare/Iesire :

Citeste var1, var2, var3, . ;

Scrie var1, var2, var3, . ;

Sau

Scrie expresia1, expresia2, expresia3, . ;


Var i,j:integer;perimetrul:real;


Readln(i,j);

Perimetrul:=2*PI*i;

Writeln('Raza=',i:4,' Perimetrul=',perimetrul:6:2,' Aria=', PI*Sqr(i):6:2);


#include <math.h> // declara constanta M_PI

int i,j; float perimetrul;


scanf("%i %i",&i,&j); // "%i %i" este descriptorul de format de citire, & este operatorul de adresare

perimetrul=2*M_PI *i;

printf("Raza=%4i Perimetrul= %6.2f Aria= %6.2f",i,perimetrul,M_PI*i*i); // %6.2f - descriptorul de format de afisare a unei valori reale(flotante) pe 6 pozitii rotunjit la 2 zecimale

Conditionala :

Daca <conditie_logica> atunci instructiune1 [altfel instructiune2];

Var i,j,suma:integer;


If i <= 2*j+1 then suma:=suma+i

else suma:=suma+j;

int i,j,suma;


if (i<=2*j+1) suma+=i

else suma+=j;

Ciclul de tipul Repeat-Until:

Repeta instructiune1, instructiune2, . pina cind <conditie_logica>;

Var i,j,suma:integer;


suma:=0;i:=1;

Repeat

suma:=suma+i; i:=i+1;

Until i>100;

int i,j,suma;


suma=0;i=1;

do

suma+=i;

while (i++<100);

Ciclul de tipul Do-While:

Cit timp <conditie_logica> executa instructiune;

Var i,j,suma:integer;


suma:=0;i:=1;

While i<=100 do begin

suma:=suma+i; i:=i+1;

End;

int i,j,suma;


suma=0;i=1;

while (i++<100)

suma+=i;


Ciclul de tipul For (cu contor):

Pentru var_contor:=val_initiala pina la val_finala executa instructiune;

Var i,j,suma:integer;


suma:=0;

For i:=1 to 100 do

Suma:=suma+i;

int i,j, suma;


for(suma=0,i=1;i<=100;i++)

suma+=i;


Exemple de probleme rezolvate



Prezentam in continuare, spre initiere, citeva exemple de probleme rezolvate. Vom oferi programul rezultat atit in limbajul de programare Pascal cit si in limbajul C. Deasemenea, fiecare program va fi precedat de o scurta descriere a modului de elaborare a solutiei.


1. Se citesc a,b,c coeficientii reali a unei ecuatii de gradul II. Sa se afiseze solutile ecuatiei.


Descrierea algoritmului:

- ecuatia de gradul II este de forma ax2+bx+c=0

-presupunind ca a 0 calculam determinantul ecuatiei delta=b*b-4*a*c

- daca delta >= 0 atunci ecuatia are solutiile reale x1,2=(-b delta)/(2*a)

- daca delta < 0 atunci ecuatia are solutiile complexe z1=(-b/(2*a), (-delta)/(2*a)), z1=(-b/(2*a), - (-delta)/(2*a))


Program Ecuatie_grad_2;

Var a,b,c,delta:real;


BEGIN

Write('Introd. a,b,c:');Readln(a,b,c);

delta:=b*b-4*a*c;

If delta>=0 then

Begin

Writeln('x1=',(-b-sqrt(delta))/(2*a):6:2);

Writeln('x2=',(-b+sqrt(delta))/(2*a):6:2);

End

else Begin

Writeln('z1=(',-b/(2*a):6:2, ',' , -sqrt(-delta))/(2*a):6:2, ')');

Writeln('z2=(', -b/(2*a):6:2, ',' , sqrt(-delta))/(2*a):6:2, ')');

End

Readln;

END.


// versiunea C


#include <stdio.h>

#include <math.h>


float a,b,c; // coeficientii ecuatiei de gradul II

float delta;


void main() else



2. Sa se determine daca trei numere a,b,c reale pot reprezenta laturile unui triunghi. Daca da, sa se caculeze perimetrul si aria sa.


Descrierea algoritmului:

- conditia necesara pentru ca trei numere sa poata fi lungimile laturilor unui triunghi este ca cele trei numere sa fie pozitive (conditie implicita) si suma a oricaror doua dintre ele sa fie mai mare decit cel de-al treilea numar

- dupa conditia este indeplinita vom calcula perimetrul si aria triunghiului folosind formula lui Heron s=sqrt(p(p-a)(p-b)(p-c)) unde p=(a+b+c)/2.


Program Laturile_Unui_Triunghi;  

Var a,b,c,s,p:real;


function laturi_ok:boolean;

begin

laturi_ok:= (a>0) and (b>0) and (c>0) and (a+b>c) and (a+c>b) and (b+c>a) ;

end;


BEGIN

write('introduceti laturile');readln(a,b,c);

IF laturi_ok then

begin

p:=(a+b+c)/2;

s:=sqrt(p*(p-a)*(p-b)*(p-c));

writeln('Aria=',s:5:2);

writeln('Perimetrul=',2*p:5:2);

end

else writeln('Nu formeaza triunghi');

readln;

END.


// versiunea C


#include <stdio.h>

#include <math.h>


float a,b,c,s,p;


int validare_laturi(float a,float b,float c)


void main(void)



Se citeste n intreg. Sa se determine suma primelor n numere naturale.


Descrierea algoritmului:

- vom oferi varianta in care suma primelor n numere naturale va fi calculata cu una dintre instructiunile repetitive cunoscute(for,while ,repeat) fara a apela la formula matematica cunoscuta S(n)=n*(n+1)/2


Program Suma_n;

Var n,s,i:word;


BEGIN

Writeln('Introduceti limita n=');Readln(n);

s:=0;

For i:=1 to n do s:=s+i;

Writeln('s=',s);

Readln;

END.


// versiunea C


#include <stdio.h>


int n,s;


void main(void)


Se citeste valoarea intreaga p. Sa se determine daca p este numar prim.


Descrierea algoritmului:

- un numar p este prim daca nu are nici un divizor inafara de 1 si p cu ajutorul unei variabile contor d vom parcurge toate valorile intervalului [2.. p]; acest interval este suficient pentru depistarea unui divizor, caci: d1 | p T p = d1*d2 (unde d1 < d2) T d1 d1*d2 = p iar d2 d1*d2 = p


Program Nr_prim;

Var p,i:word;

prim:boolean;


BEGIN

write('p=');readln(p);

prim:=true;

for i:=2 to trunc(sqrt(p)) do

if n mod i=0 then prim:=false;

prim:=true;

if prim then

write(p,' este nr prim')

else

write(p,' nu e nr prim');

END.


// versiunea C (optimizata !)


#include <stdio.h>

#include <math.h>


int p,i,prim;


void main(void)


5. Se citeste o propozitie (sir de caractere) terminata cu punct. Sa se determine cite vocale si cite consoane contine propozitia.


Program Vocale;

Var sir:string[80];

Vocale,Consoane,i:integer;


BEGIN

Write('Introd.propozitia terminata cu punct:');Realn(sir);

i:=1;Vocale:=0;Consoane:=0;

While sir[i]<>'.' do begin

If Upcase(sir[i]) in ['A','E','I','O','U'] then Inc(Vocale)

else If Upcase(sir[i]) in ['A'..'Z'] then Inc(Consoane);

Inc(i);

end;

Writeln('Vocale:',Vocale,' Consoane:', Consoane,' Alte caractere:',i-Vocale-Consoane);

END.


// versiunea C


#include <stdio.h>

#include <ctype.h>


int i,vocale=0,consoane=0;

char c,sir[80];


void main(void)

printf('Vocale:%i, Consoane:%i, Alte car.:%i', vocale, consoane, i-vocale-consoane);



Nu se poate descarca referatul
Acest document nu se poate descarca

E posibil sa te intereseze alte documente despre:


Copyright © 2024 - Toate drepturile rezervate QReferat.com Folositi documentele afisate ca sursa de inspiratie. Va recomandam sa nu copiati textul, ci sa compuneti propriul document pe baza informatiilor de pe site.
{ Home } { Contact } { Termeni si conditii }