Last active
December 11, 2020 18:33
-
-
Save joaoqalves/3b324d655c3ab3cbbb7c1ec4a358e7f2 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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