Buscar

Resolucao_Atividades_Unidade_4

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Disciplina: Algoritmos de Programação 
Professor: Luiz Reginaldo Almeida Fleury Curado 
Email: luiz.curado@ucb.br 
 
Atividades da Unidade 4 (resolvidas no quarto chat) 
 
Aula 7, Atividade 1) 
Faça um algoritmo que leia os elementos de um vetor de vinte posições de inteiros e em 
seguida imprima: 
a. A média dos elementos do vetor. 
b. Todos os elementos do vetor em ordem inversa à leitura. 
c. A quantidade de elementos pares que existem no vetor. 1) 
Solução: 
algoritmo Vetores; 
principal 
 // Declarações 
 inteiro vetor[20] ; 
 inteiro i ; 
 inteiro soma, media, numPares ; 
 
 // Leitura dos elementos do vetor 
 para (i de 0 ate 19 passo 1) faca 
 escreva( "Entre com o vetor[" , i, "]: " ); 
 leia( vetor[i] ); 
 fimPara 
 
 // a. Média dos elementos do vetor 
 soma = 0; 
 para (i de 0 ate 19 passo 1) faca 
 soma = soma + vetor[i] ; 
 fimPara 
 media = soma / 20 ; 
 escreval( "A media dos elementos do vetor = ", media ); 
 
 
 
 // b. Imprimir os elementos do vetor em ordem inversa à leitura. 
 escreva( "Ordem inversa: "); 
 para (i de 19 ate 0 passo -1) faca 
 escreva( vetor[i], " " ); 
 fimPara 
 
 // c. A quantidade de elementos pares que existem no vetor. 
 numPares = 0 ; 
 para (i de 0 ate 19 passo 1) faca 
 se ( (vetor[i] % 2) == 0 ) entao 
 numPares = numPares + 1 ; 
 fimSe 
 fimPara 
 escreval( "Quantidade de elementos pares = ", numPares ); 
 
fimPrincipal 
Aula 7, Atividade 2) 
Faça um algoritmo que leia um vetor de vinte posições e o imprima (todos os seus elementos). 
Em seguida, troque o primeiro elemento com o último, o segundo com o penúltimo, o terceiro 
com o antepenúltimo, e assim sucessivamente. Imprima novamente o vetor depois da troca. 
Observe que não é apenas para imprimir em ordem inversa, como fizemos no exercício 
anterior, mas para efetivamente trocar os valores das posições.
Solução: 
algoritmo TrocaValorVetores; 
principal 
 // Declarações 
 inteiro vetor[20] ; 
 inteiro i ; 
 inteiro aux ; 
 
 
 
 
 // Leitura dos elementos do vetor 
 para (i de 0 ate 19 passo 1) faca 
 escreva( "Entre com o vetor[" , i, "]: " ); 
 leia( vetor[i] ); 
 fimPara 
 
 // Imprime o vetor 
 escreva( "Conteudo do vetor: " ); 
 para (i de 0 ate 19 passo 1) faca 
 escreva( vetor[i], " " ); 
 fimPara 
 
 // Troca de valores 
 para (i de 0 ate 9 passo 1) faca 
 aux = vetor[ i ] ; 
 vetor[ i ] = vetor[ 19-i ] ; 
 vetor[ 19-i ] = aux ; 
 fimPara 
 
 // Imprime o vetor 
 escreva( "Vetor depois da troca: " ); 
 para (i de 0 ate 19 passo 1) faca 
 escreva( vetor[i], " " ); 
 fimPara 
 
fimPrincipal 
Aula 7, Atividade 3) 
Faça um algoritmo que receba uma frase do usuário e imprima: 
a. A quantidade de consoantes da frase. 
b. A quantidade de palavras da frase. 
c. A frase com apenas as iniciais em maiúsculo. Independente de ter sido informada em 
maiúsculo ou minúsculo. Exemplo: Hello World. 
 
