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.
computação vou aprendendo GNU Linux Debian PostgreSQL pgAdmin QT Ubuntu C R Pascal Lazarus Solver . . .
sábado, 13 de outubro de 2012
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;
------------------------------------------------------------------------------------
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.
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;
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.
sexta-feira, 14 de setembro de 2012
Lazarus - Aplicação com tipo de dado real
Montar a seguinte interface gráfica
Fazer um programa para somar dois números reais, limpar os dados e sair.
Utilize a função FormatFloat que utiliza dois parâmetros, sendo o primeiro a máscara de formatação e o segundo o valor a ser formatado. O valor formatado é transformado em uma string.
A máscara de formatação que será utilizada é a seguinte ('#,##0.00'), onde
# (tralha) estabelece a supressão de valores zerados, quando eles existirem;
, (vírgula) estabelece a separação de milhares (notação norte-americana);
. (ponto) estabelece a separação do ponto para casas decimais (notação norte-americana).
Exemplos de exibição para o número 2.546,58 e o número 44,32:
0,000.00 exibirá 2,546.58 e 0,044.32
#,##0.00 exibirá 2,546.58 e 44.32
Observe que a utilização de máscaras de formatação possibilita a especificação de três formatos diferentes simultaneamente, separados por ponto-e-vírgula. Com isso é possível ter uma máscara para valores positivos, negativos e zeros. Verifique no código seguinte.
O código encontra-se abaixo:
=================================================
procedure TForm1.Button1Click(Sender: TObject);
var a,b,soma: real;
begin
if ((edit1.text='') or (edit2.text=''))
then showmessage('Favor preencher os dois números!')
else
begin
a := strtofloat(edit1.text);
b := strtofloat(edit2.text);
soma := a + b;
label1.caption := formatfloat('#,##0.00;(#,##0.00); zerado', Soma);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
edit1.text := '';
edit2.text := '';
label1.caption := '';
edit1.setfocus;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Close;
end;
=================================================
Faça o seguinte programa:
1 – obter o valor para a variável HT (horas de trabalho no mês);
2 – obter o valor para a variável VH (valor da hora trabalhada);
3 – obter o valor para a variável PD (percentual de desconto);
4 – Calcular o salário bruto (SB): SB = HT x VH;
5 – Calcular o total de desconto (TD): TD = (PD/100) x SB;
6 – Calcular o salário líquido (SL): SL = SB – tudo;
7 – Apresentar o valor do salário líquido: SL.
Referência
MANZANO, José Augusto Navarro Garcia; MENDES, Sandro Santa Vicca. Estudo dirigido de Delphi 7. São Paulo: Érica, 2003.
Fazer um programa para somar dois números reais, limpar os dados e sair.
Utilize a função FormatFloat que utiliza dois parâmetros, sendo o primeiro a máscara de formatação e o segundo o valor a ser formatado. O valor formatado é transformado em uma string.
A máscara de formatação que será utilizada é a seguinte ('#,##0.00'), onde
# (tralha) estabelece a supressão de valores zerados, quando eles existirem;
, (vírgula) estabelece a separação de milhares (notação norte-americana);
. (ponto) estabelece a separação do ponto para casas decimais (notação norte-americana).
Exemplos de exibição para o número 2.546,58 e o número 44,32:
0,000.00 exibirá 2,546.58 e 0,044.32
#,##0.00 exibirá 2,546.58 e 44.32
Observe que a utilização de máscaras de formatação possibilita a especificação de três formatos diferentes simultaneamente, separados por ponto-e-vírgula. Com isso é possível ter uma máscara para valores positivos, negativos e zeros. Verifique no código seguinte.
O código encontra-se abaixo:
=================================================
procedure TForm1.Button1Click(Sender: TObject);
var a,b,soma: real;
begin
if ((edit1.text='') or (edit2.text=''))
then showmessage('Favor preencher os dois números!')
else
begin
a := strtofloat(edit1.text);
b := strtofloat(edit2.text);
soma := a + b;
label1.caption := formatfloat('#,##0.00;(#,##0.00); zerado', Soma);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
edit1.text := '';
edit2.text := '';
label1.caption := '';
edit1.setfocus;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Close;
end;
=================================================
Faça o seguinte programa:
1 – obter o valor para a variável HT (horas de trabalho no mês);
2 – obter o valor para a variável VH (valor da hora trabalhada);
3 – obter o valor para a variável PD (percentual de desconto);
4 – Calcular o salário bruto (SB): SB = HT x VH;
5 – Calcular o total de desconto (TD): TD = (PD/100) x SB;
6 – Calcular o salário líquido (SL): SL = SB – tudo;
7 – Apresentar o valor do salário líquido: SL.
Referência
MANZANO, José Augusto Navarro Garcia; MENDES, Sandro Santa Vicca. Estudo dirigido de Delphi 7. São Paulo: Érica, 2003.
terça-feira, 4 de setembro de 2012
Lazarus - Entrada e saída de dados numéricos
Entrada e saída de dados numéricos
Dados numéricos são apresentados sob o tipo caracteres (string);
Antes de serem repassados ao programa, esses dados numéricos devem ser transformados de caracteres para numérico. E o contrário, quando forem apresentados no formulário;
As funções do FPL que fazem essas tarefas são:
StrToFloat e StrToInt – Transforma de caractere (string) para numérico (real e inteiro respectivamente).
FloatToStr e IntToStr - Transforma de numérico (real e inteiro respectivamente) para caractere (string).
Entrada e saída com tipo de dado inteiro
Monte a seguinte interface gráfica para somar dois números inteiros
Dê um duplo clique no botão Somar e digite o código
--------------------------------------------------------------------
procedure TForm1.Btn1Click(Sender: TObject);
Var a, b, r : integer;
begin
a := strtoint(Edt1.text);
b := strtoint(Edt2.text);
r := a + b;
Lbl4.caption := inttostr(r);
end;
--------------------------------------------------------------------
Basta executar (F9) e testar.
Referência
MANZANO, José Augusto Navarro Garcia; MENDES, Sandro Santa Vicca. Estudo dirigido de Delphi 7. São Paulo: Érica, 2003.
Dados numéricos são apresentados sob o tipo caracteres (string);
Antes de serem repassados ao programa, esses dados numéricos devem ser transformados de caracteres para numérico. E o contrário, quando forem apresentados no formulário;
As funções do FPL que fazem essas tarefas são:
StrToFloat e StrToInt – Transforma de caractere (string) para numérico (real e inteiro respectivamente).
FloatToStr e IntToStr - Transforma de numérico (real e inteiro respectivamente) para caractere (string).
Entrada e saída com tipo de dado inteiro
Monte a seguinte interface gráfica para somar dois números inteiros
Dê um duplo clique no botão Somar e digite o código
--------------------------------------------------------------------
procedure TForm1.Btn1Click(Sender: TObject);
Var a, b, r : integer;
begin
a := strtoint(Edt1.text);
b := strtoint(Edt2.text);
r := a + b;
Lbl4.caption := inttostr(r);
end;
--------------------------------------------------------------------
Basta executar (F9) e testar.
Referência
MANZANO, José Augusto Navarro Garcia; MENDES, Sandro Santa Vicca. Estudo dirigido de Delphi 7. São Paulo: Érica, 2003.
Assinar:
Postagens (Atom)







