SlideShare una empresa de Scribd logo
1 de 4
Descargar para leer sin conexión
Universidad Nacional del Altiplano                                  Escuela Profesional de Ingeniería de Sistemas



                                     Práctica de Metodología de la Programación

 Apellidos y nombres:…………………………………………………………………… Cód.Matric:………..

 Fecha: ……………………….
    I.- Marcar los que son verdaderos con V, y los que son falsos con F.
    1.- Seleccionar la forma correcta de definición de cabecera de un template de función:
    a) template (int) (*foo) (char *m[]).
    b) template class foo(char *m[]).
    c) template<typename T> int foo(char *m[]).
    d) template<typename T, T2> T foo(T2 *m[]).
    e) template<class X> void *foo(X *m[]).
    2.-
    a) los templates de función no pueden ser sobrecargados.
    b) Cuando un template de función es sobrecargado, el compilador primero intenta emparejar con la versión
         no-template de la función.
    3.-
    a) Una plantilla (template) de clase no necesita la palabra clave template.
    b) los templates de clases representan las clases genéricas.
    c) los templates de clases son tipos parametrizados.
    4.-
    a) Los templates de clases pueden tener parámetros sin tipo.
    b) Los templates de clases que tienen parámetros sin tipo con diferentes valores son considerados como
         tipos de datos diferentes.

      II.- Ejemplo de template de función (a)
      #include <iostream>
      using namespace std;
      template<class Type>
      Type Min(Type arg1, Type arg2)
      {
          Type min;
          if (arg1 < arg2)
               min = arg1;
          else
               min = arg2;
          return min;
      }

      int main()
      {
          cout << Min(15, 25) << endl;
          cout << Min(254.78, 12.983) << endl;
          cout << Min('A', 'Z') << endl;
          return 0;
      }
      En el ejercicio anterior sobrecargar la función Min para comparar cadenas, por
      ejemplo cout<<Min(“MANZANA” , “NARANJA”);
      Ejemplo de template de función (b)
      #include <iostream>
        using std::cout;
        using std::endl;

         // funcion template printArray
         //template< typename T >
         template< class T >
         void printArray( const T *array, int count )
         {
            for ( int i = 0; i < count; i++ )
               cout << array[ i ] << " ";

                                                                                               Ingº William E. Arcaya C.
                                                                                                  Docente Asociado TC
Universidad Nacional del Altiplano                         Escuela Profesional de Ingeniería de Sistemas


              cout << endl;
         }

         int main()
         {
            const int ACOUNT = 5;
            const int BCOUNT = 7;
            const int CCOUNT = 6;

              int a[ ACOUNT ] = { 1, 2, 3, 4, 5 };
              double b[ BCOUNT ] = { 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7 };
              char c[ CCOUNT ] = "HELLO"; // 6ta posicion para null

              cout << "Array a Contiene:" << endl;

              //invoca función template para enteros
              printArray( a, ACOUNT );

              cout << "Array b Contiene:" << endl;

              // invoca función template para doubles
              printArray( b, BCOUNT );

              cout << "Array c Contiene:" << endl;

              // invoca función template para caracteres
              printArray( c, CCOUNT );
              return 0;
         }

      III.- Ejemplo de template de clase

      #include <iostream>
      using std::cout;
      using std::endl;
      template<class Type>
      class CCompare
      {
      protected:
          Type arg1;
          Type arg2;
      public:
          CCompare(Type arg1, Type arg2)
          {
              CCompare::arg1 = arg1;
              CCompare::arg2 = arg2;
          }
          ~CCompare() {}
          Type GetMin()
          {
              Type min;
              if (arg1 < arg2)
                   min = arg1;
              else
                   min = arg2;
              return min;
          }
          Type GetMax()
          {
              Type max;
              if (arg1 > arg2)
                   max = arg1;
              else
                   max = arg2;
                                                                                      Ingº William E. Arcaya C.
                                                                                         Docente Asociado TC
Universidad Nacional del Altiplano                       Escuela Profesional de Ingeniería de Sistemas


                return max;
            }
            int Igual()
            {
                int Igual;
                if (arg1 == arg2)
                     Igual = 1;
                else
                     Igual = 0;
                return Igual;
            }
      };
      int main()
      {
          CCompare<int> compare1(15, 25);
          CCompare<double> compare2(254.78, 12.983);
          CCompare<char> compare3('A', 'Z');
          cout << "EL OBJETO COMPARE1" << endl;
          cout << "Menor: " << compare1.GetMin() << endl;
          cout << "Mayor: " << compare1.GetMax() << endl;
          cout << "Igual: " << compare1.Igual() << endl;
          cout << endl;
          cout << "EL OBJETO COMPARE2" << endl;
          cout << "Menor: " << compare2.GetMin() << endl;
          cout << "Mayor: " << compare2.GetMax() << endl;
          cout << "Igual: " << compare2.Igual() << endl;
          cout << endl;
          cout << "EL OBJETO COMPARE3" << endl;
          cout << "Menor: " << compare3.GetMin() << endl;
          cout << "Mayor: " << compare3.GetMax() << endl;
          cout << "Igual: " << compare3.Igual() << endl;
          cout << endl;
          return 0;

      }


      Ejemplo de template de clase(b)
      //pila.h (esto va en Header Files)           template< typename T      >
      template< typename T >                       Pila< T >::Pila( int      s )
       class Pila                                     : size( s > 0 ? s      : 10 ),
       {                                                top( -1 ),
       public:                                          PilaPtr( new T[      size ] )
          Pila( int = 10 );                        {

           ~Pila()                                 }
           {
              delete [] PilaPtr;                   template< typename T >
           }                                       bool Pila< T >::push( const T &pushValue )
           bool push( const T& );                  {
          bool pop( T& );                             if ( !isFull() )
          bool isEmpty() const                        {
            {                                            PilaPtr[ ++top ] = pushValue;
              return top == -1;                          return true;
            }                                         }

                                                      return false;
           bool isFull() const                     }
            {                                      template< typename T >
               return top == size - 1;             bool Pila< T >::pop( T &popValue )
            }                                      {
                                                      if ( !isEmpty() )
          private:                                    {
             int size;                                   popValue = PilaPtr[ top-- ];
            int top;                                     return true;
             T *PilaPtr;                              }
          };
                                                       return false;
                                                   }


                                                                                    Ingº William E. Arcaya C.
                                                                                       Docente Asociado TC
