· 2021/2
4
Algoritmos e Programação de Computadores
UFPR
3
Algoritmos e Programação de Computadores
UFPR
3
Algoritmos e Programação de Computadores
UFPR
4
Algoritmos e Programação de Computadores
UFPE
60
Algoritmos e Programação de Computadores
UNICAMP
2
Algoritmos e Programação de Computadores
UNICAMP
4
Algoritmos e Programação de Computadores
UNICAMP
3
Algoritmos e Programação de Computadores
UNICAMP
3
Algoritmos e Programação de Computadores
UNICAMP
7
Algoritmos e Programação de Computadores
UNICAMP
Texto de pré-visualização
1/2 UNIVERSIDADE FEDERAL DO PARANÁ Rua Doutor João Maximiano, 426, - - Bairro Vila Operária, Jandaia do Sul/PR, CEP 86900-000 Telefone: (43) 3432-4561 - http://www.ufpr.br/ Atividades Avaliativas Unidade 4 - Algoritmos Questão 1 (0,1) Um algoritmo possui uma estrutura na qual a ordem em que seus componentes (variáveis, tipos novos, programa principal e sub-rotinas) são declarados é fundamental para o seu bom funcionamento. Assinale a alternativa que corresponde à ordem correta da declaração dos componentes de um algoritmo. A) Programa principal; variáveis; tipos; sub-rotinas. B) Variáveis; tipos; programa principal; sub-rotinas. C) Sub-rotinas; programa principal; tipos; variáveis. D) Sub-rotinas; variáveis; tipos; programa principal. E) Sub-rotinas; tipos; variáveis; programa principal. Questão 2 (0,1) Uma função é uma sub-rotina que tem como objetivo desviar a execução do programa principal para realizar uma tarefa específica. Considere o algoritmo que abaixo. No código fonte é possível identificar a declaração e utilização da função convertePeso(). def convertePeso(q): return q * 1000 pes=float(input("Insira o peso em kilogramas:")) convertePeso(pes) print("O peso, em gramas, é:", gra) Levando em consideração seus conhecimentos sobre funções, bem como o código fonte acima, avalie as afirmações a seguir: I – A função convertePeso() irá retornar o peso convertido em gramas: um número do tipo float. II – Há um erro de sintaxe na linha 2, fazendo com que a função convertePeso() entre em loop infinito. III – Para que o comando print() apresente um resultado correto, é preciso fazer com que a variável "gra" receba o resultado da execução da função convertePeso(). Sendo assim, é correto o que se afirma em: A) I, apenas. B) I e II, apenas. C) I e III, apenas. 2/2 D) II e III, apenas. E) I, II e III. Questão 3 (0,1) Em termos gerais, a recursão pode ser considerada como um processo de repetição de uma rotina. Portanto, de maneira bem simplista, pode ser definida como uma rotina (procedimento ou função) que chama a si mesma, de forma direta ou indireta. Bem, se a rotina chama a si mesma inúmeras vezes, é preciso então tomar muito cuidado com o LOOP. Acredito que todos já tenham ouvido falar desse termo, mas esclarecendo para quem não está acostumado. Um LOOP ocorre quando uma parte do código fica repetindo eternamente, ocasionando o travamento do sistema todo Conteúdo disponível em < https://www.embarcados.com.br/recursividade/> Utilize seus conhecimentos adquiridos ao longo da disciplina para interpretar as afirmações abaixo. I – Uma função recursiva precisa de uma condição de parada ou caso base que, geralmente, é expresso por uma estrutura de decisão. II – A chamada recursiva de uma função é feita quando a função invoca a si mesma dentro do seu próprio bloco de comandos. III – A função para calcular o n-ésimo termo da Série de Fibonacci é um exemplo de função inerentemente recursiva. Sendo assim, é correto o que se afirma em: A) II, apenas. B) I e II, apenas. C) I e III, apenas. D) II e III, apenas. E) I, II e III. Questão 4 (0,1) Em muitas situações nos deparamos com problemas complexos e abrangentes. Para resolver esse tipo de problema temos que dividi-lo em subproblemas mais simples e específicos, dividindo assim a sua complexidade e facilitando a resolução através da modularização do código. FORBELLONE, A. L. V.; EBERSPACHER, H. F. Lógica de Programação. 3. ed. São Paulo: Makron Books, 2005. Considere o algoritmo abaixo. No código-fonte é possível identificar a declaração e invocação do procedimento multiplica(). def multiplica(x, y): resultado=int() resultado= x * y print(resultado) print("Insira dois números. \n") x=int(input()); y=int(input()); multiplica(x,y) 3/2 Levando em consideração seus conhecimentos sobre funções em Python, bem como o código acima, avalie as afirmações a seguir. I – Uma vez declarado, a função multiplica() não poderia ser invocado dentro de outras funções, a não ser o próprio código fonte externo. II – As variáveis x e y são variáveis locais, enquanto que as variáveis x e y, utilizadas dentro da função são variáveis globais. III – As variáveis x e y, quando utilizadas na última linha, se caracterizam passagem de parâmetros. Sendo assim, é correto o que se afirma em: A) I, apenas. B) II, apenas. C) III, apenas. D) I e II, apenas. E) I, II e III. Questão 5 (0,1) Em muitas situações nos deparamos com problemas complexos e abrangentes. Para resolver esse tipo de problema temos que dividi-lo em subproblemas mais simples e específicos, dividindo assim a sua complexidade e facilitando a resolução, através de procedimentos específicos. FORBELLONE, A. L. V.; EBERSPACHER, H. F. Lógica de Programação. 3. dd. São Paulo: Makron Books, 2005. Considere o programa em linguagem python, abaixo. def elevaAoCubo(x): x = x * x * x print("Insira o valor a ser elevado:") n=int(input()) elevaAoCubo(n) print(n) Sendo assim, tomando por base seus conhecimentos a respeito de procedimentos, leia as afirmações que se seguem. I – O procedimento elevaAoCubo() não possui o comando return, o que não acarreta em erro sintático. II – Em tempo de execução, caso o usuário informe o número 3 para armazenar em n, o programa irá imprimir na tela o valor 27. III – Da forma como foi escrito, o procedimento elevaAoCubo() não é capaz de apresentar resultado algum. Sendo assim, é correto o que se afirma em: A) I, apenas. B) II, apenas. C) III, apenas. D) I e III, apenas. E) II e III, apenas. 4/2 Questão 6 (0,1) Observe as afirmativas a seguir e assinale a alternativa correta que contenha apenas elementos válidos dentro da sintaxe de construção de funções. I - A declaração de parâmetros é a especificação das variáveis de entrada da função em que é preciso especificar o tipo de cada uma das variáveis. II - O corpo da função é um conjunto de instruções que realizam uma subtarefa, isto é, instruções que realizam o processamento dos dados de entrada e geram a saída de dados dentro de uma função. III - Toda função que recebe parâmetros não deve retornar valores ao final de sua execução, pois quando se utiliza um dos recursos, automaticamente se abre mão do outro. IV - Para se implementar o código de uma função com mais de um parâmetro, é necessário que todos tenham os mesmos tipos de dados associados. V - O tipo de retorno indica um tipo de valor que a função devolverá ao código chamador ao final de sua execução. A) I e II apenas. B) II e IV apenas. C) I, II e V apenas. D) I, II e IV apenas. E) II, III e IV apenas. Questão 7 (0,1) Existe uma forma de organizar trechos de código em blocos para que sejam utilizados diversas vezes, mas de maneira diferente de como é feito em laços de repetição. As chamadas funções isolam partes de um código e permitem uma reutilização deste bloco de instruções toda vez que a função principal necessite de suas funcionalidades, por exemplo. A partir dos conceitos fundamentais de funções vistos na disciplina, analise as afirmativas a seguir, dentre as informações passadas. I. Funções podem conter instruções de desvio de fluxo de execução dentro de si própria. II. Funções podem chamar a si mesmas para realizar cálculos e outros processamentos. III. Uma função pode conter blocos de instruções de laços de repetição, vetores, entrada e saída. IV. Em uma função não são permitidos parâmetros de tipos diferentes em sua declaração. V. Funções podem manipular dados internamente e devolver dados manipulados ao código chamador. É correto o que se afirma em: A) I e II, apenas. B) I, e V, apenas. C) I, II, III, apenas. D) I, II, e V, apenas. E) I, II, III e V, apenas. Questão 8 (0,1) Após o comando DEF é indicado o nome de uma função. O nome de uma função, pode ser qualquer um com exceção das palavras reservadas Diante do contexto acima, analise as afirmativas sobre função e assinale a alternativa correta. 5/2 I - Toda função obrigatóriamente deve possuir um tipo de retorno (return). II - Cada função pode declarar suas próprias variáveis. III - Uma função pode chamar a si mesma ou outras funções. IV - O valor informado no comando return, deve ser igual com as vaiáveis declaradas nos parâmetros. É correto o que se afirma em: A) I, apenas. B) I e II apenas. C) II e III apenas. D) I, II e III apenas. E) I, II, III e IV. Questão 9 (0,1) Funções são trechos de código que são criados com o intuito de reduzir o tamanho dos códigos e permitir uma reusabilidade desse código em vários pontos de um programa e até em outros programas. Observe a função a seguir e assinale a alternativa incorreta sobre sua interpretação. def valor (valor): for i in range(10,2): valor = valor * i return (valor) A) O conteúdo da variável "valor" é alterado dentro do laço de repetição. B) O laço de repetição é controlado pela variável "i" que é inicializado em 1. C) Existe um erro, pois não é possível utilizar uma variável como o mesmo nome do parâmetro como retorno da função. D) O conteúdo do laço de repetição será executado 6 vezes, de acordo com a sua condição de execução. E) A função recebe um parâmetro numérico como entrada que terá seu valor modificado no processamento da função. Questão 10 (0,1) Uma função é uma sub-rotina que tem como objetivo desviar a execução do programa principal para realizar uma tarefa específica e retornar um valor. São estruturas que possibilitam ao usuário separar seus programas em blocos (ASCENCIO; CAMPOS, 2010). Um programa é um conjunto de funções que são executadas, cada função pode conter declarações de variáveis, instruções e ou até mesmo outras funções. Observando o código de uma função indicada a seguir, é possível interpretá-la para conhecer suas funcionalidades. Assinale a alternativa que corretamente contenha uma interpretação da função. 6/2 def soma (): num1=float(); num2=float(); total=float() print("Digite o primeiro numero :") num1=float(input()) print("Digite o segundo numero :") num2=float(input()) total = num1 + num2 print("A soma e ", total) return (0) A) A função pede valores para serem retornados ao usuário sem processar novos valores. B) A função não recebe valores de parâmetros, e por isso, retorna zero ao final de sua execução. C) Nesta função, valores recebidos como parâmetros vindos do programa principal são somados. D) No final da execução da função é retornado o resultado da operação realizada dentro da função. E) Esta função por si só é capaz de pedir valores ao usuário, somá-los e depois exibir seu resultado. Questão 11 (0,1) As estruturas de dados homogêneas permitem a representação de diversas informações do mesmo tipo, sendo divididas em unidimensionais e multidimensionais. Frequentemente é preciso utilizá-las em conjunto com estruturas de repetição, devido ao acesso a seus elementos serem controlados por um ou mais índices. Assim, considere o seguinte vetor de nome "vet", a seguir: Tomando por base o vetor apresentado acima, avalie as afirmações abaixo. I – O valor da expressão "(vet[0] + vet[1] + vet[2] + vet[3] + vet[4])/5" é igual a 50. II – A declaração desse vetor em Python deve ser feita da seguinte forma: "int vet[4];". III – Esse arranjo (vetor) é uma estrutura de dados do tipo lista. Sendo assim, é correto o que se afirma em: A) I, apenas. B) II, apenas. C) I e II, apenas. D) I e III, apenas. E) I, II e III. Questão 12 (0,1) A variável é um local reservado na memória do computador para armazenar dados. Porém, em alguns momentos é necessário guardar várias informações em estruturas prontas para realizar armazenamento múltiplo em uma única variável. Considerando seus conhecimentos a respeito de estruturas de dados homogêneas e heterogêneas, leia o excerto abaixo e assinale a alternativa que preenche respectivas lacunas corretamente. Matriz pode ser compreendida como uma estrutura de dados ______________, enquanto que listas são arranjos _______________, cujos elementos são acessados com base em um único _____________. 7/2 A) tabular, multidimensional, índice. B) multidimensional, unidimensionais, índice. C) bidimensional, multidimensional, campo. D) unidimensional, tabular, campo. E) multidimensional, tabular, índice. Questão 13 (0,1) As estruturas de dados homogêneas permitem a representação de diversas informações do mesmo tipo, sendo divididas em unidimensionais e multidimensionais. Frequentemente é preciso utilizá-las em conjunto com estruturas de repetição, devido ao acesso a seus elementos serem controlados por um ou mais índices. Assim, considere o seguinte trecho de código: mat=[] soma = 0 for i in range(3): for j in range(3): soma = soma + mat[i][j] Com base no algoritmo apresentado anteriormente, avalie as afirmações que se seguem. I – A variável declarada na linha primeira linha indica que a variável mat é do tipo list. II – As estruturas de repetições "for" farão com que o comando do segundo laço seja executado por três vezes para cada iteração do laço definido primeiro. III – De acordo com o código-fonte acima é possível garantir com toda certeza que, ao final da execução desse programa, independentemente do número de vezes que o programa execute, a variável soma terá o mesmo conteúdo sem erros. Sendo assim, é correto o que se afirma em: A) I, apenas. B) I e II, apenas. C) I e III, apenas. D) II e III, apenas. E) I, II e III. Questão 14 (0,1) As listas permitem a representação de diversas informações do mesmo tipo. Frequentemente é preciso utilizá-las em conjunto com estruturas de repetição, devido às regras de acesso a seus elementos. Tomando por referência seus conhecimentos a respeito de listas, leia as afirmações a seguir: I – Uma lista unidimensional, por definição, não necessita de um índice de controle de acesso aos elementos. II – Uma lista multidimensional também é chamado de matriz. III – Uma lista pode ser categorizada como uma estrutura de dados heterogênea de funções. Sendo assim, é correto o que se afirma em: A) I, apenas. B) II, apenas. C) I e II, apenas. D) II e III, apenas. E) I, II e III. 8/2 Questão 15 (0,1) Analise o código a seguir: print("Informe o número de Funcionários: ") numeroFuncionarios=int(input()) contador = 0 while (contador < numeroFuncionarios): print("Informe o nome do Funcionário") nome=str(input()) Dentro do contexto apresentado, analise o código e assinale a alternativa correta. I - O código entrará em looping infinito. II - O correto irá executar o looping o número de funcionários mesmo 1. III - Faltou incrementar o contador dentro do looping. IV - O contador deveria ser inicializado em 1 ao invés de 0. É correto o que se afirma em: A) I e II, apenas. B) I e III, apenas. C) II e III, apenas. D) I, II, III, apenas. E) I, II, III e IV. Questão 16 (0,2) Faça, em Linguagem Python, uma função que: 1) Receba os valores do Salário Bruto (SB) e o percentual de desconto de INSS (INSS 7,5%). 2) Retorne o salário líquido do funcionário. Obs.: A porcentagem a ser descontada é calculada multiplicando o valor do salário bruto, pelo valor da porcentagem e depois dividindo o resultado por 100. Questão 17 (0,2) Foi pedido a você para implementar uma função que faça o cálculo do fatorial de um número. O cálculo do fatorial se dá pela multiplicação do número por todos os seus antecessores até o número um. Porém, disseram que não poderia ser uma função qualquer e que o seu programa deveria usar uma função recursiva. Sendo assim, explique a diferença entre função convencional e uma função recursiva. Questão 18 (0,2) Desenvolva um programa em linguagem python para retornar o dia da semana segundo um valor inteiro. Por exemplo, se o usuário digitar o número 1, o retorno deverá ser “Domingo”. O programa deve: 1) Dar a opção do usuário digitar um número inteiro entre 1 e 7. 2) Exibir o dia da semana correspondente ao número. 9/2 Questão 19 (0,2) Elabore um programa em linguagem Python. A) Ele deve receber os dados de uma compra (5 códigos de produtos, os 5 valores unitários dos produtos e as 5 quantidades de itens desses produtos). B) Depois, produza o código para que o mesmo programa informe: 1) O valor total da compra. 2) O código do produto mais caro. 3) O código do produto em maior quantidade. Questão 20 (0,2) Ao utilizar vetores e matrizes conseguíamos manipular uma grande quantidade de dados por meio de um acesso indexado, no entanto tínhamos a limitação de que todos os elementos deveriam ser do mesmo tipo. Em diversas situações nos deparamos com o fato de ter que armazenar informações relacionadas entre si, mas de tipos distintos (ROCHA, 2006). Analise a imagem a seguir: Faça um algoritmo em linguagem python, que peça para o usuário preencher uma matriz desse formato e em seguida imprimi-la na tela do computador. Questão 21 (0,5) Imagine que você é um desenvolvedor de sistemas freelancer, que possui uma ampla carteira de clientes. Como você não gosta dos sistemas existentes, você decide que irá criar sua própria aplicação de registro e manutenção de clientes. Para isso, você deverá programar uma agenda em versão beta (versão de teste), que permite armazenar o cadastro de, no máximo, 5 (cinco) clientes por vez. A aplicação deverá armazenar, para cada cliente: * Um código único, gerado automaticamente pelo sistema; * Seu nome; * Seu telefone; * Seu e-mail. O programa deverá apresentar um menu de opções ao usuário: 1 – Inserir um novo cadastro: ao selecionar essa opção, o usuário deverá ser capaz de informar todos os dados de um cliente. A saber: seu nome, telefone e e-mail. Caso o programa já tenha armazenado o número máximo de clientes (cinco), 10/2 deverá ser exibida a mensagem “Agenda lotada!”. O código de um cadastro deve ser preenchido automaticamente pelo sistema e o usuário não deve ter a opção de alterar esse código. 2 – Mostrar todos os cadastros: ao selecionar essa opção, o programa deverá imprimir, na tela, para cada cliente: seu código, seu nome, seu telefone e seu e-mail. Essa opção deverá mostrar na tela apenas os dados dos clientes que foram cadastrados. Caso nenhum cliente tenha sido cadastrado antes de selecionar essa opção, o programa deverá exibir a mensagem “Agenda vazia!”. 0 – Encerrar: ao selecionar essa opção, o programa se encerra. Caso o usuário escolha uma opção que não conste no menu, o programa deverá exibir uma mensagem de erro como, por exemplo: “Erro: opção inválida!”. Caso contrário, o programa não deverá imprimir essa mensagem de erro. A sua atividade deve ser entregue em um arquivo de código fonte. Questão 22 (1,0) De acordo com o que você estudou nas aulas da disciplina, resolva a questão abaixo. 1 - Crie um programa em linguagem Python, que tenha os seguintes itens. a) Armazenar em uma constante do tipo caractere, o número do seu RA sem o traço. b) Criar uma lista do tipo inteiro com o tamanho da string armazenada na sua constante. c) Alimentar a lista de forma que cada caractere do seu RA, que está na constante, fique armazenado em uma posição do sua nova lista. Para isso, utilize um laço de repetição. d) Imprimir a lista preenchida de forma que apareça um número em cada linha. Para isso, utilize um laço de repetição diferente do utilizado na alternativa anterior.
4
Algoritmos e Programação de Computadores
UFPR
3
Algoritmos e Programação de Computadores
UFPR
3
Algoritmos e Programação de Computadores
UFPR
4
Algoritmos e Programação de Computadores
UFPE
60
Algoritmos e Programação de Computadores
UNICAMP
2
Algoritmos e Programação de Computadores
UNICAMP
4
Algoritmos e Programação de Computadores
UNICAMP
3
Algoritmos e Programação de Computadores
UNICAMP
3
Algoritmos e Programação de Computadores
UNICAMP
7
Algoritmos e Programação de Computadores
UNICAMP
Texto de pré-visualização
1/2 UNIVERSIDADE FEDERAL DO PARANÁ Rua Doutor João Maximiano, 426, - - Bairro Vila Operária, Jandaia do Sul/PR, CEP 86900-000 Telefone: (43) 3432-4561 - http://www.ufpr.br/ Atividades Avaliativas Unidade 4 - Algoritmos Questão 1 (0,1) Um algoritmo possui uma estrutura na qual a ordem em que seus componentes (variáveis, tipos novos, programa principal e sub-rotinas) são declarados é fundamental para o seu bom funcionamento. Assinale a alternativa que corresponde à ordem correta da declaração dos componentes de um algoritmo. A) Programa principal; variáveis; tipos; sub-rotinas. B) Variáveis; tipos; programa principal; sub-rotinas. C) Sub-rotinas; programa principal; tipos; variáveis. D) Sub-rotinas; variáveis; tipos; programa principal. E) Sub-rotinas; tipos; variáveis; programa principal. Questão 2 (0,1) Uma função é uma sub-rotina que tem como objetivo desviar a execução do programa principal para realizar uma tarefa específica. Considere o algoritmo que abaixo. No código fonte é possível identificar a declaração e utilização da função convertePeso(). def convertePeso(q): return q * 1000 pes=float(input("Insira o peso em kilogramas:")) convertePeso(pes) print("O peso, em gramas, é:", gra) Levando em consideração seus conhecimentos sobre funções, bem como o código fonte acima, avalie as afirmações a seguir: I – A função convertePeso() irá retornar o peso convertido em gramas: um número do tipo float. II – Há um erro de sintaxe na linha 2, fazendo com que a função convertePeso() entre em loop infinito. III – Para que o comando print() apresente um resultado correto, é preciso fazer com que a variável "gra" receba o resultado da execução da função convertePeso(). Sendo assim, é correto o que se afirma em: A) I, apenas. B) I e II, apenas. C) I e III, apenas. 2/2 D) II e III, apenas. E) I, II e III. Questão 3 (0,1) Em termos gerais, a recursão pode ser considerada como um processo de repetição de uma rotina. Portanto, de maneira bem simplista, pode ser definida como uma rotina (procedimento ou função) que chama a si mesma, de forma direta ou indireta. Bem, se a rotina chama a si mesma inúmeras vezes, é preciso então tomar muito cuidado com o LOOP. Acredito que todos já tenham ouvido falar desse termo, mas esclarecendo para quem não está acostumado. Um LOOP ocorre quando uma parte do código fica repetindo eternamente, ocasionando o travamento do sistema todo Conteúdo disponível em < https://www.embarcados.com.br/recursividade/> Utilize seus conhecimentos adquiridos ao longo da disciplina para interpretar as afirmações abaixo. I – Uma função recursiva precisa de uma condição de parada ou caso base que, geralmente, é expresso por uma estrutura de decisão. II – A chamada recursiva de uma função é feita quando a função invoca a si mesma dentro do seu próprio bloco de comandos. III – A função para calcular o n-ésimo termo da Série de Fibonacci é um exemplo de função inerentemente recursiva. Sendo assim, é correto o que se afirma em: A) II, apenas. B) I e II, apenas. C) I e III, apenas. D) II e III, apenas. E) I, II e III. Questão 4 (0,1) Em muitas situações nos deparamos com problemas complexos e abrangentes. Para resolver esse tipo de problema temos que dividi-lo em subproblemas mais simples e específicos, dividindo assim a sua complexidade e facilitando a resolução através da modularização do código. FORBELLONE, A. L. V.; EBERSPACHER, H. F. Lógica de Programação. 3. ed. São Paulo: Makron Books, 2005. Considere o algoritmo abaixo. No código-fonte é possível identificar a declaração e invocação do procedimento multiplica(). def multiplica(x, y): resultado=int() resultado= x * y print(resultado) print("Insira dois números. \n") x=int(input()); y=int(input()); multiplica(x,y) 3/2 Levando em consideração seus conhecimentos sobre funções em Python, bem como o código acima, avalie as afirmações a seguir. I – Uma vez declarado, a função multiplica() não poderia ser invocado dentro de outras funções, a não ser o próprio código fonte externo. II – As variáveis x e y são variáveis locais, enquanto que as variáveis x e y, utilizadas dentro da função são variáveis globais. III – As variáveis x e y, quando utilizadas na última linha, se caracterizam passagem de parâmetros. Sendo assim, é correto o que se afirma em: A) I, apenas. B) II, apenas. C) III, apenas. D) I e II, apenas. E) I, II e III. Questão 5 (0,1) Em muitas situações nos deparamos com problemas complexos e abrangentes. Para resolver esse tipo de problema temos que dividi-lo em subproblemas mais simples e específicos, dividindo assim a sua complexidade e facilitando a resolução, através de procedimentos específicos. FORBELLONE, A. L. V.; EBERSPACHER, H. F. Lógica de Programação. 3. dd. São Paulo: Makron Books, 2005. Considere o programa em linguagem python, abaixo. def elevaAoCubo(x): x = x * x * x print("Insira o valor a ser elevado:") n=int(input()) elevaAoCubo(n) print(n) Sendo assim, tomando por base seus conhecimentos a respeito de procedimentos, leia as afirmações que se seguem. I – O procedimento elevaAoCubo() não possui o comando return, o que não acarreta em erro sintático. II – Em tempo de execução, caso o usuário informe o número 3 para armazenar em n, o programa irá imprimir na tela o valor 27. III – Da forma como foi escrito, o procedimento elevaAoCubo() não é capaz de apresentar resultado algum. Sendo assim, é correto o que se afirma em: A) I, apenas. B) II, apenas. C) III, apenas. D) I e III, apenas. E) II e III, apenas. 4/2 Questão 6 (0,1) Observe as afirmativas a seguir e assinale a alternativa correta que contenha apenas elementos válidos dentro da sintaxe de construção de funções. I - A declaração de parâmetros é a especificação das variáveis de entrada da função em que é preciso especificar o tipo de cada uma das variáveis. II - O corpo da função é um conjunto de instruções que realizam uma subtarefa, isto é, instruções que realizam o processamento dos dados de entrada e geram a saída de dados dentro de uma função. III - Toda função que recebe parâmetros não deve retornar valores ao final de sua execução, pois quando se utiliza um dos recursos, automaticamente se abre mão do outro. IV - Para se implementar o código de uma função com mais de um parâmetro, é necessário que todos tenham os mesmos tipos de dados associados. V - O tipo de retorno indica um tipo de valor que a função devolverá ao código chamador ao final de sua execução. A) I e II apenas. B) II e IV apenas. C) I, II e V apenas. D) I, II e IV apenas. E) II, III e IV apenas. Questão 7 (0,1) Existe uma forma de organizar trechos de código em blocos para que sejam utilizados diversas vezes, mas de maneira diferente de como é feito em laços de repetição. As chamadas funções isolam partes de um código e permitem uma reutilização deste bloco de instruções toda vez que a função principal necessite de suas funcionalidades, por exemplo. A partir dos conceitos fundamentais de funções vistos na disciplina, analise as afirmativas a seguir, dentre as informações passadas. I. Funções podem conter instruções de desvio de fluxo de execução dentro de si própria. II. Funções podem chamar a si mesmas para realizar cálculos e outros processamentos. III. Uma função pode conter blocos de instruções de laços de repetição, vetores, entrada e saída. IV. Em uma função não são permitidos parâmetros de tipos diferentes em sua declaração. V. Funções podem manipular dados internamente e devolver dados manipulados ao código chamador. É correto o que se afirma em: A) I e II, apenas. B) I, e V, apenas. C) I, II, III, apenas. D) I, II, e V, apenas. E) I, II, III e V, apenas. Questão 8 (0,1) Após o comando DEF é indicado o nome de uma função. O nome de uma função, pode ser qualquer um com exceção das palavras reservadas Diante do contexto acima, analise as afirmativas sobre função e assinale a alternativa correta. 5/2 I - Toda função obrigatóriamente deve possuir um tipo de retorno (return). II - Cada função pode declarar suas próprias variáveis. III - Uma função pode chamar a si mesma ou outras funções. IV - O valor informado no comando return, deve ser igual com as vaiáveis declaradas nos parâmetros. É correto o que se afirma em: A) I, apenas. B) I e II apenas. C) II e III apenas. D) I, II e III apenas. E) I, II, III e IV. Questão 9 (0,1) Funções são trechos de código que são criados com o intuito de reduzir o tamanho dos códigos e permitir uma reusabilidade desse código em vários pontos de um programa e até em outros programas. Observe a função a seguir e assinale a alternativa incorreta sobre sua interpretação. def valor (valor): for i in range(10,2): valor = valor * i return (valor) A) O conteúdo da variável "valor" é alterado dentro do laço de repetição. B) O laço de repetição é controlado pela variável "i" que é inicializado em 1. C) Existe um erro, pois não é possível utilizar uma variável como o mesmo nome do parâmetro como retorno da função. D) O conteúdo do laço de repetição será executado 6 vezes, de acordo com a sua condição de execução. E) A função recebe um parâmetro numérico como entrada que terá seu valor modificado no processamento da função. Questão 10 (0,1) Uma função é uma sub-rotina que tem como objetivo desviar a execução do programa principal para realizar uma tarefa específica e retornar um valor. São estruturas que possibilitam ao usuário separar seus programas em blocos (ASCENCIO; CAMPOS, 2010). Um programa é um conjunto de funções que são executadas, cada função pode conter declarações de variáveis, instruções e ou até mesmo outras funções. Observando o código de uma função indicada a seguir, é possível interpretá-la para conhecer suas funcionalidades. Assinale a alternativa que corretamente contenha uma interpretação da função. 6/2 def soma (): num1=float(); num2=float(); total=float() print("Digite o primeiro numero :") num1=float(input()) print("Digite o segundo numero :") num2=float(input()) total = num1 + num2 print("A soma e ", total) return (0) A) A função pede valores para serem retornados ao usuário sem processar novos valores. B) A função não recebe valores de parâmetros, e por isso, retorna zero ao final de sua execução. C) Nesta função, valores recebidos como parâmetros vindos do programa principal são somados. D) No final da execução da função é retornado o resultado da operação realizada dentro da função. E) Esta função por si só é capaz de pedir valores ao usuário, somá-los e depois exibir seu resultado. Questão 11 (0,1) As estruturas de dados homogêneas permitem a representação de diversas informações do mesmo tipo, sendo divididas em unidimensionais e multidimensionais. Frequentemente é preciso utilizá-las em conjunto com estruturas de repetição, devido ao acesso a seus elementos serem controlados por um ou mais índices. Assim, considere o seguinte vetor de nome "vet", a seguir: Tomando por base o vetor apresentado acima, avalie as afirmações abaixo. I – O valor da expressão "(vet[0] + vet[1] + vet[2] + vet[3] + vet[4])/5" é igual a 50. II – A declaração desse vetor em Python deve ser feita da seguinte forma: "int vet[4];". III – Esse arranjo (vetor) é uma estrutura de dados do tipo lista. Sendo assim, é correto o que se afirma em: A) I, apenas. B) II, apenas. C) I e II, apenas. D) I e III, apenas. E) I, II e III. Questão 12 (0,1) A variável é um local reservado na memória do computador para armazenar dados. Porém, em alguns momentos é necessário guardar várias informações em estruturas prontas para realizar armazenamento múltiplo em uma única variável. Considerando seus conhecimentos a respeito de estruturas de dados homogêneas e heterogêneas, leia o excerto abaixo e assinale a alternativa que preenche respectivas lacunas corretamente. Matriz pode ser compreendida como uma estrutura de dados ______________, enquanto que listas são arranjos _______________, cujos elementos são acessados com base em um único _____________. 7/2 A) tabular, multidimensional, índice. B) multidimensional, unidimensionais, índice. C) bidimensional, multidimensional, campo. D) unidimensional, tabular, campo. E) multidimensional, tabular, índice. Questão 13 (0,1) As estruturas de dados homogêneas permitem a representação de diversas informações do mesmo tipo, sendo divididas em unidimensionais e multidimensionais. Frequentemente é preciso utilizá-las em conjunto com estruturas de repetição, devido ao acesso a seus elementos serem controlados por um ou mais índices. Assim, considere o seguinte trecho de código: mat=[] soma = 0 for i in range(3): for j in range(3): soma = soma + mat[i][j] Com base no algoritmo apresentado anteriormente, avalie as afirmações que se seguem. I – A variável declarada na linha primeira linha indica que a variável mat é do tipo list. II – As estruturas de repetições "for" farão com que o comando do segundo laço seja executado por três vezes para cada iteração do laço definido primeiro. III – De acordo com o código-fonte acima é possível garantir com toda certeza que, ao final da execução desse programa, independentemente do número de vezes que o programa execute, a variável soma terá o mesmo conteúdo sem erros. Sendo assim, é correto o que se afirma em: A) I, apenas. B) I e II, apenas. C) I e III, apenas. D) II e III, apenas. E) I, II e III. Questão 14 (0,1) As listas permitem a representação de diversas informações do mesmo tipo. Frequentemente é preciso utilizá-las em conjunto com estruturas de repetição, devido às regras de acesso a seus elementos. Tomando por referência seus conhecimentos a respeito de listas, leia as afirmações a seguir: I – Uma lista unidimensional, por definição, não necessita de um índice de controle de acesso aos elementos. II – Uma lista multidimensional também é chamado de matriz. III – Uma lista pode ser categorizada como uma estrutura de dados heterogênea de funções. Sendo assim, é correto o que se afirma em: A) I, apenas. B) II, apenas. C) I e II, apenas. D) II e III, apenas. E) I, II e III. 8/2 Questão 15 (0,1) Analise o código a seguir: print("Informe o número de Funcionários: ") numeroFuncionarios=int(input()) contador = 0 while (contador < numeroFuncionarios): print("Informe o nome do Funcionário") nome=str(input()) Dentro do contexto apresentado, analise o código e assinale a alternativa correta. I - O código entrará em looping infinito. II - O correto irá executar o looping o número de funcionários mesmo 1. III - Faltou incrementar o contador dentro do looping. IV - O contador deveria ser inicializado em 1 ao invés de 0. É correto o que se afirma em: A) I e II, apenas. B) I e III, apenas. C) II e III, apenas. D) I, II, III, apenas. E) I, II, III e IV. Questão 16 (0,2) Faça, em Linguagem Python, uma função que: 1) Receba os valores do Salário Bruto (SB) e o percentual de desconto de INSS (INSS 7,5%). 2) Retorne o salário líquido do funcionário. Obs.: A porcentagem a ser descontada é calculada multiplicando o valor do salário bruto, pelo valor da porcentagem e depois dividindo o resultado por 100. Questão 17 (0,2) Foi pedido a você para implementar uma função que faça o cálculo do fatorial de um número. O cálculo do fatorial se dá pela multiplicação do número por todos os seus antecessores até o número um. Porém, disseram que não poderia ser uma função qualquer e que o seu programa deveria usar uma função recursiva. Sendo assim, explique a diferença entre função convencional e uma função recursiva. Questão 18 (0,2) Desenvolva um programa em linguagem python para retornar o dia da semana segundo um valor inteiro. Por exemplo, se o usuário digitar o número 1, o retorno deverá ser “Domingo”. O programa deve: 1) Dar a opção do usuário digitar um número inteiro entre 1 e 7. 2) Exibir o dia da semana correspondente ao número. 9/2 Questão 19 (0,2) Elabore um programa em linguagem Python. A) Ele deve receber os dados de uma compra (5 códigos de produtos, os 5 valores unitários dos produtos e as 5 quantidades de itens desses produtos). B) Depois, produza o código para que o mesmo programa informe: 1) O valor total da compra. 2) O código do produto mais caro. 3) O código do produto em maior quantidade. Questão 20 (0,2) Ao utilizar vetores e matrizes conseguíamos manipular uma grande quantidade de dados por meio de um acesso indexado, no entanto tínhamos a limitação de que todos os elementos deveriam ser do mesmo tipo. Em diversas situações nos deparamos com o fato de ter que armazenar informações relacionadas entre si, mas de tipos distintos (ROCHA, 2006). Analise a imagem a seguir: Faça um algoritmo em linguagem python, que peça para o usuário preencher uma matriz desse formato e em seguida imprimi-la na tela do computador. Questão 21 (0,5) Imagine que você é um desenvolvedor de sistemas freelancer, que possui uma ampla carteira de clientes. Como você não gosta dos sistemas existentes, você decide que irá criar sua própria aplicação de registro e manutenção de clientes. Para isso, você deverá programar uma agenda em versão beta (versão de teste), que permite armazenar o cadastro de, no máximo, 5 (cinco) clientes por vez. A aplicação deverá armazenar, para cada cliente: * Um código único, gerado automaticamente pelo sistema; * Seu nome; * Seu telefone; * Seu e-mail. O programa deverá apresentar um menu de opções ao usuário: 1 – Inserir um novo cadastro: ao selecionar essa opção, o usuário deverá ser capaz de informar todos os dados de um cliente. A saber: seu nome, telefone e e-mail. Caso o programa já tenha armazenado o número máximo de clientes (cinco), 10/2 deverá ser exibida a mensagem “Agenda lotada!”. O código de um cadastro deve ser preenchido automaticamente pelo sistema e o usuário não deve ter a opção de alterar esse código. 2 – Mostrar todos os cadastros: ao selecionar essa opção, o programa deverá imprimir, na tela, para cada cliente: seu código, seu nome, seu telefone e seu e-mail. Essa opção deverá mostrar na tela apenas os dados dos clientes que foram cadastrados. Caso nenhum cliente tenha sido cadastrado antes de selecionar essa opção, o programa deverá exibir a mensagem “Agenda vazia!”. 0 – Encerrar: ao selecionar essa opção, o programa se encerra. Caso o usuário escolha uma opção que não conste no menu, o programa deverá exibir uma mensagem de erro como, por exemplo: “Erro: opção inválida!”. Caso contrário, o programa não deverá imprimir essa mensagem de erro. A sua atividade deve ser entregue em um arquivo de código fonte. Questão 22 (1,0) De acordo com o que você estudou nas aulas da disciplina, resolva a questão abaixo. 1 - Crie um programa em linguagem Python, que tenha os seguintes itens. a) Armazenar em uma constante do tipo caractere, o número do seu RA sem o traço. b) Criar uma lista do tipo inteiro com o tamanho da string armazenada na sua constante. c) Alimentar a lista de forma que cada caractere do seu RA, que está na constante, fique armazenado em uma posição do sua nova lista. Para isso, utilize um laço de repetição. d) Imprimir a lista preenchida de forma que apareça um número em cada linha. Para isso, utilize um laço de repetição diferente do utilizado na alternativa anterior.