SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
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

Contenu connexe

Similaire à 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
 

Plus 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
 

Plus 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
 

Dernier

2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptxRigoTito
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfMercedes Gonzalez
 
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJOACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJOBRIGIDATELLOLEONARDO
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxlclcarmen
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfNancyLoaa
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñotapirjackluis
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxlupitavic
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Juan Martín Martín
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICAÁngel Encinas
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfUPTAIDELTACHIRA
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docxEliaHernndez7
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
Abril 2024 - Maestra Jardinera Ediba.pdf
Abril 2024 -  Maestra Jardinera Ediba.pdfAbril 2024 -  Maestra Jardinera Ediba.pdf
Abril 2024 - Maestra Jardinera Ediba.pdfValeriaCorrea29
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesYanirisBarcelDelaHoz
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 

Dernier (20)

2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJOACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdf
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
Abril 2024 - Maestra Jardinera Ediba.pdf
Abril 2024 -  Maestra Jardinera Ediba.pdfAbril 2024 -  Maestra Jardinera Ediba.pdf
Abril 2024 - Maestra Jardinera Ediba.pdf
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonables
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 

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