terça-feira, 11 de setembro de 2012
Programas que utilizam procedures e functions - Pascal
{[pascal] Procedures – Exemplo de subrotina – Calculadora
Esse exemplo faz uma calculadora simples usando um procedimento
para cada operação. Também faz uso do Case, uma alternativas a
if (s) aninhados. }
Program CALCULADORA;
uses CRT;
var
opcao: char;
{ Sub-rotinas de calculos - Adição }
Procedure rot_adicao;
var
x, a, b: real;
Begin
clrscr;
gotoxy(32,01); write('Rotina de adição');
gotoxy(05,06); write('Entre um valor para A: '); readln(a);
gotoxy(05,07); write('Entre um valor para b: '); readln(b);
x:=a+b;
gotoxy(05,10); write('O resultado equivale a: ', x:6:2);
gotoxy(25,24); writeln('Pressione para voltar para o menu ');
readln;
end;
{---------------------------------------------------------------}
{ Sub-rotinas de calculos - Subtração }
Procedure rot_subtracao;
var
x, a, b: real;
Begin
clrscr;
gotoxy(32,01); write('Rotina de adição');
gotoxy(05,06); write('Entre um valor para A: '); readln(a);
gotoxy(05,07); write('Entre um valor para b: '); readln(b);
x:=a-b;
gotoxy(05,10); write('O resultado equivale a: ', x:6:2);
gotoxy(25,24); writeln('Pressione para voltar para o menu ');
readln;
end;
{----------------------------------------------------------------}
{ Sub-rotinas de calculos - Multiplicação}
Procedure rot_multiplicacao;
var
x, a, b: real;
Begin
clrscr;
gotoxy(32,01); write('Rotina de adição');
gotoxy(05,06); write('Entre um valor para A: '); readln(a);
gotoxy(05,07); write('Entre um valor para b: '); readln(b);
x:=a*b;
gotoxy(05,10); write('O resultado equivale a: ', x:6:2);
gotoxy(25,24); writeln('Pressione para voltar para o menu ');
readln;
End;
{----------------------------------------------------------------}
{ Sub-rotinas dee calculos - Divisão }
Procedure rot_divisao;
var
x, a, b: real;
Begin
clrscr;
gotoxy(32,01); write('Rotina de adição');
gotoxy(5, 6); write('Entre um valor para A: '); readln(a);
gotoxy(5, 7); write('Entre um valor para b: '); readln(b);
x:=a/b;
gotoxy(5,10); write('O resultado equivale a: ', x:6:2);
gotoxy(25,24); writeln('Pressione para voltar para o menu ');
readln;
end;
{----------------------------------------------------------------}
BEGIN { PROGRAMA PRINCIPAL}
textColor(yellow + blink); { altero a cor da fonte }
textBackground(BLUE); { altero a cor do plano de fundo }
clrscr;
opcao:='0';
while (opcao < '5') do
Begin
clrscr;
gotoxy(33,01); write('Menu principal');
gotoxy(22,06); write('1 Soma');
gotoxy(22,08); write('2 Subtracao');
gotoxy(22,10); write('3 Multiplicacao');
gotoxy(22,12); write('4 Divisao');
gotoxy(22,14); write('5 Fim de programa');
gotoxy(22,18); write('Escolha uma opcao ......: ');
readln(opcao);
Case opcao of
'1': rot_subtracao;
'2': rot_subtracao;
'3': rot_multiplicacao;
'4': rot_divisao
Else
Writeln('Byeee');
end;
end;
END.
{[pascal] Units São rotinas prontas para seremusadas pelo programador.
Unidades foram incorporadas com o intuirto deagrupar diversas rotinas básicas.
Uma unit é uma biblioteca de funções, procedimentose constantes. Em seguida
estão relacionadas as unidades compilador Free Pascal }
•CRT – variáveis de geração de som, controle de video e teclado
•DOS – permitem controles de baixo nivel, utilizando recursos do
sistema operacional DOS.
•GRAPH – manipulaçõa de capacidade gráfica de um PC
•OVERLAY – Gerencia atividades de um programa. (memória)
•PRINTER – usa a impressora como saída de informação
•SYSTEM – Rotinas padrão do Pascal. Não precisa ser declarada.
Como utilizar: Uses <unidade>
Procedimentos e Funções muito utilizadas em CRT
clrscr – (procedimento) – limpa a tela
gotoxy(coluna, lina) – (procedimento) – posiciona o cursosr em um ponto da tela.
Coluna de 1 a 80, linha de 1 a 25.
readkey – (função) – retorna o valor da tecla pressionada. Faz leiturade apenas
um caractere (e não é necessário pressionar <ENTER>)
{[pascal] Tipo Registro / type record Um exemplo de aplicações prática do tipo registro.
Esse exemplo lê o nome e as 4 notas de 8 alunos. Ordena em crescente pelo o nome e exibe um a um.}
program LEITURA_ORDENACaO_ESCRITA;
type
bimestre = array[1..4] of real;
cad_aluno = record
nome: string;
nota: bimestre;
end;
var
aluno : array[1..8] of cad_aluno;
i, j, atual, proximo : byte;
x : cad_aluno;
BEGIN
{Rotima de entrada de dados}
writeln('CADASTRO DE ALUNOS');
writeln;
for j:= 1 to 8 do
Begin
write('Informe o nome do ', j:2, 'o. aluno :'); readln(aluno[j].nome);
writeln;
for i:=1 to 4 do
Begin
write(' Informe a ', i:2, 'a. nota :'); readln(aluno[j].nota[i]);
end;
writeln;
end;
writeln;
{Rotina de ordenação}
for atual:=1 to 7 do
Begin
for proximo:= atual+1 to 8 do
Begin
if (aluno[atual].nome > aluno[proximo].nome) then
Begin
x:= aluno[atual];
aluno[atual] := aluno[proximo];
aluno[proximo] := x;
end;
end;
end;
{Rotina de saída }
writeln;
for j:= 1 to 8 do
Begin
writeln('Nome aluno: ', j:2, ' : ', aluno[j].nome);
writeln;
for i:= 1 to 4 do
Begin
writeln('Nota ', i, ' : ', aluno[j].nota[i]:5:2);
end;
Writeln;
writeln('Tecle para ver o proximo: '); readln;
end;
writeln;
writeln('Tecle para encerrar: '); readln;
END.
{[free pascal] Estruturas de dados heterogêneas 1}
program LEITURA_ESCRITA;
type
Bimestre=array[1..4] of real;
cadaluno = record
nome: string;
nota: bimestre;
end;
var
aluno: cadaluno;
i: byte;
BEGIN
writeln(‘Cadastro de aluno’);
writeln;
write(‘Informe o nome … : ‘); readln(aluno.nome);
writeln;
for i:= 1 to 4 do
Begin
write(‘Informe a ‘, i:2, ‘a. nota .. : ‘);
readln(aluno.nota[i]);
end;
writeln;
writeln;
writeln(‘Nome …: ‘, aluno.nome);
writeln;
for i:= 1 to 4 do
Begin
writeln(‘Nota ‘, i, ‘ : ‘, aluno.nota[i]:5:2);
end;
writeln;
writeln(‘Tecle <ENTER> para encerrar: ‘); readln;
END.
{[free pascal] Matriz com duas dimensões ex.2 O exemplo abaixo
é um programa de agenda. Possui uma tabela com 5 colunas com
os dados (nome, endereco, cepo, bairro e telefone) e 10 linhas
(com os nomes dos cadastrados).}
program AGENDA;
var
dado : array[1..10, 1..5] of string;
i, j, atual, proximo : integer;
x : string;
BEGIN
{Rotina de entrada}
writeln(‘Programa agenda’);
writeln;
for i:=1 to 10 do
Begin
write(‘Nome …..:’); readln(dado[i,1]);
write(‘Endereco..:’); readln(dado[i,2]);
write(‘CEP… …..:’); readln(dado[i,3]);
write(‘Bairro…..:’); readln(dado[i,4]);
write(‘Telefone..:’); readln(dado[i,5]);
writeln;
end;
{Ordenação e troca de elementos}
for atual:=1 to 9 do
Begin
for proximo:=atual+1 to 10 do
Begin
{troca nome}
x:=dado[atual,1];
dado[atual, 1]:= dado[proximo,1];
dado[proximo, 1]:=x;
{troca endereco}
x:=dado[atual,2];
dado[atual, 2]:= dado[proximo,2];
dado[proximo, 2]:=x;
{troca CEP}
x:=dado[atual,3];
dado[atual, 3]:= dado[proximo,3];
dado[proximo, 3]:=x;
{troca Bairro}
x:=dado[atual,4];
dado[atual, 4]:= dado[proximo,4];
dado[proximo, 4]:=x;
{troca Telefone}
x:=dado[atual,5];
dado[atual, 5]:= dado[proximo,5];
dado[proximo, 5]:=x;
end;
end;
{Saida de dados}
for i:=1 to 10 do
Begin
for j:=1 to 5 do
Begin
writeln(dado[i,j]);
end;
writeln;
end;
writeln(‘Tecle <ENTER> para encerrar: ‘); readln;
END.
{[free pascal] Exemplo de matriz com duas dimensões
O exemplo abaixo se trata de uma tabela, onde são
inseridas e exibidas 4 notas de 8 alunos.}
program NOTA_ALUNO;
var
notas : array [1..8, 1..4] of real;
i,j : integer;
BEGIN
writeln(‘Leitura e aporesentação de notas’);
writeln;
for i:=1 to 8 do
Begin
writeln;
writeln(‘Entre as notas do ‘, i:2, ‘o. aluno’);
for j:=1 to 4 do
begin
writeln(‘Nota ‘, j:2, ‘: ‘);
readln(notas[i,j]);
end;
end;
writeln;
for i:=1 to 8 do
Begin
write(‘As notas do aluno ‘, i:2, ‘são: ‘);
for j:=1 to 4 do
Begin
write(notas[i,j]:5:2, ‘ ‘);
writeln;
end;
end;
writeln;
writeln(‘Tecle <enter> para encerrar: ‘); readln;
END.
{[free pascal] Métodos de Pesquisa 2: Pesquisa binária
Dividir e conquistar é o lema desse método. Ordena os
dados para localiza-lo posteriormente usando o método
de pesquisa binária.}
{
1. Iniciar um contador, pedir a leitura de dez nomes e colocalos em ordem alfabetica
2. Criar um looping que efetue a pesquisa enquanto o usuario desejar
Durante a fase de pesquisa, deve ser solicitada a informação a ser pesquisada.
Essa informação deve ser comparada, utilizando o método de pesquisa binária
Sendo igual, mostra; caso contrário, avança para o próximo. Senão achar em toda lista,
informar que não existe o lelemneto pesquisado; se existir, deve mostra-lo
3. Encerrar a pesquisa quando desejando
}
program PESQUISA_BINARIA;
var
nome : array [1..10] of string;
i, j : integer;
comeco, final, meio: integer;
pesq, resp, x: string;
acha: boolean;
BEGIN
writeln(‘Pesquisa binaria de nomes: ‘);
writeln;
for i:=1 to 10 do
begin
write(‘Digite o ‘, i:2, ‘o nome: ‘); readln(nome[i]);
end;
{Ordenando os nomes }
for i:= 1 to 9 do
for j:= i+1 to 10 do
if (nome[i] > nome[j]) then
begin
x:= nome[i];
nome[i]:=nome[j];
nome[j]:=x;
end;
{Pesquisando..}
resp:=’sim’;
while (resp=’sim’) or (resp=’SIM’) do
begin
writeln;
write(‘Entre o nome a ser pesquisado: ‘); readln(pesq);
comeco:=1;
final:=10;
acha:=false;
while (comeco <=final) and (acha=false) do
begin
meio:=(comeco+final) div 2;
if (pesq=nome[meio]) then
acha:=true
else
if (pesq < nome[meio]) then
final:=meio-1
else
comeco:=meio+1;
end;
if (acha=true) then
writeln(pesq, ‘ foi localizado na posicao ‘, meio:2)
else
writeln(pesq, ‘ não foi localizado’);
writeln;
write(‘Deseja continuar? sim/nao: ‘);
readln(resp);
end;
END.
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário