Professional Documents
Culture Documents
Octubre de 2013
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
CONTENIDO
Actividades de Autoevaluacin.............................................................................46
Fuentes Bibliogrficas..........................................................................................48
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
LISTADO DE TABLAS
Tabla 1.30
Tabla 2.31
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
Introduccin
5
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
Fases de un compilador.
Fuente: http://www.infor.uva.es/~mluisa/talf/docs/aula/A7.pdf
Segn, AHO, Alfred y Otros (1998) los compiladores estn conformados en seis
fases que se describen a continuacin:
Generacin de cdigo objeto:En esta fase final se genera por fin el cdigo
objeto, normalmente cdigo fuente, de mquina. Se seleccionan posiciones de
memoria relativas o registros para las variables y cada sentencia del cdigo
intermedio se traduce a una secuencia de instrucciones que ejecutan la tarea.
Una vez que haya descargado e instalado el compilador, puede acceder al entorno
del editor tal como se muestra en la imagen 2. El panel superior resaltada en el
circulo de color rojo el rea de edicin; mientras que el panel inferior donde se
visualiza el circulo de color azul es el rea de compilacin y ejecucin del
programa.
7
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
8
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
9
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
10
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
11
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
12
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
Solo debe seleccionar del men File la opcin New y obtiene el editor para iniciar
la edicin de un nuevo programa. Despus de la edicin se debe guardar el
programa en la ruta que desee siempre con la extensin .cpp antes de proceder a
compilar.
13
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
14
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
Imagen 12. Cdigo fuente del programa introduc.cpp presentado en el editor Turbo
C++ 3.0
Imagen 13. Salida en pantalla del programa introduc.cpp con Turbo C++3.0
15
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
Para tener una idea de la diferencia que puede presentarse con el cdigo fuente
entre los diversos compiladores, se realiza la comparacin del cdigo fuente del
programa introduccin.cpp que se present con borland C++5.5 y el mismo
programa presentado con turbo C++3.0.
Finalmente para solucionar el error solo se incluye en la segunda lnea del cdigo
la instruccin #include<stdlib.h> y listo, se guardan los cambios y se compila
nuevamente.
Una de las ventajas que ofrece este compilador es que atravs de la opcin de
ayuda Helpde la barra de mens, se puede determinar cual es el prototipo o
librera que falta incluir en el cdigo, es de esa manera que se identific que la
funcin system requiere la librera stdio.h.
Veamos como hacer uso del men de ayudas de Turbo C++3.0. Teniendo en el
editor el programa introduccin.cpp que se utiliz con Borland C++5.5. Solo debe
ingresar a la opcin del men Help y seleccionar del men contextual la opcin
Index le muestra algo similar a la imagen 15.
16
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
Sobre esa interfaz solo escribe la palabra system que es una palabra reservada
del lenguaje C++ la que gener el error y cuando aparezca resaltada tal como se
muestra en la imagen siguiente presiona la tecla Enter.
Imagen 15. Opcin Index del men de ayudas de turbo C++3.0
Este compilador por ser de uso libre est disponible en la web en sus diferentes
versiones, despus de su instalacin requiere configurar algunas propiedades, la
configuracin de este compilador puede consultarla en la web.
18
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
19
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
funcin principal main() sea declarada de tipo void, as: voidmain() declaracin
que si la permite Borland C++5.5 y Turbo C++3.0 en su cdigo fuente; en este
caso se remplaza el tipo voidporintquedando la funcin principal como intmain() y
al final del cdigo debe adicionrsele la instruccin return 0.
Esta leccin tiene como objetivo dar aplicabilidad al uso de los compiladores que
se han presentado en las lecciones anteriores y otros compiladores de C++ que
usted est familiarizado o que desee utilizar.
En tal sentido se proponen los siguientes programas para que usted y su grupo
colaborativo los implementen en cada uno de los tres compiladores que se han
presentado y de esta mera puedan identificar y establecer las diferencias entre
ellos, esta prctica le permitir familiarizarse con los compiladores, de tal manera
que usted tenga su propia percepcin y pueda elegir con cual o cuales de ellos
iniciar el desarrollo del curso.
Aplicacin a funciones.
20
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
2. GESTIN DE MEMORIADINMICA
Introduccin
La memoria (ROM) conocida como memoria de solo lectura, la cual es usada para
almacenar aplicaciones y datos de forma permanente.La informacin
generalmente es colocada desde su fabricacin en el chip de almacenamiento de
tal manera que su contenido no puede ser alterado por un programa de usuario.
Por ese motivo es una memoria slo de lectura.
22
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
Para darse una idea de cuantos bytes se requieren para almacenar datos de
diferentes tipos medido en trminos de bytes se presenta la siguiente tabla:
Char La letra X 1
23
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
24
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
A continuacin se presenta el cdigo fuente del pograma2 que hace uso de las
variables estticas como aplicacin.
Anlisis de Programa2.cpp
En el cdigo del programa se declaran tres variables estticas de tipo entero, ellas
son: suma que se declara en la lnea 3, numero1 que se declara con el valor 136
en la lnea 7 y numero2 se declara con el valor 369 en la lnea 8, en la lnea 9 la
variable suma almacena la sumatoria de las variables numero1 y numero2.
Las Estructuras
25
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
una ficha de datos bsicos de una persona como, el nombre, apallido, edad,
telfono, etc. Si se tratara de bases de datos se podra hablar de registros.
Para crear una estructura se debe definir los elementos que la componen, con ello
se definen las variables y el tipo de datos de cada una. Una estructura est
compuesta por el nombre de la estructura, los elementos de la estructura que
reciben el nombre de miembros y las instancias que son variables que
generalmente son del mismo tipo de la estructura utilizadas para acceder a los
miembros. La sintaxis es la siguiente
struct tipo_estructura
{
tipo miembro_1;
tipo miembro_2;
//
tipomiembro_n;
} lista de variable llamadas instancias;
Las variables de instancias pueden ser variables definidas del mismo tipo de la
estructura, se incluyen los apuntadores, utilizados en las estructuras dinmicas.
Las variables dinmicas deben su nombre al hecho de que pueden ser creadas y
destruidas durante el tiempo de ejecucin de un mdulo o de un programa.
Declaracin de apuntadores
27
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
Ejemplos:
28
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
Anlisis de Programa4.cpp
29
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
En la lnea 3, se define la funcin principal main() de tipo int, lo que indica que
puede retornarun valor de tipo entero valor.
Un apuntador es una variable que solo puede contener un valor a la vez, por lo
que solo puede apuntar a un objeto al mismo tiempo.
Por otro lado, una variable cualquiera puede ser apuntada(referenciada) por varios
30
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
Progra3.cpp
#include <iostream.h>
#include <conio.h>
int main()
{
int entero=1 ;
float decimal=1.1 ;
void *apvarios=&entero;
// apvarios APUNTA A entero *(int *)apvarios="1"
// ASIGNA 1 AL OBJETO APUNTADO POR apvarios
cout<< "El valor de entero es: "<<entero<<"\n" ;
apvarios=&decimal ;
// apvarios APUNTA A decimal *(float *)apvarios="1.1"
// ASIGNA 1.1 AL OBJETO APUNTADO POR apvarios
cout<< "El valor de decimal es: "<<decimal ;
getch();
}
Anlisis de Progra3.cpp
Analicemos la siguiente instruccin:
*(int *)apvarios = 1 ;
En donde:
Apuntadores acadenas
En este caso se define a nombre como un apuntador que apunta a datos de tipo
char, al que se le asigna la frase COMERCIO.
Progra4.cpp
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
int main()
{
char *nombre = "COMERCIO" ;
gotoxy(30,12);
32
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
Apuntadores a arreglos
Progra5.cpp
33
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
#include <iostream.h>
#include <conio.h>
#include <string.h>
using namespace std;
int main()
{
char *nombres[ ] = { "HUGO", "PACO", "LUIS" } ;
char invitado[11];
int bandera;
clrscr();
gotoxy(20,5);
cout<< "CUAL ES SU NOMBRE ?:" ;
gotoxy(50,10);
cin>>invitado ;
gotoxy(20,7);
for(int x = 0 ; x <3 ; x++ )
if(strcmp(invitado, nombres[x])== 0)
bandera=0;
if(bandera== 0)
cout<< "!! SIGA AMIGO ES BIENVENIDO " << invitado <<" !!";
elsecout<< "!! USTED NO ES BIENVENIDO, " << invitado <<" !!";
getch();
}
34
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
Progra7.cpp
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>
voidvalor(char *);
int main()
{
char cadena[81];
gotoxy(10,5);
cout<< "ESCRIBA UNA CADENA: ";
gets(cadena);
gotoxy(10,7);
valor(cadena);
getch();
}
35
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
Progra9.cpp
#include <iostream.h>
#include <conio.h>
int main()
{
int x, *a, **b, ***c ; // 1
clrscr();
a =&x ; // 2
*a = 100 ; // 3
b = &a ; // 4
**b += *a ; // 5
c = &b ; // 6
***c += **b + *a ; // 7
cout<< " *a=" << *a << " \n" ;
cout<< " **b=" << **b << " \n" ;
cout<< "***c=" << ***c << " \n" ;
getch();
}
36
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
37
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
Progra10.cpp
#include <iostream.h>
#include <conio.h>
int main()
{
clrscr();
int a; //a es un puntero
int * ap; //ap es un apuntador a un puntero
a = 7;
ap= & a; //ap toma la direccin de a
cout<<"la direccin de a es " <<&a;
cout<<" \n el Valor de ap es " <<ap;
cout<<"\n el valor de a es" <<a;
cout<<"\n el valor de *ap es " << *ap;
cout<<"\n\n\n Mostrando los valores de * y &" ;
cout<<"\n &* ap = " <<&*ap;
cout<<"\n *&ap = " << *≈
getch();
return 0;
}
Anlisis de Progra10.cpp
Tal como se observa en la imagen es la salida en pantalla del programa en el que
se aprecia la diferencia entre el valor de la variable a que devuelve un valor
numrico igual a 7; mientras que la variable ap devuelve la direccin de memoria
de a.
Figura 6 Salida en pantalla de progra10.cpp
38
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
La sintaxis para liberar la memoria previamente asignada por new es atravs del
operador delete asi:
Delete Apuntador;
39
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
La ejecucin de este operador provoca que se libere espacio, dejando como valor
indefinido, es decir el sistema operativo lo considera como memoria disponible.
Hay una regla de oro utilizada por algunos autores, se refiere a que cuando se usa
memoria dinmica, toda la memoria que se reserve durante el programa hay que
liberarla antes de salir del programa. No seguir esta regla es una actitud muy
irresponsable, y en la mayor parte de los casos tiene consecuencias desastrosas
que atentan con la estabilidad de su sistema. No es bueno fiarse de lo que diga el
compilador, de que estas variables se liberan solas al terminar la ejecucin del
programa, no siempre puede ser as.
Aplicacin de los operadores New y Delete
Progra15.cpp
#include <iostream.h>//1
#include <conio.h> //2
using namespace std;
int main() //3
{ //4
int *numero; //6
numero = new int ; //7
*numero = 10 ; //8
cout<<"VALOR DE NUMERO\n\n"; //9
cout<<"El resultado de numero es:" <<*numero ; //10
delete numero ; //11
getch(); //12
} //13
En el listado llamado Progra15.cpp, se supone que la reservacin ser exitosa
porque existe espacio suficiente en el montculo.
40
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
Pero quin asegura que el espacio requerido por new est disponible?. Para
controlar esta situacin y evitar un mensaje de error por parte del sistema en
tiempo de ejecucin, en el listado siguiente se propone una nueva versin del
programa.
Progra16.cpp
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int *numero;
if((numero = new int)==NULL)
{
cout<< "NO hay espacio suficiente\n";
exit(1);
}
*numero=20 ;
cout<<"Resultado\n\n";
cout<< "El resultado de numero es:"<<*numero ;
41
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
delete numero ;
getch();
}
El resultado en pantalla de Progra16.cpp se puede visualizar en la Figura 9.
Cuando se utiliza new para reservar memoria para un vector, el tamao del vector
se sita entre corchetes, siguiendo al tipo:
int *intvector;
intvector = new int [20];
y se libera:
delete [ ] intvector;
El valor retornado por new es la direccin del inicio de un bloque de memoria del
tamao requerido para almacenar 25 elementos de tipo double.
En caso de que el montculo no disponga del espacio requerido, new retorna el
valor NULL (nulo).
42
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
43
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
Progra17.cpp
/*
Tema: Gestin dinamica de memoria
Curso: 301305 Estructura de datos
44
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
//Funcin principal
int main()
{
int opcion;
do{
system ("cls");
cout<<"ADMINISTRAR CURSOS\n\n";
cout<<"\n1.Registrar cursos ";
cout<< "\n2.Listar cursos ";
cout<< "\n3. Salir";
cout<<"\n\nIngrese la opcion:";
cin>>opcion;
switch (opcion)
{
case 1: insertar();
break;
case 2: visualizar(); // llamado de la funcin visualizar
break;
case 3: delete cred; // liberacin de memoria
break;
default: cout<<"Opcion incorrecta";
45
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
break;
}
}while (opcion != 3);
system("PAUSE");
return EXIT_SUCCESS;
}
// definicion de la funcin que inserta los datos
void insertar()
{
cred = new curso;
cout<<"\nRegistrar el curso ";
cout<<"\n Nombre del curso : ";
cin>> cred->nombre;
cout<<"Codigo del curso : ";
cin>> cred->codigo;
}
46
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
Actividades de Autoevaluacin
47
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
int P = 10; // 1
int *x, *y; // 2
y = &P; // 3
x = y; // 4
cout<< El resultado de x es : << x ; // 5
Enunciado 2
Intpunt; // 1
punt = punt + 1; // 2
punt = punt 2; // 3
punt++; // 4
punt--; // 5
int main()
{
int m, *h, **s, ***q ; // 1
clrscr();
h =&m ; // 2
*h = 80 ; // 3
s = &h ; // 4
**s += *h ; // 5
q = &s ; // 6
***q += **s + *h ; // 7
cout<< " *h=" << *h << " \n" ; //8
cout<< " **s=" << **s << " \n" ; //9
cout<< "***q=" << ***q << " \n" ; //10
getch();
}
48
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
Ejercicio 6. Implementar un programa que asigne memoria con new y delete, para
un arreglo de estructuras, el cual desea llevar los registros bsicos de 5
mascotas, como: raza, nombre, color y edad Ingresados por teclado, adems de
determinar en tiempo de ejecucin el tamao del arreglo a utilizar.
49
INTRODUCCIN A LA ESTRUCTURA DE DATOS
Aplicacin de los entornos de desarrollo C++
Fuentes Bibliogrficas
51