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



Documentos relacionados
Tipos de datos y operadores en C++

Introducción rápida a la programación (estructurada ) con C++

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 2

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 1

Métodos CON valor de retorno

Programación 1 Tema 3. Información, datos, operaciones y expresiones

Introducción a C++ Algoritmos y Estructuras de datos II Dra. Carmen Mezura Godoy. Febrero 2009

Clase 2: Tipos de Datos y Condiciones. Profesora de Cátedra: Jocelyn Simmonds

Programación 1 Tema 5. Instrucciones simples y estructuradas

Estructura de datos y Programación

Algunas ideas básicas de C++ Agustín J. González ELO-329

Agenda..NET C# Laboratorio #1

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Tema 2. Tipos predefinidos

Programación 1 Tema 5. Instrucciones simples y estructuradas

Tema ADQUISICIÓN Y TRATAMIENTO DE DATOS. Departamento de Ciencias de la Computación e IA. Subprogramas en C

Algunas ideas básicas de C++ Agustín J. González ELO-329

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E

Tema: Arreglos de Objetos en C++.

Lenguaje de Programación: C++ Repaso de Material C++

Funciones como Subprogramas en C++

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Funciones: Pasos por Referencia Recursividad

Algoritmo, Estructuras y Programación I Ing. Marglorie Colina

Apuntadores en C y C++

Nociones básicas sobre C++ Agustín J. González Patricio Olivares ELO-329

Una lista de operadores que pueden o no sobrecargarse es la siguiente: Operadores que pueden sobrecargarse

Definición Es una directiva using que ayuda al compilador a localizar una clase que se usa en la aplicación.

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 3

Introducción al lenguaje C

PROGRAMACIÓN ORIENTADA A OBJETOS

Docente: Juan Carlos Pérez P. Alumno : Fecha : Nota:

Tema 2.- Objetos y mensajes

abril de 2017 Desarrollo de aplicaciones en Java Tipos de datos primitivos Tipos de datos Elementos de aplicaciones simples

Introducción al lenguaje C

Lección 2 Introducción al lenguaje C

GUÍA DE TRABAJO N 1 C# Ing. Néstor Raúl Suarez Perpiñan Página 1 de 13

Tema: Grafos en C#. Objetivos Específicos. Materiales y Equipo. Introducción Teórica. Programación IV. Guía 7

Tema 7: Polimorfismo. Índice

Programación 1 Tema 2. Lenguaje de programación y ejecución de un programa

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL.

Impresión por pantalla. 3. Indicar la salida por pantalla (2 puntos-20 minutos)

INFORMATICA II PRIMER PARCIAL

Capítulo 11 INTRODUCCIÓN A LA CODIFICACIÓN EN C. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Práctica : Creación y uso de métodos

Estructura de un programa en Java. Tipos de datos básicos. class miprimerprograma{ // comentario, no es parte del programa

Instituto Tecnológico de Celaya

Elementos de un programa en C

Datos Elementales y formato de un programa en Java

Prueba N o 1. Programación II

Introducción a Funciones

LABORATORIO #1 INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN C++

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III

Tipos de Datos Recursivos

Procesos e Hilos en C

CAPITULO 2: VARIABLES Y CONSTANTES

Se guardan en archivos con extencion c y los cabezales con extension h

Tema 4. Control de flujo. Programación Programación - Tema 4: Control de Flujo

Programación 1. Tema I. Conceptos y elementos básicos de Programación. Lección 2. Lenguaje de programación y ejecución de un programa

JavaScript. Contenidos. Introducción El lenguaje Validación de formularios. Programación en Internet DLSI - Universidad de Alicante 1

Java. Introducción a la Programación Orientada a Objetos

Paradigmas de lenguajes de programación. Introducción a la programación imperativa. Lenguaje C. Programación imperativa

Introducción a C++ y Code::Blocks

Unidad IV Arreglos y estructuras. M.C. Juan Carlos Olivares Rojas

Tipos de Datos Simples Contenido del Tema

Funciones Definición de función

Tipos de Datos en C. Palabras reservadas en C

Recursos predefinidos en C++ que son utilizados en la asignatura Cláusula include Recursos predefinidos visibles Observaciones

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Introducción a c++ Introducción a la programación EIS Informática III

Repaso Lenguaje C Área de Servicios Programación (Ing. Elect. y Prof. Tec.), Programación I (TUG y TUR) y Electrónica programable (TUE)

Tipos Recursivos de Datos

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

III. Generación de Código orientado a objetos

El sistema de clases de Haskell. Introducción

Programación estructurada (Introducción a lenguaje C)

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

TEMA CÁLCULO DE DISTANCIA ENTRE DOS PUNTOS

Tema 7.- Fundamentos de la Programación Orientada a Objetos

Tema 2 Funciones y procedimientos. Tema 2 Funciones y procedimientos. Introducción. Abstracción y modularidad

Tema: Plantillas en C++.

TEMA 7: Ficheros. TEMA 7: Ficheros Concepto de fichero

Estructuración del programa en partes más pequeñas y sencillas

UNIDAD 2 Descripción de un programa

Taller #1 (versión del 18 de septiembre de 2009) Programación básica y aproximación al paradigma orientado a objetos

Guia#9: Punteros en C#.

Examen escrito de Programación 1. Viernes 22 de enero de Problema 1 o (3.0 puntos) Problema 2 o (3.0 puntos)

Tema: Estructuras de Selección en C#.

Unidad V. Ya veremos qué poner en "algunas_palabras" y "algo_más", por ahora sigamos un poco más.

GESTIÓN DE MEMORIA DINÁMICA

Práctico 2: Funciones y Punteros en C La teoría general para este práctico puede consultarse en los Capítulos 4 y 5 Notas de Clase

Curso de Java Introducción a la Programación I

Introducción a la Programación en C++ Dept. Ciencias de la Computación e I.A. Universidad de Granada

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E

Estructuras y clases. Dept. Ciencias de la Computación e I.A. Universidad de Granada

Transcripció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. 1

Programa para armar programas Trabajaremos con Visual Studio 2008 2

Programa para armar programas Creemos un proyecto 3

Programa para armar programas en C++ : 4

Programa para armar programas Estructura creada: 5

Programa para armar programas Ejecutar: 6

Ejemplo simple Comencemos con un ejemplo simple: // UFROTest.cpp : main project file. #include "stdafx.h" using namespace System; Comentario (línea que comienza con //) Inicio programa principal (main) int main(array<system::string ^> ^args) { Console::WriteLine(L"Hello World"); Console::ReadLine(); return 0; 7

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: intmain(array<system::string^> ^args) { Console::Write( Adios"); Console::WriteLine( mundo cruel"); Console::ReadLine(); return 0; 8

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 int n; n=2; Ejemplo de error int n; n= 2 ; 9

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: floata, 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. 10

Operadores sobre char, conversión y char de string El carácter se asocia al código ASCII: charletra; letra = 'a' + 1; Console::WriteLine(letra); intnumero; numero = 'a'; Console::WriteLine(numero); Entrega como resultado b 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 11

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 12

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: intx = rand (); doubley = (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. 13

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. 14

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(); 15

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 16

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

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 18

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

Loops -for El loop for(){ Otro loop (circulo cerrado) es el for: Ejemplo: for(int i=inicio;limite;i++ o i--){ instrucciones for (int i = 0; i < 4; i++) { 20

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

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!): nombre ejemplo = {1.0, 2.3, 2, (también se pueden hacer asignaciones de estructuras) Asignación de estructura: nombre ejemplo2 = ejemplo1; 22

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

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. 24

Punteros y Referencias Punteros int* x o int *x *px = &x; *px &rx add El puntero *px contiene la dirección de donde esta el valor x Referencia int& x o int &x &rx = x; add x val La referencia &rx retorna el valor x x = 1; lvalue = rvalue; 25

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

Puntero y referencia en subrutinas tipo *funcion(tipo *p) {...... return p; tipo &funcion(tipo &r) {...... return r; 27

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 28

Clases Las class son estructuras en que las variables son de uso exclusivamente Internas y no pueden ser modificadas externamente (privadas) Ejemplo class Complex { private: double real, imag; double mag, theta; bool cartesian, polar; Complex (double r, double i) { real = r; imag = i; cartesian = true; polar = false; void printcartesian (); void printpolar (); void calculatecartesian (); void calculatepolar (); public: Complex () { cartesian = false; polar = false; double getreal (); double getimag (); double getmag (); double gettheta (); void setcartesian (double r, double i); void setpolar (double m, double t); ; 29