apuntes de poo

30
25 Instituto Politécnico Nacional Escuela Superior de Ingeniería Mecánica y Eléctrica unidad Zacatenco Apuntes de programación orientada a objetos Profesora: America Grupo: 2CM3 Alumno: Hernández Nicolás José Eduardo

Upload: eduardohernandez

Post on 23-Jan-2016

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Apuntes de POO

Instituto Politécnico Nacional

Escuela Superior de IngenieríaMecánica y Eléctrica

unidad Zacatenco

Apuntes de programación orientada a objetos

Profesora: America

Grupo: 2CM3

Alumno:

Hernández Nicolás José Eduardo

1

Page 2: Apuntes de POO

Contenido

Arreglos de caracteres.....................................................................................................................14Arreglos de números........................................................................................................................16Bibliografía.......................................................................................................................................3Cadenas de caracteres.....................................................................................................................14Definición de funciones....................................................................................................................11Estructura de los programas en C/C++........................................................................................4Estructuras anidadas........................................................................................................................17Funciones de usuario.......................................................................................................................10Regresar valor..................................................................................................................................11Temario.............................................................................................................................................3Tipos Estructurados: struct..............................................................................................................16UR1.cpp............................................................................................................................................4UR11.................................................................................................................................................16UR2.cpp..............................................................................................................................................9UR3.cpp..............................................................................................................................................9UR4 // programa Pacman.................................................................................................................12UR5...................................................................................................................................................13

2

Page 3: Apuntes de POO

Programación orientada a objetos

TEMARIO

1. Fundamentos de programación orientada a objetos.2. Clases y función miembro.3. Herencia y polimorfismo.4. Plantillas.5. Aplicaciones.

Bibliografía

1. C/C++, curso de programación, 2da. Ed. Fco. J. Ceballos, Alfaomega.2. Enciclopedia del lenguaje C++, 2da. Ed. Fco. J. Ceballos, Alfaomega.3. Programación orientada a objetos, 2da. Ed. Fco. J. Ceballos, Alfaomega.4. Programación orientada a objetos, 3da. Ed. Fco. J. Ceballos, Alfaomega.5. Aprenda y practique C++, 2da. Ed. Jamsa, Oxford.6. Resolución de problemas con C++ 2da. Ed. Savitch, Pretice Hall.7. Visual C++,NET, Pappas y Murray, Mac Graw Hill.8. Enciclopedia de Visual C++, 2da Ed. Fco. J. Ceballos, Alfaomega.

3

Page 4: Apuntes de POO

REPASO

Estructura de los programas en C/C++

Librerías. Definición de constantes o macros. Declaración de variables globales. Definición o declaración de funciones de usuario. Función principal

void main ( ){}

UR1.cpp

//Instrucción básica obligatoria para todos los programas en C++.

void main ( ){}

La estructura/sintaxis de las funciones es:

tipo de dato nombre de la función (lista de parametros) void main ( )

Cuando la función no es void, se tiene que agregar un return.

En turbo C

void main (void) { } O int main (void) { return 0; }

En Dev C++ y En Visual C++

int main ( ) { return 0; }

4

Page 5: Apuntes de POO

UR1_1.cpp

#include <iostream.h>#include “stdio.h”

Int main ( )

{ printf(“Texto en pantalla”); cout<<”Texto en pantalla con cout”; return 0;}

UR1_2.cpp

#include <iostream.h>#include <stdio.h>

const double PI=3.141592int main ( ){ cout<<Pi=”<<PI; return 0;}

#include <iostream.h>#include <stdio.h>#define PI 3.141592 //macro

int main (void){ printf(“PI=%f”,PI); Return 0;}

MACRO: Es un pedazo de código que es sustituido por una variable.

#define PI 3.141592#define p printf

int main ( ){ p(“PI=%f”,PI); return 0; }

#define T printf(“Presione una tecla para finalizar”);getch()

int main ( ){ P(“PI=%f”,PI); T; return 0;}

5

Page 6: Apuntes de POO

Estructura básica

- Librerías- Definición de macros.- Declaración de variables globales.-Definición/declaración de usuario Declaración de la función definida.- Función principal Int main ( ) { Return 0; }

UR1_4#include <iostream>#include<graphics>

using namespace std;

#define Azul BLUE#define Rojo RED

Int main ( ){ initwindow(800,600,”Programa colores”); setcolor(Rojo); circle(100,100,30); getch(); closegraph(); return 0;}

“Intrucciones del lenguaje C++”

if. Sirve para realizar preguntas de manera que la respuesta sea un SI o un NO.

switch. Sirve para evaluar una respuesta, donde esa respuesta puede ser un número o un caracter.

Ciclos – for, while, do while. Sirve para repetir/iterar una o más instrucciones.

6

Page 7: Apuntes de POO

Sintaxis

if( preguntas) -instrucciones del SI

else -instrucciones del NO

Se puede omitir el if pero no el elseif( ) -SI

Ejemplo:

if (10 > 11) cout<<”11 es el mayor”;//break por falta de respuesta que abra el SIelse cout<<”10 no es el mayos”;

switch(car){ case ‘A’: cout<<”Hola grupo 2CM3”; Instrucciones break;

case ‘S’: break; cout<<”Programa terminado…”; default: cout<<”Opción no valida”;}

Ciclos

for(condición inicial; condición final; incremento o decremento)

Ejemplo:

If anidados

If (pregunta) -SIelse if(pregunta) if(pregunta) -SI else –NO else -NO

7

for( i =1; i == 10; i ++) { cout<<i; cout<<endl; <- \n }

Nota: Para más de una instrucción se debe usar llaves {}

Page 8: Apuntes de POO

Condición inicial;While (condición final) -instrucciones -incremento o decremento

Ejemplo:

do while condición inicialdo{ //Puede estar donde sea la condicion inicial, pero adentro vuelve a tener condición inicial el mismo valor, depende del programa. Instrucciones Incremento o decremento }while(condición final)

Ejemplo:

UR2.cpp

#include <iostream>#include <stdio.h>#include <graphics.h>

int main (){ int x; int y; initwindow(640,480,"Dibuja puntos"); x=10; y=10;

for(x=10;x<=600;x++) { putpixel(x,y,RED); } system("pause"); closegraph(); return 0;}

8

i =1;while(i == 10) { cout<<i<<endl; i ++; }

i =1;do{ cout<<i <<endl; i ++; }while(i == 10);

Page 9: Apuntes de POO

UR3.cpp

#include <iostrean>#include <conio2.h> // graphies.h

using namespace std;

int main () //auttextxy(x,9,11*){ int x=40,y=24; char f; //initwindow(800,600,"Program"); gotoxy (x,y); //moveto(x,y); cout<<"*"; //outtext("*"); do{ getch (); f=getch();

switch (f) clrscr(); //clearderice(); { case 72: clrscr(); gotoxy(x,y--);//outtextx,y--"*"); cout<<"*"; break;

case 80: clrscr(); gotoxy(x,y++); cout<<"*"; break;

case 77: clrscr(); gotoxy(x++,y); cout<<"*"; break;

case 75: clrscr(); gotoxy(x--,y); cout<<"*"; break:

case 27: break: } } while (f!=27); return 0;}

Funciones de usuario

Sintaxis:Tipo de dato Nombre de la función (lista de parámetros o argumentos)

“Tipos de datos”

Los tipos de datos en C++Primitivos S.O 16 bits S.O 32 bitsTipo:Char 1 byte 2 bytesInt 2 bytes 4 bytesFloat 4 bytes 8 bytesdouble 8 bytes 16 bytes

9

Page 10: Apuntes de POO

1bit {01 sist . binario 8 bits ≈ byte

{ 0−¿9sistemaoctal { 0−¿9

sistema decimal{ 0−¿F

sistemahexadecimal

S.O. 64 bits

int 2 bytes 215 214 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22 21 20

float 4 bytes 231 230 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22 21 20

double 8 bytes 263 262 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22 21 20

Para excluir el tipo se usa void

Regresar valor

Siempre que una función sea distinta de void debe regresar con “return” el mismo tipo de dato de la función.

10

Ejemplo:

int suma (void)void suma (void){ int x,y,z; x=10; y=9; z=x+y; cout<<”La suma es: ”<<z;}

Ejemplo:

int suma (void){ int x,y,z; x=10; y=20; z=x+y; cout<<”La suma es: ”<<z; return (z);}

Page 11: Apuntes de POO

Definición de funciones

void suma (void){ int x,y,z; x=10; y=20; z=x+y; cout<<”La suma es: ”<<z;}

int main ();{ suma(); return 0;}

int suma (void)int main (void)

int main ();{ int R; R=suma(); return 0;}

int suma(void){ int x,y,z; x=10; y=20; z=x+y; return (z);}

UR4 // programa Pacman

#include <iostream>#include <graphics.h>#define Esc 27#define Arriba 72#define Abajo 80#define Der 77#define Izq 75

void Pacman_Der (int x,int y);void Pacman_Izq (int x,int y);void Pacman_Arr (int x,int y);void Pacman_Aba (int x,int y);void Fantasma ();

int main ()

{ char f; int x=50; int y=400; initwindow(800,600,"Pacman"); Fantasma(); Pacman_Der(x,y); do { getch(); f=getch(); switch(f)

11

Page 12: Apuntes de POO

{ case Arriba: cleardevice(); Fantasma(); if(y >= 50) { Pacman_Arr(x,y-=5); } else Pacman_Arr(x,y);

break;

case Abajo: cleardevice(); Fantasma(); if(y <= 550) { Pacman_Aba (x,y+=5); } else Pacman_Aba (x,y); break;

case Der: cleardevice(); Fantasma(); if(x <= 850) { Pacman_Der(x+=5,y); } else { x=0; Pacman_Der(x+=5,y); }

break;

case Izq: cleardevice(); Fantasma(); if(x >= -20) { Pacman_Izq(x-=5,y); } else { x=850; Pacman_Izq (x,y); } break;

case Esc: break;

}

}while (f!=Esc); system("pause"); closegraph(); return 0;}

void Pacman_Der (int x, int y){ setcolor(YELLOW); setfillstyle (1,YELLOW); pieslice(x,y,45,315,40);}

void Pacman_Izq (int x, int y){ setcolor(YELLOW); setfillstyle (1,YELLOW); pieslice(x,y,210,150,40);}

void Pacman_Arr (int x, int y){ setcolor(YELLOW); setfillstyle (1,YELLOW); pieslice(x,y,120,60,40);}

void Pacman_Aba (int x, int y){ setcolor(YELLOW); setfillstyle (1,YELLOW); pieslice(x,y,315,240,40);}void Fantasma (){ int x=500; int y=400; setcolor(RED); setfillstyle (1,RED); pieslice(x,y,0,360,35);

setcolor(BLACK); //BOCA setfillstyle (1,BLACK);

12

Page 13: Apuntes de POO

pieslice(x+3,y,0,360,25); setcolor(RED); setfillstyle (1,RED); pieslice(x+3,y-5,0,360,27);

setcolor (WHITE); //OJO IZQ setfillstyle(1,WHITE); pieslice(490,395,0,360,12); setcolor (BLACK); setfillstyle(1,BLACK); pieslice(490,395,0,360,5);

setcolor (WHITE); //OJO DER setfillstyle(1,WHITE); pieslice(520,395,0,360,12); setcolor (BLACK); setfillstyle(1,BLACK); pieslice(520,395,0,360,5);

}

UR5

#include<iostream>#include<conio2.h>#include<cstdlib>#include<stdlib.h>#include<windows.h>

using namespace std;

int main (){ int x,y,n; clrscr(); srand(time(NULL)); for(n=1;!kbhit();n++) { if(n>15) n=1;

else { textcolor(n); x=rand()%80; y=rand()%25; gotoxy(x,y); cout<<"*"; Sleep(10); } } return 0;}

13

Page 14: Apuntes de POO

Arreglos de caracteres

char name [10] 0 1 2 3 4 5 6 7 8 9

name

name [4]=getch();ocin>>name[4];

UR6#include <iostream>#include <conio2.H>

using namespace std;

int main (){ //int i; //i=0 char name [10]; system("cls"); /* */ name[0]='A'; name[1]='N'; name[2]='A'; cout<<"Nombre: "<<name[0]<<name[1]<<name[2]; getch(); return 0;}

14

‘\n’ Salto de línea

‘\r’ Enter

‘\a’ Pitido

‘\b’ barra de retroceso

Page 15: Apuntes de POO

UR6_1#include <iostream>#include <conio2.H>

using namespace std;

int main (){ int i; i=0; char name [10]; clrscr(); cout<<"\n\n\t Escribe un nombre:"; do { name[i]=getche(); }while (name [i++]!='\r'); cout<<"\n\n\tEl nombre es: "; i=0; do { cout<<name[i]; }while (name [i++]!='\r'); getch(); return 0;}

UR7

#include <iostream>#include <conio2.h>

using namespace std;

int main (){ char name[10]; char papel[10]; char sapel[10]; char nombre[50]; system("cls"); cout<<"\n\tNombre: "; cin>>name;

15

Page 16: Apuntes de POO

cout<<"\n\tApellido Paterno: "; cin>>papel; cout<<"\n\tApellido Materno: "; cin>>sapel; cout<<"\n\tEl primer nombre es: "<<name<<" "<<papel<<" "<<sapel<<endl; cin.ignore(); cout<<"\n\tDame otro nombre: "; cin.get(nombre,50); cout<<"\n\tEl segundo nombre es: "<<nombre; getch (); return 0;}

Cadenas de caracteresLa diferencia de arreglo y cadena es el NULL

Son un conjunto de caracteres de manera secuencial, al final debe existir un carácter especial llamado nolo (NULL) ‘\0’.

C++

cin>> name; // sin espacios en blanco.cin.get(name,10); //con espacios.

C

gets(name);scanf(“%s”,name);

name[0]=’A’name[1]=’N’name[2]=’A’name[3]=’\0’

16

‘A’ ‘N’ ‘A’ ‘\0’

Page 17: Apuntes de POO

Programa en clase para 2 puntos

#include <iostream>#include <conio2.h>

using namespace std;

Int main ();{ int i=0; char usu[10]; char pass[10]; gotoxy(15,20); cout<<”usuario”; cin.get(usu,10); cout<<”\n\n\tpassword: ” while((pass[i]=getch())!= ‘\r’) i++; cout<<”\nusu’”<<usu<<”pass\n\n”<<endl; for(i=0; i<10; i++) cout<<pass[i]; return 0;

}

UR8

#include <iostream>#include <conio2.h>

using namespace std;

int main (){ int i=0; char usu[10]; char pass[10]; cout<<"\n\n\tUsuario: "; cin.get(usu,10); cout<<"\n\n\t\tPassword: "; /*while(pass[i]=getch() !='\r') i++;*/ for(i=0;i<10;i++) cin>>pass[i];

17

Page 18: Apuntes de POO

cout<<"\n\tUsuario: "<<usu<<"\n\n\tPassword: "; for(i=0;i<10;i++) cout<<pass[i]; getch(); return 0;}

UR9#include <iostream>

#include <graphics.h>

using namespace std;

int main( ){

initwindow( 640 , 480 , "WinBGIm" );setfillstyle(1,RED);

bar(300,100,450,150);

int i;int x=300;int y=100;

i=0; char name [10]; cout<<"\n\n\t Escribe un nombre:"; do { setcolor(BLUE); moveto(x,y); name[i]=getch(); name[i+1]='\0'; outtext(name); // x+=10; }while (name [i++]!='\r');

getch();

closegraph( );return( 0 );

}

18

Page 19: Apuntes de POO

UR10

Arreglos de números

Puede ser float, double y nombre que sea.

Int vect[10]; 2 bytes por celda

Float w[5] ; 4 bytes por celda

Double [3]; 8 bytes por celda

UR11

#include <iostream>#include <conio2.h>#define f 4

using namespace std;

int main (){ float calif [30][4]; char names [30][50]; float suma=0; char l; int i,n,j; clrscr(); cout<<"Cuantos nomeres quieres? "; cin>>n; cin.get(l);

for(i=0; i<n; i++) { cout<<"Dame el nombre "<<i+1<<": "; cin.get(names[i],50); cin.get(l); } for(i=0; i<n; i++)

{ suma=0; for(j=0; j<3; j++) { cout<<"\nDame calificacion "<<i+1<<": "; cin>>calif[i][j]; suma=suma+calif[i][j]; } calif[i][j]=suma/3; }

clrscr(); cout<<"\nLos datos proporcionados son:"; j=3; for(i=0; i<n; i++) { cout<<"\n\nNombre: "<<names[i]<<endl; cout<<"\nCalificacion final: "<<calif[i][j]; cout<<"\n"; }

getch(); return 0;}

19

Page 20: Apuntes de POO

UNIDAD I Tipos Estructurados: struct

Sintaxis:

Struct nomstruct{ int d; int a; char m[10];}nomvar;

Estructura es un conjunto (más de 1) de datos de diferente o igual tipo

nombar.d=10;cin>>nomvar.m;nombar.a=2013;cinget(nomvar.names [0],50);

UI1

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

struct flecha{ int d,a; char m[20];}h;

int main(){ fecha f; clrscr(); cout<<”Dame una fecha: ”; cout<<”Dia: ”; cin>>f.d; cout<<”\n mes: ”;

cin>>f.m; cout<<”\nAnhos: ”; cin>>f.a; cout<<”\nDame la fecha de hoy: ”; cout<<”\nDia: ”; cin>>h.d; cout<<”\n mes: ”; cin>>h.m; cout<<”\nAnho: ”; cin>>h.a; clrscr(); cout<<"Hoy es:"<<h.d<<"/"<<h.m <<"/"<<h.a<<endl; cout<<"otra fecha es: "<<f.d<<"/" <<f.m<<"/"<<f.a<<endl; getch(); return 0;}

20

Page 21: Apuntes de POO

Estructuras anidadas

Una estructura anidada es una estructura o más dentro de otrasintaxis:

Struct una{ int x,y;}h;

h.x;h.y;

Struct dos{ char name[50]; Una dentro;}

Struct dos{ char name[50]; struct una { int x,y; }dentro;}cajota;

UI2

#include<iostream>#include<conio2.h>#include<string.h>

using namespace std;

struct datos{ char name[50],dir[80]; char email[80], tel[30]; int edad;}agenda;

void introduce (void);void cambio (void);void eliminar (void);

void introduce (void);{

cout<<"\n7.Regresar"; rc=getch();

switch(rc) { case '1': clrscr(); cout<<"Nombre: "; cin.get(agenda.name,50); break;

case '2': clrscr(): cout<<"Direccion: "; cin.get(agenda.dir,80); break;

case '3': clrscr(); cout<<"Telefono: "; cin.get(agenda.tel,30); break;

21

Page 22: Apuntes de POO

char l; //para quitar el enter cout<<"Itroduce los datos"<<endl; cout<<"nombre: "; cin.get(agenda.name,50); cout<<"Direccion: "; cin.get(l);// para limpiar el buffer del teclado cin.get(agenda.dir,80); cout<<"Telefono: "; cin.get(l); cin.get(agenda.tel,30); cout<<"email: "; cin.get(l); cin.get(agenda.email,80); cout<<"Edad: "; cin>>agenda.edad;}

void cambios (void){ char rc; if(cont!=0) { cout<<"Que cambio deseas?"<<endl; cout<<"\n1.Nombre"; cout<<"\n2.Direccion"; cout<<"\n3.Telefono"; cout<<"\n4.Email"; cout<<"\n5.Edad"; cout<<"\n6.Todos";

int main (){ char op; int r; clrscr(); cout<<"*** Menu ***"<<endl; cout<<"\n1. Introducir datos"; cout<<"\n2. Cambios"; cout<<"\n3. Borrar "; cout<<"\n4. Salir"; cin>>r;// op=getch();

switch (r) { case '1': clrscr(); introduce(); break;

case '4': clrscr(); cout<<"Email: "; cin.get(agenda.email,80); break;

case '5': clrscr(); cout<<"Edad: "; cin>>agenda.edad; break;

case '6': clrscr(); introduce(); break;

case '7': break;

default: cout<<"opcion no valida";

} } else cout<<"no hay datos"; getch();}

void borrar (void){}

22

Page 23: Apuntes de POO

case '2': clrscr(); cambios(); break;

case '3': clrscr(); borrar(); break;

case '4': break;

default: cout<<"Opcion no valida"; } getch(); return 0;

23

Page 24: Apuntes de POO

UI3

#include<iostream>#include<conio2.h>#include<string.h>

using namespace std;

struct personales{ char name[50], dir[80], tel[30]; int edad;};

struct prof{ personales pers; char cat[30],materia[30]; float salario;}docente;

struct alumno{ personales al; char bol[30],carrera[30]; char gpo[20],salón[20]; float prom;}alumno;

void introProfe (void);void introAlum (void);void muestraProfe (void);void muestraAlum (void;)

int main (){ clrscr(); introProfe(); introAlum(); muestraProfe(); muestraAlum(); getch(); return 0;}

void introProfe (void){ char l; cout<<”Nombre profesor: ”; cin.get(docente.pers.name,50); cout<<”\nDireccion: ”; cin.get (l); cin.get(docente.pers.ir,80); cout<<”\n Tel: ”; cin.get (l); cin.get(docente.pers.tel,30); cout<<”\n Edad: ”; cin>>docente.pers.edad; cout<<”\nCategoria: ”; cin.get(l); cin.get(docente.cat, 30);

cout<<”\n Promedio: ”; cin>>alumno.prom;}

void muestaProf (void){ clrscr(); cout<<”\nLos datos del profesor son: ”; <<”\nNombre: ”<<docente.pers.name <<”\nDireccion: ”<<docente.pers.dir <<”\nTelefono: ”<<docente.pers.tel <<”\nEdad: ”<<docente.pers.edad <<”\nCategoria: ”<<docente.cat <<”\nMateria: ”<<docente.materia <<”\nSalario: ”<<docemte.salario; getch();

24

Page 25: Apuntes de POO

cout<<”\n salario: ”; cin>>docente.salario; }

void introAlum (void){ char l; cout<<”Nombre del alumno: ”; cin.get(l); cin.get(alumno.name, 50); cout<<”\nDireccion: ”; cin.get(l); cin.get(alumno.al.dir,80); cout<<”\n Telefono: ”; cin.get(l); cin.get(alumno.al.tel,30); cout<<”\n edad: ”; cin>>alumno.al.edad; cout<<”\n Boleta: ”; cin.get(l); cin.get(alumno.bol,30); cout<<”\n Carrera: ”; cin.get(l); cin.get(alumno.carrera,30); cout<<”\nGrupo: ”; cin.get(alumno.gpo,20); cout<<”\n Salon: ”; cin.get(l); cin.get(alumno.salon,20);

}

void muestraAlum (void){ clrscr(); cout<<”\nDatos alumno: ”; cout<<”\nNombre: ”<<alumno.al.name <<”\nDireccion: ”<<alumno.al.dir <<”\nTelefono: ”<<alomno.al.tel <<”\nEdad: ”<<alumno.al.edad <<”\nBoleta: ”<<alumno.bol <<”\nCarrear: ”<<alumno.carrera <<”\nGrupo: ”<<alumno.gpo <<”\nSalon: ”<<alumno.salon <<”\nPromedio: ”<<alumno.prom;}

25