1 / 27

El Lenguaje C++ ( Introducción, variables, operadores, funciones, primeras compilaciones)

3. El Lenguaje C++ ( Introducción, variables, operadores, funciones, primeras compilaciones). Isidro González Caballero ( Universidad de Oviedo) Valencia, 07-11/05/20102. Técnicas Fundamentales de Simulación, Reconstrucción y Análisis de Datos en Física Experimental de Partículas.

olesia
Télécharger la présentation

El Lenguaje C++ ( Introducción, variables, operadores, funciones, primeras compilaciones)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 3 El Lenguaje C++(Introducción, variables, operadores, funciones, primeras compilaciones) Isidro González Caballero (Universidad de Oviedo) Valencia, 07-11/05/20102 Técnicas Fundamentales de Simulación, Reconstrucción y Análisis de Datos en Física Experimental de Partículas

  2. Bibliografía • Google  • Programación Orientada a Objetos y C++ • G. Booch: "Object-Oriented Analysis and Design". Addison-Wesley • S. B. Lippman: "C++ Primer". Addison-Wesley • B. Stroustrup: "The Annotated C++ Reference Manual". Addison-Wesley • B. Stroustrup: "The C++ Programming Language". Addison-Wesley Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

  3. Introducción • El C++ es un superconjunto del C • Soporta tanto metodologías de programación estructurada como OOP • Tiene la capacidad de usar librerías C y FORTRAN • Características ajenas a la OOP y al C: • Chequeo de tipos mejorado (más estricto) • Constantes simbólicas (const) (chequeo de tipos constantes) • Sustitución de funciones inline (eficiencia de ejecución) • Argumentos por defecto (ahorro de código) • Sobrecarga de funciones y operadores (los tipos derivados tienen sintaxis iguales a los nativos) • Manejo de memoria dinámica • El tipo referencia (alias) Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

  4. Tipos fundamentales unsigned Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

  5. Operadores aritméticos Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

  6. Operadores lógicos Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

  7. Declaraciones • Antes de utilizar una variable tenemos que declarar su tipo • Para las funciones debemos declarar su signatura y tipo de retorno • La signatura está formada por el nombre de la función y el tipo de los argumentos que espera • Podemos inicializar una variable al declararla • No siempre una declaración reserva un espacio en memoria  definición Comentarios char letra; /*Declaración y definición de un carácter*/ int total = 10; //Decl., def. e inic. de un entero double random(double seed); //Declaración de una función Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

  8. Tipos derivados, static, const... Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

  9. Tipos derivados, static, const... //Punteros int*ptrNumero; //Puntero a un entero //Arrays float reales[20]; //Un array de 20 floats doublepunto[2] = {1.2, 3.4}; //Con inicializacion //Struct struct punto2D {short int x; short int y;}; //static staticint contador; //const constcharla_letra_c = 'c'; constdouble pi = 3.1415926; Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

  10. Hello world Escribir, compilar, linkar, ejecutar Código(.cc, .C, .cpp…) #include <iostream> int main() { cout << “Hola mundo” << endl; return 0; } Fichero objeto(.obj, .o) Diseñar Escribir Compilar g++ -o main.cc main.o other.o libMyLib.so Ejecutable(a.out, .exe, …) Linkar g++ main.o Ejecutar ./a.out a.out Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

  11. Preprocesador Código(.cc, .C, .cpp…) #include <iostream> int main() { cout << “Hola mundo” << endl; return 0; } • No son comandos C++… • … pero están presentes en cualquier compilador • Muy utilizadas en C… • … suprimidas algunas en C++ • Se escriben con el símbolo # al comienzo • Es una especie de parser Algunas posibilidades • Incluir código de otros ficheros • Remplazar variables o símbolos • en gral. no necesario en C++ • Trucos sucios • no recomendable  • Incluye cierta lógica Fichero objeto(.obj, .o) Ficheros intermedios(.i, .ii) Compilar g++ -o main.cc Preproceso Compilación main.o other.o libMyLib.so Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

  12. Directivas de preprocesador • #include″header.h″ • Incluye el fichero header.h • #include<header.h> • Idem para “ficheros estándar”… algo subjetivo  • #define VAR value • Reemplaza la secuencia VAR por value • #ifdef, #ifndef, #else, #endif • Lógica para chequer el valor de variables • #pragma • Mensajes al compilador. Poco utilizado Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

  13. Output básico • Debe incluirse el cabecero (header) iostream • Se utilizan dos objetos de tipo ostream: • cout para la salida estándar o • cerr para los mensajes de error... • ... seguido del operador << … • … y el mensaje de salida #include <iostream> Salto de línea cout<< "Hola\n"; cout << "2 y 4 es “; cout << 2+4 << endl; float pi=3.1415 cout << "El valor de pi=" << pi << endl; Resultado Hola 2 y 4 es 6 El valor de pi=3.1415 Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

  14. Funciones • Tienen un tipo de retorno (void si no devuelven nada) • Se debe especificar el tipo de cada uno de sus parámetros (signatura) • El cuerpo de la función va entre llaves { } • La función principal del sistema es int main() #include <iostream> float cuadrado(float r); int main() { cout << "El cuadrado de 7 es " << cuadrado(7); return 0;//Todo ha ido bien } float cuadrado(float r) { float c = r*r; return c; } Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

  15. Ámbito (scope) y tiempo de vida • El ámbito es el espacio del programa en que un nombre (variable) es válido • Normalmente es el espacio entre su declaración y la siguiente llave cerrada, } • Las variables solo existen (ocupan espacio en memoria) mientras su ámbito es válido • Salvo las declaradas staticque duran hasta el final del programa • Aunque solo pueden ser utilizadas en el código dentro de su ámbito Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

  16. Ejercicio 1: Programa #include <iostream> using namespace std; //Necesario para cout y endl double cuadrado(double); //Declaramos funcion int main() { //Funcion principal int siete = 7; cout << "El cuadrado de " << siete << " es " << cuadrado(7) << endl; constdouble pi = 3.1415926; cout << "pi*pi = " << cuadrado(pi) << endl; return 0; } double cuadrado(double r) { double c = r*r; return c; } Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

  17. Ejercicio 1: Compilar y ejecutar [host] tar xvfz ejercicio1.tar.gz [host] cd ejercicio1 [host] ls ejercicio1.cpp [host] g++ ejercicio1.cpp [host] ls ejercicio1.cpp a.out [host] ./a.out El cuadrado de 7 es 49 pi^2 = 9.8696 [host] g++ ejercicio1.cpp –o ejercicio1.exe [host] ls a.out ejercicio1.cpp ejercicio1.exe [host] ./ejercicio1.exe El cuadrado de 7 es 49 pi^2 = 9.8696 Descomprimimos el fichero tras descargarlo Compilar y linkar. El resultado es… Ejecutar Compilar y linkar elegiendo el fichero de salida Ejecutar Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

  18. Ejercicio 2: Varios ficheros • Descargar y descomprimir ejercicio2.tar.gz • Los ficheros de código: • cuadrado.h: Declaración de la funcióndouble cuadrado (double) • cuadrado.cpp: Implementación • ejercicio2.cpp: Función main • El script compila.csh compila y enlaza todo: • Crea los ficheros objeto cuadrado.o y ejercicio2.o • Enlaza los objetos en el ejecutable ejercicio2.exe [host] g++ -c -o cuadrado.o cuadrado.cpp [host] g++ -c -o ejercicio2.o ejercicio2.cpp [host] g++ -o ejercicio2.exe cuadrado.o ejercicio2.o Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

  19. Control de flujo: if-then-else • Ejecución condicional • Sintaxis simple: • Si la expresión lógica es cierta se ejecuta sentencia1 • Sintaxis completa: • Si la expresión lógica es falsa se ejecuta la sentencia2 • Si hay más de una sentencia a ejecutar por caso se meten entre { } if (expresión lógica) sentencia1; if (expresión lógica) sentencia1; else sentencia2; Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

  20. if-then-else ejemplo int mifuncion(); //Una funcion que devuelve un numero entero .... .... int i = mifuncion(); cout << "El valor devuelto por mifuncion es "; if (i < 0) cout << "negativo" << endl; elseif (i > 0) cout << "positivo" << endl; else cout << "nulo" << endl; Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

  21. Control de flujo: switch • Ejecución condicional • Se trata de evitar if-then-else encadenados • Sintaxis: switch (variable)case (valor1): setencia1; break; case (valor2): setencia2; break;... default: setenciadef; break; Se ejecuta si variable == valor1 Se ejecuta si variable == valor1 Se ejecuta si no se ha ejecutado ninguna de las anteriores Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

  22. switch: ejemplo int mifuncion(); //Una funcion que devuelve un numero entero .... .... int i = mifuncion(); cout << "El valor devuelto por mifuncion es "; switch (i) { case (0): cout << "nulo" << endl; break; case(1): cout << "uno" << endl; break; default: cout << "otro valor" << endl; } Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

  23. Control de flujo: for • Iteraciones • Sintaxis: • La inicialización (de un contador) solo se ejecuta la primera vez que entra en el bloque • La parada es una expresión lógica • Mientras sea cierta se sigue iterando • Cuando sea falsa se sale del bucle • La acción (normalmente el incremento de un contador) se ejecuta al final de cada iteración for (inicialización; parada; acción) sentencia; Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

  24. Control de flujo: while y do-while • Sintaxis: • Sólo si expresión es cierta se ejecuta una nueva iteración • La comprobación se hace al inicio • Sintaxis • Sólo si expresion es cierta se ejecuta una nueva iteración • La comprobación se hace al final: La sentencia se ejecuta al menos una vez! while (expresion) sentencia; do sentencia; while (expresion) Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

  25. Ejemplo Iteración: Tabla del 3 cout << "Tabla de multiplicar del 3..." << endl; for (int i = 1; i <= 10; i++) { cout << "3 * " << i << " = " << 3 * i << endl; } int i = 1; while (i <= 10) { cout << "3 * " << i << " = " << 3 * i << endl; i++; } int i = 1 do { cout << "3 * " << i << " = " << 3 * i << endl; i++; } while (i <= 10) Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

  26. Argumentos por valor y por referencia Por valor • A la función le llega una copia en memoria de la variable que pasamos • Cuando la función termina esa copia se destruye • Las modificaciones del valor de la variable dentro de la función no salen al exterior • Es la forma por de pasar variables por defecto Por referencia • A la función le llega la dirección de memoria de la variable que pasamos • ¡No hay copia! • Cuando la función termina no se destruye ese espacio en memoria • Las modificaciones del valor de la variable sí salen al exterior de la llamada • Se utiliza & para indicarlo Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

  27. Ejercicios: • Hacer un programa que calcule los cuadrados de los 10 primeros números aprovechando el código del ejercicio2 • Hacer un programa que calcule el cuadrado de un numero cualquiera (usar cin) • Hacer un programa que muestre los 10 primeros números primos double variable;cout << “Introduce un numero real: “ << endl;cin >> variable; Nota: Para comprimir un directorio en un solo fichero y poder enviarlo por correo [host] tar cvfz ficherocomprimido.tar.gz directorio Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

More Related