Вы находитесь на странице: 1из 15

FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA

U
ESTRUCTURAS DE DATOS.
Tutor: Haimer Gutierrez M.
Ingeniero Esp. de Sistemas
Universidad Abierta y
Nacional a Distancia
NAD
APUNTADORES
ESTRUCTURA DE DATOS
(ACTIVIDAD 1)

ELABORADO POR:
DIANA MARCELA SALCEDO
ANGELA ROCIO GOMEZ LOPEZ

PRESENTADO A:
ING HAIMER GUTIERREZ

UNAD
UNIVERSIDAD NACIONAL ABIERTA Y ADISTANCIA
ACACIAS
IV SEMESTE ING SISTEMAS
2008
FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA

U
ESTRUCTURAS DE DATOS.
Tutor: Haimer Gutierrez M.
Ingeniero Esp. de Sistemas
Universidad Abierta y
Nacional a Distancia
NAD

INRODUCCION.

La memoria de un computador esta compuesta por una unidad llamada bits, Cada
bits solo puede tomar un valor a la vez, los apuntadores son variables
automáticas cuyo valor representa direcciones de memoria correspondiente a
otras variables. Un apuntador solo puede contener una dirección a la vez o
apuntar a un objeto al mismo tiempo.

La memoria de acceso aleatorio (RAM) es volátil se encuentra en circuitos


integrados o chips, esta memoria recuerda datos mientras esta encendida y
pierde su información una vez es apagada.
Las variables estáticas son aquellas que el programador a asignado antes de su
ejecución, son llamadas mediante el nombre de la misma que a su vez fue
escogido por su programador.
FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA

U
ESTRUCTURAS DE DATOS.
Tutor: Haimer Gutierrez M.
Ingeniero Esp. de Sistemas
Universidad Abierta y
Nacional a Distancia
NAD

OBJETIVOS

 Conocer claramente la forma adecuada de utilizar los


apuntadores.

 Diferenciar objetivamente las variables automáticas


apuntadas.

 Utilizar los apuntadores en arreglos y en cadenas de manera


especifica.
FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA

U
ESTRUCTURAS DE DATOS.
Tutor: Haimer Gutierrez M.
Ingeniero Esp. de Sistemas
Universidad Abierta y
Nacional a Distancia
NAD

MARCO TEORICO.

APUNTADORES.

La Memoria de un computador esta compuesta por una unidad llamada bist, cada
bist solo puede tomar 2 valores 1 – 0
Cada bist tiene una dirección de memoria. Un apuntador es una variable en donde
se almacenan las direcciones de memoria de otras variables a las que apuntan y
representan el lugar donde se almacena un dato.

Int * x;
Char * Y ;
Double * p, *q ;

 * in dirección retorna la información a ese lugar.


 & devuelve la información a la dirección de memoria

VARIABLE AUTOMATICAS

Las variables automáticas se crean en el tiempo de la compilación y se destruyen


al terminar su ejecución, un apuntador solo puede contener una dirección a la vez
o apuntar a un objeto al mismo tiempo; los apuntadores también pueden ser
referenciados por varios apuntadores ya que una dirección puede ser almacenada
FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA

U
ESTRUCTURAS DE DATOS.
Tutor: Haimer Gutierrez M.
Ingeniero Esp. de Sistemas
Universidad Abierta y
Nacional a Distancia
NAD
en distintas variables a la vez, al declarar un apuntador se especifica el tipo de
variable al que apunta.

APUNTADORES A APUNTADORES.

Int X , * A **B, ***C;


X es una variable tipo entero
A un apuntador de tipo entero
B como apuntador a un apuntador
C como un apuntador que apunta a un apuntador que apunta a otro apuntador.

OPERACIONES CON OTROS APUNTADORES.

Int a = 15;
Int * p, * q ;
Q = & a;
P=q;
Cout << p;

 +p= p+1 “ p avanza un entero”


 p= p – 2 “ p retrocede dos enteros”
 ++ P++; “ p apunta al siguiente entero”
 -- p-- ; p apunta al entero anterior.

GESTION DINAMICA DE MEMORIA


FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA

U
ESTRUCTURAS DE DATOS.
Tutor: Haimer Gutierrez M.
Ingeniero Esp. de Sistemas
Universidad Abierta y
Nacional a Distancia
NAD
Memoria de acceso aleatorio (RAM) se encuentra en circuitos integrados o chips,
recuerda la información mientras la computadora esta encendida pero una vez se
apaga esta perder la información.

El byte es la unidad de medida fundamental de la memoria de una computadora.

VARIABLES ESTATICAS.

Son las que el programador les asigna memoria antes de su ejecución, son
llamadas mediante el nombre de la misma, que ha declarado el programador.

VARIABLES DINAMICAS.

Pueden ser creadas y destruidas durante el tiempo de ejecución. Para su manejo


se utilizan los apuntadores y funciones.

OPERADORES NEW, DELETE Y FUNCIONES MALLOC, FREE.

NEW: asigna un bloque de memoria


DELETE: libera un bloque de memoria asignada, provoca que se libere espacio;
el sistema operativo lo considera como memoria disponible
Como principio

“toda memoria que se reserve durante el programa hay que liberarlo antes de salir
de el”

Int * int vector


Int vector = New in {20};
FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA

U
ESTRUCTURAS DE DATOS.
Tutor: Haimer Gutierrez M.
Ingeniero Esp. de Sistemas
Universidad Abierta y
Nacional a Distancia
NAD

ACTIVIDAD 1

Codifique el siguiente programa, capture los pantallazas de resultado, comente cada línea
de código para indicar el propósito de la misma

1.

#include <iostream.h> //librería para emplear el cout y el cin.

#include <conio.h> /*librería para resolver operaciones matemáticas*/

int main() //función principal.

{ //inicia un ciclo.

textcolor(WHITE); /*función que permite dar el color del texto*/

textbackground(BLUE);//funcion que permite dar el color del fondo del programa.

clrscr (); //funcion que limpia la pantalla.

Int intvar = 10; //se declaran variables tipo entero llamada intvar inicializada en
10.

Int *intap; //define el apuntador.

Intap = &intvar; // asigna la dirección del contenido de intap almacenada en intvar

Cout << "\nUbicaci"<<'\u00A2'<<"on de intvar: " << &intvar; /*muestra la ubicación


del contenido del variable*/

Cout << "\nContenido de intvar: " << intvar; /*muestra el contenido de la variable*/

Cout << "\nUbicaci"<<'\u00A2'<<"on de intap: " << &intap; /*muestra la ubicación del
contenido*/
FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA

U
ESTRUCTURAS DE DATOS.
Tutor: Haimer Gutierrez M.
Ingeniero Esp. de Sistemas
Universidad Abierta y
Nacional a Distancia
NAD
Cout << "\nContenido de intap: " << intap; /*muestra el contenido de intap*/

Cout << "\nEl valor al que apunta intap es: " << *intap;/* muestra el valor del contenido
de la variable*/

Getch ();// funcion que permite detenerse

Return 0;// funcion que retorna un valor.

} /* cierra el ciclo*/

/ubicación/uDDA2on de invitar contenido/ de intimar el valor que captura._

2. /*Programa que maneja cadenas utilizando apuntadores.*/

#include <iostream.h> // librerías o archivos de cabecera que permiten utilizar cout cin.

#include <conio.h> //librería que permite resolver operaciones matemáticas.

void main() //funcion principal.

textcolor(WHITE); // funcion que permite dar color al texto.

textbackground(BLUE); //funcion que permite dar color al fondo.

clrscr(); // funcion que permite limpiar la pantalla.

char nombre[40]; //declara variable tipo caracteres con arreglo de 40.

char *apNombre = nombre; //indica la direccion de la variable nombre.

int pos, numElementos; //declara la variable tipo entero /num. de elementos

