Buscar

Primeira Lista de Exercícios

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 6 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 6 páginas

Prévia do material em texto

Estudo Comparativo de Linguagens de Programação (2013)
Lista 1
Professora: Ana Monteiro (anammont.alu@gmail.com)
Bibliografia Básica
SEBESTA, R. Conceitos de Linguagens de Programação. Porto Alegre: Bookman, 1999.
NOONAN, R. , TUCKER, A. Linguagens De Programação, Porto Alegre:McGraw Hill – ARTMED, 2009.
Considere uma ou duas linguagens de programação que você conhece e discuta:
Quais são as características que facilitam e as que dificultam a manutenção do software desenvolvido nessa linguagem.
As facilidades oferecidas para a organização de programas.
As facilidades para interagir com o ambiente externo.
Dados os trechos de código a seguir, determinar, segundo o mapa de memória visto nas aulas, onde são armazenadas cada uma das variáveis.
a) #include <stdio.h>
int main(void)
{
int n[] = {1, 2, 6};
int *p;
p = &n[0];
p++;
printf("Valor: %d ", *p);
(*p)++;
printf("Valor: %d\n", *p);
}
b)	program main;
 	 var 
 N, C, I: integer;
Begin
 Readln(N);
C := 0; I := 1;
While ( I <= N ) do
Begin
 				Readln(A);	
 				If (A mod 3=2) then C:= C + 1;
 				Inc(I);
End;
 End;
c) public class RegAcademicoGrad 
{ 	private String nomeA;
		private Data dataN;
		private int ra;
		private byte curso;
		private double perc; // desconto matrícula
		public static final byte CC =1;
		public static final byte SI =2;
		public static final byte WEB =3;
 
// métodos de RegAcademicoGrad 
RegAcademicoGrad(String n, Data d, int m, byte c, double p)
{ nomeA = n; dataN = d; ra = m;
		curso= c; perc= p;
}
RegAcademicoGrad(String n, Data d, int m, byte c)
{ this(n,d,m,c,100) //100% desconto
}
public double calcMensa()
{ double mensa = 0;
 		 if ( curso == WEB) mensa = 550;
 		 else mensa = 650; 
 		 mensa = (mensa * perc )/100;
 		 return mensa;
}
public String toString()
{ String result =“”;
 		result += “Matrcula: “+ra+”Nome: “+nomeA+”\n”;
		result += “Data de Nascimento:”+ dataN+ +”\n”;
		...
 		return result; 
} 
public class TesteRegAcademicoGrad 
{
 		public static void main(String args[])
		{	Data dataNJose=new Data((byte)12,(byte)5,(short)1992);
 		RegAcademicoGrad jose = new RegAcademicoGrad(“Jose Silva”, 
dataNJose, 17345, RegAcademicoGrad.CC, 45);
 		RegAcademicoGrad luis = new RegAcademicoGrad(“Luis Dias”, 
new Data ((byte)25,(byte)8,(short) 1990); 18005, RegAcademicoGrad.CC);
 System.out.println(jose);
 System.out.println(luis);
}
 
 
Supondo que tenha compilado e executado usando as regras de escopo do Pascal, simular a execução de cada um dos programas. Quais os valores impressos pelos programas? 
Program teste_1;
 Var 
 	a, b, c: integer; d, e: real;
 Procedure um (var x: integer; y: real);
 Var 
 a: real; z, d, c: integer;
 Begin
	z:= x + 2;
 d:= 3;
 x:= z mod 3;
 c:= z + d;
 writeln(a, b, c, d, e, x, z);
 y := 3.5;
 End;
 Begin
	a:= 1; b := 2; c:= -2;
 d:= 0; e:= - 5.3;
 writeln(a, b, c, d, e);
 um (b, e);
 writeln(a, b, c, d, e); 
 End;
 Program teste_2;
 	Var 
		x, y: integer; z: real;
 Procedure A ( var w: integer; t: real);
	 Var 
 		x: integer; y:= real;
 Procedure B (var xxz: integer);
	 	Var 
			y: integer;
 	Begin 
 		y:= 2;
 		writeln(xxz, x , y, z);
			z:= 2.3;
 	 End;
 
	Begin				// começo instruções procedimento A
 		x:= 3; y:= 2.5;
		writeln(x, y, z);
		B(x);
End; 				// fim instruções procedimento A
Begin // começo instruções teste_2
	x:= 28; y:= -4; z:= 39.48;
 	writeln( x, y, z);
 	A(x, z);
 	Writeln( x, y, z);
End // fim instruções teste_2
Supondo que o seguinte programa tenha compilado e executado usando regras de escopo estático. Que valor de x é impresso no procedimento sub1? De acordo com as regras de escopo dinâmico, que valor de x é impresso no procedimento sub1?
	program main;
		var x : integer;
		procedure sub1;
			begin {sub1}
			writeln (‘x=’ , x);
			end {sub1}
		procedure sub2;
			var x : integer;
			begin {sub2}
			x := 10;
			sub1;
			end; {sub2}
		begin {main}
		x:= 5;
		sub2;
		end. {main}
Considere o seguinte programa Pascal esquemático:
	program main;
		var x : integer;
		procedure sub3; forward;
		procedure sub1;
	 	var x: integer;
			procedure sub2;
				begin {sub2}
			 	...
				end; {sub2}
			begin {sub1}
			...
			end {sub1}
		procedure sub3;
			begin {sub3}
			...
			end; {sub3}
		begin {main}
		...
		end. {main}
	
	Suponha que a execução desse programa seja na seguinte ordem das unidades:
		main chama sub1
		sub1 chama sub2
		sub2 chama sub3
Supondo que esteja presente o escopo estático, qual declaração de x é a correta para a referência a x em:
sub1
sub2
sub3	 
Repita a parte a), mas suponha a presença do escopo dinâmico.
 Considere o seguinte programa em C:
	void fun(void) {
		int a, b, c; /* definição 1 */
		...
		while ( ... ) {
			int b, c, d; /* definição 2 */
			... ( 1
			while ( ... ) {
				int c, d, e; ; /* definição 3 */
				... ( 2
			}
		... ( 3
		}	
 	... ( 4
	}
	Para cada um dos quatro pontos marcados nessa função, liste cada variável visível, juntamente com o número da instrução de definição que a define.
	
 Considere o seguinte programa C esquemático:
	void fun1(void); /* protótipo */
	void fun2(void); /* protótipo */
	void fun3(void); /* protótipo */
	void main( ) { 
		int a, b, c;
		...
	}
	void fun1(void) {
		int b, c, d;
		...
	} 
	void fun2(void) {
		int c, d, e;
		...
	} 
	void fun3(void) {
		int d, e, f;
		...
	} 
	Dadas as seguintes seqüências de chamadas e supondo-se que seja usado o escopo dinâmico, quais variáveis são visíveis durante a execução da última função chamada? Inclua, em cada variável visível, o nome da função em que ela foi definida.
main chama fun1,fun1 chama fun2, fun2 chama fun3.
main chama fun2, fun2 chama fun3, fun3 chama fun1.
main chama fun3, fun3 chama fun2, fun2 chama fun1.
main chama fun3, fun3 chama fun1.

Outros materiais