Sei sulla pagina 1di 10

Instituto Politcnico Nacional

Escuela Superior de Ingeniera Mecnica y Elctrica


Unidad Profesional Adolfo Lpez Mateos

Ingeniera en Comunicaciones y Electrnica

Programacin Orientada a Objetos

Apuntes de Clase

Irvin Ramrez Altamirano

Grupo: 2CM8

Prof. Mara Alba Meja Contreras

Tipos de datos
El tipo de dato determina la naturaleza del valor que puede tomar una
variable. Un tipo de dato define un dominio de valores y las operaciones
que se pueden realizar con stos valores.
C++ dispone de unos cuantos tipos de datos predefinidos (simples) y
permite al programador crear otros tipos de datos.

Tipos de datos bsicos:

int
float
double
bool
char
void

(Nmeros enteros)
(Nmeros reales)
(Nmeros reales ms grandes que float)
(Valores lgicos)
(Caracteres y cualquier cantidad de 8 bits)
(Sirve para indicar que una funcin no devuelve valores)

Tipo int
Tamao en bytes: 2 (16 bits), 4 (32,64 o ms bits).
Dominio: Todos los nmeros enteros entre los valores -32.768 y 32.767.
Tipo float
Tamao en bytes: 4 (16 bits), 8 (32,64 o ms bits).
Dominio: Todos los nmeros reales que contienen una coma decimal
comprendidos entre los valores 3,4x10-38 y 3,4x1038.
Tipo double
Tamao en bytes: 8 (16 bits), 16 (32,64 o ms bits).
Dominio: Todos los nmeros reales que contienen una coma decimal
comprendidos entre los valores 1,7x10-308 y 1,7x10308.
Tipo Boole
Tamao en bytes: 1 byte
Dominio: Dos nicos valores {true, false}.
Tipo char
Tamao en bytes: 1 (16 bits), 1 (32,64 o ms bits).
Dominio: Dgitos, letras y signos de puntuacin.

Funciones

Sintaxis:

tipo_dato nombre_funcion (argumentos o parmetros) {


cuerpo_funcion
}
Tipos:
Retorno pero no recibo (funcin con retorno)
int fcn1 () {
...
return int;
}

float fcn1 () {
...
return float;
}
double fcn1 () {
...
return double;
}
char fcn1 () {
...
return char;
}
Retorno y recibo (funcin paso por valor con retorno)
void fcn1 (int x) {
...
return x;
}
Recibo pero no retorno (funcin paso por valor)
void fcn1 (int x) {
...
}
No retorno ni recibo (funcin vaca)
void fcn1 () {
...
}

Cadenas
Es un arreglo de caracteres.
Sintaxis:
char cadena [longitud_cadena];
Ejemplo:
char name [10];
Nota: El ltimo espacio es para el carcter nulo (\0).
Ejemplo: Cadena de longitud 5.
0
M

1
a

2
r

3
i

4
a

5
\0

Arreglo de dos dimensiones tipo char


Sintaxis:
char name [ndice][longitud];
Ejemplo:
char name [7][5];
1
2
3
4
5
6
7

F
R
I
D
S
J
R

R
U
R
I
A
U
A

A
B
V
A
R
A
F

N
E
I
N
A
n
A

C
N
N
A
H

Arreglos
Vectores:
Son arreglos unidimensionales.
Sintaxis:
tipo_dato nombre_vector [longitud];
Matrices:
Son arreglos bidimensionales.
Sintaxis:
tipo_dato nombre_vector [ndice][longitud];

Tipo de dato struct


Es un dato estructurado, puede tener ms de un miembro del mismo tipo de
dato, o diferentes tipos de dato.
Se reserva memoria para todos los miembros de la estructura.

Sintaxis:

struct nombre{
...
miembros
};
Ejemplo:
struct fecha{
int dia,mes,anyo;
}

Declaracin de variables:

Reglas a tomar en cuenta.

Antes del punto y coma (;).


En cualquier lugar despus de crear el dato. Se escribe el
nombre del tipo de dato, espacio y el nombre de la
variable.
Ejemplo:
strutct fecha{
...
}fechaNac;
fecha fechaNac;
Apuntadores a estructuras
Para acceder a un elemento de la estructura se utiliza el operador
flecha (->).
Sintaxis:
tipo_dato *nombre;

Objetos
Tienen dos caractersticas:
1) Atributos (Datos)
2) Mtodos (Funciones)

Objetos usando el tipo de dato class


Se pueden agregar niveles de seguridad.

private: slo funciones y datos miembro tienen acceso.


protected: slo funciones miembro y la herencia tienen acceso.
public: todos tienen acceso.

Nota: Por omisin es private.


Adems las funciones amigas tienen acceso a todo.

Ejemplo:

class vector{
private:
int tam,*v;
public:
void deleteVec();
void pedirVec();
void impVec();
void memDinVec();
};

Constructor y destructor

Constructor:
El nombre es el mismo que el de la clase.
Puede existir ms de uno, siempre y cuando no coincidad en el tipo
de dato de los parmetros o en la cantidad de ellos.
Destructor:
El nombre es el mismo que el de la clase, pero le antecede una
tilde ~ (alt+126).
No necesita parmetros.
Slo debe existir uno.
No retornan valores.
Ejemplo:
class vector{
private:
int tam,*v;
public:
void ~vector();
void pedirVec();
void impVec();
void vector(int);
}

Prcticas de Laboratorio
1.- Pide e imprime datos:
#include<stdio.h>
#include<iostream>
using namespace std;
char name[20],apP[15],apM[15];
char dir[100];
int edad;
long tel[2];
void pideDatos(void);
void imprimeDatos(void);
int main(void){
cout<<"Teclea tus datos:\n";
pideDatos();
cout<<"\nEstos son tus datos:\n";
imprimeDatos();
return 0;
}
void pideDatos(void){
cout<<"Nombre:\n";
gets(name);
cout<<"Apellido paterno:\n";
gets(apP);
cout<<"Apellido materno:\n";
gets(apM);
cout<<"Direccion completa:\n";
gets(dir);
cout<<"Edad:\n";
cin>>edad;

for(int i=0;i<2;i++){
cout<<"Telefono:"<<(i+1)<<":\n";
cin>>tel[i];
}

void imprimeDatos(void){
cout<<"Nombre: \n"<<name;
cout<<"\nApellido paterno: \n"<<apP;
cout<<"\nApellido materno: \n"<<apM;
cout<<"\nDireccion: \n"<<dir;
cout<<"\nEdad: \n"<<edad;
for(int i=0;i<2;i++){
cout<<"\nTelefono"<<(i+1)<<":\n"<<tel[i];
}
}

2.- Pide e imprime datos preguntando


el nmero de telfonos:
#include<stdio.h>
#include<iostream>
#define tam 2

using namespace std;


long tel[tam][2];
char name[tam][20],apP[tam][15],apM[tam][15];
char dir[tam][100];
int edad[tam];
int n;
void pideDatos(void);
void imprimeDatos(void);

struct datoFecha{
int dia,mes,anyo;
};
datoFecha pideFecha();
void imprimeFecha(datoFecha);
int main(){
int n,i;
datoFecha fechNac[10];

int main(void){
cout<<"Teclea tus datos:\n";
pideDatos();
cout<<"\nEstos son tus datos:\n";
imprimeDatos();
return 0;
}

cout<<"Cuantas fechas?"<<endl;
cin>>n;
for(i=0;i<n;i++){
cout<<endl<<"Fecha "<<(i+1)<<":"<<endl;
fechNac[i]=pideFecha();
}
for(i=0;i<n;i++){
cout<<endl<<"Fecha "<<(i+1)<<": ";
imprimeFecha(fechNac[i]);
}

void pideDatos(void){
for(int t=0;t<tam;t++){
cout<<"\nPersona "<<(t+1)<<":\n";
}
cout<<"Nombre:\n";
fflush(stdin);
gets(name[t]);
cout/*<<endl*/<<"Apellido paterno:\n";
gets(apP[t]);
cout/*<<endl*/<<"Apellido materno:\n";
gets(apM[t]);
cout/*<<endl*/<<"Direccion completa:\n";
gets(dir[t]);
cout/*<<endl*/<<"Edad:\n";
cin>>edad[t];
cout<<"Cuantos numeros telefonicos?";
cin>>n;
for(int i=0;i<n;i++){
cout<<"Telefono: "<<(i+1)<<":\n";
cin>>tel[t][i];
}

datoFecha pideFecha(){
datoFecha FN;
cout<<"dd mm aaaa"<<endl;
cin>>FN.dia;
cin>>FN.mes;
cin>>FN.anyo;
return FN;
}
void imprimeFecha(datoFecha FN){
cout<<endl<<FN.dia<<"/"<<FN.mes<<"/"<<FN.anyo;
}

}
}
void imprimeDatos(void){
for(int t=0;t<tam;t++){
cout<<"\n\nPersona "<<(t+1)<<":\n";
cout<<"Nombre: \n"<<name[t];
cout<<"\nApellido paterno: \n"<<apP[t];
cout<<"\nApellido materno: \n"<<apM[t];
cout<<"\nDireccion: \n"<<dir[t];
cout<<"\nEdad: \n"<<edad[t];
for(int i=0;i<n;i++){
cout<<"\nTelefono"<<(i+1)<<":\n"<<tel[t]
[i];
}
}
}

3-4.- Pide e imprime el nmero de


fechas que se pida:
#include<iostream>
using namespace std;

5.- Operaciones con Fracciones:


#include<iostream>
#include<stdlib.h>
using namespace std;

struct datoFraccion{
int num,den;
};
datoFraccion pedirFraccion();
void imprimirFraccion(datoFraccion);
datoFraccion
sumaFraccion(datoFraccion,datoFraccion);
datoFraccion
restaFraccion(datoFraccion,datoFraccion);
datoFraccion
multiplicaFraccion(datoFraccion,datoFraccion);
datoFraccion
divideFraccion(datoFraccion,datoFraccion);
int main(){
int opcion;
datoFraccion uno,dos,tres;
cout<<"Fraccion uno: \n";
uno=pedirFraccion();
cout<<"\nFraccion dos: \n";
dos=pedirFraccion();
for(;opcion!=5;){

}
void imprimirFraccion(datoFraccion temporal){
cout<<temporal.num
<<"/"
<<temporal.den;
}
datoFraccion sumaFraccion(datoFraccion
A,datoFraccion B){
datoFraccion C;
C.num=A.num*B.den+B.num*A.den;
C.den=A.den*B.den;
return C;
}
datoFraccion restaFraccion(datoFraccion
A,datoFraccion B){
datoFraccion C;
C.num=A.num*B.den-B.num*A.den;
C.den=A.den*B.den;
return C;
}

cout<<"\n\n1)Suma\n2)Resta\n3)Multiplicacion\n4)D
ivision\n5)Salir\n\n";
cout<<"Que operacion deseas realizar: \n";
cin>>opcion;
cout<<"\n";
switch(opcion){
case 1:
tres=sumaFraccion(uno,dos);
imprimirFraccion(uno);
cout<<"+";
imprimirFraccion(dos);
cout<<"=";
imprimirFraccion(tres);
break;
case 2:
tres=restaFraccion(uno,dos);
imprimirFraccion(uno);
cout<<"-";
imprimirFraccion(dos);
cout<<"=";
imprimirFraccion(tres);
break;
case 3:
tres=multiplicaFraccion(uno,dos);
imprimirFraccion(uno);
cout<<"*";
imprimirFraccion(dos);
cout<<"=";
imprimirFraccion(tres);
break;
case 4:
tres=divideFraccion(uno,dos);
imprimirFraccion(uno);
cout<<"/";
imprimirFraccion(dos);
cout<<"=";
imprimirFraccion(tres);
break;
default:
cout<<"Opcion no valida";
}
}
}