Universidad Nacional del Altiplano                               Escuela Profesional de Ingeniería de Sistemas


      //main.cpp (esto va en Source Files)
       #include <iostream>
       using std::cout;
       using std::endl;
       #include "Pila.h"
       int main()
       {
          Pila< double > doublePila( 5 );
          double doubleValue = 1.1;

            cout << "Empilar elementos de tipo doublen";

            while ( doublePila.push( doubleValue ) )
            {
               cout << doubleValue << ' ';
               doubleValue += 1.1;
            }

            cout << "nPila llena. no puede empilar " << doubleValue
               << "nnDesapilar elmentos de pila con doublesn";
             while ( doublePila.pop( doubleValue ) )
               cout << doubleValue << ' ';
            cout << "nPila vacia. no puede desapilarn";

            Pila< int > intPila;
            int intValue = 1;
            cout << "nEmpilar elementos en Pila de enterosn";

            while ( intPila.push( intValue ) )
            {
               cout << intValue << ' ';
               intValue++;
            }
            cout << "nPila llena. no puede empilar " << intValue
               << "nndesapilar elementos de pila de enterosn";


             while ( intPila.pop( intValue ) )
               cout << intValue << ' ';
            cout << "nPila vacia. no puede desapilar" << endl;
            return 0;
       }

      V.- Implementar una función template para ordenar un array de enteros, float o doubles.




                                                                                            Ingº William E. Arcaya C.
                                                                                               Docente Asociado TC

Más contenido relacionado

La actualidad más candente

Programación en c++
Programación en c++Programación en c++
Programación en c++andermijan
 
Sobrecarga de operadores
Sobrecarga de operadoresSobrecarga de operadores
Sobrecarga de operadoresr0na91
 
Charla congreso web introducción programación funcional en JavaScript
Charla congreso web introducción programación funcional en JavaScriptCharla congreso web introducción programación funcional en JavaScript
Charla congreso web introducción programación funcional en JavaScriptRicardo Pallás Román
 
Computacion funciones definidas por el programador
Computacion funciones definidas por el programadorComputacion funciones definidas por el programador
Computacion funciones definidas por el programadorManuel
 
Ejemplos Para Dev C++
Ejemplos Para Dev C++Ejemplos Para Dev C++
Ejemplos Para Dev C++cemayoral
 
Series Infinitas Convergentes y Divergentes en Geogebra CAS
Series Infinitas Convergentes y Divergentes en Geogebra CASSeries Infinitas Convergentes y Divergentes en Geogebra CAS
Series Infinitas Convergentes y Divergentes en Geogebra CASJose Perez
 
08 strings o cadenas
08 strings o cadenas08 strings o cadenas
08 strings o cadenashorusblom
 
ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++die_dex
 
Tema 0 Repaso Programación en Java
Tema 0 Repaso Programación en JavaTema 0 Repaso Programación en Java
Tema 0 Repaso Programación en JavaCarlos A. Iglesias
 
Fundamentos de programación librería string C++
Fundamentos de programación librería string C++Fundamentos de programación librería string C++
Fundamentos de programación librería string C++Milton Nicolay
 
Clase 11- fundamentos de la programacion
Clase 11- fundamentos de la programacionClase 11- fundamentos de la programacion
Clase 11- fundamentos de la programaciondiego MC
 

La actualidad más candente (19)

Programación en c++
Programación en c++Programación en c++
Programación en c++
 
Sobrecarga de operadores
Sobrecarga de operadoresSobrecarga de operadores
Sobrecarga de operadores
 
Charla congreso web introducción programación funcional en JavaScript
Charla congreso web introducción programación funcional en JavaScriptCharla congreso web introducción programación funcional en JavaScript
Charla congreso web introducción programación funcional en JavaScript
 
Computacion funciones definidas por el programador
Computacion funciones definidas por el programadorComputacion funciones definidas por el programador
Computacion funciones definidas por el programador
 
Lecture 37
Lecture 37Lecture 37
Lecture 37
 
Separata java script
Separata java scriptSeparata java script
Separata java script
 
Ejemplos Para Dev C++
Ejemplos Para Dev C++Ejemplos Para Dev C++
Ejemplos Para Dev C++
 
Series Infinitas Convergentes y Divergentes en Geogebra CAS
Series Infinitas Convergentes y Divergentes en Geogebra CASSeries Infinitas Convergentes y Divergentes en Geogebra CAS
Series Infinitas Convergentes y Divergentes en Geogebra CAS
 
08 strings o cadenas
08 strings o cadenas08 strings o cadenas
08 strings o cadenas
 
Recursividad
RecursividadRecursividad
Recursividad
 
C Funciones
C FuncionesC Funciones
C Funciones
 
Inicialización del modo gráfico de C
Inicialización del modo gráfico de CInicialización del modo gráfico de C
Inicialización del modo gráfico de C
 
ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++
 
Python para principiantes
Python para principiantesPython para principiantes
Python para principiantes
 
Tema 0 Repaso Programación en Java
Tema 0 Repaso Programación en JavaTema 0 Repaso Programación en Java
Tema 0 Repaso Programación en Java
 
Fundamentos de programación librería string C++
Fundamentos de programación librería string C++Fundamentos de programación librería string C++
Fundamentos de programación librería string C++
 
Clase 11- fundamentos de la programacion
Clase 11- fundamentos de la programacionClase 11- fundamentos de la programacion
Clase 11- fundamentos de la programacion
 
Funciones inicio
Funciones inicioFunciones inicio
Funciones inicio
 
Curso c++
Curso c++Curso c++
Curso c++
 

Destacado (20)

Contab
ContabContab
Contab
 
Índice Sintético de Producción de Mendoza - Fundacion ideal
Índice Sintético de Producción de Mendoza - Fundacion idealÍndice Sintético de Producción de Mendoza - Fundacion ideal
Índice Sintético de Producción de Mendoza - Fundacion ideal
 
Trabajo Sistemas Operativos
Trabajo Sistemas OperativosTrabajo Sistemas Operativos
Trabajo Sistemas Operativos
 
Editando El Perfil De Usuario
Editando El Perfil De UsuarioEditando El Perfil De Usuario
Editando El Perfil De Usuario
 
Wages And Commission
Wages And CommissionWages And Commission
Wages And Commission
 
Guia visual de instalación y uso de Skype
Guia visual de instalación y uso de SkypeGuia visual de instalación y uso de Skype
Guia visual de instalación y uso de Skype
 
Funcións
FunciónsFuncións
Funcións
 
4t eso objetius mínims 2013
4t eso objetius mínims 20134t eso objetius mínims 2013
4t eso objetius mínims 2013
 
prueba
pruebaprueba
prueba
 
Manual skype
Manual skypeManual skype
Manual skype
 
Hot Patatoes
Hot PatatoesHot Patatoes
Hot Patatoes
 
Storie di didattica
Storie di didatticaStorie di didattica
Storie di didattica
 
12B Guía de Fundamentos de Informática
12B Guía de Fundamentos de Informática 12B Guía de Fundamentos de Informática
12B Guía de Fundamentos de Informática
 
Tabajo
TabajoTabajo
Tabajo
 
Matrices i y ii[1]
Matrices i y ii[1]Matrices i y ii[1]
Matrices i y ii[1]
 
Acciones formativas a través de los Permisos Individuales de Formación (P.I.F.)
Acciones formativas a través de los Permisos Individuales de Formación (P.I.F.)Acciones formativas a través de los Permisos Individuales de Formación (P.I.F.)
Acciones formativas a través de los Permisos Individuales de Formación (P.I.F.)
 
CaRILLO - Catherine Bruen/NDLR
CaRILLO - Catherine Bruen/NDLRCaRILLO - Catherine Bruen/NDLR
CaRILLO - Catherine Bruen/NDLR
 
Less13 3 e_loadmodule_3
Less13 3 e_loadmodule_3Less13 3 e_loadmodule_3
Less13 3 e_loadmodule_3
 
ESRI Doet Een Boekje Open
ESRI Doet Een Boekje OpenESRI Doet Een Boekje Open
ESRI Doet Een Boekje Open
 
Aprenda c++
Aprenda c++Aprenda c++
Aprenda c++
 

Similar a Pract met de la program templa

Similar a Pract met de la program templa (20)

Tema3 p2%20
Tema3 p2%20Tema3 p2%20
Tema3 p2%20
 
Arreglos en C++
Arreglos en C++Arreglos en C++
Arreglos en C++
 
Arrays unidimensionales
Arrays unidimensionalesArrays unidimensionales
Arrays unidimensionales
 
Informe tecnico
Informe tecnicoInforme tecnico
Informe tecnico
 
Codigos de programas
Codigos de programasCodigos de programas
Codigos de programas
 
Codigos de programas
Codigos de programasCodigos de programas
Codigos de programas
 
Codigos de programas
Codigos de programasCodigos de programas
Codigos de programas
 
Funcionesenlenguaje c
Funcionesenlenguaje cFuncionesenlenguaje c
Funcionesenlenguaje c
 
Jorge informe tecnico
Jorge informe tecnicoJorge informe tecnico
Jorge informe tecnico
 
!Prograc8
!Prograc8!Prograc8
!Prograc8
 
Funcionesen codeblocks ejerciciosresueltos
Funcionesen codeblocks ejerciciosresueltosFuncionesen codeblocks ejerciciosresueltos
Funcionesen codeblocks ejerciciosresueltos
 
Algorimos básicos para cifrar y descifrar en C# (encriptar y desencriptar)
Algorimos básicos para cifrar y descifrar en C# (encriptar y desencriptar)Algorimos básicos para cifrar y descifrar en C# (encriptar y desencriptar)
Algorimos básicos para cifrar y descifrar en C# (encriptar y desencriptar)
 
Java básico
Java  básicoJava  básico
Java básico
 
Ejercicios propuestos
Ejercicios propuestosEjercicios propuestos
Ejercicios propuestos
 
Ejercicios propuestosc++
Ejercicios propuestosc++Ejercicios propuestosc++
Ejercicios propuestosc++
 
Clase 9- programacion
Clase 9- programacionClase 9- programacion
Clase 9- programacion
 
ARRAYS (LISTAS Y TABLAS) EN C++
ARRAYS (LISTAS Y TABLAS) EN C++ARRAYS (LISTAS Y TABLAS) EN C++
ARRAYS (LISTAS Y TABLAS) EN C++
 
Practca#1 2210
Practca#1 2210 Practca#1 2210
Practca#1 2210
 
Ejercicios de programación.
Ejercicios de programación.Ejercicios de programación.
Ejercicios de programación.
 
Arrays csharp visto_desde_c
Arrays csharp visto_desde_cArrays csharp visto_desde_c
Arrays csharp visto_desde_c
 

Más de Ivan Ramirez Iglesias (10)

Belga 1
Belga 1Belga 1
Belga 1
 
42061 física i- trabajos prácticos 1998
42061  física i- trabajos prácticos 199842061  física i- trabajos prácticos 1998
42061 física i- trabajos prácticos 1998
 
Manualcpp
ManualcppManualcpp
Manualcpp
 
Intro c
Intro cIntro c
Intro c
 
Ececececuacion de primer grado y
Ececececuacion de primer grado yEcecececuacion de primer grado y
Ececececuacion de primer grado y
 
Area de un triangulo
Area de un trianguloArea de un triangulo
Area de un triangulo
 
Diagramas de flujo
Diagramas de flujoDiagramas de flujo
Diagramas de flujo
 
Desarrollando con visual studio
Desarrollando con visual studioDesarrollando con visual studio
Desarrollando con visual studio
 
Jbpm user-guide-spanish
Jbpm user-guide-spanishJbpm user-guide-spanish
Jbpm user-guide-spanish
 
108091 prog formativo_ii
108091 prog formativo_ii108091 prog formativo_ii
108091 prog formativo_ii
 

Pract met de la program templa

  • 1. Universidad Nacional del Altiplano Escuela Profesional de Ingeniería de Sistemas Práctica de Metodología de la Programación Apellidos y nombres:…………………………………………………………………… Cód.Matric:……….. Fecha: ………………………. I.- Marcar los que son verdaderos con V, y los que son falsos con F. 1.- Seleccionar la forma correcta de definición de cabecera de un template de función: a) template (int) (*foo) (char *m[]). b) template class foo(char *m[]). c) template<typename T> int foo(char *m[]). d) template<typename T, T2> T foo(T2 *m[]). e) template<class X> void *foo(X *m[]). 2.- a) los templates de función no pueden ser sobrecargados. b) Cuando un template de función es sobrecargado, el compilador primero intenta emparejar con la versión no-template de la función. 3.- a) Una plantilla (template) de clase no necesita la palabra clave template. b) los templates de clases representan las clases genéricas. c) los templates de clases son tipos parametrizados. 4.- a) Los templates de clases pueden tener parámetros sin tipo. b) Los templates de clases que tienen parámetros sin tipo con diferentes valores son considerados como tipos de datos diferentes. II.- Ejemplo de template de función (a) #include <iostream> using namespace std; template<class Type> Type Min(Type arg1, Type arg2) { Type min; if (arg1 < arg2) min = arg1; else min = arg2; return min; } int main() { cout << Min(15, 25) << endl; cout << Min(254.78, 12.983) << endl; cout << Min('A', 'Z') << endl; return 0; } En el ejercicio anterior sobrecargar la función Min para comparar cadenas, por ejemplo cout<<Min(“MANZANA” , “NARANJA”); Ejemplo de template de función (b) #include <iostream> using std::cout; using std::endl; // funcion template printArray //template< typename T > template< class T > void printArray( const T *array, int count ) { for ( int i = 0; i < count; i++ ) cout << array[ i ] << " "; Ingº William E. Arcaya C. Docente Asociado TC
  • 2. Universidad Nacional del Altiplano Escuela Profesional de Ingeniería de Sistemas cout << endl; } int main() { const int ACOUNT = 5; const int BCOUNT = 7; const int CCOUNT = 6; int a[ ACOUNT ] = { 1, 2, 3, 4, 5 }; double b[ BCOUNT ] = { 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7 }; char c[ CCOUNT ] = "HELLO"; // 6ta posicion para null cout << "Array a Contiene:" << endl; //invoca función template para enteros printArray( a, ACOUNT ); cout << "Array b Contiene:" << endl; // invoca función template para doubles printArray( b, BCOUNT ); cout << "Array c Contiene:" << endl; // invoca función template para caracteres printArray( c, CCOUNT ); return 0; } III.- Ejemplo de template de clase #include <iostream> using std::cout; using std::endl; template<class Type> class CCompare { protected: Type arg1; Type arg2; public: CCompare(Type arg1, Type arg2) { CCompare::arg1 = arg1; CCompare::arg2 = arg2; } ~CCompare() {} Type GetMin() { Type min; if (arg1 < arg2) min = arg1; else min = arg2; return min; } Type GetMax() { Type max; if (arg1 > arg2) max = arg1; else max = arg2; Ingº William E. Arcaya C. Docente Asociado TC
  • 3. Universidad Nacional del Altiplano Escuela Profesional de Ingeniería de Sistemas return max; } int Igual() { int Igual; if (arg1 == arg2) Igual = 1; else Igual = 0; return Igual; } }; int main() { CCompare<int> compare1(15, 25); CCompare<double> compare2(254.78, 12.983); CCompare<char> compare3('A', 'Z'); cout << "EL OBJETO COMPARE1" << endl; cout << "Menor: " << compare1.GetMin() << endl; cout << "Mayor: " << compare1.GetMax() << endl; cout << "Igual: " << compare1.Igual() << endl; cout << endl; cout << "EL OBJETO COMPARE2" << endl; cout << "Menor: " << compare2.GetMin() << endl; cout << "Mayor: " << compare2.GetMax() << endl; cout << "Igual: " << compare2.Igual() << endl; cout << endl; cout << "EL OBJETO COMPARE3" << endl; cout << "Menor: " << compare3.GetMin() << endl; cout << "Mayor: " << compare3.GetMax() << endl; cout << "Igual: " << compare3.Igual() << endl; cout << endl; return 0; } Ejemplo de template de clase(b) //pila.h (esto va en Header Files) template< typename T > template< typename T > Pila< T >::Pila( int s ) class Pila : size( s > 0 ? s : 10 ), { top( -1 ), public: PilaPtr( new T[ size ] ) Pila( int = 10 ); { ~Pila() } { delete [] PilaPtr; template< typename T > } bool Pila< T >::push( const T &pushValue ) bool push( const T& ); { bool pop( T& ); if ( !isFull() ) bool isEmpty() const { { PilaPtr[ ++top ] = pushValue; return top == -1; return true; } } return false; bool isFull() const } { template< typename T > return top == size - 1; bool Pila< T >::pop( T &popValue ) } { if ( !isEmpty() ) private: { int size; popValue = PilaPtr[ top-- ]; int top; return true; T *PilaPtr; } }; return false; } Ingº William E. Arcaya C. Docente Asociado TC
  • 4. Universidad Nacional del Altiplano Escuela Profesional de Ingeniería de Sistemas //main.cpp (esto va en Source Files) #include <iostream> using std::cout; using std::endl; #include "Pila.h" int main() { Pila< double > doublePila( 5 ); double doubleValue = 1.1; cout << "Empilar elementos de tipo doublen"; while ( doublePila.push( doubleValue ) ) { cout << doubleValue << ' '; doubleValue += 1.1; } cout << "nPila llena. no puede empilar " << doubleValue << "nnDesapilar elmentos de pila con doublesn"; while ( doublePila.pop( doubleValue ) ) cout << doubleValue << ' '; cout << "nPila vacia. no puede desapilarn"; Pila< int > intPila; int intValue = 1; cout << "nEmpilar elementos en Pila de enterosn"; while ( intPila.push( intValue ) ) { cout << intValue << ' '; intValue++; } cout << "nPila llena. no puede empilar " << intValue << "nndesapilar elementos de pila de enterosn"; while ( intPila.pop( intValue ) ) cout << intValue << ' '; cout << "nPila vacia. no puede desapilar" << endl; return 0; } V.- Implementar una función template para ordenar un array de enteros, float o doubles. Ingº William E. Arcaya C. Docente Asociado TC