Vous êtes sur la page 1sur 4

Universidad Nacional de Salta Facultad de Ciencias Exactas

Ctedra: Programacin Ao 2014


Trabajo Prctico N 3: Tipo de Dato Puntero y Modularidad











Preguntas Generales: Analice las siguientes preguntas cada vez que pueda y en particular cuando sea
requerido por algn ejercicio.
i. Qu tipo de mdulos utiliz?
ii. Los parmetros son pasados por valor o por referencia?. Porqu?
iii. Clasifique los identificadores en locales y globales segn corresponda.
iv. Observe en qu momento utiliza parmetros formales y cuando actuales.
v. Analice y explique acoplamiento y cohesin en cada mdulo.

Ejercicio 1: Escribir un programa en el que se declara una variable entera y luego mostrar su valor y su
Direccin de memoria.

Ejercicio 2: Dados estos programas en C:

#include <stdio.h>
int main() {
char u,v;
char *pu, *pv;

...
v = 'A';
pv = &v;
*pv = v + 1;
u = *pv + 1;
pu = &u;
...
return 0;
}
#include <stdio.h>
int main() {
float a = 0.1, b = 0.2;
float c, *pa, *pb;
...
pa = &a;
*pa = 2 * a;
pb = &b;
c = 5 *(*pb - *pa);
...
return 0;
}
#include <stdio.h>
int main() {
int i, j = 25;
int *i, *j = &j;
...
*pj = j + 5;
i = *pj + 5;
pi = pj;
*pi = i + j;
...
return 0;
}
Teniendo en cuenta que:
cada carcter ocupa 1 byte de memoria y la variable u se sita en la direccin FC8 y la variable v se
sita en la direccin FD5 (hexadecimal)
cada variable de tipo float ocupa 4 bytes de memoria y la variable a se sita en la direccin 1230
(hexadecimal)
Objetivos:
Que el alumno
aprenda a utilizar el tipo de dato puntero.
aprenda los conceptos de funcin y procedimiento.
aprenda a utilizar variables globales y locales.
aprenda a diferenciar parmetros formales, actuales, por valor, por referencia.
aprenda los conceptos de acoplamiento y cohesin.

Bibliografa sugerida
Luis Joyanes Aguilar e Ignacio Martnez. Programacin en C. Metodologa, algoritmos y
estructuras de datos.
Cair, Osvaldo. Fundamentos de Programacin. Piensa en C.
Andrs Marzal e Isabel Gracia. Introduccin a la programacin con C.

Universidad Nacional de Salta Facultad de Ciencias Exactas
Ctedra: Programacin Ao 2014
suponiendo que cada variable entera ocupa 2 bytes de memoria y la variable i se sita en la
direccin 1000 y la variable j en la direccin 1002

Responder a las siguientes preguntas:

Qu valor representa &v?
Qu valor se asigna a pv?
Qu valor representa *pv?
Qu valor se asigna a u?
Qu valor representa &u?
Qu valor se asigna a pu?
Qu valor se asigna a *pu?
Qu valor representa &a?
Qu valor representa &b?
Qu valor representa &pb?
Qu valor se asigna a pa?
Qu valor representa *pa?
Qu valor representa &(*pa)?
Qu valor se asigna a pb?
Qu valor representa *pb?
Qu valor se asigna a c?
Qu valor representa &i y &j?
Qu valor se asigna a pj, *pj, y a
i?
Qu valor representa pi?
Qu valor se asigna a *pi?
Qu valor representa pi + 2?
Qu valor representa la
expresin (*pi+ 2)?
Qu valor representa la
expresin *(pi + 2)?

Ejercicio 3: Cree un programa, utilizando tipos de datos puntero, para que dados tres nmeros enteros los
muestre ordenados y los sume utilizando para el resultado de la suma una variable esttica.