Cout << "Escribe una oraci"<<'\u00A2'<<"n para el arreglo (MAX 40 letras): ";
//permite ingresar una oración no superior a 40 caracteres.
FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA

U
ESTRUCTURAS DE DATOS.
Tutor: Haimer Gutierrez M.
Ingeniero Esp. de Sistemas
Universidad Abierta y
Nacional a Distancia
NAD
cin.>> (nombre,40,'\n'); // lee los nombres.

Cout << "Cu"<<'\u00A0'<<"ntos caracteres quieres ver de la sentencia?"; // muestra los


caracteres de la sentencia.

Cin >> numElementos; // lee el numero de elementos.

for (pos = 0; pos < numElementos; pos++)// ciclo que permite contar el numero del
consecutivo de elemento.

Cout << *apNombre++; // muestra el contenido.

cout << '\n'; //lee la opción.

getch(); // funcion que permite al programa detenerse.

} // Cierra el ciclo.

Escriba una oraci/uDDA2 para el arreglo (máx. 40 letras) _ Ángela Gómez _ Diana V.

3.

# include <iostream.h> // librería.

Main ( )// funcion principal.


{// Apertura del ciclo.
int tabla [10], minimo (int *a, int n); //declara la variable tipo entero condicional minimo
10 con apuntador a la direccion a.

Cout << "Introduzca 10 enteros: \n"; // permite ingresar 10 enteros


for (int i=0,i<10,i++) cin>>tabla[i]; // ciclo for para contar los enteros.
Cout<<"\n el valor minimo es" // mostrar el minimo valor.
<<Minimo (tabla,10)<<end; //mostrar el numero de caracteres.
}// ciclo el ciclo.

int minimo (int *a, int n)// declara la variable minimo con un apuntador.
{ int menor; // abre ciclo nuevo//*declara variables locales tipo entero*/
menor=*a;// la variable menor se almacena el a.
for (int i=1;i<n;i++) if (*(a+1)<menor) // ciclo for para contar las posiciones de a.
menor=*(a+i); // la variable menor apunta da a+i.
FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA

U
ESTRUCTURAS DE DATOS.
Tutor: Haimer Gutierrez M.
Ingeniero Esp. de Sistemas
Universidad Abierta y
Nacional a Distancia
NAD
return menor;// la funcion retorna el menor valor.
} /*Cierra el ciclo*/

Introduzca 10 enteros___

4. Desarrollar el código fuente para los siguientes ejercicios:

a. Problema: Busca en un arreglo p un alumno y regresa su calificación o -1 si no


