Silvio Santos Perde as Calças na Televisão
Se fosse qualquer outra pessoa poderia se mico, mas Silvio Santos faz show com isso.
Se fosse qualquer outra pessoa poderia se mico, mas Silvio Santos faz show com isso.
Um leitor me passou a seguinte dúvida em Pascal:
“Elabore um programa de cadastro de clientes cujos dados devem ser salvos em um arquivo texto.
Exemplo:
assign(arq,’MariaSilva12345.txt’);
ou
assign(arq,’MariaSilva12345_JoaoSouza5…
Deve ser seguida a estrutura de dado conforme ilustra a figura 1:

O programa deve permitir:
1. Incluir novo cliente;
2. Pesquisar por um cliente e mostrar;
3. Alterar dados de determinado cliente;
4. Excluir cliente;
5. Mostrar total de clientes cadastrados.
Para cada opção de operação, faça um subprograma.
As operações definidas nos itens 1, 3 e 4 devem ser gravadas no arquivo.”
Vamos a solução:
Program Cadastro_de_Clientes;
Uses Crt;
Var
arq : Text;
s : String;
o : Byte;
codigo : String [5];
nome : String [50];
tname : String [40];
logradouro : String [50];
numero : String [10];
cidade : String [25];
email : String [30];
telefone : String [15];
celular : String [15];
quant : Text;
Procedure Incluir;
var
i, j : Integer;
Begin
WriteLn ('Incluir');
WriteLn;
WriteLn ('Cliente');
WriteLn;
Write ('Codigo:'); ReadLn (codigo);
Write ('Nome..:'); ReadLn (nome);
WriteLn;
WriteLn ('Endereco');
WriteLn;
Write ('Logradouro:'); ReadLn (logradouro);
Write ('Numero....:'); ReadLn (numero);
Write ('Cidade....:'); ReadLn (cidade);
WriteLn;
WriteLn ('Contato');
WriteLn;
Write ('E-mail..............:'); ReadLn (email);
Write ('Telefone residencial:'); ReadLn (telefone);
Write ('Celular.............:'); ReadLn (celular);
// Remove Espacos
tname := nome;
while pos(' ',tname)<>0 do delete (tname,pos(' ',tname),1);
// Grava os dados
Assign (arq,tname+codigo);
ReWrite (arq);
WriteLn (arq,codigo);
WriteLn (arq,nome);
WriteLn (arq,logradouro);
WriteLn (arq,numero);
WriteLn (arq,cidade);
WriteLn (arq,email);
WriteLn (arq,telefone);
WriteLn (arq,celular);
Close (arq);
// Le a quantidade de registros
Assign (quant,'quantidade.txt');
Reset (quant);
ReadLn (quant,s);
val (s,i,j);
Close (quant);
// Soma 1 e grava
i := i + 1;
Assign (quant,'quantidade.txt');
ReWrite(quant);
Str(i,s);
WriteLn (quant,s);
Close (quant);
End;
Procedure Pesquisar;
Begin
WriteLn ('Pesquisar');
WriteLn;
Write ('Codigo:'); ReadLn (codigo);
Write ('Nome..:'); ReadLn (nome);
// Remove Espacos
tname := nome;
while pos(' ',tname)<>0 do delete (tname,pos(' ',tname),1);
Assign (arq,tname+codigo);
{$I-}
Reset (arq);
if IORESULT()<>0 then
Begin
WriteLn ('Cliente nao encontrado!');
ReadLn;
End
Else
Begin
WriteLn ('Cliente');
WriteLn;
ReadLn (arq,codigo);
WriteLn ('Codigo:',codigo);
ReadLn (arq,nome);
WriteLn ('Nome..:',nome);
WriteLn;
WriteLn ('Endereco');
WriteLn;
ReadLn (arq,logradouro);
WriteLn ('Logradouro:',logradouro);
ReadLn (arq,numero);
WriteLn ('Numero....:',numero);
ReadLn (arq,cidade);
WriteLn ('Cidade....:',cidade);
WriteLn;
WriteLn ('Contato');
WriteLn;
ReadLn (arq,email);
WriteLn ('E-mail..............:',email);
ReadLn (arq,telefone);
WriteLn ('Telefone residencial:',telefone);
ReadLn (arq,celular);
WriteLn ('Celular.............:',celular);
Close (arq);
ReadLn;
End;
{$I+}
End;
Procedure Alterar;
Begin
WriteLn ('Alterar');
WriteLn;
Write ('Codigo:'); ReadLn (codigo);
Write ('Nome..:'); ReadLn (nome);
// Remove Espacos
tname := nome;
while pos(' ',tname)<>0 do delete (tname,pos(' ',tname),1);
Assign (arq,tname+codigo);
{$I-}
Reset (arq);
if IORESULT()<>0 then
Begin
WriteLn ('Cliente nao encontrado!');
ReadLn;
End
Else
Begin
WriteLn ('Cliente');
WriteLn;
ReadLn (arq,codigo);
WriteLn ('Codigo:',codigo);
ReadLn (arq,nome);
WriteLn ('Nome..:',nome);
WriteLn;
WriteLn ('Endereco');
WriteLn;
ReadLn (arq,logradouro);
WriteLn ('Logradouro:',logradouro);
ReadLn (arq,numero);
WriteLn ('Numero....:',numero);
ReadLn (arq,cidade);
WriteLn ('Cidade....:',cidade);
WriteLn;
WriteLn ('Contato');
WriteLn;
ReadLn (arq,email);
WriteLn ('E-mail..............:',email);
ReadLn (arq,telefone);
WriteLn ('Telefone residencial:',telefone);
ReadLn (arq,celular);
WriteLn ('Celular.............:',celular);
Close (arq);
WriteLn;
WriteLn ('Cliente');
WriteLn;
Write ('Codigo:'); ReadLn (codigo);
Write ('Nome..:'); ReadLn (nome);
WriteLn;
WriteLn ('Endereco');
WriteLn;
Write ('Logradouro:'); ReadLn (logradouro);
Write ('Numero....:'); ReadLn (numero);
Write ('Cidade....:'); ReadLn (cidade);
WriteLn;
WriteLn ('Contato');
WriteLn;
Write ('E-mail..............:'); ReadLn (email);
Write ('Telefone residencial:'); ReadLn (telefone);
Write ('Celular.............:'); ReadLn (celular);
// Remove Espacos
tname := nome;
while pos(' ',tname)<>0 do delete (tname,pos(' ',tname),1);
// Grava os dados
Assign (arq,tname+codigo);
ReWrite (arq);
WriteLn (arq,codigo);
WriteLn (arq,nome);
WriteLn (arq,logradouro);
WriteLn (arq,numero);
WriteLn (arq,cidade);
WriteLn (arq,email);
WriteLn (arq,telefone);
WriteLn (arq,celular);
Close (arq);
End;
{$I+}
End;
Procedure Excluir;
var
confirma : String[1];
i,j : Integer;
Begin
WriteLn ('Excluir');
WriteLn;
Write ('Codigo:'); ReadLn (codigo);
Write ('Nome..:'); ReadLn (nome);
// Remove Espacos
tname := nome;
while pos(' ',tname)<>0 do delete (tname,pos(' ',tname),1);
Assign (arq,tname+codigo);
{$I-}
Reset (arq);
if IORESULT()<>0 then
Begin
WriteLn ('Cliente nao encontrado!');
ReadLn;
End
Else
Begin
WriteLn ('Cliente');
WriteLn;
ReadLn (arq,codigo);
WriteLn ('Codigo:',codigo);
ReadLn (arq,nome);
WriteLn ('Nome..:',nome);
WriteLn;
WriteLn ('Endereco');
WriteLn;
ReadLn (arq,logradouro);
WriteLn ('Logradouro:',logradouro);
ReadLn (arq,numero);
WriteLn ('Numero....:',numero);
ReadLn (arq,cidade);
WriteLn ('Cidade....:',cidade);
WriteLn;
WriteLn ('Contato');
WriteLn;
ReadLn (arq,email);
WriteLn ('E-mail..............:',email);
ReadLn (arq,telefone);
WriteLn ('Telefone residencial:',telefone);
ReadLn (arq,celular);
WriteLn ('Celular.............:',celular);
Close (arq);
Repeat
Write ('Confirma apagar (S/N)?');
ReadLn (confirma);
Until (confirma='S') or (confirma='N');
if confirma='S' then
begin
Assign (arq, tname+codigo);
Erase (arq);
// Le a quantidade de registros
Assign (quant,'quantidade.txt');
Reset (quant);
ReadLn (quant,s);
val (s,i,j);
Close (quant);
// diminui 1 e grava
i := i - 1;
Assign (quant,'quantidade.txt');
ReWrite(quant);
Str(i,s);
WriteLn (quant,s);
Close (quant);
end;
ReadLn;
End;
{$I+}
End;
Procedure Quantidade;
Var
s : String;
Begin
Assign (quant,'quantidade.txt');
Reset (quant);
ReadLn (quant,s);
Close (quant);
WriteLn ('Ha ',s,' registro(s)!');
ReadLn;
End;
Begin
Assign (quant,'quantidade.txt');
{$I-}
Reset (quant);
if IORESULT()<>0 then
Begin
{$I+}
ReWrite (quant);
WriteLn (quant,'0');
End;
Close (quant);
o := 0;
Repeat
ClrScr;
WriteLn ('Cadastro de Clientes');
WriteLn;
WriteLn ('1. Incluir');
WriteLn ('2. Pesquisar');
WriteLn ('3. Alterar');
WriteLn ('4. Excluir');
WriteLn ('5. Quantidade de Clientes');
WriteLn ('0. Sair');
WriteLn;
ReadLn (o);
Case o of
1 : Incluir;
2 : Pesquisar;
3 : Alterar;
4 : Excluir;
5 : Quantidade;
End;
Until o =0;
End.
Quantas vezes você não quis editar algo em um arquivo PDF?
O Adobe Acrobat é caro e vários outros editores também.
Agora trago o Wondershare PDF Editor onde permitir editar e converter seus arquivos PDF. Ele pode editar todo o documento, não só anotações.
Ainda tem a possibilidade de converter de PDF para Word.
Após instalar, desinstale a barra do ASK para não ficar incomodando.
Compatibilidade: MAC, Windows XP, Vista e 7
Licença: Freeware
Link: http://www.wondershare.com/pdf-editor/
Download:
Windows: http://download.wondershare.com/pdf-editor_full1042.exe
Mac (Free Trial):
Não só no Brasil, mas em alguns países o longo alcance de um roteador Wireless pode ser um problema, pois além de interferir em outros roteadores, os seus vizinhos podem querer usar ou bisbilhotar a sua rede Wireless.
Vale lembrar que alguns roteadores têm funções capazes de reduzir a potência.
Mas, além disso de acordo com ITProPortal foi desenvolvido uma papel de parede que bloqueia sinais WI-FI. Foi desenvolvido por cientistas do Instituto Politécnico de Grenoble (França) e do Centre Technique Du Papier.
O papel de parede contém partículas de prata que pelo padrão é capaz de filtrar três frequências de rádio simultaneamente.
A primeira tentativa a alguns anos atrás gerou um papel de custo em torno de 620 euros o metro quadrado, já essa nova versão tem o custo similar a um papel de parede de mesma espessura.
A previsão de venda é para 2013 assim que a empresa adquirir a licença.
Finalmente depois de longa espera e promessas contínuas o jogo Diablo III foi lançado e já se encontra em pré-venda. Em várias lojas você já pode encomendar.
A previsão é para o dia 07 de junho de 2012.
Para pré-venda tem camiseta extra e versão em português.
Em Curitiba o Link das Livrarias Curitiba para comprar:
http://www.livrariascuritiba.com.br/listgroup.aspx?idlistgroup=diblo%20iii
Continuando o post anterior, vou apresentar um software para verificar se o disco rígido já apresenta algum defeito.
O software CrystalDiskInfo é capaz de fazer o diagnóstico do disco rígido que suportam o S.M.A.R.T. e parte dos disco rígidos externos (USB-HDD).
Compatibilidade: Windows XP em diante
Licença: Freeware
Link: http://crystalmark.info/software/CrystalDiskInfo/index-e.html
Download: http://crystalmark.info/download/index-e.html#CrystalDiskInfo
Instalável:http://release.crystaldew.info/redirect.php?product=CrystalDiskInfoSetupEn
O disco rígido tem uma vida útil e como é um disco físico e de metal girando com um motor elétrico, depois de certo tempo o seu funcionamento pode falhar, mas quando é a hora certa para essa troca?
Se o disco rígido falhar e dentro dele tiver dados importantes que você não fez backup, você irá gastar um bom dinheiro para recuperar os dados (mais de R4 1.000,00).
Então como se precaver?
Primeiro, sempre faça backups regularmente em um DVD ou em um disco rígido externo.
Segundo, tem vários programas que fazer a avaliação do seu disco rígido e vai dizer o status dele. Em alguns computadores ao ligar o aviso é imediato desde que esteja habilitado o S.M.A.R.T na BIOS do seu computador.
Se tanto o programa ou a BIOS acusarem que há uma falha no seu disco rígido, o meu conselho é que o quanto antes vá a uma loja de informática e já compre outro disco rígido e faça a migração de um disco para o outro.
Com a dúvida de um leitor eu resolvi fazer uma versão completa para que ao receber um dado numérico, só aceite números e que tenha um limite de números.
Isso é muito bem aplicado, pois em um programa Pascal se você inserir uma letra em um programa que estava esperando um número o programa será interrompido.
Não descobri ainda uma solução simples, pois o controle tem de ser total do programa.
É claro que podemos colocar esse programa em uma função que facilita bastante em aplicações maiores.
Alguns já vão dizer: Para que tanto esforço para uma coisa dessas em Pascal?
Eu explico que: Esse programa é aplicado a várias outras liguagens de programação e é pela própria origem dos objetos do Windows.
Vamos ao programa:
Program NUMERO_LIMITADO;
Uses Crt;
Const
algarismos = ['0'..'9'];
backspace = chr(8);
enter = chr(13);
Var
tecla : Char;
resultado : String;
digitos : Byte;
numero : Integer;
erro : Integer;
Begin
ClrScr;
resultado := '';
Write ('Entre com um numero de 6 digitos:');
digitos := 0;
repeat
repeat
tecla := ReadKey;
until (tecla in algarismos) or (tecla=backspace) or (tecla=Enter);
if digitos < 6 then
if (tecla in algarismos) then
Begin
resultado := resultado + tecla;
Write (tecla);
digitos := digitos + 1;
End;
if (tecla = Backspace) then
Begin
if (digitos > 0) then
Begin
gotoXY (wherex-1,wherey);
clreol;
delete(resultado,Length(resultado),1);
digitos := digitos - 1;
End;
End;
until (digitos = 6) and (tecla = Enter);
WriteLn;
WriteLn ('Resultado:',Resultado);
ReadLn;
End.
Qualquer dúvida entre em contato.
©Template by Dicas Blogger.