Ejercicio 4: Para cada una de las siguientes tareas indicar el prototipo correcto de cada mdulo, justificando
porque es la correcta como as tambin porque descart las otras:
1) Sumar tres nmeros reales.
a) void suma (float a, float b, float c);
b) int suma(float a, float b, float c);
c) float suma(float a, float b, float c);
2) Determinar si un nmero entero es o no es primo
a) int EsPrimo(int n);
b) byte EsPrimo(float n);
c) void EsPrimo(int n);
d) void EsPrimo(int n; byte Si);
e) void EsPrimo(int *n; byte Si);
3) Mostrar un valor entero
a) void Mostrar(int Total);
b) void Mostrar(int *Total);
c) void Mostar(void);

Ejercicio 5: Desarrollar los siguientes mdulos:
a) Crear un mdulo que determine la suma de los divisores de un nmero (sin contarse a s mismo).
b) Crear un mdulo que dado un nmero natural lo convierta (modifique) a base 2.

Realizar un programa utilizando los mdulos anteriores para que dado un numero natural K >1 indique
para cada nmero natural menor que K si es Deficiente, Abundante o Perfecto y en caso de ser deficiente
convertirlo a base 2.

Universidad Nacional de Salta Facultad de Ciencias Exactas
Ctedra: Programacin Ao 2014
Un nmero natural N se dice que es deficiente si la suma de sus divisores (sin contarse a s mismo) es
menor a N. Si la suma de sus divisores es mayor a N se dice que el nmero es abundante y si es igual a N se
dice que es perfecto.

Ejercicio 6: Desarrollar los siguientes mdulos:
a) Realizar un mdulo que determine si dos nmeros son amigos o no.
Los nmeros son amigos, si cada uno de ellos es igual a la suma de los divisores del otro (tener en
cuenta que no se debe tomar al mismo nmero como divisor). Por ejemplo, 220 y 284 son amigos, ya
que:
Suma de divisores de 284: 1 + 2 + 4 + 71 + 142 = 220
Suma de divisores de 220: 1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284
Nota: si para la solucin de este problema detecta alguna otra tarea que deba ser un mdulo debe
implementarse.
b) Realizar un mdulo que determine si un nmero natural es primo.

Realizar un programa que utilizando los mdulos anteriores muestre todas las parejas de nmeros amigos
menores o iguales que N, donde N es un nmero natural ingresado por el usuario, no considere los nmeros
primos.

Ejercicio 7:
a) Para x e i dados, disear un mdulo que calcule la sucesin.

S
i
= 1 + X + X
2
/2! + X
3
/3! +...+ X
i
/i!

b) Realizar otro mdulo en el que dado x y un error, como parmetros, (por ejemplo 0.001) devuelva el
primer valor i que cumpla una aproximacin de e
x
.

Se cumple que lim S
i
= e
x

i -->+

Reutiliz el mdulo del inciso a)? Contestar las preguntas generales.

Ejercicio 8: Crear un mdulo que manipule dos nmeros enteros suprimiendo la ltima cifra del primero y
aadindola al final del segundo.
Realizar un programa que utilice dicho mdulo para invertir un nmero.
Ejercicio 9: Dada una lista de N nmeros reales se desea calcular y mostrar a medida que se ingresa, el valor de
la mantisa normalizada y el valor del exponente para cada uno de los nmeros. Mostrar el promedio de las
mantisas normalizadas y el promedio de los exponentes.

Ejercicio 10: Un grupo de adolescentes en Cachi estn aburridos en la plaza y deciden pasear por el pueblo
segn el azar. Recorrern las 6, principales, cuadras del pueblo que se encuentran en lnea recta. Los
adolescentes inician el paseo en la plaza y terminan de pasear si llegan a la 1er cuadra o si llegan a la 6ta
Universidad Nacional de Salta Facultad de Ciencias Exactas
Ctedra: Programacin Ao 2014
cuadra. Para elegir cual lado tomar (derecha izquierda) tiran la moneda con una probabilidad de 2/3 de ir a la
derecha (cara) y con una probabilidad de 1/3 de ir a la izquierda (seca).
1er cuadra
Plaza
6ta cuadra

Implementar un programa que dado un nmero de simulaciones y la cuadra de comienzo (la plaza) calcule el
porcentaje de veces que acaba en la 1er cuadra y el nmero medio de manzanas que recorre en cada viaje.
Contestar las preguntas generales.

Vous aimerez peut-être aussi