Baixe o app para aproveitar ainda mais
Prévia do material em texto
Analise o trecho de código abaixo e determine qual a saída gerada: int i, A = 0, B = 1 ; for (i = 1; i < 5; i++) { A = B; B = i + B * A; } cout << " A = " << A << " B = " << B; A = 39 B = 1525 A = 8 B = 67 A = 67 b = 4757 A = 6 B = 39 A = 0 B = 1 2. int main() { int contador = 1; while (contador < 10) { printf("%d ", contador); contador++; } return 0; } 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 3. O programa abaixo terá qual saída? int main() { int j = 2; for ( int i = 1 ; i < = 3 ; i++ ) { cout << i * j << endl; } } 12 1 * 2 = 2 2 * 2 = 4 3 * 2 = 6 2, 4, 6 1 * 2 2 * 2 2 * 3 2 4 6 4. Considere o trecho de código abaixo. O que será impresso quando o programa for executado? int main() { int contador = 10; while (contador > 1) { printf("%d ", contador); contador--; } return 0; } Nunca vai parar. 1 1 1 1 1 1 1 1 1 1 1 1 ... Nunca vai parar. 10 10 10 10 10 10 10 10... 10 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10 9 8 7 6 5 4 3 2 Explicação: A estrutura while repete o bloco enquanto o teste for verdadeiro. Se a variável contador começa com 10 e exibe o valor do contador enquanto ele for maior do que, significa que quando ele for decrementado e chegar a 1, interromperá a repetição; Resposta correta: 10 9 8 7 6 5 4 3 2 5. Analise o código a seguir e marque a alternativa que exprime o que esse trecho de código executa, caso o usuário introduza um número positivo maior que zero: #include < stdio.h> //Retire o espaço depois de < quando for compilar int main() { int x, i=1; printf("Entre com numero: "); scanf("%d", &x); while(i<=x) { if(i%2!=0) printf("%d\n", i); i++; } return 0; } O código mostra os números divisíveis por 3. O código mostra os todos os divisores ímpares de um número. O código mostra os números divisíveis por 2. O código mostra os todos os números pares menores ou igual a x. O código mostra os todos os números ímpares menores ou igual a x. Explicação: O aluno deve compreender que estão sendo testados os números menores que o número introduzido pelo usuário, e caso o número testado tenha seja ímpar será mostrado. Assim como o próprio número quando este for ímpar. 6. Muitas séries matemáticas podem ser geradas pela estrutura do for. Analise o código abaixo, supondo que você digitou 2 e 4 quando lhe foram solicitados dois números e escolha a opção que contém a série exibida pelo código. 2 4 6 10 16 26 42 2 4 6 8 19 12 14 16 2 4 4 8 12 20 32 2 4 6 10 16 26 42 68 2 4 4 8 12 20 32 52 Gabarito Coment. Gabarito Coment. 7. Todo laço de repetição dever possuir um critério de parada para que o mesmo não fique executando indefinidamente. Analise o código a seguir e marque a opção que representa um critério de parada a ser introduzido no código, no bloco while, a fim que o código em execução mostre todos os números pares diferente de zero e inferiores ao valor introduzido pelo usuário a variável x. #include < stdio.h> //Retire o espaço depois de < quando for compilar int main() { int x, i=1; printf("Entre com numero: "); scanf("%d", &x); while(i<=x) { if(i%2==0) printf("%d\n", i); } return 0; } i--; i+x; x++; x--; i++; Explicação: A fim de garantir que o programa execute apenas enquanto que a variável i seja menor que o valor armazenado em x. Temos que incrementar a variável i a cada iteração do laço. Assim fazemos i++ 8. A programação oferece diversas estruturas de forma a facilitar a programação quanto a sua organização. Alguns dessas estruturas evitam que determinada parte do código tenha de ser repetido diversas vezes. Marque a alternativa que contenha todas essas estruturas. FOR, WHILE e DO WHILE IF e SWITCH CASE SWITCH CASE e IF/ELSE WHILE, DO WHILE e SWITCH CASE IF/ELSE e FOR Analise o código a seguir e marque a alternativa que exprime o que esse trecho de código executa: #include < stdio.h> //Retire o espaço depois de < quando for compilar int main() { int x, i; printf("Entre com numero: "); scanf("%d", &x); for(i=1; i<1 + x/2; i++) { if(x%i==0 && i%2==0) printf("Divisores: %d\n", i); } if(x%2==0)printf( "Divisores: %d\n", x); return 0; } O código mostra os todos os divisores de um número. O código mostra os todos os divisores pares de um número. O código mostra os números divisíveis por 2. O código mostra os todos os divisores ímpares de um número. O código mostra os números divisíveis por 3. Explicação: O aluno deve compreender que estão sendo testados como divisor todos os números menores que a metade do número introduzido pelo usuário, e caso o número testado tenha divisão exata e seja par será mostrado. Assim como o próprio número quando este for par, já que todo número é divisível por ele mesmo. 2. João foi realizar uma prova que tinha uma questão com o trecho abaixo. Assinale a opção que esclarece, ou não, o que será exibido int num, c, s = 0; puts("Numero: "); scanf("%d", &num); for(c=1; c < num; c++) if(num % c == 0) s+=c; printf("\nO que exibe? %d\n", s); Dá erro na compilação porque a estrutura do for e a estrutura do if estão sem as { } Exibe todos os divisores. Exibe A soma de todos os divisores. Exibe A soma de todos os divisores exceto ele mesmo Exibe 0 porque não está testando se tem divisor. Explicação: O programa de divisores foi estudado na AULA 5 e a única diferença está na ausência do sinal de igual 3. Complete o trecho de código abaixo com a expressão condicional adequada para o comando de repetição exibir a mensagem "Boa Noite" 100 vezes. i = 0; while ( ) { cout << "Boa Noite" << endl; i = i + 1; } i < 100 i >= 100 i != 100 i <= 100 i == 100 4. Considere o trecho de código em C a seguir e selecione a opção que indica corretamente o que será exibido ao término da execução. int x=1; int y=5; for (int i = y; i >0 ;i--) x = x * i; printf("x=%d",x); x = x 5 x= 5 x = 120 120 Explicação: Sendo o código: int x=1; int y=5; for (int i = y; i >0 ;i--) x = x * i; printf("x=%d",x); As instruções abaixo inicializam as variáveis: int x=1; int y=5; E acada iteração do laço de iteraçao será realizada a instrução: x = x * i; Na primeira iteração temos: x=1*5 =5 Na segunda iteração temos: x=5*4 =20 Na terceira iteração temos: x=20*3 =60 Na quarta iteração temos: x=60*2 =120 Na quinta e ultima iteração temos: x=120*1 =120 5. Qual a estrutura de repetição usada para quantidade indeterminada de repetições? if-else while struct for switch Explicação: A linguagem C tem três estruturas de repetição: for, while e do...while. Tem em vista o exposto acima, eliminamos: if-else, switch e struct. Sendo assim, sobram for e while. Estudamos que todas podem simular todas, mas não significa que seja a melhor solução. A estrutura do for em sua sintaxe básica necessita, quando for executada, que o número de repetições seja conhecido enquantoque as duas outras deverão ser escolhidas quando o número de repetições não for conhecido. A resposta correta é while. Gabarito Coment. Gabarito Coment. 6. Um aluno estava fazendo experiências com a estrutura do for e precisava repetir a frase, 10 vezes: Estudar para Prova no final de semana! Sendo assim, construiu vários trechos. Observe as tentativas que ele fez abaixo e assinale a opção correta. I for(x = 2; x <= 20; x++ ) II for(x = 3; x <= 30; x = x + 3 ) III for(x = 0; x <= 10; x = x + 1 ) IV for(x = 2; x <= 11; x++ ) As afirmativas II , III e IV permitem a repetição 10 vezes Todas, exceto as afirmativas I e a IV, permitem a repetição 10 vezes As afirmativas II e III permitem a repetição 10 vezes As afirmativas II e IV permitem a repetição 10 vezes Somente a afirmativa II permite a repetição 10 vezes Explicação: Na aula tem exemplos e o aluno só precisar saber quanto números fazem parte da sequência(PA). 7. Qual será a saída do programa abaixo? int main() { int i=0; do { i++; cout << i << endl; } while (i < 2); } 1 2 2 0 1 0 1 2 1 2 8. Considere o trecho de código abaixo. O que será impresso quando o programa for executado? int main() { int contador = 1; //declarando e inicializando a variável de controle while (contador <= 10) // Testando a condição { printf("%d ", contador); //Executando um comando dentro do laço } return 0; } 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 10 Nunca vai parar. 1 2 3 4 5 6 7 8 9 10 11 12 13 14... Nunca vai parar. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... 1 2 3 4 5 6 7 8 9 10 Explicação: A estrutura while repete o bloco enquanto o teste for verdadeiro. Se a variável contador começa com 1 e NÃO tem ser valor alterado, ficará sempre com 1 logo, entra em loop Resposta correta: Nunca vai parar. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... Muitas séries matemáticas podem ser geradas pela estrutura do for. Analise o código abaixo e escolha a opção que contém a série exibida pelo código. 0 1 1 2 3 5 8 13 21 0 1 1 2 3 4 5 6 1 3 4 7 9 11 13 0 1 1 3 2 4 5 7 1 1 2 3 5 8 13 21 Explicação: 1a iteração: atu=1 ant=0 imprime: 1 prox=0+1=1 ant=1 atu=1 2a iteração: atu=1 ant=1 imprime: 1 prox=1+1=2 ant=1 atu=2 3a iteração: atu=2 ant=1 imprime: 2 prox=2+1=3 ant=2 atu=3 4a iteração: atu=3 ant=2 imprime: 3 prox=3+2=5 ant=3 atu=5 5a iteração: atu=5 ant=3 imprime: 5 prox=5+3=8 ant=5 atu=8 6a iteração: atu=8 ant=5 imprime: 8 prox=8+5=13 ant=8 atu=13 7a iteração: atu=13 ant=8 imprime: 13 prox=13+8=21 ant=8 atu=21 8a iteração: atu=21 ant=13 imprime: 21 Gabarito Coment. 2. Qual dos comandos abaixo permite que um bloco de comandos seja executado enquanto a variável num seja diferente de 0? for ( i = 0; i == num; i++) for (i = num; i > 0; i++) while (num == 0) enquanto (num > 0) while (num != 0) Explicação: As estruturas de repetição podem testar a condição antes de executar o bloco (for e while) ou executar pelo menos uma vez(do...while) porque testa ao final. Conhecer os operadores relacionais e lógicos será fundamental para criarmos a expressão do teste. A frase enquanto a variável num seja diferente de 0 já nos dá a resposta: while(num != 0). Gabarito Coment. 3. Um programa que contém a linha de comando abaixo: int soma, i = 0; while ( i < 50000) { if ( i % 7 == 0) { soma = soma + i; } i++ ; Qual será a saída: Soma dos números inteiros menores que 50000. Soma dos números inteiros menores que 50000 divido por 7. Soma dos números inteiros menores que 50000 divisíveis por 7. Soma dos números inteiros menores que 50000 com resto 7. Soma dos números inteiros menores que 50000 ímpares. 4. Sabendo que no programa abaixo foi digitado na sequencia os números 4 e 10. Marque a alternativa que contém a saída gerada pelo programa para a entrada fornecida. #include using namespace std; int main() { int a, b; cin >> a >> b; a = a + 1; while ( a < b ) { cout << " " << a; a = a + 1; } } 5 6 7 8 9 4 5 6 7 8 9 10 11 5 6 7 8 9 10 4 5 6 7 8 9 5 6 7 8 9 10 11 5. João foi realizar uma prova que tinha uma questão com o trecho abaixo e pedia para assinalar a opção que mostrava quantas vezes seria exibida a mensagem BOM. Se fosse você, qual escolheria? int y; for(y=2; y <= 16; y+= 2) puts( "BOM" ); 10 vezes 9 vezes 15 vezes 8 vezes 16 vezes Explicação: O aluno precisa ter entendido que a estrutura do for usa uma PA ou PG 6. Os loops são utilizados para executar um conjunto de instruções várias vezes baseando-se sempre em uma condição que decidirá se continua repetindo ou não. Qual estrutura de repetição abaixo, garante que o bloco de instruções seja executado no mínimo uma vez? while switch for do...while repeat...util Explicação: A linguagem C apresenta três estruturas de repetição: for e while testam no início, significando que podem não executar nem uma vez. A estrutura do...while testa ao final ao bloco logo, executa pelo menos uma vez. Gabarito Coment. Gabarito Coment. 7. Dado o programa abaixo, informe o que vai ser impresso após execução. 34 13 21 55 89 8. Um programa de cadastro deve solicitar cpf,nome e telefone de alunos até que o cpf seja igual a 0. Que estrutura em C melhor representa esta tarefa? do{ // [bloco de comandos] } while (cfp !=0); for (cpf=0; cpf !=0; cpf++) { // [bloco de comandos] } do while (cfp !=0) { // [bloco de comandos] } if (cpf != 0) { // [bloco de comandos] } while{ // [bloco de comandos] } do (cfp !=0); Explicação: A linguagem C disponibiliza três estruturas de repetição: for, while e do ... while logo, descartaremos a resposta com if: if (cpf != 0){ // [bloco de comandos] } Estudamos que a estrutura do...while testa somente Ao Final. Sendo assim descartaremos: do while (cfp !=0){ // [bloco de comandos] } Estudamos que a estrutura while testa no Início e não tem do. Sendo assim descartaremos: while{ // [bloco de comandos] } do (cfp !=0); A linha que usa a estrutura do for usa a variável que receberia o CPF como o um contador. Após a análise acima, identificamos a resposta correta: do{ // [bloco de comandos] } while (cfp !=0); Analise o código a seguir e marque a alternativa que exprime o que esse trecho de código executa: #include < stdio.h>//Retire o espaço depois de < quando for compilar int main() { int x, i; printf("Entre com numero: "); scanf("%d", &x); for(i=1; i<1 + x/2; i++) { if(x%i==0) printf("Divisores: %d\n", i); } printf( "Divisores: %d\n", x); return 0; } O código mostra os todos divisores ímpares de um número. O código mostra os números divisíveis por 2. O código mostra os todos divisores pares de um número. O código mostra os números divisíveis por 3. O código mostra os todos os divisores de um número. Explicação: O aluno deve compreender que estão sendo testados como divisor todos os números menores que a metade do número introduzido pelo usuário, e caso o número testado tenha divisão exataesse será mostrado. Assim como o próprio número, já que todo número é divisível por ele mesmo. 2. Na maioria das linguagens de programação, as estruturas de controle de fluxo são fundamentais para a criação de programas elegantes e de fácil entendimento. Assinale a alternativa correta com relação aos comandos de controle de fluxo da linguagem C, sabendo que o comando for apresenta a seguinte forma geral: for (inicialização;condição;incremento) declaração; O comando for garante que o laço seja executado pelo menos uma vez. Pode-se omitir a declaração, e, mesmo assim, o comando for ainda será válido. O comando continue usado dentro de um laço executa a próxima linha de código independentemente do fato de ela estar dentro ou fora do laço. Não é permitido omitir a condição no comando for, pois não existiria maneira de parar o laço infinito. Sem os comandos de controle de fluxo, só haveria uma maneira de o programa ser executado: de baixo para cima e comando por comando. 3. Analise o código a seguir e marque a alternativa que exprime o que esse trecho de código executa, caso o usuário introduza um número positivo maior que zero: #include < stdio.h> //Retire o espaço depois de < quando for compilar int main() { int x, i=1; printf("Entre com numero: "); scanf("%d", &x); while(i<=x) { if(i%2==0) printf("%d\n", i); i++; } return 0; } O código mostra os todos os números pares menores ou igual a x. O código mostra os números divisíveis por 3. O código mostra os todos os números ímpares menores ou igual a x. O código mostra os números divisíveis por 2. O código mostra os todos os divisores ímpares de um número. Explicação: O aluno deve compreender que estão sendo testados os números menores que o número introduzido pelo usuário, e caso o número testado tenha seja par será mostrado. Assim como o próprio número quando este for par. 4. João foi realizar uma prova que tinha uma questão com o trecho abaixo e pedia para assinalar a opção que mostrava quantas vezes seria exibida a mensagem Tenho que estudar. Se fosse você, qual escolheria? int y; for(y=5; y>=25; y+=5); puts("\nTenho que estudar"); 6 vezes 5 vezes Nenhuma vez 1 vez 19 vezes Explicação: O aluno precisa ter entendido que a estrutura do for usa uma PA ou PG 5. João foi realizar uma prova que tinha uma questão com o trecho abaixo e pedia para assinalar a opção que explicava a finalidade da estrutura while nele. int num; puts("\nNumero de ... algarismos:"); scanf("%d", &num); while (num < 100 || num > 999) { puts("\nNumero FORA do Intervalo"); puts("\nNumero de ... algarismos:"); scanf("%d", &num); } Trecho de Proteção para evitar que o usuário digite número menor do que 100 ou maior do que 999. Trecho de Proteção para evitar que o usuário digite número no intervalo de 100 a 999. Trecho que deixa entrar com vários números enquanto o usuário digitar números no intervalo de 100 até 999. Trecho de Proteção para evitar que o usuário digite número menor do que 100 e maior do que 999. Nenhuma finalidade tem esse trecho Explicação: O conceito de trecho de proteção é fundamental na programação para evitar que valores indesejáveis sejam aceitos. 6. 1. Sabendo-se que um usuário entrou com o primeiro número (num1) igual a 10 e o segundo (num2) número igual a 20, analise o trecho do código apresentado na figura 1 e marque a resposta que confere exatamente com a saída esperada pelo código. Figura 1 7. Analise o código a seguir e marque a alternativa que exprime o que esse trecho de código executa: #include < stdio.h> //Retire o espaço depois de < quando for compilar int main() { int x, i; printf("Entre com numero: "); scanf("%d", &x); for(i=1; i<1 + x/2; i++) { if(x%i==0 && i%2!=0) printf("Divisores: %d\n", i); } if(x%2!=0)printf( "Divisores: %d\n", x); return 0; } O código mostra os todos os divisores pares de um número. O código mostra os todos os divisores de um número. O código mostra os números divisíveis por 3. O código mostra os todos os divisores ímpares de um número. O código mostra os números divisíveis por 2. Explicação: O aluno deve compreender que estão sendo testados como divisor todos os números menores que a metade do número introduzido pelo usuário, e caso o número testado tenha divisão exata e seja ímpar será mostrado. Assim como o próprio número quando este for ímpar, já que todo número é divisível por ele mesmo. 8. Quando tomamos conhecimento das três estruturas de repetição, ficamos sem saber, em alguns trechos, o que elas fazem. Observe o trecho abaixo e assinale a opção que esclarece o que está sendo feito. float num; for(;;) { puts("\nNumero: "); scanf("%f", &num); if(num <= 0 ) break; printf("\n%.2f", num *3); } Simula a estrutura while, enquanto num for > 0. Simula a estrutura do ... while, enquanto num for > 0. Simula a estrutura while, enquanto num for <= 0 Nada porque tem erro na linha do for. Simula a estrutura do ... while, enquanto num for <= 0 Explicação: Simular outra estrutura de repetição foi bem explorada na AULA 5 Analise o código a seguir e marque a alternativa que exprime o que esse trecho de código executa, caso o usuário introduza um número positivo maior que zero: #include < stdio.h> //Retire o espaço depois de < quando for compilar int main() { int x, i=1; printf("Entre com numero: "); scanf("%d", &x); while(i<=x) { if(i%2!=0) printf("%d\n", i); i++; } return 0; } O código mostra os números divisíveis por 3. O código mostra os todos os números pares menores ou igual a x. O código mostra os todos os números ímpares menores ou igual a x. O código mostra os números divisíveis por 2. O código mostra os todos os divisores ímpares de um número. Explicação: O aluno deve compreender que estão sendo testados os números menores que o número introduzido pelo usuário, e caso o número testado tenha seja ímpar será mostrado. Assim como o próprio número quando este for ímpar. 2. Todo laço de repetição dever possuir um critério de parada para que o mesmo não fique executando indefinidamente. Analise o código a seguir e marque a opção que representa um critério de parada a ser introduzido no código, no bloco while, a fim que o código em execução mostre todos os números pares diferente de zero e inferiores ao valor introduzido pelo usuário a variável x. #include < stdio.h> //Retire o espaço depois de < quando for compilar int main() { int x, i=1; printf("Entre com numero: "); scanf("%d", &x); while(i<=x) { if(i%2==0) printf("%d\n", i); } return 0; } x--; i--; i++; x++; i+x; Explicação: A fim de garantir que o programa execute apenas enquanto que a variável i seja menor que o valor armazenado em x. Temos que incrementar a variável i a cada iteração do laço. Assim fazemos i++ 3. Muitas séries matemáticas podem ser geradas pela estrutura do for. Analise o código abaixo, supondo que você digitou 2 e 4 quando lhe foram solicitados dois números e escolha a opção que contém a série exibida pelo código. 2 4 6 8 19 12 14 16 2 4 6 10 16 26 42 2 4 4 8 12 20 32 2 4 6 10 16 26 42 68 2 4 48 12 20 32 52 Gabarito Coment. Gabarito Coment. 4. O programa abaixo terá qual saída? int main() { int j = 2; for ( int i = 1 ; i < = 3 ; i++ ) { cout << i * j << endl; } } 1 * 2 2 * 2 2 * 3 2, 4, 6 12 1 * 2 = 2 2 * 2 = 4 3 * 2 = 6 2 4 6 5. int main() { int contador = 1; while (contador < 10) { printf("%d ", contador); contador++; } return 0; } 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 10 11 6. Considere o trecho de código abaixo. O que será impresso quando o programa for executado? int main() { int contador = 10; while (contador > 1) { printf("%d ", contador); contador--; } return 0; } Nunca vai parar. 1 1 1 1 1 1 1 1 1 1 1 1 ... Nunca vai parar. 10 10 10 10 10 10 10 10... 10 9 8 7 6 5 4 3 2 1 10 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 Explicação: A estrutura while repete o bloco enquanto o teste for verdadeiro. Se a variável contador começa com 10 e exibe o valor do contador enquanto ele for maior do que, significa que quando ele for decrementado e chegar a 1, interromperá a repetição; Resposta correta: 10 9 8 7 6 5 4 3 2 7. A programação oferece diversas estruturas de forma a facilitar a programação quanto a sua organização. Alguns dessas estruturas evitam que determinada parte do código tenha de ser repetido diversas vezes. Marque a alternativa que contenha todas essas estruturas. SWITCH CASE e IF/ELSE WHILE, DO WHILE e SWITCH CASE IF e SWITCH CASE FOR, WHILE e DO WHILE IF/ELSE e FOR 8. Analise o trecho de código abaixo e determine qual a saída gerada: int i, A = 0, B = 1 ; for (i = 1; i < 5; i++) { A = B; B = i + B * A; } cout << " A = " << A << " B = " << B; A = 6 B = 39 A = 8 B = 67 A = 67 b = 4757 A = 0 B = 1 A = 39 B = 1525 Considere o trecho de código abaixo. O que será impresso quando o programa for executado? int main() { int contador = 1; //declarando e inicializando a variável de controle while (contador < 10) // Testando a condição { printf("%d ", contador); //Executando um comando dentro do laço contador++; //atualizando a variável de controle } return 0; } 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 10 11 Respondido em 20/05/2020 22:39:36 10a Questão Acerto: 0,0 / 1,0 Analise os códigos descritos nas alternativas de 'A' até 'E' e marque qual o código que fornece exatamente a saída descrita a seguir: Ano valor na conta 0 1000.00 1 1050.00 2 1102.50 3 1157.63 4 1215.51 5 1276.28 e- printf("Ano\t valor na conta\n"); for(i=0;i<=5;i++) { vf=vp*pow(1+0.05,i); printf("%d %5.2f \n",i,vf); } a- printf("Ano\t valor na conta\n"); for(i==1;i<=5;i++) { vf=vp*pow(1+0.05,i); printf("%d \t %5.2f \n",i,vf); } d- printf("Ano\t valor na conta\n"); for(i=0;i<5;i++) { vf=vp*pow(1+0.05,i); printf("%d %5.2f \n",i,vf); } b- printf("Ano\t valor na conta\n"); for(i=1;i>5;i++) { vf=vp*pow(1+0.05,i); printf("%d %5.2f \n",i,vf); } c- printf("Ano\t valor na conta\n"); for(i=0;i==5;i++) { vf=vp*pow(1+0.05,i); printf("%d \t %5.2f \n",i,vf); } João foi realizar uma prova que tinha uma questão com o trecho abaixo. Assinale a opção que esclarece, ou não, o que será exibido int num, c, s = 0; puts("Numero: "); scanf("%d", &num); for(c=1; c < num; c++) if(num % c == 0) s+=c; printf("\nO que exibe? %d\n", s); Exibe todos os divisores. Dá erro na compilação porque a estrutura do for e a estrutura do if estão sem as { } Exibe A soma de todos os divisores. Exibe A soma de todos os divisores exceto ele mesmo Exibe 0 porque não está testando se tem divisor. Explicação: O programa de divisores foi estudado na AULA 5 e a única diferença está na ausência do sinal de igual 2. Complete o trecho de código abaixo com a expressão condicional adequada para o comando de repetição exibir a mensagem "Boa Noite" 100 vezes. i = 0; while ( ) { cout << "Boa Noite" << endl; i = i + 1; } i != 100 i == 100 i <= 100 i >= 100 i < 100 3. Analise o código a seguir e marque a alternativa que exprime o que esse trecho de código executa: #include < stdio.h> //Retire o espaço depois de < quando for compilar int main() { int x, i; printf("Entre com numero: "); scanf("%d", &x); for(i=1; i<1 + x/2; i++) { if(x%i==0 && i%2==0) printf("Divisores: %d\n", i); } if(x%2==0)printf( "Divisores: %d\n", x); return 0; } O código mostra os números divisíveis por 2. O código mostra os todos os divisores pares de um número. O código mostra os todos os divisores de um número. O código mostra os todos os divisores ímpares de um número. O código mostra os números divisíveis por 3. Explicação: O aluno deve compreender que estão sendo testados como divisor todos os números menores que a metade do número introduzido pelo usuário, e caso o número testado tenha divisão exata e seja par será mostrado. Assim como o próprio número quando este for par, já que todo número é divisível por ele mesmo. 4. Considere o trecho de código em C a seguir e selecione a opção que indica corretamente o que será exibido ao término da execução. int x=1; int y=5; for (int i = y; i >0 ;i--) x = x * i; printf("x=%d",x); x = 120 5 x = x 120 x= 5 Explicação: Sendo o código: int x=1; int y=5; for (int i = y; i >0 ;i--) x = x * i; printf("x=%d",x); As instruções abaixo inicializam as variáveis: int x=1; int y=5; E acada iteração do laço de iteraçao será realizada a instrução: x = x * i; Na primeira iteração temos: x=1*5 =5 Na segunda iteração temos: x=5*4 =20 Na terceira iteração temos: x=20*3 =60 Na quarta iteração temos: x=60*2 =120 Na quinta e ultima iteração temos: x=120*1 =120 5. Qual a estrutura de repetição usada para quantidade indeterminada de repetições? while if-else for struct switch Explicação: A linguagem C tem três estruturas de repetição: for, while e do...while. Tem em vista o exposto acima, eliminamos: if-else, switch e struct. Sendo assim, sobram for e while. Estudamos que todas podem simular todas, mas não significa que seja a melhor solução. A estrutura do for em sua sintaxe básica necessita, quando for executada, que o número de repetições seja conhecido enquanto que as duas outras deverão ser escolhidas quando o número de repetições não for conhecido. A resposta correta é while. Gabarito Coment. Gabarito Coment. 6. Um aluno estava fazendo experiências com a estrutura do for e precisava repetir a frase, 10 vezes: Estudar para Prova no final de semana! Sendo assim, construiu vários trechos. Observe as tentativas que ele fez abaixo e assinale a opção correta. I for(x = 2; x <= 20; x++ ) II for(x = 3; x <= 30; x = x + 3 ) III for(x = 0; x <= 10; x = x + 1 ) IV for(x = 2; x <= 11; x++ ) As afirmativas II e IV permitem a repetição 10 vezes As afirmativas II e III permitem a repetição 10 vezes Todas, exceto as afirmativas I e a IV, permitem a repetição 10 vezes As afirmativas II , III e IV permitem a repetição 10 vezes Somente a afirmativa II permite a repetição 10 vezes Explicação: Na aula tem exemplose o aluno só precisar saber quanto números fazem parte da sequência(PA). 7. Qual será a saída do programa abaixo? int main() { int i=0; do { i++; cout << i << endl; } while (i < 2); } 0 1 2 0 1 2 1 2 1 2 8. Considere o trecho de código abaixo. O que será impresso quando o programa for executado? int main() { int contador = 1; //declarando e inicializando a variável de controle while (contador <= 10) // Testando a condição { printf("%d ", contador); //Executando um comando dentro do laço } return 0; } 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 Nunca vai parar. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... Nunca vai parar. 1 2 3 4 5 6 7 8 9 10 11 12 13 14... 0 1 2 3 4 5 6 7 8 9 10 Um programa que contém a linha de comando abaixo: int soma, i = 0; while ( i < 50000) { if ( i % 7 == 0) { soma = soma + i; } i++ ; Qual será a saída: Soma dos números inteiros menores que 50000 ímpares. Soma dos números inteiros menores que 50000 com resto 7. Soma dos números inteiros menores que 50000 divisíveis por 7. Soma dos números inteiros menores que 50000. Soma dos números inteiros menores que 50000 divido por 7. 2. Dado o programa abaixo, informe o que vai ser impresso após execução. 13 34 89 21 55 3. João foi realizar uma prova que tinha uma questão com o trecho abaixo e pedia para assinalar a opção que mostrava quantas vezes seria exibida a mensagem BOM. Se fosse você, qual escolheria? int y; for(y=2; y <= 16; y+= 2) puts( "BOM" ); 15 vezes 10 vezes 8 vezes 9 vezes 16 vezes Explicação: O aluno precisa ter entendido que a estrutura do for usa uma PA ou PG 4. Os loops são utilizados para executar um conjunto de instruções várias vezes baseando-se sempre em uma condição que decidirá se continua repetindo ou não. Qual estrutura de repetição abaixo, garante que o bloco de instruções seja executado no mínimo uma vez? switch do...while for while repeat...util Explicação: A linguagem C apresenta três estruturas de repetição: for e while testam no início, significando que podem não executar nem uma vez. A estrutura do...while testa ao final ao bloco logo, executa pelo menos uma vez. Gabarito Coment. Gabarito Coment. 5. Muitas séries matemáticas podem ser geradas pela estrutura do for. Analise o código abaixo e escolha a opção que contém a série exibida pelo código. 0 1 1 3 2 4 5 7 0 1 1 2 3 5 8 13 21 0 1 1 2 3 4 5 6 1 1 2 3 5 8 13 21 1 3 4 7 9 11 13 Explicação: 1a iteração: atu=1 ant=0 imprime: 1 prox=0+1=1 ant=1 atu=1 2a iteração: atu=1 ant=1 imprime: 1 prox=1+1=2 ant=1 atu=2 3a iteração: atu=2 ant=1 imprime: 2 prox=2+1=3 ant=2 atu=3 4a iteração: atu=3 ant=2 imprime: 3 prox=3+2=5 ant=3 atu=5 5a iteração: atu=5 ant=3 imprime: 5 prox=5+3=8 ant=5 atu=8 6a iteração: atu=8 ant=5 imprime: 8 prox=8+5=13 ant=8 atu=13 7a iteração: atu=13 ant=8 imprime: 13 prox=13+8=21 ant=8 atu=21 8a iteração: atu=21 ant=13 imprime: 21 Gabarito Coment. 6. Qual dos comandos abaixo permite que um bloco de comandos seja executado enquanto a variável num seja diferente de 0? enquanto (num > 0) while (num == 0) for ( i = 0; i == num; i++) while (num != 0) for (i = num; i > 0; i++) Explicação: As estruturas de repetição podem testar a condição antes de executar o bloco (for e while) ou executar pelo menos uma vez(do...while) porque testa ao final. Conhecer os operadores relacionais e lógicos será fundamental para criarmos a expressão do teste. A frase enquanto a variável num seja diferente de 0 já nos dá a resposta: while(num != 0). Gabarito Coment. 7. Um programa de cadastro deve solicitar cpf,nome e telefone de alunos até que o cpf seja igual a 0. Que estrutura em C melhor representa esta tarefa? if (cpf != 0) { // [bloco de comandos] } while{ // [bloco de comandos] } do (cfp !=0); do while (cfp !=0) { // [bloco de comandos] } do{ // [bloco de comandos] } while (cfp !=0); for (cpf=0; cpf !=0; cpf++) { // [bloco de comandos] } Explicação: A linguagem C disponibiliza três estruturas de repetição: for, while e do ... while logo, descartaremos a resposta com if: if (cpf != 0){ // [bloco de comandos] } Estudamos que a estrutura do...while testa somente Ao Final. Sendo assim descartaremos: do while (cfp !=0){ // [bloco de comandos] } Estudamos que a estrutura while testa no Início e não tem do. Sendo assim descartaremos: while{ // [bloco de comandos] } do (cfp !=0); A linha que usa a estrutura do for usa a variável que receberia o CPF como o um contador. Após a análise acima, identificamos a resposta correta: do{ // [bloco de comandos] } while (cfp !=0); 8. Sabendo que no programa abaixo foi digitado na sequencia os números 4 e 10. Marque a alternativa que contém a saída gerada pelo programa para a entrada fornecida. #include using namespace std; int main() { int a, b; cin >> a >> b; a = a + 1; while ( a < b ) { cout << " " << a; a = a + 1; } } 4 5 6 7 8 9 10 11 5 6 7 8 9 10 5 6 7 8 9 4 5 6 7 8 9 5 6 7 8 9 10 11 Analise o código a seguir e marque a alternativa que exprime o que esse trecho de código executa: #include < stdio.h>//Retire o espaço depois de < quando for compilar int main() { int x, i; printf("Entre com numero: "); scanf("%d", &x); for(i=1; i<1 + x/2; i++) { if(x%i==0) printf("Divisores: %d\n", i); } printf( "Divisores: %d\n", x); return 0; } O código mostra os todos divisores ímpares de um número. O código mostra os todos divisores pares de um número. O código mostra os todos os divisores de um número. O código mostra os números divisíveis por 3. O código mostra os números divisíveis por 2. Explicação: O aluno deve compreender que estão sendo testados como divisor todos os números menores que a metade do número introduzido pelo usuário, e caso o número testado tenha divisão exata esse será mostrado. Assim como o próprio número, já que todo número é divisível por ele mesmo. 2. Na maioria das linguagens de programação, as estruturas de controle de fluxo são fundamentais para a criação de programas elegantes e de fácil entendimento. Assinale a alternativa correta com relação aos comandos de controle de fluxo da linguagem C, sabendo que o comando for apresenta a seguinte forma geral: for (inicialização;condição;incremento) declaração; Pode-se omitir a declaração, e, mesmo assim, o comando for ainda será válido. O comando continue usado dentro de um laço executa a próxima linha de código independentemente do fato de ela estar dentro ou fora do laço. Não é permitido omitir a condição no comando for, pois não existiria maneira de parar o laço infinito. O comando for garante que o laço seja executado pelo menos uma vez. Sem os comandos de controle de fluxo, só haveria uma maneira de o programa ser executado: de baixo para cima e comando por comando. 3. Analise o código a seguir e marque a alternativa que exprime o que esse trecho de código executa, caso o usuário introduzaum número positivo maior que zero: #include < stdio.h> //Retire o espaço depois de < quando for compilar int main() { int x, i=1; printf("Entre com numero: "); scanf("%d", &x); while(i<=x) { if(i%2==0) printf("%d\n", i); i++; } return 0; } O código mostra os todos os divisores ímpares de um número. O código mostra os todos os números pares menores ou igual a x. O código mostra os todos os números ímpares menores ou igual a x. O código mostra os números divisíveis por 3. O código mostra os números divisíveis por 2. Explicação: O aluno deve compreender que estão sendo testados os números menores que o número introduzido pelo usuário, e caso o número testado tenha seja par será mostrado. Assim como o próprio número quando este for par. 4. João foi realizar uma prova que tinha uma questão com o trecho abaixo e pedia para assinalar a opção que mostrava quantas vezes seria exibida a mensagem Tenho que estudar. Se fosse você, qual escolheria? int y; for(y=5; y>=25; y+=5); puts("\nTenho que estudar"); 6 vezes 19 vezes Nenhuma vez 5 vezes 1 vez Explicação: O aluno precisa ter entendido que a estrutura do for usa uma PA ou PG 5. João foi realizar uma prova que tinha uma questão com o trecho abaixo e pedia para assinalar a opção que explicava a finalidade da estrutura while nele. int num; puts("\nNumero de ... algarismos:"); scanf("%d", &num); while (num < 100 || num > 999) { puts("\nNumero FORA do Intervalo"); puts("\nNumero de ... algarismos:"); scanf("%d", &num); } Trecho de Proteção para evitar que o usuário digite número no intervalo de 100 a 999. Trecho que deixa entrar com vários números enquanto o usuário digitar números no intervalo de 100 até 999. Trecho de Proteção para evitar que o usuário digite número menor do que 100 e maior do que 999. Trecho de Proteção para evitar que o usuário digite número menor do que 100 ou maior do que 999. Nenhuma finalidade tem esse trecho Explicação: O conceito de trecho de proteção é fundamental na programação para evitar que valores indesejáveis sejam aceitos. 6. 1. Sabendo-se que um usuário entrou com o primeiro número (num1) igual a 10 e o segundo (num2) número igual a 20, analise o trecho do código apresentado na figura 1 e marque a resposta que confere exatamente com a saída esperada pelo código. Figura 1 7. Analise o código a seguir e marque a alternativa que exprime o que esse trecho de código executa: #include < stdio.h> //Retire o espaço depois de < quando for compilar int main() { int x, i; printf("Entre com numero: "); scanf("%d", &x); for(i=1; i<1 + x/2; i++) { if(x%i==0 && i%2!=0) printf("Divisores: %d\n", i); } if(x%2!=0)printf( "Divisores: %d\n", x); return 0; } O código mostra os números divisíveis por 2. O código mostra os todos os divisores pares de um número. O código mostra os todos os divisores ímpares de um número. O código mostra os números divisíveis por 3. O código mostra os todos os divisores de um número. 8. Quando tomamos conhecimento das três estruturas de repetição, ficamos sem saber, em alguns trechos, o que elas fazem. Observe o trecho abaixo e assinale a opção que esclarece o que está sendo feito. float num; for(;;) { puts("\nNumero: "); scanf("%f", &num); if(num <= 0 ) break; printf("\n%.2f", num *3); } Simula a estrutura do ... while, enquanto num for <= 0 Simula a estrutura while, enquanto num for <= 0 Simula a estrutura do ... while, enquanto num for > 0. Simula a estrutura while, enquanto num for > 0. Nada porque tem erro na linha do for. Explicação: Simular outra estrutura de repetição foi bem explorada na AULA 5 Analise o código a seguir e marque a alternativa que exprime o que esse trecho de código executa: #include < stdio.h> //Retire o espaço depois de < quando for compilar int main() { int x, i; printf("Entre com numero: "); scanf("%d", &x); for(i=1; i<1 + x/2; i++) { if(x%i==0 && i%2!=0) printf("Divisores: %d\n", i); } if(x%2!=0)printf( "Divisores: %d\n", x); return 0; } O código mostra os números divisíveis por 2. O código mostra os todos os divisores pares de um número. O código mostra os todos os divisores ímpares de um número. O código mostra os números divisíveis por 3. O código mostra os todos os divisores de um número. A programação oferece diversas estruturas de forma a facilitar a programação quanto a sua organização. Alguns dessas estruturas evitam que determinada parte do código tenha de ser repetido diversas vezes. Marque a alternativa que contenha todas essas estruturas. FOR, WHILE e DO WHILE IF e SWITCH CASE WHILE, DO WHILE e SWITCH CASE SWITCH CASE e IF/ELSE IF/ELSE e FOR 2. Analise o trecho de código abaixo e determine qual a saída gerada: int i, A = 0, B = 1 ; for (i = 1; i < 5; i++) { A = B; B = i + B * A; } cout << " A = " << A << " B = " << B; A = 39 B = 1525 A = 8 B = 67 A = 0 B = 1 A = 67 b = 4757 A = 6 B = 39 3. Muitas séries matemáticas podem ser geradas pela estrutura do for. Analise o código abaixo, supondo que você digitou 2 e 4 quando lhe foram solicitados dois números e escolha a opção que contém a série exibida pelo código. 2 4 4 8 12 20 32 52 2 4 6 10 16 26 42 2 4 6 8 19 12 14 16 2 4 4 8 12 20 32 2 4 6 10 16 26 42 68 Gabarito Coment. Gabarito Coment. 4. Analise o código a seguir e marque a alternativa que exprime o que esse trecho de código executa, caso o usuário introduza um número positivo maior que zero: #include < stdio.h> //Retire o espaço depois de < quando for compilar int main() { int x, i=1; printf("Entre com numero: "); scanf("%d", &x); while(i<=x) { if(i%2!=0) printf("%d\n", i); i++; } return 0; } O código mostra os números divisíveis por 2. O código mostra os números divisíveis por 3. O código mostra os todos os números pares menores ou igual a x. O código mostra os todos os números ímpares menores ou igual a x. O código mostra os todos os divisores ímpares de um número. Explicação: O aluno deve compreender que estão sendo testados os números menores que o número introduzido pelo usuário, e caso o número testado tenha seja ímpar será mostrado. Assim como o próprio número quando este for ímpar. 5. O programa abaixo terá qual saída? int main() { int j = 2; for ( int i = 1 ; i < = 3 ; i++ ) { cout << i * j << endl; } } 2 4 6 12 1 * 2 = 2 2 * 2 = 4 3 * 2 = 6 2, 4, 6 1 * 2 2 * 2 2 * 3 6. Considere o trecho de código abaixo. O que será impresso quando o programa for executado? int main() { int contador = 10; while (contador > 1) { printf("%d ", contador); contador--; } return 0; } Nunca vai parar. 10 10 10 10 10 10 10 10... 10 9 8 7 6 5 4 3 2 1 10 9 8 7 6 5 4 3 2 Nunca vai parar. 1 1 1 1 1 1 1 1 1 1 1 1 ... 1 2 3 4 5 6 7 8 9 Explicação: A estrutura while repete o bloco enquanto o teste for verdadeiro. Se a variável contadorcomeça com 10 e exibe o valor do contador enquanto ele for maior do que, significa que quando ele for decrementado e chegar a 1, interromperá a repetição; Resposta correta: 10 9 8 7 6 5 4 3 2 7. int main() { int contador = 1; while (contador < 10) { printf("%d ", contador); contador++; } return 0; } 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 11 8. Todo laço de repetição dever possuir um critério de parada para que o mesmo não fique executando indefinidamente. Analise o código a seguir e marque a opção que representa um critério de parada a ser introduzido no código, no bloco while, a fim que o código em execução mostre todos os números pares diferente de zero e inferiores ao valor introduzido pelo usuário a variável x. #include < stdio.h> //Retire o espaço depois de < quando for compilar int main() { int x, i=1; printf("Entre com numero: "); scanf("%d", &x); while(i<=x) { if(i%2==0) printf("%d\n", i); } return 0; } i+x; i--; x++; i++; x--; Explicação: A fim de garantir que o programa execute apenas enquanto que a variável i seja menor que o valor armazenado em x. Temos que incrementar a variável i a cada iteração do laço. Assim fazemos i++ Suponha que as notas digitadas pelo usuário sejam respectivamente (4.5; 8.5; 6.5). int main() { float n1, n2, n3, med; puts("Digites as notas"); scanf("%f", &n1); scanf("%f", &n2); scanf("%f", &n3); med= (n1+n2+n3)/3; if(med>=7) printf("Aluno aprovado com: %.1f\n", med); else printf("Aluno reprovado com: %.1f\n", med); system("pause"); return 0; } Desconsidere a necessidade da declaração das bibliotecas. Qual será a mensagem final exibida para o usuário? Aluno aprovado com: 6.5 Aluno aprovado com: 6.00 Aluno aprovado com: 6.0 Aluno reprovado com: 6.50 Aluno reprovado com: 6.5 Gabarito Coment. Gabarito Coment. 2. Observe o trecho abaixo. Supondo que você digitou 8 na entrada de dados, o que será exibido? int num; puts("\nDigite número inteiro\n"); scanf("%d", &num); if( num = 5 ) printf(" \nMuito interessante\n" ); printf(" \nDificil"); Dá erro de sintaxe porque faltam as chaves. Desce o cursor e exibe Muito interessante. Desce o cursor e exibe Dificil. Desce o cursor e exibe Dificil. .Desce o cursor e só exibe Muito interessante. Dá erro porque só tem um sinal de igual no teste. Explicação: Muita atenção para o comando de atribuição dentro do teste, uma vez que só tem um =. Sendo assim, qualquer valor digitado será substituído por 5 e o teste será verdadeiro porque a UAL retorna um se o valor for diferente de 0 nesse caso. 3. Uma empresa que presta serviços de pintura predial, desenvolveu um aplicativo destinado a calcular o número de latas necessárias para pintar uma parede. O programa lê o tipo de pintura(interna ou externa), a largura e a altura em metros(inteiros) da parede. Para calcular a quantidade de tinta e o número de latas, sabe-se que são necessários 3 litros de tinta para pintar cada metro quadrado interno ou 4 litros para cada metro quadrado externo. Sabe-se também que cada lata tem 2 litros de tinta. Dado o trecho de programa abaixo, identifique a opção correta que complemente o programa para realizar o cálculo do número de latas de tinta: void main(){ float altura, largura; char tipo; int total_latas, tot_metros, aux; puts("\nDigite E para Externo e I para Interno"); tipo = getchar(); puts("\nDigite a altura da parede: "); scanf("%f",&altura); printf("\nDigite a largura da parede: "); scanf("%f",&largura); tot_metros = altura*largura; if(tot_metros%2) aux = 1; else aux = 0; switch(tipo){ case 'I': break; case 'i': break; printf("%d",(tot_metros*3)/2+aux); case 'E': break; case 'e': break; printf("%d",(tot_metros*4)/2+aux); default: printf("%s","Tipo invalido"); } system("PAUSE"); } if(tot_metros%2) aux = 1; else aux = 0; switch(tipo){ case 'I': case 'i': printf("%d",(tot_metros*3)/2+aux); case 'E': case 'e': printf("%d",(tot_metros*4)/2+aux); default: printf("%s","Tipo invalido"); } system("PAUSE"); } switch(tipo){ case 'I': case 'i': printf("%d",(tot_metros*3)/2+aux); break; case 'E': case 'e': printf("%d",(tot_metros*4)/2+aux); break; default: printf("%s","Tipo invalido"); } system("PAUSE"); } if(tot_metros%2) aux = 1; else aux = 0; switch(tipo){ case 'I': case 'i': printf("%d",(tot_metros*3)/2+aux); break; case 'E': case 'e': printf("%d",(tot_metros*4)/2+aux); break; default: printf("%s","Tipo invalido"); } system("PAUSE"); } if(tot_metros%2) aux = 1; else aux = 0; switch(tipo){ case 'I': break; case 'i': break; printf("%d",(tot_metros*3)/2+aux); break; case 'E': break; case 'e': break; printf("%d",(tot_metros*4)/2+aux); break; default: printf("%s","Tipo invalido"); } system("PAUSE"); } 4. Qual dos trechos de programa em C++ apresentados indica corretamente se um numero é par ou impar? cin >> numero; if (numero %2 = 1) cout << "par"; else cout <<"impar"; cin >> numero; if (numero / 2 == 0) cout << "par"; else cout <<"impar"; cin >> numero; cout << numero %2; cin >> numero; if (numero % 2 = 0) cout << "par"; else cout <<"impar"; cin >> numero; if (numero %2 == 0) cout << "par"; else cout <<"impar"; Explicação: cin >> numero; if (numero / 2 == 0) cout << "par"; else cout <<"impar"; Neste trecho a comparação verifica se o resultado da divisão por 2 é zero, por isso está errada.(numero / 2 == 0) cin >> numero; if (numero % 2 = 0) cout << "par"; else cout <<"impar"; Neste trecho não há comparação e sim a tentativa errada de se fazer uma atribuição (numero % 2 = 0) cin >> numero; if (numero %2 = 1) cout << "par"; else cout <<"impar"; Neste trecho não há comparação e sim a tentativa errada de se fazer uma atribuição (numero % 2 = 1) cin >> numero; cout << numero %2; Neste trecho de código é impresso o resto da divisão por 2 do valor armazenado na variável numero. E não é isto que se quer. 5. Em uma estrutura de decisão com if/else onde se deseja comparar vetores de char, pode-se usar: a função strcmp() operadores lógicos a função pow() operadores aritméticos operadores relacionais Explicação: Para se criar um teste que compare vetores de char só é possível com a função strcmp() da biblioteca string.h nunca pode-se usar os operadores relacionais. 6. Um desenvolvedor construiu um código onde estava presente o trecho abaixo. char resp; scanf("%c", &resp); switch(toupper(resp)) ; { case 'A': puts("Digitou a letra A" ); break; case 'E': puts("Digitou a letra E" ); break; case 'i': puts("Digitou a letra I" ); case 'O': puts("Digitou a letra O" ); case 'U': puts("Digitou a letra U" ); break; default: puts("Nao digitou vogal" ); } Analise as afirmativas abaixo e assinale a opção correta. I Se digitar I, aparece: Digitou a letra I / Digitou a letra O/ Digitou a letra U uma mensagem em cada linha. II Se digitar i, aparece: Nao digitou vogal. III Se digitar o, aparece:Digitou a letra O/ Digitou a letra U uma mensagem em cada linha. IV Se digitar a, aparece: Nao digitou vogal. V Se digitar A, aparece: Digitou a letra A. II, III e V são verdadeiras II e, IV são verdadeiras III e IV são verdadeiras Só a a III é verdadeira I, III e IV são verdadeiras Gabarito Coment. 7. Preencha as lacunas abaixo para que a mensagem abaixo seja exibida, caso a variável Idade seja maior ou igual a 18 e a variável Peso seja maior que 50. if((Idade_ _ _18)_ _ _(peso_ _ _50)) { printf("Você pode ser doador de Sangue"); } <>; and; >;>=; e; >; >=; &&; >; >=; &; >; >>; and; >; Explicação: Relendo a pergunta: Preencha as lacunas abaixo para que a mensagem abaixo seja exibida, caso a variável Idade seja maior ou igual a 18 e a variável Peso seja maior que 50. Preenchendo if((Idade >=18) && (peso > 50)) Gabarito Coment. Gabarito Coment. 8. Alguns iniciantes na linguagem C sentem dificuldades de usar a estrutura dos ifs encadeados. Sabemos que algumas afirmativas abaixo não produziriam um resultado errado, mas que tornaria o programa com menor qualidade, visto que testes seriam realizados sem necessidade. Então, leia com atenção e só escolha a afirmativa poderá ajudá-los a construir programas com qualidade, usando todos os recursos da estrutura if ... else if ..... Melhor seria substituir, sempre, os ifs encadeados pela estrutura do switch(). Posso substituir ifs encadeados por ifs simples sem prejuízo de qualidade. O número de ifs encadeados é igual ao número de respostas possíveis, não considerando a resposta errada do usuário, pois essa seria criticada no else. O número de ifs encadeados é igual ao número de respostas possíveis, considerando a resposta errada do usuário e não usaria else. Posso substituir por vários ifs simples e um if composto, ao final, para criticar a resposta errada do usuário. Em programação é possível que haja decisões usando o IF. Todo IF deve vir seguido de uma condição que deve ter como resultado Verdadeiro ou Falso. Considerando esta afirmativa, qual das opções abaixo deve apresentar erro na compilação. if (x <= 8) if (a != 6) if (z = 21) if (x > 7.2) if (y >= 14) Explicação: Errada: if (z = 21) O operador relacional de igualdade é == 2. A estrutura do if na linguagem C, como em toda linguagem, tem uma sintaxe. Observe as afirmações abaixo e escolha a opção ERRADA. I As chaves de abertura e fechamento, sempre, não são obrigatórias. II No teste unimos expressões relacionais com operadores lógicos quando necessário. III A palavra then está presente na estrutura. IV O uso do else poderá não ser necessário. I está errada. IV está correta e a I não está correta. II está correta e a III não está correta. II e IV estão corretas. I e III estão corretas. Explicação: Não existe then na linguagem C Somente estão corretas a II e IV. Como está pedindo a errada, teremos: I e III estão corretas como resposta. Gabarito Coment. Gabarito Coment. 3. Seja o código a seguir, caso o usuário insira o valor 3 na variável num, qual a mensagem aparecerá na tela? #include #include int main () { int num; printf ("Digite um numero: "); scanf ("%d",&num); if(num = 2) printf("O numero eh 2"); else printf("O numero eh diferente de 2"); return(0); } O numero eh 3 Nenhuma mensagem é exibida, pois há um erro no código. O numero eh diferente de 2 O numero eh diferente de 3 O numero eh 2 Explicação: Há um erro lógico neste código, pois a condição avaliada deveria ser num == 2, entretanto quando escrevemos num =2, é realizada uma atribuição do valor 2 na variável num, assim quando esta é avaliada como condição, será considerada sempre verdadeira, portanto para qualquer que seja o número digitado este código sempre executrá a linha de comando printf("O numero eh 2"); 4. Se a minha média for maior ou igual a 6 estarei aprovado, caso contrário, estarei reprovado. Qual dos trechos abaixo escritos em C++ representa esta situação? if (media != 6) { cout << "Aprovado"; } else { cout << "Reprovado"; } if (media > 6) cout << "Aprovado"; else cout << "Reprovado"; if (media > 6) { cout << "Aprovado"; } else { cout << "Reprovado"; } if (media >= 6) cout << "Aprovado"; else cout << "Reprovado"; if (media <= 6) cout << "Aprovado"; else cout << "Reprovado"; Explicação: if (media > 6) errado pois aprovado apenas aqueles que obtiverem media maior que 6 if (media <= 6)errado pois aprovado apenas aqueles que obtiverem media menor ou igual que 6 if (media != 6)errado pois aprovado apenas aqueles que obtiverem media diferente que 6 if (media >= 6)correto pois aprovado apenas aqueles que obtiverem media maior ou igual que 6 5. Um programa deve ler um valor inteiro. Caso o valor lido seja positivo deve imprimir a mensagem "Valor positivo". Assinale a opção que apresenta estrutura condicional CORRETA para a solução desse problema. if ( valor <= 0 ) if (valor < 0 ) if ( valor > 0 ) if ( valor != 0 ) if ( valor == 0 ) 6. Verifique o código a seguir e marque a alternativa que representa o que seria exibido na tela se o usuário atribuísse o valor 1 para a variável aux: int main(){ int aux; scanf("%d",&aux); switch(aux) { case 1 : printf("caso 1"); case 2 : printf("caso 2"); break; case 3 : printf("caso 3"); break; case 4 : printf("caso 4"); } caso 3 caso 2 caso 1 caso 2caso 3 caso 1caso 2 Explicação: A entrada no bloco switch se dará no case 1 já que o valor atribuído a vaiável aux é 1, porém como não há o comando break após a execução do comando printf("caso 1"), a execução do programa prossegue para o case 2. e é executado o comando printf("caso 2"), em seguida o comando break para a execução do bloco switch. Assim o que é exibido na tela é caso 1caso 2, já que não há nenhuma quebra de linha. 7. Qual é a saída de tela, deste trecho de programa? int x=4, y=8; if (x < 2) printf ("%d \n", x); else printf ("%d \n", y); \n4 8 9 12 \n8 Explicação: Neste trecho de código são declaradas duas variáveis do tipo inteiro, x e y. A variável x recebe o valor 4 e y recebe o valor 8. O comando if testa a condição x<2. Caso a condição seja verdadeira, a linha de comando que será executada é: printf ("%d \n", x); que exibe na tela o valor armazenado em x. Caso a condição testada seja falsa, a linha de comando que será executada é: printf ("%d \n", y); que exibe o valor armazenado em y. Neste caso, como o valor de x é 4 a condição x<2 é falsa assim será exibido o valor de y, isto é 8. Gabarito Coment. Gabarito Coment. 8. Um desenvolvedor estava construindo um código que tinha quatro possibilidades de resposta válidas além de uma mensagem de erro. O dado testado era do tipo inteiro. Assinale a opção que ele escolheu. quatro ifs simples e um composto quatro ifs simples switch() com quatro cases e um default três ifs simples e um composto switch() com cinco cases Observe o trecho do programa abaixo: float a, b, c; printf("\n Digite o primeiro numero: "); scanf ("%f",&a); printf("\n Digite o segundo numero: "); scanf ("%f",&b); if (a >= b) { printf("Valor de c: %f" , c = a + b); } else { printf("Valor de c: %f" , c = a - b); } Se o usuário digitar os números abaixo, marque a opção que contém as saídas corretas. 10 e 5 ; 8 e 8 ; 3 e 9 ; 25 e 15 ; 6 e 32. 16 ; - 16 ; -6 ; 40 ; -26 15 ; 16 ; -6 ; 40 ; -26 15 ; 0 ; -6 ; 35 ; 26 15 ; 16 ; 6 ; 40 ; -26 16 ; 0 ; -6 ; 40 ; 26 2. Considere o código abaixo. Considere que o usuário digite 3. O que será impresso para o usuário? int main (void ) { int valor; printf ("Digite um valor de 1 a 7: "); scanf("%d", &valor); switch ( valor ) { case 1 : printf ("Domingo\n"); break; case 2 : printf ("Segunda\n"); break; case 3 : printf ("Terca\n"); break; case 4 : printf ("Quarta\n");break; case 5 : printf ("Quinta\n"); break; case 6 : printf ("Sexta\n"); break; case 7 : printf ("Sabado\n"); break; default : printf ("Valor invalido!\n"); } return 0; } Quinta Terca Valor invalido Segunda Quarta 3. Marque a opção que apresenta apenas operadores relacionais: > < == <= >= > < ++ == >= !+ != == =+ > < == && >= > < == >+ >= Explicação: Os operadores relacionais do C são: > < == >= <= != 4. Uma das dificuldades da estrutura escolha/ caso é o fato das restrições variarem para cada linguagem, dificultando a fixação. Na linguagem C, essa estrutura recebe o nome de switch() e tem suas restrições. Observe os trechos abaixo e assinale o que é possível ser usado na linguagem C, supondo que se espera encontrar na variável de nome a, inteira, alguns valores e entres eles está o número 90. Analise as linhas abaixo e assinale que foi escrita corretamente para testar o número 90 na estrutura switch(). case 90: printf("Pode") ; break; case a=90: printf("Pode") ;break; case a > 90: printf("Pode") ;break; 90: printf("Pode"); stop; 90: printf("Pode"); Explicação: A estrutura switch tem uma sintaxe simples, mas precisamos saber que ela não admite que se use nos casos(cases) operadores relacionais. Cada case(obrigatório) deverá conter uma constante. Em alguns casos, o break; poderá ser dispensável. Sendo assim, duas respostas sem case estão erradas e duas que apresentam operadores relacionais estão erradas. case 90: printf("Pode") ; break; é a resposta correta. Gabarito Coment. 5. Na estrutura de decisão o teste é uma expressão relacional que compara os valores dos seus operandos. A expressão relacional é formada, por um operador relacional e dois operandos. Podemos afirmar que: A Unidade Aritmética e Lógica testa essa expressão e retorna a soma lógica dos valores dos operandos. A Unidade Aritmética e Lógica testa essa expressão e retorna uma mensagem pra que o programdor saiba qual será o desvio do fluxo. A Unidade Aritmética e Lógica testa essa expressão e retorna 1 (ou qualquer número diferente de zero) quando a expressão é verdadeira. A Unidade Aritmética e Lógica testa essa expressão e retorna o valor lógico do maior operando. A Unidade Aritmética e Lógica testa essa expressão e retorna o valor lógico do menor operando. Explicação: A Unidade Aritmética e Lógica testa essa expressão e retorna 1 (ou qualquer número diferente de zero) quando a expressão é verdadeira. E retorna zero quando a expressão é falsa. 6. No contexto do comando switch e do uso do comando break emm seu interior, na linguagem de programação C é correto afirmar que: toda cláusula case de um comando switch, incluindo a cláusula case default, deve conter um comando break; a expressão usada numa cláusula case de um comando switch pode ser de qualquer tipo e deve conter pelo menos uma variável; quando um comando break é executado, o comando switch é encerrado e o fluxo de controle passa para o próximo comando após o fim do comando switch não é possível executar comandos de uma das cláusulas case de um comando switch na mesma execução desse comando. os comandos na cláusula case default de um comando switch são executados apenas se nenhuma das cláusulas case anteriores possuir um comando break; 7. Qual a saída esperado no trecho de código abaixo: int x = 4; int y = 8; if (x < 2){ printf("%d", x); } else{ printf("%d", y); } 4 9 8 12 \n8 8. Observe o trecho do programa abaixo: float a, b, c; printf("\n Digite o primeiro numero: "); scanf ("%f",&a); printf("\n Digite o segundo numero: "); scanf ("%f",&b); if (a >= b) { printf("Valor de c: %f" , c = a + b); } else { printf("Valor de c: %f" , c = a - b); } Se o usuário digitar os números abaixo, marque a opção que contém as saídas corretas. 10 e 5 ; 8 e 8 ; 3 e 9 ; 25 e 15 ; 6 e 32. 15 ; 16 ; -6 ; 40 ; -26 15 ; 16 ; 6 ; 40 ; -26 16 ; 0 ; -6 ; 40 ; 26 16 ; - 16 ; -6 ; 40 ; -26 15 ; 0 ; -6 ; 35 ; 26 Na linguagem de programação C, como em outras, na criação de programas, devemos definir os tipos de dados para nossas variáveis de acordo com o problema em questão. Das opções apresentadas qual possui apenas tipos da linguagem C, conforme o material apresentado nas aulas. char, int, float, double, boolean char, int, float, double, void char, int, real, double, boolean char, integer, float, real, boolean char, int, real, double, void Gabarito Coment. 2. Dado o trecho de lógica utilizando o conceito da linguagem de programação C. Diga o resultado das variáveis x, y e z depois da seguinte sequência de operações: int x,y,z; x=y=10; z=++x; x=-x; y++; x=x+y-(z--); x = 11 y = 11 z = 15 x = -01 y = 01 z = 10 x = -13 y = 11 z = 13 x = -20 y = 20 z = 10 x = -11 y = 11 z = 10 Explicação: int x,y,z; x=y=10; z=++x; x=-x; y++; x=x+y-(z--); Nesta questão são declaradas 3 variáveis do tipo inteiro (x,y e z). Atribui-se o valor 10 para as variáveis x e y. Em seguida incrementa-se o valor de x, passando este a valer 11 e atribui-se este valor a variável z. O comando seguinte é x=-x, atribui-se a variável x o seu valor negativo, isto é -11. Em seguida incrementa-se o valor em y que passa a valer 11. Então é realizada a expressão : x=x+y-(z--), Assim x= -11+11-11, ou seja x recebe -11. E por fim decrementa-se o valor de z, que passa valer 10. Pois embora a variável esteja entre parênteses usa-se o valor dela e só depois o decremento é realizado, pois o operador de decremento está pós-fixado. Logo os valores finais das variáveis são: x=-11, y=11 e z=10 Gabarito Coment. Gabarito Coment. 3. São todos operadores aritméticos da Linguagem C: +, -, *, / %, ||, &&, == &&, ||, ! MOD, DIV, %, && >, >=, <, <=, == Explicação: Os operadores aritméticos são: + (soma), - (subtração), * (multiplicação) e / (divisão). 4. Um aluno declarou uma variável real da seguinte forma: float num =145.1; Qual linha ele deverá incluir em seu programa para que exiba o conteúdo com quatro casas à esquerda do ponto decimal e, as demais, à direita. printf("\nValor de num: %d ",(int)num); printf("\nValor de num: %.4d",num); printf("\nValor de num: %8.3f ",num); printf("\nValor de num: %.2f ",num); printf("\nValor de num: %08.2f ",num); Explicação: O aluno precisa conhecer todos os especificadores de formato e o que significa casting(conversão de tipo) 5. Marque a opção que apresenta apenas dados primitivos da linguagem C char, boolean, int, double char, int, float, double char, inteiro, real, composto chat, int, real, double char, boolean, inteiro, double Explicação: A linguagem C apresenta apenas 4 tipos primitivos de dados : char, int, float e double 6. Um aluno viu o trecho de programa abaixo e não sabe qual das linhas daria como resposta 4.50 int num1=3, num2=6, num3=4; Indique a linha. printf("\nResultado: %.2f ",(float)num1 + num2/num3); printf("\nResultado: %d ",num1 + num2/num3);printf("\nResultado: %.2f ",num1 + (float)num2/num3); printf("\nResultado: %.2d",num1*1.0 + num2/num3); printf("\nResultado: %.2f ",(float)(num1 + num2/num3)); Explicação: O aluno precisa conhecer todos os especificadores de formato e o que significa casting(conversão de tipo) e que inteiro dividido por inteiro, inteiro será o quociente. 7. Analisando o código a seguir, que usa a função getchar(), podemos dizer: /* programa getchar.c */ #include int main(void) { char cLetra; cLetra = getchar(); printf("Letra digitada %c\n", cLetra); printf("Na tabela ASCII %d\n", cLetra); return 0; } O código está correto, pois a função getchar(), não tem nenhuma ação nesse código. O código está correto, embora a função getchar() retorne um int e este está sendo atribuído a uma variável tipo char. O código está errado, pois a função getchar() retorna um número e seu retorno não pode ser atribuído a uma variável do tipo char. O código está errado, pois a função getchar() deve ser usada apenas para dar uma pausa no código. O código está errado, pois a função getchar() nunca retorna um número. Portanto não pode-se usar a linha printf("Na tabela ASCII %d\n", cLetra); Explicação: A resposta correta é: O código está correto, embora a função getchar() retorne um int e este está sendo atribuído a uma variável tipo char. O código está correto, pois embora a função getchar() retorne um int, pode-se atribuir para um char devido a conversão automática da linguagem. 8. Sabe-se que os códigos das letras Maiúsculas se encontram no intervalo fechado de 65 a 90(A-Z) e os das letras Minúsculas se encontram no intervalo fechado de 97 a 122(a-z) Qual das linhas abaixo apresenta a letra e Minúscula? char c='A'; printf("\nValor de num: %c",tolower(c)+4); printf("\nValor de c: %c ",c); printf("\nValor de c: %f ",c); printf("\nValor de num: %c ",toupper(c)+3); printf("\nValor de c: %d ",c); Explicação: O aluno precisa conhecer todos os especificadores de formato e o que significa casting(conversão de tipo) e conhecer as finalidades das funções tolower() e toupper() Analise o trecho de código a seguir e marque a opção que representa o valor armazenado na variável media. int a,b ; float media; a=5; b=2; media=a/b; 3.0 2 2.5 5 3 Explicação: Na linguagem C o resultado de uma divisão entre inteiros sempre resultará em um número inteiro, a menos que se use cast. 2. Um aluno sabia que, no Código ASCII os algarismo de 0 a 9 têm códigos no intervalo fechado de 48 a 57. Ele viu várias linhas em um programa e gostaria de saber qual a linha que estava exibindo o algarismo de código 51. int num=51; printf("\nValor de num: %.f ",num); printf("\nValor de num: %.f ",(float)num); printf("\nValor de num: %c ",num); printf("\nValor de num: %d ",num); printf("\nValor de num: %.4d",num); Explicação: O aluno precisa conhecer todos os especificadores de formato e o que significa casting(conversão de tipo) 3. Acerca dos operadores, marque a opção correta: Não podemos realizar operações dentro do comando printf. Todas as alternativas acima estão corretas. O operador = tem a mesma função de ==. O operador "maior ou igual" pode ser utilizado tanto como >= quanto =>. O operador potência necessita de uma biblioteca específica. 4. Na linguagem de programação C, como em outras, na criação de programas, precisamos fazer a entrada e saída de dados no sistema e para tal temos algumas opções. Das opções apresentadas, qual não é parte linguagem C, conforme o material apresentado nas aulas. scanf ( ) cin ( ) fgetc(stdin) printf ( ) getchar ( ) 5. Em C++, como podemos inicializar a variável sexo recebendo um valor F? char sexo == F; char sexo = F; char sexo = 'F'; char sexo = "F"; string sexo = "F" Explicação: A atribuição de uma variável do tipo char deve ser realizada com o valor entre aspas simples, ou melhor apóstrofes. 6. Sabe-se que os códigos das letras Maiúsculas se encontram no intervalo fechado de 65 a 90(A-Z) e os das letras Minúsculas se encontram no intervalo fechado de 97 a 122(a-z) Qual das linhas abaixo apresenta a letra H Maiúscula? char c='e'; printf("\nValor de c: %f ",c); printf("\nValor de c: %d ",c); printf("\nValor de c: %c ",c); printf("\nValor de num: %c",tolower(c)+3); printf("\nValor de c %c ",toupper(c)+3); Explicação: O aluno precisa conhecer todos os especificadores de formato e o que significa casting(conversão de tipo) e conhecer as finalidade das funções tolower() e toupper(). 7. Escolha a opção que inclui somente nomes válidos para variáveis na linguagem C. 2_ou_1, fim, *h, j i, j, int, obs nota-2 , a36, x_y If, nota_do_aluno_2, HOJE, _yes 2nota, a36, x#y, --j Explicação: Analisando as possíveis respostas. i, j, int, obs -> Tem palavra reservada (int) 2nota, a36, x#y, --j -> Não pode começar por número, nem ter caractere # e nem - If, nota_do_aluno_2, HOJE, _yes -> CORRETA 2_ou_1, fim, *h, j -> Não pode começar por número, nem ter caractere * e o segundo caractere, sendo o primeiro _, Não pode ser número. nota-2 , a36, x_y -> Não pode ter caractere - Gabarito Coment. 8. Um engenheiro precisava calcular o valor do imposto a ser pago no carnê leão. Sabe-se que o imposto é calculado sobre o salário bruto. Acompanhe o programa codificado na linguagem C, supondo que você digitou 4000 para primeira solicitação de entrada e 1000, para segunda solicitação. Escolha a opção onde está presente o valor do imposto. Valor do imposto a ser pago: 800.00 Valor do imposto a ser pago: 650.00 Valor do imposto a ser pago: 750.00 Valor do imposto a ser pago: 850.00 Valor do imposto a ser pago: 1000.00 Explicação: A variável imposto recebe (4000 + 1000) e que multiplicado por 15 obterá o resultado 7500.00. Depois, esse valor é dividido por, totalizando 750.00 Na linguagem de programação C, como em outras, na criação de programas, precisamos fazer a entrada e saída de dados no sistema e para tal temos algumas opções. Das opções apresentadas, qual não é parte linguagem C, conforme o material apresentado nas aulas. scanf ( ) cin ( ) fgetc(stdin) printf ( ) getchar ( ) 1. Os operadores de incremento (++) e decremento (--) são muito utilizados no desenvolvimento de programas. Se em uma linha de um programa em C utilizarmos o seguinte comando: a=b++, qual das opções abaixo demonstra a operação que será executada: b=b-1; a=b; a=b; b=b-1; a=a+1; b=b+1; a=b; b=b+1; b=b+1; a=b; Explicação: a=b++; Significa que, primeiro, o valor atual de b será atribuído à variável a e, depois, a variável b será incrementada de 1. Sendo assim, equivaleria aos dois comandos : a=b; b=b+1; 2. As bibliotecas da linguagem C guardam funções predefinidas da linguagem. Veja o código a seguir e marque a alternativa que contém as bibliotecas necessárias para que este código funcione. #include________ #include________ int main() { int a=2, b=2, c=8, delt; delt=(pow(b, 2)-(4*a*c)); system("pause"); return (0); } Não leve em consideração os sinais de maior e menor que envolvem o nome das bibliotecas. cmat.h - ctype.h stdlib.h - ctype.h stdio.h - stdlib.h stdio.h - ctype.h math.h - stdlib.h Explicação: Como não
Compartilhar