apuntes de poo

Post on 23-Jan-2016

221 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

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

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

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

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

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 {}

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);

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

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);}

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

{ 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

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

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

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

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’

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

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

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

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

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

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

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

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

case '4': break;

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

23

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

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

top related