Baixe o app para aproveitar ainda mais
Prévia do material em texto
Revisar envio do teste: Clique aqui para iniciar o Quiz STADCAS1DB_2204-2204-686268 2204-ALGORITMOS E PROGRAMAÇÃO I Quiz REVISAR ENVIO DO TESTE: CLIQUE AQUI PARA INICIAR O QUIZ Usuário FELIPE AUGUSTO SANTINHO Curso 2204-ALGORITMOS E PROGRAMAÇÃO I Teste Clique aqui para iniciar o Quiz Iniciado 16/02/23 14:22 Enviado 16/02/23 15:00 Data de vencimento 29/03/23 23:59 Status Completada Resultado da tentativa 10 em 10 pontos Tempo decorrido 38 minutos Resultados exibidos Todas as respostas, Respostas enviadas, Respostas corretas, Comentários Pergunta 1 A linguagem C#, assim como outras, permite que criemos funções para organizar o nosso código. Dentro destas funções, podemos adicionar estruturas de repetição, estruturas condicionais e também invocar outras funções nativas da linguagem. Observe com atenção o código a seguir escrito em C#, o qual utiliza funções. 1 public string print(string str){ 2 Console.WriteLine(str); 3 } 4 5 public static void Main (string[] args) { 6 Program x = new Program(); 7 8 string cont = “0”; 9 10 while(cont < 10){ 11 x.print(cont); Sala de Aula Tutoriais 1 em 1 pontos FELIPE AUGUSTO SANTINHO 53 https://senacsp.blackboard.com/webapps/blackboard/execute/courseMain?course_id=_205166_1 https://senacsp.blackboard.com/webapps/blackboard/content/listContent.jsp?course_id=_205166_1&content_id=_9202992_1&mode=reset https://www.ead.senac.br/ https://senacsp.blackboard.com/webapps/portal/execute/tabs/tabAction?tab_tab_group_id=_260_1 https://senacsp.blackboard.com/webapps/portal/execute/tabs/tabAction?tab_tab_group_id=_210_1 https://senacsp.blackboard.com/webapps/login/?action=logout Resposta Selecionada: Respostas: Comentário da resposta: 11 x.print(cont); 12 cont = Console.ReadLine(); 13 } 14 } Considerando as informações apresentadas, assinale a alternativa correta. Este código executará uma vez e apresentará uma mensagem informando que cont não é uma variável do tipo numérica, dando erro na linha 10. Este código executará uma vez e apresentará uma mensagem informando que cont não é uma variável do tipo numérica, dando erro na linha 10. Neste código, enquanto o usuário digitar um número menor do que 10, todo o conteúdo interno (linhas 6 a 12) será repetido ou iterado. Ao digitar um número maior ou igual a 10, o loop encerra. Haverá um erro na linha 11, pois a função print está enviando um contador que é inteiro, porém na linha 1 recebe uma string como parâmetro. O while da linha 10, bem como todo o seu conteúdo, entrará em loop infinito, pois o valor de cont é zero e não existe um incremento para esta variável. O erro que ocorrerá em tempo de execução na linha 11 pode ser resolvido se substituirmos a função print pela função nativa do C#, WriteLine. Na primeira execução, quando chega na linha 8, a variável cont é declarada do tipo string, logo, mesmo que receba um número, o tipo da variável é texto (string). Logo, quando encontra o loop do while na linha 10, estamos comparando um tipo texto (cont) com um numérico (10). Deste modo, ocorrerá um erro, pois não é possível realizar este tipo de comparação. Pergunta 2 Analise com atenção o código a seguir escrito em C#. 1 for(int x=-15; x<14; x++) 2 { 3 x++; 1 em 1 pontos Resposta Selecionada: Respostas: Comentário da resposta: 4 Console.WriteLine(x); 5 } Assinale a alternativa que apresenta a análise correta sobre esse código. Esta estrutura de repetição apresentará todos os números pares de -14 a 14. O código apresentará os números inteiros de -15 (valor inicial de x) até 13, que é o último valor menor que 14. Este laço de repetição possui dois incrementos, o que gerará erro de duplicidade na linha 3. Este código apresentará todos os números de -15 a 14, inclusive o número zero. Este código apresentará um erro na linha 1, pois a inicialização da variável x é negativa. Esta estrutura de repetição apresentará todos os números pares de -14 a 14. O laço for é inicializado com o valor -15 (x = -15). Observe que o laço é incrementado uma vez na definição do for, bem como tem o incremento internamente, dentro do escopo do for. Então, na primeira iteração, a variável -15 é incrementada para -14 e o valor é apresentado na tela. Em seguida, a variável x é incrementada com o x++ do laço for e também pelo x++ da linha 3. Logo, são apresentados todos os números pares, afinal, há dois incrementos. Pergunta 3 Em C# e em outras linguagens de programação, para que seja possível manipular dados, uma das necessidades é criar variáveis que armazenem temporariamente valores os quais podem ser numéricos (int ou float), texto (string) ou booleano (bool). Observe o código a seguir escrito em C#: 1 a = 5.95681545; 2 b = Console.ReadLine(); 3 c = 7 % 2; 4 d = 3.5 * c; Marque a alternativa que apresenta corretamente os tipos das variáveis a, b, c e d, respectivamente. 1 em 1 pontos Resposta Selecionada: Respostas: Comentário da resposta: a: float; b: string; c: int; d: float. a: int; b: string; c: float; d: int. a: float; b: int; c: float; d: float. a: int; b: string; c: int; d: int. a: float; b: string; c: int; d: float. a: int; b: int; c: float; d: int. Em a) temos um número que é ponto flutuante, isso pode ser observado pelo uso de casas decimais; em b) a variável recebe um conteúdo da linha de comando via o método input, logo, independentemente de o valor digitado ser um número ou letra, o tipo sempre será string; em c) estamos encontrando o resto de uma divisão, logo, o valor é inteiro; em d) estamos multiplicando um ponto flutuante por um inteiro, o que resulta em um ponto flutuante ou float. Pergunta 4 Resposta Selecionada: Respostas: Observe com atenção o pseudocódigo a seguir: início se temperatura == “40” escreva(“ligar ar-condicionado”) escreva(“fechar as janelas”) senão escreva(“ligar ventilador”) escreva(“abrir as janelas”) �m-se �m Sobre algoritmos, assinale a alternativa correta. O pseudocódigo é utilizado para acelerar o ciclo de desenvolvimento de um código. O pseudocódigo é uma representação formal de um código real, porém em português. 1 em 1 pontos Comentário da resposta: O pseudocódigo possui uma estrutura pré-definida, ou seja, específica, e é um intermediário entre o português e uma linguagem de programação. O pseudocódigo é usado em automação residencial, como no caso do código apresentado para ligar o ventilador ou o ar-condicionado. O pseudocódigo é utilizado para acelerar o ciclo de desenvolvimento de um código. O pseudocódigo é usado para comunicar ideias, assim como as linguagens de programação, porém em português. O pseudocódigo é uma escrita intermediária entre a linguagem falada ou o algoritmo narrativo e o código de computador. Logo, é uma boa opção escrevê-lo a fim de ganhar tempo e diminuir erros relacionados ao desenvolvimento. Pergunta 5 Observe com atenção o código a seguir: 1 double x, valor, y; 2 bool compara; 3 4 valor = 100; 5 x = valor % 5; 6 Console.WriteLine(x); 7 8 valor = 100; 9 y = valor * 0.05; 10 Console.WriteLine(y); 11 12 compara = x == y; 13 Console.WriteLine(compara); Em programação, podemos utilizar os operadores aritméticos como soma, multiplicação, divisão e módulo para manipular os valores das variáveis. Além desse tipo de operador, outro muito utilizado é o operador de comparação, que é 1 em 1 pontos Resposta Selecionada: Respostas: Comentário da resposta: I. Nas linhas 4 a 6 estamos calculando a porcentagem de um determinado valor. Logo, na linha 5 estamos calculando 5% em cima do valor 100. O resultado apresentado na linha 6 será 5. II. Nas linhas 8 a 10, estamos calculando a porcentagem de um determinado valor. Logo, na linha 9 estamos calculando 5% em cima do valor 100. O resultado apresentado na linha 10será 5. III. Na linha 12, estamos comparando o valor da variável x (obtido na linha 5) e o valor da variável y (obtido na linha 9). O resultado dessa comparação será False. responsável por relacionar duas expressões, validando sua igualdade ou diferença, por exemplo. Considerando as informações apresentadas, avalie as afirmações a seguir. É correto o que se afirma em: II e III, apenas. II e III, apenas. I e II, apenas. I, apenas. II, apenas. III, apenas. A afirmativa I está incorreta, pois o operador % (módulo) retorna o resto da divisão de um número por outro, não sendo responsável por calcular a porcentagem. Logo, a saída é o resto da divisão, ou seja, 0 (zero) e não 5 ou 5%. A afirmativa II está correta, pois estamos calculando a porcentagem, afinal, estamos multiplicando por 0,05 o conteúdo da variável valor, que é 100. Como resultado, teremos o número 5 ou 5%. A afirmativa III está correta, pois o valor da variável x é 0 (resto da divisão de 100 por 5) e o valor da variável y é 5. Como são valores diferentes, o resultado da comparação será False. Pergunta 6 Observe com atenção o fluxograma a seguir. 1 em 1 pontos Resposta Selecionada: Respostas: Comentário da resposta: A respeito dos componentes que fazem parte de um fluxograma, analise as afirmativas a seguir e assinale V para a(s) Verdadeira(s) e F para a(s) Falsa(s). I. ( ) No fluxograma da imagem, observa-se a presença de uma estrutura condicional. II. ( ) No fluxograma da imagem, se o pneu estiver furado, então será necessário trocá-lo. III. ( ) No fluxograma da imagem, independentemente se o pneu estiver furado ou não, o fim será alcançado. IV. ( ) No fluxograma da imagem, será escrito na tela as mensagens Não Trocar e também Trocar. Assinale a alternativa que possui a sequência correta. V-V-V-F. V-F-F-V. V-V-V-F. V-V-F-F. F-F-V-V. F-V-F-V. A afirmativa I é verdadeira, pois o nó ou bloco em forma de losango é a representação de uma condição em um fluxograma. A afirmativa II é verdadeira, pois como o losango é uma condicional, se a condição for verdadeira (caminho da direita), então será apresentado na tela que se deve trocar o pneu. A afirmativa III é verdadeira, pois por se tratar de um algoritmo, ele possui um início e fim muito bem definidos, logo, independentemente se o pneu está ou não furado, o fim será alcançado, pois todo algoritmo é finito. A afirmativa IV é falsa, pois somente será apresentado na tela uma mensagem ou outra, dependendo da condição se for verdadeira ou falsa. Pergunta 7 Resposta Selecionada: Respostas: Analise com atenção o código a seguir que utiliza função com passagem de parâmetros, com três argumentos. 1 public int calcular(int x, ref int y, ref int z){ 2 x = x + 10; 3 y = y + 10; 4 z = z + 10; 5 Console.WriteLine(x + " "+ y+ " "+ z); 6 return y; 7 } 8 9 public static void Main (string[] args) { 10 int a = 4; 11 int b = 3; 12 int c = 2; 13 14 Program p = new Program(); 15 p.calcular(a, ref b, ref c); 16 17 Console.WriteLine(a + " - "+ b + " - " + c); 18 } Os valores impressos na instrução da linha 17 serão: 4 - 13 - 12 4 - 13 - 12 1 em 1 pontos Comentário da resposta: 4 - 3 - 2 14 - 13 - 12 14 - 3 - 2 4 - 12 - 13 Na função main há a invocação da função calcular passando três argumentos por parâmetro, sendo que o primeiro (variável a) é passado por valor, por outro lado, as variáveis b e c são passadas como referência. Logo, qualquer alteração nas variáveis y e z na função calcular, impactará no valor das variáveis b e c que estão na função main. Deste modo, os valores finais das variáveis a, b e c serão, respectivamente, 4, 13 e 12. Pergunta 8 Resposta Selecionada: Respostas: Em C#, podemos utilizar os operadores aritméticos para manipular os dados de variáveis, bem como, realizar cálculos assim como na matemática. Considere o código-fonte a seguir escrito em C#. 1 int total; 2 total = 5 + 4 * 18 / 3 * 3 % 3 - 1; 3 Console.WriteLine(total); Considerando esse contexto, avalie as seguintes asserções e a relação proposta entre elas. I. Considerando a instrução da linha 2 e a ordem de precedência de operadores, o valor apresentado na linha 3 será 4. PORQUE II. O operador de adição e o de módulo possuem a mesma precedência, e a soma foi avaliada antes por aparecer primeiro na expressão. A respeito dessas asserções, assinale a opção correta. A asserção I é uma proposição verdadeira e a II é uma proposição falsa. A asserção I é uma proposição verdadeira e a II é uma proposição falsa. 1 em 1 pontos Comentário da resposta: As asserções I e II são proposições verdadeiras e a II é uma justificativa da I. As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I. A asserção I é uma proposição falsa e a II é uma proposição verdadeira. As asserções I e II são proposições falsas. A asserção I é uma proposição verdadeira, pois seguindo a precedência dos operadores, a primeira operação será 4*18; em seguida, é feita a divisão, depois o módulo, por fim, a soma e a subtração, totalizando 4. A asserção II é uma proposição falsa, pois de acordo com a precedência de operadores temos: primeiramente, os valores entre parênteses (não é o caso), em seguida, a exponenciação (não é o caso), depois da exponenciação será calculada a multiplicação, a divisão ou o módulo (dependendo da ordem destes operadores), em seguida, será calculada a soma ou a subtração (dependendo da ordem dos operadores na expressão). Pergunta 9 As estruturas de decisão, ou estruturas condicionais, são utilizadas nos códigos para dividir um fluxo de processos em dois ou fluxos. Todo algoritmo que precisa de tomada de decisão necessita utilizar uma estrutura de controle como esta. Veja um exemplo de código a seguir: 1 int a = 4; 2 int b = 5; 3 4 if(a>1) { 5 if(b>1) { 6 Console.WriteLine(“Valor de a ” + a + “ valor de b “ + b); 7 } 8 } De posse dessas informações e do conteúdo estudado sobre estruturas condicionais, analise as asserções a seguir e a relação proposta entre elas. I. No caso de usar IFs aninhados como no código, podemos substituir os dois IFs por uma única instrução com o operador lógico E (&&), ficando assim: if(a>1 && b>1): Porque 1 em 1 pontos Resposta Selecionada: Respostas: Comentário da resposta: II. Para mostrar na tela o conteúdo da linha 6, a instrução da linha 4 precisa ser verdadeira e a instrução da linha 5 também precisa ser verdadeira. A seguir, assinale a alternativa correta: As asserções I e II são proposições verdadeiras e a II é uma justificativa correta da I. As asserções I e II são proposições verdadeiras e a II é uma justificativa correta da I. A asserção I é uma proposição verdadeira e a II é uma proposição falsa. As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa correta da I. A asserção I é uma proposição falsa e a II é uma proposição verdadeira. As asserções I e II são proposições falsas. A proposição I está correta, pois podemos utilizar o conceito de IFs aninhados como no código, ou utilizar, nesse código, uma comparação lógica com o operador E (&&). A proposição II está correta, pois a única condição para mostrar o conteúdo da linha 6 é a linha 4 e a linha 5 serem verdadeiras juntas. A proposição II é uma justificativa da I pois, se ambas as decisões, tanto da linha 4 quanto da linha 5, forem verdadeiras, será apresentado o valor da linha 6. Note que temos um se ambas as decisões, ou seja, é necessário que uma e outra sejam verdadeiras, logo, o operador E (&&) representa o IF aninhado. Pergunta 10 O código a seguir realiza a validação se um dado ano é bissexto ou não. Para calcularmos se um ano é bissexto ou não, temos, necessariamente, que considerar os seguintes fatores: o ano deve ser divisível por quatro, o resto da divisão do ano por 100 tem que ser maior que zero ou a divisão doano por 400 precisa ser igual a zero. Analise o código com atenção. 1 double ano; 2 3 ano = Console.ReadLine(); 4 5 if(((ano % 4) == 0 || (ano % 100) > 0) || ((ano % 400) == 0)){ 6 Console.WriteLine(“Ano bissexto”); 7 } else { 1 em 1 pontos Quinta-feira, 16 de Fevereiro de 2023 15h00min59s BRT Resposta Selecionada: Respostas: Comentário da resposta: I. Na linha 3, quando o usuário inserir um valor de ano, resultará em um erro na linha 5, pois a entrada é do tipo string e há uma operação aritmética de módulo. II. Se um valor é divisível por 4 e divisível por 100, logo, é divisível por 400 também, o que torna dispensável a expressão ano%400==0. III. Na linha 5, o valor da expressão será true para qualquer ano maior que 1500, uma vez que temos um operador || (ou), tornando a linha 6 inalcançável. IV. Na linha 5, é necessário substituir o primeiro operador maior (>) pelo operador de igualdade, caso contrário, o algoritmo pode não reconhecer anos bissextos. 8 Console.WriteLine(“Ano não é bissexto”); 9 } Considerando as informações apresentadas, avalie as afirmações a seguir: É correto o que se afirma em: I e III, apenas. I e III, apenas. I e IV, apenas. II e III, apenas. I e II, apenas. II e IV, apenas. A afirmativa I é verdadeira, pois o valor de entrada é sempre do tipo string. Logo, é necessário converter o valor de entrada do input para o tipo double, de modo a evitar o erro. A afirmativa II está incorreta, pois para um ano ser bissexto, entre outros critérios, o resto da divisão deste ano por 100 deve ser maior que 0. A afirmativa diz que deve ser igual a zero, ou seja, deve ser divisível por 100, o que está errado. Em outras palavras, um número não pode ser divisível por 100. A afirmativa III é verdadeira, pois como o código está com três expressões ligadas por um operador || (ou), basta que uma delas seja verdadeira para que toda a expressão seja verdadeira também. Logo, sempre será executada a linha 4, tornando a linha 6 inacessível A afirmativa IV está incorreta, pois para um ano ser bissexto, ele não pode ser divisível por 100 e deve ser divisível por 4. Ou então, deve ser divisível por 400. ← OK
Compartilhar