0

linguagem Pascal

A
Alfredo Neto

Pascal – funções

SEPTEMBER 20, 2020 ~ 

LUIZMOURA

O aplicativo para calcular a área de um quadrado ou de um círculo também pode ser escrito usando Lazarus, tanto para rodar no terminal como em janelas. Neste exemplo são apresentados módulos (unit) e funções (function).

  • Pascal – prompt de comando

Design-time:

O programa (programAreas utiliza as variáveis option (opção escolhida – quadrado ou círculo) e input (valor informado ou não – lado ou raio). Se uma das duas opções não for escolhida, o programa termina. Dependendo da informação ou não do valor do lado ou do raio, uma versão da função area() é chamada.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

program Areas;

uses sysutils, calcular;

var

   option : integer;

   input : string;

begin

while true do

  begin

       write('Escolha uma alternativa: 1) QUADRADO 2) CIRCULO: ');

       readln(option);

       if (option <> 1) and (option <> 2) then

       begin

          writeln('FIM');

          readln;

          break;

       end;

       write('Informe lado do quadrado ou raio do circulo: ');

       readln(input);

       if (input = '') then

          writeln('Area = ', area(option):0:2)

       else

           writeln('Area = ', area(option, strtofloat(input)):0:2);

       readln;

  end;

end.

Advertisements


REPORT THIS AD

A função sobrecarregada area() fica no módulo (unit) calcular, usado (através do comando uses) pelos programas (programAreas (versão terminal) e CalcularArea (versão gráfica) . Caso não seja informado o valor do lado ou do raio, este parâmetro opcional tem um valor default (no caso, 1).

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

unit calcular;

{$mode objfpc}{$H+}

interface

uses

  Classes, SysUtils;

const

   PI : real = 3.14159;

function area(aOption:integer; aInput:integer = 1):real;

function area(aOption:integer; aInput:real):real;

implementation

function area(aOption:integer; aInput:integer = 1):real;

begin

  if (aOption = 1) then

    area := aInput * aInput

  else

        area := aInput * aInput * PI;

end;

function area(aOption:integer; aInput:real):real;

begin

     if (aOption = 1) then

        area := aInput * aInput

     else

           area := aInput * aInput * PI;

end;

end.

Runtime:

  • Pascal – interface gráfica

Advertisements


REPORT THIS AD

Design-time:

Na versão gráfica, o programa (programCalcularArea usa (uses) dois módulos (unit): areaGUI calcular.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

program calcularArea;

{$mode objfpc}{$H+}

uses

  {$IFDEF UNIX}{$IFDEF UseCThreads}

  cthreads,

  {$ENDIF}{$ENDIF}

  Interfaces, // this includes the LCL widgetset

  Forms, areaGUI, calcular

  { you can add units after this };

{$R *.res}

begin

  RequireDerivedFormResource:=True;

  Application.Scaled:=True;

  Application.Initialize;

  Application.CreateForm(TForm1, Form1);

  Application.Run;

end.

O primeiro módulo (areaGUI) define o fórmulário (form), os rótulos (label), o grupo de botões de rádio (radiogroup), os botões de rádio (radiobutton), a caixa de texto (edit) e o botão de comando (button).

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

unit areaGUI;

{$mode objfpc}{$H+}

interface

uses

  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls, calcular;

type

  { TForm1 }

  TForm1 = class(TForm)

    btCalcular: TButton;

    edtInput: TEdit;

    Label1: TLabel;

    Label2: TLabel;

    rbCirculo: TRadioButton;

    rbQuadrado: TRadioButton;

    RadioGroup1: TRadioGroup;

    procedure btCalcularClick(Sender: TObject);

  private

  public

  end;

var

  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.btCalcularClick(Sender: TObject);

var

   option : integer;

   message : string;

begin

  if rbQuadrado.Checked then

  begin

    option := 1;

    message := 'Área do Quadrado = ';

  end

  else

  begin

    option := 2;

    message := 'Área do Círculo = ';

end;

  if edtInput.Text = '' then

  begin

    message := message + floattostr(area(option));

  end

  else

     begin

       message := message + floattostr(area(option, strtofloat(edtInput.Text)));

     end;

  MessageDlg(message, mtInformation, [mbOk], 0);

end;

end.

O segundo módulo (calcular), igual ao usado no programa para promt de comando Areas, contém a função (functionarea().

Runtime:

  • Observações:

Pascal e C++continuam sendo linguagens prestigiadas pela empresa Idera, anteriormente Embarcadero e Borland.

Enquanto a Amazônia e o Pantanal estão sendo destruídos, o governo nazimiliciano do Brasil, durante a visita do “senhor da guerra” ianque, Mike Pompeo, expõe seu lado vira-lata ao desconsiderar os princípios de independência nacional, autodeterminação dos povos, não intervenção e defesa da paz.

0
0

Comentários (0)

alfredo gelk neto

Brasil