datoFraccion multiplicaFraccion(datoFraccion
A,datoFraccion B){
datoFraccion C;
C.num=A.num*B.num;
C.den=A.den*B.den;
return C;
}

datoFraccion pedirFraccion(){
datoFraccion temporal;
cout<<"Teclea el numerador: ";
cin>>temporal.num;
cout<<"Teclea el denominador: ";
cin>>temporal.den;
return temporal;

Programas hechos en clase

datoFraccion divideFraccion(datoFraccion
A,datoFraccion B){
datoFraccion C;
C.num=A.num*B.den;
C.den=A.den*B.num;
return C;
}

A continuacin se presentan algunos


de los programas realizados durante
en el saln y en el laboratorio.

1) Tipo de dato struct:

struct datoFraccion{
int num,den;
};

#include<iostream>
using namespace std;

datoFraccion *pideFraccion();
void imprimeFraccion(datoFraccion *);

struct datoFecha{
int dia,mes,anyo;
};

int main(){
datoFraccion *fraccion1;
cout<<"Teclea la fraccion:"<<endl;
fraccion1=pideFraccion();
cout<<endl<<"La fraccion es:";
imprimeFraccion(fraccion1);
}

datoFecha pideFecha();
void imprimeFecha(datoFecha);
int main(){
datoFecha fechNac;
cout<<"Teclea tu fecha de nacimiento:"<<endl;
fechNac=pideFecha();
cout<<"La fecha es:";
imprimeFecha(fechNac);
}
datoFecha pideFecha(){
datoFecha FN;
cout<<"dd mm aaaa"<<endl;
cin>>FN.dia;
cin>>FN.mes;
cin>>FN.anyo;
return FN;
}

datoFraccion *pideFraccion(){
datoFraccion *ND;
cout<<"Numerador:";
cin>>ND->num;
cout<<"Denominador:";
cin>>ND->den;
return ND;
}
void imprimeFraccion(datoFraccion *ND){
cout<<endl
<<ND->num<<"/"
<<ND->den;
}

void imprimeFecha(datoFecha FN){


cout<<endl<<FN.dia<<"/"<<FN.mes<<"/"<<FN.anyo;
}

2) Apuntadores a estructuras:
#include<iostream>
using namespace std;

3) Matriz:

#include<iostream>
using namespace std;
struct matrix{
int tam;
int **m;
void pideMatriz(int);
void imprimeMatriz();
void eliminaMAtriz();
};
int main(){
matrix A;
int t;
cout<<"Dame la dimension de la matriz: ";
cin>>t;
cout<<endl<<"Teclea la matriz uno:"<<endl;
A.pideMatriz(t);
cout<<endl<<"Esta es la matriz uno:"<<endl;
A.imprimeMatriz();
A.eliminaMAtriz();
//system("pause");
return 0;
}
void matrix::pideMatriz(int t){
m = new int *[t];//reervo memoria para las filas
if(m != NULL){//si aparto memoria
for(int i=0;i<t;i++)//recorro las filas
m[i] = new int [t];//se crea columnas para c/fila
}
for(int fila=0;fila<t;fila++)
for(int col=0;col<t;col++){
cout<<"["<<fila+1<<"]["<<col+1<<"]: ";
cin>>m[fila][col];
}
tam=t;
}
void matrix::imprimeMatriz(){
for(int fila=0;fila<tam;fila++){
for(int col=0;col<tam;col++)
cout<<m[fila][col]<<" ";
cout<<endl;
}
}
void matrix::eliminaMAtriz(){
delete []m;//borro columnas;
for(int i=0;i<tam;i++)
delete []m;//borro filas
}

Potrebbero piacerti anche