Ministério da Educação
Secretaria de Educação Profissional e Tecnológica
Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul
RESPOSTA AO RECURSO
NÚMERO DA VAGA: 32
QUESTÃO: 17
MOTIVO ALEGADO PELO CANDIDATO:
A questão de número de 17, para a vaga de número 32 (Informática:
Programação/Programação WEB) deve ser anulada. A opção 'E' também está incorreta
(além da opção 'B').
"O código descrito na opção E, quando n=1, leva ao cálculo de retorno da função
1/2 + 1 = 1,5
Essa função seria baseada na truncagem do número 1,5 para retornar 1, não sendo uma
boa prática de programação (inclçusive os compiladores levantam um warning em cima
do método por conta dessa truncagem).
Sendo assim a questão deveria ser anulada."
A opção E também está incorreta, segue complemento da minha fundamentação enviada
em formulário anterior."
"Complementando meu recurso anterior, na verdade o compilador não aceita essa
construção proposta na letra 'E'
public int fatorial (int n) {
if (n<=2) return (n/2 + 1);
}
O erro apresentado é o seguinte...
THIS METHOD MUST RETURN A RESULT OF TYPE INT."
Complementando, o compilador não aceita essa construção proposta na letra 'E'
public int fatorial (int n) {
if (n<=2) return (n/2 + 1);
}
O erro apresentado é o seguinte...
THIS METHOD MUST RETURN A RESULT OF TYPE INT.
RESPOSTA: ( ) DEFERIDO
( X ) INDEFERIDO
Ministério da Educação
Secretaria de Educação Profissional e Tecnológica
Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul
FUNDAMENTAÇÃO: Divisão de números inteiros em linguagem C resulta em
número inteiro.
De acordo com "The C Standard", subcláusula 6.5.5 [ISO/IEC 9899:2011]:
"When integers are divided, the result of the / operator is the algebraic quotient
with any fractional part discarded. If the quotient a/b is representable, the expression
(a/b)*b + a%b shall equal a."
Isso significa que, em uma divisão de números inteiros, a parte fracionária é
descartada, o que resulta em um número inteiro.
Considere o seguinte programa (Figura 1) escrito em linguagem C:
Figura 1. Exemplo de divisão de números inteiros.
O programa cria 3 variáveis do tipo inteiro. À variável a é atribuído o valor 5 e à
variável b é atribuído o valor 4. A variável c recebe o valor da divisão de a por b. Caso
o resultado da divisão fosse fracionário (1.25), ocorreria um erro de tipo incompatível
em c = a / b;, contudo, o programa compila e executa corretamente e exibe o valor 1
(inteiro) como resultado exibido pelo comando printf("%d\n", c);, o que pode ser
observado na figura abaixo.
Figura 2. Compilação e execução do exemplo da Figura 1.
Considerando a operação descrita pelo candidato: 1/2 + 1 = 1,5. Quando essa
operação é atribuída a um valor inteiro, o resultado é inteiro. O código de um programa
que testa isso é apresentado na Figura 3 e o resultado obtido é apresentado na Figura 4.
Figura 3. Código-fonte com exemplo do cálculo sugerido pelo candidato
Figura 4. Execução do programa apresentado na Figura 3.
A implementação da função da questão 17 da prova 32, utilizando o opção E, é
apresentada na Figura 5. Juntamente com ela está implementado um exemplo de
utilização da função, mostrado no método main.
Ministério da Educação
Secretaria de Educação Profissional e Tecnológica
Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul
Figura 5. Implementação da questão 17 da prova 32 utilizando a opção E.
A compilação e execução desse programa é correta e não exibe nenhum erro,
conforme apresentado na Figura 6, abaixo.
Figura 6. Compilação e execução do programa da questão 17 (prova 32) utilizando a opção E
O compilador utilizado foi o gcc 4.4.3, conforme apresentado na figura abaixo.
Figura 7. Descrição do compilador utilizado
Referência:
 [ISO/IEC 9899:2011] ISO/IEC. Programming Languages—C, 3rd ed (ISO/IEC 9899:2011).
