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

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

description

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. - PowerPoint PPT Presentation

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

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

EL LENGUAJE C++(Introducción, variables, operadores, funciones, primeras compilaciones)

Técnicas Fundamentales de

Simulación, Reconstrucción y

Análisis de Datos en Física

Experimental de Partículas

Isidro González Caballero (Universidad de Oviedo)

Valencia, 07-11/05/20102

33

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

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

2

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

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

3

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

Tipos fundamentales

Nombre ¿Qué representa? Entero, real, lógico

char Un carácter Entero

short int Un entero corto Entero

int Un entero Entero

long int Un entero con mayor rango de validez Entero

float Un real Real

double Un real de doble precisión Real

long double

Un real de doble precisión y mayor Real

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

4

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

Operadores aritméticos

Operador 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 = 0int k = --i; //k = 0

+=,-=,*=,/=

opera y asigna r += 2.6; //r = r + 2.6r *= 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

5

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

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

6

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

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ónchar 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

Comentarios

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

7

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

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. En medio

struct Una estructura Delante

class Una clase Delante

static Ámbito del programa Delante

const No puede modificarse Delante

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

8

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

Tipos derivados, static, const...

//Punterosint* ptrNumero; //Puntero a un entero

//Arraysfloat reales[20]; //Un array de 20 floatsdouble punto[2] = {1.2, 3.4}; //Con inicializacion

//Structstruct punto2D {short int x; short int y;};

//staticstatic int contador;

//constconst 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

9

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

Compilar

g++ -o main.cc

Escribir, compilar, linkar, ejecutar

Código(.cc, .C, .cpp…)

#include <iostream>

int main() {

cout << “Hola mundo”

<< endl;

return 0;

}

Diseñar

Escribir

Fichero objeto(.obj, .o)

Ejecutable(a.out, .exe, …)Ejecutar

./a.out

Hello world Linkar

g++ main.o

main.o

libMyLib.so

other.o

a.out

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

10

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

Compilación

Preprocesador

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

Compilar

g++ -o main.cc

Código(.cc, .C, .cpp…)

#include <iostream>

int main() {

cout << “Hola mundo”

<< endl;

return 0;

}

Fichero objeto(.obj, .o)

main.o

libMyLib.so

other.o

Ficheros intermedios

(.i, .ii)Preproceso

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

11

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

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

12

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

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.1415cout << "El valor de pi=" << pi << endl;

Hola2 y 4 es 6El valor de pi=3.1415

Salto de línea

Resultado

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

13

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

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

14

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

Á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

15

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

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

16

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

[host] tar xvfz ejercicio1.tar.gz[host] cd ejercicio1[host] lsejercicio1.cpp[host] g++ ejercicio1.cpp[host] lsejercicio1.cpp a.out[host] ./a.outEl cuadrado de 7 es 49pi^2 = 9.8696[host] g++ ejercicio1.cpp –o ejercicio1.exe[host] lsa.out ejercicio1.cpp ejercicio1.exe[host] ./ejercicio1.exeEl cuadrado de 7 es 49pi^2 = 9.8696

Ejercicio 1: Compilar y ejecutar

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

17

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

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

18

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

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

19

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

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

20

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

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

21

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

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

22

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

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

23

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

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

24

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

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 = 1do { 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

25

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

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

26

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

Nota: Para comprimir un directorio en un solo fichero y poder enviarlo por correo

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;

[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

27