La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

INTRODUCCIÓN AL LENGUAJE C++. 2  En C++ la Entrada y Salida de datos se realiza a través de operaciones de flujos (streams)  Estos flujos están definidos.

Presentaciones similares


Presentación del tema: "INTRODUCCIÓN AL LENGUAJE C++. 2  En C++ la Entrada y Salida de datos se realiza a través de operaciones de flujos (streams)  Estos flujos están definidos."— Transcripción de la presentación:

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


Descargar ppt "INTRODUCCIÓN AL LENGUAJE C++. 2  En C++ la Entrada y Salida de datos se realiza a través de operaciones de flujos (streams)  Estos flujos están definidos."

Presentaciones similares


Anuncios Google