SlideShare una empresa de Scribd logo
1 de 29
Descargar para leer sin conexió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
  www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
Programa para armar programas

 Trabajaremos con Visual Studio 2008




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

 Creemos un proyecto…




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

 … en C++ :




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

 Estructura creada:




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

 Ejecutar:




                                                                                           6
             www.gphysics.net – UFRO-2008-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 quot;stdafx.hquot;
                                                        Inicio programa principal (main)
      using namespace System;

      int main(array<System::String ^> ^args)
      {
        Console::WriteLine(Lquot;Hello Worldquot;);
        Console::ReadLine();
        return 0;
      }



                                                                                                    7
                 www.gphysics.net – UFRO-2008-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 quot;);
         Console::WriteLine(“mundo cruelquot;);
         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(“Adiosquot;);
    Console::WriteLine(“mundo cruelquot;); Console::ReadLine(); return 0; }




                                                                                              8
                www.gphysics.net – UFRO-2008-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;                             números enteros
             char c=‘h’;                          caracteres
             float x=5.67;                        números reales (baja precisión)
             double y=2.345;                      números reales (alta precisión)
             bool decision=true;                  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;                                             int n;
                           n=2;                                               n=‘2’;
                                                                                              9
                www.gphysics.net – UFRO-2008-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.
                                                                                               10
                 www.gphysics.net – UFRO-2008-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;                         Entrega como resultado ‘b’
           Console::WriteLine(letra);

           int numero;
           numero = 'a';                            Entrega como resultado 97
           Console::WriteLine(numero);

   Conversión de tipos (typecast)

           double x=2.6;                            Asocia a n el valor 2
           int n=(int)x;                            (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];                           Asigna la ‘t’ a primera_letra
            char segunda_letra=nombre[1];                           Asigna la ‘e’ a segunda_letra
                                                                                                    11
                www.gphysics.net – UFRO-2008-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               fabs              modf
                                                  acos              floor             pow
                                                  asin              fmod              sin
                                                  atan              frexp             sinh
                                                  atan2             ldexp             sqrt
                                                  ceil              log               tan
                                                  cos               log10             tanh
                                                  cosh
                                                  exp


                                                                                              12
                www.gphysics.net – UFRO-2008-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.



                                                                                                  13
                    www.gphysics.net – UFRO-2008-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(quot;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
                www.gphysics.net – UFRO-2008-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();
            }
                                                                                               15
                 www.gphysics.net – UFRO-2008-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) {        Si se da la condicion1…
                    instrucciones1        … realiza instrucciones1
                 } else if(condicion2){   … si no se dio condicion1 pero si condicion2
                    instrucciones2        … realiza instrucciones2
                 } else{                  … y si no se dio ni condicion1 ni condicion2
                    instrucciones3        … 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 es idéntico de y
                x!=y            x es diferente a y
                x >y            x mayor que y
                x >=y           x mayor o igual que y
                x <y            x menor que y
                x <=y           x menor o igual que y
                                                                                              16
                www.gphysics.net – UFRO-2008-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);
                    }
                  }
                                                                                               17
                 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
Variables lógicas

   Alternativas

             bool flag;
             flag = true;                        true=verdadero
             flag = false;                       false=falso

   Determinar variable lógica, ejemplos:
         flag=(x!=0);            Si x es distinto de cero, flag es verdadero, si no falso.
         flag=(n>0);             Si n es mayor que cero, flag es verdadero, si no falso.

   Operadores lógicos:

          &&        And            flag12=flag1 && flag2
          ||        Ir             flag12=flag1 || flag2
          !         Nota           flag2=!flag1




                                                                                                18
                  www.gphysics.net – UFRO-2008-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;
                              }


                                                                                               19
                 www.gphysics.net – UFRO-2008-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++) {
                             }




                                                                                               20
                 www.gphysics.net – UFRO-2008-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;
                                                                                              21
                www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
