Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Apuntes de Clase
Grupo: 2CM8
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.
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:
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
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];
Sintaxis:
struct nombre{
...
miembros
};
Ejemplo:
struct fecha{
int dia,mes,anyo;
}
Declaracin de variables:
Objetos
Tienen dos caractersticas:
1) Atributos (Datos)
2) Mtodos (Funciones)
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];
}
}
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];
}
}
}
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;
datoFraccion divideFraccion(datoFraccion
A,datoFraccion B){
datoFraccion C;
C.num=A.num*B.den;
C.den=A.den*B.num;
return C;
}
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;
}
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
}