Baixe o app para aproveitar ainda mais
Prévia do material em texto
ATIVIDADE 3 - ALGORITMOS E LÓGICA DE PROGRAMAÇÃO I - 52/2022 Período:09/05/2022 08:00 a 27/05/2022 23:59 (Horário de Brasília) Status:ENCERRADO Nota máxima:1,50 Gabarito:Gabarito será liberado no dia 02/07/2022 00:00 (Horário de Brasília) Nota obtida:1,05 1ª QUESTÃO Inúmeras aplicações têm, em certo ponto de seu código, que decidir entre tomar um caminho ou outro. Por exemplo, algumas ações podem ser tomadas caso um número qualquer seja igual a zero, ou caso o número seja menor do que zero, e assim por diante. Com base em seus conhecimentos a respeito de estruturas condicionais, realize o teste de mesa no algoritmo abaixo. 01 - Algoritmo testaNumero 02 - Var numero: inteiro 03 - Início 04 - leia(numero) 05 - Se((-1)*numero < 0) então 06 - escreva("Caso 1.") 07 - Senão 08 - Se ((-1)*numero > 0) então 09 - escreva("Caso 2.") 10 - Senão 11 - escreva("Caso 3.") 12 - Fim_se 13 - Fim_se 14 - Fim Com base no algoritmo acima, leia as afirmações abaixo. I – A linha 6 do algoritmo só será executada caso o usuário insira um valor positivo. II – A condição da linha 8 só será testada caso o usuário insira um valor não-positivo. III – A linha 10 será executada quando o número for diferente de zero. Sendo assim, é correto o que se afirma em: ALTERNATIVAS I, apenas. II, apenas. III, apenas. I e II, apenas. I, II e III. 2ª QUESTÃO 1) Analise o algoritmo a seguir e assinale o resultado de sua execução: Algoritmo abc Var a, b, c: inteiro Início a <- 12 b <- 5 c <- a b <- c a <- b Escreva (a) Escreva (b) Escreva (c) Fim Logo, a resposta correta é: ALTERNATIVAS A = 12, B = 12, C = 12 A = 5, B = 12, C = 12 A = 12, B = 12, C = 5 A = 12, B = 5, C= 5 A = 5, B =5, C = 5 3ª QUESTÃO A estrutura Para é uma estrutura do tipo laço contado, normalmente, utilizada para um número definido de repetições. Isto é, comumente, utilizamos essa estrutura quando sabemos o número de vezes que o trecho de código precisa ser repetido. Outro termo utilizado para essa estrutura de repetição é o de estrutura de repetição com variável de controle, pois é utilizada uma variável contadora para controlar o número de repetições. LEAL, Gislaine Camila Lapasini; OLIVEIRA, Pietro Martins de. Algoritmos e Lógica de Programação I. Maringá - PR.: UniCesumar, 2020. A partir do texto acima, analise as linhas de códigos a seguir: 1. Para i de 0 até 10 passo 1 faça 2. Enquanto (num < 10) faça A partir da análise dos exemplos acima, avalie as afirmações a seguir e assinale (V) para verdadeiro e (F) para falso: I. As duas linhas de código funcionam de forma igual, portanto retornam o mesmo resultado. II. As duas estruturas condicionais possuem repetições indefinidas e o teste condicional deve ser executado pelo menos uma vez. III. No exemplo 2 o loop será executado apenas 10 vezes. IV. No exemplo 1 o loop será executado indefinidas vezes. As afirmações I, II, III e IV são, respectivamente: ALTERNATIVAS F, V, V, F. F, F, V, V. F, V, V, V. F, F, F, V. F, F, F, F. 4ª QUESTÃO Um objeto é dito recursivo se ele for definido em termos de si próprio. Destaca-se que o conceito de recursão não é encontrado somente na programação mas também na matemática e no dia a dia como, por exemplo, quando vemos uma imagem que contém a si própria. LEAL, Gislaine Camila Lapasini, OLIVEIRA, Pietro Martins de. Algoritmos e Lógica de Programação I. Maringá: Unicesumar, 2020. Assim, considere o seguinte trecho de pseudocódigo do algoritmo fatRec , abaixo, cujo propósito é calcular e exibir, na tela, o fatorial de 5. 01 - Algoritmo fatRec 02 - Funcao fat(x: inteiro): inteiro 03 - Início 04 - Se (________) então 05 - retorne 1 06 - Senão 07 - retorne x * __________ 08 - Fim_se 09 - Fim_funcao 10 - Var n, resultado: inteiro 11 - Início 12 - n <- 5 13 - ______________ <- fat(n) 14 - escreva(resultad0) 15 - Fim Com base em suas habilidades no desenvolvimento e compreensão de algoritmos, assinale a alternativa que melhor se adequa à realidade e ao propósito do algoritmo fatRec apresentado acima. ALTERNATIVAS As lacunas das linhas 4, 7 e 13 devem ser preenchidas pelas instruções "x = 1", "fat(x)" e "n", respectivamente. As lacunas das linhas 4, 7 e 13 devem ser preenchidas pelas instruções "x = 1", "fat(x-1)" e "n", respectivamente. As lacunas das linhas 4, 7 e 13 devem ser preenchidas pelas instruções "x = 1", "fat(x)" e "resultado", respectivamente. As lacunas das linhas 4, 7 e 13 devem ser preenchidas pelas instruções "x = 0", "fat(x-1)" e "resultado", respectivamente. As lacunas das linhas 4, 7 e 13 devem ser preenchidas pelas instruções "fat(x) = 0", "fat(x)" e "resultado", respectivamente. 5ª QUESTÃO Analise o trecho extraído de um PSEUDOCÓDIGO: ... Inicio jogada <- 0 pontuacao <- 0 while (jogada < 10){ jogada <- jogada + 1 Leia(pontos) pontuacao <- pontuacao + pontos } ... Fim De acordo com o PSEUDOCÓDIGO anterior, assinale a alternativa correta. I - A variável jogada é considerada contadora. II - A variável pontos é considerada contadora. III - A variável pontuação é considerada acumuladora. IV - A variável pontuação é considerada contadora. É correto o que ser afirma em: ALTERNATIVAS I, apenas. II, apenas. I e III apenas. II e III, apenas. I, II e IV, apenas. 6ª QUESTÃO Considere o pseudocódigo a seguir: Tipo empregados = registro nome: vetor 1..50 de caractere sobrenome: vetor 1..50 de caractere dataNascimento: vetor 1..10 de caractere RG: vetor 1..50 de caractere dataAdmissao: vetor 1..10 de caractere salario: real fim_registro var empregado: vetor 1..100 de empregados Relacione o trecho de código disponibilizado acima com conteúdo discutido ao longo da disciplina e avalie as afirmações a seguir: I. Temos uma estrutura do tipo Registro para guardar os dados (nome, sobrenome, data de nascimento, RG, data de admissão e salário). II. Temos um vetor para armazenar todos os empregados da empresa. III. A variável nome é do tipo booleana. IV. O registro está incorreto porque deveria armazenar informações do mesmo tipo apenas. É correto o que se afirma em: ALTERNATIVAS I e II, apenas. II e IV, apenas. I, II e III, apenas. II, III e IV, apenas. I, II, III e IV. 7ª QUESTÃO Analise as linhas a seguir: velocidadeGol <- 100 velocidadeFiatUno <- 120 Analise as alternativas a seguir, que invertam de forma correta os valores sem perder nenhum valor. I - aux <- velocidadeGol velocidadeGol <- velocidadeFiatUno velocidadeFiatUno <- aux II - velocidadeGol <- velocidadeFiatUno velocidadeFiatUno <- velocidadeGol III - aux <- velocidadeGol velocidadeGol <- velocidadeFiatUno velocidadeFiatUno <- velocidadeGol IV - aux <- velocidadeFiatUno velocidadeFiatUno <- velocidadeGol velocidadeGol <- aux É correto o que se afirma em: ALTERNATIVAS I, apenas. II, apenas. I e IV, apenas. II e III, apenas. I, II e III, apenas. 8ª QUESTÃO O algoritmo abaixo foi criado com o intuito de inicializar uma matriz de 2 (duas) linhas por 3 (três) colunas. 01 - Algoritmo manipulaMatriz 02 - Var mat: Vetor 1..2, 1..3 de inteiro 03 - i, j: inteiro 04 - Início 05 - i <- 1 06 - j <- 1 07 - Enquanto (i <= 3) faça 08 - Enquanto(j <= 2) faça 09 - mat i, j <- i*j 10 - j <- j + 1 11 - Fim_enquanto 12 - Fim_enquanto 13 - Fim Assim, considere o algoritmo acima para avaliaras afirmações abaixo. I – Em um dado ponto da execução do algoritmo, o elemento da primeira linha, segunda coluna, terá seu conteúdo valendo 2 (dois). II – Há um erro semântico na linha 7, pois a matriz possui duas linhas apenas. III – Da maneira como foi escrito, o algoritmo nunca irá entrar em loop infinito. Sendo assim, é correto o que se afirma em: ALTERNATIVAS I, apenas. II, apenas. III, apenas. ) I e II, apenas. I, II e III. 9ª QUESTÃO Considere o pseudocódigo abaixo: Algoritmo maior_menor Var num1, num2, maior: inteiro Início Escreva(“Digite os valores:”) Leia(num1, num2) Se (resto = 0) então metade <- n / 2 Escreva(“o maior número:”, maior) Fim_se Fim O propósito desse código é encontrar o maior valor entre 2 números, mas podemos notar que existe um erro em sua lógica. Nesse sentido assinale a alternativa que resolva de forma correta a lógica proposta: ALTERNATIVAS Se (num1 > num2) então maior <- num1 Senão maior <- num2 fim_se Se (num1 < num2) então maior <- num1 Senão maior <- num2 fim_se Se (num1 >= num2) então maior <- num1 Senão maior <- num2 fim_se Se (num1 = maior) então maior <- num1 Senão maior <- num2 fim_se Se (num1 mod num2) então mod <- num1 > num2 fim_se 10ª QUESTÃO Sub-rotinas consistem em blocos de instruções que realizam tarefas específicas. É um trecho menor de código, um algoritmo mais simples que resolve um subproblema, por meio de operações de entrada, processamento e saída. Uma sub-rotina é carregada apenas uma vez e pode ser executada quantas vezes for necessário, podendo ser utilizada para economizar espaço e tempo de programação LEAL, Gislaine Camila Lapasini; OLIVEIRA, Pietro Martins de. Algoritmos e Lógica de Programação I. Maringá - PR.: UniCesumar, 2020. A definição acima, adaptada, explica o que é uma sub-rotina e seu funcionamento. Analise o código a seguir, relacionando-o ao contexto apresentado. Algoritmo sub_rotina ??? soma (x, y: real): real Início Retorne x + y Fim_??? // programa principal Var a, b, r: real Início A <- 1 B <- 2 R < - soma (n, m) Escreva (r) Fim Assinale a alternativa correta: ALTERNATIVAS As funções diferem dos procedimentos porque as funções retornam valores, ao contrário dos procedimentos que não. Contudo parâmetros podem ser passados para procedimentos e funções. No código apresentado temos um exemplo de procedimento. As linguagens de programação têm um conjunto de funções e procedimentos pré-definidos, portanto programadores não podem incluir outras funções e procedimentos em um programa. No algoritmo apresentado acima temos um exemplo de função. O valor retornado pela função será do tipo especificado na sua declaração este valor deve ser retornado através do comando retorne. Procedimentos e funções são loops dentro de um programa. Eles constituem a estrutura que permite que um problema complexo seja dividido em várias subtarefas complexas. Sub-rotinas servem para executar uma tarefa específica que provavelmente será executada uma única vez ao longo da vida do software. Essa rotina é declarada em um bloco de código dentro do programa principal.
Compartilhar