construcao de algoritmos

38
FACULDADE ANHANGUERA DE ANÁPOLIS Av. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838 ATIVIDADE AVALIATIVA (4,0 ONTOS) LISTA DE EXERCÍCIOS 1. Elabore um algoritmo que calcule a área de um círculo qualquer de raio fornecido. algoritmo "areaCircunferencia" // Função : Determinar a área de uma circunferência // Autor : Jair Ferreira Camilo Júnior // Data : 24/09/2013 // Seção de Declarações var p: real raio: real area: real inicio // Seção de Comandos p<-3.14 escreva("Informe o raio") leia(raio) area<-p*(raio*raio) escreva("Area:",area) fimalgoritmo. 2. Prepare um algoritmo capaz de inverter um número de 3 dígitos, isto é, apresentar primeiro a unidade, depois a dezena, depois a centena.

Upload: jair-junior

Post on 13-Jul-2016

81 views

Category:

Documents


1 download

DESCRIPTION

atps construcao de algoritmos

TRANSCRIPT

Page 1: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

ATIVIDADE AVALIATIVA (4,0 ONTOS)

LISTA DE EXERCÍCIOS

1. Elabore um algoritmo que calcule a área de um círculo qualquer de raio fornecido.

algoritmo "areaCircunferencia" // Função : Determinar a área de uma circunferência

// Autor : Jair Ferreira Camilo Júnior

// Data : 24/09/2013

// Seção de Declarações

var

p: real

raio: real

area: real

inicio

// Seção de Comandos

p<-3.14

escreva("Informe o raio")

leia(raio)

area<-p*(raio*raio)

escreva("Area:",area)

fimalgoritmo.

2. Prepare um algoritmo capaz de inverter um número de 3 dígitos, isto é, apresentar primeiro

a unidade, depois a dezena, depois a centena.

algoritmo "areaCircunferencia"

// Função : Determinar a área de uma circunferência

// Autor : Jair Ferreira Camilo Júnior

// Data : 24/09/2013// Seção de Declarações

var

val: inteiro

aux: inteiro //variável declarada para receber o dado que o usuário

sem alterar o dado informado

Page 2: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

inv: inteiro

i: inteiro

rest: inteiro

inicio

// Seção de Comandos

escreva("Informe um numero contendo três algarismos")

leia(val)

se ((val >1000) ou (val < 100)) entao

escreva ("O número precisa ter 3 algarismos")

senao

aux <- val //

inv <- 0

para i de 1 ate 3 faca

rest <- aux % 10 //resto da divisão por 10

inv <- inv*10 + alg//variavel responsavel por guardar o

//valor após inversão

aux <- aux \ 10 //resultado da divisão inteira armazenada

//na variavel auxiliar

fimpara

escreva ("Número informado: ", val, " - Invertido ", inv)

fimse

fimalgoritmo

3. Dada uma determinada data de aniversário (dia, mês e ano separadamente), elabore um

algoritmo que solicite a data atual (também separadamente) e calcule a idade em anos,

meses e dias.

algoritmo "idadeEmanosMesesDia"

// Função :

// Autor :

// Data : 25/09/2013

// Seção de Declarações

var

Page 3: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

dia,mes,ano,d,m,a,idade,somames,somadia: inteiro

inicio

// Seção de Comandos

escreva("INFORME A DATA DE NASCIMENTO")

leia(dia)

escreva("INFORME O MES DE NASCIMENTO")

leia(mes)

escreva("INFORME O ANO DE NASCIMENTO")

leia(ano)

escreva("QUE DIA È HOJE")

leia(d)

escreva("QUAL MES")

leia(m)

escreva("QUAL O ANO")

leia(a)

idade<-a-ano

//caso o dia e o mes seja menor que o mes e dia de nascimento

se((d<=dia) e(m<=mes)) entao

idade<-idade-1//

somames<-mes-m

somadia<-dia-d

senao

somames<-m-mes

somadia<-d-dia

fimse

escreva ("IDADE",idade)

escreva(somames,"MESES ",somadia,"DIAS")

fimalgoritmo

4. Um dado comerciante maluco cobra 10% de acréscimo para cada prestação em atraso e

depois dá um desconto de 10% sobre esse valor. Faça um algoritmo que solicite o valor da

prestação em atraso e apresente o valor final a pagar, assim como o prejuízo do comerciante

na operação.

Page 4: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

algoritmo "comercianteMaluco"

// Função : Aplicar juros e desconto

// Autor : Jair Ferreira Camilo Júnior

// Data : 25/09/2013

// Seção de Declarações

var

preco,precacre,precdesc: real

inicio

// Seção de Comandos

escreva("Informe o valor da prestacao")

leia(preco)

precacre<-preco+(preco*0.10)

precdesc<-precacre-(precacre*0.10)

escreval("o preco da prestação atrasada e: ",preco)

escreval("o preco com juros e: ", precacre)

escreval("o preco com desconto e: ",precdesc)

fimalgoritmo

5. Escreva um algoritmo que a partir de um mês fornecido (inteiro de 1 a 12), apresente o

nome dele por extenso ou uma mensagem de mês invalido.

algoritmo "mesPorExtenso"

// Função : Mês por extenso

// Autor : Jair Ferreira Camilo Júnior

// Data : 25/09/2013

// Seção de Declarações

var

mes: inteiro

inicio

// Seção de Comandos

escreva("Informe o numero correspondente ao mês 1 a 12")

leia(mes)

escolha mes

Page 5: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

caso 1

escreva("Mês de Janeiro")

caso 2

escreva("Mês de Fevereiro")

caso 3

escreva("Mês de Março")

caso 4

escreva("Mês de Abril")

caso 5

escreva("Mês de Maio")

caso 6

escreva("Mês de junho")

caso 7

escreva("Mês de julho")

caso 8

escreva("Mês de Agosto")

caso 9

escreva("Mês de Setembro")

caso 10

escreva("Mês de Outubro")

caso 11

escreva("Mês de Novembro")

caso 12

escreva("Mês de Dezembro")

outrocaso

escreva("DADO INVALIDO")

fimescolha

fimalgoritmo

6. Elabore um algoritmo que, a partir de um dia, mês e ano fornecidos, valide se eles compõem

uma data válida. Não deixe de considerar os meses com 30 ou 31 dias, e o tratamento de ano

bissexto.

Page 6: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

algoritmo "validaData"

// Função : Validar data informada pelo usuario

// Autor : Jair Ferreira Camilo Júnior

// Data : 25/09/2013

// Seção de Declarações

var

dia,mes,ano: inteiro

inicio

// Seção de Comandos

escreva("Informe o dia")

leia(dia)

escreva("Informe o mes")

leia(mes)

escreva("Informe o ano")

leia(ano)

//comparação lógica de mês com grupo de meses de 31 dias

se ((mes=01) ou (mes=03) ou (mes=05) ou (mes=07) ou (mes=08) ou

(mes=10) ou (mes=12))entao

se((dia>=01) e (dia<=31))entao

escreva("Data válida")

senao

escreva ("Data inválida")

fimse

fimse

//comparação lógica de mes com grupo de meses de 30 dias

se ((mes=04) ou (mes=06) ou (mes=09) ou (mes=11)) entao

se ((dia>=01) e (dia<=30)) entao

escreva ("Data válida")

senao

escreva ("Data inválida")

fimse

fimse

//comparação lógica de mês 02 com grupo de meses de 28/29 dias

Page 7: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

se(mes=2) então//inicio comparação mês 2

| | //Comparação ano bissexto

| se((ano mod 4)=0) entao//calculo ano bisexto

| | //caso seja bisexto executara uma das instruções

| | se((dia>=1)e(dia<=29)) entao

| | escreva("data valida")

| | senao

| | escreva("data invalida")

| | fimse

| | //fim comparação caso seja bissexto

| |

| | //caso não seja bissexto deve ter máximo 28 dias

| senao

| | se((dia>=1)e(dia<=28)) entao

| | escreva("data valida")

| | senao

| | escreva("data invalida")

| | fimse

| | //fim comparação caso não seja ano bissexto

| fimse

| //fim comparação ano bissexto

|

fimse //fim comparação mês 2

fimalgoritmo

7. A partir da idade informada de uma pessoa, elabore um algoritmo que informe sua classe

eleitoral, sabendo que menores de 16 anos não votam (não votante), que o voto é obrigatório

para adultos entre 18 e 65 anos (eleitor obrigatório) e que o voto é opcional para eleitores

entre 16 e 18, e maiores de 65 anos (eleitor facultativo).

algoritmo "classeEleitor"

// Função : Identifica a classe do eleitor através da idade informada

pelo usuário

// Autor : Jair Ferreira Camilo Júnior

Page 8: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

// Data : 26/09/2013

// Seção de Declarações

var

idade: inteiro

inicio

// Seção de Comandos

escreva("Informe a idade")

leia(idade)

se((idade>=65)ou((idade>=16)e(idade<18))) entao

escreva("Classe voto opcional")

fimse

se((idade>=18)e(idade<65)) entao

escreva("Classe voto obrigatorio")

