Sei sulla pagina 1di 38

CPA-PROG ESSENTIAL C++ (CISCO)

II SEMESTRE
Carrera de Desarrollo de Software

www.senati.edu.pe
www.senati.edu.pe
Lenguaje C++
Introducción
• B. Stroustrup, mediados de los 80, AT&T

• Paso de la programación tradicional (C) a estilos de


abstracción de datos y orientación a objetos
• Conserva características del C y añade nuevos
conceptos

www.senati.edu.pe
Lenguaje C++
Extensiones respecto al C
• No orientadas a objeto
• Orientadas a objetos

www.senati.edu.pe
Lenguaje C++
Extensiones respecto al C
• No orientadas a objeto
• Mejoras en entrada/salida - streams
• Sobrecarga de funciones y operadores
• Parámetros por defecto. Referencias

www.senati.edu.pe
Lenguaje C++

• Organización de programas
• Ficheros de declaraciones (.h)
• Del sistema
• Del usuario (#ifndef .... #define ..... #endif)
• Ficheros de código fuente (.cc, .cpp)

www.senati.edu.pe
Lenguaje C++

• Scope (alcance)
• Fichero: declaraciones que no pertenecen a función o clase
alguna
• Función: etiquetas
• Local: cualquier nombre declarado en un bloque pertenece al
bloque.
• Clase: declaraciones asociadas a una clase
• Cada variable tiene un “scope” o un contexto

www.senati.edu.pe
Lenguaje C++
• Operadores y sentencias
• Sentencias
• Misma sintaxis y semántica que las de C
• Operadores idem sentencias excepto:
• new, delete, delete[], ::
• <<, >>
• Sobrecarga

www.senati.edu.pe
Lenguaje C++
Estructura básica de un programa
#include<iostream.h>
main()
{//inicio
cout << “Hello world”;
}//fin

www.senati.edu.pe
Lenguaje C++
Elementos del programa
• COMENTARIOS
• // Comentario de una sola línea
• /* Comentario multilínea */
• BLOQUES DE CÓDIGO
• { Todos los bloques de código van entre corchetes }
• FIN DE LINEA
• Todas las instrucciones terminan con un punto y coma

www.senati.edu.pe
Lenguaje C++
Tipo básico de datos
• Tipo de dato bool tiene dos valores
asociados true o false

• DECLARACIÓN DE UNA VARIABLE


• <Tipo de dato> Nombre_variable;

• INICIALIZACION DE UNA VARIABLE


• <Tipo de dato> Nombre_variable = [valor];

• EJEMPLO:
• int variable1;
• bool variable2=true;

www.senati.edu.pe
Lenguaje C++
Tipo básico de datos
• Variables y aritmética.
• Todo nombre y/o expresión tiene un tipo.
• El tipo determina las operaciones que se pueden
realizar con el.
• Conversiones implícitas.
• En asignaciones y operaciones algebraicas el lenguaje
lleva a cabo todas las conversiones implícitas que
faciliten el uso y sean seguras.

www.senati.edu.pe
Lenguaje C++
Arreglos
• Un arreglo es un conjunto de tipos de datos básicos

DECLARACIÓN DE UN ARREGLO
• <Tipo de dato básico> Nombre_variable[Número de elementos];

INICIALIZACION DE UN ARREGLO
• <Tipo de dato> Nombre_variable = {valor1, valor2, …, valorN}];

EJEMPLO:
• char arreglo1[10];
• float arreglo2={1.5, 2.3, 6,7};
www.senati.edu.pe
Lenguaje C++
Arreglos Multidimencionales
DECLARACIÓN DE UN ARREGLO MULTIDIMENCIONAL
• <Tipo de dato básico> Nombre_variable[Número de
elementos][Numero de elementos];

INICIALIZACION DE UN ARREGLO MULTIDIMENCIONAL


• <Tipo de dato> Nombre_variable = { {valor1, valor2, …,
valorN}, {valor1, valor2, …, valorN} };

