bacharelado em ciência e tecnologia · termos da pa entrada: quais os ... fibonacci possui os dois...

17
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) }

Upload: vumien

Post on 12-Nov-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

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”