ALGORITMO
Exemplos de Lógica em Pascal
Exemplos de Programas de Pascal
Algoritmo não é a solução de um problema, pois, se assim fosse, cada problema teria um único algoritmo. Algoritmo é um caminho para a solução de um problema, e em geral, os caminhos que levam a uma solução são muitas. O aprendizado de algoritmos não se consegue a não ser através de muitos exercícios.
Algoritmos não se aprende:
- Copiando Algoritmos
- Estudando Algoritmos
Algoritmos só se aprendem:
- Construindo Algoritmos
- Testando Algoritmos
Fases de um Algoritmo
Quando temos um problema e vamos utilizar um computador para resolvê-lo inevitavelmente temos que passar pelas seguintes etapas:
a) Definir o problema;
b) Realizar um estudo da situação atual e verificar quais a(s) forma(s) de resolver o problema;
c) Terminada a fase de estudo, utilizar uma linguagem de programação para escrever o programa que deverá a princípio, resolver o problema;
d) Analisar junto aos usuários se o problema foi resolvido. Se a solução não foi encontrada, deverá ser retornado para a fase de estudo para descobrir onde está a falha.
Estas são de forma bem geral, as etapas que um analista passa, desde a apresentação do problema até a sua efetiva solução. Iremos, neste curso, nos ater as etapas de estudo, também chamada de análise, e a etapa de programação. Mas antes vamos definir o seguinte conceito: Programar um computador consiste em elaborar um conjunto finito de instruções, reconhecidas pela máquina, de forma que o computador execute estas instruções. Estas instruções possuem regras e uma Sintaxe própria, como uma linguagem tipo português ou inglês, sendo isto chamadas de linguagem de computador.
Estrutura de Algoritmos
Antes de utilizarmos uma linguagem de computador, é necessário organizar as ações a serem tomadas pela máquina de forma organizada e lógica, sem nos atermos as regras rígidas da Sintaxe de uma linguagem. Para isto utilizaremos uma forma de escrever tais ações, conhecida como algoritmo, ou pseudo-código.
Conceituando: Algoritmo consiste em um conjunto lógico e finito de ações ( instruções ) que resolvem um determinado problema.
Os algoritmos terão a seguinte estrutura:
ALGORITMO <Nome do algoritmo>
<definições>
INÍCIO
<Comandos>
FIM
Em Pascal ficaria da seguinte forma:
PROGRAM <Nome do programa>;
<definições>
BEGIN
<Comandos>;
END.
Variável corresponde a uma posição de memória. Cada variável armazena uma informação de um dos tipos de dados apresentados. Cada variável possui um nome(identificador);
Uma variável é formado por uma letra ou então por uma letra seguida de letras ou dígitos, em qualquer número. Não é permitido o uso de espaços em branco ou de qualquer outro caractere, que não seja letra ou dígito, na formação de um identificador.
Na formação do nome da variável de um nome significativo, para que se possa ter idéia do seu conteúdo sem abri-lá. Se utilizar palavras para compor o nome da variável utilize o "_ " underline para separar as palavras.
Quando definimos uma variável é natural atribuirmos a ela uma informação. Uma das formas de colocar um valor dentro de uma variável, consequentemente colocado este dado na memória do computador, é através da atribuição direta, do valor desejado que a variável armazena. Para isto utilizaremos o símbolo ( : = (Pascal) , ¬ (Algoritmo) ), que significa: recebe, ou seja, a posição, de memória que uma variável representa, receberá uma informação, a qual será armazenada no interior desta variável.
Tipos de Dados:
CHAR:
O tipo char corresponde a todos os caracteres que podem ser gerados pelo teclado tais como dígitos, letras e símbolos tais como &, #,* etc. Os caracteres devem vir entre aspas simples.
BOOLEAN:
O tipo boolean só pode assumir os valores FALSE e TRUE.
STRING:
Este tipo é chamado de estruturado ou composto pois é constituído a partir de um tipo simples que é o char. O tipo string é composto por um conjunto de caracteres entre aspas simples, exemplos:
'isto é uma string'
'123456' etc.
Tipo |
Faixa |
Formato |
Shortint Integer Longint Byte Word |
-128..127 -32768...32767 -2147483648..2147483647 0..255 0..65535 |
Signed 8-bit Signed 16-bit Signed 32-bit Unsigned 8-bit Unsigned 16-bit |
Tipo |
Faixa |
Dígitos |
Bytes |
Real Single Double Extended Comp |
2.9-39..1.738 1.5-45..3.438 5.0-324..1.7308 3.4-4932..1.14932 -9.218..9.218 |
11-12 7-8 15-16 19-20 19-20 |
6 4 8 10 8 |
Exemplos de Lógica em PascalFazer um programa para calcular o consumo de um veículo(km por litro). São dados: Quilometragem Inicial, Quilometragem final e Consumo.
Algoritmo Calcula_Consumo;
Real : kmini, kmfim, consumo, kmlitro;
Início
Leia(kmini, kmfim, consumo);
kmlitro <- (kmfim-kmini) / consumo;
imprima(kmlitro);
Fim.Fazer um algoritmo para calcular valores em reais a partir de valores em dólares(conversão de moeda). São dados: Quantia em dólares e cotação do dólar.
Algoritmo Calcula_Valor_Real;
Real : tovalreal, totdolar, cotdolar;
Início
Leia(totdolar,cotdolar);
Totvalreal <- totdolar * cotdolar;
Imprima(totvalreal);
Fim.Construir um algoritmo para calcular o valor de uma conta de luz, sendo dados: Nome do Consumidor, Quantidade de KWATS/HORA consumidos. Sabe-se que a taxa(fixa) é de R$ 10,00 e o valor é de R$ 0,15 por KWATS/HORA. Imprima: Nome do consumidor, Consumo e valor da conta.
Algoritmo Conta_de_Luz;
Cadeia : Consumidor;
Real : kwh, valor;
Início
Leia(consumidor,kwh);
Valor <- 10 + kwh * 0,15;
Imprima(consumidor,kwh,valor);
Fim.Desenvolver um algoritmo para calcular o preço final de um produto, sendo dados: preço normal da mercadoria e taxa de desconto.
Algoritmo Preço_Final;
Real : preço, taxa, desconto;
Início
Leia(preço,taxa);
Desconto <- preço preço * taxa /100;
Imprima(desconto);
Fim.Construir um algoritmo para calcular o montante de um capital aplicado, sendo informado: valor do capital e rendimento(%).
Algoritmo Calcula_Montante;
Real : capital, rendimento, montante;
Início
Leia(capital,rendimento);
Montante <- capital + capital * rendimento / 100;
Imprima(montante);
Fim.Fazer um algoritmo para calcular o valor do desconto do imposto de renda em um salário bruto até R$ 500 isento(Acima de R$900 10% de desconto. Imprimir o valor do desconto e o salário líquido.
Algoritmo Calcula_Imposto_Renda;
Exemplo de Programas de Pascal
Real : salbruto, desconto, salliq;
Início
Leia(salbruto);
Se salbruto <= 900 então
Desconto <- 0;
Senão
Desconto <- Salbruto * 0,1;
Fim_Se;
Fim.Uma empresa paga para seus vendedores um valor por km rodado que depende da quilometragem da viagem.
Tabela de Valores de Taxas:
KM Valor
Até 200Km R$ 0.50
Acima de 200 600Km R$ 0.40
Acima de 600Km R$ 0.30
Faça um programa que leia o nome do viajante, a quilometragem da viagem e mostre na tela o nome do viajante e o valor a receberProgram Calcula_Kilometragem;
Uses Crt;
Var
km, valor : real;
nome : string[40];
Begin
Textbackground(1);
Textcolor(15);
clrscr;
Write('Digite Nome Viajante: ');
Readln(nome);
Write('Digite KM Rodados: ');
Readln(km);
If km <= 200 then
valor := km * 0.50
else
if km > 600 then
valor := km * 0.30
else
valor := km * 0.40;
Write('Nome Viajante: ',nome,' Valor a Receber: ',valor:6:2);
readkey;
End.
Fezer um programa para calcular o salário de um funcionário. São dados o nome do funcionário, valor hora e quantidade de horas trabalhadas. Calcular e mostrar o Salário Total do Funcionário.Program Calcula_salario;
Uses crt;
Var
nomefunc : string[40];
numhoras, valorhora, TotalGeral : real;
Begin
clrscr;
Write('Digite Nome Funcionário: ');
Readln(nomefunc);
Write('Digite Número de Horas: ');
Readln(numhoras);
Write('Digite Valor Hora: ');
Readln(valorhora);
TotalGeral := numhoras * valorhora;
Write('Nome do Funcion rio: ',nomefunc,' Salário Total: ',totalgeral:6:2);
readkey;
End.Fazer um programa para controlar a entrada de funcionários numa empresa. São fornecidos o nome da pessoa e o departamento. Dentro desta empresa existem 4 departamentos(Pessoal, Finaceiro, Jurídico e Comercial).Caso a pessoa for de um dos dptos fazer a respectiva contagem. Ao final mostrar a quantidade de pessoas de cada departamento
Program Entrada;
uses crt;
var
codigo,cont,cont1,cont2,cont3,cont4 : integer;
idade,media,somaidade : real;
nome,departamento : string[40];
begin
textbackground(1);
clrscr;
textcolor(15);
writeln(' Loucos S/A');
textcolor(5);
write('Código: '); readln(codigo);
write('Nome: '); readln(nome);
write('Idade: '); readln(idade);
write('Departamento: '); readln(departamento);
textcolor(8);
cont:=cont+1;
if departamento='Pessoal' then
writeln('Funcionários do Departamento Pessoal: ',cont1+1)
else
if departamento='Financeiro' then
writeln('Funcionários do Departamento Financeiro: ',cont2+1)
else
if departamento='Jurídico' then
writeln('Funcionários do Departamento Jurídico: ',cont3+1)
else
writeln('Funcion rios do Departamento Comercial: ',cont4+1);
somaidade:=somaidade+idade;
media:=somaidade/cont;
write('Média das Idades: ',media:2:2);
readkey;
end.Fazer um programa para calcular o valor do desconto do imposto de renda em um salário. São fornecidos o nome do Funcionário; Salário bruto até R$ 900 é isento; acima de R$ 900 até R$ 1800 desconto de 20%; acima de 1800 desconto de 30%. Mostrar na tela o Nome do Funcionário, Desconto e o Sal rio Líquido
Program Calcula_Salario_Liquido;
Uses Crt;
Var
nome : string[4];
saliq, desconto, salbruto : real;
Begin
Textbackground(1);
Textcolor(15);
clrscr;
Write('Digite Nome Funcinário: ');
Readln(nome);
Write('Digite Sal rio Bruto: ');
Readln(salbruto);
If salbruto <= 900 then
desconto := 0
else
if salbruto > 1800 then
desconto := salbruto * 0.30
else
desconto := salbruto * 0.20;
Saliq := salbruto - desconto;
Write('Nome Funcinário: ',nome,' Desconto: ',desconto:6:2,
' Sal rio L¡quido: ',saliq:6:2);
readkey;
End.Case - Esta Instrção nos permite selecionar uma opção baseada no valorde uma vari vel ou expressão
Sintaxe:
Case <expressão ou variável> of
<valor1> : Comando_1;
<valor2> : Comando_1;
...
<valorn> : Comando_n;
End;Fazer um programa para identificar o sexo e a idade das pessoas da cidade de Indaial. São fornecidos o nome da pessoa, sexo e idade. Caso o sexo digitado for M, F ou I fazer uma contagem dos sexos digitados. Se a idade das pessoas for maior ou igual a 50 enviar uma mensagem do tipo 'Pessoas da Segunda Idade e somar as idades. Se a idade for menor de 50 mostrar uma mensagem do tipo 'Pessoas na flor da idade' e tambm fazer a respectiva somatória das idades. Ao final mostrar a mdia das idades e dos sexos.
Program Calc_Sexo;
Uses crt;
Var
nome : string[40];
sexo : char;
idade, somaidades, mediasexo, mediaidade : real;
contasexo : integer;
Begin
textcolor(47);
textbackground(1);
clrscr;
writeln(' !! Medias !!');
textcolor(3);
write('Digite seu nome: '); readln(nome);
write('Digite seu sexo (m/f/i): '); readln(sexo);
write('Digite sua idade: '); readln(idade);
case sexo of
'm' : begin
writeln('Sexo: Masculino!');
contasexo:=contasexo+1;
writeln('Masculino:',contasexo);
end;
'f' : begin
writeln('Sexo: Feminino');
contasexo:=contasexo+1;
writeln('Feminino: ',contasexo);
end;
'i' : begin
writeln('Sexo: Indefinido');
contasexo:=contasexo+1;
writeln('Indefinido: ',contasexo);
end;
end;
mediasexo:=contasexo;
if idade >50 then
begin
writeln('Pessoas da segunda idade!');
somaidades:=somaidades+idade;
end
else
begin
writeln('Pessoas na flor da idade');
somaidades:=somaidades+idade;
end;
mediaidade:=idade/somaidades;
writeln('Média sexos: ',mediasexo:6:2);
writeln('Média idades: ',mediaidade:6:2);
readkey;
end.Fazer um programa utilizando a instrução case que calcula a soma(+), ou a multiplicação(*), ou a subtração(-), ou a divisão(/) entre dois números lidos do teclado.
Program Calculadora;
Uses Crt;
Var
num1, num2 : real;
sinal : char;
Begin
textcolor(15);
Textbackground(1);
clrscr;
Write('Digite 1º Número: ');
Readln(num1);
Write('Digite 2º Número: ');
Readln(num2);
Writeln;
Write('Digite Sinal de Operação: ');
sinal:=readkey;
Writeln(sinal);
Writeln;
Case sinal of
'+': Write('Soma dos valores -> Num1 + Num2: ',num1+num2:6:2);
'-': Write('Diferença dos valores -> Num1 - Num2:',num1-num2:6:2);
'*': Write('Multiplicação dos valores -> Num1 * Num2:',num1*num2:6:2);
'/': Write('Divisão dos valores -> Num1 / Num2: ',num1/num2:6:2);
Else
Write(sinal,' Não é Sinal de Operação');
end;
Readkey;
End.Para -> Realiza um looping(repetição ou laço) a partir de um número determinado de vezes. O looping ser realizado no m¡nimo uma vez
Sintaxe:
Para X de Y at Z Faça
Comando1;
Comando2;
...
ComandoN;
Fim_Para;Fazer um programa para calcular a mdia de 8 alunos de uma determinada turma. São fornecidos o número do contrato, o nome e suas três notas.Para cada aluno digitado mostrar sua média. Ao final mostrar a mdia Geral da turma.
Program Media_for;
Uses Crt;
Var
ctr, x : integer;
nome : string[40];
nota1, nota2, nota3, media, somanota, mediageral : real;
Begin
Textbackground(1);
Textcolor(15);
clrscr;
For x:=1 to 5 do
begin
writeln;
Write('Digite Contrato..[',x,']: '); Readln(ctr);
Write('Digite Nome aluno[',x,']: '); Readln(nome);
Write('Digite Nota1.....[',x,']: '); Readln(nota1);
Write('Digite Nota2.....[',x,']: '); Readln(nota2);
Write('Digite Nota3.....[',x,']: '); Readln(nota3);
writeln;
media := (nota1 + nota2 + nota3) /3;
somanota := somanota + media;
end;
mediageral := somanota /5;
Write('Mdia Geral da Turma: ',mediageral:6:2);
readkey;
End.A conversão de graus Farenheit para Centígrados é obtida por Cent¡grados = 5 * (Farenheit - 32) /9. Fazer um programa para calcular e mostrar uma tabela de graus cent¡grados em função de graus Farenheit, que variam de 50 a 150.
Program Media_for;
Uses Crt;
Var
f : integer;
c : real;
Begin
Textbackground(1);
Textcolor(15);
clrscr;
For f := 50 to 70 do
Begin
c := 5 * (f - 32) /9;
Writeln(c:6:2);
End;
readkey;
End.
Program Dados; Uses Crt; Var alt, mediaf, menoralt, somaltf, maioralt : real; contf, conth, x : integer; sexo : char; Begin clrscr; menoralt := 3; maioralt := 0; For x:=1 to 6 do Begin Write('Digite Sexo (f,m): '); Readln(sexo); Write('Digite Altura....: '); Readln(alt); If alt > maioralt then maioralt := alt; If alt < menoralt then menoralt := alt; If sexo = 'f' then Begin somaltf := somaltf + alt; inc(contf); End else inc(conth);
End; mediaf := somaltf / contf; Writeln('Média Sexo Feminino.: ',mediaf); Writeln('Maior Altura........: ',maioralt); Writeln('Menor Altura........: ',menoralt); Writeln('Quantidade de Homens: ',conth); End.
Fazer um programa que leia um número indeterminado de valores nome, sobrenome e telefone). Fazer a cocatenação no nome com o sobrenome. Se o nome digitado for igual a 'fim' calcular e mostrar a idade média do grupo de indiv¡duos e a maior idade encontrada
Program Valores_Indeterminados;
Uses crt;
Var
nome, sobrenome : string[15];
juncao : string[40];
idade, somaidade, mediaidade, maioridade : real;
cont : integer;
Begin
textcolor(15);
Textbackground(1);
clrscr;
maioridade := 0;
Gotoxy(05,05);
Write('Digite Nome: '); Readln(nome);
while nome <> 'fim' do
Begin
Gotoxy(05,06);
Write('Digite Sobrenome: '); Readln(sobrenome);
Gotoxy(05,07);
Write('Digite Idade: '); Readln(idade);
If idade > maioridade then
Begin
maioridade := idade;
somaidade := somaidade + Idade;
inc(cont);
End;
juncao := concat(nome,' ',sobrenome);
Gotoxy(05,08);
Write('Nome Completo: ',juncao);
readkey;
clrscr;
Gotoxy(05,05);
Write('Digite Nome: '); Readln(nome);
End;
if cont <> 0 then
Begin
mediaidade := somaidade / cont;
Gotoxy(05,09);
write('A média da Idade : ',mediaidade:6:2);
end
else
begin
write('O contador não pode ser Zero');
end;
Gotoxy(05,10);
write('A maior Idade : ',maioridade:6:2);
readkey;
End.
Program Salario_Total;
Uses Crt;
Var
salfixo, totvendas, percentual, saltotal, salmedio, maiorsalario,
somasal : real;
numvend, contvend : integer;
Begin
textcolor(15);
textbackground(1);
clrscr;
maiorsalario := 0;
Gotoxy(05,05);
Write('Digite Número Vendedor: ');
Readln(numvend);
while numvend <> 0 do
Begin
Gotoxy(05,06);
Write('Salário Fixo: '); Readln(salfixo);
Gotoxy(05,07);
Write('Total de Vendas: '); Readln(totvendas);
Gotoxy(05,08);
Write('Percentual: '); Readln(percentual);
saltotal := (salfixo + totvendas) * percentual/100;
Gotoxy(05,09);
Write('Número Vendedor: ',numvend, ' Total salário: ',saltotal);
If saltotal > maiorsalario then
Begin
maiorsalario := saltotal;
end;
inc(contvend);
somasal := somasal + saltotal;
clrscr;
Gotoxy(05,05);
Write('Digite Número Vendedor: '); Readln(numvend);
end;
salmedio := somasal/contvend;
Gotoxy(05,10);
Write('Salário Médio Vendedor:
',salmedio:6:2);
Gotoxy(05,11);
Write('Maior Salário:
',maiorsalario:6:2);
readkey;
end.
Fazer um programa para Concatenar duas Palavras. São fornecidas a
1ª Palvra e a 2ª Palavra.
Program Concatena;
Uses Crt;
Var
frase : string;
palavra1 : string;
palavra2 : string;
Begin
textcolor(15);
textbackground(1);
clrscr;
Gotoxy(05,05);
Write('Digite 1ª palavra: ');
Readln(palavra1);
Gotoxy(05,07);
Write('Digite 2ª palavra: ');
Readln(palavra2);
frase := Concat(palavra1,' ',palavra2);
Gotoxy(05,08);
write(frase);
readkey;
End.
Program populacao;
Uses crt;
Var
popa, popb : real;
numanos : integer;
Begin
textcolor(15);
textbackground(1);
clrscr;
popa := 900000000;
popb := 200000000;
numanos := 0;
while popb <= 900000000 do
Begin
popa := popa + (popa * 3/100);
popb := popb + (popb * 1.5/100);
inc(numanos);
end;
write('Quantidade de Anos: ',numanos);
readkey;
End.
Construir um programa para calcular e imprimir o valor da raiz quadrada de um numero informado. Continuar com a execucao enquanto nao for digitado 0 para o numero}
Program RaizQuadrada;
Uses Crt;
var
numero : real;
Begin
textbackground(1);
textcolor(15);
clrscr;
gotoxy(5,5);
Write('Digite Numero: ');
Read(numero);
Repeat
gotoxy(5,6);
Write(sqrt(numero):6:2);
textbackground(1);
textcolor(15);
gotoxy(5,5);
Write('Digite Numero: ');
Read(numero);
Until numero = 0;
End.
Program Calc_Fatorial;
Uses Crt;
Var
fatorial : real;
contador, numero : integer;
continua : char;
Begin
textcolor(15);
textbackground(1);
clrscr;
fatorial := 1;
numero := 0;
repeat
Begin
gotoxy(05,05); write('Informe um numero: '); Readln(numero);
fatorial := 1;
for contador :=1 to numero do
Begin
fatorial := fatorial * contador;
End;
gotoxy(05,06); write('O fatorial : ',fatorial:6:2);
gotoxy(05,07); write('Deseja Continuar? (s/n):'); Readln(continua);
clrscr;
End;
until (continua <> 's');
End.
- A maior torcida;
- A media da idade de cada torcida;
- O percentual de torcedores do sexo feminino do palmeiras em relacao ao total de mulheres
e
- O percentual de torcedores do sexo masculino do Vasco da Gama em relacao ao total de
homens.
OBS: Foram entrevistadas 50 pessoas}
Program Times_Futebol;
Uses Crt;
Var
idade, percf, percm, somapalmeiras, mediavasco,
mediapalmeiras, somavasco : real;
totf, totm, contpalmeiras, contvasco, x, time,
totpalmeirasf, totvascom : integer;
sexo : char;
maiortorcida : string[15];
Begin
textcolor(15);
textbackground(1);
clrscr;
For x := 1 to 5 do
Begin
gotoxy(05,05);
Write('Digite
Time("1" - Vasco da Gama ou "2" - Palmeiras:
');
Readln(time);
gotoxy(05,06);
Write('Digite Sexo (f ou m): '); Readln(sexo);
gotoxy(05,07);
Write('Digite Idade: ');
Readln(idade);
Case time of
1 : Begin
inc(contvasco);
somavasco := somavasco + idade;
If sexo = 'm' then
inc(totvascom);
End;
2 : Begin
inc(contpalmeiras);
somapalmeiras := somapalmeiras + idade;
If sexo = 'f' then
inc(totpalmeirasf);
End;
end;
If sexo = 'f' then
inc(totf)
else
inc(totm);
clrscr;
End;
percf := totpalmeirasf/totf*100;
percm := totvascom/totm*100;
If contvasco > contpalmeiras then
maiortorcida := 'Vasco da Gama'
else
maiortorcida := 'Palmeiras';
mediavasco := somavasco / contvasco;
mediapalmeiras := somapalmeiras / contpalmeiras;
gotoxy(05,08); Write('Media Idade Vasco....:',mediavasco:6:2);
gotoxy(05,09); Write('Media Idade Palmeiras:',mediapalmeiras:6:2);
gotoxy(05,10); Write('Percentual Feminino do Palmeiras.....: ',percf:6:2);
gotoxy(05,11); Write('Percentual Masculino do Vasco da Gama: ',percm:6:2);
gotoxy(05,12); Write('Maior Torcida: ',maiortorcida);
readkey;
End.
Imagine que nós precisemos declarar 100 variáveis do tipo integer, isso poderia ser
feito da seguinte forma:
Var i1,i2,i3,i4,...,i100 : Integer;
Embora isso pareça uma brincadeira (de mal gosto), possível. Mas podemos também dizer que um grande incômodo. E se além dessas 100 variáveis, precisarmos também 1000 do tipo Char ou 2000 ou ... . Como podemos ver, as coisas podem se complicar. Mas para quem acessa BBS, coisa de louco, então o cara pode achar MUITO LEGAL. (:-))
Turbo Pascal nos fornece um tipo de dado estruturado chamado Array, que nos permite criar um grande número de variáveis de determinado tipo, sem os inconvenientes anteriores.
Exemplo 1:
Type Arranjo = Array[1..100] of Integer;
Var i : Arranjo;
ou
Var i : Array[1..100] of Integer;
Após a declaração acima, teríamos definidas 100 variáveis do tipo Integer, cujos nomes seriam:
i[1] - i[2] - i[3] - . . . - i[100]
Exemplo 2:
Type
faixa = 1..2000;
Arranjo = Array[faixa] Of Char;
Var
Arranjo_simples : Arranjo;
Após as declarações acima, teríamos definidas 2000 variáveis do tipo char com o nome Arranjo_simples.
Fazer um programa que leia 10 numeros inteiros do teclado e os escreve na tela ao contrario do que foram lidos
Program arqarray;
Uses Crt;
Var
vetor : Array[1..10] of Integer;
x : Integer;
Begin
ClrScr;
For x:=1 to 10 do
Begin
Write('vetor[',x,']:
');
Readln(vetor[x]);
End;
ClrScr;
For x:=10 downto 1 do
writeln(vetor[x]);
readkey;
End.
Fazer um programa que leia 10 nomes e idades do teclado e ao final mostre o nome da pessoa com a maior idade.
Program array_Maior_Idade;
Uses Crt;
type
faixa = 1..10;
Var
Nomes : Array[faixa] of string[30];
Idade : Array[faixa] of integer;
x, maioridade : Integer;
Nomemaioridade : string[30];
Begin
textcolor(15);
textbackground(1);
ClrScr;
MaiorIdade := 0;
For x:=1 to 10 do
Begin
Write('Digite ',x:2,'º Nome: '); Readln(nomes[x]);
Write('Digite Idade...: '); Readln(idade[x]);
if idade[x] > maioridade then
Begin
maioridade := idade[x];
nomemaioridade := nomes[x];
End;
End;
ClrScr;
Writeln('Nome da pessoa com Maior Idade:
',nomemaioridade);
Writeln('A Maior Idade da Pessoa e.....:
',maioridade,' anos.');
readkey;
End.
Program Array_Media_Alunos;
Uses crt;
type
faixa = 1..5;
Var
nome : array[faixa] of string[30];
nota1: array[faixa] of real;
nota2: array[faixa] of real;
nota3: array[faixa] of real;
menormedia, maiormedia, media, mediageral, somamedia
:real;
x : integer;
nomemenormedia, nomemaiormedia : string[30];
Begin
textcolor(1);
textbackground(15);
clrscr;
maiormedia := 0;
menormedia := 99;
somamedia := 0;
for x:=1 to 5 do
Begin
Writeln('Öndice[',x,']');
Write('Digite Nome.: '); Readln(nome[x]);
Write('Digite Nota1: '); Readln(nota1[x]);
Write('Digite Nota2: '); Readln(nota2[x]);
Write('Digite Nota3: '); Readln(nota3[x]);
media := (nota1[x] + nota2[x] + nota3[x])/3;
If media > maiormedia then
Begin
maiormedia := media;
nomemaiormedia :=
nome[x];
End;
If media < menormedia then
Begin
menormedia := media;
nomemenormedia :=
nome[x];
End;
Writeln('Media: ',media:6:2);
readkey;
clrscr;
somamedia := somamedia + media;
End;
mediageral := somamedia / x;
clrscr;
For x :=1 to 5 do
Begin
Writeln('Nome nº',x,']',nome[x]);
Writeln('Nota1: ',nota1[x]:6:2);
Writeln('Nota2: ',nota2[x]:6:2);
Writeln('Nota3: ',nota3[x]:6:2);
End;
Writeln('Media Geral: ',mediageral:6:2);
Writeln('Nome Aluno com Maior Media:
',nomemaiormedia,'Mdia: ',maiormedia:6:2);
Writeln('Nome Aluno com Menor Media: ',nomemenormedia,'Mdia:
',menormedia:6:2);
readkey;
End.
Uma das técnicas mais utilizadas e tida como vantajosa na confecção de programas grandes a modularização. Consiste em dividir o programa em diversos módulos ou sub-programas, de certa forma independentes uns dos outros. Existe um módulo que o principal, a partir do qual são chamados os outros módulos, esse módulo recebe o nome de programa principal, enquanto que os outros são chamados de sub-programas. No sistema Turbo Pascal, existem dois tipos de sub-programas, a saber:
- Procedures (procedimentos)
- Functions (funções)
A procedure como se fosse um programa. Ela tem a estrutura praticamente igual a de um programa, como veremos mais adiante. A procedure deve ser ativada(chamada) pelo programa principal ou por uma outra procedure, ou até por ela mesma.
Uma procedure tem praticamente a mesma estrutura de um programa, ou seja, ela contém um cabeçalho, área de declarações e o corpo da procedure. Na área de declarações, podemos ter as seguintes sub-áreas:
Label - Const - Type - Var - Procedures - Functions.
Devemos salientar que tudo que for declarado dentro das sub-áreas só ser reconhecido dentro da procedure. Mais para frente, voltaremos a falar sobre isso.
{Fazer um programa que preencha a tela inteira com asterisco(*)}
Program Asterisco; (* cabecalho do programa *)
Uses CRT;
Procedure linha; (* cabecalho da procedure linha *)
Var
x : integer; (* sub-area Var da procedure linha *)
y : integer;
Begin (* corpo da procedure linha *)
for x:=1 to 80 do
for y:=1 to 25 do
write('*');
End;
Begin (* corpo do programa principal *)
ClrScr;
linha; (* ativacao da procedure linha *)
readkey;
End.
{Elaborar um programa utilizando passagem de parametros para fazer asoma de dois valores}
Program Somatoria;
Uses CRT;
Var
x,y:integer;
Procedure soma(x,y:integer);
Begin
writeln(x+y);
end;
Begin
ClrScr;
soma(3,4);
x:=45;
y:=34;
soma(x,y);
readkey;
end.
{Fazer um programa para a verdureira Mamao Grande de Timbo. Devera ser feita uma tela de apresentacao de produtos vendidos(1 - maracuja, 2 - laranja, 3 - uva, 4 - pessego, 5 - melao, 6 - Mostrar na tela e F - Fim sendo R$ 0,30 a unidade das frutas. SÆo dados a quantidade. Continuar pedindo novas quantidades de cada fruta ate a pessoa digitar F para finalizar o programa. Ao final mostrar a media de cada fruta, preco final e media geral}
program verdureira;
uses crt;
var
opcao, continua : char;
quantidade, cont1, cont2, cont3, cont4, cont5 : integer;
somaracuja, somalaranja, somauva, somapessego, somamelao : real;
precomaracuja, precolaranja, precouva, precopessego, precomelao : real;
mediamaracuja, medialaranja, mediauva, mediapessego, mediamelao : real;
somapreco, somacont : real;
Procedure opcoes; Forward;
Procedure Principal;
Begin
textcolor(1);
textbackground(15);
CLRSCR;
gotoxy(10,09);
Write('Verdureira Mamao Grande');
gotoxy(10,10);
Write('Tudo a R$ 0,30 a unidade');
gotoxy(10,11);
Write('1 - Maracuja');
gotoxy(10,12);
Write('2 - Laranja');
gotoxy(10,13);
Write('3 - Uva');
gotoxy(10,14);
Write('4 - Pessego');
gotoxy(10,15);
Write('5 - Melao');
gotoxy(10,16);
Write('6 - Mostrar na Tela');
gotoxy(10,17);
Write('F - Finaliza o Programa!!');
End;
Procedure maracuja;
Begin
clrscr;
Repeat
Begin
gotoxy(10,10);
Write('Quantas Maracujas deseja? ');readln(quantidade);
inc(cont1);
somaracuja := somaracuja + quantidade;
precomaracuja := quantidade * 0.3;
gotoxy(10,11);
Write('Deseja Continuar? (s/n) '); Readln(continua);
end;
Until (continua = 'n') or (continua = 'N');
principal;
opcoes;
End;
Procedure Laranja;
Begin
clrscr;
Repeat
Begin
gotoxy(10,10);
Write('Quantas Laranjas deseja? ');readln(quantidade);
inc(cont2);
somalaranja := somalaranja + quantidade;
precolaranja := quantidade * 0.3;
gotoxy(10,11);
Write('Deseja Continuar? (s/n) '); Readln(continua);
end;
Until (continua = 'n') or (continua = 'N');
principal;
opcoes;
End;
Procedure uva;
Begin
clrscr;
Repeat
Begin
gotoxy(10,10);
Write('Quantas uvas deseja? ');readln(quantidade);
inc(cont3);
somauva := somauva + quantidade;
precouva := quantidade * 0.3;
gotoxy(10,11);
Write('Deseja Continuar? (s/n) '); Readln(continua);
end;
Until (continua = 'n') or (continua = 'N');
principal;
opcoes;
End;
Procedure pessego;
Begin
clrscr;
Repeat
Begin
gotoxy(10,10);
Write('Quantos pessegos deseja? ');readln(quantidade);
inc(cont4);
somapessego := somapessego + quantidade;
precopessego := quantidade * 0.3;
gotoxy(10,11);
Write('Deseja Continuar? (s/n) '); Readln(continua);
end;
Until (continua = 'n') or (continua = 'N');
principal;
opcoes;
End;
Procedure melao;
Begin
clrscr;
Repeat
Begin
gotoxy(10,10);
Write('Quantas Meloes deseja? ');readln(quantidade);
inc(cont5);
somamelao := somamelao + quantidade;
precomelao := quantidade * 0.3;
gotoxy(10,11);
Write('Deseja Continuar? (s/n) '); Readln(continua);
end;
Until (continua = 'n') or (continua = 'N');
principal;
opcoes;
End;
Procedure Mostrar;
Begin
clrscr;
if (cont1 <> 0 ) or (cont2 <> 0 )
or (cont3 <> 0 ) or (cont4 <> 0 ) or (cont4 <>
0 ) then
Begin
gotoxy(10,10);
Write('Total Maracuja: ',precomaracuja:6:2,' Mdia: ',somaracuja/cont1:6:2);
gotoxy(10,11);
Write('Total Laranja.: ',precolaranja:6:2,' Mdia: ',somalaranja/cont2:6:2);
gotoxy(10,12);
Write('Total Uva.....: ',precouva:6:2,' Mdia: ',somauva/cont3:6:2);
gotoxy(10,13);
Write('Total Pessego.: ',precopessego:6:2,' Mdia: ',somapessego/cont4:6:2);
gotoxy(10,14);
Write('Total Melao...: ',precomelao:6:2,' Mdia: ',somamelao/cont4:6:2);
somapreco := precomaracuja + precolaranja + precouva + precopessego +
precomelao;
somacont := cont1 + cont2 + cont3 + cont4 + cont5;
gotoxy(10,15);
Write('Media Geral: ',somapreco/somacont:6:2);
Readkey;
halt;
end
else
gotoxy(10,10);
Write('Algo est em branco!! kkkk!!') ;
readkey;
End;
Procedure Fim;
Begin
Halt;
End;
Procedure opcoes;
Begin
gotoxy(10,18);
Write('Digite Opcao: '); Readln(opcao);
Case opcao of
'1': maracuja;
'2': laranja;
'3': uva;
'4': pessego;
'5': melao;
'6': mostrar;
'f','F' : Fim;
else
begin
gotoxy(10,18);
Write('Opcao invalida! - Tecle <enter>...');
readkey;
gotoxy(10,17);
Write('Digite Opcao: '); Readln(opcao);
end;
End;
end;
Begin
clrscr;
principal;
opcoes;
End.
Fazer um programa para controle de uma loja de 1,99. Sao dados o nomedo cliente, cpf, rg e quantidade de mercadorias adquiridas. Calcular e mostrar a maior compra do dia e seu respectivo nome e o seu preo final.Finalizar a compra de mercadorias quando o usuario digitar 'f' na janela de Opoes}
Program Loja_199;
Uses crt;
Var
nome : string[40];
cpf : string[16];
rg : string[14];
quantidade : integer;
preco : real;
maiorpreco : real;
maiornome : string[40];
continuar, opcao : char;
Procedure opcoes; forward;
Procedure Incluir;
Begin
clrscr;
maiorpreco := 0;
continuar := 's';
While (continuar = 's') or (nome = 'S') do
Begin
Gotoxy(05,05); Write('Digite Nome: ');
Readln(nome);
Gotoxy(05,06); Write('Digite Cpf: ');
Readln(cpf);
Gotoxy(05,07); Write('Digite rg.: ');
Readln(rg);
Gotoxy(05,08); Write('Digite Quantidade: ');
Readln(quantidade);
preco := preco + (quantidade * 1.99);
Gotoxy(05,09); Write('Preco Total:
',preco:6:2);
readkey;
if preco > maiorpreco then
Begin
maiorpreco := preco;
maiornome := nome;
end;
Gotoxy(05,10); Write('Deseja continuar?(s/n):
'); Readln(continuar);
clrscr;
End;
opcoes;
End;
Procedure Mostrar;
Begin
clrscr;
Gotoxy(05,04); Write('Maior Compra!');
Gotoxy(05,05); Write('Nome: ',maiornome);
Gotoxy(05,06); Write('Preo: ',maiorpreco:6:2);
readkey;
opcoes;
End;
Procedure fim;
Begin
halt;
end;
Procedure opcoes;
Begin
clrscr;
Gotoxy(05,04); Write('Loja de 1,99');
Gotoxy(05,05); Write('1 - Incluir');
Gotoxy(05,06); Write('2 - Mostrar');
Gotoxy(05,07); Write('3 - Fim');
Gotoxy(05,08); Write('Digite Opcao: '); readln(opcao);
case opcao of
'1' : incluir;
'2' : mostrar;
'3' : fim;
end;
End;
Begin
textcolor(1);
textbackground(15);
clrscr;
opcoes;
End.