Você está na página 1de 7

Instrues Nas respostas em que escreve cdigo C:

coloque um espao antes e depois de cada operador binrio (e.g., atribuio, comparao, adi no coloque espao antes de uma vrgula; coloque sempre um espao depois de uma vrgula; no coloque espao entre o nome de uma funo e o abrir parntesis; no coloque espao depois do abrir parntesis; no coloque 2 espaos seguidos; no coloque espaos antes do ';' nem no final das linhas de cdigo; Exemplos de linhas de cdigo C que observam as regras anteriores: long func1(int a, int* b); int c = 0; c = d + 1; func2(d, &e); No enunciado das perguntas, os nomes de variveis, dados e funes dos programas so def inidas entre apstrofos. ------------------------------------------------------------Pergunta 1 Dado o makefile para Windows 1 2 3 4 5 6 7 8 9 10 11 12 OBJ = main.obj mod1.obj mod2.obj PROG = prog.exe $(PROG): $(OBJ) cl /Fe$(PROG) $(OBJ) main.obj: main.c mod1.obj: mod1.c mod2.obj: mod2.c clean: del /q $(PROG) $(OBJ)

cujo directrio contm os ficheiros 29-04-2011 29-04-2011 29-04-2011 29-04-2011 29-04-2011 29-04-2011 29-04-2011 29-04-2011 29-04-2011 02:37 02:38 01:00 01:18 01:08 02:19 02:53 01:07 02:19 main.c main.obj makefile mod1.c mod1.h mod1.obj mod2.c mod2.h mod2.obj

e considerando que a linha de comandos se encontra nesse mesmo directrio, indique : o comando para construir o executvel: RESPOSTA: nmake (MAKE DO WINDOWS) o nome dos ficheiros que so compilados (por ordem alfabtica): RESPOSTA: mod2.c ( O U NICO .C QUE MAIS RECENTE QUE O .O ".O = 2:19" ".C = 2:53" ) o nome do executvel que construdo: RESPOSTA: prog.exe o comando para apagar os ficheiros binrios: .NOTA: Coloque um caractere '-' (meno s/hfen) nas caixas que no so utilizadas/necessrias/ocupadas. RESPOSTA: nmake clean .10 pontos

--------------------------------------------------------------------------------------------------------Pergunta 2 Escreva a linha de cdigo que

declara uma referncia de nome a para a varivel b que do tipo int (e declarada nout a). RESPOSTA: int *a = &b; declara uma funo chamada func que retorna um int e recebe como parmetro uma refernci tipo int . RESPOSTA: int func(int *); invoca a funo func considerando que a varivel disponvel para argumento 'int c':. RESPOSTA: func(&c); invoca a funo func considerando que a varivel disponvel para argumento 'int *c;':. RESPOSTA: func(c); .10 pontos --------------------------------------------------------------------------------------------Pergunta 3 O programa prog , cujo cdigo fonte

#include<stdio.h> void main(void) { fprintf(stderr, "xyz "); printf("abc "); } executado na linha de comandos pelo comando prog1 < elif Na consola escrito: RESPOSTA: xyz abc (RENCAMINHAMENTO DE STDIN, NAO AFECTA O STDOUT) NOTAS: Os espaos entre as caixas so os espaos que so escritos na consola, por isso, no coloque espaos dentro das caixas de texto (apenas os outros caracteres). Coloqu e um caractere '-' (menos/hfen) nas caixas que no so utilizadas/necessrias/ocupadas. .10 pontos ---------------------------------------------------------------------------------------------Pergunta 4 Considere o seguinte cdigo, em que a classe ArvoreInt contm a raiz e as funes que gere m a raz, e a classe NoInt contm os dados de um n, incluindo a os apontadores esquer da e direita e as funes para os gerir. class ArvoreInt { NoInt *raiz; public: void insere(NoInt *novo) { if(raiz == NULL) raiz = novo; else raiz->insere(novo); }

} class NoInt { NoInt *esq; NoInt *dir; int valor; public: NoInt(int a) { valor = a; esq = dir = NULL; } void insere(NoInt *novo); int compara (No *a) { return valor a->valor; } } Escreva o cdigo para a funo membro void NoInt::insere(NoInt* novo) : 40 pontos --------------------------------------------------------------Pergunta 5 Faa corresponder a cada uma das variveis do programa C listado abaixo, zona de memr ia onde fica colocada: const int a = 0; int b = 1; void func(int c) { static int d = 2; int e = c + d; } void main() { char *f; f = malloc(3); func(b); } Resposta - 1 2 3 4 aLer itens da resposta da pergunta 5 - 1 2 3 4 bLer itens da resposta da pergunta 5 - 1 2 3 4 cLer itens da resposta da pergunta 5 - 1 2 3 4 dLer itens da resposta da pergunta 5 - 1 2 3 4 eLer itens da resposta da pergunta 5 - 1 2 3 4 *fLer itens da resposta da pergunta 5 RESPOSTA: 1 Dados- a, b, d 2 Heap - *f 3 Cdigo 4 Stack c, e .10 pontos ---------------------------------------------------------------------------------Pergunta 6