EJEMPLO:
• char arreglo1[10][10];
• int arreglo2[]={{1,2,3},{4,5,6}{7,8,9}};
www.senati.edu.pe
Lenguaje C++
Apuntadores y vectores
• Punteros y vectores.
char v[10]; //vector de 10 caracteres (0 a 9)
char *p; // puntero a un carácter
p = &v[3]; //p apunta al cuarto elemento de v

• punteros - operaciones asociadas


• int *p; //puntero a entero
• int **p; //puntero a puntero a entero
• int (*vp) [10]; //puntero a vector de 10 enteros
• int (*fp) ( char, char *);// puntero a función
www.senati.edu.pe
Lenguaje C++
Tipos definidos por el usuario
• ESTRUCTURAS (Registros)
struct date_s {
int day, month, year;
} aDate;

La definición de arriba de aDate es también la declaración de una


estructura llamada date_s. Podemos definir otras variables de este
tipo referenciando la estructura por el nombre:

struct date_s anotherDate;


• Enumeraciones
• Clases
www.senati.edu.pe
Lenguaje C++
Instrucciones de control de flujo
EJEMPLO
• for(int i=0; i<5; i++){
cout << “Hello world”<<i;
•}

www.senati.edu.pe
Lenguaje C++
Operadores
Los operadores de incremento
++ y -- pueden ser explicados
por medio del siguiente
ejemplo. Si tienes la siguiente
secuencia de instrucciones
a = a + 1; b = a;
Se puede puedes usar
b = a++;
b = ++a;

www.senati.edu.pe
Lenguaje C++
Sobrecarga de operadores
+ - * / % ^ & | ~ ! = < > += -= *= /= %= ^=
&=
|= << >> >>= <<= == != <= >= && || ++ --
->* -> , [ ] ( ) new new[ ] delete delete[ ]

No se sobrecargan:
::
.
.*

www.senati.edu.pe
Lenguaje C++
Sobrecarga de operadores
class complex {
double re, im;
public:
complex(double r, double i) : re(r), im(i){}
complex operator+(complex);
complex operator*(complex);
bool operator==(complex);
bool operator<(complex);
};
void f()
{ complex a(1, 3.1);
complex b(1.2, 2);
complex c = b;
if(a==b)
a = b + c;
b = b + c * a;
c = a * b + complex(1,2);
}

www.senati.edu.pe
Lenguaje C++
Funciones
• Regulares (similares a una función C).
• Miembros (asociadas a una clase).

• Nombre, lista de argumentos, tipo de retorno y cuerpo.

• int miFuncion(int a); //firma o declaración


• int miFuncion(int a){ //definición
cout<<a;
• }

www.senati.edu.pe
Lenguaje C++
Funciones
extern int pow( float, int);
int main()
{
for (int i = 0; i < 10; i++)
cout << pow( 2, 5) << endl;
}

www.senati.edu.pe
Lenguaje C++
Funciones
• Paso de argumentos
• Por valor - seguridad
• copiado en el almacenamiento local de la función
• la función accede a la copia
• Por referencia - velocidad - retornos múltiples
• se copia la dirección del objeto que se esta pasando
• la función accede al objeto
• Por referencia constante - seguridad + velocidad
• Vectores: paso por referencia

www.senati.edu.pe
Lenguaje C++
Funciones
• Paso de argumentos
• Por valor
char a = ‘a’;
miFuncion(a);
• Por referencia
char a = ‘a’;
miFuncion(&a);
• Vectores: paso por referencia
char a[] = {‘a’,’b’}
miFuncion(a);

www.senati.edu.pe
Lenguaje C++
Funciones
• Sobrecarga de nombres.
• int max(int, int);
• int max( int, int, int);
• int max(int *, int);
• int max(float, int);
• int max(int, float);

www.senati.edu.pe
Lenguaje C++
Soporte para abstracción de datos
• Definición de un conjunto de operaciones
asociadas a un tipo.
• Restricción del conjunto de operaciones que se
pueden realizar sobre un tipo a las definidas
para el mismo.
• CLASE
• nombre
• datos miembros
• funciones miembro
• control de acceso

