intellectual output 5 robot4all ejercicios y …
TRANSCRIPT
#
Socio Principal: P6 - CCS
ROBOT4ALLEJERCICIOS Y SOLUCIONES -
PROGRAMACIÓN
INTELLECTUAL OUTPUT 5
1
CDIMM MARAMURES FOUNDATION
EMPHASYS CENTRE
Greece
LEIBNIZ UNIVERSITÄT HANNOVER
2 EK PEIRAIA
Cyprus
United Kingdom
Germany Coordinator ( )
CIVIC COMPUTING
CYPRUS COMPUTER SOCIETYCyprus
WOMEN IN DIGITAL INITIATIVES LUXEMBOURG ASBLLuxemburg
SpainI.E.S. MARÍA MOLINER
Romania
PROJECT LEADERSHIP:
Leibniz Universität Hannover
Prof. Dr. Dirk Lange
PROJECT MANAGEMENT:
Richard Heise
LAYOUT:
Mareike Heldt
Institut für Didaktik der Demokratie
www.robovet.eu
PROJECTS WEBSITE:
This project has been funded with support from the European Commission. This communication reflects the
views only of the author, and the Commission cannot be held responsible for any use which may be made of the
information contained therein. Project Number: 2017-1-DE02-KA202-004274
All rights reserved. The content of the publication may be used for educational and other non-commercial
purposes on the condition of using the following name as source in every reproduction: „Erasmus+ Project
Robot4All“.
1
CDIMM MARAMURES FOUNDATION
EMPHASYS CENTRE
Greece
LEIBNIZ UNIVERSITÄT HANNOVER
2 EK PEIRAIA
Cyprus
United Kingdom
Germany Coordinator ( )
CIVIC COMPUTING
CYPRUS COMPUTER SOCIETYCyprus
WOMEN IN DIGITAL INITIATIVES LUXEMBOURG ASBLLuxemburg
SpainI.E.S. MARÍA MOLINER
Romania
PROJECT LEADERSHIP:
Leibniz Universität Hannover
Prof. Dr. Dirk Lange
PROJECT MANAGEMENT:
Richard Heise
LAYOUT:
Mareike Heldt
Institut für Didaktik der Demokratie
www.robovet.eu
PROJECTS WEBSITE:
This project has been funded with support from the European Commission. This communication reflects the
views only of the author, and the Commission cannot be held responsible for any use which may be made of the
information contained therein. Project Number: 2017-1-DE02-KA202-004274
All rights reserved. The content of the publication may be used for educational and other non-commercial
purposes on the condition of using the following name as source in every reproduction: „Erasmus+ Project
Robot4All“.
2 3
03
05
13
03Lección 1 ...................................................................................................................................................................
Introducción ..............................................................................................................................................................
Lección 3 ...................................................................................................................................................................
Lección 2 ...................................................................................................................................................................
El presente manual de material de preparación complementa el libro con material de enseñanza de
programación puesto que hace referencia a los contenidos y asuntos teóricos de los capítulos específicos
contenidos en él. Incluye ejercicios sobre cómo los alumnos deberían abordar los conceptos básicos y
característicos de la programación así como las técnicas y métodos utilizados para enseñar los contenidos
específicos.
Este folleto está destinado a ser una ayuda complementaria tanto para estudiantes como para maestros que
enseñan la teoría, para mejorar el logro de los objetivos de enseñanza en la parte teórica de cada lección.
Objetivos del manual
Las actividades contenidas en el manual de preparación siguen el marco del proyecto.
Introducción a la programación – Actividades de preparación (Práctica):
Ÿ Visita y participa en los juegos de los siguientes sitios:
https://www.allcancode.com/hourofcode
https://codecombat.com/
Introducción a C++ - Actividades de preparación (Práctica):
Ÿ Compáralo con C++.
Ÿ Escribe los pros y contras de cualquier otro lenguaje de programación que conozcas.
Ÿ Escribe y discute tus impresiones.
INTRODUCCIÓN
LECCIÓN 1
ÍNDICE
2 3
03
05
13
03Lección 1 ...................................................................................................................................................................
Introducción ..............................................................................................................................................................
Lección 3 ...................................................................................................................................................................
Lección 2 ...................................................................................................................................................................
El presente manual de material de preparación complementa el libro con material de enseñanza de
programación puesto que hace referencia a los contenidos y asuntos teóricos de los capítulos específicos
contenidos en él. Incluye ejercicios sobre cómo los alumnos deberían abordar los conceptos básicos y
característicos de la programación así como las técnicas y métodos utilizados para enseñar los contenidos
específicos.
Este folleto está destinado a ser una ayuda complementaria tanto para estudiantes como para maestros que
enseñan la teoría, para mejorar el logro de los objetivos de enseñanza en la parte teórica de cada lección.
Objetivos del manual
Las actividades contenidas en el manual de preparación siguen el marco del proyecto.
Introducción a la programación – Actividades de preparación (Práctica):
Ÿ Visita y participa en los juegos de los siguientes sitios:
https://www.allcancode.com/hourofcode
https://codecombat.com/
Introducción a C++ - Actividades de preparación (Práctica):
Ÿ Compáralo con C++.
Ÿ Escribe los pros y contras de cualquier otro lenguaje de programación que conozcas.
Ÿ Escribe y discute tus impresiones.
INTRODUCCIÓN
LECCIÓN 1
ÍNDICE
4 5
Ÿ Escribe un pseudocódigo que permita resolver ecuaciones de primer y segundo grado (ax+b=0 and
ax2+bx+c=0).
Ÿ Escribe un pseudocódigo que permita resolver la ley báscia de la Física e=mc2. ¿Puedes tu crear
pseudocódigos de otras leyes Físicas?
Introducción al Pseudocódigo y Estructuras Básicas de Programación - Actividades de preparación
(Práctica):
Ÿ Tres candidatos participan en unas elecciones. A partir del número de votos, puedes escribir un
pseudocódigo que devuelva los porcentajes de cada uno y quién ganó las elecciones?
Ÿ Discute tus impresiones.
Diagramas de flujo - Actividades de preparación (Práctica):
Ÿ Descarga y configura tu instalación de Eclipse.
Ÿ Crea un diagrama de flujo para resolver el siguiente problema: A una escuela le gustaría comprobar si sus
alumnos han aprobado sus cursos. La nota de corte es 10 sobre 20. El Sistema se lo debería notificar al
usuario de forma adecuada de acuerdo con las notas de cada alumno. A la escuela también le gustaría saber
la nota media de cada alumno.
Ÿ ¿Puedes convertir los pseudocódigos creados en el capítulo anterior en diagramas de flujo?
Familiarizándonos con el Editor de Eclipse – Áreas de Edición y Secciones - Actividades de preparación
(Práctica):
Ÿ Siguiendo los pasos descritos en el material de preparación, crea tu primer proyecto.
Comenzando nuestro primer Proyecto utilizando Eclipse - Actividades de preparación (Práctica):
Ÿ Discute con tus compañeros los problemas experimentados.
Ÿ ¿Estás familiarizado con un entorno de programación? ¿Encuentras alguna diferencia?
This my first program”
Solución:
Fundamentos de C++ - Actividades de preparación (Práctica):
1. Escribe un programa que imprima en la pantalla:
“Hello, world!
2. Escribe un programa que reciba dos datos desde el teclado. Uno de ellos debería ser un nombre para ser
almacenado en una variable de tipo string y el otro debería ser un número entero representando una nota
(de 0 a 10). El programa debería imprimir un mensaje divertido dependiendo de la nota:
Ÿ Si la nota es >=7 y <10 entonces imprime el nombre y “you're really super”.
Ÿ Si la nota es >= 5 pero < 7 entonces imprime el nombre y “it is okey”.
Ÿ Si la nota es < 5 entonces imprime “Cheer up” con el nombre del alumno y “!Life is great”.
LECCIÓN 2
4 5
Ÿ Escribe un pseudocódigo que permita resolver ecuaciones de primer y segundo grado (ax+b=0 and
ax2+bx+c=0).
Ÿ Escribe un pseudocódigo que permita resolver la ley báscia de la Física e=mc2. ¿Puedes tu crear
pseudocódigos de otras leyes Físicas?
Introducción al Pseudocódigo y Estructuras Básicas de Programación - Actividades de preparación
(Práctica):
Ÿ Tres candidatos participan en unas elecciones. A partir del número de votos, puedes escribir un
pseudocódigo que devuelva los porcentajes de cada uno y quién ganó las elecciones?
Ÿ Discute tus impresiones.
Diagramas de flujo - Actividades de preparación (Práctica):
Ÿ Descarga y configura tu instalación de Eclipse.
Ÿ Crea un diagrama de flujo para resolver el siguiente problema: A una escuela le gustaría comprobar si sus
alumnos han aprobado sus cursos. La nota de corte es 10 sobre 20. El Sistema se lo debería notificar al
usuario de forma adecuada de acuerdo con las notas de cada alumno. A la escuela también le gustaría saber
la nota media de cada alumno.
Ÿ ¿Puedes convertir los pseudocódigos creados en el capítulo anterior en diagramas de flujo?
Familiarizándonos con el Editor de Eclipse – Áreas de Edición y Secciones - Actividades de preparación
(Práctica):
Ÿ Siguiendo los pasos descritos en el material de preparación, crea tu primer proyecto.
Comenzando nuestro primer Proyecto utilizando Eclipse - Actividades de preparación (Práctica):
Ÿ Discute con tus compañeros los problemas experimentados.
Ÿ ¿Estás familiarizado con un entorno de programación? ¿Encuentras alguna diferencia?
This my first program”
Solución:
Fundamentos de C++ - Actividades de preparación (Práctica):
1. Escribe un programa que imprima en la pantalla:
“Hello, world!
2. Escribe un programa que reciba dos datos desde el teclado. Uno de ellos debería ser un nombre para ser
almacenado en una variable de tipo string y el otro debería ser un número entero representando una nota
(de 0 a 10). El programa debería imprimir un mensaje divertido dependiendo de la nota:
Ÿ Si la nota es >=7 y <10 entonces imprime el nombre y “you're really super”.
Ÿ Si la nota es >= 5 pero < 7 entonces imprime el nombre y “it is okey”.
Ÿ Si la nota es < 5 entonces imprime “Cheer up” con el nombre del alumno y “!Life is great”.
LECCIÓN 2
6 7
Solución:
Solución:
3. Escribe un programa que realice la cuenta atrás desde un número que introduzcas hasta 0
descendiendo de dos en dos, usando un bucle while-loop:
Solución:
4. Escribe un programa que realice la cuenta atrás desde un número que introduzcas hasta 0 descendiendo
de dos en dos, usando un bucle for-loop:
5. Escribe un programa que acepte entradas de números enteros hasta que el usuario introduzca un 0.
Solución:
6 7
Solución:
Solución:
3. Escribe un programa que realice la cuenta atrás desde un número que introduzcas hasta 0
descendiendo de dos en dos, usando un bucle while-loop:
Solución:
4. Escribe un programa que realice la cuenta atrás desde un número que introduzcas hasta 0 descendiendo
de dos en dos, usando un bucle for-loop:
5. Escribe un programa que acepte entradas de números enteros hasta que el usuario introduzca un 0.
Solución:
8 9
Solución:
7. Escribe un programa que realice la cuenta atrás desde un número que introduzcas hasta 0
descendiendo de dos en dos, usando un goto-loop:
6. Escribe un programa que escriba la suma de los números pares entre 1 y 10. Nota: el programa debe usar
'the continue statement' y la instrucción de bucle 'for (i=2; i<=100; i++){}'.
Solución:
8. Escribe un programa que acepte un número decimal en cada repetición de un bucle infinito hasta que el
usuario introduzca 3.14. En cada repetición el programa imprime el número introducido y su cuadrado.
Nota: Si el número es más grande que 99.99 el programa acaba con la instrucción exit.
Solución:
9. Escribe un programa que reciba como entrada un número entero e imprima ese valor elevado al cubo
solamente si ese valor es 1,2 o 3. En cualquier otro caso, el programa imprime “The number is not 1, 2
nor 3”.
Solución:
8 9
Solución:
7. Escribe un programa que realice la cuenta atrás desde un número que introduzcas hasta 0
descendiendo de dos en dos, usando un goto-loop:
6. Escribe un programa que escriba la suma de los números pares entre 1 y 10. Nota: el programa debe usar
'the continue statement' y la instrucción de bucle 'for (i=2; i<=100; i++){}'.
Solución:
8. Escribe un programa que acepte un número decimal en cada repetición de un bucle infinito hasta que el
usuario introduzca 3.14. En cada repetición el programa imprime el número introducido y su cuadrado.
Nota: Si el número es más grande que 99.99 el programa acaba con la instrucción exit.
Solución:
9. Escribe un programa que reciba como entrada un número entero e imprima ese valor elevado al cubo
solamente si ese valor es 1,2 o 3. En cualquier otro caso, el programa imprime “The number is not 1, 2
nor 3”.
Solución:
10 11
Ÿ Escribe una función llamada “wellcome” que acepte un nombre como parámetro de entrada e
imprima “Wellcome “ y el nombre a continuación. Dentro de int main() {}, la función debe ser llamada
con un argumento pasado por valor.
Solución:
10. Funciones:
Ÿ Escribe una función llamada “cube” que acepte un número entero como parámetro de entrada y
devuelva el cubo de ese valor. Dentro de int main() {}, la función debe ser llamada con un argumento
pasado por valor.
11. Argumentos pasados por referencia: Escribe una función llamada “swap” con dos parámetros de
Entrada/Salida que intercambiarán sus respectivos valores. Dentro de int main() {}, la función debe ser
llamada con dos argumentos pasados por referencia.
Solución:
13. Trabajando con el concepto de “overloaded function”: Escribe un programa que defina dos funciones con
el mismo nombre para calcular el área de un cuadrado y el de un triángulo respectivamente.
Solución:
Solución:
12. Valores predeterminados de parámetros: Escribe una función llamada “divideBy2” con dos parámetros
de entrada (a,b), números enteros pasados por valor. La función devuelve la división de a/b. En el caso de
no introducir el segundo argumento la función debería asumir “2”como segundo parámetro devolviendo
el resultado a/2.
10 11
Ÿ Escribe una función llamada “wellcome” que acepte un nombre como parámetro de entrada e
imprima “Wellcome “ y el nombre a continuación. Dentro de int main() {}, la función debe ser llamada
con un argumento pasado por valor.
Solución:
10. Funciones:
Ÿ Escribe una función llamada “cube” que acepte un número entero como parámetro de entrada y
devuelva el cubo de ese valor. Dentro de int main() {}, la función debe ser llamada con un argumento
pasado por valor.
11. Argumentos pasados por referencia: Escribe una función llamada “swap” con dos parámetros de
Entrada/Salida que intercambiarán sus respectivos valores. Dentro de int main() {}, la función debe ser
llamada con dos argumentos pasados por referencia.
Solución:
13. Trabajando con el concepto de “overloaded function”: Escribe un programa que defina dos funciones con
el mismo nombre para calcular el área de un cuadrado y el de un triángulo respectivamente.
Solución:
Solución:
12. Valores predeterminados de parámetros: Escribe una función llamada “divideBy2” con dos parámetros
de entrada (a,b), números enteros pasados por valor. La función devuelve la división de a/b. En el caso de
no introducir el segundo argumento la función debería asumir “2”como segundo parámetro devolviendo
el resultado a/2.
12 13
Solución:
15. Escribe un programa que incluya el prototipo de una función “isOdd” con un parámetro pasado por valor.
Si es impar devuelve “true”, en cualquier otro caso, “false”.
14. Escribe una función llamada factorial que calcule el factorial de un número entero.
Solución:
LECCIÓN 3
Ÿ � Punteros.
Ÿ � Estructuras de datos.
Ÿ � Punteros a estructuras.
Ÿ � Memoria dinámica.
Properties
Ÿ � Programación orientada a objetos.
C++ AVANZADO - Actividades de preparación (Práctica):
Ÿ Arrays.
La empresa informática "Golden computer" necesita registrar a todos sus empleados. El número de
clase a diseñar debe seguir las siguientes especificaciones:
protected char * surname;
protected char * id;
1. Trabajando con los siguientes conceptos:
protected char * name;
Employee (Base class)
protectedint age;
protected long minSalary;
~Employee(){
delete name; delete surname; delete id;}
Employee (char * name, char * surname, char* id, int age, long minSalary);
Methods
cout<< "\nDestroying...";
// constructor
// destructor
12 13
Solución:
15. Escribe un programa que incluya el prototipo de una función “isOdd” con un parámetro pasado por valor.
Si es impar devuelve “true”, en cualquier otro caso, “false”.
14. Escribe una función llamada factorial que calcule el factorial de un número entero.
Solución:
LECCIÓN 3
Ÿ � Punteros.
Ÿ � Estructuras de datos.
Ÿ � Punteros a estructuras.
Ÿ � Memoria dinámica.
Properties
Ÿ � Programación orientada a objetos.
C++ AVANZADO - Actividades de preparación (Práctica):
Ÿ Arrays.
La empresa informática "Golden computer" necesita registrar a todos sus empleados. El número de
clase a diseñar debe seguir las siguientes especificaciones:
protected char * surname;
protected char * id;
1. Trabajando con los siguientes conceptos:
protected char * name;
Employee (Base class)
protectedint age;
protected long minSalary;
~Employee(){
delete name; delete surname; delete id;}
Employee (char * name, char * surname, char* id, int age, long minSalary);
Methods
cout<< "\nDestroying...";
// constructor
// destructor
14 15
privateintanalysisByHour;
Methods
//Write the method that returns the number of lines written by the programmer in an hour.
public long getMinSalary();
intgetCodeLinesByHour();
public virtual long calculateSalary()=0;
public char * getName();
public char * getSurname();
Properties
//Write the mthod that returns the programming language's programmer.
publicintgetAge();
char * getProgrammingLanguage();
// Write the method that returns the addition of minSalary and the money gained depending of the
lines of code written in an hour. The hour costs 100 €.
public char * getId();
Class Programmer (Derived class)
longcalculateSalary();
Programmer es una clase derivada de la clase “Employee”.
// Write every method and interprets what is its functionality.
// Write the constructor
// Write the destructor
public virtual void visualiza() {};
Analyst es una clase derivada de la clase “Employee”.
Properties
privateintanalysisByHour;
// Write the constructor
Methods
// Write the destructor
Class Analyst (Derived class)
intgetAnalysisHours();
//Write the method that returns the programming language's programmer.
//Write the method that returns the number of hours worked by an analyst.
Ÿ Declara un array que cotenga dos posiciones ocupadas por referencias (punteros) a dos objetos, por
ejemplo de clase “Employee”. Después, imprime la información de cada posición de ese array.
Recuerda, el valor de cada posición es una referencia a un objeto de “Employee”, como ejemplo.
Ÿ Comprueba el destructor de “Employee”.
char * getProgrammingLanguage();
Una vez que hayas definido todas las clases realizarás un programa -intmain() { return 0;} para
comprobar este ejercicio. Pasos:
longminSalary;
Solución:
protected:
#include <conio.h>
int age;
using namespace std;
char *name, *surname, *id;
#include <iostream>
class Employee {
14 15
privateintanalysisByHour;
Methods
//Write the method that returns the number of lines written by the programmer in an hour.
public long getMinSalary();
intgetCodeLinesByHour();
public virtual long calculateSalary()=0;
public char * getName();
public char * getSurname();
Properties
//Write the mthod that returns the programming language's programmer.
publicintgetAge();
char * getProgrammingLanguage();
// Write the method that returns the addition of minSalary and the money gained depending of the
lines of code written in an hour. The hour costs 100 €.
public char * getId();
Class Programmer (Derived class)
longcalculateSalary();
Programmer es una clase derivada de la clase “Employee”.
// Write every method and interprets what is its functionality.
// Write the constructor
// Write the destructor
public virtual void visualiza() {};
Analyst es una clase derivada de la clase “Employee”.
Properties
privateintanalysisByHour;
// Write the constructor
Methods
// Write the destructor
Class Analyst (Derived class)
intgetAnalysisHours();
//Write the method that returns the programming language's programmer.
//Write the method that returns the number of hours worked by an analyst.
Ÿ Declara un array que cotenga dos posiciones ocupadas por referencias (punteros) a dos objetos, por
ejemplo de clase “Employee”. Después, imprime la información de cada posición de ese array.
Recuerda, el valor de cada posición es una referencia a un objeto de “Employee”, como ejemplo.
Ÿ Comprueba el destructor de “Employee”.
char * getProgrammingLanguage();
Una vez que hayas definido todas las clases realizarás un programa -intmain() { return 0;} para
comprobar este ejercicio. Pasos:
longminSalary;
Solución:
protected:
#include <conio.h>
int age;
using namespace std;
char *name, *surname, *id;
#include <iostream>
class Employee {
16 17
longgetMinSalary() { return this->minSalary; };
char * programmingLanguage;
this->name = new char[30];
};
~Employee(){
this->minSalary = minSalary;
char * getName() { return this->name; }
virtual long calculateSalary()=0;
};
private:
intcodeLinesByHour;
cout<< "\nDestroying...";
public:
virtual void visualiza() {};
this->name = name;
this->id = id;
char * getSurname() { return this->surname ;};
this->surname = surname;
intgetAge() { return this->age; };
Employee (char * name, char * surname, char* id, int age, long minSalary) {
this->age = age;
char * getId() { return this->id; };
delete name; delete surname; delete id;}
classProgrammer:public Employee {
Programmer(char * name, char * surname, char * id, int age, long minSalary,
intcodeLinesByHour, char * programmingLanguage):Employee(
this->codeLinesByHour = codeLinesByHour;
public:
};
intgetCodeLinesByHour() { return this->codeLinesByHour; };
char * getProgrammingLanguage() { return this->programmingLanguage; };
longcalculateSalary() { return minSalary + (this->codeLinesByHour * 10); };
name, surname,id , age, minSalary) {
this->programmingLanguage = programmingLanguage;
cout<< "\nName: " << this->name << "\nSurname: " << this->surname
voidvisualiza() {
cout<< "\n\n\n------------------------------------------------------";
<< "\nMinimun salary: "<< this->minSalary
<< "\nLanguage Programming: " << this->programmingLanguage
<< "\nNumber of lines of code written: "<< this->codeLinesByHour
<< "\n------------------------------------------------------\n";
};
};
classAnalyst:public Employee {
private:
<< "\nId: "<< this->id << " Age: " << this->age
intanalysisHours;
int main() {
cout<< "\nName: " << this->name << "\nSurname: " << this->surname
};
};
<< "\nMinimun salary: "<< this->minSalary
Analyst(char * name, char * surname, char * id, int age, long minSalary,
this->analysisHours = analysisHours;
intopcion;
intanalysisHours):Employee(name, surname,id,age, minSalary) {
<< "\n------------------------------------------------------\n";
int age;
longcalculateSalary() { return minSalary + (this->analysisHours * 30); };
<< "\nNumber of hours used in analysis: "<< this->analysisHours
voidvisualiza() {
public:
<< "\nId: "<< this->id << " Age: " << this->age
};
intgetAnalysisHours() { return this->analysisHours; };
Employee *people[2];
cout<< "\n\n\n-------------------------------------------------";
16 17
longgetMinSalary() { return this->minSalary; };
char * programmingLanguage;
this->name = new char[30];
};
~Employee(){
this->minSalary = minSalary;
char * getName() { return this->name; }
virtual long calculateSalary()=0;
};
private:
intcodeLinesByHour;
cout<< "\nDestroying...";
public:
virtual void visualiza() {};
this->name = name;
this->id = id;
char * getSurname() { return this->surname ;};
this->surname = surname;
intgetAge() { return this->age; };
Employee (char * name, char * surname, char* id, int age, long minSalary) {
this->age = age;
char * getId() { return this->id; };
delete name; delete surname; delete id;}
classProgrammer:public Employee {
Programmer(char * name, char * surname, char * id, int age, long minSalary,
intcodeLinesByHour, char * programmingLanguage):Employee(
this->codeLinesByHour = codeLinesByHour;
public:
};
intgetCodeLinesByHour() { return this->codeLinesByHour; };
char * getProgrammingLanguage() { return this->programmingLanguage; };
longcalculateSalary() { return minSalary + (this->codeLinesByHour * 10); };
name, surname,id , age, minSalary) {
this->programmingLanguage = programmingLanguage;
cout<< "\nName: " << this->name << "\nSurname: " << this->surname
voidvisualiza() {
cout<< "\n\n\n------------------------------------------------------";
<< "\nMinimun salary: "<< this->minSalary
<< "\nLanguage Programming: " << this->programmingLanguage
<< "\nNumber of lines of code written: "<< this->codeLinesByHour
<< "\n------------------------------------------------------\n";
};
};
classAnalyst:public Employee {
private:
<< "\nId: "<< this->id << " Age: " << this->age
intanalysisHours;
int main() {
cout<< "\nName: " << this->name << "\nSurname: " << this->surname
};
};
<< "\nMinimun salary: "<< this->minSalary
Analyst(char * name, char * surname, char * id, int age, long minSalary,
this->analysisHours = analysisHours;
intopcion;
intanalysisHours):Employee(name, surname,id,age, minSalary) {
<< "\n------------------------------------------------------\n";
int age;
longcalculateSalary() { return minSalary + (this->analysisHours * 30); };
<< "\nNumber of hours used in analysis: "<< this->analysisHours
voidvisualiza() {
public:
<< "\nId: "<< this->id << " Age: " << this->age
};
intgetAnalysisHours() { return this->analysisHours; };
Employee *people[2];
cout<< "\n\n\n-------------------------------------------------";
18 19
cout<< "id?: (without white spaces) ";
cin>> name;
char * name = new char[30];
cout<< "surname?: (without white spaces) ";
intcodeLinesByHour;
cin>>programmingLanguage;
codeLinesByHour,programmingLanguage);
cout<< "What's your programming language?: ";
longminSalary;
for (register inti=0; i<2; i++) {
char * id = new char[8];
cout<< "\n\nEnter programmer o analyst: Programmer (1) - Analyst (2)" << "\n";
cin>>opcion;
char * surname = new char[50];
cout<< "name?: (without white spaces) ";
cin>> surname;
cin>> id;
cout<< "age?: ";
cout<< "min salary?: ";
cin>>minSalary;
if (opcion==1) {
cin>> age;
char * programmingLanguage = new char[20];
cout<< "How lines of code you write by hour?: ";
cin>>codeLinesByHour;
people[i]=new Programmer(name,surname,id,age,minSalary,
}
else {
intanalysisHours;
cout<< "How many hours do you use for the analysis of an application?: ";
cin>>analysisHours;
people[i]=new Analyst(name,surname,id,age,minSalary,analysisHours);
}
}
for (register inti=0; i<2; i++) {
// Prints people
people[i]->visualiza();
cout<< "Total salary: " << people[i]->calculateSalary();
cout<< "\n\n";
}
cout<< "\n\nPress any key to continue...";
delete people[1];
return 0;
Ejecución:
delete people[0];
}
getche();
18 19
cout<< "id?: (without white spaces) ";
cin>> name;
char * name = new char[30];
cout<< "surname?: (without white spaces) ";
intcodeLinesByHour;
cin>>programmingLanguage;
codeLinesByHour,programmingLanguage);
cout<< "What's your programming language?: ";
longminSalary;
for (register inti=0; i<2; i++) {
char * id = new char[8];
cout<< "\n\nEnter programmer o analyst: Programmer (1) - Analyst (2)" << "\n";
cin>>opcion;
char * surname = new char[50];
cout<< "name?: (without white spaces) ";
cin>> surname;
cin>> id;
cout<< "age?: ";
cout<< "min salary?: ";
cin>>minSalary;
if (opcion==1) {
cin>> age;
char * programmingLanguage = new char[20];
cout<< "How lines of code you write by hour?: ";
cin>>codeLinesByHour;
people[i]=new Programmer(name,surname,id,age,minSalary,
}
else {
intanalysisHours;
cout<< "How many hours do you use for the analysis of an application?: ";
cin>>analysisHours;
people[i]=new Analyst(name,surname,id,age,minSalary,analysisHours);
}
}
for (register inti=0; i<2; i++) {
// Prints people
people[i]->visualiza();
cout<< "Total salary: " << people[i]->calculateSalary();
cout<< "\n\n";
}
cout<< "\n\nPress any key to continue...";
delete people[1];
return 0;
Ejecución:
delete people[0];
}
getche();
20 21
Ÿ long
Ÿ int
Ÿ char
Ÿ double
Ÿ enumerated
Solución:
2. Escribe una función de nombre “template” que devuelva el más pequeño de uno de entre dos objetos.
Usa la función “getMin” dentro de intmain() {return 0; } siendo los argumentos:
months_t result_5;
may, june, july, august,
result = (a<b)? a : b;
// function template
myType result;
#include <iostream>
}
double result_4;
result_4=getMin<double>(125.6,23.99);
return (result);
result_3=getMin<char>('a','z');
template<class myType>
int main () {
int result_1;
result_5=getMin<months_t>(january,december);
cout<< result_2 <<endl;
#include <conio.h>
using namespace std;
typedefenum { january=1, february, march, april,
long result_2;
cout<< result_3 <<endl;
september, october, november, december} months_t;
myTypegetMin (myType a, myType b) {
char result_3;
result_1=getMin<int>(5,8);
cout<< result_5 <<endl;
result_2=getMin<long>(123,34);
cout<< result_4 <<endl;
cout<< result_1 <<endl;
cout<< "Press any key to continue...";
a
}
getch();
Ejecución:
5
34
return 0;
23.99
1
Press any key to continue...
3. Class template: Escribe una “class template” llamada “myTrio” con tres propiedades (a, b, c) de tipo
“myType” y los métodos son:
Ÿ Un constructor (prototipo): myTrio(myType one, myType two, myType three){}
Piensa en una posible ejecución.
Ÿ Un método que devuelva la más pequeña de estas tres propiedades (prototipo): myTypegetMin() {}:
#include <iostream>
Solución:
myTypegetMin() {
// class templates
classmyTrio {
#include <conio.h>
return result;
if (a < b && a < c) result = a;
else result = c;
myTrio(myType one, myType two, myType three){a = one; b = two; c = three;}
public:
template<class myType>
else if (b < a && b < c) result = b;
}
;
using namespace std;
myType result;
myType a, b, c;
20 21
Ÿ long
Ÿ int
Ÿ char
Ÿ double
Ÿ enumerated
Solución:
2. Escribe una función de nombre “template” que devuelva el más pequeño de uno de entre dos objetos.
Usa la función “getMin” dentro de intmain() {return 0; } siendo los argumentos:
months_t result_5;
may, june, july, august,
result = (a<b)? a : b;
// function template
myType result;
#include <iostream>
}
double result_4;
result_4=getMin<double>(125.6,23.99);
return (result);
result_3=getMin<char>('a','z');
template<class myType>
int main () {
int result_1;
result_5=getMin<months_t>(january,december);
cout<< result_2 <<endl;
#include <conio.h>
using namespace std;
typedefenum { january=1, february, march, april,
long result_2;
cout<< result_3 <<endl;
september, october, november, december} months_t;
myTypegetMin (myType a, myType b) {
char result_3;
result_1=getMin<int>(5,8);
cout<< result_5 <<endl;
result_2=getMin<long>(123,34);
cout<< result_4 <<endl;
cout<< result_1 <<endl;
cout<< "Press any key to continue...";
a
}
getch();
Ejecución:
5
34
return 0;
23.99
1
Press any key to continue...
3. Class template: Escribe una “class template” llamada “myTrio” con tres propiedades (a, b, c) de tipo
“myType” y los métodos son:
Ÿ Un constructor (prototipo): myTrio(myType one, myType two, myType three){}
Piensa en una posible ejecución.
Ÿ Un método que devuelva la más pequeña de estas tres propiedades (prototipo): myTypegetMin() {}:
#include <iostream>
Solución:
myTypegetMin() {
// class templates
classmyTrio {
#include <conio.h>
return result;
if (a < b && a < c) result = a;
else result = c;
myTrio(myType one, myType two, myType three){a = one; b = two; c = three;}
public:
template<class myType>
else if (b < a && b < c) result = b;
}
;
using namespace std;
myType result;
myType a, b, c;
22 23
int main () {
namespace namespace1
getch();
cout<< trio_1.getMin();
return 0;
};
cout<< "\nPress any key to continue...";
}
Ejecución:
myTrio<int> trio_1(100, 75, 23);
23
Press any key to continue...
4. Escribe un programa que declare una variable en un namespace llamado “namespace1” y la misma
variable en otro namespace llamado “namespace2”. Demuestra que no hay errores de redefinición.
// namespaces
#include <iostream>
#include <conio.h>
Solución:
using namespace std;
{
intmyVariable = 25;
namespace namespace2
{
double myVariable= 80;
}
int main () {
cout<< namespace1::myVariable<<endl;
cout<< namespace2::myVariable<<endl;
cout<< "Press any key to continue...";
getch();
}
return 0;
}
Ejecución:
{
return 0;
try {
}
int main () {
Press any key to continue...
Ejecución:
// bad_alloc standard exception
int* myarray= new int[3000000000];
Solución:
80
#include <exception>
5. Escribe un programa que fuerce una excepción “bad_alloc” y la maneje imprimiendo varios mensajes.
Puedes intentar, por ejemplo, crear un array de 3000000000 números enteros. Este hecho provoca una
excepción de tipo “bad_alloc”.
25
#include <conio.h>
using namespace std;
} catch (bad_alloc& e)
Press any key to continue...
cout<< "\nError allocating memory";
cout<< "Press any key to continue...";
cout<< "Standard exception: " <<e.what() <<endl;
#include <iostream>
getch();
}
Error allocating memoryStandard exception: std::bad_alloc
22 23
int main () {
namespace namespace1
getch();
cout<< trio_1.getMin();
return 0;
};
cout<< "\nPress any key to continue...";
}
Ejecución:
myTrio<int> trio_1(100, 75, 23);
23
Press any key to continue...
4. Escribe un programa que declare una variable en un namespace llamado “namespace1” y la misma
variable en otro namespace llamado “namespace2”. Demuestra que no hay errores de redefinición.
// namespaces
#include <iostream>
#include <conio.h>
Solución:
using namespace std;
{
intmyVariable = 25;
namespace namespace2
{
double myVariable= 80;
}
int main () {
cout<< namespace1::myVariable<<endl;
cout<< namespace2::myVariable<<endl;
cout<< "Press any key to continue...";
getch();
}
return 0;
}
Ejecución:
{
return 0;
try {
}
int main () {
Press any key to continue...
Ejecución:
// bad_alloc standard exception
int* myarray= new int[3000000000];
Solución:
80
#include <exception>
5. Escribe un programa que fuerce una excepción “bad_alloc” y la maneje imprimiendo varios mensajes.
Puedes intentar, por ejemplo, crear un array de 3000000000 números enteros. Este hecho provoca una
excepción de tipo “bad_alloc”.
25
#include <conio.h>
using namespace std;
} catch (bad_alloc& e)
Press any key to continue...
cout<< "\nError allocating memory";
cout<< "Press any key to continue...";
cout<< "Standard exception: " <<e.what() <<endl;
#include <iostream>
getch();
}
Error allocating memoryStandard exception: std::bad_alloc
24 25
Solución:
#include <iostream>
using namespace std;
float f=315.398;
int c=f;
#include <exception>
//Type casting
cout<< "\nConverting a float number to int (Type Casting- Implicit conversion)";
Float number: 315.398
6. Escribe un programa que convierta el número decimal 315.398 a otro de tipo int.
#include <conio.h>
int main () {
cout<< "Float number: " << f;
cout<< "\nFloat number converted to int: " << c;
cout<< "\nPress any key to continue...";
getche();
return 0;
}
Ejecución:
Converting a float number to int (Type Casting- Implicit conversion)
Float number converted to int: 315
#include <exception>
7. Escribe un programa que imprima la división real de la expresión 9/5 (conversión explícita -“casting”).
cout<< (float) 9/5;
Solución:
#include <iostream>
int main () {
//Type casting
Press any key to continue...
#include <conio.h>
using namespace std;
#include <exception>
}
Press any key to continue...
8. Escribe una macro que defina una función llamada “getMin” con dos parámetros pasados por valor. La
función devuelve el más pequeño de los dos parámetros. Comprueba la macro.
return 0;
Ejecución:
1.8
cout<< "\nPress any key to continue...";
Solución:
// function macro
getch();
#include <iostream>
using namespace std;
#define getMin(a,b) ((a)<(b)?(a):(b))
int one, two;
cin>> two;
cout<<getMin(one,two) <<endl;
cout<< "\nPress any key to continue...";
getch();
return 0;
}
int main() {
cout<< "integer number 2?: ";
cin>> one;
cout<< "integer number 1?: ";
#include <conio.h>
24 25
Solución:
#include <iostream>
using namespace std;
float f=315.398;
int c=f;
#include <exception>
//Type casting
cout<< "\nConverting a float number to int (Type Casting- Implicit conversion)";
Float number: 315.398
6. Escribe un programa que convierta el número decimal 315.398 a otro de tipo int.
#include <conio.h>
int main () {
cout<< "Float number: " << f;
cout<< "\nFloat number converted to int: " << c;
cout<< "\nPress any key to continue...";
getche();
return 0;
}
Ejecución:
Converting a float number to int (Type Casting- Implicit conversion)
Float number converted to int: 315
#include <exception>
7. Escribe un programa que imprima la división real de la expresión 9/5 (conversión explícita -“casting”).
cout<< (float) 9/5;
Solución:
#include <iostream>
int main () {
//Type casting
Press any key to continue...
#include <conio.h>
using namespace std;
#include <exception>
}
Press any key to continue...
8. Escribe una macro que defina una función llamada “getMin” con dos parámetros pasados por valor. La
función devuelve el más pequeño de los dos parámetros. Comprueba la macro.
return 0;
Ejecución:
1.8
cout<< "\nPress any key to continue...";
Solución:
// function macro
getch();
#include <iostream>
using namespace std;
#define getMin(a,b) ((a)<(b)?(a):(b))
int one, two;
cin>> two;
cout<<getMin(one,two) <<endl;
cout<< "\nPress any key to continue...";
getch();
return 0;
}
int main() {
cout<< "integer number 2?: ";
cin>> one;
cout<< "integer number 1?: ";
#include <conio.h>
26 #
Ejecución:
integer number 1?: 67
integer number 2?: 5
5
Press any key to continue...
#include <iostream>
#include <fstream>
}
cout<< "Press any key to continue...";
Ejecución:
“Robots are amusing”.
using namespace std;
return 0;
getch();
int main () {
myfile<< "Robots are amusing.\n";
#include <conio.h>
Press any key to continue...
myfile.open ("robots.txt");
ofstreammyfile;
// basic file operations
9. Escribe un programa que escribe en un fichero de texto la frase “Robots are amusing”.
Solución:
myfile.close();
A file called "robots. txt " has been created. Its first line contains: