5. Técnicas de Simulación 2. Programando C++

Slides:



Advertisements
Presentaciones similares
Universidad Tecnológica Nacional Facultad Regional Buenos Aires Ingeniería en Sistemas de Información Introducción a C Sistemas Operativos.
Advertisements

Introducción a la programación
Universidad Tecnológica Nacional Facultad Regional Buenos Aires Ingeniería en Sistemas de Información Introducción a C Sistemas Operativos.
Curso de java básico (scjp)
Métodos y parámetros.
Unidad 15 Características de C++ no relacionadas con el DOO.
Introducción a C#.
DATSI, FI, UPM José M. Peña Programación en C DATSI, FI, UPM José M. Peña Programación en C.
ING SEC 3 - UCSC Agosto 2009 Laboratorio Lenguaje de Programación ING – Universidad Católica SSMA Concepción Semestre II Tema:
Curso de Java Capitulo 6: Cadenas y Arrays Profesor:
Introducción a la programación en JAVA
Abstracción de Datos Arrays.
Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
Uso de variables de tipo valor
Objetivos: Comprender la forma como se modela el daño a las células. 1 Radiobiología Celular 4.2 Modelos – UFRO-Master-Fisica-Medica-4-2-Modelos
5. Técnicas de Simulación 1. Conceptos
Objetivos: Compilado y ejecución de los simuladores Técnicas de Simulación 4. Compilado y Ejecución – UFRO-Master-Fisica-Medica-5-1-Conceptos
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Fundamentos de la Programación Estructurada
Programación I Teoría I
Programación I Teoría III
Programación, Algoritmos y Estructuras de Datos
Funciones. Programación, Algoritmos y Estructuras de Datos.
Desarrollo de Aplicaciones para Internet
Tema 2: Lenguaje PHP básico
INFORMATICA I Arreglos 1 CLASE 17.
Informática II Prof. Dr. Gustavo Patiño MJ
1.2 Sintaxis del lenguaje Java.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
3. INTRODUCCIÓN A LA PROGRAMACIÓN
Programación Estructurada
ESTRUCTURAS DE SECUENCIA
Programación Orientada a Objetos en Java
Una breve introducción
Unidad 3 Punteros.
VISUAL BASIC CONSOLA Todas las ordenes o instrucciones se digitan dentro de sub Main() y End Sub ÁREA DE TRABAJO: Las aplicaciones de consola son aquellas.
Vectores en java.
Manipulación de caracteres e hileras de texto
Conceptos Básicos de Java
La estructura básica de los programas en java, algo a tener en cuenta y que debemos recordar siempre es el archivo debe llevar el nombre de la clase con.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Funciones en lenguaje C
Modificadores.
POO Java Módulo 3 Elementos de programas Identificadores
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
“Android – Hola Mundo” Rogelio Ferreira Escutia. 2 Creación del Proyecto.
 2003 Prentice Hall, Inc. All rights reserved. 1 Capítulo 6: Clases y Abstracción de Datos Índice del capítulo 6.1 Introducción 6.2 Estructuras 6.3 Clases.
Lenguaje C.
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.
JAVA J.A.C..
Tema 7. Introducción a lenguaje de programación Visual Basic (clase 1)
Archivos.
Java. Java nació el año 1991, por un par de ingenieros de la Sun Microsystems.
Sintaxis de C# (Declaraciones y Tipos)
Valor X Valor Y Punto (0,0) Coordenadas.
Microsoft© Visual Basic . Net.
Unidad II Introducción a la programación en C++
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
PUNTEROS Y REFERENCIAS
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
Capitulo 4 Arreglos o Arrays Unidimensionales Bidimensionales Strings
6. Clases y Métodos..  6.1 Structs  6.2 Funciones  6.3 Namespaces  6.4 Clases.
LICETH CAJAS 3RO ASI 26/10/2010. Es un lenguaje de programación diseñado para crear una amplia gama de aplicaciones que se ejecutan en.NET Framework,
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.
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.
Transcripción de la presentación:

5. Técnicas de Simulación 2. Programando C++ Dr. Willy H. Gerber Instituto de Fisica Universidad Austral Valdivia, Chile Objetivos: Dominar C++ al nivel necesario para poder armar programas que simulen en base a Geant4. www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09

Programa para armar programas Trabajaremos con Visual Studio 2008 www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09

Programa para armar programas Creemos un proyecto… www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09

Programa para armar programas … en C++ : www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09

Programa para armar programas Estructura creada: www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09

Programa para armar programas Ejecutar: www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09

