Skip to content

Instantly share code, notes, and snippets.

@joaoqalves
Last active December 11, 2020 18:33
Show Gist options
  • Save joaoqalves/3b324d655c3ab3cbbb7c1ec4a358e7f2 to your computer and use it in GitHub Desktop.
Save joaoqalves/3b324d655c3ab3cbbb7c1ec4a358e7f2 to your computer and use it in GitHub Desktop.
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls,
System.ImageList, Vcl.ImgList, Vcl.Imaging.pngimage;
type
TCovid19 = class(TForm)
Label1: TLabel; // João: estes Label1, Label2, etc... eu mudaria estes nomes para algo que seja mais inteligível. Exemplo: labelCasos, labelHabitantes, imagemLogotipo, imagemBotaoEsquerda, imagemBotaoDireita, etc
eCasos: TEdit;
Label2: TLabel;
eHabitantes: TEdit;
bResultado: TButton;
Image1: TImage;
Image2: TImage;
Image4: TImage;
Label3: TLabel;
procedure eCasosHabitantesChange (Sender: TObject);
procedure bResultadoClick(Sender: TObject);
private
function CalcularRisco(numeroDeCasos : Integer; numeroDeHabitantes: Integer): String;
public
{ Public declarations }
end;
var
Covid19: TCovid19;
implementation
{$R *.dfm}
procedure TCovid19.eCasosHabitantesChange (Sender: TObject);
begin
bResultado.Enabled := (Trim(ecasos.Text) <> '') and (Trim(eHabitantes.Text) <> ''); // Desativar o botão enquanto não for inserido o número de casos e o número de habitantes | João: eu aqui explicaria porque é que só tens um procedure e não dois (Ex: evitar código repetido)
end;
function TCovid19.CalcularRisco (numeroDeCasos : Integer; numeroDeHabitantes: Integer): String; //Definir o tipo de dados do número de casos, do número de habitantes e da função calcular risco
var
índiceDeRisco : Real ; //Definir o tipo de dados do índice de risco | João: aqui faltaria dizer que o índice de Risco é a variável onde armazenarás a proporção entre o número de Casos e o número de habitantes * 100.000 (se calhar podes dizer de onde vem esta fórmula)
risco : String; // Definir o tipo de dados do risco | João: comentário irrelevante. O importante aqui é dizer que esta variável é onde guardas uma String que é comum a todos os tipos de risco e a sua criação é para evitar a repetição. Vendo o código abaixo, se calhar poderia ser uma constante. O que achas?
const //Declaração de constantes | João: eu tentaria explicar por que é que criaste estas constantes (e porque é que não são variáveis). Se tens a fonte de onde as foste buscar, também seria útil
Habitantes_regra = 100000;
Extremo_muito_elevado = 960;
Extremo_elevado = 480;
Extremo_moderado = 240;
begin
índiceDeRisco:= (numeroDeCasos * Habitantes_regra)/ numeroDeHabitantes ; //Cálculo do índice de risco
risco:= 'Região de risco'; //Evitar a repetição "Região de Risco"
if índiceDeRisco> Extremo_muito_elevado then
Result:= risco + ' extremamente elevado'
else if (índiceDeRisco <= Extremo_muito_elevado) and( índiceDeRisco > Extremo_elevado ) then
Result:= risco + ' muito elevado'
else if (índiceDeRisco<= Extremo_elevado) and ( índiceDeRisco > Extremo_moderado) then
Result:=risco + ' elevado'
else
Result:= risco + ' moderado';
end;
procedure TCovid19.bResultadoClick (Sender: TObject);
var
casos : Integer ;
habitantes : Integer ;
begin
if Not TryStrToInt (Trim (eCasos.Text), casos) then // Controlar a possibilidade de ecasos.Text não ser um número
begin
raise Exception.Create('O número de casos positivos deve ser um número inteiro');
end;
if Not TryStrToInt (Trim(eHabitantes.Text), habitantes) then //Controlar a possibilidade de ehabitantes.Text não ser um número
begin
raise Exception.Create('O número de habitantes de uma região deve ser um número inteiro');
end;
if casos < 0 then //Controlar que o número de casos seja um número inteiro positivo ou 0
begin
raise Exception.Create('O número de casos positivos tem de ser um número inteiro positivo ou 0');
end;
if habitantes <= 0 then //Controlar que o número de habitantes seja um número positivo
begin
raise Exception.Create('O número de habitantes tem de ser um número positivo');
end;
if casos > habitantes then // Controlar que o número de casos não seja superior ao número de habitantes
begin
raise Exception.Create('O número de casos positivos não pode ser superior ao número de habitantes');
end;
ShowMessage (CalcularRisco (casos, habitantes));
end;
end.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment