segunda-feira, 15 de outubro de 2012

Lazarus - Componente CheckBox



Fazer um programa para um restaurante onde o usuário irá realizar escolhas sobre uma refeição e aparecerá o preço dessa refeição.
– A interface gráfica deverá ser montada conforme mostrado em sala.
– Terão 3 RadioButtons para especificar o tamanho do prato: pequeno, médio ou grande. O usuário deverá escolher apenas uma dentre essas três opções de tamanhos.
– Terão 6 CheckBox para especificar quais os componentes o usuário deseja no prato: carne boi, carne frango, carne peixe, salada, batata frita e ovo frito. O usuário poderá escolher nenhum, um ou vários componentes.
– Os valores (R$) relacionados ao tamanho dos pratos serão: prato pequeno: 5; prato médio: 7; prato grande: 9.
– Os valores (R$) relacionados aos componentes serão: carne boi: 5; carne frango: 4; carne peixe: 3; salada: 1,5; batata frita:3; ovo frito: 1.
– Terão 3 botões: Montar, Limpar e Sair.
– O botão Montar: se não estiver nenhum tamanho de prato selecionado, deverá informar a mensagem (ShowMessage), “Por favor, escolha um tamanho de prato!”. Caso tenha algum tamanho de prato selecionado, deverá informar a mensagem (ShowMessage), “Valor do PF = R$12,50”, por exemplo.
– O botão limpar: deverá limpar a seleção de todos RaioButton e de todos CheckBox.
– O botão sair: sai do programa.

A imagem do formulário com as respectivas propriedades "Names" já alterados exibidas na janela "Object Inspector" encontra-se abaixo:





O código encontra-se abaixo:

=======================================================

procedure TFrmMontar.BtnMontarClick(Sender: TObject);
var Preco : Real;
begin
   Preco := 0;

   if ((RdBtnPFPequeno.Checked=false) and (RdBtnPFMedio.Checked=false) and (RdBtnPFGrande.Checked=false))
      then ShowMessage('Por favor, escolha um tamanho de prato!');

   if (RdBtnPFPequeno.Checked)
      then Preco := 5
      else if (RdBtnPFMedio.Checked)
         then Preco := 7
         else if (RdBtnPFGrande.checked)
            then Preco := 9;

   if (ChckBxBoi.Checked) then Preco := Preco + 5;
   if (ChckBxFrango.Checked) then Preco := Preco + 4;
   if (ChckBxPeixe.Checked) then Preco := Preco + 3;
   if (ChckBxSalada.Checked) then Preco := Preco + 1.5;
   if (ChckBxBatata.Checked) then Preco := Preco + 3;
   if (ChckBxOvo.Checked) then Preco := Preco + 1;

   if ((RdBtnPFPequeno.Checked) or (RdBtnPFMedio.Checked) or (RdBtnPFGrande.Checked))
      then ShowMessage('Valor do PF = R$ ' + FormatFloat('0.00;-0.00;zero', Preco));

end;

procedure TFrmMontar.BtnLimparClick(Sender: TObject);
begin
   RdBtnPFPequeno.checked := False;
   RdBtnPFMedio.checked := False;
   RdBtnPFGrande.checked := False;
   ChckBxBoi.Checked := False;
   ChckBxFrango.Checked := False;
   ChckBxPeixe.Checked := False;
   ChckBxSalada.Checked := False;
   ChckBxBatata.Checked := False;
   ChckBxOvo.Checked := False;
end;

procedure TFrmMontar.BtnSairClick(Sender: TObject);
begin
  close
end;

=======================================================

sábado, 13 de outubro de 2012

Debian 6.0.6 - Instalando o navegador Google Chrome

Para instalar o navegador Google Chrome no Debian 6.0.6 Squeeze pode se proceder da seguinte maneira.

Será utilizado o repositório do Chrome no sources.list, com isso, o navegador Google Chrome também será atualizado caso seja feito uma atualização para o sistema.

Abra o terminal: " Ctrl + Alt + T "

Entre como root: "su"
:~$ su
Senha:
#

Edite o sources.list:
# gedit /etc/apt/sources.list

Adicione a seguinte linha no sources.list e salve esse arquivo:

deb http://dl.google.com/linux/chrome/deb/ stable main

Após salvar e voltar ao terminal, adicione a chave gpg ao apt:
# wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
OK
#

Atualize o sistema:
# apt-get update

Instale o navegador Google Chrome:
# apt-get install google-chrome-stable

Debian 6.0.6 - GRUB não reconhece o sistema que já estava instalado

Ao instalar o Debian GNU/Linux 6.0.6 Squeeze i386 paralelamente com outro sistema operacional que já esteja instalado no PC, o GRUB (programa que é executado ao ligar o PC para escolher em qual sistema operacional irá "entrar") não reconheceu o sistema que já estava instalado.

Para que o GRUB reconheça outros sistemas que já estavam instalados antes de instalar o Debian é necessário atualizar o GRUB, uma das formas é a seguinte:

Abrir o terminal. Pode ser aberto com o atalho utilizando as teclas Ctrl + Alt + T.

Entre como superusuário, bastando digitar "su", em seguida digite a senha, e estará como root (#):

~:$ su
Senha:
#

Basta digitar: "update-grub":

# update-grub

Ao digitar esse último comando, irá aparecer no terminal os sistemas que ficarão como opção para escolha ao iniciar o PC. Reinicie o PC e verifique se o(s) sistema(s) que não foi(ram) reconhecido(s) está(ão) disponível(is) para inicialização no GRUB.

segunda-feira, 8 de outubro de 2012

Solver - resolvendo um problema e interpretando seus relatórios

Resolver o seguinte problema:

Variáveis: X1 = Cadeira e X2 = Mesa
Maximizar Lucro = 4 * X1 + 1 * X2
S.A: Madeira) 2 * X1 + 3 * X2 >= 12
Metal) 2 * X1 + 1 * X2 >= 8

Primeiramente, deve-se preencher as células da planilha:
Como exemplo:
A5:A6 [ Variáveis ]
A9:A10 [ Restrições]
B3 [ Lucro ]
B5 [ Cadeira ]
B6 [ Mesa ]
B9 [ Madeira]
B10 [ Metal ]
C3 [ =4*C5+1*C6 ]
C5 [ 1 ]
C6 [ 1 ]
C9 [ =2*C5+3*C6 ]
C10 [ =2*C5+1*C6]
D8 [ Limites ]
D9 [ 12 ]
D10 [ 8 ]

Clicar em Dados / Solver.

Caso o solver não esteja “ativado”, deverá se ativado da seguinte forma:
  • clicar no símbolo (círculo) no canto superior esquerdo;
  • clicar em “Opções”;
  • clicar em “Suplementos”;
  • clicar em “Solver” (selecionar);
  • clicar em “ir...”
  • clicar em “solver” (selecionar);
  • clicar em “Ok”;
  • se preguntar se “Deseja instalá-lo agora?” Clicar em “Sim”.

Após clicar em “Dados / Solver” irá abrir a “janela do Solver”.

Entrar com os seguinte dados:
  • Definir célula de destino: $C$3
  • Igual a: Máx
  • Células variáveis: $C$5:$C$6
  • Submeter às restrições: Adicionar: $C$10 <= $D$10 Adicionar: $C$9 <= $D$9
  • Clicar em opções, marcar a opção: Presumir não negativos. Com isso X1 e X2 >= 0
  • Clicar em Ok
  • Clicar em Resolver
  • Relatórios, marcar: Resposta, Sensibilidade e Limites

Interpretação dos relatórios para o exemplo dado:
Relatório de resposta:
  • célula de destino: valor do lucro (valor final). Lucro = 16
  • células ajustáveis: valor de cadeira e mesa a ser produzido (valor final). Cadeira = 4; Mesa = 0
  • restrições status: sem agrupar, a solução obtida não coincide com o valor limite da restrição; agrupar, a solução obtida coincide com o valor limite da restrição. Madeira = sem agrupar; Metal = Agrupar;
  • Restrição transigência: diferença entre o valor limite e o valor obtido pela restrição. Madeira = 12-8=4; Metal = 8-8=0;
Relatório de sensibilidade:
  • Reduzido gradiente: mede o crescimento do objetivo por unidade na célula ajustável, ou seja, quanto varia o lucro se passar a produzir mais um produto. Se passar a produzir mais uma mesa o lucro passa a ser 15. Se passar a produzir mais duas mesas o lucro para a ser 14; Cadeira = 0; Mesa = -1;
  • Lagrange Multiplicador: Alteração da F.O. para um aumento unitário nos limites das restrições. Se for zero, significa uma restrição cuja solução não atingiu o limite especificado; Madeira = 0; Metal = 2
Relatório de limites
  • Limite inferior: menor valor que a variável pode assumir, em função das restrições e do resultado. Cadeira = 0; Mesa = 0;
  • Limite superior: maior valor que a variável pode assumir, em função das restrições e do resultado; Cadeira = 4; Mesa = 0;
  • Destino resultado: o valor de F.O. caso esteja nesse limite (inferior ou superior).
  • Obs.: nesse exemplo, como não se produz mesa, o destino será sempre 16, para a mesa, pois a mesma não é produzida. Caso não se produza cadeira, o destino resultado será 0, caso produza o máximo de cadeira, o destino resultado será 16.

Lazarus - Componente GroupBox

Componente GroupBox

Monte a estrutura abaixo com 2 componetes GroupBox. Um com a propriedade Caption sendo Sexo e o outro sendo Idade. Em seguida adicione dois RadioButton em cada Group Box. Verifique a "hierarquia" na janela ObjectInspector.


Adicione os outros componentes, altere a propriedade Caption e Name de cada componente, conforme abaixo:






O programa deverá mostrar as seguintes informações através do ShowMessage, conforme as opções que forem selecionadas:
- Feminino e Maior 18 anos = “Mulher liberada”
- Feminino e Menor 18 anos = “Mulher não liberada”
- Masculino e Maior 18 anos = “Homem liberado”
- Masculino e Menor 18 anos = “Homem não liberado”
Caso não se selecione o sexo, deverá aparecer a informação: "Favor informar o sexo".
Caso não se selecione a idade, deverá aparecer a informação: "Favor informar a idade".

Programe o botão Calcular com o seguinte código:


------------------------------------------------------------------------------------
procedure TFrmControle.BtnCalcularClick(Sender: TObject);
begin
  if (RdBtnMaior.Checked)
     then if (RdBtnFeminino.Checked)
          then showmessage('Mulher liberada.')
          else if (RdBtnMasculino.Checked) then showmessage('Homem liberado.');
  if (RdBtnMenor.Checked)
     then if (RdBtnFeminino.Checked)
          then showmessage('Mulher não liberada.')
          else if (RdBtnMasculino.Checked) then showmessage('Homem não liberado.');
  if (RdBtnFeminino.Checked = False) and (RdBtnMasculino.Checked = False)
     then showmessage('Favor escolher uma opção de sexo.');
  if (RdBtnMaior.Checked = False) and (RdBtnMenor.Checked = False)
     then showmessage('Favor escolher uma opção de idade.');
end;  
------------------------------------------------------------------------------------


Programe o botão Limpar com o seguinte código:
------------------------------------------------------------------------------------
 procedure TFrmControle.BtnLimparClick(Sender: TObject);
begin
     RdBtnMaior.Checked := False;
     RdBtnMenor.Checked := False;
     RdBtnFeminino.Checked := False;
     RdBtnMasculino.Checked := False;
end;
------------------------------------------------------------------------------------

 Programe o botão Sair com o seguinte código:
------------------------------------------------------------------------------------
 procedure TFrmControle.BtnSairClick(Sender: TObject);
begin
  Close;
end; 
------------------------------------------------------------------------------------

terça-feira, 2 de outubro de 2012

Lazarus - Componente RadioButton

Monte um formulário com 3 label, 3 edit, 3 botton e 4 radiobutton.

Alterar a propriedade Name:

Form1 = FrmCalculadora
Label1 = LblN1
Label2 = LblN2
Label3 =LblResultado
Edit1 = EdtN1
Edit2 = EdtN2
Edit3 = EdtResultado
Button1 = BtnCalcular
Button2 = BtnLimpar
Button3 = BtnSair
RadioButton1 = RdBtnSoma
RadioButton2 = RdBtnSubtracao
RadioButton3 = RdBtnMultiplicacao
RadioButton4 = RdBtnDivisao

Após alteras a propriedade Name dos Componentes o Formulário e o Object Inspector terá a seguinte aparência


Alterar as propriedades Caption / text:

FrmCalculadora: caption = Calculadora
LblN1: caption = Número 1
LblN2: caption = Número 2
LblResultado: caption = Resultado
EdtN1: text = vazio (em branco)
EdtN2: text = vazio (em branco)
EdtResultado: text = vazio (em branco)
BtnCalcular: caption = Calcular
BtnLimpar: caption = Limpar
BtnSair: caption = Sair
RdBtnSoma: caption = Soma
RdBtnSubtracao: caption = Subtração
RdBtnMultiplicacao: caption = Multiplicação
RdBtnDivisao: caption = Divisão

Após alteras a propriedade Caption/Text dos Componentes o Formulário e o Object Inspector terá a seguinte aparência:






Alterar a propriedade ReadOnly do EdtResultado para True. Com isso, esse componente terá a capacidad3e de apresentar um valor, não permitindo a sua alteração.

Para programar o botão Calcular, duplo clique nesse botão. Inserir o código:

=======================================================
procedure TFrmCalculadora.BtnCalcularClick(Sender: TObject);
Var A, B, R : real;
begin
  if ((EdtN1.text = '') or (EdtN2.text = ''))
    then ShowMessage ('Preencha os campos número 1 e o númer 2')
    else
    begin
      A := StrToFloat(EdtN1.text);
      B := StrToFloat(EdtN2.text);
      if (RdBtnSoma.checked)
        then R := A + B
        else if (RdBtnSubtracao.checked)
          then R := A - B
          else if (RdBtnMultiplicacao.checked)
            then R := A * B
            else if (RdBtnDivisao.checked)
              then if (B = 0)
                then
                begin
                  EdtResultado.text := 'Erro';
                  ShowMessage('Número 2 deve ser diferente de zero');
                end
                else R := A / B;
  end;
  if (RdBtnDivisao.checked=false)or(b<>0)
    then EdtResultado.text := FormatFloat('0.00;-0.00;zerado', R);
  if ((EdtN1.text = '') or (EdtN2.text = ''))
    then EdtResultado.text := '';
  EdtN1.setFocus;
end;
=======================================================

Para programar o botão Sair e Limpar.

Duplo clique no botão Sair:
=======================================================
Close
=======================================================

Duplo clique no botão Limpar:
=======================================================
EdtN1.text := '';
EdtN2.text := '';
EdtResultado.text := '';
RdBtnSoma.Checked := True
=======================================================

Referência


MANZANO, José Augusto Navarro Garcia; MENDES, Sandro Santa Vicca. Estudo dirigido de Delphi 7. São Paulo: Érica, 2003.

segunda-feira, 1 de outubro de 2012

Lazarus - Exercício do triângulo

-->
Faça um programa que receba o valor dos três lados de um triângulo e mostre a seguinte informação (showmessage = Não é triângulo) ou (showmessage = Triângulo equilátero) ou (showmessage = Triângulo escaleno) ou (showmessage = Triângulo isósceles).

Duplo clique no botão calcular para "programá-lo" , o código encontra-se abaixo.



============================================
 procedure TForm1.BtnCalcularClick(Sender: TObject);
var A, B, C : Integer;
begin
     A := StrToInt(edtA.text);
     B := StrToInt(edtB.text);
     C := StrToInt(edtC.text);
     if (A < B+C ) and (B < A+C) and (C < A+B)
     then
        if (A = B) and (B = C)
        then
           ShowMessage ('Triângulo Equilátero')
        else
            if (A = B) or (A = C) or (C = B)
            then
                ShowMessage ('Triângulo Isósceles')
            else
                ShowMessage ('Triângulo Escaleno')
     else
         ShowMessage ('Não é Triângulo');
     edtA.SetFocus
end;  
============================================

 
-->
Referência

MANZANO, José Augusto Navarro Garcia; MENDES, Sandro Santa Vicca. Estudo dirigido de Delphi 7. São Paulo: Érica, 2003.