La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Técnicas Computacionales en Física

Presentaciones similares


Presentación del tema: "Técnicas Computacionales en Física"— Transcripción de la presentación:

1 Técnicas Computacionales en Física
Máster en Física y Tecnologías Físicas, Máster en Computación El Lenguaje C++ (Introducción, variables, operadores, funciones, primeras compilaciones) 3 Isidro González Caballero (Universidad de Oviedo) Santander, 15/10/2012

2 C++ (Técnicas Computacionales en Física)
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) C++ (Técnicas Computacionales en Física)

3 C++ (Técnicas Computacionales en Física)
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 C++ (Técnicas Computacionales en Física)

4 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 r *= 2.6; //r = r * 2.6 C++ (Técnicas Computacionales en Física)

5 C++ (Técnicas Computacionales en Física)
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 C++ (Técnicas Computacionales en Física)

6 C++ (Técnicas Computacionales en Física)
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 C++ (Técnicas Computacionales en Física)

7 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 C++ (Técnicas Computacionales en Física)

8 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 = ; C++ (Técnicas Computacionales en Física)

9 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 C++ (Técnicas Computacionales en Física)

10 Preprocesador Código (.cc, .C, .cpp…) Fichero objeto (.obj, .o)
#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 C++ (Técnicas Computacionales en Física)

11 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 C++ (Técnicas Computacionales en Física)

12 C++ (Técnicas Computacionales en Física)
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 C++ (Técnicas Computacionales en Física)

13 C++ (Técnicas Computacionales en Física)
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; C++ (Técnicas Computacionales en Física)

14 Á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 C++ (Técnicas Computacionales en Física)

15 C++ (Técnicas Computacionales en Física)
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 = ; cout << "pi*pi = " << cuadrado(pi) << endl; return 0; } double cuadrado(double r) { double c = r*r; return c; C++ (Técnicas Computacionales en Física)

16 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 = [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 C++ (Técnicas Computacionales en Física)

17 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 C++ (Técnicas Computacionales en Física)

18 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; C++ (Técnicas Computacionales en Física)

19 C++ (Técnicas Computacionales en Física)
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; C++ (Técnicas Computacionales en Física)

20 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 C++ (Técnicas Computacionales en Física)

21 C++ (Técnicas Computacionales en Física)
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; } C++ (Técnicas Computacionales en Física)

22 C++ (Técnicas Computacionales en Física)
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; C++ (Técnicas Computacionales en Física)

23 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) C++ (Técnicas Computacionales en Física)

24 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) C++ (Técnicas Computacionales en Física)

25 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 C++ (Técnicas Computacionales en Física)

26 C++ (Técnicas Computacionales en Física)
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 C++ (Técnicas Computacionales en Física)


Descargar ppt "Técnicas Computacionales en Física"

Presentaciones similares


Anuncios Google