• Nenhum resultado encontrado

ARQUITETURA DE VON NEWMAN

N/A
N/A
Protected

Academic year: 2021

Share "ARQUITETURA DE VON NEWMAN"

Copied!
23
0
0

Texto

(1)

1

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;

(2)

2 • 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.

(3)

3 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

(4)

4 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

(5)

5

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")

(6)

6 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

(7)

7

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)

(8)

8

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

(9)

9

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"

(10)

10

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"

(11)

11

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)

(12)

12

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 custo: ") leia(precoCusto)

mediaCusto <- mediaCusto + precoCusto escreva("Digite o preço de venda: ") leia(precoVenda)

mediaVenda <- mediaVenda + 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

(13)

13

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!!!")

(14)

14

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)

(15)

15 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

(16)

16 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

(17)

17

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

(18)

18 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 IDADE ABONO

M >=30 100,00

< 30 50,00

F >=30 200,00

< 30 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)

(19)

19

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])

(20)

20

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)

(21)

21

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 triângulo equilátero!") senao

escreval("É um triângulo isórcele") fimse

senao

se lb = lc entao

escreval("É um triângulo isórcele") senao

escreval("É um triângulo escaleno") fimse

fimse fimse

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

(22)

22

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

(23)

23

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

Referências

Documentos relacionados

FAZ SABER que, com fulcro no artigo 689- A do CPC e regulamentado pelo Provimento CSM 1625/2009 do TJ/SP, que foi designado para 1º leilão, que terá início a contar da

No entanto, para aperfeiçoar uma equipe de trabalho comprometida com a qualidade e produtividade é necessário motivação, e, satisfação, através de incentivos e política de

17 CORTE IDH. Caso Castañeda Gutman vs.. restrição ao lançamento de uma candidatura a cargo político pode demandar o enfrentamento de temas de ordem histórica, social e política

Para o estudioso, o importante é determinar o lugar que uma tradução ocupa dentro do sistema literário da língua- meta, e não até que ponto o tradutor captou a “essência”

ABSTRACT: The toxicological effects of crude ethanolic extracts (CEE) of the seed and bark of Persea americana have been analyzed on larvae and pupae of

Com a realização da Ficha de Diagnóstico, o professor deve averiguar as aprendizagens dos alunos já realizadas sobre números racionais não negativos – operações e propriedades.

A causa mais frequente para inaptidão física foi diferente entre os sexos, isto é, os homens foram mais propensos a doenças cardiovasculares enquanto as mulheres