Técnicas Fundamentales de Simulación, Reconstrucción y Análisis de Datos en Física Experimental de Partículas El Lenguaje C++ (Introducción, variables,

Slides:



Advertisements
Presentaciones similares
Laboratorio Lenguaje de Programación ING2101
Advertisements

Curso de java básico (scjp)
Métodos y parámetros.
Unidad 15 Características de C++ no relacionadas con el DOO.
DATSI, FI, UPM José M. Peña Programación en C DATSI, FI, UPM José M. Peña Programación en C.
Introducción al lenguaje C
PROGRAMACIÓN EN C.
Lenguaje PHP Capítulo 4.
Repaso para la construcción del intérprete 2012
Fundamentos de la Programación Estructurada
Desarrollo de Aplicaciones para Internet
Tema 2: Lenguaje PHP básico
Programación en C (Segunda Parte) DATSI, FI, UPM José M. Peña
1.2 Sintaxis del lenguaje Java.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
Aprende C en una lluviosa tarde de domingo (en algo más de un par de horas) Sintaxis del lenguaje C para implementar un programa imperativo.
ESTRUCTURAS DE SECUENCIA
Funciones en lenguaje C
CI TEORIA semana 8 Subprogramas o funciones Definición de funciones.
El lenguaje de programación C - Funciones -
Tema 6: Clases Antonio J. Sierra.
Al término de la clase, el alumno reconoce las ventajas de usar JAVASCRIPT para un proyecto web.
Semana 5 Subprogramas..
Características de “C”
Características de “C” Y Esta conformado por un Ambiente Integrado. Y Es un Lenguaje de Nivel medio. Y Es un compilador. YContiene un conjunto de palabras.
El lenguaje de programación Java
Tema 2: Los tipos de datos
Java. Java nació el año 1991, por un par de ingenieros de la Sun Microsystems.
Capítulo 1 “Elementos de Programación”
Tipo de Datos Básicos.
El lenguaje de programación C - Identificadores y variables – Isidro González Caballero ( Introducción.
Administración de Proyectos de desarrollo de Software Ciclo de vida de un proyecto Enfoque moderno Temas Componentes Directivas Declaraciones globales.
INTRODUCCION. LOS LENGUAJES DE PROGRAMACIÓN Los lenguajes de programación herramientas que nos permiten crear programas y software. EL LENGUAJE DE MAQUINA.
Informática Ingeniería en Electrónica y Automática Industrial
El Lenguaje C++. Creación de programas simples de C++ Builder como ejercicios en C++. Los elementos de control fundamentales en C++, incluyendo operadores.
Resumen Fundamentos de Programación/ Programación I
EXPRESIONES Y SENTENCIAS
Elementos básicos del lenguaje
Unidad II Introducción a la programación en C++
Técnicas Computacionales en Física
Programación orientada a objetos. El método main es el comportamiento por el cual comienzan todos los programas en Java, de la misma forma en la que C,
Elementos básicos del lenguaje
Características de “C” Y Esta conformado por un Ambiente Integrado. Y Es un Lenguaje de Alto Nivel. Y Es un compilador. YContiene un conjunto de palabras.
PROGRAMACIÓN MULTIMEDIA
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
FUNDAMENTOS DE PROGRAMACIÓN
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
INTRODUCCION A LA PROGRAMACION
Introducción a la programación Orientada a Objetos y el C++ Isidro González Caballero ( Técnicas Experimentales.
PRINCIPIOS DE PROGRAMACIÓN

El lenguaje C++ Isidro González Caballero (Universidad de Oviedo) Técnicas de Comp. en Física Santander, 13/12/
INTRODUCCIÓN: PROGRAMACIÓN ORIENTADA A OBJETOS, GNU/LINUX Y C Técnicas Computacionales en Física Máster en Física y Tecnologías Físicas, Máster en.
El lenguaje de programación C - Control de flujo y bucles -
Fundamentos de Programación
Práctica Profesional PHP.
Estructuras de Decisión
Algoritmo.
Lenguaje de programación c
ESTRUCTURAS DE DECISION MULTIPLE
 Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman unos valores de entrada, llamados parámetros y proporcionan.
Conceptos y Lenguaje Imperativo
Desarrollador Profesional de Juegos Programación III Unidad I Capturar Excepciones.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) V. GESTIÓN DE TIPOS Y GENERACIÓN DE CÓDIGOS.
Lenguaje de Programación II PLAN DE EVALUACIÓN CONTENIDO MODALIDAD DE EVAL. PONDERACIÓN INTRODUCCIÓN BÁSICA AL LENGUAJE DE PROGRAMACIÓN.
PROF. RAFAEL MONTENEGRO B. UNELLEZ-APURE Introducci Ó n a los Arreglos (“arrays”) en C++
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Introducción al Lenguaje C (I) Tipos básicos, arrays y punteros Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión
Entrada y Salida en C++, Estructuras de Control Prof. Manuel B. Sánchez.
Transcripción de la presentación:

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

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

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

Tipos fundamentales Nombre ¿Qué representa? Entero, real, lógico char Un carácter Entero short int Un entero corto int Un entero long int Un entero con mayor rango de validez float Un real Real double Un real de doble precisión long double Un real de doble precisión y mayor bool cierto (true) o falso (false) Lógico unsigned Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

Operadores aritméticos Función Uso = asignación int i = 7; * multiplicación double r = 3.5 * i; / división double t = r / 1.2; % modulo (resto) i = 21 % 6; // i = 3 + suma double rt = r + t; - resta r = rt – t; ++,-- incremento int i = 0; int j = i++; //j = 0 int k = --i; //k = 0 +=,-=, *=,/= opera y asigna r += 2.6; //r = r + 2.6 r *= 2.6; //r = r * 2.6 Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

Operadores lógicos Operador Función Uso < menor que i < 5 <= menor o igual que r <= 5 > mayor que i > 5 >= mayor o igual que i >= 5 == igualdad i == 5 != desigualdad i != 5 ! NOT lógico !true; //false && Y lógico i < 5 && j > 4 || O lógico i < 5 || j > 4 Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

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

Tipos derivados, static, const... Nombre/Símb ¿Qué representa? Delante/Detras [] Array Detrás * Puntero, posición en memoria En medio & Referencia, alias de la var. struct Una estructura Delante class Una clase static Ámbito del programa const No puede modificarse Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

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

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 Hello world Ejecutable (a.out, .exe, …) Ejecutar ./a.out Linkar g++ main.o a.out Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

Ficheros intermedios (.i, .ii) Algunas posibilidades Preprocesador Código (.cc, .C, .cpp…) #include <iostream> int main() { cout << “Hola mundo” << endl; return 0; } Fichero objeto (.obj, .o) Compilar g++ -o main.cc Ficheros intermedios (.i, .ii) Preproceso Compilación main.o other.o libMyLib.so 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 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 Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

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

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> cout << "Hola\n"; cout << "2 y 4 es “; cout << 2+4 << endl; float pi=3.1415 cout << "El valor de pi=" << pi << endl; Salto de línea 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

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

Á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 static que 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

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; const double 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

Ejercicio 1: Compilar y ejecutar [host] tar xvfz ejercicio1.tar.gz [host] cd ejercicio1 [host] ls ejercicio1.cpp [host] g++ ejercicio1.cpp ejercicio1.cpp a.out [host] ./a.out El cuadrado de 7 es 49 pi^2 = 9.8696 [host] g++ ejercicio1.cpp –o ejercicio1.exe a.out ejercicio1.cpp ejercicio1.exe [host] ./ejercicio1.exe 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

Ejercicio 2: Varios ficheros Descargar y descomprimir ejercicio2.tar.gz Los ficheros de código: cuadrado.h: Declaración de la función double 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

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

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; else if (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

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

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; default: cout << "otro valor" << endl; } Téc. Fund. de Simulación, Reconstrucción y Análisis de datos en F. Exp. de Partículas

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

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

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

Argumentos por valor y por referencia 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

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