INTRODUCCIÓN AL LENGUAJE C++

Slides:



Advertisements
Presentaciones similares
Programación, Algoritmos y Estructuras de Datos
Advertisements

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
TABLAS Definición. El tipo tabla permite definir objetos formados por un conjunto de elementos del mismo tipo. Ejemplos. El tipo tabla se utiliza para.
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
Administración de Proyectos de desarrollo de Software Ciclo de vida de un proyecto Enfoque moderno Temas Componentes Directivas Declaraciones globales.
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.
Introducción a los punteros Prof. Domingo Hernández.
Elementos básicos del lenguaje
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.
Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.
Unidad II Introducción a la programación en C++
Elementos básicos del lenguaje
Capitulo 4 Arreglos o Arrays Unidimensionales Bidimensionales Strings
Algoritmo.
Paso de Parámetros a una Función Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de.
FUNDAMENTOS DE PROGRAMACIÓN VARIABLES, CONSTANTES Y TIPOS DE DATOS EN C.
Introducción al Lenguaje C (II) Cadenas de caracteres, archivos de cabecera, lectura y escritura Fundamentos de Programación Departamento de Lenguajes.
Entrada y Salida en C++, Estructuras de Control Prof. Manuel B. Sánchez.
Funciones y paso de parámetros Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Unidad Didáctica 24.
Memoria Dinámica Jornadas de Marzo 2010 Grupo de Usuarios de Linux Tania Pérez.
Programación II Sesión 3. TABLA DE CONTENIDO  Tipos de Datos en C  Delimitadores  Tipo Char  Tipo Int  Tipo Float  Tipo Double  Constantes  Operadores.
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
Funciones en lenguaje C 2 Funciones Definición: – Las funciones son los bloques de construcción básicos de C. Dentro de ellas se da toda la actividad.
Introducción a la Programación Multimedial
Programación en C - manejo de Archivos
¿Cómo almacenar datos dentro del computador?
Funciones, Arreglos y Vectores
Nociones básicas sobre C++
IntroducciÓn a los Arreglos (“arrays”) en C++
Programación en C - manejo de Archivos
Algunas ideas básicas de C++
Algunas Características de C++ no presentes en C
¿Cómo almacenar grandes cantidades de datos?
Manejo de Punteros y objetos en memoria dinámica en C++
Métodos en Java.
Algunas Características de C++ no presentes en C
Arreglos. en Lenguaje C n
Nociones básicas sobre C++
Guía teórica de manejo de estructuras de datos
Asignación Dinámica de Memoria
Algunas Características de C++ no presentes en C
Leccion 5: Escogiendo un Tipo de Variable
Manejo de Punteros y objetos en memoria dinámica en C++
Arreglos en C++ (una y dos dimensiones)
Definición y Conversión de datos
Nociones básicas sobre C++
LENGUAJE DE PROGRAMACION III Estructuras Estáticas de Datos
Unidad 3. Introducción a la programación
Tipos Básicos.
Cobol C Pascal Fortran 6. PARAMETRIZACIÓN SmallTalk Java C++
Manejo de Punteros y objetos en memoria dinámica en C++
Unidad 3 Punteros.
Diego Hernández R Pascal Variables Diego Hernández R
El Lenguaje C: Elementos Básicos
LENGUAJE C.
Fundamentos de Programación
Programación I MC José Andrés Vázquez Flores
Algunas ideas básicas de C++
Lic. Xóchitl minerva García cruz
Arreglos en Java.
Informática Ingeniería en Electrónica y Automática Industrial
Informática Ingeniería en Electrónica y Automática Industrial
Curso de Programación Estructurada
Informática Ingeniería en Electrónica y Automática Industrial
Informática Ingeniería en Electrónica y Automática Industrial
Algunas Características de C++ no presentes en C
Informática Ingeniería en Electrónica y Automática Industrial
Manejo de Punteros y objetos en memoria dinámica en C++
Registros tipo struct PROGRAMACIÓN MODULAR.
Guía teórica de manejo de estructuras de datos
Transcripción de la presentación:

INTRODUCCIÓN AL LENGUAJE C++

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

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;

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)

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;

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; }

Tipos de Datos ELEMENTALES

Tipos numéricos Tipo Ejemplo Bytes Rango char ‘a’ 1 0..255 short -15 -128..127 int 1024 2 -32768..32767 long 262144 4 -2147483648..2147483637 float 10.5 3.4*10E-38.3.4*10E308 double 0.00045 8 1.7*10E-308..1.7*10E308

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.

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

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

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;

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

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

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; }

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; }

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; }

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; }

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; }

Tipos de Datos ESTRUCTURADOS

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}; 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 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];

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;

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

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

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

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

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; }

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; }

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;

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;

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;

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

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

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]; };

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

OBJETOS CONSTANTES

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';

FUNCIONES

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

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;

<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>)

<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

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

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

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

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)

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)

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;

Ejemplos int cuadXVal(int a) { return a = a*a; } void cuadXInd(int *b) { *b = (*b) * (*b); void cuadXRef(int &c) { c = c*c;

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; }

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";

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

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;

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

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

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

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

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

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

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 ::

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

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;