O aspecto do cdigo importante para: Resposta O linking A velocidade de execuo A compilao O debugging A manuteno RESPOSTA: A manuteno .10 pontos ------------------------------------------------------Pergunta 7 Caracterize a rvore binria da figura abaixo: Altura = Tamanho = Equilibrada (s/n): Completa (s/n): .10 pontos -------------------------------------------------------------Pergunta 8 Faa corresponder a cada item de cdigo o ficheiro onde este deve ser colocado: Resposta - A. B. Uma seco de comentrio descrevendo claramente o que o mdulo faz e as funcionalidades que disponibiliza. am e A. B. Definio de macros e constantes comuns ao mdulo e aos programas que utiliz o mdulo. RESPOSTA: A A. B. Definies de tipos de dados (e.g., estruturas, enumerados) comuns ao mdulo aos programas que utilizam o mdulo.RESPOSTA: A A. B. Prottipo das funes pblicas. RESPOSTA: A A. B. Declaraes extern das variveis pblicas. RESPOSTA:

- A. B. Uma seco de comentrio descrevendo como o mdulo implementa as suas funciona lidades. RESPOSTA: B Ler itens - A. B. - A. B. - A. B. da resposta da pergunta 8 Implementao das funes pblicas. RESPOSTA: B Definio das variveis pblicas. RESPOSTA:B Funes privadas e variveis globais declaradas static.RESPOSTA: B

Resposta A. Interface (ficheiro .h) B. Implementao (ficheiro .c) .10 pontos -------------------------------------------------------Pergunta 9 Os comentrios devem ser utilizados para comentar: Resposta A-Cada uma das linhas de cdigo de um programa B-O que faz cada funo, cada um dos seus parmetros e valor de retorno C-Grupos de linhas de cdigo relacionadas, no seu todo

Sobretudo as linhas de cdigo mais difceis de perceber RESPOSTA: C .10 pontos -------------------------------------------------------------Pergunta 10 A funo seguinte invocada com argumentos 0, 1 e 7, respectivamente. void func(const int prev, const int curr, const int limit) { if (prev < limit) { printf ("%d ", prev); func(curr, prev + curr, limit); } } Na sada padro escrito: RESPOSTA: 0 1 1 2 3 5 NOTAS: Os espaos entre as caixas so os espaos que so escritos na consola, por isso, no coloque espaos dentro das caixas de texto (apenas os outros caracteres). Coloqu e um caractere '-' (menos/hfen) nas caixas que no so utilizadas/necessrias/ocupadas. .10 pontos --------------------------------------------------------------------Pergunta 11 Escreva a linha de cdigo que imprime o argumento de ndice 1 de um: Batch file Windows: RESPOSTA: echo %1 Shell script Linux: RESPOSTA: echo $1 .10 pontos ---------------------------------------------------------------------Pergunta 12 Escreva a linha de cdigo que: declara um apontador de nome apont para funes que no retornam qualquer dado e que rece bem como argumentos um apontador para int e um 'char'. RESPOSTA: void (*apont) (int *, char); coloca o apontador apont a apontar para a funo 'void func(int* a, char b);'. RESPOSTA: apont = func; invoca a funo func utilizando o apontador as variveis int c e 'char d'.. RESPOSTA: apont(&c, d); .10 pontos ------------------------------------------------------------------------------Pergunta 13 Escreva um programa C que leia uma linha de texto do teclado e escreva na consol a aquilo que leu precedido de output: . Resposta apont e passando como argumentos os valores

RESPOSTA: #define SIZE 100 #include<stdio.h> int main(int argc, char *argv[]) { char string[SIZE]; gets(string); printf("output: %s\n", string); return 0; }

.20 pontos ----------------------------------------------------------------------------------Pergunta 14 A seguir ao prompt da linha de comandos de um sistema Windows exibido abaixo, es creva o comando para executar o programa myprog.exe que est no directrio Me io Users da drive C: , utilizando o caminho absoluto:. RESPOSTA: C:\Windows\System32>C:\Users\Me\myprog.exe o caminho relativo:. RESPOSTA: C:\Windows\System32>..\..\Users\Me\myprog.exe .10 pontos --------------------------------------------------------------------------------------------Pergunta 15 Considere o seguinte excerto de cdigo: 1 int func(int a) 2 { 3 static int b = a/2; 4 int c = b * a; 5 return c; 6 } O cdigo compila? Termo 1 -Sim/No Se No , qual o nmero da linha que d erro? Termo 2 -123456

do direct

RESPOSTA: No, linha 3 porque o valor inicial de uma varivel static tem de ser cons tante .10 pontos ---------------------------------------------------------------------------------------------------Pergunta 16

O contedo do ficheiro #include <iostream> using namspeace std; int main() { #ifndef DEBUG cout << primeiro ; #else cout << segundo ; #endif cout << output ; }

prog.cpp

Escreva o comando Linux para compilar o programa e activar o output de depurao RESPOSTA: g++ -D DEBUG prog.cpp Escreva o output feito na consola quando programa executado RESPOSTA: segundo output .10 pontos ---------------------------------------------------------------------------------------------Pergunta 17 Complete as partes que faltam do seguinte programa, de forma que este imprima o valor da varivel 'b' (nmero 2), sendo que a funo 'func' tem apenas um parmetro de nom e 'c'. const int a = 1, b = 2; void main() { int *p = &a; func(_____________); // RESPOSTA: func(&p); printf( %d\n , *p); } void func(________________) { ________________________ } . /* RESPOSTA: void func(int **c) { *c = &b; //pois b global } */