Estructuras

   Estructuras                                               Ejemplo

                 struct nombre {                                           struct Point {
                   double fvariable1, fvariable2;                            double x, y;
                   int nvariable1;                                         };
                   …
                 };

   Elementos de la estructura:
              nombre.fvariable1

    Asignación de valores a estructura (solo al crear!):                            (también se pueden
                                                                                    hacer asignaciones de
              nombre ejemplo = {1.0, 2.3, 2, …}                                     estructuras)

    Asignación de estructura:
              nombre ejemplo2 = ejemplo1;
                                                                                                        22
                  www.gphysics.net – UFRO-2008-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;
                   }
                                                                                               23
                 www.gphysics.net – UFRO-2008-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.

                                                                                               24
                 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
Punteros y Referencias


   Punteros

    int* x o int *x         *px = &x;                                        El puntero *px
                                                                             contiene la dirección
                                                    *px                      de donde esta el valor x
                                                               add
                                                    &rx
   Referencia
                                                    add        x val
    int& x o int &x           &rx = x;                                       La referencia &rx
                                                                             retorna el valor x



    x = 1;
    lvalue = rvalue;




                                                                                                        25
                www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
Alocución de memoria dinámica y arreglos

      int *pint;               Definir puntero
      pint = new int;          Reservar memoria
      delate pint;             Liberar memoria

      int n = 10;
      int *parray;

      parray = new int[n];
      delte parray;




                                                                                             26
               www.gphysics.net – UFRO-2008-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;
            }




                                                                                             27
               www.gphysics.net – UFRO-2008-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
                                                                                              28
                www.gphysics.net – UFRO-2008-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)
 Ejemplo                                                          Complex (double r, double i)
                                                                  {
  class Complex                                                     real = r; imag = i;
  {                                                                 cartesian = true; polar = false;
  private:                                                        }
    double real, imag;
    double mag, theta;                                            void printCartesian ();
    bool cartesian, polar;                                        void printPolar ();

   void calculateCartesian ();                                    double getReal ();
   void calculatePolar ();                                        double getImag ();
                                                                  double getMag ();
  public:                                                         double getTheta ();
   Complex () { cartesian = false; polar = false; }
                                                                   void setCartesian (double r, double i);
                                                                   void setPolar (double m, double t);
                                                                 };
                                                                                                       29
                  www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09

Más contenido relacionado

Similar a UFRO Master Fisica Medica 5 2 Programando C (20)

A1 u1-16230227
A1 u1-16230227A1 u1-16230227
A1 u1-16230227
 
Curso c ii
Curso c iiCurso c ii
Curso c ii
 
Instituto tecnológico particular
Instituto tecnológico particularInstituto tecnológico particular
Instituto tecnológico particular
 
Clase 1- Programacion Lineal
Clase 1- Programacion LinealClase 1- Programacion Lineal
Clase 1- Programacion Lineal
 
Diapositivs~Elementos_basicos_C.pdf
Diapositivs~Elementos_basicos_C.pdfDiapositivs~Elementos_basicos_C.pdf
Diapositivs~Elementos_basicos_C.pdf
 
C
CC
C
 
Elementosbasicosc
Elementosbasicosc Elementosbasicosc
Elementosbasicosc
 
Elementos basicos cpp_oto2014
Elementos basicos cpp_oto2014Elementos basicos cpp_oto2014
Elementos basicos cpp_oto2014
 
Programación C++ - DEV C++
Programación C++ - DEV C++Programación C++ - DEV C++
Programación C++ - DEV C++
 
Apun c
Apun cApun c
Apun c
 
Pb1
Pb1Pb1
Pb1
 
Cpp
CppCpp
Cpp
 
Cpp
CppCpp
Cpp
 
Elementos basicos c
Elementos basicos cElementos basicos c
Elementos basicos c
 
Introduccion a C++.pdf
Introduccion a C++.pdfIntroduccion a C++.pdf
Introduccion a C++.pdf
 
Tarea 1 bash
Tarea 1 bashTarea 1 bash
Tarea 1 bash
 
Lenguajecviviana
LenguajecvivianaLenguajecviviana
Lenguajecviviana
 
C++.pdf
C++.pdfC++.pdf
C++.pdf
 
FdP_Diapositivas_2018
FdP_Diapositivas_2018FdP_Diapositivas_2018
FdP_Diapositivas_2018
 
Revista digital
Revista digitalRevista digital
Revista digital
 

Más de Willy H. Gerber

UACH Fisica en la Terapia Ocupacional 2.1 Accion del Musculo Teoria
UACH Fisica en la Terapia Ocupacional 2.1 Accion del Musculo TeoriaUACH Fisica en la Terapia Ocupacional 2.1 Accion del Musculo Teoria
UACH Fisica en la Terapia Ocupacional 2.1 Accion del Musculo TeoriaWilly H. Gerber
 
UACH Fisica En La Terapia Ocupacional 1 5 Torque Y Palanca Teoria
UACH Fisica En La Terapia Ocupacional 1 5 Torque Y Palanca TeoriaUACH Fisica En La Terapia Ocupacional 1 5 Torque Y Palanca Teoria
UACH Fisica En La Terapia Ocupacional 1 5 Torque Y Palanca TeoriaWilly H. Gerber
 
UACH Fisica En La Terapia Ocupacional 1 4 Fuerza Y Aceleracion Teoria
UACH Fisica En La Terapia Ocupacional 1 4 Fuerza Y Aceleracion TeoriaUACH Fisica En La Terapia Ocupacional 1 4 Fuerza Y Aceleracion Teoria
UACH Fisica En La Terapia Ocupacional 1 4 Fuerza Y Aceleracion TeoriaWilly H. Gerber
 
UACH Fisica En La Terapia Ocupacional 1 3 Rotacion Teoria
UACH Fisica En La Terapia Ocupacional 1 3 Rotacion TeoriaUACH Fisica En La Terapia Ocupacional 1 3 Rotacion Teoria
UACH Fisica En La Terapia Ocupacional 1 3 Rotacion TeoriaWilly H. Gerber
 
UACH Fisica En La Terapia Ocupacional 1 2 Translacion Teoria
UACH Fisica En La Terapia Ocupacional 1 2 Translacion TeoriaUACH Fisica En La Terapia Ocupacional 1 2 Translacion Teoria
UACH Fisica En La Terapia Ocupacional 1 2 Translacion TeoriaWilly H. Gerber
 
UACH Fisica En La Terapia Ocupacional 1 1 Modelando Teoria
UACH Fisica En La Terapia Ocupacional 1 1 Modelando TeoriaUACH Fisica En La Terapia Ocupacional 1 1 Modelando Teoria
UACH Fisica En La Terapia Ocupacional 1 1 Modelando TeoriaWilly H. Gerber
 
UACH Física en la Odontologia 3 3 Resonancia Magnética Nuclear
UACH Física en la Odontologia 3 3 Resonancia Magnética NuclearUACH Física en la Odontologia 3 3 Resonancia Magnética Nuclear
UACH Física en la Odontologia 3 3 Resonancia Magnética NuclearWilly H. Gerber
 
UACH Física en la Odontologia 2 6 Propiedades De Ceramicas Y Composits
UACH Física en la Odontologia 2 6 Propiedades De Ceramicas Y CompositsUACH Física en la Odontologia 2 6 Propiedades De Ceramicas Y Composits
UACH Física en la Odontologia 2 6 Propiedades De Ceramicas Y CompositsWilly H. Gerber
 
UACH Física en la Odontologia 3 2 Ultrasonido
UACH Física en la Odontologia 3 2 UltrasonidoUACH Física en la Odontologia 3 2 Ultrasonido
UACH Física en la Odontologia 3 2 UltrasonidoWilly H. Gerber
 
UFRO Master Fisica Medica 5 5 Visualizadores
UFRO Master Fisica Medica 5 5 VisualizadoresUFRO Master Fisica Medica 5 5 Visualizadores
UFRO Master Fisica Medica 5 5 VisualizadoresWilly H. Gerber
 
UFRO Master Fisica Medica 5 4 Compilado Y Ejecucion
UFRO Master Fisica Medica 5 4 Compilado Y EjecucionUFRO Master Fisica Medica 5 4 Compilado Y Ejecucion
UFRO Master Fisica Medica 5 4 Compilado Y EjecucionWilly H. Gerber
 
UFRO Master Fisica Medica 5 3 Geant4
UFRO Master Fisica Medica 5 3 Geant4UFRO Master Fisica Medica 5 3 Geant4
UFRO Master Fisica Medica 5 3 Geant4Willy H. Gerber
 
UFRO Master Fisica Medica 5 1 Conceptos
UFRO Master Fisica Medica 5 1 ConceptosUFRO Master Fisica Medica 5 1 Conceptos
UFRO Master Fisica Medica 5 1 ConceptosWilly H. Gerber
 
UACH Fisica en la Odontologia 2 5 Propiedades de Aleaciones
UACH Fisica en la Odontologia 2 5 Propiedades de AleacionesUACH Fisica en la Odontologia 2 5 Propiedades de Aleaciones
UACH Fisica en la Odontologia 2 5 Propiedades de AleacionesWilly H. Gerber
 
UFRO Fisica En La Medicina 2009
UFRO Fisica En La Medicina 2009UFRO Fisica En La Medicina 2009
UFRO Fisica En La Medicina 2009Willy H. Gerber
 
UACH Bachillerato Lab 13 Efecto Magnus
UACH Bachillerato Lab 13 Efecto MagnusUACH Bachillerato Lab 13 Efecto Magnus
UACH Bachillerato Lab 13 Efecto MagnusWilly H. Gerber
 
UACH Bachillerato Lab 12 Termodinamica
UACH Bachillerato Lab 12 TermodinamicaUACH Bachillerato Lab 12 Termodinamica
UACH Bachillerato Lab 12 TermodinamicaWilly H. Gerber
 
UFRO Master Fisica Medica 4 1 Introduccion
UFRO Master Fisica Medica 4 1 IntroduccionUFRO Master Fisica Medica 4 1 Introduccion
UFRO Master Fisica Medica 4 1 IntroduccionWilly H. Gerber
 
UFRO Master Fisica Medica 4 2 Modelos
UFRO Master Fisica Medica 4 2 ModelosUFRO Master Fisica Medica 4 2 Modelos
UFRO Master Fisica Medica 4 2 ModelosWilly H. Gerber
 
UACH Bachillerato Lab 11 Hidrodinamica
UACH Bachillerato Lab 11 HidrodinamicaUACH Bachillerato Lab 11 Hidrodinamica
UACH Bachillerato Lab 11 HidrodinamicaWilly H. Gerber
 

Más de Willy H. Gerber (20)

UACH Fisica en la Terapia Ocupacional 2.1 Accion del Musculo Teoria
UACH Fisica en la Terapia Ocupacional 2.1 Accion del Musculo TeoriaUACH Fisica en la Terapia Ocupacional 2.1 Accion del Musculo Teoria
UACH Fisica en la Terapia Ocupacional 2.1 Accion del Musculo Teoria
 
UACH Fisica En La Terapia Ocupacional 1 5 Torque Y Palanca Teoria
UACH Fisica En La Terapia Ocupacional 1 5 Torque Y Palanca TeoriaUACH Fisica En La Terapia Ocupacional 1 5 Torque Y Palanca Teoria
UACH Fisica En La Terapia Ocupacional 1 5 Torque Y Palanca Teoria
 
UACH Fisica En La Terapia Ocupacional 1 4 Fuerza Y Aceleracion Teoria
UACH Fisica En La Terapia Ocupacional 1 4 Fuerza Y Aceleracion TeoriaUACH Fisica En La Terapia Ocupacional 1 4 Fuerza Y Aceleracion Teoria
UACH Fisica En La Terapia Ocupacional 1 4 Fuerza Y Aceleracion Teoria
 
UACH Fisica En La Terapia Ocupacional 1 3 Rotacion Teoria
UACH Fisica En La Terapia Ocupacional 1 3 Rotacion TeoriaUACH Fisica En La Terapia Ocupacional 1 3 Rotacion Teoria
UACH Fisica En La Terapia Ocupacional 1 3 Rotacion Teoria
 
UACH Fisica En La Terapia Ocupacional 1 2 Translacion Teoria
UACH Fisica En La Terapia Ocupacional 1 2 Translacion TeoriaUACH Fisica En La Terapia Ocupacional 1 2 Translacion Teoria
UACH Fisica En La Terapia Ocupacional 1 2 Translacion Teoria
 
UACH Fisica En La Terapia Ocupacional 1 1 Modelando Teoria
UACH Fisica En La Terapia Ocupacional 1 1 Modelando TeoriaUACH Fisica En La Terapia Ocupacional 1 1 Modelando Teoria
UACH Fisica En La Terapia Ocupacional 1 1 Modelando Teoria
 
UACH Física en la Odontologia 3 3 Resonancia Magnética Nuclear
UACH Física en la Odontologia 3 3 Resonancia Magnética NuclearUACH Física en la Odontologia 3 3 Resonancia Magnética Nuclear
UACH Física en la Odontologia 3 3 Resonancia Magnética Nuclear
 
UACH Física en la Odontologia 2 6 Propiedades De Ceramicas Y Composits
UACH Física en la Odontologia 2 6 Propiedades De Ceramicas Y CompositsUACH Física en la Odontologia 2 6 Propiedades De Ceramicas Y Composits
UACH Física en la Odontologia 2 6 Propiedades De Ceramicas Y Composits
 
UACH Física en la Odontologia 3 2 Ultrasonido
UACH Física en la Odontologia 3 2 UltrasonidoUACH Física en la Odontologia 3 2 Ultrasonido
UACH Física en la Odontologia 3 2 Ultrasonido
 
UFRO Master Fisica Medica 5 5 Visualizadores
UFRO Master Fisica Medica 5 5 VisualizadoresUFRO Master Fisica Medica 5 5 Visualizadores
UFRO Master Fisica Medica 5 5 Visualizadores
 
UFRO Master Fisica Medica 5 4 Compilado Y Ejecucion
UFRO Master Fisica Medica 5 4 Compilado Y EjecucionUFRO Master Fisica Medica 5 4 Compilado Y Ejecucion
UFRO Master Fisica Medica 5 4 Compilado Y Ejecucion
 
UFRO Master Fisica Medica 5 3 Geant4
UFRO Master Fisica Medica 5 3 Geant4UFRO Master Fisica Medica 5 3 Geant4
UFRO Master Fisica Medica 5 3 Geant4
 
UFRO Master Fisica Medica 5 1 Conceptos
UFRO Master Fisica Medica 5 1 ConceptosUFRO Master Fisica Medica 5 1 Conceptos
UFRO Master Fisica Medica 5 1 Conceptos
 
UACH Fisica en la Odontologia 2 5 Propiedades de Aleaciones
UACH Fisica en la Odontologia 2 5 Propiedades de AleacionesUACH Fisica en la Odontologia 2 5 Propiedades de Aleaciones
UACH Fisica en la Odontologia 2 5 Propiedades de Aleaciones
 
UFRO Fisica En La Medicina 2009
UFRO Fisica En La Medicina 2009UFRO Fisica En La Medicina 2009
UFRO Fisica En La Medicina 2009
 
