Prévia do material em texto
Pergunta 1 1 em 1 pontos Leia e associe as duas colunas com relação aos pilares do pensamento computacional. I. Decomposição A. Resolve problemas menores e mais fáceis de serem gerenciados obtidos a partir de um problema complexo. II. Abstração B. Divide um problema em passo a passo para que ele seja resolvido por meio de instruções ou regras. III. Algoritmo C. Separa do problema apenas as partes importantes, ignorando as partes menos importantes. Assinale a alternativa que traz a associação correta entre as duas colunas: Resposta Selecionada: Correta I-A; II-C; III-B. Respostas: Correta I-A; II-C; III-B. I-B; II-C; III-A. I-C; II-A; III-B. I-C; II-B; III-A. I-B; II-A; III-C. Comentário da resposta: A alternativa correta é a) I-A; II-C; III-B. I. Decomposição A. Resolve problemas menores e mais fáceis de serem gerenciados obtidos a partir de um problema complexo. II. Abstração C. Separa do problema apenas as partes importantes, ignorando as partes menos importantes. III. Algoritmo B. Divide um problema em passo a passo para que ele seja resolvido por meio de instruções ou regras. Pergunta 2 0 em 1 pontos Leia o texto a seguir: As funções são um recurso comum entre todas as linguagens de programação. Elas permitem que os desenvolvedores escrevam blocos de código que realizam tarefas específicas. Uma função pode ser executada quantas vezes o desenvolvedor quiser em todo o código. Considerando esse contexto, avalie as seguintes asserções e a relação proposta entre elas. I. As funções fornecem melhor modularidade para seu aplicativo e um alto grau de reutilização de código. PORQUE II. C# oferece muitas funções integradas, permitindo que o programador possa criar as suas próprias, criando blocos de códigos organizados e reutilizáveis. A respeito dessas asserções, assinale a alternativa correta. Resposta Selecionada: Incorreta As asserções I e II são proposições falsas. Respostas: Correta 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 verdadeira e a II é uma proposição falsa. 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. Comentário da resposta: A asserção I é uma proposição verdadeira, pois uma função é denotada pelo modificador de acesso, seguido pelo tipo de retorno, pelo nome da função e um conjunto de parênteses. Esses blocos de código permitem que você organize seu código com mais eficiência. A asserção II é uma proposição verdadeira, pois em C# temos as funções integradas como Math.pow() para potenciação, Math.round() para arredondar um número, entre outras. Também é possível criarmos nossas próprias funções, deixando o código mais organizado. A asserção II é uma justificativa da I, pois além de poder organizar o código, as funções também permitem que as manutenções sejam mais simples. Pergunta 3 1 em 1 pontos Leia o texto a seguir: Uma variável possui papel fundamental em um código: guardar dados. Elas podem armazenar apenas um dado por vez, logo, se uma variável chamada nome possui o conteúdo “João”, ao receber o valor “Maria”, a palavra “João” é perdida. Por outro lado, temos as estruturas condicionais, cuja principal característica é modificar o fluxo de um código de acordo com uma condição e, consequentemente, modificar o conteúdo de uma variável. Veja um exemplo de código fonte em C# que manipula uma única variável chamada txt e possui uma condicional. 1 string txt; 2 Console.WriteLine(“Digite seu nome”); 3 txt = Console.ReadLine(); 4 5 if(txt != “Maria”){ 6 Console.WriteLine(txt + “seu acesso não está autorizado”); 7 } else { 8 Console.WriteLine(txt + “seu acesso foi autorizado”); 9 Console.WriteLine(“bem vindo!”); 10 } Marque a alternativa que explica corretamente a execução deste código: Resposta Selecionada: Correta O valor digitado pelo usuário na linha 3 será armazenado na variável txt e apresentado na linha 6 ou na linha 8. Respostas: Se a variável txt receber o valor “Maria”, será apresentado na tela que o acesso não está autorizado (linha 6) e três pontos (linha 9). Correta O valor digitado pelo usuário na linha 3 será armazenado na variável txt e apresentado na linha 6 ou na linha 8. A linha 6 deste código apresentará a mensagem “Digite seu nome”, pois este é o valor da variável txt. Uma característica do C# pode ser observada na linha 9, o uso de três pontos para encerrar um fluxo de código. Independente do conteúdo de txt, o conteúdo da linha 9 será apresentado pois ele está fora da estrutura if/else. Comentário da resposta: Na linha 3 o usuário entrará com um valor que, conforme solicitado, deve ser um nome. Se o nome for diferente de Maria, então será apresentado o valor da linha 6, caso contrário, será apresentado o valor da linha 8. Pergunta 4 1 em 1 pontos 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. Resposta Selecionada: Correta A asserção I é uma proposição verdadeira e a II é uma proposição falsa. Respostas: Correta 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 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. Comentário da resposta: 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 5 1 em 1 pontos Analise com atenção o código a seguir: 1 public static void Main (string[] args) { 2 Console.WriteLine("Digite um numero"); 3 string op = Console.ReadLine(); 4 5 while(op > 0 || op < 50){ 6 Console.WriteLine("Digite um número: "); 7 op = Console.ReadLine(); 8 } 9 } Considerando as informações apresentadas, avalie as afirmações a seguir: I. O laço de repetição while da linha 5 será executado indiferentemente do valor digitado pelo usuário, uma vez que temos o operador OU (||). II. O laço de repetição while apresentará um erro, pois a variável op é do tipo string e o valor zero é um número inteiro. III. O laço de repetição while será interrompido assim que o usuário digitar um número fora do intervalo entre zero e cinquenta. IV. O laço de repetiçãowhile está com sua sintaxe escrita corretamente, porém, ele apresentará um erro de execução. É correto o que se afirma em: Resposta Selecionada: Correta II e IV, apenas Respostas: Correta II e IV, apenas I e III, apenas. I e II, apenas. III e IV, apenas. II e III, apenas. Comentário da resposta: A afirmativa I está incorreta, pois o laço de repetição não será executado pois há uma tentativa de comparar uma string com um valor inteiro, o que irá gerar um erro. Para resolver isso, é possível converter o tipo da variável op de string para inteiro. A afirmativa II está correta, pois haverá um erro devido ao tipo da variável op que é string. A afirmativa III está incorreta, pois mesmo que a variável op fosse do tipo inteiro isso não ocorreria, afinal, existe uma condição ou, logo, independentemente do valor digitado pelo usuário, sempre este laço seria executado (considerando op como inteiro). A afirmativa IV está correta, pois sintaxe se refere a forma de escrita e, neste caso, o while está com sua sintaxe correta. Existe uma expressão interna entre os parênteses com um operador lógico conectando duas operações de comparação. Entretanto, o erro é semântico, uma vez que o tipo não é condizente com o esperado, que seria o inteiro. Pergunta 6 1 em 1 pontos 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 do ano 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 { 8 Console.WriteLine(“Ano não é bissexto”); 9 } Considerando as informações apresentadas, avalie as afirmações a seguir: 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. 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. 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. 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. É correto o que se afirma em: Resposta Selecionada: Correta I e III, apenas. Respostas: Correta I e III, apenas. I e IV, apenas. II e III, apenas. I e II, apenas. II e IV, apenas. Comentário da resposta: 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. Pergunta 7 1 em 1 pontos Durante o desenvolvimento de programas, os operadores lógicos E e OU são usados para relacionar expressões. O resultado de uma operação lógica será VERDADEIRO ou FALSO. Ao utilizar o operador E, por exemplo, o resultado será VERDADEIRO somente se estiver entre dois operandos também VERDADEIROS. Analise, então, as seguintes expressões: Expressão 1: FALSO OU VERDADEIRO E FALSO E VERDADEIRO. Expressão 2: FALSO E VERDADEIRO E FALSO OU VERDADEIRO. Sobre as expressões 1 e 2, é corretor dizer que Resposta Selecionada: Correta o operador OU resultará VERDADEIRO quando qualquer um dos operandos também for verdadeiro. Logo, o resultado da expressão 2 será VERDADEIRO. Respostas: o operador OU resultará VERDADEIRO quando qualquer um dos operandos também for verdadeiro. Logo, o resultado da expressão 1 será VERDADEIRO. tanto a expressão 1 quanto a expressão 2 terão como saída o valor VERDADEIRO, afinal, em ambas as expressões temos o operador OU, que é chamado de operador permissivo. o operador E resultará VERDADEIRO quando qualquer um dos operandos também for verdadeiro. Logo, o resultado da expressão 2 será VERDADEIRO. o operador E é menos permissivo e restritivo que o operador OU, deste modo, em uma expressão, basta que apenas um operando seja VERDADEIRO para que toda a expressão se torne verdadeira. Correta o operador OU resultará VERDADEIRO quando qualquer um dos operandos também for verdadeiro. Logo, o resultado da expressão 2 será VERDADEIRO. Comentário da resposta: Analisando a tabela lógica ou tabela verdade, o operador OU resultará VERDADEIRO sempre que estiver relacionando qualquer valor booleano com um valor VERDADEIRO. Em outras palavras, basta que um dos operandos seja VERDADEIRO para que o resultado seja VERDADEIRO. O operador E é mais restritivo, logo, para que o resultado de uma expressão lógica seja verdadeiro, necessariamente todos os operandos precisam também ser verdadeiros. Pergunta 8 0 em 1 pontos Analise com atenção o código a seguir, que possui algumas variáveis e realiza algumas operações sobre elas: 1 string var1; 2 int var2; 3 double var3; 4 5 Console.WriteLine(“Digite seu nome”); 6 var1 = Console.ReadLine(); 7 8 Console.WriteLine(“Digite sua idade”); 9 var1 = Console.ReadLine(); 10 11 var2 = int.Parse(var1); 12 13 var3 = Math.Pow(var2, 2); 14 15 Console.WriteLine(var3); Considerando essas informações, analise as afirmativas a seguir: I. Neste código será solicitada uma entrada de dados que, ao digitar valores numéricos, eles serão mostrados na tela. II. Neste código, ao digitar palavras e expressões alfanuméricas, elas serão armazenadas em var1 e mostradas na tela na linha 15. III. Este código apresentará mensagem de erro na linha 11 que recebe um texto, porém a variável var2 é do tipo Inteiro. IV. Este código apresenta uma saída de texto na linha 15 com o conteúdo da variável var3, sempre que var1 for um número. Estão corretas apenas as afirmativas: Resposta Selecionada: Incorreta I e III. Respostas: II e III. Correta I e IV. II e IV. I e III. III e IV. Comentário da resposta: A afirmativa I é verdadeira, pois o tipo da variável var1 no início do código (linha 1) é string. Na linha 9 é solicitada a idade, que será um número, porém, a variável continua sendo string. Na linha 11 essa string é convertida para inteiro. Logo, se houver um caractere numeral na variável var1, ele será convertido para número do tipo inteiro na linha 11. Deste modo, na linha 13 estamos elevando esse número ao quadrado, se for 10, por exemplo, na linha 15 será mostrado o valor 100. A afirmativa II é falsa, pois ao digitar qualquer letra ou palavra, contendo ou não número, o código apresentará erro, uma vez que existe uma operação aritmética na linha 13, logo o programa espera que você informe números e não letras. A afirmativa III é falsa, pois a variável var2 não é do tipo inteiro, ela não tem tipo até então, pois acabou de ser criada. O único erro que pode ocorrer nalinha 11 é a tentativa de converter um caractere (letra) em inteiro. A afirmativa IV é verdadeira, pois sempre que for digitado um número na linha 6 ele será convertido de string para tipo inteiro e, em seguida, realizada a operação aritmética de exponenciação e, por fim, apresentado na tela na linha 15. Pergunta 9 0 em 1 pontos 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”) fim-se fim Sobre algoritmos, assinale a alternativa correta. Resposta Selecionada: Incorreta O pseudocódigo é usado para comunicar ideias, assim como as linguagens de programação, porém em português. Respostas: O pseudocódigo é uma representação formal de um código real, porém em português. 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. Correta 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. Comentário da resposta: 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 10 0 em 1 pontos Sobre variáveis em programação, podemos afirmar que: I. Uma variável pode iniciar-se com letras, com underscore ( _ ) ou com traço (-) e deve ser evitado o uso de caracteres especiais. II. Se criarmos uma variável chamada aluno1 e outra chamada aluno2, teremos dois espaços na memória para guardar valores. III. Uma variável chamada nota pode armazenar, ao mesmo tempo, o nome de um aluno e sua respectiva nota em uma avaliação. IV. Uma variável não pode ter caracteres especiais ou traços, afinal, o computador pode não compreender estes sinais. As alternativas verdadeiras são: Resposta Selecionada: Incorreta I e II, apenas. Respostas: I e III, apenas. I e IV, apenas. II e III, apenas. I e II, apenas. Correta II e IV, apenas. Comentário da resposta: A afirmativa I é falsa, pois não podemos utilizar o sinal de traço (-) em uma variável, afinal, o computador pode ficar em dúvida se esse traço representa um caractere separador ou um sinal de subtração, então por isso não é possível utilizá-lo. A afirmativa II é verdadeira, pois uma variável tem o exato propósito de armazenar um valor na memória. Logo, ao criarmos duas variáveis, teremos dois espaços na memória reservados para o nosso programa. A afirmativa III é falsa, pois uma variável pode armazenar apenas um único valor, logo, ou se armazena o nome do aluno ou se armazena a nota do aluno, não sendo possível armazenar ambos os valores no mesmo espaço de memória. A afirmativa IV é verdadeira, pois caracteres especiais como @#$- ou qualquer outro que o valha, não podem ser utilizados no código como parte do nome da variável. Se usado, o compilador não o reconhecerá como presente na linguagem e, consequentemente, irá gerar um erro. Somente uma observação: alguns caracteres especiais como # e $ são usados na programação, mas não na declaração de uma variável.