Geneva, Switzerland: International Organization for Standardization, 2011, página 92.
Ministério da Educação
Secretaria de Educação Profissional e Tecnológica
Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul
RESPOSTA AO RECURSO
NÚMERO DA VAGA: 32
QUESTÃO: 17
MOTIVO ALEGADO PELO CANDIDATO:
Solicito a anulação da questão 17 pelos motivos expostos na fundamentação.
"De acordo com o gabarito divulgado, a opção correta a ser marcada nesta questão seria
a letra B, indicando que o comando que tornaria incorreta a função apresentada no
enunciado seria o seguinte:
if (n == 1) return 1;
Entretanto, se considerarmos que este comando torna a função incorreta, então outras
duas opções apresentadas (C e D) também estariam erradas. Para que este comando
apresentado acima seja executado, o valor de n deve, obrigatoriamente, ser 1. Caso o
valor de n passado como parâmetro ao método seja 1, os comandos apresentados nas
letras C e D também retornariam 1 como resultado da função.
Analisando (com n = 1):
Letra B:
if (n == 1) return 1;
Como o n é igual a 1, o resultado retornado seria 1.
Letra C:
if (n <= 1) return 1;
Como o n é igual a 1 e a condição abrange valores menores ou iguais a 1, o resultado
retornado seria 1.
Letra D:
if (n < 2) return 1;
Como o n é igual a 1 e a consulta abrange qualquer valor menor que 2, o resultado
retornado seria 1.
Em resumo, se considerarmos que a letra B torna incorreta a função apresentada na
questão, então as letras C e D também gerariam o mesmo efeito."
RESPOSTA: ( ) DEFERIDO
( X ) INDEFERIDO
FUNDAMENTAÇÃO: O conceito de fatorial é bem conhecido na programação. É o
exemplo mais comum utilizado no ensinamento de recursão em programação. Mesmo
assim, abaixo segue a definição:
Ministério da Educação
Secretaria de Educação Profissional e Tecnológica
Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul
"Ao produto dos números naturais começando em n e decrescendo até 1 denominamos
de fatorial de n e representamos por n!.
Segundo tal definição, o fatorial de 5 é representado por 5! e lê-se 5 fatorial.
5! é igual a 5 . 4 . 3 . 2 . 1 que é igual a 120, assim como 4! é igual a 4 . 3 . 2 . 1 que é
igual a 24, como 3! é igual a 3 . 2 . 1 que é igual a 6 e que 2! é igual a 2 . 1 que é igual a
2.
Por definição tanto 0!, quanto 1! são iguais a 1." (Matemática Didática)
A Tabela 1 a seguir mostra o fatorial de alguns números a partir de zero:
Tabela 1. Lista de alguns fatoriais (Math is Fun)
n n!
0
1
1
1
2
2
3
6
4 24
5 120
6 720
Na questão 17, são apresentadas alternativas para o preenchimento de uma
função fatorial e pede-se para indicar qual das alternativas é incorreta. Dado isso,
analizarei as 3 alternativas indicadas pelo candidado.
Alternativa B:
Caso fosse escolhida a alternativa B, o código resultante seria o seguinte:
int fatorial(int n) {
if (n == 1) return 1;
return (n * fatorial(n-1));
}
Essa função funciona para valores maiores ou iguais à 1.
 Caso o valor seja maior que um, a função chamará ela mesmo, recursivamente,
diminuindo o valor passado por parâmetro até que atinja a condição de parada de
n igual a 1.
 Caso o valor passado seja 1. A função simplesmente retornará 1 como resposta,
o que, segunda a Tabela 1, está correto.
 Contudo, caso o valor passado seja 0, a função chamará ela mesmo
indefinidamente, onde o valor de n, passado por parâmetro será menor que zero
e continuará a diminuir, nunca atingindo a condição de parada.
Portanto, essa alternativa está incorreta, conforme o gabarito.
Alternativa C:
Caso fosse escolhida a alternativa C, o código resultante seria o seguinte:
int fatorial(int n) {
if (n <= 1) return 1;
return (n * fatorial(n-1));
}
Ministério da Educação
Secretaria de Educação Profissional e Tecnológica
Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul
Essa função é correta, pois ela funciona para valores maiores que 1, chamando
ela mesma recursivamente até atingir a condição de parada. E também funciona para os
valores 0 e 1, pois esses valores são verdadeiros na condição de parada (menor ou igual
à 1) e seu resultado está de acordo com o apresentado na Tabela 1.
Alternativa D:
Caso fosse escolhida a alternativa D, o código resultante seria o seguinte:
int fatorial(int n) {
if (n < 2) return 1;
return (n * fatorial(n-1));
}
O mesmo dito sobre a alternativa C pode ser dito aqui, a diferença está na
condição de parada. Enquanto na alternativa C a condição é "menor ou igual à 1", na
alternativa D a condição de parada é "menor que 2". Como somente são utilizados
valores inteiros, as duas condições são equivalentes.
Ainda resalto que valores negativos não precisam ser considerados na questão,
como citado na própria:
"Considerando que somente valores maiores ou iguais a zero serão passados à função e
sabendo que o fatorial de zero é um e o fatorial de um número inteiro positivo é a
multiplicação dele com todos os números inteiros menores que ele e maiores que zero,
indique a opção que, ao ser colocada no lugar da linha tracejada, torna essa função
incorreta."
Referências:
 Matemática Didática, http://www.matematicadidatica.com.br/Fatorial.aspx,