UACH Bachillerato Lab 13 Efecto Magnus
UACH Bachillerato Lab 13 Efecto MagnusUACH Bachillerato Lab 13 Efecto Magnus
UACH Bachillerato Lab 13 Efecto Magnus
 
UACH Bachillerato Lab 12 Termodinamica
UACH Bachillerato Lab 12 TermodinamicaUACH Bachillerato Lab 12 Termodinamica
UACH Bachillerato Lab 12 Termodinamica
 
UFRO Master Fisica Medica 4 1 Introduccion
UFRO Master Fisica Medica 4 1 IntroduccionUFRO Master Fisica Medica 4 1 Introduccion
UFRO Master Fisica Medica 4 1 Introduccion
 
UFRO Master Fisica Medica 4 2 Modelos
UFRO Master Fisica Medica 4 2 ModelosUFRO Master Fisica Medica 4 2 Modelos
UFRO Master Fisica Medica 4 2 Modelos
 
UACH Bachillerato Lab 11 Hidrodinamica
UACH Bachillerato Lab 11 HidrodinamicaUACH Bachillerato Lab 11 Hidrodinamica
UACH Bachillerato Lab 11 Hidrodinamica
 

Último

PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxPLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxJUANSIMONPACHIN
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteJuan Hernandez
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDUgustavorojas179704
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024IES Vicent Andres Estelles
 
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIATRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIAAbelardoVelaAlbrecht1
 
TEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdfTEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdfDannyTola1
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALEDUCCUniversidadCatl
 
CIENCIAS NATURALES 4 TO ambientes .docx
CIENCIAS NATURALES 4 TO  ambientes .docxCIENCIAS NATURALES 4 TO  ambientes .docx
CIENCIAS NATURALES 4 TO ambientes .docxAgustinaNuez21
 
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfMapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfvictorbeltuce
 
Fundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfFundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfsamyarrocha1
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialpatriciaines1993
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 

Último (20)

PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxPLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parte
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024
 
Repaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia GeneralRepaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia General
 
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIATRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
 
TEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdfTEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdf
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
CIENCIAS NATURALES 4 TO ambientes .docx
CIENCIAS NATURALES 4 TO  ambientes .docxCIENCIAS NATURALES 4 TO  ambientes .docx
CIENCIAS NATURALES 4 TO ambientes .docx
 
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 
Sesión La luz brilla en la oscuridad.pdf
Sesión  La luz brilla en la oscuridad.pdfSesión  La luz brilla en la oscuridad.pdf
Sesión La luz brilla en la oscuridad.pdf
 
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfMapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
 
Fundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfFundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdf
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundial
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
PPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptxPPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptx
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 

