Você está na página 1de 3

1

Universidade Federal do Ceará

AP3 de Fundamentos da Programação – prof.: Gilson G. de Lima

Aluno:____________________________________________ matrícula:___________

Tempo: 60 min.

1) Escreva um comando (ou comentário) para realizar cada uma das seguintes tarefas:
(Suponha que as devidas bibliotecas foram adicionadas)

a) Afirme que um programa calcula o produto de três inteiros.


//este programa calcula a soma de três inteiros
Ou
printf(“programa calcula a soma de três inteiros”);
b) Declare as variáveis x, y, z e result como sendo do tipo int.
int x ,y , z, result ;
c) Leia três inteiros do teclado e armazene-os nas variáveis x, y e z.
printf(“digite três inteiros\n”);
scanf(“%d %d %d”, &x, &y, &z);
2) Ache o(s) erro(s) em cada um dos segmentos de código seguintes e explique como corrigi-
lo(s).
a) x=1;
while (x<=10) ;
x++;
}
Erro: falta a chave a direita do corpo do while.
Correção:
x=1;
while (x<=10) {
x++;
}

b) for (y = .1; y != 1.0 ; y += .1)


printf(“%d \n”,y);

Erro: usar um número de ponto flutuante (número real) para controlar uma estrutura de repetição
for.
Correção:
for (y = 1; y != 1 ; y += 1)
printf(“%d \n”,y);

c) switch ( n ) {
case 1:
printf(“o numero eh 1 \n”);
case 2:
printf(“o numero eh 2 \n”);
break;
default:
2

printf(“o numero nao eh 1 ou 2 \n”);


break;
}
Erro: comando break faltando para o primeiro case.
Correção:
switch ( n ) {
case 1:
printf(“o numero eh 1 \n”);
break;
case 2:
printf(“o numero eh 2 \n”);
break;
default:
printf(“o numero nao eh 1 ou 2 \n”);
break;
}

3) Indique o erro no segmento seguinte de programa e explique como erro pode ser corrigido:

int g (void){
printf(“dentro da funcaoo g\n”);

int h (void)
{

printf(“dentro da função h \n”);


}
}
Erro: a função h está definida dentro de outra função.
Correção:
int g (void){
printf(“dentro da funcaoo g\n”);
}
int h (void)
{

printf(“dentro da função h \n”);


}
3

4) O que faz o seguinte programa?

#include <stdio.h>
#include <stdlib.h>

int oQueEhIsso( int [], int);

int main(int argc, char *argv[])


{
int tamanhoVetor = 10;
int a[10] = {1,2,3,4,5,6,7,8,9,10};

int result = oQueEhIsso (a, tamanhoVetor);

printf("O resultado eh %d\n", result);

system("PAUSE");
return 0;
}

int oQueEhIsso( int b[], int tamanho)


{
if (tamanho == 1)
return b[0];
else
return b[tamanho -1] + oQueEhIsso(b, tamanho -1);

Resposta: usa recursividade para somar todos os elementos do vetor a e exibe o resultado na tela:
55.

Prova:

Chamemos a função oQueEhIsso de f, assim:


result = f(a,10);
Isto é:
f(b,10) = b[9]+f(b,9);
f(b,9) = b[8]+f(b,8);
f(b,8) = b[7]+f(b,7);
f(b,7) = b[6]+f(b,6);
f(b,6) = b[5]+f(b,5);
f(b,5) = b[4]+f(b,4);
f(b,4) = b[3]+f(b,3);
f(b,3) = b[2]+f(b,2);
f(b,2) = b[1]+f(b,1);
f(b,1) = b[0];
Substituindo temos:
f(b,10)=b[9]+ b[8]+ b[7]+ b[6]+ b[5]+ b[4]+ b[3]+ b[2]+ b[1]+ b[0]=10+9+8+7+6+5+4+3+2+1=55