ARQUITETURA DE VON NEWMAN
O nome refere-se ao matemático John Von Neumann, que foi considerado o criador dos computadores da forma
como são projetados até hoje. Entretanto, outras pessoas também estiverem envolvidas no processo.
A idéia do modelo surgiu da necessidade de armazenar programas em um computador, pois, até então, ainda não
haviam formas de armazenamento de programas em um computador.
Von Neumann e outros pesquisadores descobriram que, utilizando dispositivos de memória em formas de linha de
retardo de mercúrio, poderiam armazenar instruções de programas.
Ciclo de execução de von Neumann:
• Ciclo de busca-decodificação-execução de instruções, isto é,
busca uma instrução, decodifica-a e a executa;
• Descreve como a máquina (o hardware) trabalha com as
instruções que devem ser executadas.
A CPU tem como função:
• Executar programas que estão armazenados na memória
principal;
• Buscar as instruções desses programas;
• Examinar essas instruções;
• Executar as instruções uma após a outra (sequencia);
A unidade de controle tem como função:
• Buscar instruções na memória principal;
• Determinar o tipo dessas instruções;
A unidade lógica aritmética tem como função:
• Efetuar operações aritméticas;
• Efetuar operações booleanas (e, ou, not, etc)
• Essas operações são necessárias para a execução das
instruções dos programas;
Registradores da CPU:
• São memórias de alta velocidade;
• Armazenam resultados temporários “dentro” da CPU;
1
• São usados para controlar as informações;
• Cada registrador tem uma função e um tamanho (em bits e/ou
bytes);
• São lidos e escritos em alta velocidade pois são internos à
CPU;
• OBS.: a CPU não consegue manter todos os valores manipulados por
um programa apenas em registradores, por isso necessita de uma
memória para o armazenamento das informações. Mais detalhes
serão discutidos à frente.
Contador de programa ou Programm Counter:
• É o registrador mais importante da CPU;
• Indica a próxima instrução a ser buscada para execução;
Registrador de Instrução (IR):
• Contém a instrução que está sendo executada no momento em
questão;
Como esses dispositivos eletrônicos conversam? Barramentos!
• Barramento: é um conjunto de fios paralelos (condutores de energia)
que transmistem endereços da memória e dos registradores, dados e
também sinais de controle; é por onde transitam os bits
• Barramentos internos à CPU: quando estão dentro da pastilha da
CPU;
• Barramentos externos à CPU: são aqueles que conectam a
memória e os dispositivos de E/S à CPU.
• Conceitos importantes sobre barramentos:
• Largura do barramento: é o número de bits que são
transportados em uma operação. Exemplo: a largura do
barramento do 486 era de 32 bits.
• Frequencia de operação: é a velocidade com que os dados
2
são transmitidos no barramento. Exemplo: o barramento
externo do Pentium I operava a 66Mhz.
RESUMO
Exemplo de execução de uma instrução em máquinas domodelo de von Neumann:
• A unidade de controle busca a próxima instrução do programa na memória principal;
• O contador de programa é usado pela unidade de controle para determinar onde a instrução está localizada;
• A instrução é decodificada para uma linguagem que a unidade lógica aritmética possa entender;
• Os operandos de dados requeridos para executar a instrução são carregados da memória e colocados em
registradores;
• A unidade lógica aritmética executa a instrução e coloca os resultados em registradores ou na memória.
EXERCÍCIOS PORTUGOL PARA ESTUDOS
1. Faça um algoritmo que receba dois números e exiba o resultado da sua soma.
var
x, y: inteiro
inicio
// Seção de Comandos
escreval("Digite o primeiro número: ")
leia(x)
escreval("Digite o segundo número: ")
leia(y)
escreva("A soma dos números é: ",x+y)
fimalgoritmo
2. Faça um algoritmo que receba dois números e ao final mostre a soma, subtração, multiplicação e a divisão dos
números lidos.
var
x, y: real
inicio
// Seção de Comandos
escreva("Digite o primeiro número: ")
leia(x)
escreva("Digite o segundo número: ")
leia(y)
escreval("A soma é: ",x+y)
escreval("A subtração é: ",x-y)
escreval("A multiplicação é: ",x*y)
escreval("A divisão é: ",x/y)
fimalgoritmo
3
3. Escrever um algoritmo para determinar o consumo médio de um automóvel sendo fornecida a distância total
percorrida pelo automóvel e o total de combustível gasto.
var
distancia, combustivel: real
inicio
// Seção de Comandos
escreval("========== Cálculo de consumo médio de combustível =========")
escreva("Digite a distância pecorrida: ")
leia(distancia)
escreva("Digite o combustível gasto: ")
leia(combustivel)
escreval("O consumo médio de combustível do seu veículo é:
",distancia/combustivel)
fimalgoritmo
4. Escrever um algoritmo que leia o nome de um vendedor, o seu salário fixo e o total de vendas efetuadas por ele
no mês (em dinheiro). Sabendo que este vendedor ganha 15% de comissão sobre suas vendas efetuadas, informar o
seu nome, o salário fixo e salário no final do mês.
var
nome: caractere
salario: real
vendas: real
comissao: real
salarioFinal: real
inicio
// Seção de Comandos
escreval("<><><><><> Sistema de gestão de vendedores <><><><><>")
escreva(">>> Digite o nome do vendedor: ")
leia(nome)
escreva(">>> Digite o salário: ")
leia(salario)
escreva(">>> Informe a quantidade de vendas deste no mês: ")
leia(vendas)
// Cálculo da comissão e salário final
comissao <- 0.15 * vendas
salarioFinal <- salario + comissao
limpatela
escreval(">>>>>>>>>> RESUMO <<<<<<<<<<")
escreval("-- Nome: ",nome)
escreval("-- Salário: ",salario)
escreval("-- Salário Final (salário + comissão): ",salarioFinal)
escreval(">>>>>>>>>><><><><><<<<<<<<<<")
fimalgoritmo
5. Escrever um algoritmo que leia o nome de um aluno e as notas das três provas que ele obteve no semestre. No
final informar o nome do aluno e a sua média (aritmética).
var
aluno: caractere
notas: vetor[1..3] de real
x: inteiro
media: real
4
inicio
// Seção de Comandos
escreval("============== Média de alunos ==============")
escreva("Digite o nome do aluno: ")
leia(aluno)
para x de 1 ate 3 faca
escreva("Digite a ",x,"º nota ")
leia(notas[x])
fimpara
media <- (notas[1] + notas[2] + notas[3]) / 3
limpatela
escreval("==============", aluno," ==============")
escreval(">>> Média: ",media)
escreval("=======================================")
fimalgoritmo
6. Ler dois valores para as variáveis A e B, e efetuar as trocas dos valores de forma que a variável A passe a possuir o
valor da variável B e a variável B passe a possuir o valor da variável A. Apresentar os valores trocados.
var
a, b, troca: inteiro
inicio
// Seção de Comandos
escreva("Digite o valor(numérico) da variável A: ")
leia(a)
escreva("Digite o valor(numérico) da variável B: ")
leia(b)
troca <- a
a <- b
b <- troca
limpatela
escreval("===========================")
escreval("O novo valor de A é: ",a)
escreval("O novo valor de B é: ",b)
escreval("===========================")
fimalgoritmo
7. Ler uma temperatura em graus Celsius e apresentá-la convertida em graus Fahrenheit. A fórmula de conversão é:
F=(9*C+160) / 5, sendo F a temperatura em Fahrenheit e C a temperatura em Celsius.
var
cel, far: real
inicio
// Seção de Comandos
escreval("=-=-=-=-=- Tabela de conversão: Celcius -> Fahrenheit -=-=-=-=-=")
escreva("Digite a temperatura em Celcius: ")
leia(cel)
far <- (9*cel+160)/5
escreval("A nova temperatura é: ",far,"ºF")
fimalgoritmo
5
8. Elaborar um algoritmo que efetue a apresentação do valor da conversão em real (R$) de um valor lido em dólar
(US$). O algoritmo deverá solicitar o valor da cotação do dólar e também a quantidade de dólares disponíveis com o
usuário.
var
rs, us, cotacao, dolaDisponivel: real
inicio
// Seção de Comandos
escreval("========= Cotação do Dólar ==========")
escreva("Qual a cotação atual do dólar? ")
leia(cotacao)
escreva("Quantos dólares você possui? ")
leia(us)
rs <- us/cotacao
limpatela
escreval(us," Dólares equivalem á: ",rs," R$")
fimalgoritmo
9. Faça um algoritmo que receba um valor que foi depositado e exiba o valor com rendimento após um mês.
Considere fixo o juro da poupança em 0,70% a. m.
var
correcao, deposito: real
inicio
// Seção de Comandos
escreval("Sistema de depósito do Banco do Oeste")
escreva("Digite o valor depositado: ")
leia(deposito)
correcao <- 0.7 * deposito
escreva("O rendimento do depósito após um mês é de: ",deposito+correcao)
fimalgoritmo
10. A Loja Mamão com Açúcar está vendendo seus produtos em 5 (cinco) prestações sem juros. Faça um algoritmo
que receba um valor de uma compra e mostre o valor das prestações.
var
compra, prestacao: real
inicio
// Seção de Comandos
escreval("========== Loja Mamão com Açúcar ==========")
escreva("Digite o valor da compra: ")
leia(compra)
prestacao <- compra/5
escreval("O cliente deverá pagar 5 prestações de R$",prestacao," cada")
fimalgoritmo
11. Faça um algoritmo que receba o preço de custo de um produto e mostre o valor de venda. Sabe-se que o preço
de custo receberá um acréscimo de acordo com um percentual informado pelo usuário.
var
custo, venda, percent: real
inicio
// Seção de Comandos
6
escreva("Digite o custo do produto: ")
leia(custo)
escreva("Digite o percentual para venda: ")
leia(percent)
percent <- (percent/100) * custo
venda <- custo + percent
escreval("O valor de venda é: ",venda)
fimalgoritmo
12. O custo ao consumidor de um carro novo é a soma do custo de fábrica com a percentagem do distribuidor e dos
impostos (aplicados, primeiro os impostos sobre o custo de fábrica, e depois a percentagem do distribuidor sobre o
resultado). Supondo que a percentagem do distribuidor seja de 28% e os impostos 45%. Escrever um algoritmo que
leia o custo de fábrica de um carro e informe o custo ao consumidor do mesmo.
var
custoFabrica, custoFinal: real
inicio
// Seção de Comandos
escreva("Informe o custo de fábrica do veículo: ")
leia(custoFabrica)
custoFinal <- custoFabrica + (0.28 * custoFabrica) + (0.45 * custoFabrica)
custoFinal <- custoFinal + (0.45 * custoFinal)
escreval("O custo para o consumidor final é de: ",custoFinal)
fimalgoritmo
13. Faça um algoritmo que receba um número e mostre uma mensagem caso este número seja maior que 10.
var
numero: inteiro
inicio
// Seção de Comandos
escreva("Digite um número: ")
leia(numero)
se numero > 10 entao
escreval("O número é maior que 10")
fimse
fimalgoritmo
14. Escrever um algoritmo que leia dois valores inteiro distintos e informe qual é o maior.
var
num1, num2: inteiro
inicio
// Seção de Comandos
escreva("Digite o primeiro número: ")
leia(num1)
7
escreva("Digite o segundo número: ")
leia(num2)
se num1 > num2 entao
escreva("O primeiro número ",num1," é maior que o segundo",num2)
senao
escreva("O segundo número",num2," é maior que o primeiro",num1)
fimse
fimalgoritmo
15. Faça um algoritmo que receba um número e diga se este número está no intervalo entre 100 e 200.
var
numero: inteiro
inicio
// Seção de Comandos
escreva("Digite um número: ")
leia(numero)
se numero >= 100 entao
se numero <= 200 entao
escreval("O número está no intervalo entre 100 e 200")
senao
escreval("O número não está no intervalo entre 100 e 200")
fimse
senao
escreval("O número não está no intervalo entre 100 e 200")
fimse
fimalgoritmo
16. Escrever um algoritmo que leia o nome e as três notas obtidas por um aluno durante o semestre. Calcular a sua
média (aritmética), informar o nome e sua menção aprovado (media >= 7), Reprovado (media <= 5) e Recuperação
(media entre 5.1 a 6.9).
var
nome: caractere
n1, n2, n3, media: real
inicio
// Seção de Comandos
escreval("Sistema de médias")
escreva("Digite a primeira nota: ")
leia(n1)
escreva("Digite a segunda nota: ")
leia(n2)
escreva("Digite a terceria nota: ")
leia(n3)
media <- (n1 + n2 + n3) / 3
se media >= 7 entao
escreval("Aluno aprovado!")
senao
se media <= 5 entao
escreval("Aluno reprovado!")
senao
escreval("Aluno em recuperação...")
fimse
8
fimse
fimalgoritmo
17. Ler 80 números e ao final informar quantos número(s) est(á)ão no intervalo entre 10 (inclusive) e 150 (inclusive).
var
x, num, intervalo: inteiro
inicio
// Seção de Comandos
para x de 1 ate 80 faca
escreva("Digite um número: ")
leia(num)
se num >= 10 entao
se num <= 150 entao
intervalo <- intervalo + 1
fimse
fimse
fimpara
escreval("Ao total, foram digitados",intervalo,"números no intervalo entre 10 e
150")
fimalgoritmo
18. Faça um algoritmo que receba a idade de 75 pessoas e mostre mensagem informando “maior de idade” e
“menor de idade” para cada pessoa. Considere a idade a partir de 18 anos como maior de idade.
var
x, idade: inteiro
inicio
// Seção de Comandos
para x de 1 ate 75 faca
escreva("Digite a idade: ")
leia(idade)
se idade >= 18 entao
escreval("Fulano é maior de idade!")
fimse
fimpara
fimalgoritmo
19. Escrever um algoritmo que leia o nome e o sexo de 56 pessoas e informe o nome e se ela é homem ou mulher.
No final informe total de homens e de mulheres.
var
nome, sexo: caractere
x, h, m: inteiro
inicio
// Seção de Comandos
para x de 1 ate 5 faca
limpatela
escreva("Digite o nome: ")
leia(nome)
escreva("H - Homem ou M - Mulher: ")
leia(sexo)
escolha sexo
caso "H"
h <- h + 1
9
caso "M"
m <- m + 1
outrocaso
escreval("Sexo só pode ser H ou M!")
fimescolha
fimpara
limpatela
escreval("Foram inseridos",h," Homens")
escreval("Foram inseridos",m," Mulheres")
fimalgoritmo
20. A concessionária de veículos “CARANGO VELHO” está vendendo os seus veículos com desconto. Faça um
algoritmo que calcule e exiba o valor do desconto e o valor a ser pago pelo cliente de vários carros. O desconto
deverá ser calculado de acordo com o ano do veículo. Até 2000 - 12% e acima de 2000 - 7%. O sistema deverá
perguntar se deseja continuar calculando desconto até que a resposta seja: “(N) Não” . Informar total de carros com
ano até 2000 e total geral.
var
programa, opc: caractere
ano, total, total2000: inteiro
valor, valorFinal, desconto: real
inicio
// Seção de Comandos
programa <- "S"
enquanto programa <> "N" faca
limpatela
escreva("Digite o valor do carro: ")
leia(valor)
escreva("Digite o ano do carro: ")
leia(ano)
se ano <= 2000 entao
desconto <- 0.12
total2000 <- total2000 + 1
total <- total + 1
senao
desconto <- 0.07
total <- total + 1
fimse
desconto <- desconto * valor
valorFinal <- valor - desconto
escreval("O valor do carro com desconto é de: ",valorFinal)
escreval("")
escreva("Deseja continuar calculando? (S) Sim - (N) Não - ")
leia(opc)
escolha opc
caso "S"
programa <- "S"
caso "N"
programa <- "N"
outrocaso
programa <- "S"
10
limpatela
escreval("As opções disponíveis são apenas S ou N!!!")
leia(opc)
fimescolha
fimenquanto
escreval("Foram calculados",total2000," carro(s) com ano até 2000")
escreval("Total geral: ",total)
fimalgoritmo
21. Escrever um algoritmo que leia os dados de “N” pessoas (nome, sexo, idade e saúde) e informe se está apta ou
não para cumprir o serviço militar obrigatório. Informe os totais.
var
programa, idade, apto: inteiro
nome, sexo, saude, opc: caractere
totApto, total: inteiro
inicio
// Seção de Comandos
programa <- 1
enquanto programa = 1 faca
limpatela
apto <- 1
saude <- "B"
total <- total + 1
escreva("Digite o nome: ")
leia(nome)
escreva("Digite o sexo (M/F): ")
leia(sexo)
escreva("Digite a idade: ")
leia(idade)
se idade < 18 entao
apto <- 0
fimse
escreval("Digite o estado de saúde: ")
escreva("(B) Bom - (R) - Ruim - ")
leia(saude)
se saude = "R" entao
apto <- 0
senao
se saude <> "B" entao
apto <- 0
fimse
fimse
se apto = 1 entao
totApto <- totApto + 1
fimse
escreval("Deseja continuar filtrando (S/N)? ")
leia(opc)
se opc = "N" entao
programa <- 0
fimse
fimenquanto
limpatela
escreval("Resumo geral: ")
escreval("Foram filtrados: ",total," pessoas")
escreval("Aptos: ",totApto)
escreval("")
11
fimalgoritmo
22. Faça um algoritmo que receba o preço de custo e o preço de venda de 40 produtos. Mostre como resultado se
houve lucro, prejuízo ou empate para cada produto. Informe media de preço de custo e do preço de venda.
var
x: inteiro
precoVenda, precoCusto: real
mediaCusto, mediaVenda: real
inicio
// Seção de Comandos
para x de 1 ate 40 faca
limpatela
escreva("Digite o preço de
leia(precoCusto)
mediaCusto <- mediaCusto +
escreva("Digite o preço de
leia(precoVenda)
mediaVenda <- mediaVenda +
custo: ")
precoCusto
venda: ")
precoVenda
se precoVenda < precoCusto entao
escreval("Houve prejuízo na venda")
senao
se precoVenda = precoCusto entao
escreval("Houve empate na venda")
fimse
se precoVenda > precoCusto entao
escreval("Houve lucro na venda")
fimse
fimse
fimpara
limpatela
escreval("A média de preço de custo foi: ",mediaCusto/40)
escreval("A média de preço de venda foi: ",mediaVenda/40)
fimalgoritmo
23. Faça um algoritmo que receba um número e mostre uma mensagem caso este número seja maior que 80, menor
que 25 ou igual a 40.
var
numero: inteiro
inicio
// Seção de Comandos
escreva("Digite um número: ")
leia(numero)
se numero > 80 entao
escreval("O número é maior que 80")
senao
se numero < 25 entao
escreval("O número é menor que 25")
senao
se numero = 40 entao
escreval("O número é igual a 40")
fimse
12
fimse
fimse
fimalgoritmo
24. Faça um algoritmo que receba “N” números e mostre positivo, negativo ou zero para cada número.
var
programa, numero: inteiro
opc: caractere
inicio
// Seção de Comandos
programa <- 1
enquanto programa = 1 faca
limpatela
escreva("Digite um número: ")
leia(numero)
se numero > 0 entao
escreval("Positivo")
senao
se numero = 0 entao
escreval("O número é igual a 0")
fimse
se numero < 0 entao
escreval("Negativo")
fimse
fimse
escreva("Deseja finalizar? (S/N) ")
leia(opc)
se opc = "S" entao
programa <- 0
fimse
fimenquanto
fimalgoritmo
25. Faça um algoritmo que leia dois números e identifique se são iguais ou diferentes. Caso eles sejam iguais
imprima uma mensagem dizendo que eles são iguais. Caso sejam diferentes, informe qual número é o maior, e uma
mensagem que são diferentes.
var
num1, num2: inteiro
inicio
// Seção de Comandos
escreva("Digite o primeiro número: ")
leia(num1)
escreva("Digite o segundo número: ")
leia(num2)
se num1 = num2 entao
escreval("Os números são iguais!")
senao
se num1 > num2 entao
escreval("O número",num1," é maior que o número",num2)
escreval("Eles são diferentes!!!")
13
senao
escreval("O número",num2," é maior que o número",num1)
escreval("Eles são diferentes!!!")
fimse
fimse
fimalgoritmo
26. Faça um algoritmo que leia um número de 1 a 5 e escreva por extenso. Caso o usuário digite um número que não
esteja neste intervalo, exibir mensagem: número inválido.
var
numero: inteiro
inicio
// Seção de Comandos
escreva("Digite um número de 1 a 5: ")
leia(numero)
escolha numero
caso 1
escreval("Um")
caso 2
escreval("Dois")
caso 3
escreval("Três")
caso 4
escreval("Quatro")
caso 5
escreval("Cinco")
outrocaso
escreval("Número Inválido!!!")
fimescolha
fimalgoritmo
27. A concessionária de veículos “CARANGO” está vendendo os seus veículos com desconto. Faça um algoritmo que
calcule e exiba o valor do desconto e o valor a ser pago pelo cliente. O desconto deverá ser calculado sobre o valor
do veículo de acordo com o combustível (álcool – 25%, gasolina – 21% ou diesel –14%). Com valor do veículo zero
encerra entrada de dados. Informe total de desconto e total pago pelos clientes.
var
desconto, valorPago, valorVeiculo: real
totalDesconto, totalPago: real
combustivel, opc: caractere
inicio
// Seção de Comandos
valorVeiculo <- 1
opc <- "x"
enquanto valorVeiculo <> 0 faca
limpatela
escreva("Digite o valor do veículo: ")
leia(valorVeiculo)
se valorVeiculo <> 0 entao
escreval("Digite o combustível")
escreva("(G)asolina / (A)lcool / (D)iesel: ")
leia(combustivel)
14
escolha combustivel
caso "A"
desconto <- 0.25 * valorVeiculo
caso "G"
desconto <- 0.21 * valorVeiculo
caso "D"
desconto <- 0.14 * valorVeiculo
outrocaso
escreval("Combustível inválido!")
escreval("Não haverão descontos!")
desconto <- 0
fimescolha
valorPago <- valorVeiculo - desconto
totalDesconto <- totalDesconto + desconto
totalPago <- totalPago + valorPago
escreval("Desconto no veículo: ",desconto)
escreval("Valor total a ser pago: ",valorPago)
escreval("Tecle enter para continuar...")
leia(opc)
fimse
fimenquanto
limpatela
escreval("Resumo geral: ")
escreval("Total de descontos: ",totalDesconto)
escreval("Total Pago pelos clientes: ",totalPago)
fimalgoritmo
28. Escrever um algoritmo para uma empresa que decide dar um reajuste a seus 584 funcionários de acordo com os
seguintes critérios:
a) 50% para aqueles que ganham menos do que três salários mínimos;
b) 20% para aqueles que ganham entre três até dez salários mínimos;
c) 15% para aqueles que ganham acima de dez até vinte salários mínimos;
d) 10% para os demais funcionários.
Leia o nome do funcionário, seu salário e o valor do salário mínimo. Calcule o seu novo salário reajustado. Escrever o
nome do funcionário, o reajuste e seu novo salário. Calcule quanto à empresa vai aumentar sua folha de pagamento.
var
salarioMinimo, novoSalario, reajuste, reajusteTotal, folha, novaFolha, calc,
salario: real
nome, opc: caractere
x: inteiro
inicio
// Seção de Comandos
opc <- "x"
escreval("<><><><><> Sistema de reajuste salarial <><><><><>")
escreva("Digite o valor atual do salário mínimo: ")
leia(salarioMinimo)
para x de 1 ate 584 faca
limpatela
15
escreva("Digite o nome: ")
leia(nome)
escreva("Digite o salário: ")
leia(salario)
calc <- salarioMinimo * 3
se salario < calc entao
reajuste <- 0.50 // Reajuste de 50%
reajusteTotal <- reajuste + (reajuste * salario) // Valor total de
reajuste
folha <- folha + salario // Folha de pagamento antiga
novoSalario <- salario + (reajuste * salario) // Salário reajustado
novaFolha <- novaFolha + novoSalario // Nova folha de pagamento
limpatela
escreval(">>> Nome: ",nome)
escreval(">>> Reajuste = 50%: ",reajuste*salario)
escreval(">>> Novo salário: ",novoSalario)
escreval(">>> Tecle enter para continuar...")
leia(opc)
senao
calc <- salarioMinimo * 10
se salario <= calc entao
reajuste <- 0.20 // Reajuste de 20%
reajusteTotal <- reajuste + (reajuste * salario) // Valor total de
reajuste
folha <- folha + salario // Folha de pagamento antiga
novoSalario <- salario + (reajuste * salario) // Salário reajustado
novaFolha <- novaFolha + novoSalario // Nova folha de pagamento
limpatela
escreval(">>> Nome: ",nome)
escreval(">>> Reajuste = 20%: ",reajuste*salario)
escreval(">>> Novo salário: ",novoSalario)
escreval(">>> Tecle enter para continuar...")
leia(opc)
senao
calc <- salarioMinimo * 20
se salario <= calc entao
reajuste <- 0.15 // Reajuste de 15%
reajusteTotal <- reajuste + (reajuste * salario) // Valor total
de reajuste
folha <- folha + salario // Folha de pagamento antiga
novoSalario <- salario + (reajuste * salario) // Salário
reajustado
novaFolha <- novaFolha + novoSalario // Nova folha de pagamento
limpatela
escreval(">>> Nome: ",nome)
escreval(">>> Reajuste = 15%: ",reajuste*salario)
escreval(">>> Novo salário: ",novoSalario)
escreval(">>> Tecle enter para continuar...")
leia(opc)
senao
reajuste <- 0.10 // Reajuste de 10%
reajusteTotal <- reajuste + (reajuste * salario) // Valor total
de reajuste
folha <- folha + salario // Folha de pagamento antiga
novoSalario <- salario + (reajuste * salario) // Salário
reajustado
16
novaFolha <- novaFolha + novoSalario // Nova folha de pagamento
limpatela
escreval(">>> Nome: ",nome)
escreval(">>> Reajuste = 10%: ",reajuste*salario)
escreval(">>> Novo salário: ",novoSalario)
escreval(">>> Tecle enter para continuar...")
leia(opc)
fimse
fimse
fimse
fimpara
escreval("")
escreval("A empresa aumentou a folha de pagamento em:",novaFolha - folha,"
Reais")
fimalgoritmo
29. Faça um algoritmo que receba o número do mês e mostre o mês correspondente. Valide mês inválido.
var
mes: inteiro
inicio
// Seção de Comandos
escreval("Digite o número do mês: ")
leia(mes)
escolha mes
caso 1
escreval("Janeiro")
caso 2
escreval("Fevereiro")
caso 3
escreval("Março")
caso 4
escreval("Abril")
caso 5
escreval("Maio")
caso 6
escreval("Junho")
caso 7
escreval("Julho")
caso 8
escreval("Agosto")
caso 9
escreval("Setembro")
caso 10
escreval("Outubro")
caso 11
escreval("Novembro")
caso 12
escreval("Dezembro")
outrocaso
escreval("Mês inválido!")
fimescolha
fimalgoritmo
17
30. Faça um algoritmo que receba o nome a idade, o sexo e salário fixo de um funcionário. Mostre o nome e o
salário líquido:
SEXO
M
F
IDADE
>=30
< 30
>=30
< 30
ABONO
100,00
50,00
200,00
80,00
var
nome, sexo: caractere
idade, x: inteiro
salario: real
inicio
// Seção de Comandos
escreva("Digite o nome do funcionário: ")
leia(nome)
x <- 1
enquanto x = 1 faca
escreva("Digite o sexo (F/M): ")
leia(sexo)
se sexo <> "F" entao
se sexo <> "M" entao
x <- 1
senao
x <- 0
fimse
senao
x <- 0
fimse
fimenquanto
escreva("Digite a idade: ")
leia(idade)
escreva("Digite o salário: ")
leia(salario)
se sexo = "M" entao
se idade >= 30 entao
salario <- salario + 100
senao
salario <- salario + 50
fimse
senao
se idade >= 30 entao
salario <- salario + 200
senao
salario <- salario + 80
fimse
fimse
limpatela
escreval(">>> Nome: ",nome)
escreval(">>> Salário: ",salario)
18
fimalgoritmo
31. Escrever um algoritmo que leia três valores inteiros distintos e os escreva em ordem crescente.
var
num1, num2, num3: inteiro
ordena: vetor[1..3] de inteiro
inicio
// Seção de Comandos
escreva("Digite o primeiro número: ")
leia(num1)
escreva("Digite o segundo número: ")
leia(num2)
escreva("Digite o terceiro número: ")
leia(num3)
se num1 > num2 entao
ordena[3] <- num1
ordena[2] <- num2
se num3 > num1 entao
ordena[3] <- num3
ordena[2] <- num1
ordena[1] <- num2
senao
se num3 > num2 entao
ordena[3] <- num1
ordena[2] <- num3
ordena[1] <- num2
senao
ordena[3] <- num1
ordena[2] <- num2
ordena[1] <- num3
fimse
fimse
senao
ordena[3] <- num2
ordena[2] <- num1
se num3 > num2 entao
ordena[3] <- num3
ordena[2] <- num2
ordena[1] <- num1
senao
se num3 > num1 entao
ordena[3] <- num2
ordena[2] <- num3
ordena[1] <- num1
senao
ordena[3] <- num2
ordena[2] <- num1
ordena[1] <- num3
fimse
fimse
fimse
escreval("Os números em ordem crescente são: ")
escreval(">",ordena[1])
19
escreval(">",ordena[2])
escreval(">",ordena[3])
fimalgoritmo
32. Dados três valores A, B e C, em que A e B são números reais e C é um caractere, pede-se para imprimir o
resultado da operação de A por B se C for um símbolo de operador aritmético; caso contrário deve ser impressa uma
mensagem de operador não definido. Tratar erro de divisão por zero.
var
A, B: real
C: caractere
inicio
// Seção de Comandos
escreva("Digite o primeiro número: ")
leia(A)
escreva("Digite o segundo número: ")
leia(B)
escreva("Digite a operação desejada (+ - / *): ")
leia(C)
escolha C
caso "+"
escreval("A+B =",A+B)
caso "-"
escreval("A-B =",A-B)
caso "*"
=
escreval("A*B =",A*B)
caso "/"
se B = 0 entao
escreval("Erro, um número não pode ser dividido por 0!")
senao
escreval("A/B =",A/B)
fimse
outrocaso
escreval("Operador não definido!")
fimescolha
fimalgoritmo
33. Escrever um algoritmo que leia três valores inteiros e verifique se eles podem ser os lados de um triângulo. Se
forem, informar qual o tipo de triângulo que eles formam: equilátero, isóscele ou escaleno.
Propriedade: o comprimento de cada lado de um triângulo é menor do que a soma dos comprimentos dos outros
dois lados.
Triângulo Equilátero: aquele que tem os comprimentos dos três lados iguais;
Triângulo Isóscele: aquele que tem os comprimentos de dois lados iguais. Portanto, todo triângulo equilátero é
também isóscele;
Triângulo Escaleno: aquele que tem os comprimentos de seus três lados diferentes.
var
la, lb, lc, triangulo: inteiro
inicio
// Seção de Comandos
escreva("Digite o lado A do triângulo: ")
leia(la)
20
escreva("Digite o lado B do triângulo: ")
leia(lb)
escreva("Digite o lado C do triângulo: ")
leia(lc)
se la < (lc+lb) entao
triangulo <- 1
senao
se lb < (lc + la) entao
triangulo <- 1
senao
se lc < (lb + la) entao
triangulo <- 1
fimse
fimse
fimse
se triangulo = 1 entao
se la = lb entao
se lb = lc entao
escreval("É um
senao
escreval("É um
fimse
senao
se lb = lc entao
escreval("É um
senao
escreval("É um
fimse
fimse
fimse
triângulo equilátero!")
triângulo isórcele")
triângulo isórcele")
triângulo escaleno")
fimalgoritmo
34. A escola “APRENDER” faz o pagamento de seus professores por hora/aula. Faça um algoritmo que calcule e exiba
o salário de um professor. Sabe-se que o valor da hora/aula segue a tabela abaixo:
Professor Nível 1 R$12,00 por hora/aula
Professor Nível 2 R$17,00 por hora/aula
Professor Nível 3 R$25,00 por hora/aula
var
nivel, horas: inteiro
inicio
// Seção de Comandos
escreval(">>>>> Escola APRENDER <<<<<")
escreva("Digite o nível do professor (1/2/3): ")
leia(nivel)
escreva("Digite o número de horas trabalhadas: ")
leia(horas)
se nivel = 1 entao
escreval("O professor ganha",horas*12)
senao
se nivel = 2 entao
escreval("O professor ganha",horas*17)
senao
21
escreva("O professor ganha",horas*25)
fimse
fimse
fimalgoritmo
35. Elabore um algoritmo que, dada a idade de um nadador. Classifique-o em uma das seguintes categorias:
Infantil A = 5 - 7 anos
Infantil B = 8 - 10 anos
juvenil A = 11- 13 anos
juvenil B = 14 - 17 anos
Sênior = 18 - 25 anos
Apresentar mensagem “idade fora da faixa etária” quando for outro ano não contemplado.
var
idade: inteiro
inicio
// Seção de Comandos
escreva("Digite a idade do nadador: ")
leia(idade)
escolha idade
caso 5,6,7
escreval("Infantil A")
caso 8,9,10
escreval("Infantil B")
caso 11,12,13
escreval("Juvenil A")
caso 14,15,16,17
escreval("Juvenil B")
caso 18,19,20,21,22,23,24,25
escreval("Sênior")
outrocaso
escreval("Idade fora da faixa etária")
fimescolha
fimalgoritmo
36. Faça um algoritmo que calcule o valor da conta de luz de uma pessoa. Sabe-se que o cálculo da conta de luz
segue
a tabela abaixo:
Tipo de Cliente Valor do KW/h
1 (Residência) 0,60
2 (Comércio) 0,48
3 (Indústria) 1,29
var
residencia, kw: inteiro
consumo: real
22
inicio
// Seção de Comandos
escreval("Informe o tipo de residência: ")
escreval("1 - Residência")
escreval("2 - Comércio")
escreval("3 - Indústria")
leia(residencia)
escolha residencia
caso 1
escreva("Informe a quantidade de KW gastos no mês: ")
leia(kw)
consumo <- kw * 0.60
escreval("Valor da conta: ",consumo)
caso 2
escreva("Informe a quantidade de KW gastos no mês: ")
leia(kw)
consumo <- kw * 0.48
escreval("Valor da conta: ",consumo)
caso 3
escreva("Informe a quantidade de KW gastos no mês: ")
leia(kw)
consumo <- kw * 1.29
escreval("Valor da conta: ",consumo)
outrocaso
escreval("Tipo de residência inválido!")
fimescolha
fimalgoritmo
23
Download

ARQUITETURA DE VON NEWMAN - E