• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Blog dos Moderadores

  • artigos
    43
  • comentários
    0
  • visualizações
    49477

Autores deste blog

  • jpaulino 19
  • thoga31 9
  • Rui Carlos 7
  • David Pintassilgo 3
  • brunoais 2
  • bioshock 1
  • Warrior 1
  • M6 1

[Snippet] Breve experiência com a unit 'Graph'

thoga31

417 visualizações

Uma experiência muito útil sobre a utilização de gráficos avançados em Pascal. Desfruta, ao mesmo tempo, de um pequeno snippet de representação de ângulos e funções sinusoidais em meia dúzia de linhas de código ;)

Ando agora a estudar a unit Graph do Free Pascal, e deixo-vos a minha primeira experiência, bem sucedida.

(não está comentado nem muito "arranjadinho", é só mesmo uma experiência)

Ora digam lá se o Pascal é ou não fraquinho? :D

Eu demoraria muito mais a obter o mesmo resultado em VB.NET, a outra LP do meu conhecimento...

Venham daí as vossas opiniões sobre esta maravilha! I just love it, man! :D

trigonometria_pascal.png

program Trigonometria;
uses graph, sysutils, windows;
var Driver, Modus : smallint;
    Angle : integer;

function Real2String(const value : real) : string;
begin
     Str(value, Real2String);
end;

function Int2String(const value : integer) : string;
begin
     Str(value, Int2String);
end;

begin
     try
        repeat
              write('Angulo (inteiro) (-360..360)? ');
              readln(Angle);
        until (Angle in [-360..360]);

        DetectGraph(Driver, Modus);
        InitGraph(Driver, Modus, '');

        Circle(200, 200, 100);
        Line(200, 50, 200, 350);
        Line(50, 200, 350, 200);

        SetLineStyle(SolidLn,0,ThickWidth);
        SetColor(red);
        Line(200, 200, round(100*cos((angle*pi)/180)+200), round(-100*sin((angle*pi)/180)+200));

        SetColor(white);
        OutTextXY(300, 300, 'sin(' + Int2String(angle) + ') = ' + Real2String(sin((angle*pi)/180)));
        OutTextXY(300, 310, 'cos(' + Int2String(angle) + ') = ' + Real2String(cos((angle*pi)/180)));

        readln; // pausa

        CloseGraph;
     except
           ON e:exception do begin
              MessageBox (0, @(e.message)[1] , 'ERRO!', 0 + MB_ICONHAND);
           end;
     end;
     writeln; write('end'); readln; // pausa
end.

Origem: [snippet] Breve experiência com a unit 'Graph'


0


0 Comentários


Não há comentários para mostra.

Convidado
Está a comentar como guest. Se tem uma conta, por favor inicie sessão.
Adicionar um comentário...

×   Colou conteúdo com formatação.   Restaurar formatação

×   Your link has been automatically embedded.   Mostrar como ligação