La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

INTRODUCCIÓN AL LENGUAJE C++

Presentaciones similares


Presentación del tema: "INTRODUCCIÓN AL LENGUAJE C++"— Transcripción de la presentación:

1 INTRODUCCIÓN AL LENGUAJE C++

2 Entrada y salida 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

3 Salida: cout 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;

4 Salida con formato 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)

5 Entrada: cin 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;

6 Ingresar 2 edades y determinar quién es mayor
Ejercicio #include <iostream.h> 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 "; cout << “Ambos tenemos la misma edad \n "; return 0; }

7 Tipos de Datos ELEMENTALES

8 Tipos numéricos Tipo Ejemplo Bytes Rango char ‘a’ 1 0..255 short -15
int 1024 2 long 262144 4 float 10.5 3.4*10E *10E308 double 8 1.7*10E *10E308

9 Punteros 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.

10 Declaración de punteros
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

11 Otras operaciones con punteros
cin>>*p; if (p==r) cout<<"El valor de i es: "<<*p; *p=*p+3; p=p+3;

12 Mostrar una dirección 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;

13 Ejemplo ilustrativo ? 8 ? ? 5 5 8 85 1. int *p, *q, a=5 2. p=&a
4. q=p; p q 8 5. *q=85; p q 85 a a

14 a, b, p, q : variables locales automáticas
Ejemplo ilustrativo 6. a=33; p q 33 7. int b=1; p q 33 1 a a b 8. q=&b; p q 9 1 a b NOTA a, b, p, q : variables locales automáticas

15 Ejemplo 1: int main() { int x, y, *p, *q; p = &x; *p = 5; q = &y;
cout << *p << " “ << *q << endl; q = p; *p = 35; q = NULL; cout << x << " “ << y << endl; return 0; }

16 Ejemplo 2: 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; }

17 Ejemplo 3: int main() { int x, y, *p, *q; p = &x; *p = 12; q = &y;
cout << *p <<" "<<*q<<endl; *p = *q; q = NULL; cout<<*p<<endl; cout<<x<<" "<<y<<endl; return 0; }

18 Ejemplo 4: 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; }

19 Tipos Enumerados 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; }

20 Tipos de Datos ESTRUCTURADOS

21 Arreglos 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}; v: cout << v[3];

22 Arreglos Una Matriz es una arreglo bidimensional float a[5][3];
1 2 float a[5][3]; int x[5][3] = {{33, 21, 47}, {82, 91, 95}, {50, 72, 45}, {36, 79, 63}, {53, 60, 74}} 33 21 47 82 91 95 50 72 45 36 79 63 53 60 74 1 2 3 4 cout << a[3][2];

23 Strings 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;

24 Strings Captura de un String cin >> s;
Lee del flujo de entrada un string. Deja para la siguiente lectura el '\n' No reconoce el espacio inicial en las entradas cin >> s; Ingresar: Este es un ejemplo i = 1; do { cin >> s; cout << i << ": " << s << endl; i++; } while (i<5);

25 Strings 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);

26 Strings Captura de un String i=1; do { cin.getline(s,20);
cout << i << ": " << s << endl; i++; } while (i<5);

27 Strings strlen(string); // largo Funciones sobre strings
strcpy(destino, origen); // copia strcmp(string1, string2); // compara 0: Si string1 == string2 1: Si string1 > string2 -1: Si string1 < string2

28 Strings #include <iostream.h> #include <string.h>
int main() { char x[5]; char y[] = "Hola"; strcpy(x,y); cout << "x:" << x << endl; cout << "y:" << y << endl; return 0; }

29 Strings #include <iostream.h> #include <string.h>
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; }

30 Strings #include <iostream.h> #include <string.h>
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;

31 Strings #include <iostream.h> #include <string.h>
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;

32 Strings #include <iostream.h> #include <string.h>
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;

33 Estructuras 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

34 Estructuras 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 << p->hh << h.hh << v[7].hh

35 Definición de nuevos tipos
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]; };

36 Definición de nuevos tipos
typedef union Numero { int i; float f; }; Vector v; // int v[10]; Boolean sw = FALSE; Persona alumno; Numero x;

37 OBJETOS CONSTANTES

38 Objetos Constantes Se definen mediante el prefijo const
Estos objetos NO puede ser modificados por asignación Sólo se permite su inicialización 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';

39 FUNCIONES

40 Definición Las funciones no se pueden anidar
<tipo de retorno> <nombre>(<parámetros>) { <datos locales> <instrucciones> } Las funciones no se pueden anidar Todas las funciones son externas, se pueden llamar desde cualquier punto del programa

41 Definición #include <iostream.h> void f1() {
cout << "Función sin argumentos \n"; } void f2(void) { cout << “También sin argumentos \n"; int main() { f1(); f2(); return 0;

42 <tipo> &<nombre>(<parámetros>)
Tipos de retorno 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) <tipo> &<nombre>(<parámetros>)

43 <tipo de retorno> <nombre>(<parámetros>);
Declaración (prototipo) <tipo de retorno> <nombre>(<parámetros>); 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 Variables locales y globales
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

45 Parámetros Parámetros Formales Parámetros Actuales
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 Parámetros actuales Los parámetros actuales pueden ser: Ejemplo:
Constantes Variables Expresiones Ejemplo: total = CalcArea(20, 4); L = 30; A=12; total = CalcArea(L, A+2);

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 LLAMADA DEFINICIÓN Ejemplo(a); Ejemplo(a+1); Ejemplo(4); void Ejemplo(int x)

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 LLAMADA DEFINICIÓN Ejemplo(a); void Ejemplo(int &x)

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 Ejemplos int cuadXVal(int a) { return a = a*a; }
void cuadXInd(int *b) { *b = (*b) * (*b); void cuadXRef(int &c) { c = c*c;

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 Prototipos de funciones
#include <iostream.h> 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 Funciones en línea 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

54 Funciones en línea 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;

55 Memoria Dinámica int *p; p = new int; : : : delete p;
int q = new int(3); float f = new float(2,2); delete q;

56 Ejemplo ilustrativo ? p q 10 ? p q ? p q ? p q 10 p q 85
1. int *p, *q; 2. p=new int; 3. *p=10; ? p q 10 ? p q ? p q ? 4. q=p; p q 10 5. *q=85; p q 85

57 Ejemplo ilustrativo p q 85 p q ? 85 p q 9 85 5. *q=85;
6. p new ( int); p q ? 85 7. *p= 9; p q 9 85

58 Ejemplo ilustrativo p q 85 p q 9 85 p q ? p q 9 ? ? 8. delete q;

59 Memoria Dinámica typedef struct { int num; float saldo; } Cuenta;
 Cuenta *c; c = new Cuenta;

60 Memoria Dinámica int *v; v = new int [100];
// crea un arreglo dinámico de 100 enteros delete [] v; // libera la memoria ocupada por v

61 Resolución de alcance Operador :: float x = 1.23; int main() {
int x = 7 cout << "x local = "<< x <<endl; cout << "x global = " << ::x << endl; return 0; } Operador ::

62 Sobrecarga de funciones
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

63 Sobrecarga de funciones
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;


Descargar ppt "INTRODUCCIÓN AL LENGUAJE C++"

Presentaciones similares


Anuncios Google