Вы находитесь на странице: 1из 7

Universidad de pamplona

RPOGRAMACION 1
Laboratorio de programación
taller final

Andrés Felipe Castellanos (1098710512)


Sebastián Contreras
1.Realice un programa que calcule el factorial de un numero.

#include <iostream>
using namespace std;
int main()
{
int n,i;
long double factorial; //
cout << "Introduce un numero: ";
cin >> n;
factorial=1;
for(i=1;i<=n;i++)
factorial = factorial * i;
cout << endl << "Factorial de " << n << " -> " << factorial << endl;
system("pause");
}

2.Exporte el programa a c++ complie el programa y ejecútelo

adjunto a este archivo se encuentra el archivo en c++

3.Modifique el programa del punto anterior y calcule el factorial del numero utilizando
una función

#include<stdio.h>
#include<conio.h>
int main()
{
int fac=0;
printf("Ingresa numero para calcular el factorial ");
scanf("%d",&fac);
int temp=fac-1;
int r=fac;
while (temp>=1)
{
r=r*temp;
temp--;
}

printf("El factorial de %d es: %d ", fac,r);


getch();
}

#include
#include
void main(){
int cont,i,num;
printf("Valor: ");
scanf("%d",&num);

i=num;
cont=1;
num=1;
do
{
num=num*cont;
cont++;
}
while(cont<=i);
printf("Factorial de %d = %d",i,num);
}

4.calcule el factorial de un numero utilizando una función recursiva

#include
using namespace std;
int factorial(int n) {
if(n < 0) return 0;
else if(n > 1) return n*factorial(n-1);
return 1;
}
int main(void) {
int numero;
cout<<"ingresa un numero: ";
cin>>numero;
cout<<"Factorial de "<;
}

5.Realice un procedimiento que reciba un numero y lo imprima


CREATE OR REPLACE PROCEDURE ingresar numero
(num1 NUMBER,
num2 NUMBER)
IS
suma NUMBER(6);
BEGIN
suma := num1 + num2;
DBMS_OUTPUT.PUT_LINE('Suma: '|| suma);
END sumar_numeros;

6.Realice un procedimiento que llame la a función factorial e imprima el resultado

#include <stdio.h>
int factorial(int n);
int factorial(int n)
{
int i, /
producto = 1;
/* Calcula el producto n*(n-1)*(n-2)*...*2*1 */ for (i=n; i>1; --i){
producto *= i;
}

return (producto);
}
int main(void)
{
int num, fact;
printf("Dar un entero entre 0 y 10> ");
scanf("%d", &num);
if (num < 0) {
printf("El factorial de un numero negativo (%d) es indefinido\n", num); }
else if (num <= 30) {
fact = factorial(num);
printf("El factorial de %d es %d\n", num, fact);
}
else {
printf("Numero fuera de rango: %d\n", num); }
return (0); }
8. En INGENIERIA QUIMICA se utilizó el diseño factorial de experimentos para la preparación
de partículas de quitosano cargadas con la hormona vegetal ácido 1,3-indolacético (AIA) y
posteriormente estudiar la liberación controlada en agua. Las partículas de quitosano
cargadas se prepararon disolviendo la hormona y el quitosano en ácido acético haciéndose
gotear luego en solución de NaOH con agitación constante. Se utilizó el Diseño Factorial 23
cuyos factores a estudiar fueron: la concentración de quitosano (% quitosano), tiempo de
gelación en NaOH (tiempo en NaOH) y concentración de tripolifosfato de sodio (TPP) (% de
TPP). Como respuesta se obtuvo la cantidad de hormona liberada en dos horas, medida
espectrofotométricamente a 285 nm. Los resultados del diseño experimental indicaron que
los tres factores influyen en la cantidad liberada de AIA en dos horas, en donde a mayor
concentración de quitosano aumenta la velocidad de liberación, mientras que a mayor
concentración de TPP y mayor tiempo de gelación en NaOH disminuye la velocidad de
liberación.

9 Realice un paralelo entre

función y prodecimiento
parámetros por valor y parámetros por referencia
variables locales y variales globales

las semejanzas

 Ambos tipos de subrutinas son definidas por el usuario (el programador)


 Ambos tipos pueden definirse para que acepten argumentos (parámetros)
 Ambos tipos pueden invocarse de diversas formas para su ejecución y desde varios
puntos dentro del programa principal
 Ambos tipos pueden retornar resultados al punto de llamada
 Ambos tipos pueden agruparse en librerias de subrutinas que otros programas
pueden incluir

Las diferencias

Las funciones sólo pueden retornar un único valor, los procedimientos más de uno.
Aunque esto es lo que establece la teoría, en la práctica puede hacerse que las funciones
devuelvan más de un valor mediante el paso de punteros como parámetros por valor, cada
uno de los cuales puede apuntar a la dirección de memoria inicial de una estructura de
datos compleja, tal como un arreglo o un registro. Puesto que en la mayoría de los lenguajes
solamente se permite devolverse un único valor (el especificado en la
declaración/definición de la función) este truco permite al programador mayor versatilidad
sin violentar las reglas sintácticas del lenguaje mismo. Otra manera de saltarse esta
limitante es empleando variables globales, aunque se aconseja documentar bien cada
instrucción donde se utilicen así como mantenerlas bajo estricta supervisión para evitar
efectos colaterales.
Las funciones sólo aceptan parámetros de entrada. Los procedimientos aceptan tanto
parámetros de entrada como de entrada/salida.
Esta diferencia es fundamental y se relaciona con la anterior. Le confiere a los
procedimientos más generalidad y versatilidad, como se menciona en la siguiente
diferencia.

