Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Métodos de Solução de Problemas: Lógica está associada à coerência e à racionalidade. Não necessariamente à matemática, mas às demais ciências. Lógica: arte de bem pensar. Ciência das FORMAS do pensamento. Lógica: Correção do pensamento. Como filosofia, arte ou técnica, nos ensina a usar corretamente as leis do pensamento. Forma mais complexa do pensamento é o raciocínio. Lógica estuda a correção do raciocínio. Lógica tem em vista a ordem da razão. Lógica é proveniente da filosofia. Poderia-se dizer que a lógica é uma estrutura do juízo que permite que este se relacione com a realidade. A lógica é então o estudo filosófico de um raciocínio VÁLIDO, aplicado a atividades intelectuais, tais como matemática e ciência da computação. Construindo uma Lógica: Todo mamífero é um animal. Todo cavalo é um mamífero. Portanto, todo cavalo é um animal. A gaveta está fechada. A caneta está dentro da gaveta. Precisamos primeiro abrir a gaveta para depois pegar a caneta. Anacleto é mais velho que Felisberto. Felisberto é mais velho que Marivaldo. Portanto, Anacleto é mais velho que Marivaldo. Algoritmos: Um dos objetivos da lógica de programação é a CONSTRUÇÃO de ALGORITMOS coerentes e validados. Um algoritmo pode ser definido como uma sequência finita de passos, descritos em uma ordem lógica, que atingirão um objetivo bem definido. “Algoritmo é uma sequência de passos que deve ser seguida para a realização de uma tarefa.” Ascencio, 1999. “Algoritmo é uma sequência finita de instruções ou operações cuja execução, em tempo finito, resolve um problema computacional, qualquer que seja sua instância.” Salvetti, 1999. “Algoritmos são regras formais para a obtenção de um resultado ou da solução de um problema, englobando fórmulas de expressões aritméticas.” Manzano, 1997. Algoritmo 1: Somar três números. 1. Receber os três números; 2. Somar os três números; 3. Mostrar o resultado obtido. Método para Construção de Algoritmos: 1 - Compreender COMPLETAMENTE o PROBLEMA a ser resolvido, destacando pontos e objetos importantes. 2 - Definir os dados de entrada. Dados que serão FORNECIDOS para o cenário em questão. 3 - Definir o processamento, os cálculos, restrições, transformações dos dados de ENTRADA em SAÍDA. 4 - Definir os dados de saída, gerados após o processamento. 5 - Construir o algoritmo utilizando um dos tipos de dados. 6 - Testar o algoritmo realizando simulações. Descrição Narrativa: Análise do enunciado do problema e escrita da solução através de passos a serem seguidos em linguagem natural. Vantagens: Língua Natural, já bem conhecida. Desvantagens: dúbia, várias interpretações, dificuldade de transcrição para programa de computador. Fluxograma: Análise do enunciado do problema e escrita através de símbolos gráficos predefinidos. Vantagens: entendimento de elementos gráficos é mais simples que o entendimento de textos. Desvantagens: É necessário aprender a simbologia dos fluxogramas e, além disso, o algoritmo resultante não apresenta muitos detalhes. Dificulta transcrição para um programa. Pseudocódigo: Ou Portugol consistem em analisar o enunciado do problema e escrevê-lo através de regras predefinidas, os passos a serem seguidos para sua resolução. Vantagem: a passagem de um algoritmo para qualquer linguagem de programação é quase imediata. Basta conhecer a sintaxe da linguagem. Desvantagem: necessário aprender regras do pseudocódgio. Exercitando Narrativa: Passo 1 – Receber dois números que serão divididos Passo 2 – Se o segundo número for igual a zero, não poderá ser feita a divisão, pois não existe divisão por zero. Caso contrário, dividir os números e mostrar o resultado da divisão. Exercitando Portugol: ALGORITMO DECLARE N1, N2, D NUMÉRICO ESCREVA "Digite dois números" LEIA N1, N2 SE N2 = 0 ENTÃO ESCREVA "Impossível dividir" SENÃO INÍCIO D <- N1/N2 ESCREVA "Divisão = ", D FIM FIM_ALGORITMO APOL 1 (1) - A lógica muitas vezes é relacionada à racionalidade e à coerência e frequentemente a associamos apenas à matemática. Porém, sua aplicabilidade possui mais relação com outras áreas que possamos imaginar. É correto afirmar que: A) A lógica, como filosofia, procura estabelecer sempre do mesmo jeito. B) (x) Uma das formas de usarmos a lógica é no procedimento de correção do nosso modo de pensar para a construção de algoritmos de programação. C) A lógica não pode ser considerada como arte do pensar pois é exata demais. D) A forma mais complexa do pensamento não é o raciocínio, portanto a lógica não corrige o raciocínio. (2) - Visto que a forma mais complexa do pensamento é o raciocínio, a lógica estuda a correção do raciocínio. É correto afirmar que: A) (x) A lógica tem em vista a ordem da razão, portanto, isso dá a entender que a nossa razão pode funcionar desordenadamente. B) A lógica tem em vista a utilização da razão que já funciona ordenadamente, portanto a lógica estuda e ensina apenas a utilização natural da ordem de nossos pensamentos. C) A lógica não pode ser considerada como arte do pensar pois é exata demais. D) A forma mais complexa do pensamento não é o raciocínio, portanto a lógica não corrige o raciocínio. (3) - Utilizando as seguintes premissas e a conclusão: - Todo mamífero é um animal. - Todo cavalo é um mamífero. - Logo todo cavalo é um animal. A única sentença incorreta é: A) É considerado um silogismo de acordo com a lógica proposicional. B) Tais argumentos compostos por duas premissas e uma conclusão estabelecem uma relação válida ou não. C) Esta situação é um dos objetivos da lógica, que estuda técnicas para formalização, dedução e análise para verificação da validade de argumentos. D) (x) É considerado um silogismo de acordo com a lógica de predicados. (4) - Lógica de programação pode ser definida como o uso correto das leis do pensamento, da ordem da razão e de processos de raciocínio e simbolização formais na programação de computadores. É incorreto afirmar, ao se falar de lógica e lógica de programação, que: A) Um dos principais objetivos é a racionalidade e o desenvolvimento de técnicas que cooperam na produção de soluções logicamente válidas e coerentes. B) O mesmo raciocínio pode ser expresso em qualquer idioma existente, mas continuaria representando o mesmo raciocínio através de outra convenção. C) Uma vez a lógica estruturada, poderíamos representá-la em qualquer linguagem de programação. D) (x) O raciocínio é algo concreto e tangível. (5) - Um algoritmo fixa um padrão de comportamento a ser seguido ou uma norma de execução a ser trilhada, com vistas a alcançar, como resultado final, a solução de um problema, garantindo que sempre que executado, sob as mesmas condições, produza o mesmo resultado. É incorreta a definição de algoritmo abaixo: A) Algoritmo é uma sequência de passos que visa atingir um objetivo bem definido. Forbellone, 1999. B) Algoritmo é uma sequência finita de instruções ou operações cuja execução, em tempo finito, resolve um problema computacional, qualquer que seja sua instância. Salvetti, 1999. C) (x) Algoritmo é uma sequência de características padronizadas para realização de uma tarefa. Ascencio, 1999. D) Algoritmos são regras formais para obtenção de um resultado ou da solução de um problema, englobando fórmulas de expressões aritméticas. Manzano, 1997. (6) - Observe os passos abaixo e diga qual a ordem ideal para o funcionamento de um algoritmo que tenha por finalidade sacar dinheiro num banco 24 horas: A) Ir até o banco 24 horas / Digitar a senha / Solicitar a quantia desejada / Colocar o cartão / Se o saldo for maior ou igual à quantia desejada, sacar; caso contrário, mostrar mensagem de impossibilidade de saque / Retirar o cartão / Sair do banco 24 horas. B) Ir até o banco 24 horas / Colocar o cartão / Digitar a senha / Se o saldo for maior ou igual à quantia desejada, sacar; caso contrário, mostrar mensagem de impossibilidade de saque / Solicitar a quantia desejada / Retirar o cartão / Sair do banco 24 horas. C) Ir até o banco 24 horas / Sair do banco 24 horas / Colocar o cartão / Digitar a senha / Solicitar a quantia desejada / Se o saldo for maior ou igual à quantia desejada, sacar; caso contrário, mostrar mensagem de impossibilidade de saque / Retirar o cartão. D) (x) Ir até o banco 24 horas / Colocar o cartão / Digitar a senha / Solicitar a quantia desejada / Se o saldo for maior ou igual à quantia desejada, sacar; caso contrário, mostrar mensagem de impossibilidade de saque / Retirar o cartão / Sair do banco 24 horas. (7) - Um algoritmo pode ser escrito ou desenhado de várias formas. Entre estas formas, com suas definições, estão as seguintes: A) (x) Descrição Narrativa: escrita em linguagem natural. / Fluxograma: desenho através de símbolos gráficos predefinidos de passos a serem seguidos para resolução e / Pseudocódigo ou Portugol: escrita em linguagem natural porém com regras predefinidas e passos a serem seguidos para sua resolução. B) Descrição Narrativa: escrita em língua portuguesa. / Fluxograma: desenho através de símbolos gráficos predefinidos de passos a serem seguidos para resolução e / Pseudocódigo ou Portugol: escrita em linguagem natural com regras predefinidas e passos a serem seguidos para sua resolução. C) Descrição Narrativa: escrita em língua portuguesa ou inglesa. / Fluxograma: desenho através de símbolos gráficos predefinidos de passos a serem seguidos para resolução e / Pseudocódigo ou Portugol: escrita em linguagem natural com regras predefinidas e passos a serem seguidos para sua resolução. D) Descrição Narrativa: escrita em língua natural. / Fluxograma: desenho através de símbolos gráficos predefinidos de passos a serem seguidos para resolução e / Pseudocódigo ou Portugol: escrita em linguagem artificial com regras predefinidas e passos a serem seguidos para sua resolução. (8) - Faça um algoritmo que recebe dois números quaisquer, faça a multiplicação de ambos e depois mostre o resultado. Qual o passo, nas opções apresentadas a seguir, que não faz parte da resolução do algoritmo? A) Declare n1,n2, m numérico; Escreva “Digite os dois números” B) Leia n1, n2 C) (x) Se n1 = n2 escreva “Impossível realizar a operação”. D) m=n1*n2 (9) - Descrição narrativa consiste em analisar o enunciado do problema e escrever, utilizando uma linguagem natural (por exemplo, a língua portuguesa), os passos a serem seguidos para sua resolução. Existem vantagens e desvantagens, com as relacionadas nas opções a seguir, exceto: A) Vantagem: não é necessário aprender nenhum conceito novo. B) Vantagem: utiliza língua natural, a qual é bem conhecida. C) Desvantagem: Dificuldade para transcrição do algoritmo para programa. D) (x) Desvantagem: só é possível escrevê-la em Língua Portuguesa. (10) - Na escrita de um algoritmo que calcule a média de três valores quaisquer, a melhor resolução escrita em descrição narrativa seria: A) 1-receber os três valores. 2 – calcular a média aritmética. 3-se a média for maior que 7 dizer que o aluno está aprovado. 4-mostrar a média. B) 1-receber os três valores. 2 – calcular a soma aritmética. 3-mostrar a soma aritmética. 4-mostrar a média. C) (x) 1-receber os três valores. 2-calcular a média aritmética. 3-mostrar a média aritmética. D) 1-receber os três valores. 2 – somar os três valores. 3-mostrar a média aritmética. Inteiro, Reais, Caracteres, Lógicos Interiro: toda e qualquer informação numérica que pertença ao conjunto dos números inteiros relativos. Real: toda e qualquer informação numérica que pertença ao conjunto dos números reais. Caractere: toda e qualquer informação composta de um conjunto de caracteres alfanuméricos. numéricos: (0...9) alfabéticos: (A...Z, a...z) especiais: (#, ?, @) Lógico: toda e qualquer informação que pode assumir apenas duas situações. Verdadeiro e falso. Algoritmos precisam ser alimentados com dados do meio externo para efetuarem operações e cálculos. Depois devem enviar para o meio externo os resultados. A isso chamamos de comandos de entrada e saida. APOL 2 (1) - Aproximando-nos da maneira pela qual o computador manipula as informações, os tipos primitivos básicos utilizados para construção de programas serão: A) Sequência, condicional e repetição. B) Sequência, seleção e repetição. C) (x) Inteiro, caracter, real e lógico. D) Inteiro, lógico, real e numérico. (2) - Para manipulação de dados dentro de nossos algoritmos utilizamos: A) (x) Variáveis, que são alteradas constantemente no decorrer do tempo de execução dos algoritmos, e constantes, que não sofrem variação no decorrer do tempo de execução do algoritmo. B) Variáveis que são alteradas constantemente no decorrer do tempo, bem como constantes que também sofrem variações. C) Variáveis, constantes, estruturas de controle e declaração de variáveis. D) Variáveis inteiras, numéricas e caracter que não alteram durante todo o tempo de execução. (3) - Cada tipo de dado deve ser declarado no início do algoritmo. O exemplo abaixo está correto segundo as regras de definição de variáveis: A) Inteiro: x y; Caracter: nome; Real: peso, dolar; Lógico: resposta. B) Inteiro: x10; Caracter: nome, datas; Real: peso, moeda dolar; Lógico: resposta1. C) Inteiro: x1; Caracter: nome, data%; Real: peso, dolar; Lógico: resposta1. D) (x) Inteiro: x; Caracter: nome, data; Real: peso, dolar; Lógico: resposta. (4) - Para o algoritmo abaixo, identifique a ordem das principais etapas da construção do algoritmo: A) 1-Entrada, 2-Saída, 3-Processamento B) (x) 1-Entrada, 2-Processamento, 3-Saída C) 1-Declaração de variáveis, 2-Entrada e Processamento, 3-Saída D) 1-Declaração de variáveis e Entrada, 2-Processamento, 3-Saída (5) - Uma estrutura de controle do tipo condicional pode ter as seguintes composições: A) Condicional simples e encadeada. B) Condicional composta e encadeada. C) Condicional simples e condicional composta. D) (x) Condicional simples, condicional composta e condicional encadeada. (6) - Para o algoritmo abaixo, identifique qual a parte de código preencheria a lacuna em aberto: A) se (n1=n2) e (n1>n3) e (n2>n3) entao escreva (" n1>n2>n3 ", n1,">", n2,">", n3) fimse se (n1>n3) e (n1>n2) e (n3>n2) entao escreva (" n1>n3>n2 ", n1,">", n3,">", n2) fimse B) (X) se (n1>n2) e (n1>n3) e (n2>n3) entao escreva (" n1>n2>n3 ", n1,">", n2,">", n3) fimse se (n1>n3) e (n1>n2) e (n3>n2) entao escreva (" n1>n3>n2 ", n1,">", n3,">", n2) fimse C) se (n1>n2) e (n1=n3) e (n2<>n3) entao escreva (" n1>n2>n3 ", n1,">", n2,">", n3) fimse se (n1>n3) e (n1>n2) e (n3>n2) entao escreva (" n1>n3>n2 ", n1,">", n3,">", n2) fimse D) se (n1>n2) e (n1<n3) e (n2>n3) entao escreva (" n1>n2>n3 ", n1,">", n2,">", n3) fimse se (n1>n3) e (n1<n2) e (n3>n2) entao escreva (" n1>n3>n2 ", n1,">", n3,">", n2) fimse (7) - Para o algoritmo abaixo, identifique nas alternativas a parte de código que, inserida na linha faltante, efetuaria o cálculo correto: A) result<-base***expo B) result<-^base*expo C) (X) result<-base^expo D) result<-base*(expo)^2 (8) - Para o algoritmo abaixo, identifique qual a parte de código representaria melhor a entrada dos dados: A) escreval("Digite um valor o raio : ") leia(raio) escreval(“Digite o valor de Pi:”) leia(Pi) B) (X) escreval("Digite um valor o raio : ") leia(raio) C) escreval("Digite um valor o raio : ") leia(raio) escreval(“Digite o valor de Pi:”) D) leia(raio) (9) - Para o algoritmo abaixo, identifique o melhor enunciado para o problema: A) Faça um programa que receba um número positivo e maior que zero, calcule mostre: O número recebido ao quadrado; O número recebido ao cubo; O dobro do número. B) (X) Faça um programa que receba um número qualquer, calcule mostre: O número recebido ao quadrado; O número recebido ao cubo; O dobro do número. C) Faça um programa que receba um número positivo e maior que zero, calcule mostre: O número recebido ao quadrado; O dobro do número. O número recebido ao cubo; D) Faça um programa que receba um número qualquer, calcule mostre: O número recebido ao cubo; O dobro do número. O número recebido ao quadrado; (10) - Para o algoritmo abaixo, identifique o melhor enunciado para o problema: A) Faça um programa que receba a data de nascimento de uma pessoa e a data atual, calcule e mostre: Quantos anos a pessoa terá em 2020. A idade da pessoa; B) Faça um programa que receba o ano de nascimento de uma pessoa e idade da pessoa, calcule e mostre: O ano atual; Quantos anos a pessoa terá em 2021. C) (X) Faça um programa que receba o ano de nascimento de uma pessoa e o ano atual, calcule mostre: A idade da pessoa; Quantos anos a pessoa terá em 2020. D) Faça um programa que receba o ano de nascimento de uma pessoa e o ano atual, confira se o ano atual é maior que o ano de nascimento, calcule e mostre: A idade da pessoa; Quantos anos a pessoa terá em 2020. Estruturas: Um algoritmo funciona por meio de estruturas básicas de controle do fluxo de execução. São elas: sequência, seleção (condicional) e repetição (iteração). Estrutura Sequencial: Conjunto de ações primitivas executadas em sequência linear de cima para baixo e da esquerda para direita. Exemplo: Faça um algoritmo que calcule a média aritmética entre quatro notas bimestrais quaisquer fornecidas por um aluno. Dados de Entrada: quatro notas bimestrais (N1, N2, N3 e N4) Dados de Saída: Média aritmética anual (MA) Transformação/Cálculo: MA=(N1+N2+N3+N4)/4 Estrutura de Seleção: Uma estrutura de seleção permite a escolha de um grupo de ações (bloco) a ser executado quando determinadas condições, representadas por expressões lógicas ou relacionais, são ou não satisfeitas. Seleção Simples: Quando precisamos testar uma condição antes de executar uma ação, usamos uma seleção simples. Se <condição) Então Comandos Fimse Exemplo: Vamos ampliar o algoritmo que calcula a média aritmética de 4 notas bimestrais. Vamos avaliar se o aluno aprovou ou não. Consideraremos a média 7 para ser aprovado. Seleção Composta: Situações alternativas dependem que dependam de uma mesma condição requerem uma seleção composta. Se <condição> Então Comandos Senão Comandos Fimse Seleção Encadeada: Agrupamento de várias seleções. Se <condição 1> Então Se <condição 2> Então Comandos Fimse Senão Se <condição 3> Então Comandos Fimse Fimse A estrutura de repetição é utilizada quando se sabe o número de vezes em que um trecho do algoritmo deve ser repetido. Número definido de repetições para <variável> de <valor-inicial> ate <valor-limite> [passo <incremento>] faça <sequência-de- comandos>fimpara Para i <- valor inicial até valor final faça comando 1 comando 2 comando 3 fimpara APOL 3 (1) - Para o algoritmo abaixo, identifique qual a parte de código preencheria a parte faltante (substitui o quadro): algoritmo "prog1" var x, idade,crianca,preadole,adolescente,adulto: inteiro inicio // Seção de Comandos para x de 1 ate 10 faca escreva("Digite uma idade: ") leia(idade) se idade<=11 entao crianca<-crianca+1 fimse +----------------------------------------+ | | | | | | | | | | +----------------------------------------+ se (idade>14) e (idade<=17) entao adolescente<-adolescente+1 fimse se idade >= 18 entao adulto<-adulto+1 fimse fimpara escreval("*** Totais por faixa-etária ***") escreval("Número de criancas: ",crianca) escreval("Número de pre-adolescentes: ",preadole) escreval("Número de adolescentes: ",adolescente) escreval("Número de adultos: ",adulto) fimalgoritmo A) se (idade>12) e (idade<=14) entao preadole<-preadole+1 fimse B) se (idade>=11) e (idade<=14) entao preadole<-preadole+1 fimse C) (x) se (idade>11) e (idade<=14) entao preadole<-preadole+1 fimse D) se (idade>11) e (idade<14) entao preadole<-preadole+1 fimse (2) - Para o algoritmo abaixo, qual a melhor substituição para que o programa execute n vezes a repetição: algoritmo "prog2" var x, idade,crianca,preadole,adolescente,adulto: inteiro inicio // Seção de Comandos para x de 1 ate 10 faca escreva("Digite uma idade: ") leia(idade) se idade<=11 entao crianca<-crianca+1 fimse se (idade>11) e (idade<=14) entao preadole<-preadole+1 fimse se (idade>14) e (idade<=17) entao adolescente<-adolescente+1 fimse se idade >= 18 entao adulto<-adulto+1 fimse fimpara escreval("*** Totais por faixa-etária ***") escreval("Número de criancas: ",crianca) escreval("Número de pre-adolescentes: ",preadole) escreval("Número de adolescentes: ",adolescente) escreval("Número de adultos: ",adulto) fimalgoritmo A) var x, idade,crianca,preadole,adolescente,adulto: inteiro inicio // Seção de Comandos escreval("Digite a quantidade de entradas:") leia(qt) para x de 1 ate qt faca B) var x, idade,crianca,preadole,adolescente,adulto,qt: inteiro inicio // Seção de Comandos escreval("Digite a quantidade de entradas:") leia(“qt”) para x de 1 ate qt faca C) var x, idade,crianca,preadole,adolescente,adulto,qt: inteiro inicio // Seção de Comandos escreval("Digite a quantidade de entradas:") para x de 1 ate qt faca D) (x) var x, idade,crianca,preadole,adolescente,adulto,qt: inteiro inicio // Seção de Comandos escreval("Digite a quantidade de entradas:") leia(qt) para x de 1 ate qt faca (3) - Para o algoritmo abaixo, qual a melhor substituição para que o programa utilize o comando enquanto-faca no lugar do para-faca? algoritmo "prog3" var x, idade,crianca,preadole,adolescente,adulto,qt: inteiro inicio // Seção de Comandos Escreval(“Digite a quantidade de entradas:”) leia(qt) para x de 1 ate qt faca escreva("Digite uma idade: ") leia(idade) se idade<=11 entao crianca<-crianca+1 fimse se (idade>11) e (idade<=14) entao preadole<-preadole+1 fimse se (idade>14) e (idade<=17) entao adolescente<-adolescente+1 fimse se idade >= 18 entao adulto<-adulto+1 fimse fimpara escreval("*** Totais por faixa-etária ***") escreval("Número de criancas: ",crianca) escreval("Número de pre-adolescentes: ",preadole) escreval("Número de adolescentes: ",adolescente) escreval("Número de adultos: ",adulto) fimalgoritmo A) (x) enquanto x < qt faca . . . x<-x+1 fimenquanto B) enquanto x < qt faca . . . qt<-qt+1 fimenquanto C) enquanto x < qt faca . . . x<-x+1 fimepara D) enquanto x = qt faca . . . x<-x+1 fimenquanto (4) - Para o algoritmo abaixo, como colocar a exibição das totalizações (substituir o quadro)? algoritmo "prog4" var x, idade,qt,fem_maior, fem_menor,masc_maior, masc_menor: inteiro sexo:caracter inicio // Seção de Comandos escreval("Digite a quantidade de entradas:") leia(qt) enquanto x < qt faca escreva("Digite uma idade: ") leia(idade) escreva("Digite o sexo (f/m): ") leia(sexo) se (idade<18) e (sexo="f") entao fem_menor<-fem_menor+1 fimse se (idade<18) e (sexo="m") entao masc_menor<-masc_menor+1 fimse se (idade>=18) e (sexo="f") entao fem_maior<-fem_maior+1 fimse se (idade>=18) e (sexo="m") entao masc_maior<-masc_maior+1 fimse x<-x+1 fimenquanto +----------------------------------------+ | | | | | | | | | | +----------------------------------------+ fimalgoritmo A) escreval("*** Totais por faixa-etária e sexo ***") escreval("Número de meninas: ",femmenor) escreval("Número de mulheres: ",femmaior) escreval("Número de meninos: ",mascmenor) escreval("Número de homens: ",mascmaior) B) (x) escreval("*** Totais por faixa-etária e sexo ***") escreval("Número de meninas: ",fem_menor) escreval("Número de mulheres: ",fem_maior) escreval("Número de meninos: ",masc_menor) escreval("Número de homens: ",masc_maior) C) escreval("*** Totais por faixa-etária e sexo ***") escreval("Número de meninas: ",fem_menor) escreval("Número de mulheres: ",fem_maior) escreval("Número de mulheres: ",fem_menor) escreval("Número de meninos: ",masc_menor) D) escreval("*** Totais por faixa-etária e sexo ***") escreval("Totais: ",fem_menor,fem_maior,masc_menor,masc_maior)0 (5) - Para o algoritmo abaixo, como calcular os percentuais de cada idade-sexo (substituir o quadro)? algoritmo "prog4" var x, idade,qt,fem_maior, fem_menor,masc_maior, masc_menor: inteiro sexo:caracter inicio // Seção de Comandos escreval("Digite a quantidade de entradas:") leia(qt) enquanto x < qt faca escreva("Digite uma idade: ") leia(idade) escreva("Digite o sexo (f/m): ") leia(sexo) se (idade<18) e (sexo="f") entao fem_menor<-fem_menor+1 fimse se (idade<18) e (sexo="m") entao masc_menor<-masc_menor+1 fimse se (idade>=18) e (sexo="f") entao fem_maior<-fem_maior+1 fimse se (idade>=18) e (sexo="m") entao masc_maior<-masc_maior+1 fimse x<-x+1 fimenquanto escreval("*** Totais por faixa-etária e sexo ***") escreval("Número de meninas: ",fem_menor) escreval("Número de mulheres: ",fem_maior) escreval("Número de meninos: ",masc_menor) escreval("Número de homens: ",masc_maior) +----------------------------------------+ | | | | | | | | | | +----------------------------------------+ fimalgoritmo A) escreval("% de meninas: ",fem_menor*10/qt," %") escreval("% de mulheres: ",fem_maior*10/qt," %") escreval("% de meninos: ",masc_menor*10/qt," %") escreval("% de homens: ",masc_maior*10/qt," %") B) escreval("% de meninas: ",fem_menor/qt," %") escreval("% de mulheres: ",fem_maior/qt," %") escreval("% de meninos: ",masc_menor/qt," %") escreval("% de homens: ",masc_maior/qt," %") C) escreval("% de meninas: ",fem_menor*100/x-qt," %") escreval("% de mulheres: ",fem_maior*100/ x-qt," %") escreval("% de meninos: ",masc_menor*100/ x-qt," %") escreval("% de homens: ",masc_maior*100/ x-qt," %") D) (x) escreval("% de meninas: ",fem_menor*100/qt," %") escreval("% de mulheres: ",fem_maior*100/qt," %") escreval("% de meninos: ",masc_menor*100/qt," %") escreval("% de homens: ",masc_maior*100/qt," %") (6) - Para um vetor v1 de tamanho 10, qual seria a lógica mais adequada para fazer a entrada, via teclado, de cada elemento? A) para i de 1 ate 10 faca escreval("Digite um numero qualquer:") leia(v1[1]) fimpara B) (x) para i de 1 ate 10 faca escreval("Digite um numero qualquer:") leia(v1[i]) fimpara C) para i de 1 ate 10 faca escreval("Digite um numero qualquer:") leia(v1[10]) fimpara D) para i de 1 ate 10 faca escreval("Digite um numero qualquer:") leia(v1) fimpara (7) - Para um vetor v1 de tamanho 50, qual seria a lógica mais adequada para mostrar o valor dos elementos na tela? A) para i de 1 ate 50 faca leia("v",i,": ",v1[i]) fimpara B) para i de 1 ate 50 faca leia (v1) fimpara C) para i de 1 ate n faca escreval("v",i,": ",v1) fimpara D) (x) para i de 1 ate 50 faca escreval(v1[i]) fimpara (8) - Para um vetor v1 de tamanho 50, qual seria a melhor lógica para identificação do menor e do maior elemento? A) para i de 1 ate 10 faca se (v1[i]>maior) entao maior<-v1[i] fimse se (v1[i]<menor) entao menor<-v1[i] fimse fimpara B) maior<-v1[1] menor<-v1[1] para i de 1 ate 10 faca se (v1[i]>maior) entao maior<-v1[i] fimse fimpara C) (x) maior<-v1[1] menor<-v1[1] para i de 1 ate 50 faca se (v1[i]>maior) entao maior<-v1[i] fimse se (v1[i]<menor) entao menor<-v1[i] fimse fimpara D) maior<-v1[1] menor<-v1[1] se (v1[i]>maior) entao maior<-v1[i] fimse se (v1[i]<menor) entao menor<-v1[i] fimse (9) - Para a parte de programa abaixo, com m=3 e n=3, qual seria a saída? leia(m,n) para i de 1 ate m faca para j de 1 ate n faca se(j=1) entao matriz[i,j]<-1 senao matriz[i,j]<-0 fimse fimpara fimpara A) 1 0 0 1 1 0 0 1 1 B) (x) 1 0 0 1 0 0 1 0 0 C) 1 1 1 1 0 0 1 0 0 D) 1 1 1 0 0 0 0 0 0 (10) - Para a parte de programa abaixo, com m=3 e n=3, qual seria a saída? leia(m,n) para i de 1 ate m faca para j de 1 ate n faca se(i=j) entao matriz[i,j]<-1 senao matriz[i,j]<-0 fimse fimpara fimpara A) (x) 1 0 0 0 1 0 0 0 1 B) 1 0 0 1 0 0 1 0 0 C) 1 1 1 1 0 0 1 0 0 D) 1 1 1 0 0 0 0 0 0 Vetor é uma variável composta homogênea e unidimensional. Uma vez que o nome é único para n variáveis, o que distingue cada item é o índice. Vetores – unidimensionais; Matrizes – várias linhas e várias colunas. APOL 4 (1) - Para o algoritmo abaixo, identifique qual a parte de código preencheria a lacuna em aberto. O algoritmo faz a distribuição dos números em outros dois vetores, um vetor só com números positivos e outro só com números negativos: algoritmo "vetores" var i,j,k,n : inteiro v: vetor [1..50] de real vp: vetor [1..50] de real vn: vetor [1..50] de real aux: real inicio //seção de comandos escreval("Digite o número de elementos do vetor:") leia(n) para i de 1 ate n faca escreval("Digite um numero qualquer:") leia(v[i]) fimpara limpatela +------------------------------+ +------------------------------+ escreval("Positivos:") para i de 1 ate j faca escreval(vp[i]) fimpara escreval("Negativos:") para i de 1 ate k faca escreval(vn[i]) fimpara fimalgoritmo A) para i de 1 ate n faca se (v[i]>1) entao k<-k+1 vp[k]<-v[i] senao j<-j+1 vn[j]<-v[i] fimse fimpara B) (x) k<-0 j<-0 para i de 1 ate n faca se (v[i]>0) entao k<-k+1 vp[k]<-v[i] senao j<-j+1 vn[j]<-v[i] fimse fimpara C) para i de 1 ate n faca se (v[i]>0) entao k<-k+1 vp[i]<-v[i] senao j<-j+1 vn[i]<-v[i] fimse fimpara D) k<-0 j<-0 para i de 1 ate n faca se (v[i]>0) entao vp[k]<-v[i] senao vn[j]<-v[i] fimse fimpara (2) - Para o algoritmo abaixo, qual a melhor declaração de variáveis? algoritmo "vetores" inicio //seção de comandos escreval("Digite o número de elementos do vetor:") leia(n) para i de 1 ate n faca escreval("Digite um numero qualquer:") leia(v[i]) fimpara escreval("Digite um valor qualquer para inserir no vetor:") leia(valor) escreval("Digite a posição do vetor") leia(posicao) para i de n ate 2 passo -1 faca se (i>=posicao) entao v[i+1]<-v[i] fimse se (posicao=i) entao v[i]<-valor fimse fimpara para i de 1 ate n+1 faca escreval(v[i]) fimpara fimalgoritmo A) (x) var i,n,posicao : inteiro valor:real v: vetor [1..50] de real B) var i,posicao : inteiro valor:real v: vetor [1..50] de real C) var i,n,posicao : inteiro v: vetor [1..50] de real D) var i,n: inteiro valor:real v: vetor [1..50] de real (3) - algoritmo "vetores" var i,n,posicao : inteiro valor:real v: vetor [1..50] de real aux: real inicio //seção de comandos escreval("Digite o número de elementos do vetor:") leia(n) para i de 1 ate n faca escreval("Digite um numero qualquer:") leia(v[i]) fimpara escreval("Digite um valor qualquer para inserir no vetor:") leia(valor) escreval("Digite a posição do vetor") leia(posicao) para i de n ate 2 passo -1 faca se (i>=posicao) entao v[i+1]<-v[i] fimse se (posicao=i) entao v[i]<-valor fimse fimpara para i de 1 ate n+1 faca escreval(v[i]) fimpara fimalgoritmo A) 5 1 2 3 4 5 100 3 1 2 100 3 3 4 5 B) (x) 5 1 2 3 4 5 100 3 1 2 100 3 4 5 C) 5 1 2 3 4 5 100 3 1 2 3 100 4 5 D) 5 1 2 3 4 5 100 3 1 2 3 4 5 100 100 100 (4) - Para o algoritmo abaixo, explique a necessidade de se utilizar as variáveis k e j: algoritmo "vetores" var i,j,k,n : inteiro v: vetor [1..50] de real vp: vetor [1..50] de real vn: vetor [1..50] de real aux: real inicio //seção de comandos escreval("Digite o número de elementos do vetor:") leia(n) para i de 1 ate n faca escreval("Digite um numero qualquer:") leia(v[i]) fimpara limpatela k<-0 j<-0 para i de 1 ate n faca se (v[i]>0) entao k<-k+1 vp[k]<-v[i] senao j<-j+1 vn[j]<-v[i] fimse fimpara escreval("Positivos:") para i de 1 ate j faca escreval(vp[i]) fimpara escreval("Negativos:") para i de 1 ate k faca escreval(vn[i]) fimpara Fimalgoritmo A) (x) As variáveis k e j são utilizadas para que cada vetor inicie novamente em 1 e tenha as posições necessárias preenchidas para os vetores de positivos e negativos. B) As variáveis k e j são utilizadas para acumular o total de posições positivas e negativas. C) As variáveis k e j são utilizadas para o somatório de números positivos e negativos. D) As variáveis k e j são utilizadas como contéudos dos vetores positivos e negativos. (5) - Para o algoritmo abaixo, qual melhor código a ser inserido antes do final do algoritmo para SOMAR os números positivos e os números negativos e apresentar as respectivas somas? algoritmo "vetores" var i,j,k,n : inteiro v: vetor [1..50] de real vp: vetor [1..50] de real vn: vetor [1..50] de real aux: real inicio //seção de comandos escreval("Digite o número de elementos do vetor:") leia(n) para i de 1 ate n faca escreval("Digite um numero qualquer:") leia(v[i]) fimpara limpatela k<-0 j<-0 para i de 1 ate n faca se (v[i]>0) entao k<-k+1 vp[k]<-v[i] senao j<-j+1 vn[j]<-v[i] fimse fimpara escreval("Positivos:") para i de 1 ate j faca escreval(vp[i]) fimpara escreval("Negativos:") para i de 1 ate k faca escreval(vn[i]) fimpara Fimalgoritmo A) positivos<-0 negativos<-0 escreval("Positivos:") para i de 1 ate j faca escreval(vp[i]) positivos<-positivos+1 fimpara escreval("Negativos:") para i de 1 ate k faca escreval(vn[i]) negativos<-negativos+1 fimpara escreval(“Total de Positivos:”,positivos) escreval(“Total de Negativos:,negativos) B) (x) positivos<-0 negativos<-0 escreval("Positivos:") para i de 1 ate j faca escreval(vp[i]) positivos<-positivos+vp[i] fimpara escreval("Negativos:") para i de 1 ate k faca escreval(vn[i]) negativos<-negativos+vn[i] fimpara escreval(“Soma Positivos:”,positivos) escreval(“Soma Negativos:,negativos) C) positivos<-0 negativos<-0 escreval("Positivos:") para i de 1 ate j faca escreval(vp[i]) fimpara escreval("Negativos:") para i de 1 ate k faca escreval(vn[i]) fimpara escreval(“Total de Positivos:”,positivos) escreval(“Total de Negativos:,negativos) D) escreval("Positivos:") para i de 1 ate j faca escreval(vp[j]) positivos<-positivos+vp[i] fimpara escreval("Negativos:") para i de 1 ate k faca escreval(vn[k]) negativos<-negativos+vn[i] fimpara escreval(“Total de Positivos:”,positivos) escreval(“Total de Negativos:,negativos) (6) - Para o algoritmo abaixo, qual é o código mais adequado a incluir para calcular a quantidade de números ímpares? algoritmo "matriz_par" var m:vetor[1..3,1..3] de inteiro resto, qtpar,i,j:inteiro inicio qtpar <-0 escreval("***** Entrada de Dados *****") escreval("") para i de 1 ate 3 faca para j de 1 ate 3 faca escreva("Digite um valor para linha:",i," coluna:",j,":") leia(m[i,j]) resto<-m[i,j] mod 2 se(resto=0) entao qtpar<-qtpar+1 fimse fimpara fimpara limpatela escreval("***** Resultados da matriz *****") para i de 1 ate 3 faca para j de 1 ate 3 faca resto<-m[i,j] mod 2 se(resto=0) entao escreval("Linha:",i," Coluna:",j," Numero=",m[i,j]) fimse fimpara fimpara escreval("Quantidade de numeros pares: ", qtpar) A) (x) resto<-m[i,j] mod 2 se(resto<>0) entao qtimpar<-qtimpar+1 fimse B) resto<-m[i,j] mod 2 se(resto<>0) entao qtimpar<-qtimpar+m[i,j] fimse C) resto<-m[i,j] mod 2 se(resto=~0) entao qtimpar<-qtimpar+1 fimse D) resto<-m[i,j] mod 2 se(resto=0) entao qtimpar<-qtimpar+1 fimse (7) - Para o algoritmo abaixo, qual deveria ser o resultado exibido para uma matriz 3X3? algoritmo "matriz" var matriz:vetor[1..10,1..10] de inteiro i,j,m,n:inteiro inicio escreval("***** Entrada de Dados *****") escreval("") escreva("Digite o numero de linhas e o numero de colunas para matriz:") leia(m,n) para i de 1 ate m faca para j de 1 ate n faca escreva("Digite um valor para linha:",i," coluna:",j,":") matriz[i,j]<-i+1 fimpara fimpara limpatela escreval("***** Resultados da matriz *****") para i de 1 ate m faca para j de 1 ate n faca escreva(matriz[i,j]) fimpara escreval("") fimpara fimalgoritmo A) 1 1 1 2 2 2 3 3 3 B) (x) 2 2 2 3 3 3 4 4 4 C) 2 2 2 2 2 2 3 3 3 D) 1 1 1 3 3 3 5 5 5 (8) - Para o algoritmo abaixo, qual deveria ser a saída para uma matriz 2X2? algoritmo "matriz" var matriz:vetor[1..10,1..10] de inteiro i,j,m,n:inteiro inicio escreval("***** Entrada de Dados *****") escreval("") escreva("Digite o numero de linhas e o numero de colunas para matriz:") leia(m,n) para i de 1 ate m faca para j de 1 ate n faca escreva("Digite um valor para linha:",i," coluna:",j,":") matriz[i,j]<-j+1 fimpara fimpara limpatela escreval("***** Resultados da matriz *****") para i de 1 ate m faca para j de 1 ate n faca escreva(matriz[i,j]) fimpara escreval("") fimpara fimalgoritmo A) (x) 2 3 2 3 B) 2 1 2 1 C) 2 0 2 0 D) 4 2 4 2 (9) - Para o algoritmo abaixo, qual deveria ser a saída para uma matriz 2X3? A) 2 1 3 2 1 3 B) 1 2 3 1 2 3 C) (x) 2 3 4 2 3 4 D) 2 2 2 2 2 2 (10) - Para o algoritmo abaixo, qual deveria ser a saída para uma matriz 5X5? A) 2 3 4 5 6 4 5 6 7 8 5 6 7 8 9 6 7 8 9 10 7 8 9 10 11 B) (x) 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9 6 7 8 9 10 C) 1 3 4 5 6 2 5 6 7 8 3 6 7 8 9 4 7 8 9 10 5 8 9 10 11 D) 1 2 3 4 5 2 4 5 6 7 3 5 6 7 8 4 6 7 8 9 5 7 8 9 10 Repetição com: Enquanto (condicao) faca comando1 comando2 fimenquanto Funções: Função é um conceito muito usado em programação. É como um subprograma que retorna um valor. Há muitas funções pré-definidas nas linguagens de programação. - Abs(valor:real):real - Compr(c:caracter):inteiro - Copia(c:caracter,posini, posfim:inteiro):caracter - Exp(base,expoente) - Int(valor:real):real - Pi:real - Raizq(valor:real):real Lembrando que para cada linguagem de programação, você deverá buscar as funções pré-existentes. Você percebeu que uma função envia um ou mais valores de quaisquer tipos e recebe um retorno. Sim, uma função é um tipo de subalgoritmo ou subrotina que envia e recebe um valor. Exemplo de criação de função no visualg: algoritmo var funcao fsoma(v1,v2:real):real var total:real inicio total<-v1+v2 retorne total fimfuncao inicio fimalgoritmo Exemplo de criação de procedimento no visualg: algoritmo var procedimento linha var inicio escreval("*************") escreval("") fimprocedimento inicio linha fimalgoritmo APOL 5 (1) - Considerando o bloco de código de um algoritmo mostrado abaixo qual seria a alternativa adequada para substituí-lo? preco[1]<-150.00 preco [2]<-250.00 preco[3]<-10.00 preco [4]<-40.00 preco[5]<-120.00 preco [6]<-500.00 preco[7]<-12.00 preco [8]<-13.00 A) n<-8 para i de 1 ate n faca leia(preco(i)) fimpara B) (x) n<-8 para i de 1 ate n faca leia(preco[i]) fimpara C) para i de 1 ate n faca leia(preco(k)) fimpara D) para i de 1 ate n faca leia(preco) fimpara (2) - Avalie o bloco de código de um algoritmo mostrado abaixo, e selecione a alternativa adequada para substituí-lo. preco[1,1]<-1 preco [1,2]<-2 preco[1,3]<-3 preco [1,4]<-4 preco[2,1]<-23.00 preco [2,2]<-500.00 preco[2,3]<-12.00 preco [2,4]<-13.00 A) (x) para i de 1 ate 2 faca para j de 1 ate 4 faca leia(preco[i,j]) fimpara fimpara B) para i de 1 ate 2 faca para j de 1 ate 4 faca leia(preco[i,j]) fimpara fimpara C) para i de 1 ate 2 faca para j de 1 ate 4 faca leia(preco[j,i]) fimpara fimpara D) para i de 1 ate 2 faca para j de 1 ate 4 faca leia(preco[i]) fimpara fimpara (3) - O que a função definida no algoritmo abaixo faz? algoritmo "Função" // Seção de Declarações var n1,n2,resultado1:real funcao fsx(v1,v2:real):real var total:real inicio total<-v1+(v2*v2) retorne total fimfuncao inicio // Seção de Comandos escreva("Digite um valor:") leia(n1) escreva("Digite o segundo valor:") leia(n2) resultado1<-fsx(n1,n2) escreval("O valor da operação de ",n1," com ",n2," =",resultado1) fimalgoritmo A) A soma dos quadrados dos valores. B) (x) A soma do primeiro valor com o quadrado do segundo valor. C) A soma do quadrado do primeiro valor pelo segundo valor. D) O quadrado das somas dos valores. (4) - Para que o programa abaixo faça a divisão de dois valores, sendo o primeiro pelo segundo, quais seriam as linhas de código mais adequadas a substituirem as linhas pontilhadas? algoritmo "Função" // Seção de Declarações var n1,n2,x:real funcao fsx(v1,v2:real):real var total:real ............................................ ............................................ ............................................ fimfuncao inicio // Seção de Comandos escreva("Digite um valor:") leia(n1) escreva("Digite o segundo valor:") leia(n2) x<-fsx(n1,n2) escreval("O valor da operação de ",n1," com ",n2," =",x) fimalgoritmo A) (x) inicio total<-v1/v2 retorne total B) inicio total<-v1/2 retorne resultado C) inicio total<-v2/v1 retorne total D) inicio total<-v2/2 retorne resultado (5) - Para que o programa abaixo faça a média ponderada, quais seriam as linhas de código mais adequadas para substituírem a parte pontilhada? algoritmo "Função" // Seção de Declarações var n1,n2,n3,n4,x:real funcao fsx(v1,v2,v3,v4:real):real var total:real .......................... .......................... .......................... fimfuncao inicio // Seção de Comandos escreva("Digite o primeiro valor:") leia(n1) escreva("Digite o segundo valor:") leia(n2) escreva("Digite o peso do primeiro valor:") leia(n3) escreva("Digite o peso do segundo valor:") leia(n4) x<-fsx(n1,n2,n3,n4) escreval("O valor da operação de ",n1," com ",n2," =",x) fimalgoritmo A) (x) inicio total<-((v1*v3)+(v2*v4))/(v3+v4) retorne total B) inicio total<-((n1*n3)+(n2*n4))/(n1+n2) retorne resultado C) inicio total<-((n1*n3)+(n2*n4))/(n3*n4) retorne total D) inicio total<-((n1*n3)+(n2*n4))/10 retorne resultado (6) - Para o código que contém as funções abaixo, qual seria o resultado de uma entrada de dados que atribui o valor “Joaquim Nabuco” para a variável completo? qt_carc<-Compr(completo) espaco<-Pos(" ",completo) //note que é necessário um espaço em branco entre as aspas sobrenome1<-Copia(completo,espaco+1,qt_carc) retorne sobrenome1 A) Joaquim B) (x) Nabuco C) 1Nabuco D) Nabuco, Joaquim (7) - Para o código que contém as funções abaixo, qual seria o resultado de uma entrada de dados que atribui o valor “16” para a variável valor? r<-Raizq(valor) potencia<-exp(r, 3) escreval("O resultado da operação e: “, potencia) A) 4 B) 12 C) 48 D) (x) 64 (8) - Analise o código do algoritmo abaixo e assinale a alternativa que relaciona todas as funções pré-definidas utilizadas? qt_carc<-Compr(nome) espaco<-Pos(" ",nome) x<-Copia(nome,espaco+1,qt_carc) retorne x A) Compr, Pos B) Pos, Copia C) (x) Compr, Pos, Copia D) Nome, Compr, Pos, Copia (9) - Procedimentos e funções tem a mesma finalidade? A) (x) Não. Função obrigatoriamente retorna um valor, já um procedimento não retorna um valor, apenas executa uma ação. B) Sim. Possuem a mesma finalidade e ambos retornam um valor. C) Não, pois a Função executa uma única ação e procedimento executa uma ação e retorna um valor. D) Sim, Funções e procedimentos são apenas sub-rotinas. (10) - No algoritmo abaixo quantas linhas com asteriscos serão mostradas na tela? algoritmo "Procedimento" var texto:caracter procedimento linha var inicio escreval("******************************************************") escreval("") fimprocedimento inicio // Seção de Comandos escreval("***** Titulo *****") escreval("") linha leia(x) linha escreval(x) linha linha fimalgoritmo A) Duas B) (x) Quatro C) Três D) Nenhuma
Compartilhar