TALLER 2: PROGRAMACIÓN DE COMPUTADORES
RONAL JOSE BOLIVAR MENDOZA
PROGRAMA: INGENIERIA INDUSTRIAL
UNIVERSIDAD: ANTONIO NARIÑO
FECHA: 06-05-2021
SEDE RIOHACHA -LA GUAJIRA
2021
1. Defina brevemente los siguientes términos, en el contexto de C++:
Función: son un conjunto de procedimientos encapsulados en un bloque,
usualmente reciben parámetros, cuyos valores utilizan para efectuar
operaciones y adicionalmente retornan un valor.
Parámetro: son variables locales a los que se les asigna un valor antes de
comenzar la ejecución del cuerpo de una función.
Variable local: es la cual se define en el interior de una función.
Variable global: es aquella que se define fuera del cuerpo de cualquier
función,
Programación estructurada: es un conjunto de técnicas de programación
y desarrollo de algoritmos donde una serie de funcionalidades son
divididas e implementadas en paquetes de código generalmente
reutilizable llamados funciones.
Paso por valor: Cuando un parámetro es pasado por valor se crear una
copia local de los valores enviados como parámetros.
Paso por referencia: es cuando un parámetro es pasado por referencia se
maneja directamente la variable original, es decir se comparte una
referencia a su dirección de memoria actual, por ello cualquier cambio
realizado dentro de la función al parámetro se verá reflejado en la variable
original.
Prototipo o encabezado de función: es la declaración de una función
que incluye su valor de retorno, su nombre (identificador) y su lista de
parámetros formales con tipo.
Sobrecarga de funciones: es cuando dos o más funciones pueden
compartir el mismo nombre, siempre y cuando sus declaraciones de
parámetros sean diferentes.
Llamado o invocación de una función: La invocación de funciones se
realiza colocando el nombre de la función y los argumentos actuales en el
mismo orden que los parámetros formales correspondientes.
Funciones recursivas: Una función recursiva es una función que se llama
a sí misma. Esto es, dentro del cuerpo de la función se incluyen llamadas a
la propia función.
2. Responda verdadero (V) o falso (F) a cada una de las siguientes afirmaciones
según corresponda:
a. Una función puede retornar más de un valor (F ).
b. Una variable local puede ser accedida desde cualquier lugar del programa (F ).
c. El tipo void significa vacío e indica que una función no retorna ningún valor (V ).
d. Es posible crear una variable de tipo void (F ).
e. Cuando se pasa un parámetro por referencia se pasa una referencia que apunta
a la
misma dirección de memoria que la variable pasada como parámetro por ello si se
modifica el parámetro dentro de la función este cambio se ve reflejado en la
variable
original (V).
f. Cuando se pasa un parámetro por valor se crea una copia del valor en otra
dirección
de memoria por ello cualquier cambio del parámetro dentro de la función no afecta
a
la variable original (V ).
g. Podemos tener dos funciones con el mismo nombre pero con diferente número
y tipo
de parámetros (V ).
3. Cada una de las siguientes líneas es el prototipo o encabezado de una función.
Explique el significado de cada una:
a) float f(float a, float b); el tipo de datos que retorna la función será flotante con el
nombre f los valores de la función tipo flotante.
b) long f(long a);
c) void f(int a); Una función que no retorna valores con nombre f con datos de
entrada tipo entero
d) char f(); Una función tipo carácter de nombre f con sin valores de entrada.
4. Escribir y probar una función que calcule y presente las raíces reales de la
ecuación de segundo grado:ax^2 + bx + c = 0 utilizando la siguiente fórmula:
𝑥=
−𝑏± 𝑏
2−4𝑎𝑐
2𝑎
Suponga que a, b y c son parámetros en coma flotante con valores dados y que
las raíces a
mostrar x1 y x2 son variables en coma flotante. Validar que b^2=>(4 *a *c) para
garantizar
que las raíces sean siempre reales.
Pista puede utilizar la función sqrt de la librería math.h.
R//
float raíz (float a, float b, float c)
{
float R;
float B;
float x1, x2;
R=a*4*c;
B=b*b;
if(B>R) {
x1=(-b+sqrt(B-R))/(2*a);
x2=(-b-sqrt(B-R))/(2*a);
cout<<"Las raíces reales de la ecuación de grado 2 son: "<<x1<<" y "<<x2;
}
else {
cout<<"La ecuación NO tiene raíces reales ";
5. Cree un programa que calcule el máximo común divisor (M.C.D.) de dos
números enteros positivos.
Pista: Puede utilizar el algoritmo de Euclides que consiste en ir restando el menor
de los dos números del mayor hasta que queden dos números iguales, que serán
el máximo común divisor de los números originales. Por ejemplo, si deseamos
hallar el MCD de los números, tendríamos los siguientes pasos:
412 y 184,
412 184
228 184
44 140
44 96
44 52
44 8
36 8
28 8
20 8
12 8
84
44
Es decir que el MCD (415, 184) = 4
R//
//MCD
#include <iostream>
using namespace std;
int MCD (int a, int b);
int main (int argc, char **argv)
{
int entero;
int a,b;
cout<<"Máximo común divisor en dos números"<<endl;
cout<<"Por favor introduzca un entero positivo: ";
cin>>a; // ingresa el valor de usuario
cout<<"Por favor introduzca un entero positivo: ";
cin>>b;
cout<<"El máximo común divisor de "<<a<<" y "<<b<<" es " <<MCD(a,b);
return 0;
}
int MCD (int a,int b){
int r=0;
if (b== 0 ){ // paso base
return a;
}
else {
r=a%b;
a=b;
b=r;
}
MCD(a,b);
}