Вы находитесь на странице: 1из 5

Disciplina: Programação Estruturada 

Aluno:_________________________________Turma:_________Data:___/___/
 PROVA 1 –Teórica - GABARITO 
 1. Escreva um programa em C que leia um caractere. Se o caractere for um número,
o programa deve mostrar seu valor elevado ao cubo; caso contrário, deve mostrar o
seu código ASCII.

#include <stdio.h>

#include <math.h>

#include <conio.h> 

void main()

char opcao;

int valor; 

printf("\n\ndigite um caractere: ");

scanf("%c",&opcao);

if ((opcao >= ´0´) && (opcao <= ´9´)) /* poderia ter utilizado 48 e 57

   {

   valor = opcao - ´0´;

   printf("\nvalor ao cubo e %.1lf",pow(valor,3));

   }

else

   printf("\ncaractere em ASCII e %d", opcao);

getch();

2. Descreva quais são os problemas dos trechos dos códigos abaixo.

a)

x=10;

for (y=10;y!=x;++y) printf (“%d”,y);

printf (“%d”,y);
Resposta: há uma condição falsa, o teste “y!=x” será sempre falso e nunca
haverá entrada no corpo do for 
 

b)

main()

      int erro[10], i;

      for (i=0;i<100;i++) erro[i]=1;

Resposta: não há erro de compilação, mas não há verificação de limites do


vetor e atribuições são feitas para áreas de memória não reservadas 

3. Escreva um programa em C que peça para o usuário entrar um número


correspondente a um mês do ano e que então apresente na tela o nome do mês, sem
utilizar o comando if. O programa deve continuar pedindo um número
correspondente até que o usuário digite um número negativo.

#include <stdio.h>

#include <conio.h> 

void main()

   int opcao = 0; 

   clrscr();

   puts(" digite um numero");

   scanf("%d",&opcao); 

   while (opcao >= 0) {

         switch (opcao) {

         case 1: puts("1-janeiro");

               break;

         case 2: puts("2-fevereiro");

               break;
         case 3: puts("3-marco");

               break;

         case 4: puts("4-abril");

               break;

         case 5: puts("5-maio");

               break;

         case 6: puts("6-junho");

               break;

         case 7: puts("7-julho");

               break;

         case 8: puts("8-agosto");

               break;

         case 9: puts("9-setembro");

               break;

         case 10:puts("10-outubro");

               break;

         case 11:puts("11-novembro");

               break;

         case 12:puts("12-dezembro");

               break;

         }

   puts(" digite um numero");

   scanf("%d",&opcao);

   }

4. Responda o que se pede abaixo:


 Qual é a diferença entre compilador, interpretador e montador? Diga se
C é uma linguagem compilada ou interpretada.

      Para que o computador nos entenda, precisamos utilizar uma linguagem que lhe seja
compreensível. A linguagem mais próxima do entendimento do computador é a linguagem
de máquina e é dita de baixo nível. Podemos usar linguagens mais próximas da natural, ou
seja, as de alto nível. Para que linguagens de diversos tipos sejam traduzidas para a
linguagem de máquina, utilizamos um tradutor. A importância de um tradutor deve-se ao
fato de podermos aliar linguagens de alto nível (definidas segundo regras formais próprias,
como o inglês ou o português) a linguagens de baixo nível ou linguagens de máquina, que
são extremamente trabalhosas e difíceis de serem compreendidas pelo ser humano.
     Tradutores que traduzem de uma linguagem de alto nível para uma linguagem de
máquina são chamados compiladores e tradutores que traduzem Assembly para uma
linguagem de máquina são chamados montadores. Uma linguagem que necessita que o
programa fonte seja sempre compilado antes de uma execução é chamada linguagem
interpretada e o seu tradutor é chamado interpretador. Um exemplo de uma linguagem
interpretada seria o BASIC, mas, hoje em dia, a maior parte das linguagens não necessita de
uma compilação para cada execução e muitos dos compiladores possuem o recurso de criar
programas executáveis, ou seja, programas que podem ser rodados diretamente, através de
uma chamada por meio do sistema operacional, sem a necessidade do compilador. C é uma
linguagem compilada.

 Qual é a razão de erros na linguagem C em tempo de execução serem


pouco verificados?

   A linguagem C foi feita de programadores para programadores, ou seja, pensava-se que o
programador devia ter domínio sobre os problemas de execução já que ele saberia como
funcionaria internamente a linguagem e com isso o compilador poderia executar mais
eficientemente o código, passando imediatamente o controle para o programador de modo
que ele se ativesse aos problemas específicos do seu programa.
 C é uma linguagem estruturada? Explique.

   C pode ser considerada uma linguagem estruturada porque segue uma seqüência lógica
feita através de comandos com tomada de decisão e definição do fluxo de controle a ser
tomado. Além disso, C possui chamadas a rotinas (funções) e retomada do fluxo de
controle após a execução dessas rotinas, o que também a caracteriza como uma linguagem
estruturada.
 C é uma linguagem de alto nível ou de baixo nível? Explique.

   C é uma linguagem de alto nível com recursos de uma linguagem de baixo nível, ou seja,
possui comandos próximos aos da linguagem humana (printf, if-then, for etc) e recursos das
linguagens de máquina (acesso a endereços de memória, uso de registradores, manipulação
de bits etc).
5. Escreva um programa que faça uma leitura de três valores e os mostre na tela em
ordem crescente.
#include <stdio.h>
#include <conio.h> 
void main()
{
      int a, b, c; 
      clrscr();
      puts("\ndigite um numero: ");
      scanf("%d",&a);
      puts("\ndigite um numero: ");
      scanf("%d",&b);
      puts("\ndigite um numero: ");
      scanf("%d",&c);
      printf ("\nORDEM CRESCENTE:");
      if ((a <= b) && (a <= c))
            if (b <= c) printf ("\n%d %d %d", a, b, c);
            else printf("\n%d %d %d", a, c, b);
      else
      if ((b <= a) && (b <= c))
            if (a <= c) printf ("\n%d %d %d", b, a, c);
            else printf ("\n%d %d %d", b, c, a);
      else
            if (b <= a) printf ("\n%d %d %d", c, b, a);
            else printf ("\n%d %d %d", c, a, b);
      getch();
}