Solução: 
algoritmo MinhaFrase ; 
principal 
 // Declarações 
 texto frase ; 
 inteiro i ; 
 caracter letra ; 
 inteiro numConsoantes ; 
 inteiro numPalavras ; 
 logico lendoPalavra ; 
 texto novaFrase ; 
 
 // Leitura da frase, e conversao para minusculo 
 escreva( "Entre com a frase: " ); 
 leia( frase ) ; 
 frase = minusculo( frase ); 
 
 // a. conta o numero de consoantes 
 numConsoantes = 0 ; 
 para (i de 0 ate tamanhoTexto(frase)-1 passo 1) faca 
 letra = caracterTexto( frase, i ) ; 
 se( (letra == 'b') ou (letra == 'c') ou (letra == 'd') ou 
 (letra == 'f') ou (letra == 'g') ou (letra == 'h') ou 
 (letra == 'j') ou (letra == 'k') ou (letra == 'l') ou 
 (letra == 'm') ou (letra == 'n') ou (letra == 'p') ou 
 (letra == 'q') ou (letra == 'r') ou (letra == 's') ou 
 (letra == 't') ou (letra == 'v') ou (letra == 'x') ou 
 (letra == 'w') ou (letra == 'y') ou (letra == 'z') ) entao 
 numConsoantes = numConsoantes + 1; 
 fimSe 
 fimPara 
 escreval( "A frase possui ", numConsoantes, " consoantes."); 
 
 
 
 // b. A quantidade de palavras da frase. 
 numPalavras = 0 ; 
 lendoPalavra = falso ; 
 para (i de 0 ate tamanhoTexto(frase)-1 passo 1) faca 
 letra = caracterTexto( frase, i ) ; 
 // Se encontramos espaco, entao nao estamos lendo uma palavra 
 se ( letra == ' ' ) entao 
 lendoPalavra = falso ; 
 // Caso contrario, temos uma letra. 
 // Entao, se lendoPalavra = falso o caractere anterior foi 
 // um espaço. Essa essa é a primeira letra da palavra 
 senao se (lendoPalavra == falso ) entao 
 lendoPalavra = verdadeiro ; 
 numPalavras = numPalavras + 1; 
 fimSe 
 fimSe 
 fimPara 
 escreval( "A frase possui ", numPalavras, " palavras."); 
 
 // c. A frase com apenas as iniciais em maiúsculo. 
 novaFrase = "" ; 
 lendoPalavra = falso ; 
 para (i de 0 ate tamanhoTexto(frase)-1 passo 1) faca 
 letra = caracterTexto( frase, i ) ; 
 // Se encontramos espaco, entao nao estamos lendo uma palavra 
 se ( letra == ' ' ) entao 
 lendoPalavra = falso ; 
 novaFrase = novaFrase + ' ' ; 
 
 // Caso contrario, temos uma letra. 
 // Entao, se lendoPalavra = falso o caractere anterior foi 
 // um espaço. Essa essa é a primeira letra da palavra. 
 // Passa a letra para maiuscula 
 
 
 
 senao se (lendoPalavra == falso ) entao 
 lendoPalavra = verdadeiro ; 
 novaFrase = novaFrase + maiusculo( "" + letra ) ; 
 // Se chegar aqui temos uma letra, mas essa não é a primeira 
 // letra da palavra 
 senao 
 novaFrase = novaFrase + letra ; 
 fimSe 
 fimSe 
 fimPara 
 escreval( "A frase com iniciais em maisculas = ", novaFrase); 
fimPrincipal 
 
Aula 8, Atividade 1) 
A prefeitura de uma cidade fez uma pesquisa entre seus habitantes, coletando dados sobre o 
salário e número de filhos. A prefeitura deseja saber: 
 
