Mostraremos as questões e comentaremos cada um dos exercícios.
Obtenha seu certificado de Programador C e entre no Mercado de Trabalho
Sobre a Apostila de C
É um material de excelente qualidade que é ofertado de maneira totalmente gratuita, que era um curso da UFMG que já foi encerrado, mas devido a utilidade do projeto, a apostila ainda continua no ar.
Para saber mais sobre acesse:
Apostila de C
Nosso objetivo, além de divulgar e mostrar essa apostila para os iniciantes na linguagem C, é resolver e comentar as questões propostas na Lista 2 da Apostila de C.
As seguintes questões dessa apostila abordam assuntos que podem ser encontrados em nossos tutoriais do C Progressivo, como:
Números inteiros (Modificadores do tipo int)
Números decimais - Float e Double
Caracteres - O tipo char
Operadores Matemáticos
Operações Matemáticas e Precedência de Operadores
Lógica Binária
Operadores Lógicos
Operadores de Incremento ++ e Decremento --
Questões da Lista 2 da Apostila de C
Resolução da Lista 2 da Apostila de C
Questão 1:
Uma variável, em C, deve ter seu nome composto por caracteres alfanumérico (número ou letra, maiúscula ou minúscula) ou pelo underline _Não podemos dar um nome reservado (como for, while ou if) a uma variável também. Mas devemos lembrar que o C é case sensitive, então não pode 'if', mas pode 'If'.
Também não podemos iniciar o nome de uma variável por um dígito!
Gabarito A
Questão 2:
Os tipos em C são: char, unsigned char, signed char, int unsigned int, signed int, short in, unsigned short int, signed short int, long int, signed long int, unsigned long int, float, double e long double.Ou seja, não existe long float.
Gabarito B
Questão 3:
Em um computador com hardware de 16 bits, um double ocupa 8 bytes e o char ocupa apenas 1 byte.Então 8/1=8
Gabarito D
Questão 4:
Entendemos por inicializar uma variável o ato de criar (reservar) uma variável com um valor inicial, escolhido por nós.No item A dessa questão da apostila, a variável z é criada e é dado o valor de '10' para outra variável, a z1. No item B, a variável z é criada sem ser inicializada (então um valor do 'lixo', local aleatório da memória, que inicia a variável), só depois que o valor 10 é atribuído.
Já no item D a variável não é declarada, então não é atribuído o valor 10 na definição da variável, não configurando uma inicialização.
Gabarito C
Questão 5:
A função main retorna uma variável do tipo inteira, então devemos usar o int main() { ... }Como ela retorna um inteiro, é aconselhável, ao final da função, usar o "return 0;".
Gabarito B
Questão 6:
Conforme a lição sobre Constantes, da Aula 3 da própria Apostila de C da UFMG, números iniciados em 0 se referem as constantes e números octais.Gabarito D
Questão 7:
Quando usamos aspas duplas, como em "t", estamos nos referindo a uma string.Ou seja, para armazenar "t" necessitaríamos no mínimo de duas variáveis do tipo char em um vetor: uma para para armazenar o caractere 't' e outra para armazenar o caractere delimitador de string '\0'.
Já a 't' é um simples caractere ASCII.
Ou seja, são duas coisas totalmente diferentes do ponto de vista da linguagem C.
Gabarito B
Questão 8:
x=y=10 -> Tanto x como y recebem o valor 10z=++x -> Como o operador '++' vem antes, primeiro x é incrementado (passa a ser 11) e só depois é atribuído a z (que será igual a 11)
x=-x -> 'x' recebe seu valor oposto, agora é -11
y++ ->: O valor de 'y' é incrementado e agora vale 11
x=x+y-(z--) -> Como o 'z' vem antes do operador de decremento '--', primeiro fazemos a operação normalmente, sem esse oprador (x = x+y - z), que resulta em x=-11 . Agora sim fazemos o decremento, então z=10
Gabarito B
Questão 9:
Para resolver este exercício da apostila de C, devemos levar em consideração que 'a', 'b', 'x' e 'y' são números inteiros, então devemos lembrar que o resultado inteiro de uma divisão de dois números inteiros é a parte inteira do resultado.Por exemplo: x=a/b=14/3 = 4
(se você fizer isso na calculadora vai obter 4.667, mas como 'x' é inteiro, vamos ficar apenas com a parte inteira do resultado, que é 4)
Já y=a%b= 2 (resto da divisão)
E o resultado inteiro de: y/x = 2/4 = 0
Gabarito E
Questão 10:
Vamos fazer como o Jack, o estripador: por partes.(-5 || 0) -> É uma operação que não faz alguma comparação ou teste, cujo resultado é verdadeiro (TRUE)
(3 >=2) -> Verdadeiro, retorna TRUE
(1 != 0) -> TRUE também
( 3 < 0) -> FALSE
Vamos chamar TRUE de 1 e FALSE de 0. Montando a expressão:
1 && 1 && 1 || 0
É até fácil ver que o resultado é TRUE. Mas podemos reduzir o trecho:
1 && 1 && 1 para simplesmente 1. Obtendo: 1 || 0 , que retorna verdadeiro ou TRUE.
Gabarito A
Questão 11:
Para resolver esta penúltima questão dessa Lista 2 da Apostila, também temos que ir com calma e dividir por partes.Assim, temos: c = a+++b
Isto está dessa maneira de propósito, para confundir.
Reescrevendo de outra maneira, essa expressão equivale a: c = a++ + b
Ou de maneira mais simples: c = (a++) + b
Assim, temos 'a++', isso quer dizer que primeiro vamos trabalhar com o valor de 'a' normalmente, e só ao término da operação é que o operador de incremento entra em ação.
Logo, a primeira parte da instrução é simplesmente: c = a + b =30
Agora sim, incrementamos a: a++ = 11
Gabarito A
Questão 12:
Primeira instrução: v += x + yIsso equivale a : v = (v + x + y) = 0 + 1 + 2 = 3
Na segunda instrução, temos duas operações na mesma linha: x *= y = z + 1;
Nesses casos, fazemos sempre da direita para a esquerda.
Assim, a primeira operação: y = z + 1 = 4
Agora: x*=y -> x = x*y = 1*4 = 4
Agora: z %= v + v + v
Que é o mesmo que: z = z%(v+v+v) = 3%(3+3+3) = 3 % 9 = 3
E por fim temos três operações numa linha só: v += x += y += 2
Vamos, mais uma vez, fazer da direita para a esquerda.
Primeiro: y+=2 -> y=y+2 = 4+2=6
Segundo: x+=y -> x=x+y = 4 + 6 =10
Por fim: v+=x -> v=v+x = 3 + 10=13
Gabarito D
Nenhum comentário:
Postar um comentário