El Lenguaje De Programaci N C Fernando Bellas Permuy
El lenguaje de programación C++
Fernando Bellas Permuy
Departamento de Tecnologías de la Información y las Comunicaciones (TIC)
Universidad de A Coruña
http://www.tic.udc.es/~fbellas
fbellas@udc.es
Introducción
• C++ extiende el lenguaje de programación C con conceptos de
Orientación a Objetos.
• Es un lenguaje compilado.
• Índice:
• Revisión del lenguaje C.
• Mejoras(no OO) introducidas por C++.
• Clases.
• La herramienta “make” en Unix.
• Herencia.
• Sobrecarga de operadores.
• Plantillas (templates).
• Excepciones.
• La librería estándar de C++.
• Bibliografía.
1
Nociones básicas de C (1)
• Tipos de datos básicos.
Tipo
Indentificador
Ejemplo de valores
Modificadores
Caracteres
char
'a', '9', '#', 10
unsigned
Enteros
int
23, -34, 0
long, short,unsigned
Reales
float
3, 3.0, 3e10
Reales (doble precisión)
double
3, 3.0, 3e600
“Booleans”
int
0 (false), != 0 (true)
long
• Operadores aritméticos: =, +, -, %, /, ++, --, y variantes de =
• Variables: locales, globales.
#include
float e; /* Variable global */
int main ()
{
float v, t; /* Variables locales */
v = 30; /* Velocidad */
t = 5; /* Tiempo */
e = v * t;printf("Velocidad: %f\nTiempo: %f\n", v, t);
printf("Espacio recorrido: %f\n", e);
return 0;
}
2
Nociones básicas de C (y 2)
• Operadores ++, --, y variantes de =
i = 4;
j = 2 * (i++);
/* i = 5, j = 8 */
i = 4;
j = 2 * (++i);
/* i=5, j = 10 */
i = 4;
i %= 3; /* i = i % 3; */
i += 4; /* i = i + 4; */
/* i = 5 */
• Entrada salida con printf/scanf y similares.
#include
int main ()
{
float v, t,e;
printf("Velocidad: ");
scanf("%f", &v);
printf("Tiempo: ");
scanf("%f", &t);
e = v * t;
printf("Velocidad: %5.2f; Tiempo: %5.2f; Espacio: %5.2f\n",v,t,e);
return 0;
}
• Caracteres de control en printf, scanf: d, o, x, c, s, f, e, p.
• En C++ hay una alternativa mejor: los streams de entrada/salida.
3
Control de flujo (1)
• Operadores relacionales: >, >=, <, <=, ==, !=
• Operadores lógicos:&&, ||, !
• if.. else..
if (condición) {
<< sentencias >>
} else {
<< sentencias >>
}
• switch-case-default
switch (exp) {
case A:
<< instrucciones >>
break;
case B:
<< instrucciones >>
break;
...
default:
<< instrucciones por defecto >>
}
switch (letra) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u': printf("Es una vocal\n");
break;
case 'ñ': printf("Nuestra querida ñ\n");
break;
default:printf("Cualquier otro caracter");
}
4
Control de flujo (y 2)
• Bucle while
while (condición) {
<< instrucciones >>
}
• Bucle do.. while
do {
<< instrucciones >>
} while (condición)
• Bucle for
for (inic; cond; incr) {
<< instrucciones >>
}
for (i=1; i<=10; i++) {
printf(“%i\n“, d);
}
Operadores de bit
• & (AND), | (OR), ~ (NOT), ^ (XOR), >> (shift right), << (shift
left).
5
Estructurasde datos estáticas (1)
• Vectores.
int vector[] = {1, 2, 3, 4, 5};
int vector2[5] = {1, 2, 3, 4, 5};
int matriz[10][10];
char matriz3[4][5][6];
int main ()
{
float matriz2[][3] = { {1, 2, 3}, {4, 5, 6} };
int i, j;
for (i=0; i<2; i++) {
for (j=0; j<3; j++) {
printf("%f\n", matriz2[i][j]);
}
}
return 0;
}
• Registros o Estructuras.
struct nombre {
Tipo1 campo1;
Tipo2 campo2;
...
TipoN campoN;
}variable;
struct TipoPunto {
int x;
int y;
} punto;
punto.x = 1;
punto.y = 2;
• Uniones.
union Ejemplo {
char caracter;
int entero;
};
struct FiguraColoreada {
int color;
int tipoFigura;
union {
struct Esfera e;
struct Segmento s;
} figura;
}
6
Estructuras de datos estáticas (y 2)
• Tipos definidos por el usuario (typedef).
typedef unsigned char TipoByte;
typedef struct {
int x;
int y;
}TipoPunto;
• Enumeraciones.
enum Dia { Lunes, Martes, Miercoles, Jueves, Viernes, Sabado, Domingo};
7
Punteros (1)
• Un puntero es una variable cuyo contenido es una dirección
de memoria.
• Operadores: &, *, ->
• Ejemplos:
int x;
int* px;
x = 1;
px = &x;
*px = 2; /* x = 2 */
TipoPunto* pPunto;
pPunto->x = 1;
pPunto->y = 2;
• Punteros y matrices.
int i;
int v[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9,...
Regístrate para leer el documento completo.