6.1. Proceduri si functii p3k24kj
  Circle
  Procedura Circle deseneaza un cerc de centru si raza data; culoarea de desenare 
  este stabilita de procedura SetClolor. Procedura este stabilita astfel.
  Procedure Circle (x, y:integer ; raza:word);
  X si Y definesc coordonatele cercului
  Raza defineste lungimea razei
  Arc
  Procedura Arc deseneaza un arc de cerc si este definita astfel:
  Procedure Arc (x, y:integer;Ustrat, Ufinal:word);
  Coordonatele cercului sunt definite de x si y, raza arcului de cerc este definita 
  de r, iar Ustrat si Ufinal reprezinta unghiul de inceput si de sfarsit 
  al arcului, valorile lor sunt date in grade, in sensul trigonometric. 
  Deci, daca Ustrat este 0, iar Ufinal este 360, atunci este de desenat un cerc 
  complet.
  Elipse
  Procedura elipse deseneaza un arc de elipsa si este definita astfel:
  Procedure elipse (x,y:integer;Ustrat, ufinal:word;Xraza,Yraza:word);
  X si Y reprezinta coordonatele cetrului.
  Ustrat si Ufinal reprezinta unghiul de sfarsit al arcului de elipsa, in 
  grade, in sens trigonometric. Valorile Xraza si Yraza definesc raza orizontala 
  respectiv axa verticala a elipsei.
  GeatArcCoords
  Procedura GteArcCords returneaza centrul si coordonatele de inceput si 
  de sfrarsit ale ultimului arc desenat. Procedura este definita astfel:
  Procedure GetArcCoords (var coordonare:ArcCoordsType);
  Coordarc detip predefinit ArcCoordsTzpe va contine coordonatele centrului crcului 
  sau elipsei si cordonatele punctului de inceput si de sfarsit al arcului 
  . Tipulpredefinit ArcCordsTzpe este:
  Type ArcCoordsType=record  x,y: integer; AcentruS
  Xstart, Ystart:integer Ainceputul arculuiS 
  Xend,Yend:ineteger Asfarsitu arculuiS
  End;
  PieSlice
  Procedure PieSlince deseneza si hasureaza un sector de cerc si este definita 
  astfel:
  Procedure PieSlice (x, y:integer; Ustart, Ufinal, r:word);
  X si y Ufinal reprezinta unghiul de inceput si de sfarsit al sectorului, 
  iar r este raza.
  Culoarea cercului este culoarea actuala, iar modelul de hasurare si culoare 
  de hasurare este definita este definita de procedurile SetFillStyle sau SetFillPattern.
  Sector
  Procedura Sector deseneaza si hasureaza un sector de elipsa si este definita 
  astfel:
  Procedure Sector (x,y:integer; Ustar, Ufinal, Xraza, Yraza:word);
  X si y reprezinta coordonatele centrului;
  Ustart, Ufinal reprezinta unghiul de inceput si de sfarsitul al 
  sectorului de elipsa in grade, in sens trigonometric. Variabilele 
  Xraza si Yraza definesc axa orizontala respectiv axa verticala a elipsei. Culoarea 
  este culoarea actuala, iar modelul de hasurare este definit de procedurile SetFillStyle 
  si SetFillPattern.
  FillEllipse 
  Procedura FillEllipse deseneaza si hasureaza o elipsa si este definita astfel:
  Procedure FillEllipse (x, y:integer;Xraza;Yraza:word); x,y reprezinta coordonatele centrului;
  Xraza si Yraza reprezinta axa orizontala respectiv verticala a elipsei.
  Culoarea elipsei este culoarea actuala, iar modelul si culoarea de hasurare 
  este definita de procedurile SetFillStyl sau SetFillPattern.
  GetAspectRatio 
  Procedura GetAspectRatio determina dimensiunile maximale ale ecranului grafic. 
  Procedura se determina astfel:
  Procedure GetAspectRatio (var xasp; vasp:word);
  Xasp, yasp reprezinta valoarea maxima a abscisei si a ordonatei, adica rezolutia 
  efectiva a ecranului grafic. Din aceste valori se poate calcula raportul dimensional 
  xasp; yasp. Acest raport este utilizabil la „rotunjiri” necesare 
  la trasarea cercurilor, sectoarelor si arcelor de cerc.
  SetAspectRetio
  Procedura SetAspectRatio defineste raportul dimensional implicit. Procedura 
  se defineste astfel:
  Procedure SetAspectRatio (xasp, yasp:word); xasp, yasp reprezinta valorile amxime pentru abscisa si ordonata. Cu aceste 
  valori definite, un cerc torsionat poate fi rectificat pe baza raportului dimensional 
  definti.
 
  6.2. Aplicatie
  Programul curbe realizeaza trasarea de cercuri, arcuri, elipse, sectoare de 
  cerc, sectoare de elipse.
  Program curbe;
  Uses crt, graph;
  Var Raza, gd, dm:integer; ch: char;
  Xasp, yasp:word;
  Begin gd:=detect; initgraph (gd, gm,’c:\bp\bgi’); if graphresult<>grOk then halt (1); repeat outTextXY(11. 0. ’apasati’); outTextXY(10. 10. ’1-cerc 2-arc 3-elipsa 4-sector de cerc 5-sector elipsa 
  6-hasurarea elipsei);
  OuttextXY(10. 470. ‘0-iesire’); ch:=readkey; case ch of
  ‘1’ :begin for raza:=1 to 5 do circle (100.100. raza*10); end;
  ‘2’ begin for raza:=1 to 5 do arc(200.200.0.90. raza* 10); end;
  ‘3’ begin elipse(300.100.0.360.30.50); end;
  ‘4’:begin pieslice(400.100.0.270.40); end;
  ‘5’:begin sector(getmaxx div 2. getmay div 2.0.45.50.50); getaspectratio(xasp, yasp); Asector circularS sector(getmaxx div 2. getmaxy div 2 180.135.50.50*longint(xasp) div yasp); Apunc 
  centratS  end;
  ‘6’:begin fillellipse(100.350.50.50); getaspectration(xasp,yasp); Aelipsa circularaS fillellipse(50.50.30.30); end; end; until ch=’0’; closegraph; end.