a. Média do salário da população. 
b. Média do número de filhos. 
c. Maior salário. 
d. Percentual de pessoas com salário até R$ 500,00. 
O final da leitura de dados se dará com a entrada de um salário negativo. 
O Calango possui uma função (comando) chamado "limpaTela();". Verifique se esta função 
pode ser útil na implementação desse algoritmo. 
Solução: 
algoritmo PesquisaPrefeitura ; 
principal 
 // Declarações 
 real salario, somaSalarios, mediaSalarios, maiorSalario ; 
 inteiro numeroFilhos, somaNumeroFilhos, mediaNumeroFilhos ; 
 inteiro numeroValoresLidos ; 
 inteiro numeroPessoasComSalarioAte500 ; 
 real percentualPessoasComSalarioAte500 ; 
 
 
 // Inicializa variaveis 
 somaSalarios = 0 ; 
 somaNumeroFilhos = 0 ; 
 numeroValoresLidos = 0 ; 
 numeroPessoasComSalarioAte500 = 0 ; 
 maiorSalario = 0 ; 
 
 // Repeticao 
 faca 
 // Lê salario 
 escreva( "Entre com o salário: " ); 
 leia( salario ) ; 
 
 // O fim da leitura ocorre com um salário negativo 
 // Então só faz os calculos abaixo, se o salario for positivo 
 se ( salario >= 0 ) entao 
 // Lê número de filhos 
 escreva( "Entre com o número de filhos: " ); 
 leia( numeroFilhos ); 
 
 // Guarda os valores lidos nas somas 
 somaSalarios = somaSalarios + salario ; 
 somaNumeroFilhos = somaNumeroFilhos + numeroFilhos ; 
 
 // Conta mais um no numero de valores lidos 
 numeroValoresLidos = numeroValoresLidos + 1; 
 
 // Verifica se esse é o maior salário 
 se ( salario > maiorSalario ) entao 
 maiorSalario = salario ; 
 fimSe 
 
 
 
 // Conta pessoas com salario até 500se (salario <= 500) entao 
 numeroPessoasComSalarioAte500 = 
 numeroPessoasComSalarioAte500 + 1 ; 
 fimSe 
 fimSe 
 enquanto( salario >= 0 ) ; 
 
 // Calcula resultados 
 mediaSalarios = somaSalarios / numeroValoresLidos ; 
 mediaNumeroFilhos = somaNumeroFilhos / numeroValoresLidos ; 
 percentualPessoasComSalarioAte500 = 
 (numeroPessoasComSalarioAte500 / numeroValoresLidos) * 100 ; 
 
 // Escreve resultados 
 escreval( "a. Média do salário da população = ", mediaSalarios); 
 escreval( "b.Média do número de filhos = " , mediaNumeroFilhos); 
 escreval( "c. Maior salário = ", maiorSalario ); 
 escreval( "d. Percentual de pessoas com salário até R$ 500 = ", 
 percentualPessoasComSalarioAte500:2:2, "%"); 
 
fimPrincipal 
 
Aula 8, Atividade 2) 
Conforme discutimos, um bom programador programa para o usuário, para o programador e 
para o computador. Assim, faça o algoritmo a seguir o MELHOR possível para a dimensão 
programador. Capriche nos comentários explicativos! 
Mais uma coisa: existem alguns algoritmos que são clássicos dentro da computação. Assim, é 
importante que você os conheça. Um dos principais é o Fibonacci. 
Faça um algoritmo que imprima os 50 primeiros termos da série de Fibonacci. A série de 
Fibonacci é como se segue: 1, 1, 2, 3, 5, 8, 13, ..., onde o próximo número da sequência é 
obtido pela soma dos dois números anteriores. Por exemplo, o próximo será a soma dos 2 
últimos (8 + 13).. 
 
 
 
Solução: 
algoritmo Fibonacci; 
principal 
 // Declarações 
 inteiro termo1, termo2 ; 
 inteiro contador ; 
 inteiro proximo ; 
 
 // Inicio da serie 
 termo1 = 1 ; 
 termo2 = 1 ; 
 
 // Impressao da serie - inicio 
 escreval( "Termos da série: " ); 
 escreva( "Termo 1: " + termo1 + " " ) ; 
 escreva( "Termo 2: " + termo2 + " " ) ; 
 
 // Impressao da serie - do terceiro ao 50º termo 
 para (contador de 3 ate 50 passo 1) faca 
 // O próximo termo da sequência é obtido pela soma dos 
// dois termos anteriores 
 proximo = termo1 + termo2 ; 
 escreval( "Termo ", contador, ": ", proximo, " " ) ; 
 
 // Atualiza os termos 
 termo1 = termo2 ; 
 termo2 = proximo ; 
 fimPara 
 
fimPrincipal 
 
 
 
Aula 8, Atividade 3) 
Outro algoritmo clássico é o do número primo. Faça um algoritmo receba um número do 
usuário e informe se este número é ou não primo. Número primo é aquele que só pode ser 
divisível (dando resto 0) por 1 e ele mesmo. 
Solução: 
algoritmo VerificaPrimo; 
principal 
 // Declarações 
 inteiro numero ; 
 inteiro divisor ; 
 logico primo ; 
 
 // Pede o numero 
 escreva( "Entre com o número: " ); 
 leia( numero ); 
 
 // Início: assumimos que o número é primo e o primeiro divisor 2 
 primo = verdadeiro ; 
 divisor = 2 ; 
 
 // Verifica se é primo 
 enquanto( (primo == verdadeiro) e (divisor < numero) ) faca 
 se ( (numero % divisor) == 0 ) entao 
 primo = falso ; 
 senao 
 divisor = divisor + 1 ; 
 fimSe 
 fimEnquanto 
 
 se( primo ) entao 
 escreva( "O numero é primo." ); 
 senao 
 escreva( "O numero não é primo, é divisível por ", divisor ); 
 fimSe 
fimPrincipal

Outros materiais