lo encuentra
Prototipo: int busca_alumno(Alumno *p, char *alumno)
Prueba: Llamar e imprimir el resultado de dos búsquedas, una exitosa y otra que
falle.
#include<iostream.h>
#include<conio.h>
int main()
{
Textcolor(WHITE);
Textbackground(BLUE);
clrscr ();
int CALIFICACIONES;
char nombre[40];

cout<<("BIENVENIDOS");
gotoxy(05,10);
cout<<("INFORMES EDUCTIVOS");
gotoxy(10,10);
cout<<("ingrese el nombre del alumno");
gotoxy(15,10;
cout<<("ingrese las calificaciones");
Gotoxy(18,10);
cout<<("imprimir informes");
cin>>("capturar informes");

cout<<("resultado");
return (0);
} BIENVENIDOS
INFORMES EDUCATIVOS

Ingrese el nombre del alumno_


Xxxx
Ingrese las calificaciones_
x.x
FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA

U
ESTRUCTURAS DE DATOS.
Tutor: Haimer Gutierrez M.
Ingeniero Esp. de Sistemas
Universidad Abierta y
Nacional a Distancia
NAD

b. Problema: Comparar dos arreglos (p,q) y que regrese verdadero si ambos


arreglos son idénticos
Prototipo: int compara_alumnos(Alumno *p, Alumno *q)
prueba: Llamar e imprimir el resultado de dos búsquedas, una exitosa y otra que
falle.
#include <iostream.h>
#include <conio.h>
Void main ().
{
textcolor(WHITE);
textbackground(BLUE);
clrscr();
int calificaciones;
char nombres alumnos [20];
int * N
char * A
N=&calificaciones;
A=&nombres alumnos;
Cout<<(“BIENVENIDOS A INFORMES EDUCATIVOS”);
Gotoxy (08,08);
Cout<<(“ingrese el nombre del alumno [20]);
Gotoxy (10,10);
Cin>>(“capture los nombres alumnos”);
Cout<<(“ingrese las calificaciones”);
Gotoxy (12,12);
Cin>>(“capture las calificaciones”);
For (N=calificaciones;i<N,i++)
For(N==A)
Cout<<(“lo sentimos no produjo ningún resultado”);
For (N!=A)
Cout<<(“imprimir los informes”);
}
FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA

U
ESTRUCTURAS DE DATOS.
Tutor: Haimer Gutierrez M.
Ingeniero Esp. de Sistemas
Universidad Abierta y
Nacional a Distancia
NAD

BIENVENIDOS A INFORMES EDUCATIVOS

Ingrese el nombre del alumno_


Xxxx
Ingrese las calificaciones_
x.x

Imprimir los informes_


c. Problema: Copiar de un arreglo (p) todos sólo el conjunto de alumnos cuya
calificación sea mayor o igual a calif
Prototipo: Alumno *copiar_aprobados(Alumno *p, unsigned calif)
#include <iostream.h>
#include <conio.h>
Void main ().
{
textcolor(WHITE);
textbackground(BLUE);
clrscr();
int calificaciones;
char nombres alumnos [20];
int * N
char * A
N=&calificaciones;
A=&nombres alumnos;
Cout<<(“BIENVENIDOS A INFORMES EDUCATIVOS”);
Cout<<(“ingrese el nombre del alumno [20]);
Cin>>(“capture los nombres alumnos”);
Cout<<(“ingrese las calificaciones”);
Cin>>(“capture las calificaciones”);
For (N=calificaciones;i<N,i++)
For(N==A)(“reprobados”);
Cout<<(“reprobados”);
For (N!=A)(“aprobados”);
Cout<<(“aprobados”);
}

BIENVENIDOS A INFORMES EDUCATIVOS

Ingrese el nombre del alumno_


Xxxx
Ingrese las calificaciones_
x.x
Imprimir los informes_
Aprobados/reprobados
FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA

U
ESTRUCTURAS DE DATOS.
Tutor: Haimer Gutierrez M.
Ingeniero Esp. de Sistemas
Universidad Abierta y
Nacional a Distancia
NAD

NOTA: TODOS LOS PROGRAMAS DEBEN LLEVAR ANEXO PANTALLAS DE RESULTADOS


DE LA EJECUCION DEL PROGRAMA. SE RECOMIENDA INTENTAR LA CODIFICACION Y
LOS INCONVENIENTES COMUNICARLOS.
FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA

U
ESTRUCTURAS DE DATOS.
Tutor: Haimer Gutierrez M.
Ingeniero Esp. de Sistemas
Universidad Abierta y
Nacional a Distancia
NAD

Conclusiones

 Un apuntador es una variable en donde se almacenan las direcciones de

memoria de otras variables a las que apuntan y representan el lugar donde

se almacena un dato.

 Un apuntador solo podrá contener una dirección a la vez o apuntar a un

objeto al mismo tiempo.

 Las variables estáticas son aquellas que el programador a asignado antes

de su ejecución

 Las variables dinámicas son creadas y destruidas durante el tiempo de

ejecución. Para su manejo se utilizan los apuntadores y funciones.


FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA

U
ESTRUCTURAS DE DATOS.
Tutor: Haimer Gutierrez M.
Ingeniero Esp. de Sistemas
Universidad Abierta y
Nacional a Distancia
NAD

BIBLIOGRAFIA

Modulo “aprenda C como si estuviera en primero”


Modulo: “estructura de Datos”
Modulo: “iniciación a lenguaje C”.

Вам также может понравиться