Los procedimientos pueden contener otras subrutinas. Las funciones no.


Un procedimiento puede incluir todas aquellas funciones que necesite para realizar su(s)
tarea(s), así como otros procedimientos. En la programación orientada a objetos, esta
característica facilita la encapsulación, uno de los conceptos claves de esta filosofía de
programación. De este modo, un procedimiento puede convertirse en un módulo, el cual
puede contener hasta sus propios almacenes de datos y funcione de manera independiente
dentro de la estructura de un programa.

Los procedimientos son autónomos. Las funciones no.


Una función solo puede llamarse a ejecución al incluirse como parte de una sentencia o
como argumento para otra función. Es decir, ella sola no puede constituirse como una
sentencia independiente. Los procedimientos por su parte, aunque pueden comportarse de
forma similar a las funciones en algunos casos, pueden constituir una sentencia
independiente por sí solos. Los siguientes ejemplos en Pascal ayudará a comprender este
punto.

Una función debe especificar el tipo de dato a devolver. Los procedimientos no.
Al declarar/definir una función es obligatorio incluir el tipo de dato que dicha función
devolverá a su punto de llamada. Esto es muy importante, puesto que la variable, función
o expresión que reciba el valor devuelto por la función llamada deberá ser capaz de manejar
el tipo de datos que esta última produzca. En caso contrario se obtendrá el típico error
"Type mismatch" (Tipos no concuerdan) en tiempo de compilación o ejecución.

El tipo de dato de la variable receptora, el de los componentes involucrados en la expresión,


o el del argumento que está sustituyendo la función llamada, no tienen que ser
necesariamente del mismo tipo. Pueden ser superiores en rango dentro, siempre dentro de
la misma categoría. Por ejemplo, una variable REAL de Pascal puede aceptar un
valor INTEGER o BYTE; en C una variable double puede acoger un valor long o float.

Las funciones se destinan para realizar una única tarea. Los procedimientos para más de
una.
Esta restricción está orientada más para favorecer el estilo y mantener simple el diseño de
los programas. El asegurar que una función realice una única cosa favorece además la
depuración y el mantenimiento. En la práctica puede hacerse que una función haga más de
una cosa, pero no se recomienda por las ventajas antes mencionadas. Los procedimientos,
por otro lado, puesto que son más generales y pueden devolver más de un valor a su punto
de llamada a través de los parámetros de entrada/salida (parámetros por variable en Pascal)
a menudo se les recarga con más de una tarea.

Las funciones deben ser cortas. Los procedimientos suelen ser largos.
Dado que las funciones se utilizan para tareas específicas y puntuales, éstas suelen ser
cortas. Las buenas prácticas de programación recomiendan que una función no sobrepase
las dos pantallas de texto a fin de que pueda ser manejable y se mantenga simple. Más allá
de esta medida debe considerarse su fragmentación en dos o más subfunciones. Los
procedimientos en cambio, puesto que podrían incorporar otras funciones y
procedimientos y actuar como módulos o clases dentro de un programa, suelen extenderse
varias páginas. Sin embargo, más allá de 10 suele llevar a considerar seriamente su
fragmentación o refactorización a fin de mejorar el diseño y favorecer la depuración y el
mantenimiento.

B. Parametros por valor y parámetros por referencia

Cuando es por valor, la información de la variable se almacenan en una dirección de


memoria diferente al recibirla en la funcion, por lo tanto si el valor de esa variable cambia
no afecta la variable original, solo se modifica dentro del contexto de la función.

Cuando es por referencia, la variable que se recibe como parámetro en la función


apunta exactamente a la misma dirección de memoria que la variable original por lo que
si dentro de la función se modifica su valor también se modifica la variable original.

C. diferencia entre variables locales y globales

La diferencia entre variables locales y globales


La única diferencia entre una variable local y una global es su ámbito de acción.

Variable local: es aquella que sólo es utilizable dentro del código de la función.
Variable global: es aquella cuyo ámbito es todo el programa, incluso dentro de una
función.
Dicho de otro modo:
Una variable declarada dentro de una función es una variable de tipo local que sólo
existe dentro del contexto de la función. Por contrapartida, una variable global tiene un
ámbito de todo el programa (incluso dentro de las funciones). Esto quedará claro con
este ejemplo:

function calculaIVA(val1, valIva){


var iParcial = val1 * valIva / 100; // calcula 320
document.write ("Valor del IVA ", iParcial); // imprime 320
}
var iTotal= 2000;
var iParcial = 0; // Es Global

document.write("Precio sin IVA es ", iTotal, "<BR />"); // imprime 2000


calculaIVA(iTotal, 16);
document.write("Precio con IVA es ", iTotal + iParcial, "<BR />"); // imprime 2000!!!

En este ejemplo queda claro que la variable iParcial (local) y la variable iParcial (global)
son dos variables diferentes.
La función actualiza la variable local y esto produce que la suma iTotal + iParcial no
diese el valor correcto (2320).

Вам также может понравиться