fimse

se(idade<16) entao

escreva("Classe nao votante")

fimse

fimalgoritmo

8. Construa um algoritmo que seja capaz de dar a classificação olímpica de 3 países

informados. Para cada país é informado o nome, a quantidade de medalhas de ouro, prata e

bronze. Considere que cada medalha de ouro tem peso 3, cada de prata tem peso 2, e as de

bronze, peso 1.

algoritmo "classificaPais"

// Função : Classificação de países

// Autor : Jair Ferreira Camilo Júnior

// Data : 26/09/2013

// Seção de Declarações

var

ouro1,ouro2,ouro3,prata1,prata2,prata3,bronze1,bronze2: inteiro

Page 9: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

bronze3,rank1,rank2,rank3,maior,menor,medio:

inteiro

pais1,pais2,pais3,primeiro,segundo,terceiro: caracter

inicio

// Seção de Comandos

maior<-0 //inicializado em 0 para realização de testes para maior

menor<-99999999//inicializado em 999999999 para testes para obter

menor numero

//pais 1

escreva("Informe o nome do pais")

leia(pais1)

escreva("Informe quantidade de medalhas de ouro")

leia(ouro1)

escreva("Informe quantidade de medalhas de prata")

leia(prata1)

escreva("Informe quantidade de medalhas de bronze")

leia(bronze1)

//pais 2

escreva("Informe o nome do pais")

leia(pais2)

escreva("Informe quantidade de medalhas de ouro")

leia(ouro2)

escreva("Informe quantidade de medalhas de prata")

leia(prata2)

escreva("Informe quantidade de medalhas de bronze")

leia(bronze2)

//pais 3

escreva("Informe o nome do pais")

leia(pais3)

escreva("Informe quantidade de medalhas de ouro")

leia(ouro3)

escreva("Informe quantidade de medalhas de prata")

leia(prata3)

escreva("Informe quantidade de medalhas de ouro")

Page 10: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

leia(bronze3)

//procedimento para saber a pontuação de cada país

rank1<-(ouro1*3)+(prata1*2)+(bronze1*1)

rank2<-(ouro2*3)+(prata2*2)+(bronze2*1)

rank3<-(ouro3*3)+(prata3*2)+(bronze3*1)

//anteriormente a variável maior foi inicializada em 0, portanto

//sempre executara a 1° estrutura de seleção, e caso país1 tenha maior

//pontuação irá para os testes para saber o terceiro lugar

se(rank1 > maior) entao

maior<-rank1

primeiro<-pais1

se (rank2 < rank3) entao

medio<-rank3

segundo<-pais3

senao

medio<-rank2

segundo<-pais2

fimse

fimse

//o próximo teste verifica se o segundo pais é maior que o 1°

//caso seja entrará para termos o segundo tendo o país2 com1° colocado

se(rank2 > maior) entao

maior<-rank2

primeiro<-pais2

se (rank1 < rank3) entao

medio<-rank3

segundo<-pais3

senao

medio<-rank1

segundo<-pais1

fimse

fimse

//teste do terceiro pais

se(rank3 > maior) entao

Page 11: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

maior<-rank3

primeiro<-pais3

se (rank1 < rank2) entao

medio<-rank2

segundo<-pais2

senao

medio<-rank1

segundo<-pais1

fimse

fimse

//Próxima sequência de testes para termos o terceiro lugar

//já temos o primeiro e o segundo resta saber quem é terceiro.

//1° teste deverá rodar sempre já que a variável menor foi

//anteriormente inicializada com um valor muito alto

se(rank1 < menor) entao

menor<-rank1

terceiro<-pais1

fimse

//o próximo teste trata o caso rank2 seja menor que rank1 que

// agora está armazenado na variável menor

se(rank2 < menor) então

menor<-rank2

terceiro<-pais2

fimse

//Próximo será executado somente se rank3 for menor que o

//valor que está armazenado

//na variável menor, que neste momento pode ser o valor de

//rank1 ou rank2.

se(rank3 < menor) entao

menor<-rank3

terceiro<-pais3

fimse

//fim dos testes

escreval("O primeiro: " , primeiro, " com : ", maior," pontos")

escreval("O segundo: " , segundo, " com : ", medio," pontos")

Page 12: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