acessado em 17/12/2013;
 Math is fun, http://www.mathsisfun.com/numbers/factorial.html, acessado em
17/12/2013.
Ministério da Educação
Secretaria de Educação Profissional e Tecnológica
Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul
RESPOSTA AO RECURSO
NÚMERO DA VAGA: 32
QUESTÃO: 24
MOTIVO ALEGADO PELO CANDIDATO:
O candidato solicita anulação da questão por alegar que as quatro alternativas da
questão 24 funcionam perfeitamente, “exibindo no navegador uma caixa de texto
habilitada para que o usuário informe qualquer valor”.
RESPOSTA: ( ) DEFERIDO
( X ) INDEFERIDO
FUNDAMENTAÇÃO: Conforme “OLIVIERO, Carlos A. J. Faça um site orientado por
objetos – PHP 5.2 com MySQL 5.0” e “SILVA, MAURÍCIO SAMY. Construindo sites com CSS E
(X)HTML – Editora Novatec”, existem elementos obrigatórios para a criação de caixas de texto.
Eles são: NAME e TYPE. Esse último, sempre com “text” entre aspas. As demais alternativas
sequer tinham o TYPE. Solicitação indeferida.
Ministério da Educação
Secretaria de Educação Profissional e Tecnológica
Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul
RESPOSTA AO RECURSO
NÚMERO DA VAGA: 32
QUESTÃO: 28
MOTIVO ALEGADO PELO CANDIDATO:
Solicito a anulação da questão 28, pois existe um erro no primeiro comando SQL
apresentado. Estando este comando errado, não existe nenhuma opção F-F-V-F
disponível para marcação no gabarito, motivo pela qual solicito a anulação.
A subconsulta existente no primeiro comando SQL apresentado pela questão 28 está
realizando uma filtragem dos departamentos para buscar o código apenas daquele cujo
nome é Dep1. Entretanto, no comando SQL impresso na prova para esta filtragem
consta apenas a abertura das aspas simples, sem o seu fechamento, o que ocasionará
erro na execução.
O comando disponibilizado na prova é o seguinte:
SELECT Nome, Salario
FROM Funcionario
WHERE Cod_depto in (SELECT Codigo FROM Departamento WHERE Nome =
'Dep1);
Veja que não se trata de um erro de impressão, pois o comando foi finalizado
corretamente com o fechamento do parêntese e o ponto e vírgula.
O comando correto deveria ser o seguinte:
SELECT Nome, Salario
FROM Funcionario
WHERE Cod_depto in (SELECT Codigo FROM Departamento WHERE Nome =
'Dep1');
Ou seja, o parâmetro passado ao filtro da subconsulta deveria estar entre aspas simples
(abertura e fechamento), e não apenas com a abertura das aspas simples conforme está
no caderno de provas.
RESPOSTA: ( X ) DEFERIDO
( ) INDEFERIDO
FUNDAMENTAÇÃO: O candidato alega que há um erro em uma das alternativas
mencionadas como correta, pois, não há o fechamento de aspas simples em:
SELECT Nome, Salario
FROM Funcionario
WHERE Cod_depto in (SELECT Codigo FROM Departamento WHERE Nome =
'Dep1);
Ministério da Educação
Secretaria de Educação Profissional e Tecnológica
Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul
O que causa erro na execução do comando. O candidato solicita anulação da questão.
Realmente existe a falta das aspas simples no final do comando, o que faz com que a
consulta não seja executada, tornando a alternativa falsa. Não há alternativa que possa
ser utilizada para alteração de gabarito, devendo a questão ser anulada.
Download

RESPOSTA AO RECURSO NÚMERO DA VAGA: 32