Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porMaite Tallon Modificado hace 9 años
1
INTRODUCCIÓN AL LENGUAJE C++
2
2 En C++ la Entrada y Salida de datos se realiza a través de operaciones de flujos (streams) Estos flujos están definidos en la librería iostream.h que deberá ser incluida en el programa Entrada y salida
3
3 cout corresponde al flujo de SALIDA. Normalmente corresponde a la pantalla del usuario. El operador de insercción, <<, 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: cout
4
4 cout.setf(ios::fixed) Imprime en formato punto fijo (scientific es el estándar) cout.setf(ios::showpoint) Imprime mostrando el punto decimal cout.precision(n) Decimales de precisión cout.width(n) Espacios para mostrar un valor cout.setf(ios::right) Justifica el texto a imprimir a la derecha (left) Salida con formato
5
5 Proporciona un flujo de entrada El operador de extracción >>, extrae valores del flujo y lo almacena en variables Normalmente el flujo de entrada es el teclado int numero1, numero2; cin>>numero1; cin>>numero2; Entrada: cin
6
6 #include int 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“ << endl; else if (miEdad > suEdad) cout << "Mi amigo es menor que yo \n "; else cout << “Ambos tenemos la misma edad \n "; return 0; } Ingresar 2 edades y determinar quién es mayor Ejercicio
7
7 Tipos de Datos ELEMENTALES
8
8 TipoEjemploBytesRango char‘a’10..255 short-151-128..127 int10242-32768..32767 long2621444-2147483648..2147483637 float10.543.4*10E-38.3.4*10E308 double0.0004581.7*10E-308..1.7*10E308 Tipos numéricos
9
9 Un puntero es una variable que puede almacenar una dirección de memoria. Una variable de tipo puntero puede guardar direcciones de variables de un tipo determinado: punteros a int, a double, a char, etc. Punteros
10
10 tipo *nombre_variable; int i=3, *p,*r;// p y r son punteros a entero double d=3.3,*q;// q es un puntero a double char c='a', *t;// t es un puntero a carácter p=&i; r=p; p=q; es un ERROR porque son punteros de diferente tipo Declaración de punteros
11
11 cin>>*p; if (p==r) cout<<"El valor de i es: "<<*p; *p=*p+3; p=p+3; Otras operaciones con punteros
12
12 Es posible desplegar una dirección como valor de una variable de tipo puntero, o la dirección de cualquier variable, utilizando cout cout << “p = “ << p << endl; cout << “&n = “ << &n << endl; cout << “&p= “ << &p << endl; Mostrar una dirección
13
13 1. int *p, *q, a=5 ? ? ? ? pqpq 2. p=&a 3. *p=8; ? ? pqpq 8 4. q=p; pqpq 8 5. *q=85; pqpq 85 ? ? pqpq 5 a 5 a: a a a Ejemplo ilustrativo
14
14 6. a=33; pqpq 33 7. int b=1; pqpq 33 1 aa b 8. q=&b; pqpq 9 1 a b NOTA a, b, p, q : variables locales automáticas Ejemplo ilustrativo
15
15 int 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; return 0; } Ejemplo 1:
16
16 int main() { int *p, *q, x, y; p = &x; *p = 14; q = p; cout << *p << " " << *q << endl; q = NULL; cout << x << " “ << y << endl; return 0; } Ejemplo 2:
17
17 int 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; return 0; } Ejemplo 3:
18
18 int main() { int x, y, *p, *q; p = &x; *p = 14; q = p; if ( p == q)cout<<"Mensaje 1"; q = &y; if ( p == q)cout<<"Mensaje 2"; *q = 14; if (p == q)cout<<"Mensaje 3"; if (*p == *q)cout<<"Mensaje 4"; return 0; } Ejemplo 4:
19
19 enum Frutas {Manzana, Pera, Guinda, Kiwi,}; enum Color {Rojo=10, Verde, Azul}; enum Raza {Pastor, Cooker, Poodle, Setter, Collie}; int main() { Color c=Verde; if (c==Verde) cout<<"Color VERDE"; return 0; } Tipos Enumerados
20
20 Tipos de Datos ESTRUCTURADOS
21
21 Un arreglo es un objeto de dato estructurado de carácter homogéneo Los arreglos pueden ser de una o mas dimensiones Un Vector es un arreglo unidimensional int v[10]; int v[10] = {41, 23, 87, 19, -9}; int v[] = {41, 23, 87, 19, -9, 91, 103, 25, 11, 22}; 0 1 2 3 4 5 6 7 8 9 v: 41 23 87 19 -9 91 103 25 11 22 cout << v[3]; Arreglos
22
22 Una Matriz es una arreglo bidimensional float a[5][3]; int x[5][3] = {{33, 21, 47}, {82, 91, 95}, {50, 72, 45}, {36, 79, 63}, {53, 60, 74}} cout << a[3][2]; 33 21 47 82 91 95 50 72 45 36 79 63 53 60 74 0 1 2 0123401234 Arreglos
23
23 Strings: Vector de caracteres, que termina con el caracter NULO: '\0' char s[5]; char s1[5] = {'h','o','l','a','\0'}; char s2[5] = "hola"; char s3[] = "hola"; typedef char String[25]; String s; Strings
24
24 Captura de un String Lee del flujo de entrada un string. Deja para la siguiente lectura el '\n' No reconoce el espacio inicial en las entradas cin >> s; i = 1; do { cin >> s; cout << i << ": " << s << endl; i++; } while (i<5); Ingresar: Este es un ejemplo Strings
25
25 Captura de un String Lee del flujo de entrada un string de largo caracteres La lectura termina Con la línea ('\n'), si la cantidad de caracteres es menor que largo Cuando se ha extraído la cantidad largo de caracteres, aunque NO haya terminado la línea cin.getline(s, largo); Strings
26
26 Captura de un String i=1; do { cin.getline(s,20); cout << i << ": " << s << endl; i++; } while (i<5); Strings
27
27 Funciones sobre strings strlen(string); // largo strcpy(destino, origen); // copia strcmp(string1, string2); // compara 0: Si string1 == string2 1: Si string1 > string2 -1: Si string1 < string2 Strings
28
28 #include int main() { char x[5]; char y[] = "Hola"; strcpy(x,y); cout << "x:" << x << endl; cout << "y:" << y << endl; return 0; } Strings
29
29 #include int main() { char *x; char y[] = "Hola"; x = new char[strlen(y)+1]; cin.getline(x, 20); cout << "x:" << x << endl; cout << "y:" << y << endl; return 0; } Strings
30
30 #include void Copiar(char a[], char b[]) { strcpy(a, b); } int main() { char *x; char y[] = "Hola"; x = new char[strlen(y)+1]; Copiar(x,y); cout << "x:" << x << endl; cout << "y:" << y << endl; return 0; } Strings
31
31 #include void Copiar(char *a, char *b) { strcpy(a, b); } int main() { char *x; char y[] = "Hola"; x=new char[strlen(y)+1]; Copiar(x,y); cout<< "x:" << x << endl; cout<< "y:" << y << endl; return 0; } Strings
32
32 #include char *Mayor(char a[], char *b) { if (strcmp(a,b)>0) return a; return b; } int main() { char *x; char y[] = "Hola"; x = new char[strlen(y)+1]; cin.getline(x,20); cout << "El mayor: " << Mayor(x,y); return 0; } Strings
33
33 Constructor de tipos de dato que permite agrupar elementos de diversos tipos de datos como UNA variable struct { int RUT; char nom[10]; float prom; } Persona; Persona a; RUT nom prom cout << a.prom; a Estructuras
34
34 struct { int hh; int mm; int ss; } Hora; Hora h, v[10], *p; h.hh = 8; p = &h; v[3].hh = 5; v[7] = *p; cout hh << h.hh << v[7].hh Estructuras
35
35 typedef int Vector[10]; Vector v; typedef float Matriz[5][3]; Matriz a; typedef enum Boolean {FALSE, TRUE}; enum Color {Rojo, Verde, Azul, Amarillo} typedef struct Persona { char paterno[10]; char materno[10]; char nombre[10]; }; Definición de nuevos tipos
36
36 Vector v; // int v[10]; Boolean sw = FALSE; Persona alumno; Numero x; typedef union Numero { int i; float f; }; Definición de nuevos tipos
37
37 OBJETOS CONSTANTES
38
38 const int x;// error: x debe ser inicializada x = 7;// error: x no puede ser // modificada por asignación const int z = 3; cout << z << '\n'; Objetos Constantes Se definen mediante el prefijo const Estos objetos NO puede ser modificados por asignación Sólo se permite su inicialización
39
39 FUNCIONES
40
40 ( ) { } Definición Las funciones no se pueden anidar Todas las funciones son externas, se pueden llamar desde cualquier punto del programa
41
41 #include void f1() { cout << "Función sin argumentos \n"; } void f2(void) { cout << “También sin argumentos \n"; } int main() { f1(); f2(); return 0; } Definición
42
42 Si la función retorna un valor, se debe especificar el tipo de dato retornado: char, double, float También puede retornar un UN PUNTERO. Puede no retornar valores (void). Puede retornar una referencia: (ALIAS) & ( ) Tipos de retorno
43
43 ( ); Declaración (prototipo) Se pueden omitir los nombres de los parámetros y dejar solamente los tipos No es necesario declarar las funciones si se definen antes de usarlas
44
44 Una variable que se declara fuera de las funciones es una variable global y puede ser utilizada dentro de todas las funciones del programa Una variable que se declara dentro de una función es una variable local y solamente puede ser utilizada dentro de dicha función. Al terminar la ejecución de la función desaparece Variables locales y globales
45
45 Parámetros Parámetros Formales O de definición, son los que aparecen en la declaración de la función Parámetros Actuales O de invocación, son los que aparecen en la llamada a la función Se usan para inicializar los parámetros formales, o recibir valores de los parámetros formales
46
46 Parámetros actuales Los parámetros actuales pueden ser: Constantes Variables Expresiones Ejemplo: total = CalcArea(20, 4); L = 30; A=12; total = CalcArea(L, A+2);
47
47 Modos de parametrización Parámetros por Valor Al llamar a la función, se copia el valor del parámetro actual como valor del parámetro formal El parámetro formal se inicializa con el valor de parámetro actual La función trabaja con una copia; luego, no modifica el valor de la variable usada como parámetro actual LLAMADADEFINICIÓN Ejemplo(a); Ejemplo(a+1); Ejemplo(4); void Ejemplo(int x)
48
48 Modos de parametrización Parámetros por Referencia Al llamar a la función, se copia la dirección del parámetro actual como dirección del parámetro formal El parámetro formal es ALIAS del parámetro actual La función puede cambiar su valor LLAMADADEFINICIÓN Ejemplo(a);void Ejemplo(int &x)
49
49 Ejemplos void Ejemplo (int a, int &b) { a = 5; b = 8; } int main( ) { int x = 2, y = 4, &z = x; // z es ALIAS de x Ejemplo(x, y); cout << x << " " << y << " " << z; cout << endl; return 0; }
50
50 Ejemplos int cuadXVal(int a) { return a = a*a; } void cuadXInd(int *b) { *b = (*b) * (*b); } void cuadXRef(int &c) { c = c*c; }
51
51 Ejemplos int main() { int x = 2, y = 3, z = 4; cout << "Por valor : x = " << cuadXVal(x) << '\n'; cuadXInd(&y); cout << "Por indirección : y = " << y << '\n'; cuadXRef(z); cout << "Por referencia : z = " << z << '\n'; return 0; }
52
52 Prototipos de funciones #include void f1(); void f2(void); int main() { f1(); f2(); return 0; } void f1() { cout << "Función sin argumentos \n"; } void f2(void) { cout << "Función también sin argumentos \n"; }
53
53 La cláusula inline sugiere al compilador la generación de una copia del código de esa función "in situ" (cuando sea apropiado), a fin de evitar una llamada Esta sugerencia es generalmente acogida en el caso de funciones pequeñas Funciones en línea
54
54 inline float cubo(float x) { return x*x*x; } int main() { cout << "Ingrese el largo del lado de un cubo: "; float lado; cin >> lado; cout << "Volumen del cubo de lado “ << lado << " es " << cubo(lado) << '\n'; return 0; } Funciones en línea
55
55 int *p; p = new int; : : : delete p; int q = new int(3); float f = new float(2,2); : : : delete q; Memoria Dinámica
56
56 1. int *p, *q; ? ? ? ? pqpq 2. p=new int; ? ? pqpq ? 3. *p=10; ? ? pqpq 10 4. q=p; pqpq 10 5. *q=85; pqpq 85 Ejemplo ilustrativo
57
57 5. *q=85; pqpq 85 6. p new ( int); pqpq ? 85 7. *p= 9; pqpq 9 85 Ejemplo ilustrativo
58
58 8. delete q; pqpq 85 pqpq 9 ? ? ? ? pqpq ? ? pqpq 9 9. delete q; Ejemplo ilustrativo
59
59 typedef struct { int num; float saldo; } Cuenta; Cuenta *c; c = new Cuenta; Memoria Dinámica
60
60 int *v; v = new int [100]; // crea un arreglo dinámico de 100 enteros delete [] v; // libera la memoria ocupada por v Memoria Dinámica
61
61 Resolución de alcance float x = 1.23; int main() { int x = 7 cout << "x local = "<< x <<endl; cout << "x global = " << ::x << endl; return 0; } Operador ::
62
62 Es posible definir funciones con el mismo nombre, las cuales se pueden diferenciar en: El tipo del valor retornado La lista de parámetros Cantidad de parámetros Tipo de los parámetros Sobrecarga de funciones
63
63 float cuadrado(int k) { return k*k; } float cuadrado(float x) { return x*x; } int main() { int i = 5; float x = 3.3; cout << i << " al cuadrado = " << cuadrado(i); cout << endl; cout << x << " al cuadrado = " << cuadrado(x); return 0; } Sobrecarga de funciones
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.