UFRO Master Fisica Medica 5 2 Programando C

  • 1. 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 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
  • 2. Programa para armar programas Trabajaremos con Visual Studio 2008 2 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
  • 3. Programa para armar programas Creemos un proyecto… 3 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
  • 4. Programa para armar programas … en C++ : 4 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
  • 5. Programa para armar programas Estructura creada: 5 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
  • 6. Programa para armar programas Ejecutar: 6 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
  • 7. Ejemplo simple Comencemos con un ejemplo simple: Comentario (línea que comienza con //) // UFROTest.cpp : main project file. #include quot;stdafx.hquot; Inicio programa principal (main) using namespace System; int main(array<System::String ^> ^args) { Console::WriteLine(Lquot;Hello Worldquot;); Console::ReadLine(); return 0; } 7 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
  • 8. Otro ejemplo Otro ejemplo, con dos línea: int main(array<System::String ^> ^args) { Console::Write(“Adios quot;); Console::WriteLine(“mundo cruelquot;); 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(“Adiosquot;); Console::WriteLine(“mundo cruelquot;); Console::ReadLine(); return 0; } 8 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
  • 9. 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; números enteros char c=‘h’; caracteres float x=5.67; números reales (baja precisión) double y=2.345; números reales (alta precisión) bool decision=true; 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; int n; n=2; n=‘2’; 9 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
  • 10. 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. 10 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
  • 11. Operadores sobre char , conversión y char de string El carácter se asocia al código ASCII: char letra; letra = 'a' + 1; Entrega como resultado ‘b’ Console::WriteLine(letra); int numero; numero = 'a'; Entrega como resultado 97 Console::WriteLine(numero); Conversión de tipos (typecast) double x=2.6; Asocia a n el valor 2 int n=(int)x; (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]; Asigna la ‘t’ a primera_letra char segunda_letra=nombre[1]; Asigna la ‘e’ a segunda_letra 11 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
  • 12. 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 fabs modf acos floor pow asin fmod sin atan frexp sinh atan2 ldexp sqrt ceil log tan cos log10 tanh cosh exp 12 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
  • 13. 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. 13 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
  • 14. 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(quot;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 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
  • 15. 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 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
  • 16. Condicionamientos En el desarrollo del programa se pueden condicionar la ejecución de una serie de instrucciones: if (condicion1) { Si se da la condicion1… instrucciones1 … realiza instrucciones1 } else if(condicion2){ … si no se dio condicion1 pero si condicion2 instrucciones2 … realiza instrucciones2 } else{ … y si no se dio ni condicion1 ni condicion2 instrucciones3 … 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 es idéntico de y x!=y x es diferente a y x >y x mayor que y x >=y x mayor o igual que y x <y x menor que y x <=y x menor o igual que y 16 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
  • 17. 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 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
  • 18. Variables lógicas Alternativas bool flag; flag = true; true=verdadero flag = false; false=falso Determinar variable lógica, ejemplos: flag=(x!=0); Si x es distinto de cero, flag es verdadero, si no falso. flag=(n>0); Si n es mayor que cero, flag es verdadero, si no falso. Operadores lógicos: && And flag12=flag1 && flag2 || Ir flag12=flag1 || flag2 ! Nota flag2=!flag1 18 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
  • 19. 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 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
  • 20. 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++) { } 20 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
  • 21. 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 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
  • 22. Estructuras Estructuras Ejemplo struct nombre { struct Point { double fvariable1, fvariable2; double x, y; int nvariable1; }; … }; Elementos de la estructura: nombre.fvariable1 Asignación de valores a estructura (solo al crear!): (también se pueden hacer asignaciones de nombre ejemplo = {1.0, 2.3, 2, …} estructuras) Asignación de estructura: nombre ejemplo2 = ejemplo1; 22 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
  • 23. 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 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
  • 24. 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 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
  • 25. Punteros y Referencias Punteros int* x o int *x *px = &x; El puntero *px contiene la dirección *px de donde esta el valor x add &rx Referencia add x val int& x o int &x &rx = x; La referencia &rx retorna el valor x x = 1; lvalue = rvalue; 25 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
  • 26. Alocución de memoria dinámica y arreglos int *pint; Definir puntero pint = new int; Reservar memoria delate pint; Liberar memoria int n = 10; int *parray; parray = new int[n]; delte parray; 26 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
  • 27. Puntero y referencia en subrutinas tipo *funcion(tipo *p) { ... ... return p; } tipo &funcion(tipo &r) { ... ... return r; } 27 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
  • 28. 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 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09
  • 29. Clases Las class son estructuras en que las variables son de uso exclusivamente Internas y no pueden ser modificadas externamente (privadas) Ejemplo Complex (double r, double i) { class Complex real = r; imag = i; { cartesian = true; polar = false; private: } double real, imag; double mag, theta; void printCartesian (); bool cartesian, polar; void printPolar (); void calculateCartesian (); double getReal (); void calculatePolar (); double getImag (); double getMag (); public: double getTheta (); Complex () { cartesian = false; polar = false; } void setCartesian (double r, double i); void setPolar (double m, double t); }; 29 www.gphysics.net – UFRO-2008-Master-Fisica-Medica-5-2-Programando C++-05.09