intellectual output 5 robot4all ejercicios y …

28
Socio Principal: P6 - CCS ROBOT4ALL EJERCICIOS Y SOLUCIONES - PROGRAMACIÓN INTELLECTUAL OUTPUT 5

Upload: others

Post on 28-Jun-2022

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: INTELLECTUAL OUTPUT 5 ROBOT4ALL EJERCICIOS Y …

#

Socio Principal: P6 - CCS

ROBOT4ALLEJERCICIOS Y SOLUCIONES -

PROGRAMACIÓN

INTELLECTUAL OUTPUT 5

Page 2: INTELLECTUAL OUTPUT 5 ROBOT4ALL EJERCICIOS Y …

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

[email protected]

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

Page 3: INTELLECTUAL OUTPUT 5 ROBOT4ALL EJERCICIOS Y …

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

[email protected]

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

Page 4: INTELLECTUAL OUTPUT 5 ROBOT4ALL EJERCICIOS Y …

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

Page 5: INTELLECTUAL OUTPUT 5 ROBOT4ALL EJERCICIOS Y …

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

Page 6: INTELLECTUAL OUTPUT 5 ROBOT4ALL EJERCICIOS Y …

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

Page 7: INTELLECTUAL OUTPUT 5 ROBOT4ALL EJERCICIOS Y …

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

Page 8: INTELLECTUAL OUTPUT 5 ROBOT4ALL EJERCICIOS Y …

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:

Page 9: INTELLECTUAL OUTPUT 5 ROBOT4ALL EJERCICIOS Y …

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:

Page 10: INTELLECTUAL OUTPUT 5 ROBOT4ALL EJERCICIOS Y …

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:

Page 11: INTELLECTUAL OUTPUT 5 ROBOT4ALL EJERCICIOS Y …

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:

Page 12: INTELLECTUAL OUTPUT 5 ROBOT4ALL EJERCICIOS Y …

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.

Page 13: INTELLECTUAL OUTPUT 5 ROBOT4ALL EJERCICIOS Y …

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.

Page 14: INTELLECTUAL OUTPUT 5 ROBOT4ALL EJERCICIOS Y …

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

Page 15: INTELLECTUAL OUTPUT 5 ROBOT4ALL EJERCICIOS Y …

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

Page 16: INTELLECTUAL OUTPUT 5 ROBOT4ALL EJERCICIOS Y …

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 {

Page 17: INTELLECTUAL OUTPUT 5 ROBOT4ALL EJERCICIOS Y …

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 {

Page 18: INTELLECTUAL OUTPUT 5 ROBOT4ALL EJERCICIOS Y …

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

Page 19: INTELLECTUAL OUTPUT 5 ROBOT4ALL EJERCICIOS Y …

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

Page 20: INTELLECTUAL OUTPUT 5 ROBOT4ALL EJERCICIOS Y …

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

Page 21: INTELLECTUAL OUTPUT 5 ROBOT4ALL EJERCICIOS Y …

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

Page 22: INTELLECTUAL OUTPUT 5 ROBOT4ALL EJERCICIOS Y …

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;

Page 23: INTELLECTUAL OUTPUT 5 ROBOT4ALL EJERCICIOS Y …

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;

Page 24: INTELLECTUAL OUTPUT 5 ROBOT4ALL EJERCICIOS Y …

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

Page 25: INTELLECTUAL OUTPUT 5 ROBOT4ALL EJERCICIOS Y …

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

Page 26: INTELLECTUAL OUTPUT 5 ROBOT4ALL EJERCICIOS Y …

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>

Page 27: INTELLECTUAL OUTPUT 5 ROBOT4ALL EJERCICIOS Y …

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>

Page 28: INTELLECTUAL OUTPUT 5 ROBOT4ALL EJERCICIOS Y …

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: