Resolução dos Exercícios · Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann 1...

67

Transcript of Resolução dos Exercícios · Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann 1...

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

1

Resolução dos Exercícios

Capítulo 1

1. Lógica de Programação e Algoritmos

Páginas 2, 3 e 4 1) a 2) d 3) b 4) c 5) b 6) d 7) c 8) e 9) e 10) d 11) b 12) c Página 7 Nota: Os exercícios de 1 a 8 possuem inúmeras soluções possíveis, mas a ideia central consiste em realizar a descrição narrativa dos passos necessário para se realizar determinada tarefa. Desta forma, as resoluções mostradas abaixo consistem apenas em uma das várias possibilidades. Páginas 10 e 11 1) Assinale os identificadores válidos: ( ) 3VALOR ( ) VALOR-1 (X) PRECO_UNIT (X) MAXVALOR (X) SOBRENOME ( ) R1&R2 (X) R1_R2 (X) CID (X) menor ( ) EX=1 (X) SOL1 (X) sobreNome (X) SAIDA (X) Resposta ( ) SALDO-MED ( ) %DESC ( ) DESC% (X) DESC (X) SALDO_MED ( ) [INICIO] (X) eRRo (X) REAL ( ) DÓLAR ( ) US$ (X) PCT (X) P_C_T ( ) PCT% ( ) PCT. ( ) #MAIOR (X) BRASIL (X) result ( ) res-saida ( ) R$ ( ) Valor final ( ) VLR+Bonus (X) Cursos 2) Identifique o tipo de dados de cada um dos valores ou aponte erro quando encontrar uma representação não válida:

Dado Tipo

José ERRO – Não está delimitado por “”. Correto: “José”

“José da Silva” Cadeia de caracteres, literal ou string

VERDADEIRO Lógico ou booleano

34,560 Real

-45 Inteiro

18 Inteiro

0,56565 Real

-0,4560 Real

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

2

0,00000 Real

“12,78” Cadeia de caracteres, literal ou string

“100 anos” Cadeia de caracteres, literal ou string

“Maria ERRO – Faltou fechar o delimitador “. Correto: “Maria”

“10” Cadeia de caracteres, literal ou string

“--56,4” Cadeia de caracteres, literal ou string

45,422 Real

“FALSO” Cadeia de caracteres, literal ou string

45,001 Real

4444 Inteiro

-56 Inteiro

“13250-000” Cadeia de caracteres, literal ou string

Escola”” ERRO – Uso incorreto do delimitador. Correto: “Escola”

“Faculdade” Cadeia de caracteres, literal ou string

Falso Logico ou booleano

“Ende”reco” ERRO – Uso incorreto do delimitador. Correto: “Endereco”

“Cid”a”de” ERRO – Uso incorreto do delimitador. Correto: “Cidade”

Páginas 27 e 28 1) a) FALSO b) FALSO c) VERDADEIRO d) FALSO e) VERDADEIRO f) VERDADEIRO) g) FALSO 2) a) FALSO b) FALSO c) FALSO d) FALSO e) VERDADEIRO f) VERDADEIRO g) FALSO h) FALSO i) VERDADEIRO j) VERDADEIRO 3) Nota: Construir as tabelas verdade conforme mostrado na página 27 do livro. 4) a) FALSO b) FALSO c) FALSO d) VERDADEIRO e) FALSO f) FALSO g) VERDADEIRO h) FALSO Páginas 41, 42 e 43 Nota: As soluções apresentadas a seguir estão sempre em Portugol, porém, a lógica para representa-las em Fluxograma e Scratch é a mesma. 1) programa { funcao inicio() { cadeia Nome, Sobrenome

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

3

escreva ("Digite o seu nome: ") leia (Nome) escreva ("Digite o seu sobrenome: ") leia (Sobrenome) escreva (Sobrenome, ", ", Nome) } } 2) programa { funcao inicio() { real n1, n2, m escreva("Digite um número: ") leia (n1) escreva("Digite outro número: ") leia(n2) m = n1 * n2 escreva ("O resultado da multiplicação é ", m) } } 3) programa { funcao inicio() { inteiro n1, n2, n3, n4, s escreva("Primeiro número: ") leia (n1) escreva("Segundo número: ") leia(n2) escreva("Terceiro número: ") leia(n3) escreva("Quarto número: ") leia(n4) s = n1 + n2 + n3 + n4 escreva ("O valor da soma é ", s) } } 4) programa { funcao inicio() {

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

4

real n1, n2, n3, m escreva("Primeiro número: ") leia (n1) escreva("Segundo número: ") leia(n2) escreva("Terceiro número: ") leia(n3) m = (n1 + n2 + n3) / 3 escreva ("O valor da média é ", m) } } 5) programa { funcao inicio() { real preco, quant, desc, preco_venda escreva("Preço do produto: ") leia (preco) escreva("Quantidade: ") leia(quant) escreva("Desconto: ") leia(desc) preco_venda = (preco * quant) - desc escreva ("O preço final é ", preco_venda) } } 6) programa { funcao inicio() { real nota1, nota2, media escreva("Nota 1: ") leia (nota1) escreva("Nota 2: ") leia(nota2) media = (nota1 * 0.4) + (nota2 * 0.6) escreva ("A média é ", media) } } 7) programa {

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

5

funcao inicio() { real tensao, corrente, resistencia escreva("Tensão: ") leia (tensao) escreva("Corrente: ") leia(corrente) resistencia = tensao / corrente escreva ("A resistência é ", resistencia) } } 8) programa { funcao inicio() { real tensao, corrente, resistencia escreva("Tensão: ") leia (tensao) escreva("Resistência: ") leia(resistencia) corrente = tensao / resistencia escreva ("A corrente é ", corrente) } } 9) programa { funcao inicio() { real tensao, corrente, potencia escreva("Tensão: ") leia (tensao) escreva("Corrente: ") leia(corrente) potencia = tensao * corrente escreva ("A potência é ", potencia) } } 10) programa { funcao inicio() {

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

6

real tensao, corrente, potencia escreva("Potência: ") leia(potencia) escreva("Tensão: ") leia (tensao) corrente = potencia / tensao escreva ("A corrente é ", corrente) } } Páginas 59 a 64 Nota: As soluções apresentadas a seguir estão sempre em Portugol, porém, a lógica para representa-las em Fluxograma e Scratch é a mesma. 1) programa { funcao inicio() { inteiro a, b, c, d escreva ("Digite o primeiro valor: ") leia (a) escreva ("Digite o segundo valor: ") leia (b) escreva ("Digite o terceiro valor: ") leia (c) escreva ("Digite o quarto valor: ") leia (d) se ((a < b) e (a < c) e (a < d)) { escreva ("O menor é: ", a) } senao { se ((b < c) e (b < d)) { escreva ("O menor é: ", b) } senao { se (c < d) { escreva ("O menor é: ", c) } senao

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

7

{ escreva ("O menor é: ", d) } } } } } 2) programa { funcao inicio() { cadeia Nome inteiro AnoNasc, Idade escreva ("Digite o seu nome: ") leia (Nome) escreva ("Digite o ano em que você nasceu: ") leia (AnoNasc) Idade = 2015 - AnoNasc escreva (Nome, " você possui ", Idade, " anos e é ") se (Idade < 18) escreva ("menor") senao escreva ("maior") escreva(" de idade.") } } 3) programa { funcao inicio() { inteiro Numero escreva ("Digite um número: ") leia (Numero) se (Numero % 2 == 0) escreva ("PAR!") senao escreva ("IMPAR!") } } 4) programa

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

8

{ funcao inicio() { real Numero, Absoluto escreva ("Digite um número: ") leia (Numero) se (Numero < 0) Absoluto = Numero * (-1) senao Absoluto = Numero escreva ("O valor absoluto é ", Absoluto) } } 5) programa { funcao inicio() { real Nota1, Nota2, Media escreva ("Digite a Nota 1: ") leia (Nota1) escreva ("Digite a Nota 2: ") leia (Nota2) Media = (Nota1 + Nota2) / 2 escreva ("A média do aluno é ", Media, " e ele está ") se (Media < 6.0) escreva ("reprovado") senao escreva ("aprovado") } } 6) programa { funcao inicio() { real valor1, valor2, resultado cadeia operacao escreva ("Digite o primeiro valor: ") leia (valor1)

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

9

escreva ("Digite o segundo valor: ") leia (valor2) escreva ("Digite a operação (+, -, x ou /): ") leia (operacao) se (operacao == "+") { resultado = valor1 + valor2 escreva ("A soma é ", resultado) } senao { se (operacao == "-") { resultado = valor1 - valor2 escreva ("A subtração é ", resultado) } senao { se (operacao == "x") { resultado = valor1 * valor2 escreva ("A multiplicação é ", resultado) } senao { se (operacao == "/" e valor2 != 0) { resultado = valor1 / valor2 escreva ("A divisão é ", resultado) } senao { escreva ("ERRO!!!") } } } } } } 7) programa { funcao inicio() { real v1, v2, v3, v4, v5, media, soma

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

10

inteiro cont soma = 0 cont = 0 escreva ("Digite o primeiro valor: ") leia (v1) escreva ("Digite o segundo valor: ") leia (v2) escreva ("Digite o terceiro valor: ") leia (v3) escreva ("Digite o quarto valor: ") leia (v4) escreva ("Digite o quinto valor: ") leia (v5) se (v1 > 0 e v1 < 1000) { soma = soma + v1 cont = cont + 1 } se (v2 > 0 e v2 < 1000) { soma = soma + v2 cont = cont + 1 } se (v3 > 0 e v3 < 1000) { soma = soma + v3 cont = cont + 1 } se (v4 > 0 e v4 < 1000) { soma = soma + v4 cont = cont + 1 } se (v5 > 0 e v5 < 1000) { soma = soma + v5 cont = cont + 1 } media = soma / cont escreva ("A média é ", media) } }

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

11

8) programa { funcao inicio() { real temperatura, resultado escreva ("Digite a temperatura em Celsius: ") leia (temperatura) resultado = temperatura * 1.8 + 32 escreva ("A temperatura em Fahrenheit é ", resultado) } } 9) programa { funcao inicio() { real peso, altura, imc escreva ("Digite o peso: ") leia (peso) escreva ("Digite a altura ") leia (altura) imc = peso / (altura * altura) escreva ("O IMC é ", imc, "\n") se (imc < 18.5) escreva ("Você está abaixo do peso ideal.") senao se (imc >= 18.5 e imc < 25.0) escreva ("Parabéns, você está em seu peso normal!") senao se (imc >= 25.0 e imc < 30.0) escreva ("Você está acima de seu peso (sobrepeso)") senao se (imc >= 30.0 e imc < 35.0) escreva ("Obesidade grau I") senao se (imc >= 35.0 e imc < 40.0) escreva ("Obesidade grau II") senao escreva ("Obesidade grau III") } } 10)

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

12

programa { inclua biblioteca Matematica --> mat funcao inicio() { real a, b, c, delta, x1, x2 escreva ("Digite A: ") leia (a) escreva ("Digite B: ") leia (b) escreva ("Digite C: ") leia (c) delta = mat.potencia(b, 2.0) - (4 * a * c) se (delta < 0) escreva ("Não há resultado real!") senao se (delta == 0) { x1 = -b / (2 * a) escreva ("x1 = ", x1) } senao { x1 = (-b - mat.raiz(delta, 2.0))/ (2 * a) x2 = (-b + mat.raiz(delta, 2.0))/ (2 * a) escreva ("x1 = ", x1, "\n") escreva ("x2 = ", x2) } } } 11) programa { funcao inicio() { inteiro largura, altura, area escreva ("Digite a altura: ") leia (altura) escreva ("Digite a largura: ") leia (largura) area = altura * largura

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

13

se (altura == largura) escreva ("Quadrado ") senao escreva ("Retângulo ") escreva (" com área igual a ", area) } } 12) Importante: Obter a cotação das moedas no dia da resolução do exercício. programa { funcao inicio() { real valorDe, valorPara cadeia moedaDe, moedaPara escreva ("Digite a moeda: ") leia (moedaDe) escreva ("Digite o valor: ") leia (valorDe) escreva ("Digite a moeda para a qual deseja realizar a conversão: ") leia (moedaPara) // Cotações obtidas em 6/10/14 se (moedaDe == "Real" e moedaPara == "Dolar") valorPara = valorDe * 0.414731 senao se (moedaDe == "Real" e moedaPara == "Euro") valorPara = valorDe * 0.329450969 senao se (moedaDe == "Dolar" e moedaPara == "Real") valorPara = valorDe * 2.41120148 senao se (moedaDe == "Dolar" e moedaPara == "Euro") valorPara = valorDe * 0.794372664 senao se (moedaDe == "Euro" e moedaPara == "Real") valorPara = valorDe * 3.03535304 senao se (moedaDe == "Euro" e moedaPara == "Dolar") valorPara = valorDe * 1.258855 senao escreva ("ERRO: Conversão inválida!") escreva (valorDe, " ", moedaDe, " é igual a ", valorPara, " ", moedaPara) }

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

14

} 13) programa { funcao inicio() { real valorDe, valorPara cadeia unidadeDe, unidadePara escreva ("Digite a unidade de medida: ") leia (unidadeDe) escreva ("Digite o valor: ") leia (valorDe) escreva ("Digite a unidade para a qual deseja realizar a conversão: ") leia (unidadePara) se (unidadeDe == "Metro" e unidadePara == "Pes") valorPara = valorDe * 3.2808399 senao se (unidadeDe == "Metro" e unidadePara == "Polegada") valorPara = valorDe * 39.3700787 senao se (unidadeDe == "Metro" e unidadePara == "Milha") valorPara = valorDe * 0.000621371192 senao se (unidadeDe == "Pes" e unidadePara == "Metro") valorPara = valorDe * 0.3048 senao se (unidadeDe == "Pes" e unidadePara == "Polegada") valorPara = valorDe * 12 senao se (unidadeDe == "Pes" e unidadePara == "Milha") valorPara = valorDe * 0.000189393939 senao se (unidadeDe == "Polegada" e unidadePara == "Metro") valorPara = valorDe * 0.0254 senao se (unidadeDe == "Polegada" e unidadePara == "Pes") valorPara = valorDe * 0.0833333333 senao se (unidadeDe == "Polegada" e unidadePara == "Milha") valorPara = valorDe * 0.0000157828283 senao se (unidadeDe == "Milha" e unidadePara == "Metro") valorPara = valorDe * 1609.344 senao se (unidadeDe == "Milha" e unidadePara == "Pes") valorPara = valorDe * 5280 senao se (unidadeDe == "Milha" e unidadePara == "Polegada") valorPara = valorDe * 63.360 senao escreva ("ERRO: Conversão inválida!") escreva (valorDe, " ", unidadeDe, " é igual a ", valorPara, " ", unidadePara)

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

15

} } 14) programa { funcao inicio() { real valor cadeia prefixo escreva ("Digite o valor: ") leia (valor) escreva ("Digite o prefixo: ") leia (prefixo) se (prefixo == "k") { escreva ("Resultado:\n") escreva ((valor / 1000), " M\n") escreva ((valor / 1000000), " G\n") escreva ((valor / 1000000000), " T\n") } senao se (prefixo == "M") { escreva ("Resultado:\n") escreva ((valor * 1000), " k\n") escreva ((valor / 1000), " G\n") escreva ((valor / 1000000), " T\n") } senao se (prefixo == "G") { escreva ("Resultado:\n") escreva ((valor * 1000000), " k\n") escreva ((valor * 1000), " M\n") escreva ((valor / 1000), " T\n") } senao se (prefixo == "T") { escreva ("Resultado:\n") escreva ((valor * 1000000000), " k\n") escreva ((valor * 1000000), " M\n") escreva ((valor / 1000), " G\n") } senao escreva ("ERRO: Conversão inválida!") }

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

16

} 15) programa { funcao inicio() { real valorDe, valorPara cadeia prefixoDe, prefixoPara escreva ("Digite o valor: ") leia (valorDe) escreva ("Digite o prefixo: ") leia (prefixoDe) escreva ("Digite o prefixo que deseja visualizar: ") leia (prefixoPara) se (prefixoDe == "k" e prefixoPara == "M") valorPara = valorDe / 1000 senao se (prefixoDe == "k" e prefixoPara == "G") valorPara = valorDe / 1000000 senao se (prefixoDe == "k" e prefixoPara == "T") valorPara = valorDe * 1000000000 senao se (prefixoDe == "M" e prefixoPara == "k") valorPara = valorDe * 1000 senao se (prefixoDe == "M" e prefixoPara == "G") valorPara = valorDe / 1000 senao se (prefixoDe == "M" e prefixoPara == "T") valorPara = valorDe / 1000000 senao se (prefixoDe == "G" e prefixoPara == "k") valorPara = valorDe * 1000000 senao se (prefixoDe == "G" e prefixoPara == "M") valorPara = valorDe * 1000 senao se (prefixoDe == "G" e prefixoPara == "T") valorPara = valorDe / 1000 senao se (prefixoDe == "T" e prefixoPara == "k") valorPara = valorDe * 1000000000 senao se (prefixoDe == "T" e prefixoPara == "M") valorPara = valorDe * 1000000 senao se (prefixoDe == "T" e prefixoPara == "G") valorPara = valorDe * 1000 senao escreva ("ERRO: Conversão inválida!") escreva (valorDe, " ", prefixoDe, " é igual a ", valorPara, " ", prefixoPara) }

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

17

} 16) programa { funcao inicio() { inteiro n1, n2, n3, n4, n5, pares pares = 0 escreva ("Primeiro número: ") leia (n1) escreva ("Segundo número: ") leia (n2) escreva ("Terceiro número: ") leia (n3) escreva ("Quarto número: ") leia (n4) escreva ("Quinto número: ") leia (n5) se (n1 % 2 == 0) pares = pares + 1 se (n2 % 2 == 0) pares = pares + 1 se (n3 % 2 == 0) pares = pares + 1 se (n4 % 2 == 0) pares = pares + 1 se (n5 % 2 == 0) pares = pares + 1 escreva ("Foram digitados ", pares, " números pares.") } } 17) programa { funcao inicio() { inteiro n1, n2, n3 escreva ("Primeiro número: ") leia (n1) escreva ("Segundo número: ")

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

18

leia (n2) escreva ("Terceiro número: ") leia (n3) se (n1 < n2 e n1 < n3) { escreva (n1, ", ") se (n2 < n3) escreva (n2, ", ", n3) senao escreva (n3, ", ", n2) } senao se (n2 < n3) { escreva (n2, ", ") se (n1 < n3) escreva (n1, ", ", n3) senao escreva (n3, ", ", n1) } senao { escreva (n3, ", ") se (n1 < n2) escreva (n1, ", ", n2) senao escreva (n2, ", ", n1) } } } 18) programa { funcao inicio() { inteiro n1, n2, n3, n4, maiorPar escreva ("Primeiro número: ") leia (n1) escreva ("Segundo número: ") leia (n2) escreva ("Terceiro número: ") leia (n3) escreva ("Quarto número: ") leia (n4)

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

19

maiorPar = -1 se (n1 % 2 == 0 e n1 > maiorPar) maiorPar = n1 se (n2 % 2 == 0 e n2 > maiorPar) maiorPar = n2 se (n3 % 2 == 0 e n3 > maiorPar) maiorPar = n3 se (n4 % 2 == 0 e n4 > maiorPar) maiorPar = n4 se (maiorPar != -1) escreva ("O maior número par digitado foi ", maiorPar) senao escreva ("O usuário não digitou números pares!") } } 19) programa { funcao inicio() { inteiro n1, n2, n3, n4, quant escreva ("Primeiro número: ") leia (n1) escreva ("Segundo número: ") leia (n2) escreva ("Terceiro número: ") leia (n3) escreva ("Quarto número: ") leia (n4) quant = 0 se (n1 % 5 == 0 e n1 >= 100 e n1 < 200) quant = quant + 1 se (n2 % 5 == 0 e n2 >= 100 e n2 < 200) quant = quant + 1 se (n3 % 5 == 0 e n3 >= 100 e n3 < 200) quant = quant + 1 se (n4 % 5 == 0 e n4 >= 100 e n4 < 200) quant = quant + 1 escreva ("Números encontrados: ", quant) }

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

20

} 20) programa { funcao inicio() { cadeia n1, n2, n3 escreva ("Primeiro nome: ") leia (n1) escreva ("Segundo nome: ") leia (n2) escreva ("Terceiro nome: ") leia (n3) se (n1 < n2 e n1 < n3) { escreva (n1, ", ") se (n2 < n3) escreva (n2, ", ", n3) senao escreva (n3, ", ", n2) } senao se (n2 < n3) { escreva (n2, ", ") se (n1 < n3) escreva (n1, ", ", n3) senao escreva (n3, ", ", n1) } senao { escreva (n3, ", ") se (n1 < n2) escreva (n1, ", ", n2) senao escreva (n2, ", ", n1) } } } 21) programa { funcao inicio()

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

21

{ real n1, n2, n3, n4, menor, maior, diferenca escreva ("Primeiro número: ") leia (n1) escreva ("Segundo número: ") leia (n2) escreva ("Terceiro número: ") leia (n3) escreva ("Quarto número: ") leia (n4) menor = n1 maior = n1 se (n2 < menor) menor = n2 se (n3 < menor) menor = n3 se (n4 < menor) menor = n4 se (n2 > maior) maior = n2 se (n3 > maior) maior = n3 se (n4 > maior) maior = n4 diferenca = maior - menor escreva ("A diferença é ", diferenca) } } 22) programa { funcao inicio() { caracter L1, L2, L3, L4, L5 inteiro vogal escreva ("Primeira letra: ") leia (L1) escreva ("Segunda letra: ") leia (L2)

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

22

escreva ("Terceira letra: ") leia (L3) escreva ("Quarta letra: ") leia (L4) escreva ("Quinta letra: ") leia (L5) vogal = 0 se (L1 == 'a' ou L1 == 'e' ou L1 == 'i' ou L1 == 'o' ou L1 == 'u') vogal = vogal + 1 se (L2 == 'a' ou L2 == 'e' ou L2 == 'i' ou L2 == 'o' ou L2 == 'u') vogal = vogal + 1 se (L3 == 'a' ou L3 == 'e' ou L3 == 'i' ou L3 == 'o' ou L3 == 'u') vogal = vogal + 1 se (L4 == 'a' ou L4 == 'e' ou L4 == 'i' ou L4 == 'o' ou L4 == 'u') vogal = vogal + 1 se (L5 == 'a' ou L5 == 'e' ou L5 == 'i' ou L5 == 'o' ou L5 == 'u') vogal = vogal + 1 escreva ("Quantidade de vogais digitadas: ", vogal) } } 23) programa { funcao inicio() { real area, base, altura escreva ("Digite a base: ") leia (base) escreva ("Digite a altura: ") leia (altura) se (base > 0 e altura > 0) { area = (base * altura) / 2 escreva ("A área é ", area) } senao

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

23

escreva ("A base e altura devem ser maiores que zero!") } } 24) programa { funcao inicio() { real valor, ipva cadeia comb, tipo escreva ("Valor do veículo: ") leia (valor) escreva ("Combustível: ") leia (comb) escreva ("Tipo do Veículo: ") leia (tipo) se (tipo == "automovel" e (comb == "gasolina" ou comb == "flex")) ipva = valor * (4.0 / 100.0) senao se (tipo == "automovel" e (comb == "etanol" ou comb == "eletricidade" ou comb == "gas")) ipva = valor * (3.0 / 100.0) senao se (tipo == "caminhao") ipva = valor * (1.5 / 100.0) senao ipva = valor * (2.0 / 100.0) escreva ("IPVA = ", ipva) } } 25) programa { inclua biblioteca Matematica --> mat funcao inicio() { real raio, comprimento escreva ("Digite o raio: ") leia (raio) se (raio > 0)

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

24

{ comprimento = 2 * mat.PI * raio escreva ("Comprimento = ", comprimento) } senao escreva ("ERRO: O raio de deve ser positivo!") } } 26) programa { funcao inicio() { inteiro codigo real peso, quantidade, preco, precoBruto, pesoBruto, imposto, frete, precoFinal cadeia descricao escreva ("Digite o código: ") leia (codigo) escreva ("Digite a descrição: ") leia (descricao) escreva ("Digite o peso: ") leia (peso) escreva ("Digite a quantidade: ") leia (quantidade) escreva ("Digite o preço: ") leia (preco) precoBruto = preco * quantidade se (precoBruto < 500.00) imposto = precoBruto * (5.0 / 100.0) senao se (precoBruto >= 500.00 e precoBruto < 1500.00) imposto = precoBruto * (7.5 / 100.0) senao imposto = precoBruto * (10.0 / 100.0) pesoBruto = peso * quantidade se (pesoBruto > 10.0) frete = 50.00 senao frete = 0.00 precoFinal = precoBruto + imposto + frete

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

25

escreva ("O preço final é ", precoFinal) } } 27) programa { funcao inicio() { real salario, novoSalario caracter categoria escreva ("Digite o salário: ") leia (salario) escreva ("Digite a categoria: ") leia (categoria) se (categoria == 'A' ou categoria == 'a' ou categoria == 'C' ou categoria == 'c') novoSalario = salario + (salario * (10.0 / 100.0)) senao se (categoria == 'B' ou categoria == 'b' ou categoria == 'D' ou categoria == 'd' ou categoria == 'E' ou categoria == 'e') novoSalario = salario + (salario * (15.0 / 100.0)) senao se (categoria == 'F' ou categoria == 'f' ou categoria == 'L' ou categoria == 'l') novoSalario = salario + (salario * (25.0 / 100.0)) senao se (categoria == 'G' ou categoria == 'g' ou categoria == 'H' ou categoria == 'h') novoSalario = salario + (salario * (35.0 / 100.0)) senao se (categoria == 'I' ou categoria == 'i' ou categoria == 'J' ou categoria == 'j') novoSalario = salario + (salario * (50.0 / 100.0)) escreva ("O salário com reajuste será ", novoSalario) } } Páginas 73 a 79 Nota: As soluções apresentadas a seguir estão sempre em Portugol, porém, a lógica para representa-las em Fluxograma e Scratch é a mesma. 1) programa { funcao inicio()

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

26

{ inteiro num num = 0 enquanto (num <= 100) { escreva (num, ", ") num = num + 2 } } } 2) programa { funcao inicio() { inteiro cont para (cont = 200; cont >= 0; cont = cont - 5) { escreva (cont, ", ") } } } 3) programa { funcao inicio() { inteiro ini, fim, cont escreva ("Digite o valor inicial: ") leia (ini) escreva ("Digite o valor final: ") leia (fim) para (cont = ini; cont <= fim; cont = cont + 1) { escreva (cont, ", ") } } } 4) programa {

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

27

funcao inicio() { inteiro cont, caras, coroas cadeia lado cont = 1 caras = 0 coroas = 0 enquanto (cont <= 10) { escreva ("Digite o lado da moeda: ") leia (lado) se (lado == "cara") caras = caras + 1 senao coroas = coroas + 1 cont = cont + 1 } escreva ("Quantidade de Caras: ", caras, "\n") escreva ("Quantidade de Coroas: ", coroas, "\n") } } 5) programa { funcao inicio() { inteiro cont para (cont = 101; cont <= 121; cont = cont + 2) { escreva (cont, ", ") } } } 6) programa { funcao inicio() { inteiro num, cont, res escreva ("Digite um número entre 1 e 10: ")

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

28

leia (num) se (num > 0 e num <= 10) { para (cont = 1; cont <= 10; cont = cont + 1) { res = num * cont escreva (num, " x ", cont, " = ", res, "\n") } } senao escreva ("ERRO: O número digitado não está entre 1 e 10") } } 7) programa { funcao inicio() { inteiro ini, fim, cont, soma, media, quant soma = 0 quant = 0 escreva ("Digite o valor inicial: ") leia (ini) escreva ("Digite o valor final: ") leia (fim) para (cont = ini; cont <= fim; cont = cont + 1) { soma = soma + cont quant = quant + 1 } media = soma / quant escreva ("A média é ", media) } } 8) programa { funcao inicio() { inteiro i real menor, num

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

29

escreva ("Número? ") leia (menor) para (i = 0; i < 9; i = i + 1) { escreva ("Número? ") leia (num) se (num < menor) menor = num } escreva ("O menor é ", menor) } } 9) programa { funcao inicio() { inteiro i, maior, num escreva ("Número? ") leia (maior) para (i = 0; i < 14; i = i + 1) { escreva ("Número? ") leia (num) se (num > maior) maior = num } escreva ("O maior é ", maior) } } 10) programa { funcao inicio() { inteiro i real menor, maior, dif, num escreva ("Número? ") leia (menor) maior = menor

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

30

para (i = 0; i < 9; i = i + 1) { escreva ("Número? ") leia (num) se (num < menor) menor = num se (num > maior) maior = num } dif = maior - menor escreva ("A diferença é ", dif) } } 11) programa { funcao inicio() { cadeia produto, produtoCaro, resp real preco, precoCaro precoCaro = 0.001 produtoCaro = "" faca { escreva ("Produto? ") leia (produto) escreva ("Preço? ") leia (preco) escreva ("Digitar outro produto? ") leia (resp) se (preco > precoCaro) { produtoCaro = produto precoCaro = preco } } enquanto (resp == "sim") escreva ("O produto mais caro é ", produtoCaro) } } 12) programa { funcao inicio() {

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

31

inteiro num, cont, soma cont = 1 soma = 0 enquanto (cont <= 10) { escreva ("Numero? ") leia (num) se (num % 3 == 0) { soma = soma + num cont = cont + 1 } } escreva ("O valor da soma é ", soma) } } 13) programa { inclua biblioteca Matematica --> mat funcao inicio() { inteiro hi, hf, mi, mf, si, sf, totalsegi, totalsegf, totaldif, horadif, mindif, segdif, segrest escreva("Hora inicio: ") leia (hi) escreva("Minuto inicio: ") leia (mi) escreva("Segundo inicio: ") leia (si) escreva("Hora fim: ") leia (hf) escreva("Minuto fim: ") leia (mf) escreva("Segundo fim: ") leia (sf) totalsegi = (hi * 3600) + (mi * 60) + si totalsegf = (hf * 3600) + (mf * 60) + sf se (totalsegi < totalsegf) totaldif = totalsegf - totalsegi

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

32

senao totaldif = totalsegi - totalsegf horadif = totaldif / 3600 segrest = totaldif % 3600 mindif = segrest / 60 segdif = segrest % 60 escreva (horadif, ":", mindif, ":", segdif) } } 14) programa { funcao inicio() { inteiro opcao real temp, result caracter continuar faca { escreva ("Digite a temperatura: ") leia (temp) escreva ("Digite:\n") escreva ("1. Celsius para Fahrenheit\n") escreva ("2. Fahrenheit para Celsius\n") escreva ("3. Celsius para Kelvin\n") escreva ("4. Kelvin para Celsius\n") escreva ("5. Fahrenheit para Kelvin\n") escreva ("6. Kelvin para Fahrenheit\n") escreva ("Opção: ") leia (opcao) se (opcao == 1) { result = temp * 1.8 + 32 escreva ("\nResultado: ", result, "\n") } senao se (opcao == 2) { result = (temp - 32) / 1.8 escreva ("\nResultado: ", result, "\n") } senao se (opcao == 3)

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

33

{ result = temp + 273.15 escreva ("\nResultado: ", result, "\n") } senao se (opcao == 4) { result = temp - 273.15 escreva ("\nResultado: ", result, "\n") } senao se (opcao == 5) { result = (temp + 459.67) / 1.8 escreva ("\nResultado: ", result, "\n") } senao se (opcao == 6) { result = temp * 1.8 - 459.67 escreva ("\nResultado: ", result, "\n") } senao { escreva ("ERRO: Opção inválida!") } escreva ("Deseja realizar outra conversão (S/N) ? ") leia (continuar) } enquanto (continuar == 'S' ou continuar == 's') } } 15) programa { funcao inicio() { inteiro num, cont, fat fat = 1 cont = 1 escreva ("Numero? ") leia (num) enquanto (cont <= num) { fat = fat * cont cont = cont + 1

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

34

} escreva ("O valor da fatorial é ", fat) } } 16) programa { funcao inicio() { inteiro num, soma soma = 0 para (num = 51; num <= 91; num = num + 2) { soma = soma + num } escreva ("O valor da soma é ", soma) } } 17) programa { funcao inicio() { inteiro num, soma soma = 0 para (num = 2; num < 20; num = num + 2) { soma = soma + num } escreva ("O valor da soma é ", soma) } } 18) programa { funcao inicio() { inteiro num, cont cont = 0 para (num = 40; num <= 80; num = num + 4) {

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

35

cont = cont + 1 } escreva ("Há ", cont, " múltiplos de 4.") } } 19) programa { funcao inicio() { inteiro num, cont, ini, fim cont = 0 escreva ("Digite o início: ") leia (ini) escreva ("Digite o final: ") leia (fim) para (num = ini; num <= fim; num = num + 1) { se (num % 7 == 0) cont = cont + 1 } escreva ("Há ", cont, " múltiplos de 7 no intervalo.") } } 20) programa { funcao inicio() { inteiro cont, i, j, k i = 0 j = 1 para (cont = 1; cont <= 6; cont = cont + 1) { k = i + j escreva (k, ", ") i = j j = k } } } 21)

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

36

programa { funcao inicio() { inteiro cont, i, j, k, soma i = 0 j = 1 soma = 0 para (cont = 1; cont <= 10; cont = cont + 1) { k = i + j soma = soma + k i = j j = k } escreva ("O valor da soma é ", soma) } } 22) programa { funcao inicio() { inteiro num, cont, prod escreva ("Digite um número: ") leia (num) prod = 1 para (cont = 2; cont <= num; cont = cont + 2) { prod = prod * cont } escreva ("Resultado = ", prod) } } 23) programa { funcao inicio() { inteiro num, espaco, numespaco, fatorespaco, asterisco, numasterisco, fatorasterisco, i, j, k escreva ("Digite um número impar: ")

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

37

leia (num) se (num % 2 == 0) { escreva ("O número não é impar!") } senao { espaco = num / 2 numespaco = espaco fatorespaco = -1 asterisco = 1 numasterisco = asterisco fatorasterisco = 2 i = 1 enquanto (i <= num) { j = 1 enquanto (j <= numespaco) { escreva (" ") j = j + 1 } k = 1 enquanto (k <= numasterisco) { escreva ("*") k = k + 1 } escreva("\n") i = i + 1 numespaco = numespaco + fatorespaco numasterisco = numasterisco + fatorasterisco se (i == (espaco + 1)) { fatorespaco = fatorespaco * (-1) fatorasterisco = fatorasterisco * (-1) } } } } }

24) programa { funcao inicio()

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

38

{ real r1, r2, r3, rs logico continuar faca { escreva ("Digite o valor de R1: ") leia (r1) escreva ("Digite o valor de R2: ") leia (r2) escreva ("Digite o valor de R3: ") leia (r3) se (r1 > 0 e r2 > 0 e r3 >0) { rs = r1 + r2 + r3 escreva ("O valor da associação em série é ", rs, " ohms\n") continuar = verdadeiro } senao { continuar = falso } } enquanto (continuar == verdadeiro) } }

25) programa { funcao inicio() { real r1, r2, rp logico continuar faca { faca { escreva ("Digite o valor de R1: ") leia (r1) } enquanto (r1 < 0) faca

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

39

{ escreva ("Digite o valor de R2: ") leia (r2) } enquanto (r2 < 0) se (r1 != 0 e r2 != 0) { rp = (r1 * r2) / (r1 + r2) escreva ("O valor da associação em paralelo é ", rp, " ohms\n") continuar = verdadeiro } senao { continuar = falso } } enquanto (continuar == verdadeiro) } } 26) programa { funcao inicio() { inteiro num, mult mult = 0 para (num = 1; num <= 100; num = num + 1) { se (num % 2 == 0 e num % 3 == 0) mult = mult + 1 } escreva ("Há ", mult, " múltiplos de 2 e de 3.\n") } } 27) programa { funcao inicio() { real num, res

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

40

para (num = 0; num <= 100; num = num + 10) { res = num * 1.8 + 32 escreva (num, "°C -> ", res, "°F\n") } } } 28) programa { funcao inicio() { inteiro num, vogal, consoante caracter letra vogal = 0 consoante = 0 para (num = 0; num < 10; num = num + 1) { faca { escreva ("Digite uma letra: ") leia (letra) } enquanto (nao (letra >= 'A' e letra <= 'z')) se (letra == 'a' ou letra == 'e' ou letra == 'i' ou letra == 'o' ou letra == 'u' ou letra == 'A' ou letra == 'E' ou letra == 'I' ou letra == 'O' ou letra == 'U') vogal = vogal + 1 senao consoante = consoante + 1 } escreva ("Há ", vogal, " vogais\n") escreva ("Há ", consoante, " consoantes\n") } } 29) programa { funcao inicio() { inteiro num

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

41

cadeia prod, prodCaro real preco, precoCaro prodCaro = "" precoCaro = -1.00 para (num = 0; num < 10; num = num + 1) { escreva ("Digite o nome do produto: ") leia (prod) escreva ("Digite o preço do produto: ") leia (preco) se (preco > precoCaro) { prodCaro = prod precoCaro = preco } } escreva (prodCaro, " é o produto mais caro.\n") } } 30) programa { funcao inicio() { inteiro i, j, num escreva ("Digite número: ") leia (num) para (i = 1; i <= num; i = i + 1) { para (j = 1; j <= i; j = j + 1) { escreva (i, " ") } escreva ("\n") } } } 31) programa

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

42

{ inclua biblioteca Util --> util funcao inicio() { inteiro num, magico, tentativa magico = util.sorteia (1, 500) tentativa = 1 faca { escreva ("Digite o número mágico: ") leia (num) se (num < magico) { escreva ("Digite um número maior!\n") tentativa = tentativa + 1 } senao se (num > magico) { escreva ("Digite um número menor!\n") tentativa = tentativa + 1 } } enquanto (num != magico) se (tentativa <= 3) escreva ("Muito Sortudo!!!\n") senao se (tentativa <= 6) escreva ("Sortudo!!!\n") senao se (tentativa <= 10) escreva ("Normal!\n") senao escreva ("Jogue novamente!!!\n") } } 32) programa { funcao inicio() { inteiro lin, col, i, j caracter car escreva ("Linhas? ")

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

43

leia (lin) escreva ("Colunas? ") leia (col) escreva ("Caractere? ") leia (car) para (i = 0; i < lin; i++) { para (j = 0; j < col; j++) { escreva(car) } escreva ("\n") } } } 33) programa { funcao inicio() { inteiro lin, col, i, j escreva ("Linhas? ") leia (lin) escreva ("Colunas? ") leia (col) para (i = 0; i < lin; i++) { se (i == 0 ou i == (lin-1)) { escreva ("+") } senao { escreva ("|") } para (j = 0; j < col - 2; j++) { se (i == 0 ou i == (lin-1)) { escreva ("-") } senao { escreva (" ") }

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

44

} se (i == 0 ou i == (lin-1)) { escreva ("+\n") } senao { escreva ("|\n") } } } } Páginas 91 a 93 Nota: As soluções apresentadas a seguir estão sempre em Portugol, porém, a lógica para representa-las em Fluxograma e Scratch é a mesma. 1) programa { funcao inicio() { inteiro vetor[10], cont para (cont = 0; cont < 10; cont = cont + 1) { escreva ("Digite um número: ") leia (vetor[cont]) } para (cont = 9; cont >= 0; cont = cont - 1) { escreva (vetor[cont], ", ") } } } 2) programa { funcao inicio() { inteiro i real v[5], soma soma = 0

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

45

para (i = 0; i < 5; i = i + 1) { escreva ("Digite um número: ") leia (v[i]) soma = soma + v[i] } escreva ("A soma é ", soma) } } 3) programa { funcao inicio() { caracter r[25], g[] = {'B', 'C', 'A', 'D', 'B', 'B', 'E', 'C', 'A', 'B', 'D', 'A', 'A', 'A', 'A', 'B', 'D', 'C', 'E', 'E', 'A', 'C', 'E', 'D', 'B' } inteiro i, acerto acerto = 0 para (i = 0; i < 25; i = i + 1) { faca { escreva ("Resposta ", (i + 1), " (digite apenas maiúsculas): ") leia (r[i]) } enquanto (nao (r[i] >= 'A' e r[i] <= 'E')) se (r[i] == g[i]) acerto = acerto + 1 } escreva ("Acertos: ", acerto) } } 4) programa { funcao inicio() {

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

46

inteiro lancamento[20], face[] = {0, 0, 0, 0, 0, 0 }, i para (i = 0; i < 20; i = i + 1) { faca { escreva ("Lançamento ", (i + 1), ": ") leia (lancamento[i]) } enquanto (nao (lancamento[i] >= 1 e lancamento[i] <= 6)) face[lancamento[i] - 1] = face[lancamento[i] - 1] + 1 } para (i = 0; i < 6; i = i + 1) { escreva ("A face ", (i + 1), " ocorreu ", face[i], " vezes\n") } } } 5) programa { funcao inicio() { inteiro A[5], B[5], R[5], i para (i = 0; i < 5; i = i + 1) { escreva ("Valor A [", i, "]: ") leia (A[i]) } para (i = 0; i < 5; i = i + 1) { escreva ("Valor B [", i, "]: ") leia (B[i]) } para (i = 0; i < 5; i = i + 1) { R[i] = A[i] * B[i] escreva ("Valor R [", i, "] = ", R[i], "\n") } } }

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

47

6) programa { funcao inicio() { inteiro i, j, numero[10], repeticao[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, vezes[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0} logico achou para (i = 0; i < 10; i = i + 1) { escreva ((i + 1), "° número: ") leia (numero[i]) achou = falso para (j = 0; j < i; j = j + 1) { se (numero[i] == repeticao[j]) { vezes[j] = vezes[j] + 1 achou = verdadeiro } } se (achou == falso) { repeticao[j] = numero[i] vezes[j] = 1 } } para (i = 0; i < 10; i = i + 1) { se (vezes[i] > 0) escreva (repeticao[i], " ocorre ", vezes[i], " vezes.\n") } } } 7) programa { funcao inicio() { inteiro i, j real nota[10][3], media

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

48

para (i = 0; i < 10; i = i + 1) { para (j = 0; j < 3; j = j + 1) { escreva ("Aluno ", (i + 1), ", nota ", (j + 1), ": ") leia (nota[i][j]) } } para (i = 0; i < 10; i = i + 1) { media = (nota[i][0] * 0.3) + (nota[i][1] * 0.4) + (nota[i][2] * 0.3) escreva ("Aluno ", (i + 1), " média ", media, ".\n") } } } 8) programa { funcao inicio() { inteiro i, v[5], soma, media soma = 0 para (i = 0; i < 5; i = i + 1) { escreva ("Digite um número: ") leia (v[i]) soma = soma + v[i] } media = soma / 5 escreva ("A média é ", media) } } 9) programa { funcao inicio() { inteiro w, x, y, z real A[4][3] logico repeticao

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

49

para (w = 0; w < 4; w = w + 1) { para (x = 0; x < 3; x = x + 1) { escreva ("Digite um número: ") leia (A[w][x]) } } repeticao = falso para (w = 0; w < 4; w = w + 1) { para (x = 0; x < 3; x = x + 1) { para (y = 0; y < 4; y = y + 1) { para (z = 0; z < 3; z = z + 1) { se (A[w][x] == A[y][z] e (w != y ou x != z)) repeticao = verdadeiro } } } } se (repeticao == verdadeiro) escreva ("Houve repetição!\n") senao escreva ("Não há repetição!\n") } } 10) programa { caracter velha[3][3], peca = 'X' inteiro i, j, linha, coluna logico fim = falso cadeia mensagem funcao inicio() { para (i = 0; i < 3; i = i + 1) { para (j = 0; j < 3; j = j + 1) { velha[i][j] = ' '

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

50

} } faca { mensagem = "" escreva ("Jogador ", peca, "\n") escreva ("Digite a linha (0, 1 ou 2): ") leia (linha) escreva ("Digite a coluna (0, 1 ou 2): ") leia (coluna) se (linha >= 0 e linha < 3 e coluna >= 0 e coluna < 3) { se (velha[linha][coluna] == ' ') { velha[linha][coluna] = peca se (peca == 'X') peca = 'O' senao peca = 'X' } senao { mensagem = "Casa já ocupada! Repita a jogada...\n" } } senao mensagem = "Valor inválido para linha e/ou coluna! Repita a jogada...\n" // Verificar o fim do jogo: linhas para (i = 0; i < 3; i = i + 1) { se (velha[i][0] == velha[i][1] e velha[i][0] == velha[i][2] e velha[i][0] != ' ') { mensagem = "PARABÉNS!!! O jogador " + velha[i][0] + " é o vencedor.\n" fim = verdadeiro } } // Verificar o fim do jogo: colunas para (i = 0; i < 3; i = i + 1) { se (velha[0][i] == velha[1][i] e velha[0][i] == velha[2][i] e velha[0][i] != ' ')

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

51

{ mensagem = "PARABÉNS!!! O jogador " + velha[0][i] + " é o vencedor.\n" fim = verdadeiro } } // Verificar o fim de jogo: diagonais se (velha[0][0] == velha[1][1] e velha[0][0] == velha[2][2] e velha[0][0] != ' ') { mensagem = "PARABÉNS!!! O jogador " + velha[0][0] + " é o vencedor.\n" fim = verdadeiro } senao se (velha[0][2] == velha[1][1] e velha[0][2] == velha[2][0] e velha[0][2] != ' ') { mensagem = "PARABÉNS!!! O jogador " + velha[0][2] + " é o vencedor.\n" fim = verdadeiro } se (fim == falso) { // Verificar se há casas vazias inteiro vago = 0 para (i = 0; i < 3; i = i + 1) para (j = 0; j < 3; j = j + 1) se (velha[i][j] == ' ') vago = vago + 1 se (vago == 0) { mensagem = "EMPATE!!!" fim = verdadeiro } } se (mensagem != "") escreva (mensagem, "\n") } enquanto (fim == falso) } } 11) programa {

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

52

funcao inicio() { inteiro A[] = {4, 7, 2, 5, 0, 0, 0, 0, 0, 0}, B[] = {3, 2, 1}, x, y y = 4 para (x = 0; x < 3; x = x + 1) { A[y] = B[x] y++ } para (x = 0; x < 7; x = x + 1) escreva (A[x], ", ") } } 12) programa { funcao inicio() { real num[12], maior inteiro i para (i = 0; i < 12; i = i + 1) { escreva ("Digite o ", (i + 1), "° valor: ") leia (num[i]) } maior = num[0] para (i = 1; i < 12; i = i + 1) { se (num[i] > maior) maior = num[i] } escreva ("O maior núnero é ", maior) } } 13) programa {

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

53

funcao inicio() { caracter velha[3][3] inteiro i, j velha[0][0] = 'O' velha[0][1] = 'X' velha[0][2] = ' ' velha[1][0] = ' ' velha[1][1] = 'O' velha[1][2] = ' ' velha[2][0] = 'X' velha[2][1] = ' ' velha[2][2] = 'O' para (i = 0; i < 3; i = i + 1) { para (j = 0; j < 3; j = j + 1) { escreva (velha[i][j], " ") } escreva ("\n") } } } 14) programa { funcao inicio() { inteiro A[10], B[10], i para (i = 0; i < 10; i = i + 1) { escreva ("Número? ") leia (A[i]) se (i % 2 == 0) B[i] = A[i] * 5 senao B[i] = A[i] + 5 } para (i = 0; i < 10; i = i + 1) { escreva (A[i], " -> ", B[i], "\n")

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

54

} } } 15) programa { funcao inicio() { inteiro multiplos[20], i para (i = 0; i < 20; i = i + 1) { multiplos[i] = (i + 1) * 5 escreva (multiplos[i], ", ") } } } 16) programa { inclua biblioteca Util --> util funcao inicio() { inteiro i, v[500], soma, media soma = 0 para (i = 0; i < 500; i = i + 1) { v[i] = util.sorteia(1, 1000) soma = soma + v[i] } media = soma / 500 escreva ("A média é ", media) } } 17) programa { inclua biblioteca Util --> util funcao inicio() {

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

55

inteiro i, v[200] para (i = 0; i < 200; i = i + 1) { v[i] = util.sorteia(1, 100) se (v[i] % 4 == 0) { escreva (v[i], ", ") } } } } Páginas 107 e 108 Nota: As soluções apresentadas a seguir estão sempre em Portugol, porém, a lógica para representa-las em Fluxograma e Scratch é a mesma. 1) programa { inteiro opcao real valor1, valor2, resultado funcao vazio somar() { escreva ("Valor 1: ") leia (valor1) escreva ("Valor 2: ") leia (valor2) resultado = valor1 + valor2 escreva ("Soma: ", resultado, "\n") } funcao vazio subtrair() { escreva ("Valor 1: ") leia (valor1) escreva ("Valor 2: ") leia (valor2) resultado = valor1 - valor2 escreva ("Subtração: ", resultado, "\n") } funcao vazio multiplicar() { escreva ("Valor 1: ")

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

56

leia (valor1) escreva ("Valor 2: ") leia (valor2) resultado = valor1 * valor2 escreva ("Multiplicação: ", resultado, "\n") } funcao vazio dividir() { escreva ("Valor 1: ") leia (valor1) escreva ("Valor 2: ") leia (valor2) resultado = valor1 / valor2 escreva ("Divisão: ", resultado, "\n") } funcao inicio() { faca { escreva ("Digite 1. Somar, 2. Subtrair, 3. Multiplicar, 4. Dividir ou 0. Sair ? ") leia (opcao) se (opcao == 1) somar() senao se (opcao == 2) subtrair() senao se (opcao == 3) multiplicar() senao se (opcao == 4) dividir() } enquanto (opcao != 0) } } 2) programa { inteiro opcao real valor1, valor2, resultado funcao vazio somar() { escreva ("Valor 1: ") leia (valor1)

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

57

escreva ("Valor 2: ") leia (valor2) resultado = valor1 + valor2 escreva ("Soma: ", resultado, "\n") } funcao vazio subtrair() { escreva ("Valor 1: ") leia (valor1) escreva ("Valor 2: ") leia (valor2) resultado = valor1 - valor2 escreva ("Subtração: ", resultado, "\n") } funcao vazio multiplicar() { escreva ("Valor 1: ") leia (valor1) escreva ("Valor 2: ") leia (valor2) resultado = valor1 * valor2 escreva ("Multiplicação: ", resultado, "\n") } funcao vazio dividir() { escreva ("Valor 1: ") leia (valor1) escreva ("Valor 2: ") leia (valor2) resultado = valor1 / valor2 escreva ("Divisão: ", resultado, "\n") } funcao vazio quadrado() { escreva ("Valor 1: ") leia (valor1) resultado = valor1 * valor1 escreva ("Quadrado: ", resultado, "\n") } funcao inicio() { faca {

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

58

escreva ("Digite 1. Somar, 2. Subtrair, 3. Multiplicar, 4. Dividir, 5. Quadrado ou 0. Sair ? ") leia (opcao) se (opcao == 1) somar() senao se (opcao == 2) subtrair() senao se (opcao == 3) multiplicar() senao se (opcao == 4) dividir() senao se (opcao == 5) quadrado() } enquanto (opcao != 0) } } 3) programa { funcao real c2f (real valor) { real conv = valor * 1.8 + 32 retorne conv } funcao real f2c (real valor) { real conv = (valor - 32) / 1.8 retorne conv } funcao real c2k (real valor) { real conv = valor + 273.15 retorne conv } funcao real k2c (real valor) { real conv = valor - 273.15 retorne conv } funcao real f2k (real valor) {

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

59

real conv = (valor + 459.67) / 1.8 retorne conv } funcao real k2f (real valor) { real conv = valor * 1.8 - 459.67 retorne conv } funcao inicio() { inteiro opcao real temp, result caracter continuar faca { escreva ("Digite a temperatura: ") leia (temp) escreva ("Digite:\n") escreva ("1. Celsius para Fahrenheit\n") escreva ("2. Fahrenheit para Celsius\n") escreva ("3. Celsius para Kelvin\n") escreva ("4. Kelvin para Celsius\n") escreva ("5. Fahrenheit para Kelvin\n") escreva ("6. Kelvin para Fahrenheit\n") escreva ("Opção: ") leia (opcao) se (opcao == 1) { result = c2f (temp) escreva ("\nResultado: ", result, "\n") } senao se (opcao == 2) { result = f2c (temp) escreva ("\nResultado: ", result, "\n") } senao se (opcao == 3) { result = c2k (temp) escreva ("\nResultado: ", result, "\n") } senao se (opcao == 4) {

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

60

result = k2c (temp) escreva ("\nResultado: ", result, "\n") } senao se (opcao == 5) { result = f2k (temp) escreva ("\nResultado: ", result, "\n") } senao se (opcao == 6) { result = k2f (temp) escreva ("\nResultado: ", result, "\n") } senao { escreva ("ERRO: Opção inválida!") } escreva ("Deseja realizar outra conversão (S/N) ? ") leia (continuar) } enquanto (continuar == 'S' ou continuar == 's') } } Páginas 112 e 113 Nota: As soluções apresentadas a seguir estão sempre em Portugol, porém, a lógica para representa-las em Fluxograma e Scratch é a mesma. 1) programa { inclua biblioteca Texto --> texto const inteiro MAX = 10 inteiro codigo[MAX] cadeia descricao[MAX] real preco[MAX] funcao vazio entrada() { para (inteiro i = 0; i < MAX; i = i + 1) { escreva ("Código: ") leia (codigo[i]) escreva ("Descrição: ")

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

61

leia (descricao[i]) escreva ("Preço: ") leia (preco[i]) } } funcao vazio saida() { para (inteiro i = 0; i < MAX; i = i + 1) { se (texto.obter_caracter(descricao[i], 0) == 'R') { escreva ("Código: ", codigo[i], "\n") escreva ("Descrição: ", descricao[i], "\n") escreva ("Preço: ", preco[i], "\n\n") } } } funcao inicio() { entrada() saida() } } 2) programa { const inteiro MAX = 10 inteiro codigo[MAX] cadeia descricao[MAX] real preco[MAX] funcao vazio entrada() { para (inteiro i = 0; i < MAX; i = i + 1) { escreva ("Código: ") leia (codigo[i]) escreva ("Descrição: ") leia (descricao[i]) escreva ("Preço: ") leia (preco[i]) } }

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

62

funcao vazio saida() { cadeia prodCaro = descricao[0] real precoCaro = preco[0] para (inteiro i = 1; i < MAX; i = i + 1) { se (preco[i] > precoCaro) { prodCaro = descricao[i] precoCaro = preco[i] } } escreva ("Produto mais caro: ", prodCaro, "\n") } funcao inicio() { entrada() saida() } } 3) programa { const inteiro MAX = 100 cadeia nome[MAX], ddd[MAX], telefone[MAX] funcao vazio entrada() { para (inteiro i = 0; i < MAX; i = i + 1) { escreva ("Nome: ") leia (nome[i]) escreva ("DDD: ") leia (ddd[i]) escreva ("Telefone: ") leia (telefone[i]) } } funcao inicio() { entrada()

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

63

} } 4) programa { const inteiro MAX = 100 cadeia nome[MAX], ddd[MAX], telefone[MAX] funcao vazio entrada() { para (inteiro i = 0; i < MAX; i = i + 1) { escreva ("Nome: ") leia (nome[i]) escreva ("DDD: ") leia (ddd[i]) escreva ("Telefone: ") leia (telefone[i]) } } funcao vazio consulta() { cadeia consNome logico achou = falso escreva ("Digite o nome a ser procurado: ") leia (consNome) para (inteiro i = 0; i < MAX; i = i + 1) { se (consNome == nome[i]) { escreva ("DDD e Telefone: (", ddd[i], ") ", telefone[i], "\n") achou = verdadeiro } } se (achou == falso) escreva ("Nome não localizado!\n") } funcao inicio() {

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

64

entrada() consulta() } } 5) programa { const inteiro MAX = 100 cadeia nome[MAX], ddd[MAX], telefone[MAX] funcao vazio entrada() { para (inteiro i = 0; i < MAX; i = i + 1) { escreva ("Nome: ") leia (nome[i]) escreva ("DDD: ") leia (ddd[i]) escreva ("Telefone: ") leia (telefone[i]) } } funcao vazio contar() { inteiro cont = 0 para (inteiro i = 0; i < MAX; i = i + 1) { se (ddd[i] == "11") { cont = cont + 1 } } escreva ("Estão cadastrados ", cont, " DDDs 11\n") } funcao inicio() { entrada() contar() } }

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

65

6) programa { const inteiro MAX = 10 cadeia nome[MAX] real nota[MAX][2] funcao vazio entrada() { para (inteiro i = 0; i < MAX; i = i + 1) { escreva ("Nome: ") leia (nome[i]) escreva ("Nota 1: ") leia (nota[i][0]) escreva ("Nota 2: ") leia (nota[i][1]) } } funcao vazio calcular() { real media para (inteiro i = 0; i < MAX; i = i + 1) { media = (nota[i][0] + nota[i][1]) / 2 escreva ("Aluno: ", nome[i], " - Média: ", media, " - Situação = ") se (media < 6.0) escreva ("Reprovado\n") senao escreva ("Aprovado\n") } } funcao inicio() { entrada() calcular() } } 7) programa { const inteiro MAX = 100

Aprenda Lógica de Programação e Algoritmos Oliveira e Lühmann

66

cadeia modelo[MAX], cor[MAX] inteiro anoFab[MAX] funcao vazio entrada() { para (inteiro i = 0; i < MAX; i = i + 1) { escreva ("Modelo: ") leia (modelo[i]) escreva ("Ano de Fabricação: ") leia (anoFab[i]) escreva ("Cor: ") leia (cor[i]) } } funcao vazio contar() { inteiro cont = 0 para (inteiro i = 0; i < MAX; i = i + 1) { se (cor[i] == "azul") cont = cont + 1 } escreva ("Total de veículos com a cor azul: ", cont) } funcao inicio() { entrada() contar() } }