www.senati.edu.pe
Lenguaje C++
Soporte para abstracción de datos
• Inicialización y destrucción.
• Inicialización y asignación.
• Patrones.
• Conversiones de tipo
complex a = complex(1);
• Múltiples implementaciones

www.senati.edu.pe
Lenguaje C++
Soporte para orientacion a objetos
• Funciones virtuales. Polimorfismo.
• Clases abstractas.
• Clases patrón.
• Herencia simple y múltiple.
• Encapsulado.

www.senati.edu.pe
Lenguaje C++
• Los objetos se crean al llegar a su definición.
• Los objetos se destruyen cuando salen del
bloque.
• Los objetos globales se crean una sola vez y se
destruyen al terminar el programa.
• Los objetos static son similares a los globales.

www.senati.edu.pe
Lenguaje C++
• Almacenamiento de objetos

• estático (asignada al iniciarse el programa)

• automático (asociada al bloque)

• en la memoria disponible (obtenida con new)

www.senati.edu.pe
Lenguaje C++
Clases.
Tipo abstracto de datos definido por el usuario
Interface e implementación
struct X {
class X {
private:
private:
int i;
int i;
public: public:
f(); f();
protected: protected:
g(); g();
}; };

www.senati.edu.pe
Lenguaje C++
clases
• Constructores
• Funciones con el mismo nombre de la clase pero que no
retornan nada.
• Constructor de copia
• Constructor por defecto
• Constructores como conversores de tipo
• Destructores
• virtuales

www.senati.edu.pe
Lenguaje C++
clases
• CONSTRUCTORES
• class Point {
• int _x, _y;
• public: Point() { _x = _y = 0; }
• void setX(const int val);
• void setY(const int val);
• int getX() { return _x; }
• int getY() { return _y; }
• };
www.senati.edu.pe
Lenguaje C++
clases
• DESTRUCTORES
• class Point {
• int _x, _y;
• public:
• Point() { _x = _y = 0; }
• Point(const int x, const int y) { _x = x; _y = y; }
• ~Point() { /* ¡Nada qué hacer! */ }
• void setX(const int val);
• void setY(const int val);
• int getX() { return _x; }
• int getY() { return _y; }
• };
www.senati.edu.pe
Lenguaje C++
clases
• Friend
• Nosotros podemos definir que funciones o clases sean amigos de una clase para permitirles
acceso directo a sus miembros de datos privados. Por ejemplo, que la función para el
operador + tuviese acceso a los miembros de datos privados _real e _imag de la clase
Complex. Con ese fin declaramos que el operador + sea amigo de la clase Complex:

• class Complex {
• ... public: ...
• friend Complex operator +( const Complex &, const Complex & );
• };

• Complex operator +(const Complex &op1, const Complex &op2) {


• double real = op1._real + op2._real, imag = op1._imag + op2._imag;
return(Complex(real, imag));
• }
www.senati.edu.pe
Lenguaje C++
clases
• Construcción de objetos
• automáticos
• variables locales: se ejecuta su constructor cada vez que el programa
pasa por la declaración
• secuencia de construcción - destrucción
• inicialización y asignación
• en memoria disponible
• new, delete
• int* ip = new int(7);
• delete ip;
• int* iap = new int[10];
• delete [] iap;

www.senati.edu.pe
Lenguaje C++
clases y herencia
• class Point3D : public Point {
• int _z;
• public:
• Point3D() { setX(0); setY(0); _z = 0; }
• Point3D(const int x, const int y, const int z) {
setX(x); setY(y); _z = z; }
• ~Point3D() { /* Nada que hacer */ }
• int getZ() { return _z; }
• void setZ(const int val) { _z = val; }
• };
www.senati.edu.pe
Lenguaje C++
clases y herencia múltiple
• class DrawableString : public Point,
public DrawableObject {
• ... public:
• DrawableString(...){ ... }
• ~DrawableString() { ... } ...
• };

www.senati.edu.pe