Академический Документы
Профессиональный Документы
Культура Документы
1. Liste pelo menos cinco diferentes tipos de amarraes que ocorrem no seguinte
trecho de cdigo C.
float j = 3.2;
j =j - 1.7;
C: A, B, C, D, E e F
D: A, B, C, D, E e F
E: A, B, C, D, E e F
F: A, B, C, F e G
G: A, B, C, F e G
Para referenciar a varivel u do subprograma D em G seria necessrio defin-la em B.
A varivel u de D tambm passaria a ser visvel pelos subprogramas B, C, E e F, o que
pode ser indesejado. Isso poderia provocar erros de alterao indevida dessa varivel
nesses subprogramas.
4. Indique qual valor ser escrito pelo trecho de cdigo seguinte no caso da
linguagem de programao utilizada adotar escopo esttico e no caso dela adotar
escopo dinmico.
procedimento sub () {
inteiro x = 1;
inteiro y = 1;
procedimento sub1() {
se (x = 1 &y = 1,) ento
sub2();
seno
sub3();
}
procedimento sub2() {
inteiro x = 2;
y = 0;
sub1(),
}
procedimento sub3() {
escreva(x):
}
sub 1();
}
Cite e explique os problemas de legibilidade do trecho de cdigo acima quando se
adota o escopo esttico e o escopo dinmico.
Escopo esttico: 1
Escopo dinmico: 2
No escopo dinmico, ao chamarmos a funo sub3 depois de sub2 ser executada, a
funo far referncia ao x criado em sub2. Por isso imprimir o valor 2. J no escopo
esttico sub3 ir referenciar o valor de x em sub e imprimir o valor 1.
No escopo dinmico temos que analisar a seqncia em que os subprogramas so
chamados para determinar o valor das variveis que no so locais. preciso mais
cuidado e ateno por parte do programador ao manipular essas variveis.
7. Indique quais valores sero escritos pelo seguinte programa em C. Explique sua
resposta e discuta a postura da linguagem em termos de ortogonalidade e de
potencialidade para induo de erros de programao.
int i;
void main () {
printf(%d\n", i);
f();
}
void f () {
int i;
printf(%d\n ", i);
}
A varivel i foi definida como global. Automaticamente ela ser inicializada com o
valor 0 (zero). Portanto, na execuo da funo main, o primeiro valor a ser impresso
0 (zero). Contudo, quando a funo f chamada, cria-se uma varivel local i na
memria. Variveis locais em C no so inicializadas automaticamente. Assim, a
impresso desta varivel ser o contedo corrente da rea de memria aonde ela foi
alocada.
Isso caracteriza uma falta de ortogonalidade na linguagem, o que pode levar a erros de
programao, visto que o programador pode achar que uma varivel, seja global ou
local, ser sempre inicializada automaticamente com zero.