Você está na página 1de 2

INSTITUTO FEDERAL NOTA

Aluno:

Curso: Ciência da Computação Data: ______/______/______



Professor: Luís Fernando Maia Disciplina: Linguagens de Programação

2ª Avaliação

1. Dado o código C abaixo, informe o que será impresso.


typedef struct str {
int n;
char c;
} registro;

typedef union uni {


int n,i,j;
char c;
} uniao;

int main() {
registro reg;
reg.n = 3;
reg.c = 'A';
uniao uni;
uni.c = 'B';
uni.n = reg.c;
printf("%c - %d - %d", uni.c, sizeof(reg), sizeof(uni));
}

2. Em relação a tipagem de dados, marque V ou F para as afirmações abaixo.


a) ( ) Arrays heterogêneos são aqueles cujos elementos armazenados não possuem o
mesmo tipo. Por exemplo, podemos citar as listas em Python e ArrayLists em Java.
b) ( ) Tipos compostos são aqueles que podem ser criados a partir de tipos mais
simples, como vetores, registros e classes.
c) ( ) O sistema de coleta de lixo do Java é fundamentalmente baseado no método de
contagem de referências, que recupera a memória de forma gradual e não causa atrasos
significativos na execução dos programas.
d) ( ) Em se tratando de equivalência de tipos, a equivalência estrutural é menos flexível,
porém é mais fácil de ser implementada, por isso é utilizada na maioria das linguagens.

3. Sabendo que as regras de associatividade podem variar de uma linguagem de programação para
outra, analise o código abaixo e informe o que será impresso caso o operador de adição possua
associatividade da direita para esquerda e da esquerda para direita.
int function(int i, int *j) {
*j += 5;
return i + *j;
}
int main() {
int a = 3;
int b = 2;
b = function(a, &b) + b;
printf("%d", b);
}
4. Analise o código abaixo e informe o que será impresso caso a linguagem em questão suporte
avaliação curto-circuito.
int par(int *i) {
*i = (*i % 2 == 0) ? 1 : 0;
return *i;
}
int main() {
int a = 9;
if ((a > 3) || par(&a)) {
printf("%d", a);
} else {
printf("%d", a);
}
}

5. Considerando as estruturas de controle disponíveis no Java, informe o que será impresso pelo
código abaixo.
prim: for (int i = 5; i >= 0; i-=2) {
for (int j = 0; j < 2; j++) {
switch (i + j) {
case 1:
System.out.println("A");
case 2:
System.out.println("B");
continue prim;
case 3:
case 4:
System.out.println("C");
continue;
case 5:
System.out.println("D");
default:
System.out.println("E");
break;
}
}
}

Você também pode gostar