Bacharelado em Ciência e Tecnologia · Termos da PA ENTRADA: Quais os ... Fibonacci possui os dois...
Transcript of Bacharelado em Ciência e Tecnologia · Termos da PA ENTRADA: Quais os ... Fibonacci possui os dois...
Bacharelado em Ciência e Tecnologia BC0505 – Processamento da Informação
LISTA EXTRA de EXERCÍCIOS
REPETIÇÃO / VALIDAÇÃO DE DADOS / TESTE DE MESA
Soluções de Referência em Portugol
[1]. Escreva um programa que solicita ao usuário dois valores inteiros e positivos que serão a base e o expoente. O programa deve calcular e escrever o resultado da base elevado à potência.
OBS: Não utilizar nenhuma função ou operador que faça o cálculo de potenciação. A ideia é
escrever um programa que calcule a potenciação.
Exemplo: base = 2 expoente = 5 resultado = 2 x 2 x 2 x 2 x 2 = 32
ATENÇÃO: seu programa deve validar a entrada de dados de modo que sejam informados números positivos.
SAÍDA: Quais os resultados que o algoritmo dever fornecer ?
Valor correspondente à base elevada à potência.
ENTRADA: Quais os insumos necessários para se obter a saída?
Base e expoente.
PROCESSAMENTO: Como transformar os insumos na saída?
Multiplicando a base N vezes, sendo N o valor do expoente.
PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
// DECLARAÇÃO DE VARIÁVEIS
inteiro base,exp,potencia=0,resultado=1
// ENTRADA
escreva("Entre com a base: ")
leia(base)
escreva( "Entre com o expoente: " )
leia(exp)
// VALIDAÇÃO – verificará se os valores inseridos são maiores ou iguais a zero, enquanto os
//valore inseridos forem menores que zero, o programa permanecerá pedindo um novo número
enquanto(base<0){
escreva("Sua base não deve ser negativa! Entre com a base: ")
leia(base)
}
enquanto(exp<0)
{
escreva("Seu expoente não deve ser negativo! Entre com o expoente: ")
leia(exp)
}
// PROCESSAMENTO – Calculo da potenciação
para(inteiro i=0; i<exp; i++){
resultado=base*resultado
}
// SAÍDA
escreva( "Resultado: ", resultado)
}
}
[2]. Escreva um programa para imprimir uma Progressão Aritmética (PA), sendo que serão fornecidos o primeiro termo, a razão e a quantidade de termos desejada. Por exemplo, para primeiro termo = 13, razão = 5 e quantidade de termos = 8 o programa deverá exibir: 13, 18, 23, 28, 33, 38, 43, 48
SAÍDA: Quais os resultados que o algoritmo dever fornecer ?
Termos da PA
ENTRADA: Quais os insumos necessários para se obter a saída?
Três números inteiros: primeiro termo da PA, razão e quantidade de termos
PROCESSAMENTO: Como transformar os insumos na saída?
Encontrar cada termo da PA, somando a razão ao primeiro termo, repetindo isso n vezes, sendo n o
número de termos da progressão
PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
// DECLARAÇÃO DE VARIÁVEIS
inteiro termo, razao, quantidade
//ENTRADA
escreva("Entre com o primeiro termo da PA: ")
leia(termo)
escreva("Entre com a razão da PA: ")
leia(razao)
escreva("Entre com a quantidade de termos desejada: ")
leia(quantidade)
//PROCESSAMENTO E SAÍDA;
enquanto(quantidade>0){ //O enquanto será repetido até que quantidade atinja 0
se(quantidade-1==0){ //Verificará se já está conferindo o último termo
escreva(termo, ".\n") //Caso esteja, ele imprimirá o último termo e pulará uma linha
}senao{ //Caso não esteja no último termo
escreva(termo, " ") //Será impresso apenas um espaço após o termo
}
termo = termo + razão //Encontra o novo termo da PA
quantidade --
}
}
}
[3]. A série de Fibonacci é formada pela seguinte sequência; 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ..., etc. Escreva um algoritmo que gere a série de Fibonacci até o eNésimo termo. O valor de N (enésimo) deverá ser solicitado pelo usuário e deverá ser maior que 10.
SAÍDA: Quais os resultados que o algoritmo dever fornecer ?
Série de Fibonacci até o enésimo termo.
ENTRADA: Quais os insumos necessários para se obter a saída?
Número inteiro N>10.
PROCESSAMENTO: Como transformar os insumos na saída?
Fibonacci possui os dois primeiros termos T1 e T2 iguais a 1.
O k-ésimo (para k>=2) termo vem da soma dos dois anteriores, ou seja, T(k) = T(k-1) + T(k-2)
PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
//DECLARAÇÃO DE VARIÁVEIS
inteiro N, Tk=0, T1 = 1, T2=1
//T1 e T2 serao depois usadas como T(k-2) e T(k-1) da formula
// ENTRADA
escreva ( "Informe o valor de N: \n" )
leia (N)
// PROCESSAMENTO & SAÍDA
escreva ( "\n" + T1+ " " )
escreva(T2+ " " )
para (inteiro i=2; i<N; i++)
{
Tk=T1+T2 //novo termo
escreva(Tk+ " " )
T1 = T2 //atualizo o termo mais 'velho' pelo seguinte
T2 = Tk //atualizo o termo pelo mais novo
}
}
}
[4]. Escreva um algoritmo para informar se um número N, é primo ou não. Faça a validação de dados de
forma que N seja positivo.
SAÍDA: Quais os resultados que o algoritmo dever fornecer ?
Uma frase dizendo se N é primo ou não.
ENTRADA: Quais os insumos necessários para se obter a saída?
O valor a ser decidido se é primo ou não (N).
PROCESSAMENTO: Como transformar os insumos na saída?
Como um número primo é um número que só é divisível por 1 e por ele mesmo, N deve ser dividido por
todos os números menores ou iguais a ele, até 1. Caso ele seja divisível por mais de 2 números (N e 1),
ele não é considerado primo. Deve haver uma variável que verifique se o número é divisível pelo número
em questão.
PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
// DECLARAÇÃO DE VARIÁVEIS
inteiro N, verifica=1, num
// ENTRADA
escreva( "Entre com o número: " )
leia(N)
// VALIDAÇÃO
enquanto(N<0){
escreva( "Valor inválido! O número deve ser positivo. Tente novamente: " )
leia(N)
}
// PROCESSAMENTO
para(inteiro i=2; i<N; i++){ //Passará dividindo N por todos os termos desde o número 2
se(N%i == 0){ //Caso N seja divisível por algum valor
verifica=verifica+1 //Será somado 1 ao contador verifica
escreva ("\n é divisivel por: "+i)
}
}
// SAÍDA
se(verifica>2){ //Se o contador for somado mais de uma vez
//(lembrando que ele já começa com valor 1)
escreva( "\n O número não é primo." ) //Pela definição N não será primo
} senao{ //Caso contrário
escreva( "O número é primo." ) //Ele será primo
}
}
}
[5]. Escreva um algoritmo que calcule N! (fatorial de N), sendo que o valor inteiro de N é fornecido pelo
usuário. Faça a validação de dados de forma que N seja positivo. Sabe-se que:
5! = 5 x 4 x 3 x 2 x 1 = 120
0! = 1, por definição
SAÍDA: Quais os resultados que o algoritmo dever fornecer ?
O fatorial de um número
ENTRADA: Quais os insumos necessários para se obter a saída?
Um número inteiro positivo
PROCESSAMENTO: Como transformar os insumos na saída?
Aplicar o algoritmo convencional de fatorial
PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
// DECLARAÇÃO DE VARIÁVEIS
inteiro entrada, fatorial = 1, i
//ENTRADA DE DADOS
escreva("Entre com um número inteiro positivo: ")
leia(entrada)
// VALIDAÇÃO
enquanto(entrada<0){
escreva("Entrada inválida! Entre com um número inteiro e positivo: ")
leia(entrada)
}
//PROCESSAMENTO E SAÍDA
se(entrada == 0){
fatorial = 1
escreva(entrada, "! = ", fatorial, ".\n")
}senao{
para(i = 1 ; i <= entrada ; i++){
fatorial = fatorial * i
}
escreva(entrada, "! = ", fatorial, ".\n")
}
}
}
[6]. Escreva um programa que exiba 30 vezes na tela a mensagem “Vou ser aprovado com A em Processamento da Informação!”.
SAÍDA: Quais os resultados que o algoritmo dever fornecer ?
Texto repetido 30 vezes
ENTRADA: Quais os insumos necessários para se obter a saída?
Nenhuma entrada.
PROCESSAMENTO: Como transformar os insumos na saída?
Iterar com um laço que provoque a repetição da frase.
PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
// PROCESSAMENTO
//escolha seu laco de repeticao favorito
para (inteiro i=1; i<=30; i++)
{
escreva( "\n Vou ser aprovado com A em Processamento da Informação!" )
}
}
}
[7]. Escreva um programa que exiba na tela os números inteiros de 100 até 1.
SAÍDA: Quais os resultados que o algoritmo dever fornecer ?
Números de 100 a 1.
ENTRADA: Quais os insumos necessários para se obter a saída?
Neste caso, não existem entradas, pois o algoritmo mostrará sempre o mesmo caso: de 100 a 1.
PROCESSAMENTO: Como transformar os insumos na saída?
Subtrair 1 à variável até que chegue a 1
PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
// PROCESSAMENTO E SAÍDA
para(inteiro i=100; i>=1; i--){
escreva(i, "\n" )
}
}
}
[8]. Escreva um programa que exiba na tela os números inteiros de 50 até 200.
SAÍDA: Quais os resultados que o algoritmo dever fornecer ?
Inteiros de 50 a 200
ENTRADA: Quais os insumos necessários para se obter a saída?
Não há
PROCESSAMENTO: Como transformar os insumos na saída?
Método iterativo de soma sucessiva
PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
//PROCESSAMENTO E SAÍDA
para(inteiro numeros = 50; numeros <= 200; numeros++){
escreva(numeros, "\n")
}
}
}
[9]. Escreva um programa em que os números A e Z deverão ser informados pelo usuário e que exiba na tela os números inteiros de A até Z
SAÍDA: Quais os resultados que o algoritmo dever fornecer ?
Sequência de números entre A e Z
ENTRADA: Quais os insumos necessários para se obter a saída?
Números inteiros A e Z, sendo A menor ou igual a Z (é possível eliminar essa suposição e modificar o
programa para quaisquer A e Z inteiros, basta usar mais condicionais, o que não é o foco da lista)
PROCESSAMENTO: Como transformar os insumos na saída?
Iterar em um laço de repetição incrementando o contador do laço que começa de A até alcançar o valor de
Z, imprimindo os números a cada passo.
PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
//DECLARAÇÃO DE VARIÁVEIS
inteiro numA, numZ
// ENTRADA
escreva( "\n Informe um número inteiro qualquer [chamaremos de A] " )
leia(numA)
escreva( "\n Informe um número inteiro maior que A [chamaremos de Z] " )
leia(numZ)
// PROCESSAMENTO E SAÍDA
se(numA>numZ){
escreva( "\n Erro: A > Z " )
}
senao{
para(inteiro cont=numA; cont<=numZ; cont++){
escreva( " " , cont)
}
}
}
}
[10]. Escreva um programa que exiba na tela a soma dos números inteiros do intervalo [A, Z]. Faça a
validação de dados de modo que não seja aceito A > Z
SAÍDA: Quais os resultados que o algoritmo dever fornecer ?
Números de A a Z.
ENTRADA: Quais os insumos necessários para se obter a saída?
A e Z.
PROCESSAMENTO: Como transformar os insumos na saída?
Deve ser somado 1 ao valor de A até que tal número alcance o valor de Z.
PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
// DECLARAÇÃO DE VARIÁVEIS
inteiro A=1,Z=0
// ENTRADA E VALIDAÇÃO
enquanto(A>Z){
escreva( "Entre com o valor A: " )
leia(A)
escreva( "Entre com o valor Z: " )
leia(Z)
se(A>Z){
escreva( "Valores inválidos! A deve ser menor que Z\n" )
}
}
// PROCESSAMENTO E SAÍDA
escreva( "\nNúmeros do intervalo [",A,", ",Z,"]: \n" )
para(inteiro i=A;i<=Z;i++){
escreva(i, "\n" )
}
}
}
[11]. Dado um limite inferior e superior, calcule a soma de todos os números pares contidos nesse intervalo.
Faça a validação de dados de forma que o segundo número informado seja maior que o primeiro (inferior,superior)
SAÍDA: Quais os resultados que o algoritmo dever fornecer ?
Soma dos pares entre os limites
ENTRADA: Quais os insumos necessários para se obter a saída?
Dois inteiros
PROCESSAMENTO: Como transformar os insumos na saída?
A começar do sucessor do limite inferior indo até o antecessor do limite superior, quando o número for
par somar seu valor à variável soma
PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
// DECLARAÇÃO DE VARIÁVEIS
inteiro numero1, numero2, i, soma = 0
//ENTRADA E VALIDAÇÃO DE DADOS
escreva("Entre com um número inteiro: ")
leia(numero1)
escreva("Agora, ente com outro número inteiro e maior que o anterior: ")
leia(numero2)
enquanto(numero2 <= numero1){
escreva("Desculpe, mas o número deve ser inteiro e maior que o anterior: ")
leia(numero2)
}
//PROCESSAMENTO
i = numero1 + 1
enquanto(i < numero2){
se(i % 2 == 0){ //Verifica se o número a ser somado é par
soma = soma + i //Se for, entra na soma final
}
i++
}
//SAÍDA
escreva("A soma dos pares entre ", numero1, " e ", numero2, " é ", soma, ".\n")
}
}
[12]. Escreva um programa que solicita ao usuário uma quantidade indeterminada de números inteiros
positivos (faça a validação de dados de forma que o número informado seja positivo). O programa deve calcular e escrever a média aritmética apenas dos números pares. A entrada de dados deve ser encerrada quando o número ZERO for digitado.
SAÍDA: Quais os resultados que o algoritmo dever fornecer ?
Média dos números pares digitados
ENTRADA: Quais os insumos necessários para se obter a saída?
Uma quantidade indeterminada de números inteiros
PROCESSAMENTO: Como transformar os insumos na saída?
Validar os números de entrada
Dentre eles, selecionamos os pares para contribuir na fórmula de média aritmética: (x1+x2+...+xN)/N
PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
//DECLARAÇÃO DE VARIÁVEIS
real soma=0.0, qtd=0.0, media
inteiro numero=3 //inicializa numero com um valor qualquer diferente de zero
// ENTRADA
enquanto(numero!=0){ //No momento em que 0 for digitado o programa sai do enquanto
escreva( "\n Informe um número inteiro positivo \n" )
leia(numero)
enquanto(numero<0){
escreva( "\n Erro! Você informou um número negativo, digite um inteiro positivo \n" )
leia(numero)
}
// PROCESSAMENTO
se(numero % 2 == 0 e numero!=0){
soma = soma + numero //faz a soma dos números pares
qtd = qtd+1 //computa quantos números foram digitados
}
}
media = soma/qtd
// SAÍDA
escreva( "\n A média aritmética dos pares digitados é de " , media)
}
}
[13]. Imprima uma tabela de conversão de polegadas para centímetros, de 1 a 20. Considere que Centímetro = Polegada * 2,54. Recomenda-se utilizar o comando PARA.
SAÍDA: Quais os resultados que o algoritmo dever fornecer ?
Valores em polegadas convertidos para centímetros.
ENTRADA: Quais os insumos necessários para se obter a saída?
Neste caso, não existem entradas, pois o algoritmo mostrará sempre o mesmo caso (a tabela de
conversão).
PROCESSAMENTO: Como transformar os insumos na saída?
Valor em centímetro = valor em polegadas * 2,54.
PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
// DECLARAÇÃO DE VARIÁVEIS
real cm
// PROCESSAMENTO E SAÍDA
para(inteiro i=1;i<=20;i++){
cm=i*2.54
escreva(i, " polegada(s): " ,cm, " cm\n" )
}
}
}
[14]. Escreva um programa que solicita a idade de 20 pessoas e exiba a quantidade de pessoas que possui idade maior ou igual a 18 anos. Exibir também a média da idade das 20 pessoas.
SAÍDA: Quais os resultados que o algoritmo dever fornecer ?
Número de pessoas com 18 anos ou mais e a média das idades
ENTRADA: Quais os insumos necessários para se obter a saída?
20 números inteiros
PROCESSAMENTO: Como transformar os insumos na saída?
Toda entrada será somada à variável “media”, se for maior ou igual a 18, somar uma unidade à variável
“maiores”. Após somadas todas as idades, basta dividir a variável “media” pelo número de entradas, no
caso, por 20.
PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
// DECLARAÇÃO DE VARIÁVEIS
inteiro i = 0, maiores = 0
real media = 0.00, idades
//ENTRADA DE DADOS E PROCESSAMENTO
enquanto(i < 20){
escreva("Insira ao lado a idade da ", (i+1), ".ª pessoa, em anos: ")
leia(idades)
se(idades >= 18 ){
maiores++
}
media = media + idades
i++
}
media = media/i
//SAÍDA
escreva("Na lista dada, há ", maiores, " pessoas com idade igual ou superior a 18 anos.\n")
escreva("A idade média dada foi de ", media, " anos.\n")
}
}
[15]. A série de RICCI difere da série de FIBONACCI porque os dois primeiros termos podem ser definidos pelo usuário. Imprima os n primeiros termos da série de RICCI.
SAÍDA: Quais os resultados que o algoritmo dever fornecer ?
Os n primeiros termos da série de Ricci
ENTRADA: Quais os insumos necessários para se obter a saída?
2 números inteiros, de preferência positivos
PROCESSAMENTO: Como transformar os insumos na saída?
Ricci possui os dois primeiros termos T1 e T2 definidos pelo usuário.
O k-ésimo (para k>=2) termo vem da soma dos dois anteriores, ou seja, T(k) = T(k-1) + T(k-2)
PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
//DECLARAÇÃO DE VARIÁVEIS
inteiro N, Tk=0, T1, T2
//T1 e T2 serao depois usadas como T(k-2) e T(k-1) da formula
// ENTRADA
escreva ( "Informe o valor do primeiro termo: \n" )
leia (T1)
escreva ( "Informe o valor do segundo termo: \n" )
leia (T2)
escreva ( "Informe o valor de N: \n" )
leia (N)
// PROCESSAMENTO E SAÍDA
escreva ( "\n" + T1+ " " )
escreva(T2+ " " )
para (inteiro i=2; i<N; i++)
{
Tk=T1+T2 //novo termo
escreva(Tk+ " " )
T1 = T2 //atualizo o termo mais 'velho' pelo seguinte
T2 = Tk //atualizo o termo pelo mais novo
}
}
}
[16]. A série de FETUCCINE difere da série de RICCI porque o termo de posição par é resultado da subtração dos dois anteriores. Os termos ímpares continuam sendo o resultado da soma dos dois elementos anteriores. Imprima os n primeiros termos da série de FETUCCINE.
SAÍDA: Quais os resultados que o algoritmo dever fornecer ?
Os n primeiros termos da série de Fetuccine.
ENTRADA: Quais os insumos necessários para se obter a saída?
O número de termos n.
PROCESSAMENTO: Como transformar os insumos na saída?
Caso a posição seja ímpar: soma dos dois últimos valores.
Caso a posição seja par: subtração dos dois últimos valores.
Os valores x e y recebem, nesta ordem, o penúltimo e o último valor da sequência. No começo eles são
fixados em 1. Posteriormente, o valor dessas variáveis deve mudar.
PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
// DECLARAÇÃO DE VARIÁVEIS
inteiro n,x=1,y=1,valor
// ENTRADA
escreva( "Entre com o número de termos da série: " )
leia(n)
// PROCESSAMENTO E SAÍDA
escreva(x, "\n" )
escreva(y, "\n" )
para(inteiro i=3;i<=n;i++){
se(i%2==0){
valor=x+y
}senao{
valor=y-x
}
escreva(valor, "\n" )
x=y
y=valor
}
}
}
[17]. Dado um limite inferior e superior, imprima todos os números primos contidos nesse intervalo. Faça a
validação de dados de forma que o segundo número informado seja maior que o primeiro (inferior,superior)
SAÍDA: Quais os resultados que o algoritmo dever fornecer ?
Números primos entre um intervalo dado
ENTRADA: Quais os insumos necessários para se obter a saída?
Dois números inteiros, o segundo maior que o primeiro
PROCESSAMENTO: Como transformar os insumos na saída?
Um laço que incremente do número inferior até o superior, e a cada passo verifique se o número atual do
laço é primo, para verificar se é primo faz-se necessário usar mais outro laço que analise o resto de
divisão desse número.
PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
// DECLARAÇÃO DE VARIÁVEIS
inteiro numero1, numero2, i, j, divisores = 0
//ENTRADA DE DADOS
escreva("Entre com um número inteiro: ")
leia(numero1)
escreva("Agora, entre com outro número inteiro e maior que o anterior: ")
leia(numero2)
enquanto(numero2 <= numero1){
escreva("Desculpe, mas o número deve ser inteiro e maior que o anterior: ")
leia(numero2)
}
//PROCESSAMENTO
i = numero1 + 1
enquanto(i < numero2){
j = i - 1
enquanto(j > 0){
se(i % j == 0){
divisores++
}
j--
}
se(divisores == 1){
//SAÍDA
escreva(i, “ é um número primo!\n”)
}
divisores = 0
i++
}
}
}
[18]. Escreva um programa para ler vários números até obter o finalizador 0. Indicar quantos números quadrados perfeitos foram lidos. Um quadrado perfeito é aquele que tem raiz quadrada inteira.
SAÍDA: Quais os resultados que o algoritmo dever fornecer ?
Quantidade de números quadrados perfeitos digitados
ENTRADA: Quais os insumos necessários para se obter a saída?
Números informados, além de algum contador de números quadrados perfeitos
PROCESSAMENTO: Como transformar os insumos na saída?
Verificar se a raiz do número digitado é inteira, isto é, do tipo inteiro, caso seja, incrementar a quantidade
de quadrados perfeitos.
PROGRAMA - PORTUGOL
programa
{
inclua biblioteca Matematica --> mat
inclua biblioteca Tipos --> tipo
funcao inicio()
{
//DECLARAÇÃO DE VARIÁVEIS
real raiz=0.0
inteiro qtd=0,numero=3 //inicializacao simples e diferente de zero
// ENTRADA
enquanto(numero!=0){
escreva( "\n Informe um número inteiro positivo \n" )
leia(numero)
// PROCESSAMENTO
raiz = mat.raiz(numero,2)
//ideia: converter tipo real arredonda pra baixo e checar se raiz bate com esse numero
se(tipo.real_para_inteiro(raiz) == raiz e numero!=0){
qtd = qtd+1
}
}
// SAÍDA
escreva( "\n A quantidade quadrados perfeitos informada foi " , qtd)
}
}
[19]. Considere que não exista o operador de divisão. Dados dois números, obter o quociente inteiro através de subtrações sucessivas. Faça a validação de dados de forma que o DIVISOR não seja zero.
SAÍDA: Quais os resultados que o algoritmo dever fornecer ?
Resultado da divisão entre o dividendo e o divisor (i).
ENTRADA: Quais os insumos necessários para se obter a saída?
Valores do dividendo e divisor.
PROCESSAMENTO: Como transformar os insumos na saída?
O valor do dividendo deve ser subtraído pelo do divisor i vezes, de modo que i indicará o resultado da
divisão em questão.
PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
// DECLARAÇÃO DE VARIÁVEIS
inteiro dividendo,valor,divisor=0,i
// ENTRADA
escreva( "Entre com o dividendo: " )
leia(dividendo)
escreva( "Entre com o divisor: " )
leia(divisor)
enquanto(divisor==0){
escreva( "O divisor não pode ser = 0. Entre com o divisor: " )
leia(divisor)
}
// PROCESSAMENTO
valor=dividendo
para(i=0; divisor<=valor; i++){
valor=valor-divisor
}
// SAÍDA
escreva(dividendo, " dividido por " ,divisor, " é igual a " ,i)
}
}
[20]. Uma das maneiras de se conseguir calcular a raiz quadrada de um número é subtrair dele os números ímpares consecutivos a partir de 1, até que o resultado seja menor ou igual a zero. O número de vezes que se conseguir fazer as subtrações é a raiz quadrada. Faça um algoritmo que calcule a raiz quadrada de dado numero conforme essa regra.
Exemplo: 16 – 1 = 15; 15 – 3 = 12 – 5 = 7 – 7 = 0 { foram feitas 4 subtrações}
SAÍDA: Quais os resultados que o algoritmo dever fornecer ?
Raiz de um número
ENTRADA: Quais os insumos necessários para se obter a saída?
Um inteiro
PROCESSAMENTO: Como transformar os insumos na saída?
Algoritmo como enunciado acima
PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
// DECLARAÇÃO DE VARIÁVEIS
inteiro radiciando, i, raiz = 0
//ENTRADA DE DADOS
escreva("--> Para que o método funcione, a entrada tem que possuir raiz inteira.\n")
escreva("De que número você deseja obter a raiz quadrada?\n")
leia(radiciando)
//PROCESSAMENTO
para(i = 1; radiciando - i >= 0; i+=2){
radiciando = radiciando - i
raiz++
}
//SAÍDA
escreva("A raiz de é ", raiz, ".\n")
}
}
[21]. Um vendedor de cachorro quente decidiu fazer um levantamento com seus clientes a fim de planejar as vendas. Fez duas perguntas: Q1 – Gosta de Milho no seu hot dog? (S ou N) ; Q2 – qual sua idade?
Escreva um programa para processar a pesquisa. Calcule e mostre: a quantidade de clientes que preferem milho no hot dog, a idade média dos que não gostam de milho no hot dog. Foram pesquisados 50 clientes. É necessário fazer a validação de dados nas duas questões (S ou N na Q1 e idade não pode ser menor que 10 na Q2).
SAÍDA: Quais os resultados que o algoritmo dever fornecer ?
Devolver quantidade de clientes que preferem milho e média das idades dos 50 clientes.
ENTRADA: Quais os insumos necessários para se obter a saída?
Caractere para Sim ou Não
Número inteiro da idade
PROCESSAMENTO: Como transformar os insumos na saída?
Num laço que pretende receber os dados de 50 clientes, incrementar a quantidade a cada resposta S, e
com as idades obtidas, calcular média: med = (i1+i2+i3+...+i50)/50
PROGRAMA - PORTUGOL
programa
{
funcao inicio()
{
//DECLARAÇÃO DE VARIÁVEIS
caracter resposta
inteiro qtd=0, idade
real soma_idades=0.0, media
// ENTRADA
//Para testar mais facilmente, altere o laço para 5 iterações e no cálculo da média use 5.0
para(inteiro i=1; i<=50;i++){
escreva( "\n Q1 - Gosta de Milho no seu hot dog? (S ou N): " )
leia(resposta)
enquanto(resposta!='S' e resposta!='N'){
escreva( "\n Erro! Digite S ou N \n" )
leia(resposta)
}
escreva( "\n Q2 - qual sua idade? " )
leia(idade)
enquanto(idade<10){
escreva( "\n Erro! Você informou uma abaixo de 10 anos, informe uma maior " )
leia(idade)
}
// PROCESSAMENTO
soma_idades = soma_idades + idade
se(resposta == 'S'){
qtd = qtd+1
}
}
media = soma_idades/50.0
// SAÍDA
escreva( "\n A quantidade de pessoas que gostam de milho no hot-dog é de " , qtd)
escreva( "\n A média aritmética da idade dos clientes é de " , media)
}
}
TESTE DE MESA
[22]. (20%) Simule a execução do algoritmo SEGREDO através de “teste de mesa” e preencha o(s) valor(es) na tabela TESTE DE MESA” anotando os novos valores de cada variável e as linhas que as modificam. Note que as primeiras linhas estão anotadas como exemplo, mas é obrigatório anotar todas
as linhas que modifiquem um dos valores contidos na variável a, b ou c até que o algoritmo seja encerrado. Simultaneamente, anote na tabela SAÍDA DE DADOS todas as saídas (comando escreva) do programa e as linhas que fazem a saída. Considere que nas linhas 8 e 10 o usuário digitará como entrada de dados, respectivamente 5 e 3.
LINHA a b c
8 (5) ? ?
10 (3) ?
14 3 ?
15 0
14 1
15 -2
14 -1
15 -4
LINHA SAÍDA DE DADOS
13 “C”
21 “A”
13 “C”
21 “A”
13 “C”
21 “A”