viernes, 19 de noviembre de 2010

ESTRUCTURAS EN C

Una Estructura es:

 una colección de variables simples, que pueden contener diferentes tipos de datos. Es un tipo de dato definido por el usuario. Son también conocidas como Registros. Ayudan a organizar y manejar datos complicados en programas debido a que agrupan diferentes tipos de datos a las que se les trata como una sola unidad en lugar de ser vistas como unidades separadas.

La Declaración de estructuras:
 en programas C es un nuevo tipo de datos denominado tipo Estructura y declarar una variable de este tipo.

En la definición del tipo de estructura, se especifican los elementos que la componen así como sus tipos. Cada elemento es llamado miembro (similar a un campo de un registro).

programa de un estructura (codigi fuente):

#include<iostream>
#include<conio.h>
using namespace std;
struct alumno                                        //aqui se declara la estructura llamada alumno
{
char nombre[15];                                  //se declaran las variables de la estructura
int matricula;
int cal1,cal2,cal3,prom;

void datos()                                       //dentro de la estrucctura se hace una funcion donde se van a pedir los datos del alumno
{
cout<<"escribe la matricula"<<endl;
cin>>matricula;
cout<<"escribe el nombre"<<endl;
cin>>nombre;
cout<<"escribe la calificacion 1"<<endl;
cin>>cal1;
cout<<"escribe la calificacion 2"<<endl;
cin>>cal2;
cout<<"escribe la calificacion 3"<<endl;
cin>>cal3;
prom=(cal1+cal2+cal3)/3;

}
void imprimir()                                    //se hace otra funcion donde se van a imprimir los datos del alumno
{
cout<<"la matricula es   "<< matricula<<endl;
cout<<"el nombre  es  "<< nombre<<endl;
cout<<"el promedio es "<< prom<<endl;

}a;
 int main()                                    //dentro del main se van a instanciar los datos y la impresion que se hizo en la estructura
{
a.datos();
a.imprimir();
getch();
return 0;
}

Asignación dinámica de memoria


Asignación dinámica de memoria: new y delete

En C la asignación dinámica de memoria se manipula con las funciones malloc() y free(). En C++ se define un método de hacer asignación dinámica utilizando los operadores new y delete.
El operador new está disponible directamente en C++, de modo que no se necesita utilizar ningún archivo de cabecera; new se puede utilizar con dos formatos:new tipo // asigna un único elemento
new tipo[num_eltos] // signa un array
Si la cantidad de memoria solicitada no está disponible, el operador new proporciona el valor 0. El operador delete libera la memoria signada con new.delete variable
delete [n] variable
new es superior a malloc por tres razones:
1.-
new conoce cuánta memoria se asigna a cada tipo de variable.
2.- 
malloc() debe indicar cuánta memoria asignar.
3.-
new hace que se llame a un constructor para el objeto asignado y malloc no puede.
delete produce una llamada al destructor en este orden:
1. Se llama al destructor
2. Se libera memoria
delete es más seguro que free() ya que protege de intentar liberar memoria apuntada por un puntero nulo.
Bibliografía de la investigación:
código fuente del programa:
#include<iostream.h>
#include<conio.h>
int main(void)
{
clrscr();
int *vector, tm;
int indice=0,i;
cout<<"Ingrese el numero de elementos:";
cin>>tm;
vector = new int[tm];//asignacion dinamica de memoria.
for(indice=0;indice<tm;indice++)
{
cout<<"Introduzca un vector["<<indice + 1<<"]:";
cin>>vector[indice];                                                                      
}
for(i=0;i<tm;++i)
{
cout<<vector[i]<<endl;
}
return 0;
}

 
En este programa se le pide al usuario que inserte el número de elementos que va a  tener su vector  y con el oprador NEW sele asigna el valor a cada elemento del vector, después con un ciclo for se imprime en pantalla el valor que se le asigno al elemento.