Académique Documents
Professionnel Documents
Culture Documents
Entrada y Salida
En C++ la Entrada y Salida de datos se realiza a travs de operaciones de flujos (streams).
Estos flujos estn definidos en la librera iostream.h que deber ser includa en el programa.
Salida: cout
cout corresponde al flujo de SALIDA.
Normalmente corresponde a la pantalla del usuario. El operador de inserccin, <<, inserta datos en el flujo cout. Por ejemplo:
cout<< Mensaje de prueba ; cout<< 500<<600<<700 int i=5, j=10,m=100; cout<< "El valor de i es:"<<i << j << m;
Salida: Formato
cout.setf(ios::fixed) Imprime en punto fijo (scientific es el estndar) formato
cout.setf(ios::showpoint) Imprime mostrando el punto decimal. cout.precision(n) Cantidad de decimales de precisin cout.width(n) Espacios para mostrar un valor. cout.setf(ios::right) Justifica el texto a imprimir a la derecha. (left)
Entrada: cin
Proporciona un flujo de entrada.
El operador de extraccin >>, extrae valores del flujo y lo almacena en variables. Normalmente el flujo de entrada es el teclado.
int numero1, numero2; cin>>numero1; cin>>numero2;
Ejercicio:
#include <iostream.h> void main() { cout << "Ingrese su edad: "; int miEdad; cin >> miEdad; cout << "Ingrese la edad de un amigo: "; int suEdad; cin >> suEdad; if (miEdad < suEdad) cout << "Yo soy menor que mi amigo \n "; else if (miEdad > suEdad) cout << "Mi amigo es menor que yo \n "; else cout << "Mi amigo y yo tenemos la misma edad \n "; }
Ejemplo
a -15 1024
Bytes
1 1 2 0..255 -128..127
Rango
-32768..32767
long
float
262144
10.5
4
4
-2147483648..2147483637
3.4*10E-38.3.4*10E308
double
0.00045
1.7*10E-308..1.7*10E308
Punteros
Una variable que puede almacenar una direccin de memoria se llama puntero. Una variable de tipo puntero puede guardar direcciones de variables de un tipo determinado: punteros a int, double, char, etc.
10
Declaracin de punteros
tipo *nombre_variable;
int i=3, *p,*r; double d=3.3,*q; char* c='a', *t; // p y r son punteros a entero // q es un puntero a double // t es un puntero a carcter
11
12
13
Ejemplo Ilustrativo
1. int *p, *q, a=5 2. p=&a
3. *p=8;
a:
p ? q ?
a:
p q ?
p q ?
a:
5
5. *q=85; a:
4. q=p;
p q
p q
a:
85
14
Ejemplo Ilustrativo
6. a=33; . 7. int b=1; a: a: b:
p q
33
p q
33
. 8. q=&b;
p
q
a: b:
NOTA
9
1
15
Ejemplo 1:
void main() { int x, y, *p, *q; p = &x; *p = 5; q = &y; *q = 23; cout << *p << " << *q << endl; q = p; *p = 35; cout << *p << " << *q << endl; q = NULL; cout << x << " << y << endl; }
16
Ejemplo 2:
void main() { int *p, *q, x, y; p = &x; *p = 14; q = p; cout << *p << " " << *q << endl; q = NULL; cout << x << " << y << endl;
17
Ejemplo 3:
void main() { int x, y, *p, *q; p = &x; *p = 12; q = &y; *q = 23; cout << *p <<" "<<*q<<endl; *p = *q; cout << *p <<" "<<*q<<endl; q = NULL; cout<<*p<<endl; cout<<x<<" "<<y<<endl; }
18
Ejemplo 4:
void main() { int x, y, *p, *q; p = &x; *p = 14; q = p; if ( p == q) q = &y; if ( p == q) *q = 14; if (p == q) if (*p == *q) }
Tipos enumerados
enum Frutas {Manzana, Pera, Guinda, Kiwi,};
enum Color {Rojo=10, Verde, Azul}; enum Raza {Pastor, Cooker, Poodle, Setter, Collie}; void main() {Color c=Verde; if (c==Verde) cout<<"Color VERDE"; }
19
20
21
v:
41 23
87 19 -9
91 103 25 11 22
cout<<v[3];
22
33 82 50
21 91 72
47 95 45
{50,72,45},
{36,79,63}, {53,60,74}}
36
53
79
60
63
74
cout<<a[3][2];
23
24
25
26
27
strcmp(string1, string2);
0: Si string1 ==string2 1: Si string1 > string2 -1: Si string1 < string2
28
29
cout<<"x:"<<x<<endl; cout<<"y:"<<y<<endl;
}
30
void main() {char *x; char y[]="Hola"; x=new char[strlen(y)+1]; Copiar(x,y); cout<<"x:"<<x<<endl; cout<<"y:"<<y<<endl;
31
void main() {char *x; char y[]="Hola"; x=new char[strlen(y)+1]; Copiar(x,y); cout<<"x:"<<x<<endl; cout<<"y:"<<y<<endl;
32
33
a:
cout<< a.prom;
34
35
typedef enum Boolean {FALSE, TRUE}; enum Color {Rojo, Verde, Azul, Amarillo} typedef struct Persona { char paterno[10]; char materno[10]; char nombre[10]; };
36
37
OBJETOS CONSTANTES
38
Objetos Constantes
Se definen mediante el prefijo const. Estos objetos NO puede ser modificada por asignacin. Slo se permite su inicializacin.
const int x; x = 7;
// error: x debe ser inicializada
39
FUNCIONES
40
Definicin
Tipo de retorno Nombre ( Parmetros ) { declaraciones locales }
Instrucciones
Todas las funciones son externas, se pueden llamar desde cualquier punto del programa.
41
Prototipo de funciones
#include <iostream.h> void f1(); void f2(void); void main() { f1(); f2(); } void f1() {cout << "Funcin sin argumentos \n"; } void f2(void) {cout << "Funcin tambin sin argumentos \n"; }
42
Tipos de retorno
Si la funcin no devuelve un valor int, se debe especificar el tipo de dato devuelto: char, double, float
43
Declaracin (prototipo)
Tipo_de_retorno Nombre ( Parmetros );
Se pueden omitir los nombres de los parmetros y dejar solamente los tipos.
No es necesario declarar las funciones si las definimos antes de usarlas.
44
Una variable que se declara dentro de una funcin es una variable local y solamente puede ser utilizada dentro de dicha funcin. Al terminar la ejecucin de la funcin desaparece.
45
Parmetros
Parmetros Formales
46
Parmetros actuales
Los parmetros actuales pueden ser: Valores Variables Expresiones. Ejemplo: total = CalcArea(20, 4); L = 30; A=12; total = CalcArea(L,A+2);
47
Formas de Parametrizacin
Parmetros por Valor
Al llamar a la funcin se copia valor del parmetro actual en el parmetro formal. El parmetro formal se inicializa con el valor de parmetro actual. La funcin trabaja con una copia, por lo tanto: No modifica el valor de la variable o parmetro actual. LLAMADA
Ejemplo(a); Ejemplo(a+1); Ejemplo(4);
DEFINICIN
void Ejemplo(int x)
48
Formas de Parametrizacin
Parmetros por Referencia
Se pasa la direccin del parmetro actual al parmetro formal
El parmetro actual es ALIAS del parmetro formal La funcin puede cambiar su valor.
LLAMADA
Ejemplo(a);
DEFINICIN
void Ejemplo(int&x)
49
50
Ejemplo:
Escriba una funcin que calcule el cuadrado y el cubo de un nmero entero. stos resultados se DEBEN retornar como parmetros.
51
Ejemplos: Prototipos
#include <iostream.h>
int cuadPorVal(int); void cuadPorInd(int *); void cuadPorRef(int &);
52
Ejemplos
void main() { int x = 2, y = 3, z = 4;
cout << "Por valor : x = " << cuadPorVal(x) << '\n';
cuadPorInd(&y); cout << "Por indireccin : y = " << y << '\n'; cuadPorRef(z); cout << "Por referencia : z = " << z << '\n';
53
Ejemplos
int cuadPorVal(int a) {return a = a*a; } void cuadPorInd(int *b) {*b = (*b) * (*b); } void cuadPorRef(int &c) {c = c*c; }
Prototipos de funciones
#include <iostream.h> void f1(); void f2(void); main() { f1(); f2(); return 0; } void f1() { cout << "Funcin sin argumentos \n"; } void f2(void) { cout << "Funcin tambin sin argumentos \n"; }
54
55
Funciones en lnea
La clusula inline sugiere al compilador la generacin de una copia del cdigo de esa funcin "in situ" (cuando sea apropiado), a fin de evitar una llamada. Esta sugerencia es generalmente acogida en el caso de funciones pequeas.
56
Funciones inline
inline float cubo(float x)
{ return x*x*x; } void main()
57
Memoria Dinmica
int *p; p = new int; ::: delete p; int q=new int(3); float t=new float(2,2); ::: delete q;
58
Ejemplo Ilustrativo
1. int *p, *q; 2. p=new int; 3. *p=10;
p ? q ?
p q ?
p q ?
10
4. q=p;
5. *q=85;
p q
10
p q
85
59
Ejemplo Ilustrativo
5. *q=85; . 6. p new ( int);
p q
85
p q
85
. 7. *p= 9;
p
q
9
85
60
Ejemplo Ilustrativo
p
q 85
p
q
9. delete q;
9 85
8. delete q;
p ?
p q ?
q ?
61
Memoria Dinmica
typedef struct {int num; float saldo; }Cuenta;
Cuenta *c; c=new Cuenta;
62
Memoria Dinmica
int *v; v = new int [100]; delete [] v;
// crea un arreglo dinmico de 100 int // libera la memoria dinmica ocupada por v
63
Resolucin de alcance
Operador ::
float x = 1.23; void main() {int x = 7 cout << "x local = "<< x <<endl; cout << "x global = " << ::x << endl; }
64
Sobrecarga de funciones
Funciones con igual nombre pero se diferencian, a lo menos, en uno de los siguientes puntos: El tipo de dato de la funcin La lista de parmetros
Cantidad de parmetros Tipo de datos de los parmetros
65
Sobrecarga de funciones
float cuadrado(int k) { return k*k; }
float cuadrado(float x) { return x*x; }
void main() {cout << "El cuadrado del entero 7 es " << cuadrado(7); cout << "El cuadrado del real 1.2 es " << cuadrado(1.2); }