Untitled

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 31

1

Curso: Programación de Sistemas Página:

3
Laboratorio Funciones en C++

I
OBJETIVOS
● La presente práctica de laboratorio tiene como objetivo el uso de funciones en C++ y
diferenciar los conceptos de funciones, métodos y procedimientos.

II
TEMAS A TRATAR
● Funciones en C++.
● Métodos.
● Procedimientos.
● Ejercicios de Funciones.

III
MARCO TEÓRICO
❖ INTRODUCCIÓN:

Una función es un bloque de código que realiza alguna operación. Una función puede
definir opcionalmente parámetros de entrada que permiten a los llamadores pasar
argumentos a la función. Una función también puede devolver un valor como
salida. Las funciones son útiles para encapsular las operaciones comunes en un solo
bloque reutilizable, idealmente con un nombre que describa claramente lo que hace la
función. La siguiente función acepta dos enteros de un llamador y devuelve su
suma; a y b son parámetros de tipo int.

Magister Oscar Alberto Ramirez Valdez


Magister Roni Guillermo Apaza Aceituno
2
Curso: Programación de Sistemas Página:

La función se puede invocar, o llamar, desde cualquier número de lugares en el


programa. Los valores que se pasan a la función son los argumentos, cuyos tipos
deben ser compatibles con los tipos de parámetro en la definición de función.

No hay ningún límite práctico para la longitud de la función, pero un buen diseño
tiene como objetivo funciones que realizan una sola tarea bien definida. Los
algoritmos complejos deben dividirse en funciones más sencillas y fáciles de
comprender siempre que sea posible.

Las funciones definidas en el ámbito de clase se denominan funciones miembros. En


C++, a diferencia de otros lenguajes, una función también puede definirse en el
ámbito de espacio de nombres (incluido el espacio de nombres global implícito). Estas
funciones se denominan funciones libres o funciones no miembro; se utilizan
ampliamente en la Biblioteca Estándar.

Las funciones pueden estar sobrecargadas, lo que significa que diferentes versiones de


una función pueden compartir el mismo nombre si difieren por el número y/o tipo de
parámetros formales.

❖ DIFERENCIAS ENTRE FUNCIONES – METODOS - PROCEDIMIENTOS:

Funciones: Las funciones son un conjunto de procedimiento encapsulados en un


bloque, usualmente reciben parámetros, cuyos valores utilizan para efectuar
operaciones y adicionalmente retornan un valor. Esta definición proviene de la
definición de función matemática la cual posee un dominio y un rango, es decir un
conjunto de valores que puede tomar y un conjunto de valores que puede retornar
luego de cualquier operación.

Métodos: Los métodos y las funciones son funcionalmente idénticos, pero su


diferencia radica en el contexto en el que existen. Un método también puede recibir
valores, efectuar operaciones con estos y retornar valores. Sin embargo, en método
está asociado a un objeto, básicamente un método es una función que pertenece a un
objeto o clase, mientras que una función existe por sí sola, sin necesidad de un objeto
para ser usada.
Magister Oscar Alberto Ramirez Valdez
Magister Roni Guillermo Apaza Aceituno
3
Curso: Programación de Sistemas Página:

Procedimientos: Los procedimientos son básicamente lo un conjunto de


instrucciones que se ejecutan sin retornar ningún valor, hay quienes dicen que un
procedimiento no recibe valores o argumentos. Sin embargo, en la definición no hay
nada que se lo impida. En el contexto de C++ un procedimiento es básicamente una
función void que no nos obliga a utilizar una sentencia return.

La duración del laboratorio (actividades y ejercicios resueltos) será de (cuatro) 4 horas


académicas

IV
ACTIVIDADES
● Consideraciones: Instalar un IDE para la programación de C++. Puede ser Zinjal,
Visual Studio 2019, entre otros.

● ACTIVIDAD 2.

El estudiante debe entender los ejercicios resueltos

● ACTIVIDAD 2.

Revisar los ejercicios propuestos creando los archivos respectivos y un informe de


todos los programas utilizados y explicados por cada archivo.

V
EJERCICIOS RESUELTOS
● EJERCICIO 1.
Crear un programa en c++ que permita el ingreso por teclado la edad y que muestre en
pantalla dicha edad

#include <iostream>
using namespace std;
int main()
{
int edad;
cout << "Ingresa su edad:";
cin >> edad;
cout << "\nTu edad es: " << edad;
return 0;
}

● EJERCICIO 2.
Magister Oscar Alberto Ramirez Valdez
Magister Roni Guillermo Apaza Aceituno
4
Curso: Programación de Sistemas Página:

Crear un programa en c++ que permita crear una cadena de caracteres utilizando el
tipo de dato char y que lo muestre después

#include <iostream>
using namespace std;
int main()
{
char sample[] = "ProgramacióndeSistemas";
cout << sample << " - Un excelente curso ";
return 0;
}

● EJERCICIO 3.
Crear un programa en c++ que permita el ingreso de dos números y que los sume
utilizando las funciones cout y cin, además muestre el resultado, no utilizar
operadores “::”

/* el programa pregunta dos números y muestra el resultado */

#include <iostream>

using namespace std;

int main (void)


{
double x, y, z;
cout << "Introduzca el primer número" << endl;
cin >> x;
cout << "Introduzca el segundo número" << endl;
cin >> y;
z = x + y;
cout << x << "+" << y << "=" << z << endl;
return 0;
}

● EJERCICIO 4.
Crear un programa en c++ que permita la visualización y uso de un menú con seis
opciones: “Ingreso”,“Modificación”, “Consultas”, “Reportes”, “Utilidades” y “Salir”,
en cada uno mostrar un mensaje correspondiente

//Código fuente: Mostrar un menú con 6 opciones.


#include <iostream>
using namespace std;
int main()
{
int m;
cout<<"\t\t\tElija una opción\n\n";
Magister Oscar Alberto Ramirez Valdez
Magister Roni Guillermo Apaza Aceituno
5
Curso: Programación de Sistemas Página:

cout<<"1 Ingreso\n";
cout<<"2 Modificación\n";
cout<<"3 consultas\n";
cout<<"4 Reportes\n";
cout<<"5 Utilidades\n";
cout<<"6 Salir\n\n";
cin>>m;

switch(m)
{
case 1:cout<<"Ud tiene S/. 2500"<<endl;break;
case 2:cout<<"¿Que desea modificar?"<<endl;break;
case 3:cout<<"Escriba su consulta aqui: "<<endl;break;
case 4:cout<<"Ud. no presenta reportes"<<endl;break;
case 5:cout<<"Este servicio esta bloqueado por el momento"<<endl;break;
case 6:cout<<"Ya esta fuera"<<endl;break;
default: cout<<"El valor ingresado no esta en el menu"<<endl;
}
cin.ignore();return 0;
}

● EJERCICIO 5.
Crear un programa en C++ que permita la visualización de un menú de cuatro
opciones: “Opción 1”, “Opción 2”, “Opción 3” y “Opción 4”, consecutivamente hasta
que se seleccione la opción “SALIR”.

#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
int opcion;
bool repetir = true;
do{
//system("cls");
//Texto del menú que se verá cada vez
cout << "\n\nMenu de Opciones"<< endl;
cout << "1. Opción 1" << endl;
cout << "2. Opción 2" << endl;
cout << "3. Opción 3" << endl;
cout << "4. Opción 4" << endl;
cout << "0. SALIR" << endl;

cout << "\nIngrese un opción: ";


cin >> opcion;
Magister Oscar Alberto Ramirez Valdez
Magister Roni Guillermo Apaza Aceituno
6
Curso: Programación de Sistemas Página:

switch (opcion) {
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 0:
repetir = false;
break;
}
}while(repetir);
return 0;
}

● EJERCICIO 6.
Crear un programa en C++ que muestre un menú con 4 opciones: “Función 1”,
“Función 2”, “Función 3” y “Función 4”, cada una debe implementar una función que
muestre el mensaje: “Función X” donde X es el número de función:

#include <iostream>
#include <cstdlib>

using namespace std;

void funcion1();
void funcion2();
void funcion3();
void funcion4();

int main()
{
int opcion;
bool repetir = true;
do
{
cout << "\n\n\t\tMenu de Opciones" << endl;
cout << "\t\t -----------------" << endl;
cout << "\n\t1. Función 1" << endl;
cout << "\t2. Función 2" << endl;
cout << "\t3. Función 3" << endl;
cout << "\t4. Función 4" << endl;
cout << "\t0. SALIR" << endl;
cout << "\n\tIngrese una opción: ";
Magister Oscar Alberto Ramirez Valdez
Magister Roni Guillermo Apaza Aceituno
7
Curso: Programación de Sistemas Página:

cin >> opcion;

int numero1, numero2;


float resultado;
switch (opcion)
{
case 1:
funcion1();
break;
case 2:
funcion2();
break;
case 3:
funcion3();
break;
case 4:
funcion4();
break;
case 0:
repetir = false;
break;
}
}while (repetir);
return 0;
}
void funcion1()
{
cout << "\n\tFunción 1\n";
}
void funcion2()
{
cout << "\n\tFunción 2\n";
}
void funcion3()
{
cout << "\n\tFunción 3\n";
}
void funcion4()
{
cout << "\n\tFunción 4\n";
}

● EJERCICIO 7.
Crear un programa en C++ que utilice la función rand() para crear un número
aletaorio:

#include <iostream>
Magister Oscar Alberto Ramirez Valdez
Magister Roni Guillermo Apaza Aceituno
8
Curso: Programación de Sistemas Página:

#include <cstdlib>
using namespace std;
int main()
{
int a;
a = rand();
cout << a << endl;
cout << "\n\nRAND MAX para este equipo tiene un valor de: " << RAND_MAX;
return 0;
}

● EJERCICIO 8.
Crear un programa en C++ que permita crear un limite superior para una función
rand(), este limite debe ser dado para valores del 0 al 1, del 0 al 9, del 0 al 1499 y del
0 al 65535

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int valor = 0;
cout << "rand() definiendo limite superior, el rango va de 0 a (limite -1)" << endl;
valor = rand() % 2;
cout << "rand() % 2\t\t" << valor << endl;
valor = rand() %10;
cout << "rand() % 10\t\t"<< valor << endl;
valor = rand() % 1500;
cout << "rand() % 1500\t\t"<< valor << endl;
valor = rand() % 65536;
cout << "rand() % 65536\t\t"<< valor << endl;
return 0;
}

● EJERCICIO 9.
Crear un programa en C++ que permita crear un limite inferior para una función
rand(), este límite debe ser dado para los valores que van del 10 para adelante y del
65000 para adelante

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int valor = 0;
cout << "rand() definiendo limite inferior" << endl;
valor = 10 + rand();
Magister Oscar Alberto Ramirez Valdez
Magister Roni Guillermo Apaza Aceituno
9
Curso: Programación de Sistemas Página:

cout << "10 + rand()\t\t" << valor << endl;


valor = 65000 + rand();
cout << "65000 + rand()\t\t"<< valor << endl;
return 0;
}

● EJERCICIO 10.
Crear un programa en C++ que permita crear un límite inferior y un limite superior
que va del 1 al 99, del 25 al 99 y del 0 al 50

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int valor = 0;
cout << "rand() definiendo limite inferior e inferior" << endl;
valor = 1 + rand()%100;
cout << "1 + rand()%100\t\t" << valor << endl;
valor = 25 + rand()%100;
cout << "25 + rand()%100\t\t"<< valor << endl;
valor = 0 + rand() %51;
cout << "0 + rand() %51: \t\t" << valor << endl << endl;
return 0;
}

● EJERCICIO 11.
Crear un programa en C++ que permita crear un límite inferior y un límite superior
mostrándolos a partir de una resta en la implementación del programa para valores
entre 10 y 26 y 25 y 100

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int valor = 0;
cout << "rand() definiendo limite inferior y especificando el valor del limite
superior" << endl;
valor = 10 + rand() % (26-10);
cout << "10 + rand()% (26-10)\t\t" << valor << endl;
valor = 25 + rand()% (100-25);
cout << "25 + rand()% (100-25)\t\t"<< valor << endl;
return 0;
}

● EJERCICIO 12.
Magister Oscar Alberto Ramirez Valdez
Magister Roni Guillermo Apaza Aceituno
10
Curso: Programación de Sistemas Página:

Crear un programa en C++ que permita la creación de dos números aleatorios


utilizando la función srand() conjuntamente con la función rand(), comprobar el
resultado varias veces

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int valor1, valor2, valor3;
for (int i=1; i<=3; i++) {
cout << "Corrida: " << i << endl;
valor1 = rand();
cout << "Sin semilla: " << valor1 << endl;

srand(40);

valor2=rand();
cout << "valor2: " << valor2 << endl;
valor3=rand() %100 +1;
cout << "valor3: " << valor3 << endl;

srand(1);
}
return 0;
}

● EJERCICIO 13.
Crear un programa en C++ que permita de números aleatorios utilizando la función
rand(), srand() y time() para diversas usos del programa compilado

#include <iostream>
#include <cstdlib> //rand, srand
#include <ctime> //time
using namespace std;
int main()
{
int valor = 0;
srand(time(NULL));
for (int i=1; i<=20; i++){
valor = 5 + rand()%(10-5);
cout << "Calificación Simulada" << i << ": " << valor << "\t\t\t\t";
if (i%2 == 0) cout << endl;
}
return 0;
}

Magister Oscar Alberto Ramirez Valdez


Magister Roni Guillermo Apaza Aceituno
11
Curso: Programación de Sistemas Página:

● EJERCICIO 14.
Crear un programa en C++ que permita la implementación de un juego que adivine un
número secreto

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
int valorrnd = 0;
int valorusr = 0; //numero introducido por el jugador
int contador = 0; //Para registrar el numero de iteraciones
srand(time(NULL)); //Generamos semilla basada en el reloj

valorrnd = 1 + rand()%10;

cout << "Este programa genera un valor entre 1 y 10, tiene 2 oportunidades" <<
endl;
cout << "para acertar el número correcto." << endl;
do{
contador +=1;
cout << "Escribe un número entre 1 y 10" << endl;
cin >> valorusr;
if (valorusr == valorrnd) {
cout << "Ganaste!, el número es correcto" << "(" << valorrnd <<
")";
break;
}else{
cout << "Lo siento, el numero no es ese." << endl << endl;
}
}
while (contador < 2);
if(contador = 2 ){
cout << "Perdiste, más suerte para la próxima, el número es: " << valorrnd;
}
return 0;
}

● EJERCICIO 15.
Crear un programa en C++ que permita mostrar por pantalla las combianciones de
letras a y b en grupos de 3

#include <bits/stdc++.h>
using namespace std;

void imprimirtodaslascadenasgrabadas(char set[], string prefix, int n, int k)


Magister Oscar Alberto Ramirez Valdez
Magister Roni Guillermo Apaza Aceituno
12
Curso: Programación de Sistemas Página:

{
//Caso base de k es 0
//imprimir prefijo
if (k==0)
{
cout << (prefix) << endl;
return;
}
//uno a uno todos los caracteres
//desde el conjunto recursivo
//llamados desde k igual a k - 1
for (int i = 0; i < n; i ++)
{
string newPrefix;

newPrefix = prefix + set[i];

//k es decreciendo
//porque se añadio un nuevo caracter
imprimirtodaslascadenasgrabadas(set, newPrefix, n, k - 1);
}
}

void imprimirtodaslascadenas(char set[], int k, int n)


{
imprimirtodaslascadenasgrabadas(set, "", n, k);
}

int main()
{
cout << "primera prueba" << endl;
char set1[] = {'a', 'b'};
int k =3;
imprimirtodaslascadenas(set1, k, 2);
}

VI
EJERCICIOS PROPUESTOS
● EJERCICIO 1.

Implemente en C++ lo siguiente mediante la implementación de funciones. El


Programa pregunta dos números y precisa que operación desea efectuar y muestra los
resultados.

Magister Oscar Alberto Ramirez Valdez


Magister Roni Guillermo Apaza Aceituno
13
Curso: Programación de Sistemas Página:

Se sugiere utilizar el código mostrado a continuación para la implementación del


ejercicio.

Magister Oscar Alberto Ramirez Valdez


Magister Roni Guillermo Apaza Aceituno
14
Curso: Programación de Sistemas Página:

● EJERCICIO 2.

Implemente en C++ lo siguiente mediante la implementación de funciones. Calcular el


área de polígonos.
Se sugiere utilizar el código mostrado a continuación para la implementación del
ejercicio.

Magister Oscar Alberto Ramirez Valdez


Magister Roni Guillermo Apaza Aceituno
15
Curso: Programación de Sistemas Página:

Magister Oscar Alberto Ramirez Valdez


Magister Roni Guillermo Apaza Aceituno
16
Curso: Programación de Sistemas Página:

● EJERCICIO 3.

Escriba un programa que me permita obtener la funcionalidad de una calculadora


estándar como se muestra. Estas son: Suma, Resta, Multiplicación, División,
Exponencial cuadrado, División especial de uno (1) entre un numero ingresado, la raíz
cuadrada y el porcentaje. Implementar la interfaz mediante un menú de opciones.

Magister Oscar Alberto Ramirez Valdez


Magister Roni Guillermo Apaza Aceituno
17
Curso: Programación de Sistemas Página:

Magister Oscar Alberto Ramirez Valdez


Magister Roni Guillermo Apaza Aceituno
18
Curso: Programación de Sistemas Página:

Magister Oscar Alberto Ramirez Valdez


Magister Roni Guillermo Apaza Aceituno
19
Curso: Programación de Sistemas Página:

Magister Oscar Alberto Ramirez Valdez


Magister Roni Guillermo Apaza Aceituno
20
Curso: Programación de Sistemas Página:

Magister Oscar Alberto Ramirez Valdez


Magister Roni Guillermo Apaza Aceituno
21
Curso: Programación de Sistemas Página:

● EJERCICIO 4.

a) El juego de dados conocido como “craps” (tiro perdedor) es muy popular, realice un
programa que simule dicho juego, a continuación, se muestran las reglas para los
jugadores.

● Un jugador tira dos dados. Cada dato tiene seis caras. Las caras contienen 1, 2, 3, 4,
5 y 6 puntos.
● Una vez que los dados se hayan detenido, se calcula la suma de los puntos en las
dos caras superiores.
● Si a la primera tirada, la suma es 7, o bien 11, el jugador gana.

Magister Oscar Alberto Ramirez Valdez


Magister Roni Guillermo Apaza Aceituno
22
Curso: Programación de Sistemas Página:

● Si a la primera tirada la suma es 2, 3 o 12 (conocido como “craps”), el jugador pierde


(es decir la casa “gana”).
● Si a la primera tirada la suma es 4, 5, 6, 8, 9 ó 10, entonces dicha suma se convierte
en el “punto” o en la “tirada”.
● Para ganar, el jugador deberá continuar tirando los dados hasta que haga su “tirada”.
● El jugador perderá si antes de hacer su tirada sale una tirada de 7.

Magister Oscar Alberto Ramirez Valdez


Magister Roni Guillermo Apaza Aceituno
23
Curso: Programación de Sistemas Página:

Magister Oscar Alberto Ramirez Valdez


Magister Roni Guillermo Apaza Aceituno
24
Curso: Programación de Sistemas Página:

● EJERCICIO 5.

a) Realice un programa que realice las funciones que a continuación se indican.


Todas las opciones deben ser presentadas al usuario a través de un menú de
opciones.

● Escriba una función en la que se introduzcan 10 enteros y determine cuáles de


estos enteros son pares y cuales son impares.
● Un número entero es un “número perfecto” si sus factores, incluyendo al 1
(pero excluyendo en el número mismo), suman igual que el número. Ejemplo:
6 es un numero perfecto porque 6= 1+2+3. Escriba una función que regrese los
primeros 100 números perfectos. Esta función debe tener una función anidada
que determine al número perfecto.
● Escriba una función que tome un valor entero de cuatro dígitos y regrese el
número con los dígitos invertidos. Por ejemplo, dado el número 7631, la
función deberá regresar 1367.

Magister Oscar Alberto Ramirez Valdez


Magister Roni Guillermo Apaza Aceituno
25
Curso: Programación de Sistemas Página:

Magister Oscar Alberto Ramirez Valdez


Magister Roni Guillermo Apaza Aceituno
26
Curso: Programación de Sistemas Página:

● EJERCICIO 6.

Escriba un programa que despliegue todas las permutaciones de los números del 1 a n.
Por ejemplo, si n = 3, debe obtenerse:

Magister Oscar Alberto Ramirez Valdez


Magister Roni Guillermo Apaza Aceituno
27
Curso: Programación de Sistemas Página:

● EJERCICIO 7.

Escriba un programa que despliegue todos los subconjuntos no vacíos del conjunto de
los números del 1 a n. Por ejemplo, si n = 3, debe obtenerse

Magister Oscar Alberto Ramirez Valdez


Magister Roni Guillermo Apaza Aceituno
28
Curso: Programación de Sistemas Página:

Magister Oscar Alberto Ramirez Valdez


Magister Roni Guillermo Apaza Aceituno
29
Curso: Programación de Sistemas Página:

VII
CUESTIONARIO
¿Para que se emplea el término return?

Una instrucción return termina la ejecución de una función y devuelve el control a la


función de llamada. La ejecución se reanuda en la función de llamada, en el punto que
sigue inmediatamente a la llamada.

¿Para que se emplea el término include?

Antes del proceso de compilación, el preprocesador es llamado primero a ejecutarse y


buscar llamadas de instrucción al pre-procesador, la instrucción include le indica al
preprocesador que cuando este se ejecute, el compilador debe incluir un archivo en el
código.

VIII
BIBLIOGRAFÍA
[1] P.J. Deitel and H.M. Deitel, “Cómo Programar en C++”, México, Ed. Pearson
Educación, 2009

Magister Oscar Alberto Ramirez Valdez


Magister Roni Guillermo Apaza Aceituno
30
Curso: Programación de Sistemas Página:

[2] B. Stroustrup, “El Lenguaje de Programación C++”, Madrid, Adisson Pearson


Educación, 2002
[3] B. Eckel, “Thinking in C++”, Prentice Hall, 2000

Magister Oscar Alberto Ramirez Valdez


Magister Roni Guillermo Apaza Aceituno

También podría gustarte