FATEC-SP - ALP Resolução dos Exercícios de Aprendizagem nº 1 Professor: José Paulo Ciscato Desenvolva os seguintes algoritmos em Portugol e faça os testes de mesa com um ou mais valores conforme a necessidade. 1. Dados dois números, imprima o maior. (os números lidos podem ser inteiros ou reais, cabe a você escolher). Res.: PROGRAMA EA1EX1 VARIAVEIS A, B: INTEIRO INICIO ESCREVER 'Entre com os valores de A e B:' LER A, B SE A > B ENTAO ESCREVER 'Maior: ', A SENAO SE B > A ENTAO ESCREVER 'Maior: ', B FIM. Teste de Mesa: 1ª Execução: A
B
2
3
Saída Entre com os valores de A e B: Maior: 3
2ª Execução: 4
1
Entre com os valores de A e B: Maior: 4
2. Dados dois números, indique se são iguais. Caso sejam diferentes, imprima o maior e o menor. Res.: PROGRAMA EA1EX2 VARIAVEIS A, B: INTEIRO INICIO ESCREVER 'Entre com 2 números' LER A, B SE A = B ENTAO ESCREVER 'Os números são iguais' SENAO SE A > B ENTAO ESCREVER A, B SENAO ESCREVER B, A
1
FIM. Teste de mesa: 1ª Execução: A
B
2
2
Saída Entre com 2 números Os números são iguais
2ª Execução: A
B
5
6
Saída Entre com 2 números 6 5
3ª Execução: A
B
7
1
Saída Entre com 2 números 7 1
3. Imprima todos os números inteiros de 1 a 10. PROGRAMA EA1EX3 VARIAVEIS X : INTEIRO INICIO PARA X <- 1 ATE 10 FACA ESCREVER X FIM. Teste de mesa: X Saída --------------1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10
4. Dado um número inteiro N e uma lista de N números inteiros, imprima a soma dos números da lista. PROGRAMA EA1EX4 VARIAVEIS N, X, S, C : INTEIRO INICIO
2
ESCREVER 'Entre com a quantidade:' LER N S <- 0 PARA C <- 1 ATE N FACA INICIO ESCREVER 'Entre com um valor' LER X S <- S + X FIM ESCREVER 'Total: ', S FIM. Teste de mesa: N X S C Saída ------------------------Entre com 5 0 5 5 1 Entre com 8 13 2 Entre com 2 15 3 Entre com 7 22 4 Entre com 9 31 5 Entre com Total: 31
a quantidade: um um um um um
valor: valor: valor: valor: valor:
5. Dados três números, A0, LIMITE e RAZÃO, imprima todos os números gerados pela PA (Progressão Aritmética) cujos valores são menores que o LIMITE. A PA tem valor inicial A0 e razão RAZÃO. PROGRAMA EA1EX5 VARIAVEIS A0, LIMITE, RAZAO : INTEIRO INICIO ESCREVER 'Entre com os valores de A0, LIMITE e RAZÃO: ' LER A0, LIMITE, RAZAO ENQUANTO A0 < LIMITE FACA INICIO ESCREVER A0 A0 <- A0 + RAZAO FIM FIM. Teste de mesa: A0 LIMITE RAZAO Saída -----------------------------5 10 15 20 25
25
5
Entre com os valores de A0, LIMITE e RAZÃO: 5 10 15 20 25
6. Dado um número inteiro N, divida-o por 2 (sucessivamente) enquanto o resultado for maior que 0. No final, imprima o nº de divisões necessárias para zerar o quociente. PROGRAMA EA1EX6 VARIAVEIS
3
N, C : INTEIRO INICIO ESCREVER 'Forneça o valor de N:' LER N C <- 0 ENQUANTO N <> 0 FACA INICIO N <- N DIV 2 C <- C + 1 FIM ESCREVER 'Quantidade de divisões: ', C FIM. Teste de mesa: N C Saída --------------32 0 Forneça o valor de N: 16 1 82 43 24 15 06 Quantidade de divisões: 6
7. Dada uma lista de números reais terminada pelo número 99.99, imprima cada número lido. No final, imprima a média aritmética de todos os números da lista (É claro que o nº 99.99 não faz parte da média). PROGRAMA EA1EX7 VARIAVEIS X, SOMA, MEDIA : REAL CONTADOR : INTEIRO INICIO SOMA <- 0.0 CONTADOR <- 0 ESCREVER 'Forneça um valor:' LER X ENQUANTO X <> 99.99 FACA INICIO SOMA <- SOMA + X CONTADOR <- CONTADOR + 1 ESCREVER 'Forneça um valor:' LER X FIM MEDIA <- SOMA / CONTADOR ESCREVER 'Media: ', MEDIA FIM. Teste de mesa: X SOMA MEDIA CONTADOR Saída ---------------------------------------12.0 0.0 0 Forneça 7.5 12.0 1 Forneça 23.3 19.5 2 Forneça 99.99 31.5 3 Forneça
4
um um um um
valor: valor: valor: valor:
10.5
Media: 10.5
8. Dado um número inteiro positivo N, calcule e imprima o maior quadrado menor ou igual a N. Exemplo: N = 38, o maior quadrado que é menor ou igual a 38 é 36, imprimir 36. PROGRAMA EA1EX8 VARIAVEIS MQ, N, R, Q, ANT : INTEIRO INICIO ESCREVER 'Forneça o valor de N:' LER N R <- 1 Q <- 1 ENQUANTO Q <= N FACA INICIO ANT <- Q Q <- R * R R <- R + 1 FIM SE Q = N ENTAO MQ = Q SENÃO MQ = ANT ESCREVER 'Maior quadrado menor ou igual a ', N, ': ', MQ FIM. Teste de mesa: N R Q ANT Saída ------------------------38 1 1 Forneça o valor de N: 2 1 1 3 4 1 4 9 4 5 16 9 6 25 16 7 36 25 8 49 36 Maior quadrado menor ou igual a 38: 36
9. Dada uma seqüência de letras terminadas pelo caracter Z. Imprima a quantidade de caracteres digitados. PROGRAMA EA1EX9 VARIAVEIS LETRA : CARACTER CONT : INTEIRO INICIO CONT <- 0 ESCREVER 'Digite uma letra:' LER LETRA ENQUANTO LETRA <> 'Z' FACA INICIO CONT <- CONT + 1 ESCREVER 'Digite uma letra:' LER LETRA
5
FIM ESCREVER 'Quantidade:', CONT FIM. Teste de mesa: LETRA CONT SAÍDA ------------------------a 0 Digite uma letra: b 1 Digite uma letra: y 2 Digite uma letra: t 3 Digite uma letra: Z 4 Digite uma letra: Quantidade: 4
10. Dada uma seqüência de letras terminada pelo caracter Z. Imprima a quantidade de vogais lidas. PROGRAMA EA1EX10 VARIAVEIS LETRA : CARACTER CONT : INTEIRO INICIO CONT <- 0 ESCREVER 'Entre com uma letra:' LER LETRA ENQUANTO LETRA <> 'Z' FACA INICIO 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') ENTAO CONT <- CONT + 1 ESCREVER 'Entre com uma letra:' LER LETRA FIM ESCREVER 'Quantidade de vogais:', CONT FIM. Teste de mesa: LETRA CONT SAÍDA ------------------------C 0 Entre com uma a Entre com uma U 1 Entre com uma Z 2 Entre com uma Quantidade de
6
letra: letra: letra: letra: vogais: 2
FATEC-SP - ALP Resolução dos Exercícios de Aprendizagem nº 2 Professor: José Paulo Ciscato Desenvolva os seguintes algoritmos em Portugol e faça os testes de mesa com um ou mais valores conforme a necessidade. 1. Faça um algoritmo que leia as informações dos alunos: MATRICULA, NOTA1, NOTA2, NOTA3, com o fim das informações indicado por MATRICULA=999. Para cada aluno, deve ser calculada a média de acordo com a seguinte fórmula: Média final = (2*NOTA1 + 3*NOTA2 + 4*NOTA3) / 9 Se média >= 7.0 => Imprima ‘APROVADO’, além da MATRICULA e Média final. Se média < 7.0 => Imprima ‘REPROVADO’, além da MATRICULA e Média final. PROGRAMA EA2EX1 VARIAVEIS MATRICULA : INTEIRO NOTA1, NOTA2, NOTA3, MEDIA : REAL INICIO ESCREVER ´Matricula:´ LER MATRICULA {1 a leitura } ENQUANTO MATRICULA <> 999 FACA INICIO LER NOTA1 LER NOTA2 LER NOTA3 MEDIA <- (2.0*NOTA1+3.0*NOTA2+4.0*NOTA3)/9.0 SE MEDIA >= 7.0 ENTAO ESCREVER ´Aprovado´ SENAO ESCREVER ´Reprovado´ ESCREVER MATRICULA ESCREVER MEDIA ESCREVER ´Matricula:´ LER MATRICULA {próxima leitura } FIM FIM.
2. Dados dois números inteiros positivos x e y, fazer a divisão de x por y sem usar o operador de divisão. PROGRAMA EA2EX2 VARIAVEIS X, Y, CONT, SOMA : INTEIRO INICIO CONT <- 0 SOMA <- 0 ESCREVER ´Forneça os valores de X e Y:´ LER X, Y ENQUANTO SOMA < X FACA INICIO SOMA <- SOMA + Y CONT <- CONT + 1 FIM ESCREVER ´Quociente:´, CONT FIM.
7
3. Dada a seqüência abaixo, calcular α: α
= 21 + 22 + 23 + ...2 50 50 49 48 1
PROGRAMA EA2EX3 VARIAVEIS ALFA, NUM, TERMO: REAL DEN : INTEIRO INICIO ALFA <- 0.0 NUM <- 2.0 DEN <- 50 ENQUANTO DEN >= 1 FACA INICIO TERMO <- NUM / DEN ALFA <- ALFA + TERMO NUM <- NUM * 2.0 DEN <- DEN – 1 FIM ESCREVER ´Valor de alfa:´,ALFA FIM.
4. Construa um algoritmo para calcular o π com a seqüência: π =
4 – 4 + 4 – 4 + 4 – 4 + ... 4 1 3 5 7 9 11 N
Obs.: com N impar e N > 0. PROGRAMA EA2EX4 VARIAVEIS N, I, SINAL : INTEIRO PI, TERMO : REAL INICIO ESCREVER ´Forneça o valor de N (N impar e > 0)´ LER N SE (N <= 0) OU ((N MOD 2)=0) ENTAO ESCREVER ´O valor de N deve ser impar e maior que zero´ SENAO INICIO I <- 1 PI <- 0.0 SINAL <- 1 ENQUANTO I <= N FACA INICIO TERMO <- 4.0 / I * SINAL PI <- PI + TERMO I <- I + 2 SINAL <- SINAL * (-1) FIM ESCREVER ´Valor de PI:´, PI FIM FIM.
5. Dada a seqüência, calcular o cos: cos = 1 – x2 + x4 - x6 + x8 - ... x N 2! 4! 6! 8! N!
Obs.: com N par, N > 1.
8
PROGRAMA EA2EX5 VARIAVEIS X, COS, TERMO, NUM, XP : REAL N, IFAT, SINAL, DEN, I : INTEIRO INICIO COS <- 1.0 I <- 2 SINAL <- -1 XP <- 2.0 LER N SE (N <= 1) OU ((N MOD 2)<>0) ENTAO ESCREVER ´Valor de N deve ser par e > 1´ SENAO INICIO LER X ENQUANTO I <= N FACA INICIO NUM <- EXP(XP * LN(X)) DEN <- 1 PARA IFAT <- 1 ATE I FACA DEN <- DEN * IFAT TERMO <- NUM / DEN COS <- COS + TERMO * SINAL I <- I + 2 SINAL <- SINAL * -1 XP <- XP + 2.0 FIM ESCREVER COS FIM.
6. Dados dois números inteiros positivos i e j, imprimir em ordem crescente os N (lido) primeiros múltiplos que podem ser de i ou de j ou de ambos. PROGRAMA EA2EX6 VARIAVEIS I, J, AUX, CONT : INTEIRO INICIO CONT <- 0 LER N LER I, J SE I < J ENTAO AUX <- I SENAO AUX <- J ENQUANTO CONT < N FACA INICIO SE ((AUX MOD I)=0) OU ((AUX MOD J)=0) ENTAO INICIO ESCREVER AUX CONT <- CONT + 1 FIM AUX <- AUX + 1 FIM FIM.
7. Dados um número inteiro N (N >= 10) verificar se este tem dois algarismos adjacentes iguais.
9
PROGRAMA EA2EX7 VARIAVEIS N, DIG, DIGANT : INTEIRO ADJ : LOGICO INCIO DIG <- 10 ADJ <- FALSO LER N SE N < 10 ENTAO ESCREVER ´Válido para números de 10 para cima´ SENAO INCIO ENQUANTO (N > 0) E NÃO ADJ FACA INICIO DIGANT <- DIG DIG <- N MOD 10 SE DIG = DIGANT ENTAO ADJ <- VERDADEIRO N <- N DIV 10 FIM SE ADJ ENTAO ESCREVER ´Tem dois algarismos adjacentes iguais´ SENAO ESCREVER ´Não tem dois algarismos adjacentes iguais´ FIM FIM.
8. Dado um número inteiro decimal (base 10), imprimir seu correspondente em binário (divisões sucessivas). PROGRAMA EA2EX8 VARIAVEIS N, D : INTEIRO INICIO LER N ESCREVER ´ ´ {16 espaços} ENQUANTO N <> 0 FACA INICIO D <- N MOD 2 ESCREVER N, CHR(8), CHR(8) {retrocede o cursor 2 vezes} N <- N DIV 2 FIM FIM. Obs.: CHR(8) significa retrocesso do cursor na tela.
10
FATEC-SP - ALP Resolução dos Exercícios de Aprendizagem nº 3 Professor: José Paulo Ciscato
Desenvolva os seguintes algoritmos em Portugol e faça os testes de mesa com um ou mais valores conforme a necessidade. 1. Dizemos que um número natural é triangular se ele é produto de três números naturais consecutivos. Ex.: 210 é triangular, pois 5 * 6 * 7 = 210 Dado um número natural, verifique se o mesmo é triangular. PROGRAMA EA3EX1 VARIAVEIS N, AUX, PROD : INTEIRO INICIO AUX <- 1 PROD <- 1 LER N ENQUANTO PROD < N FACA INICIO PROD <- AUX * (AUX + 1) * (AUX + 2) AUX <- AUX + 1 FIM SE PROD = N ENTAO ESCREVER N, ´é número triangular´ SENAO ESCREVER N, ´não é número triangular´ FIM.
2. Dado um numero natural N, determinar o número harmônico H definido por: N
HN =
Σ 1/k K=1
PROGRAMA EA3EX2 VARIAVEIS K, N : INTEIRO H : REAL INICIO H <- 0.0 LER N PARA K <- 1 ATE N FACA H <- H + 1.0 / K ESCREVER H FIM.
11
3. Dado um número inteiro N, calcule e imprima os N primeiros da seqüência: 1, 3, 6, 10, 15, ... PROGRAMA EA3EX3 VARIAVEIS N, T, D, C : INTEIRO INICIO T <- 1 D <- 2 C <- 0 LER N ENQUANTO C < N FACA INICIO ESCREVER T C <- C + 1 T <- T + D D <- D + 1 FIM FIM.
4. Dada uma seqüência de caracteres terminada pelo caracter ponto (‘.’). Imprima cada caracter lido eliminando os espaços. Obs.: cada dois ou mais espaços consecutivos deverá ser impresso apenas um espaço. PROGRAMA EA3EX4 VARIAVEIS LETRA, ANT : CARACTER INICIO LETRA <- ´ ´ ENQUANTO LETRA <> ´.´ FACA INICIO ANT <- LETRA LER LETRA SE ((LETRA <> ´ ´) OU (ANT <> ´ ´)) E (LETRA <> ´.´) ENTAO ESCREVER LETRA FIM FIM.
5. Dada uma série 1, -1/2, 1/3, -1/4, 1/5, ... imprima os 10 primeiros termos, bem como a soma dos mesmos. PROGRAMA EA3EX5 VARIAVEIS TERMO, SOMA : REAL C, I, SINAL : INTEIRO INICIO SOMA <- 0.0 SINAL <- 1 PARA C <- 1 ATE N FACA
12
INICIO TERMO <- 1.0 / C * SINAL SOMA <- SOMA + TERMO SINAL <- SINAL * -1 FIM ESCREVER SOMA FIM.
6. Dada uma seqüência de N números inteiros, determinar o tamanho da maior subseqüência. Ex.: N=7, -> 6, 1, 1, 4, 4, 4, 2 Maior subseqüência = 3 PROGRAMA EA3EX6 VARIAVEIS N, TERMO, ANT, TAM, I, MAIOR : INTEIRO INICIO MAIOR <- 0 TAM <- 0 TERMO <- 0 LER N PARA I <- 1 ATE N FACA INICIO ANT <- TERMO LER TERMO SE TERMO = ANT ENTAO TAM <- TAM + 1 SENAO INICIO SE TAM > MAIOR ENTAO MAIOR <- TAMANHO TAM <- 0 FIM FIM ESCREVER MAIOR FIM.
7. Dados três números inteiros positivos, verifique se eles formam os lados de um trângulo retângulo. hip2 = lado12 + lado22 PROGRAMA EA3EX7 VARIAVEIS H, L1, L2, Q1, Q2 : REAL INICIO LER H LER L1
13
LER L2 Q1 = H * H Q2 = L1 * L1 + L2 * L2 SE Q1 = Q2 ENTAO ESCREVER ´São lados de um triângulo retângulo´ SENAO ESCREVER ´Não são lados de um triângulo retângulo´ FIM.
8. Dado um número inteiro N (N>0), verifique se o mesmo é primo. PROGRAMA EA3EX8 VARIAVEIS I, N : INTEIRO PRIMO : LOGICO INICIO I <- 2 PRIMO <- VERDADEIRO LER N ENQUANTO (I < N) E PRIMO FACA INICIO SE (N MOD I) = 0 ENTAO PRIMO <- FALSO I <- I + 1 FIM SE PRIMO ENTAO ESCREVER ´O numero é primo´ FIM.
9. Dado um número inteiro N (N>0), determinar se seus dígitos estão em ordem estritamente crescente. N=341 => não N=2457 => sim N=335 => não PROGRAMA EA3EX9 VARIAVEIS N, DIG, ANT : INTEIRO CRESCENTE : LOGICO INICIO CRESCENTE <- VERDADEIRO DIG <- 10 LER N ENQUANTO (N <> 0) E CRESCENTE FACA INICIO ANT <- DIG DIG <- N MOD 10 SE DIG >= ANT ENTAO
14
CRESCENTE <- FALSO N <- N DIV 10 FIM SE CRESCENTE ENTAO ESCREVER ´Os digitos estão em ordem estritamente crescente´ FIM.
10. Dado um número inteiro em binário, o seu correspondente em decimal. Ex.: 1011 (binário) -> 11 (decimal) PROGRAMA EA3EX10 VARIAVEIS N, D, VB, SOMA, POT2 : INTEIRO INICIO SOMA <- 0 POT2 <- 1 LER N ENQUANTO N <> 0 FACA INICIO D <- N MOD 10 VB <- D * POT2 SOMA <- SOMA + VB POT2 <- POT2 * 2 N <- N DIV 10 FIM ESCREVER SOMA FIM.
15