escreval("O terceiro: " , terceiro," com:

",menor," pontos")

fimalgoritmo

9. Elabore um algoritmo que obtenha o mínimo múltiplo comum (MMC) entre dois números

fornecidos.

algoritmo "calculaMMC"

// Função : calcular o mínimo múltiplo comum

// Autor : Jair Ferreira Camilo Júnior

// Data : 27/09/2013

// Seção de Declarações

var

num1, num2, divisor,mmc: inteiro

inicio

escreva ("INFORME O PRIMEIRO NUMERO: ")

leia (num1)

escreva ("INFORME O SEGUNDO NUMERO: ")

leia (num2)

divisor<-2

mmc<-1

se (num1=0) ou (num2=0) entao

escreva ("O MÍNIMO MÚLTIPLO COMUM É: ")

escreval (" 0")

fimse

se (num1<>0) e (num2<>0) entao

| repita

| | se (num1 Mod divisor=0) ou (num2 Mod divisor=0) entao

| | | se (num1 mod divisor=0) entao

| | | | num1<-num1 div divisor

| | | fimse

| | | se (num2 mod divisor=0) entao

Page 13: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

| | | | num2<-num2 div divisor

| | | fimse

| | | se (num1<>0) e (num2<>0) entao

| | | | MMC<-divisor*MMC

| | | fimse

| | fimse

| | se (num1 Mod divisor<>0) e (num2 Mod divisor<>0) entao

| | divisor<-divisor+1

| | fimse

| | se (num1<=1) e (num2<=1) e (num1<>0) e (num2<>0) entao

| | escreva ("O MÍNIMO MÚLTIPLO COMUM é: ",MMC)

| | fimse

| ate (num1<=1) e (num2<=1)

fimse

fimalgoritmo

10. Elabore um algoritmo que obtenha o máximo divisor comum (MDC) entre dois

números fornecidos.

algoritmo "calculaMdc"

// Função : Cálculo de MDC

// Autor : Jair Ferreira Camilo Júnior

// Data : 28/09/2013

// Seção de Declarações

var

n1,n2,num1,num2,mdc,resto:inteiro

inicio

// Seção de Comandos

escreva("Informe o primeiro numero")

leia(num1)

escreva("Informe o segundo numero")

leia(num2)

n1<-num1

Page 14: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

n2<-num2

enquanto (resto<>0) faca

resto<-num1 mod num2

n1<-n2

n2<-resto

fimenquanto

mdc<-n1

escreva("O máximo divisor comun entre ",num1," e",num2,"é: ",mdc)

fimalgoritmo

11. Faça um algoritmo que seja capaz de obter o quociente inteiro da divisão de dois números

fornecidos, sem utilizar a operação de divisão, nem divisão inteira (div).

algoritmo "divisaoInteira"// Função : Divisão sem operador aritmético// Autor : Jair Ferreira Camilo Júnior// Data : 28/09/2013// Seção de Declarações varnum1,num2,cont,result: inteiroinicio// Seção de Comandosescreva("Informe o primeiro numero")leia(num1)escreva("Informe o segundo numero")leia(num2)result<-0para cont de num2 ate num1 passo num2 faca cont<-num2-num2 result<-result+1fimparaescreva(num1," / ",num2," = ", result)fimalgoritmo

12. Faça um algoritmo que seja capaz de obter o resultado de uma exponenciação para qualquer

base e expoente inteiro fornecidos, sem utilizar a operação de exponenciação (pot).

algoritmo "calculaPotencia"

// Função : Cáculo de potência

// Autor : Jair Ferreira Camilo Júnior

// Data : 28/09/2013

Page 15: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

// Seção de Declarações

var

base,expoent,result,cont: inteiro

inicio

// Seção de Comandos

escreva("Informe o valor da base")

leia(base)

escreva("Informe o valor do expoente")

leia(expoent)

cont<-2

result<-base//variavel inicializada com valor inicial a base

se(expoent=1) entao

result<-base

fimse

se(expoent=0) entao

result<-1

senao

para cont de 2 ate expoent passo 1 faca

result<-result*base

cont<-cont+1

fimpara

escreva("o resultado e ",result)

fimse

fimalgoritmo

13. Construa um algoritmo que dado um valor N, gere o enésimo termo da série Fibonacci. A

série Fibonacci tem como o primeiro termo 0 e o segundo termo, 1. Os próximos termos serão

dados pela soma dos dois últimos. Exemplo: 0, 1, 1, 2, 3, 5, 8, 13, 21, …

algoritmo "enesimoNumero"

// Função :

Page 16: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

// Autor :

// Data : 28/09/2013

// Seção de Declarações

var

n,fib1,fib2,fib3,cont: inteiro

inicio

// Seção de Comandos

fib1<-0

fib2<-1

escreva("primeiro: ",fib1,"segundo: ",fib2)

para cont de 0 ate 10 passo 1 faca

escreva("Informe um valor ")

leia(n)

fib1<-n

fib3<-fib1+fib2

escreva("proximo: ",fib3)

fib1<-fib2

fib2<-fib3

cont<-cont+1

fimpara

fimalgoritmo

14. Construa um algoritmo que, dado um conjunto de valores inteiros e positivos, determine

qual o menor e o maior valor do conjunto. O final do conjunto de valores é conhecido

quando for lido o valor -1, que não deve ser considerado.

algoritmo "maiorMenorDconjunto"

// Função : Calcular o maior e o menor do conjunto

// Autor : Jair Ferreira Camilo Júnior

// Data : 28/09/2013

// Seção de Declarações

var

n,i,cont,maior,menor: inteiro

Page 17: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

inicio

// Seção de Comandos

maior<-0

menor<-99999999

enquanto (n<>-1) faca

escreva("Informe o ",i," Valor")

leia(i)

se(i=-1) entao

escreva("Fim")

n<--1

senao

se(i>maior) entao

maior<-i

fimse

se(i<menor) entao

menor<-i

fimse

fimse

fimenquanto

escreva("o maior e: ",maior, "E o menor: ",menor)

fimalgoritmo

15. Uma rainha requisitou os serviços de um monge e disse que pagaria qualquer preço. O

monge, necessitando de alimentos, perguntou à rainha se o pagamento poderia ser feito com

grãos de trigo dispostos em um tabuleiro de xadrez, de tal forma que o primeiro quadro

tivesse apenas um grão e os quadros subsequentes, o dobro do quadro anterior. A rainha

considerou o pagamento barato e pediu que o serviço fosse executado, sem se dar conta de

que seria impossível efetuar o pagamento. Faça um algoritmo para calcular o número de

grãos que o monge esperava receber.

algoritmo "rainhaMongeImpossivel"

// Função : Cálculo de graos a receber pelo monge

// Autor : Jair Ferreira Camilo Júnior

Page 18: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

// Data : 28/09/2013

// Seção de Declarações

var

//se declarar a variável i como inteiro da um problema integer of flow

i: real //variável que vai acumular o resultado total

cont: inteiro //contador

inicio

// Seção de Comandos

cont<-1

i<-1

escreval("quadro 1: ",cont)

para cont de 2 ate 64 passo 1 faca

i<-i+i

escreval("quadro ",cont,":",i)

cont<-cont+1

fimpara

escreva("Total:",i)

fimalgoritmo

16. Em uma eleição presidencial existem quatro candidatos. Os votos são informados por

código. Os dados utilizados para a contagem obedecem à seguinte codificação:

1. 1, 2, 3 e 4 = voto para os respectivos candidatos.

2. 5 = voto nulo.

3. 6 = voto em branco.

Elabore um algoritmo que calcule e escreva:

1. O total de votos para cada candidato e seu percentual sobre o total.

2. O total de votos nulos e seu percentual sobre o total.

2. O total de votos brancos e seu percentual sobre o total. Como

finalizador do conjunto de votos, tem-se o valor de 0.

algoritmo "eleicaoPresidencial"

// Função : calcular resultado de eleição

Page 19: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

// Autor : Jair Ferreira

Camilo Júnior

// Data : 28/09/2013

// Seção de Declarações

var

n,cod,cand1,cand2,cand3,cand4,bran,nul: inteiro

total,cont: inteiro

perc: real

inicio

// Seção de Comandos

enquanto (n<>0) faca

escreval("Informe o codigo do candidato que deseja votar ")

escreval("1,2,3,4 ou 5 para branco 6 para nulo ")

escreval("para encerrar a votação 0")

leia(cod)

se(cod=0) entao

escreva("Eleicao finalizada")

n<-0

senao

escolha cod

caso 1

cand1<-cand1+1

total<-total+1

caso 2

cand2<-cand2+1

total<-total+1

caso 3

cand3<-cand3+1

total<-total+1

caso 4

cand4<-cand4+1

total<-total+1

caso 5

bran<-bran+1

total<-total+1

caso 6

nul<-nul+1

outrocaso

Page 20: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

escreva("Opção inválida")

fimescolha

fimse

fimenquanto

//cálculo porcentagem de votos candidato 1

perc<-(cand1*100)/total

escreval("O candidato 1 teve ",cand1,"votos ",perc,"% dos votos")

//cálculo porcentagem de votos candidato 2

perc<-(cand2*100)/total

//cálculo porcentagem de votos candidato 3

escreval("O candidato 2 teve ",cand2,"votos ",perc,"% dos votos")

perc<-(cand3*100)/total

//cálculo porcentagem de votos candidato 4

escreval("O candidato 3 teve ",cand3,"votos ",perc,"% dos votos")

perc<-(cand4*100)/total

//cálculo porcentagem de votos branco

escreval("O candidato 4 teve ",cand4,"votos ",perc,"% dos votos")

perc<-(bran*100)/total

//cálculo porcentagem de votos nulo

escreval("Votos em branco teve ",bran,"votos ",perc,"% dos votos")

perc<-(nul*100)/total

escreval("Votos nulo teve ",nul,"votos ",perc,"% dos votos")

fimalgoritmo

17. Elabore um algoritmo que imprima todos os números primos existentes entre N1 e N2, em

que N1 e N2 são números inteiros fornecidos pelo usuário.

algoritmo "semnome"

// Função :

// Autor :

// Data : 30/9/2013

// Seção de Declarações

var

Page 21: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

n1, n2, a, b: inteiro

primo: logico

inicio

// Seção de Comandos

escreva ("digite 2 números")

leia(n1, n2)

escreval ("Os número primos são:")

para a de n1 ate n2 passo 1 faca

primo<-verdadeiro

para b de 2 ate (a-1) passo 1 faca

se (a mod b = 0)entao

primo<-falso

fimse

fimpara

se primo=verdadeiro entao

escreval(a)

fimse

fimpara

fimalgoritmo

18. Construa um algoritmo que leia um conjunto de dados contendo altura e sexo (M ou F) de

50 pessoas e depois, calcule e escreva:

1. a maior e menor altura do grupo.

2. A média de altura das mulheres.

3. O número de homens e a diferença percentual entre eles e as mulheres.

algoritmo "maiorMenorMediaAltura"// Função : Calcula a maior altura e menor altura geral e media de altura das mulheres// Autor : Jair Ferreira Camilo Júnior// Data : 28/09/2013// Seção de Declaraçõesvarsexo: caracterealtura,maior,menor,mediam: realcont,qtdm: inteiro

Page 22: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

inicio// Seção de Comandosmaior<-0menor<-999999999qtdm<-0para cont de 1 ate 50 passo 1 faca

escreval("Informe a altura") leia(altura) escreval("Informe o sexo m ou f") leia(sexo) se((sexo= "f") ou (sexo= "F")) entao mediam<-mediam+altura qtdm<-qtdm+1 fimse se(altura>maior) entao maior<-altura fimse se(altura<menor) entao menor<-altura fimse cont<-cont+1fimparamediam<-mediam/qtdmescreval("A maior altura foi ", maior)escreval("A menor altura foi ", menor)escreval("A media da altura das mulheres e: ",mediam)fimalgoritmo

19. Prepare um algoritmo que calcule o valor de H, sendo que ele é determinado pela série H =1/1 + 3/2 + 5/3 + 7/4 + … + 99/50.

algoritmo "serieFracao"// Função : Calcular os próximos elementos de uma série// Autor : Jair Ferreira Camilo Júnior// Data : 28/09/2013// Seção de Declaraçõesvarh: realdividendo,divisor: realcont: inteiroinicionumerador<-1//inicia os contadores para que ele possa andar no laço(loop)denominador<-1cont<-1h<-0//zero o H porq não somamos nada aindapara cont de 1 ate 50 passo 1 faca h<-dividendo/divisor

Page 23: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

dividendo<-dividendo+2 divisor<-divisor+1 escreval("O valor de H e: ",h) cont<-cont+1fimparafimalgoritmo

20. Prepare um algoritmo que calcule o valor de S, sendo que ele é determinado pela série S =

1/1 - 2/4 + 3/9 - 4/16 + 5/25 – 6/36 + … - 10/100.

algoritmo "serieFracaoPotencia"// Função : Calcular os próximos elementos de uma série numerado aumenta 1 e potencia 2 divisor// Autor : Jair Ferreira Camilo Júnior// Data : 28/09/2013// Seção de Declaraçõesvarh: realdividendo,divisor: realcont: inteiroiniciodividendo<-1//inicia os contadores para que ele possa andar no laço(loop)divisor<-1cont<-1h<-0//zero o H porq não somamos nada aindapara cont de 1 ate 10 passo 1 faca h<-dividendo/divisor

dividendo<-dividendo+1 divisor<-dividendo*dividendo escreval("O valor de H e: ",h) cont<-cont+1fimparafimalgoritmo

21. Calcule o imposto de renda de um grupo de 10 contribuintes, considerando que os dados de

cada contribuinte, número do CPF, número de dependentes e renda mensal são valores

fornecidos pelo usuário. Para cada contribuinte será feito um desconto de 5% do salário

mínimo por dependente.

22. Valores da aliquotas

Renda líquida Alíquota

Page 24: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

Até 2 salários mínimos (S.M) Isento2 a 3 S.M 5%3 a 5 S.M 10%5 a 7 S.M 15%Acima de 7 S.M 20%Observe que deve ser fornecido o

valor do salário mínimo atual

algoritmo "calculaRendaeImposto"

// Função : Calcula reda liquida e imposto de renda e desconto de 5%

por dependente

// Autor :

// Data : 28/09/2013

// Seção de Declarações

var

cpf: caractere

numdp,cont,aliq: inteiro

renda,rendaliq,desconto,imposto,salm: real

inicio

// Seção de Comandos

salm<-678

para cont de 1 ate 10 passo 1 faca

escreva("Informe o cpf")

leia(cpf)

escreval("Informe a renda mensal")

leia(renda)

escreval("Informe a quantidade de dependentes")

leia(numdp)

se(renda > 4746) entao

aliq<-20

desconto<-(0.05*renda)*numdp

imposto<-0.2*renda

Page 25: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

fimse

se((renda>3390) e (renda<=4746)) entao

aliq<-15

desconto<-(0.05*renda)*numdp

imposto<-0.15*renda

fimse

se((renda>2034) e (renda<=3390)) entao

aliq<-10

desconto<-(0.1*renda)*numdp

imposto<-0.1*renda

fimse

se((renda>1356) e (renda<=2034)) entao

aliq<-5

desconto<-(0.05*renda)*numdp

imposto<-0.1*renda

fimse

se((renda>0) e (renda<=1356)) entao

aliq<-0

desconto<-(0.05*renda)*numdp

imposto<-0.1*renda

fimse

rendaliq<-renda-imposto -desconto

escreval("CPF: ", cpf)

escreval("renda Liquida :",rendaliq," aliquota",aliq)

escreval("O salario mínimo e :",salm)

fimpara

fimalgoritmo

22. Anacleto tem 1,50 metros de altura e cresce 2 centímetros por ano,

enquanto Felisberto tem 1,10 metros e cresce 3 centímetros por ano. Construa um

algoritmo que calcule e imprima quantos anos serão necessários para que

Page 26: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

Felisberto seja maior que Anacleto

algoritmo "anacleto"

// Função : Cálculo de tempo para alcançar altura

// Autor : Jair Ferreira Camilo Júnior

// Data : 28/09/2013

// Seção de Declarações

var

anac,felis: real

result: inteiro

inicio

// Seção de Comandos

anac<-1.5

felis<-1.10

result<-0

repita

anac<-anac+0.02

felis<-felis+0.03

result<-result+1

ate (anac < felis)

escreva("Resultado: ",result)

fimalgoritmo

23. Em um prédio há três elevadores denominados A, B e C. Para otimizar o sistema de controle

dos elevadores foi realizado um levantamento no qual cada usuário respondia:

1. o elevador que utilizava com mais frequência

2. o período em que utiliza o elevador entre:

1. M = matutino

2. V = vespertino

3. N = noturno

Construa um algoritmo que calcule e imprima:

Page 27: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

1. qual é o elevador mais frequentado e em que período se concentra o maior fluxo

2. qual o período mais usado de todos e a que elevador pertence

3. qual a diferença percentual entre o mais usado dos horários e o menos usado

4. qual a porcentagem sobre o total de serviços prestados do elevador de média utilização.

algoritmo "estatisticaElevador"// Função :Estattítitica de uso de tres elevadores// Autor : Jair Ferreira Camilo Júnior// Data : 28/09/2013// Seção de Declaraçõesvar

a,b,c,mat,vesp,not,maior,menor,total,turnmaior,turnmenor: inteiroamat,avesp,anot,bmat,bvesp,bnot,cmat,cvesp,cnot: inteiroelev,opt,periodo,maioruso,menoruso,turnomais,turnomenos: caracterdifperc: real

inicio// Seção de Comandos

a<-0b<-0c<-0

maior<-0menor<-999999999

turnmaior<-0turnmenor<-999999999//variaveis abaixo para total turnomat<-0vesp<-0not<-0//variaveis abaixo para total turno por elevadoramat<-0avesp<-0anot<-0

bmat<-0bvesp<-0bnot<-0

cmat<-0cvesp<-0cnot<-0

escreva("Deseja iniciar a pesquisa informe s ou n")leia(opt)enquanto opt="s" faca

escreva("Informe o eleveador que mais utiliza A, B, ou C")

Page 28: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

leia(elev) se((elev="a")ou(elev="A")ou(elev="b")ou(elev="B")ou(elev="c")ou(elev="C"))entao total<-total+1 se((elev="a") ou (elev="A")) entao a<-a+1 se(a>maior)entao maior<-a maioruso<-"A" fimse se(a<menor) entao menor<-a

menoruso<-"A" fimse fimse

se((elev="b") ou (elev="B")) entao b<-b+1 se(b>maior) entao maior<-b maioruso<-"B" fimse se(b<menor) entao menor<-b

menoruso<-"B" fimse fimse se((elev="c") ou (elev="C"))entao c<-c+1 se(c>maior) entao maior<-c maioruso<-"C" fimse se(c<menor) entao menor<-c menoruso<-"C" fimse

fimse fimse escreva("O periodo em que mais utiliza o elevador, M, V, ou N ") leia(periodo) se((periodo="m")ou(periodo="M")ou(periodo="v")ou(periodo="V")ou(periodo="n")ou(periodo="N")) entao se((periodo="m") ou (periodo="M")) entao mat<-mat+1 fimse se(mat>turnmaior)entao turnmaior<-mat turnomais<-"Turno Matutino" fimse

Page 29: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

se(mat<turnmenor) entao menor<-amat turnomenos<-"Turno Matutino" fimse se((elev="a")ou (elev="A")) entao amat<-amat+1 fimse se((elev="b")ou (elev="B")) entao bmat<-bmat+1 fimse se((elev="c")ou (elev="C")) entao cmat<-cmat+1 fimse

se((periodo="v") ou (periodo="V")) entao vesp<-vesp+1 fimse se(vesp>turnmaior)entao maior<-vesp turnomais<-"Turno Vespertino" fimse se(vesp<turnmenor) entao menor<-vesp turnomenos<-"Turno Vespertino" fimse se((elev="a")ou (elev="A")) entao avesp<-avesp+1 fimse

se((elev="b")ou (elev="B")) entao bvesp<-bvesp+1 fimse se((elev="c")ou (elev="C")) entao cvesp<-cvesp+1 fimse

se((periodo="n") ou (periodo="N")) entao not<-not+1 fimse se(not>turnmaior)entao maior<-not turnomais<-"Turno Vespertino" fimse se(not<turnmenor) entao menor<-not turnomenos<-"Turno Vespertino" fimse se((elev="a")ou (elev="A")) entao anot<-anot+1 fimse se((elev="b")ou (elev="B")) entao bnot<-bnot+1 fimse se((elev="c")ou (elev="C")) entao

Page 30: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

cnot<-cnot+1 fimse

escreval("Nova pesquisa digite S ou qualquer tecla e enter p/ Encerrar")

leia(opt) senao escreva("Elevador invalido") escreval("Deseja cadastrar novo dado S para sim N para

Encerrar") leia(opt) fimse

fimenquanto

escreval("O elevador mais frequentado é o ",maioruso)se((a>b)e (a>c)) entao se((amat>avesp)e(amat>avesp))entao escreval("Seu maior fluxo se deu no turno Matutino ")

fimse se((avesp>amat)e(avesp>anot)) entao escreval("Seu maior fluxo se deu no turno Vespesrtino") fimse

se((anot>amat)e(anot>avesp)) entao escreval("Seu maior fluxo se deu no turno Noturno") fimsefimse

se((b>a)e(b>c)) então

se((bmat>avesp)e(bmat>avesp))entao escreval("Seu maior fluxo se deu no turno Matutino ") fimse se((bvesp>amat)e(bvesp>anot)) entao escreval("Seu maior fluxo se deu no turno Vespesrtino") fimse se((bnot>amat)e(bnot>avesp)) entao escreval("Seu maior fluxo se deu no turno Noturno") fimsefimsese((c>a)e(c>b)) entao se((cmat>cvesp)e(cmat>cvesp))entao escreval("Seu maior fluxo se deu no turno Matutino ") fimse se((cvesp>amat)e(cvesp>anot)) entao escreval("Seu maior fluxo se deu no turno Vespesrtino")

fimse se((cnot>amat)e(cnot>avesp)) entao

escreval("Seu maior fluxo se deu no turno Noturno")

Page 31: construcao de algoritmos

FACULDADE ANHANGUERA DE ANÁPOLISAv. Universitária, n. 683 – Centro – Anápolis-GO – (62) 3098-3838

fimsefimse

escreval("O periodo mais utilizado e o",turnomenos)escreval("O maior fluxo pertence ao elevador ",maioruso)

escreval("A diferenca de percentual entre o mais utilizado ")

escreval("e o menos usado é",(maior/menor)*100,"%")

fimalgoritmo