Ejemplo simple Comencemos con un ejemplo simple: Comentario (línea que comienza con //) // UFROTest.cpp : main project file. #include "stdafx.h" using namespace System; int main(array<System::String ^> ^args) { Console::WriteLine(L"Hello World"); Console::ReadLine(); return 0; } Inicio programa principal (main) www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09

Otro ejemplo Otro ejemplo, con dos línea: int main(array<System::String ^> ^args) { Console::Write(“Adios "); Console::WriteLine(“mundo cruel"); Console::ReadLine(); return 0; } Los espacios no son considerados en la compilación. O sea también se podría escribir: int main(array<System::String^> ^args) { Console::Write(“Adios"); Console::WriteLine(“mundo cruel"); Console::ReadLine(); return 0; } www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09

Variables En el ejemplo se introdujo el concepto de texto (string) que se escribe entre “: string^ s=“Hola”; Existen además por ejemplo: int n=2; char c=‘h’; float x=5.67; double y=2.345; bool decision=true; números enteros caracteres números reales (baja precisión) números reales (alta precisión) valor lógico Nota, es muy distinto 2, ‘2’, “2” y 2.0 (porque?) Ejemplo de definición y asignación Ejemplo de error int n; n=2; int n; n=‘2’; www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09

Operadores sobre int y float Los operadores básicos son: +  suma      -    resta * multiplicación / división % modulo ++ incrementa en 1 Los operadores pueden ser empleados para asignar valores y/o para entregar valores: float a, b, x, y; a=1.2; b=0.2; x=5.1; y=a*x+b/x; Console::WriteLine(2*(x/a)+b); Nota: En el calculo primero se aplican * y /, luego + y -. Las operaciones se hacen de izquierda a derecha. www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09

Operadores sobre char , conversión y char de string El carácter se asocia al código ASCII: char letra; letra = 'a' + 1; Console::WriteLine(letra); Entrega como resultado ‘b’ int numero; numero = 'a'; Console::WriteLine(numero); Entrega como resultado 97 Conversión de tipos (typecast) double x=2.6; int n=(int)x; Asocia a n el valor 2 (cuidado, trunca, no redondea) Cada string es una colección o arreglo de char’s, por ello String^ nombre (“test”); char primera_letra=nombre[0]; char segunda_letra=nombre[1]; Asigna la ‘t’ a primera_letra Asigna la ‘e’ a segunda_letra www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09

Funciones matemáticas Si se agrega al inicio la referencia a las funciones matemáticas: #include <math.h> se pueden usar las funciones matemáticas que incluye el C++, calculando y asignando valores como por ejemplo y=cos(x) Las funciones que incluye el C++ son: abs acos asin atan atan2 ceil cos cosh exp fabs floor fmod frexp ldexp log log10 modf pow sin sinh sqrt tan tanh www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09

Generadores random En la librería: #include <stdlib.h> Esta definida el generador de números al azar rand (); Genera números enteros entre 0 y RAND_MAX Para generar un numero real entre 0 y 1: int x = rand (); double y = (double)x/RAND_MAX; Cuidado, el seed (semilla, valor inicial de la secuencia) es siempre el mismo, o sea la secuencia es siempre la misma. Si se desea cambiar esto se debe variar el seed. www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09

Funciones propias Los programas permiten la definición de funciones o subrutinas propias. Un ejemplo podría ser una función “writeMessage” que se “encargue” de enviar un mensaje a la pantalla. Se definen “en paralelo” al programa principal que lo llama: #include <iostream.h> void writeMessage (String^ txt) { Console::WriteLine(“Mensaje: ”+txt); Console::ReadLine(); } void main () {   writeMessage("Hola.“); } Existen también librerías que traen funciones que pueden ser llamadas, Geant4 es una muy completa para cálculos de dinámica de partículas. www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09

Funciones propias Las subrutinas pueden: Tener múltiples argumentos (Nota: cada argumento tiene que llevar su tipo, ejemplo: int n, int m, float x … es ilegal tratar de resumir: int n, m, float x Pueden devolver un valor, el que se especifica en la definición de la subrutina y en el valor que entrega: double poly(double x) {     double u=1+2*x+3*pow(x,2); return u; } void main () { Console::WriteLine(“P(2.5)=”+poly(2.5)); Console::ReadLine(); } www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09

Condicionamientos En el desarrollo del programa se pueden condicionar la ejecución de una serie de instrucciones: if (condicion1) { instrucciones1 } else if(condicion2){ instrucciones2 } else{ instrucciones3 } Si se da la condicion1… … realiza instrucciones1 … si no se dio condicion1 pero si condicion2 … realiza instrucciones2 … y si no se dio ni condicion1 ni condicion2 … realiza instrucciones3 Nota: pueden existir el numero que se quiera de else if (incluido ninguno) y existir o no el else final. Las instrucciones pueden también contener condiciones if Las condiciones se definen como x==y x!=y x >y x >=y x <y x <=y x es idéntico de y x es diferente a y x mayor que y x mayor o igual que y x menor que y x menor o igual que y www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09

Abortar y recurrencia Si se desea abortar una subrutina basta con incluir el comando: return; Y el sistema volverá al punto donde se llamo la subrutina (en el main o en la subrutina que sea). C y C++ tienen además la posibilidad de realizar llamadas recurrentes, o sea la subrutina se llama a si misma: void ConteoRegresivo(int cnt) { if(cnt==0) {return;} else{ Console::WriteLine(cnt); Console::ReadLine(); ConteoRegresivo(cnt-1); } www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09

Variables lógicas Alternativas bool flag; flag = true; flag = false; true=verdadero false=falso Determinar variable lógica, ejemplos: flag=(x!=0); flag=(n>0); Si x es distinto de cero, flag es verdadero, si no falso. Si n es mayor que cero, flag es verdadero, si no falso. Operadores lógicos: && || ! And Ir Nota flag12=flag1 && flag2 flag12=flag1 || flag2 flag2=!flag1 www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09

Loops - while El loop while(){} El loop (circulo cerrado) mas simple es el while simple: while(condición){ instrucciones } Que se repite mientras que la condición se cumpla. Por ello las instrucciones deben contener algún cambio que lleve finalmente a que la condición no se cumpla y pueda salir del loop (error en la ejecución, el compilador no descubre estos problemas). n=10 while(n>0){ n=n-1; } www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09

Loops - for El loop for(){} Otro loop (circulo cerrado) es el for: for(int i=inicio;limite;i++ o i--){ instrucciones } Ejemplo: for (int i = 0; i < 4; i++) { } www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09

Operaciones sobre strings Largo de un string String^ txt (“text”); int len=txt.length(); Asigna a león el valor 4 Posición de char en string String^ txt (“text”); int idx=txt.find(‘x’); Asigna a idx el valor 3 String^ txt (“text”); int idx=txt.find(‘ex’); Asigna a idx el valor 2 Concatenar strings String^ txt1 (“te”); String^ txt2 (“xt”); String^ txt (“”); txt=txt1+txt2; www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09

Estructuras Estructuras Ejemplo struct nombre {   double fvariable1, fvariable2; int nvariable1; … }; struct Point {   double x, y; }; Elementos de la estructura: nombre.fvariable1 Asignación de valores a estructura (solo al crear!): (también se pueden hacer asignaciones de estructuras) nombre ejemplo = {1.0, 2.3, 2, …} Asignación de estructura: nombre ejemplo2 = ejemplo1; www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09

Estructuras Las estructuras se pueden usar igual que los otros tipos de variables. En particular se pueden pasar como argumentos: void subrutina(nombre p, …) Lo que significa que una copia (no la misma estructura) es creada en la subrutina. Si se desea hacer referencia a la estructura original se debe pasar la dirección a la memoria: void subrutina(nombre& p, …) Si se quiere evitar que modificaciones en la subrutina repercutan en la rutina que hace la llamada se puede “bloquear” la modificación agregando const: void subrutina(const nombre& p, …) Las estructuras pueden ser retronadas por las subrutinas nombre subrutina(…){ nombre p; … return p; } www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09

Estructuras Funciones a ser llamadas en estructuras struct Tiempo {   int hora, minutos;   double segundos;   void Tiempo::imprimir (); }; La función en si seria void Tiempo::imprimir () {   Tiempo hoy = *this;   instrucciones } en que se llama vía el puntero this la estructura. En todo caso se pueden citar en la función directamente las variables como serian hora, minutos y segundos. www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09

Punteros y Referencias int* x o int *x *px = &x; El puntero *px contiene la dirección de donde esta el valor x *px &rx add Referencia add x val int& x o int &x &rx = x; La referencia &rx retorna el valor x x = 1; lvalue = rvalue; www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09

Alocución de memoria dinámica y arreglos int *pint; pint = new int; delate pint; Definir puntero Reservar memoria Liberar memoria int n = 10; int *parray; parray = new int[n]; delte parray; www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09

Puntero y referencia en subrutinas tipo *funcion(tipo *p) {    ...    ...    return p; } tipo &funcion(tipo &r) {   ...   ...   return r; } www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09

Estructuras generales y Archivos “Headers” Una estructura general tiene la forma: struct nombre {   // instance variables   variables (ej. double x, y; int n;)   // constructors   funciones que asignan valores (ej set(int n, double x, double y); set(int n); )   // modifiers funciones de modificación  (ej. void change (double x, double y); )   // functions funciones “de trabajo”  (ej. void print (int n) const; ) }; La definición se graba en un archivo .h que se cita en el programa main como: #include “nombre.h” Las funciones se escriben en el archivo nombre.cpp www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09

Clases Las class son estructuras en que las variables son de uso exclusivamente Internas y no pueden ser modificadas externamente (privadas)   Complex (double r, double i)   {     real = r;  imag = i;     cartesian = true;  polar = false;   }   void printCartesian ();   void printPolar ();   double getReal ();   double getImag ();   double getMag ();   double getTheta ();   void setCartesian (double r, double i);   void setPolar (double m, double t); }; Ejemplo class Complex { private:   double real, imag;   double mag, theta;   bool cartesian, polar;   void calculateCartesian ();   void calculatePolar (); public:   Complex () { cartesian = false; polar = false; } www.gphysics.net – UFRO-Master-Fisica-Medica-5-2-Programando C++-05.09