Web viewEscribir "El cubo del numero ",number, " es ",cubo(number ... Se dice que un número...

16
Tema 5: Funciones o SubProcesos 1. Generalidades: Se han venido tratando los problemas como un todo, como si fuesen un solo módulo. Una de las grandes ventajas que tiene la programación estructurada es la división de problemas grandes en subproblemas y, a su vez, éstos también pueden dividirse en problemas más pequeños. Esta técnica le permite dar más entendibilidad y facilidad en la construcción y corrección de los errores que se presentan en la solución de un problema determinado. Cada una de las divisiones que se hacen para obtener la solución de un problema se denomina módulo y éstos son implementados por medio de los subprocesos. Un subproceso es un algoritmo diseñado para efectuar una tarea particular, bajo la dependencia de un algoritmo u otro subproceso que lo utiliza. De esta manera, el subproceso es diseñado para ser utilizado por otros procesos más amplios, dentro de los cuales existe un flujo de recibo y entrega de información. La utilización de subprocesos en la solución de problemas grandes tiene muchas ventajas. Por ejemplo, para tareas que deban efectuarse más de una vez, la modularidad evita la necesidad de programación redundante, esencialmente el mismo conjunto de instrucciones; en vez de ello, un módulo puede construirse e invocarse cada vez que se necesite hacer la misma labor, por lo tanto, el uso de módulos permite o hace que los programas sean más cortos. De igual manera, la fragmentación en módulos individuales proporciona claridad, facilidad de distribución de trabajo en equipo y, por ser algoritmos cortos, son más fáciles de escribir, corregir y su estructura lógica es más clara que la de los programas que no están divididos en módulos. El subproceso, por ser un algoritmo, debe cumplir con las mismas características de éste y hacer tareas similares como aceptar datos, escribir datos y hacer cálculos; sin embargo, es utilizado para un propósito

Transcript of Web viewEscribir "El cubo del numero ",number, " es ",cubo(number ... Se dice que un número...

Page 1: Web viewEscribir "El cubo del numero ",number, " es ",cubo(number ... Se dice que un número es considerado perfecto si la suma de sus divisores excepto el

Tema 5: Funciones o SubProcesos1. Generalidades:

Se han venido tratando los problemas como un todo, como si fuesen un solo módulo. Una de las grandes ventajas que tiene la programación estructurada es la división de problemas grandes en subproblemas y, a su vez, éstos también pueden dividirse en problemas más pequeños. Esta técnica le permite dar más entendibilidad y facilidad en la construcción y corrección de los errores que se presentan en la solución de un problema determinado. Cada una de las divisiones que se hacen para obtener la solución de un problema se denomina módulo y éstos son implementados por medio de los subprocesos.

Un subproceso es un algoritmo diseñado para efectuar una tarea particular, bajo la dependencia de un algoritmo u otro subproceso que lo utiliza. De esta manera, el subproceso es diseñado para ser utilizado por otros procesos más amplios, dentro de los cuales existe un flujo de recibo y entrega de información.

La utilización de subprocesos en la solución de problemas grandes tiene muchas ventajas. Por ejemplo, para tareas que deban efectuarse más de una vez, la modularidad evita la necesidad de programación redundante, esencialmente el mismo conjunto de instrucciones; en vez de ello, un módulo puede construirse e invocarse cada vez que se necesite hacer la misma labor, por lo tanto, el uso de módulos permite o hace que los programas sean más cortos. De igual manera, la fragmentación en módulos individuales proporciona claridad, facilidad de distribución de trabajo en equipo y, por ser algoritmos cortos, son más fáciles de escribir, corregir y su estructura lógica es más clara que la de los programas que no están divididos en módulos.

El subproceso, por ser un algoritmo, debe cumplir con las mismas características de éste y hacer tareas similares como aceptar datos, escribir datos y hacer cálculos; sin embargo, es utilizado para un propósito específico. El subproceso recibe datos del algoritmo o sub algoritmo que lo invoca y éste le devuelve resultados. Cuando un algoritmo invoca un subprograma le cede el control de ejecución a éste, por lo tanto, detiene la ejecución de la próxima instrucción hasta que el subprograma se ejecute, le entregue resultados y le devuelva el control de ejecución.

Un subproceso puede ser invocado tantas veces como se necesite y, a su vez, los subprocesos pueden invocar a otros subprocesos.

Sintaxis de Subproceso

SubProceso variable_de_retorno<-NombreFunción (Argumentos [por valor] [por referencia] )

FinSubProceso

Page 2: Web viewEscribir "El cubo del numero ",number, " es ",cubo(number ... Se dice que un número es considerado perfecto si la suma de sus divisores excepto el

Existen variantes para esta estructura. Opcionalmente pueden agregarse las palabras claves “Por Valor” ó “Por Referencia” para indicar el tipo de pasaje en cada argumento.

Si la función no retorna ningún valor, pueden omitirse el identificador variable_de_retorno y el signo de asignación, es decir, colocar directamente el nombre y los avrgumentos a continuación de la palabra clave SubProceso.

Así:SubProceso Nombre (Argumentos [por valor] [por referencia])

FinSubProceso

Si el subproceso no recibe ningún valor pueden colocarse los paréntesis vacios u omitirse, finalizando la primer línea con el nombre del subproceso. Las reglas para los nombres de subprocesos, variables de retorno y argumentos son las mismas que para cualquier identificador en pseudocódigo.

Se acostumbrará a colocar los paréntesis vacíos.Así:SubProceso Nombre ()

FinSubProceso

1.1. Argumentos por referencia

Esto quiere decir que si el subproceso modifica el argumento, se modificará en realidad la variable que se utilizó en la llamada.

SubProceso Intercambiar(dato1 por referencia,dato2 Por Referencia)Definir auxiliar como entero;auxiliar<-dato1;dato1<-dato2;dato2<-auxiliar;

FinSubProceso

1.2. Argumentos por valor

Implica que el subproceso opera con una copia de la variable (o el resultado de la expresión) que se utilizó en la llamada, por lo que las modificaciones que aplique el subproceso no se verán reflejadas fuera de la misma.

SubProceso Intercambiar(dato1 Por Valor,dato2 Por Valor)Definir auxiliar como entero;auxiliar<-dato1;dato1<-dato2;dato2<-auxiliar;

FinSubProceso

1.3. Llamada al subproceso

Page 3: Web viewEscribir "El cubo del numero ",number, " es ",cubo(number ... Se dice que un número es considerado perfecto si la suma de sus divisores excepto el

Para invocar a un subproceso se debe utilizar su nombre y entre paréntesis los parámetros, que podrán ser expresiones sólo si el tipo de pasaje es por referencia. Una llamada puede ser en sí una instrucción, pero si la función retorna algún valor, también puede utilizarse como operando dentro de una expresión.

Ejemplo de Salida:

Proceso intercambio_referenciaDefinir var1,var2 Como Entero;Escribir "Numero 1:";Leer var1;Escribir "Numero 2:";Leer var2;Escribir "Antes de llamar a la funcion Intercambiar";Escribir "var1=",var1," var2=",var2;Escribir " ";Escribir "Despues de llamar a la funcion Intercambiar";Intercambiar(var1,var2);Escribir "var1=",var1," var2=",var2;

FinProceso

SubProceso Intercambiar(dato1 por Referencia,dato2 Por Referencia)Definir auxiliar como entero;auxiliar<-dato1;dato1<-dato2;dato2<-auxiliar;

FinSubProceso

Page 4: Web viewEscribir "El cubo del numero ",number, " es ",cubo(number ... Se dice que un número es considerado perfecto si la suma de sus divisores excepto el

2. Ejemplos resueltos de funciones o subprocesos

Ejemplo No.1: Pseudocódigo que calcula la potencia de un número entero N, implementando funciones.

Datos: N (Número entero del cual se va a calcular la potencia).

Solución Pseudocódigo:

Solución Diagrama de Flujo Función:

Solución Diagrama de Flujo Proceso:

SubProceso resultado <- Potencia (base, exponente) Definir resultado,pot como Entero;

resultado<-1; Si exponente=0 Entonces resultado<-1; Sino Para pot<-1 Hasta exponente Con paso 1 Hacer

resultado<-resultado*base; FinPara FinSiFinSubProceso

Proceso PotenciaProceso Definir exponente como Entero; Definir base como Entero; Escribir "Ingrese Base"; Leer base; Escribir "Ingrese Exponente"; Leer exponente; Escribir "El resultado es: ",Potencia(base,exponente);FinProceso

Page 5: Web viewEscribir "El cubo del numero ",number, " es ",cubo(number ... Se dice que un número es considerado perfecto si la suma de sus divisores excepto el

Ejemplo No.2: Pseudocódigo que calcula el cubo de los números desde 1 hasta N utilizando una función definida por el usuario.

Datos: N (Número entero que indica el valor límite para calcular el cubo).

Solución Pseudocódigo:

Solución Diagrama de Flujo Función:

//Definición de la función cubo Funcion cubores<-cubo(base Por Valor)

Definir cubores Como Entero; cubores = base*base*base;

FinFuncion

Proceso cubofnDefinir number,limite Como Entero; Escribir "Cubo de los numeros de 1..."; Leer limite; Para number<-1 Hasta limite Con paso 1 Hacer

Escribir "El cubo del numero ",number, " es ",cubo(number); FinPara

FinProceso

Page 6: Web viewEscribir "El cubo del numero ",number, " es ",cubo(number ... Se dice que un número es considerado perfecto si la suma de sus divisores excepto el

Solución Diagrama de Flujo Proceso:

Ejemplo No.3: Realizar un pseudocódigo que defina una función llamada par, que toma un número entero N como parámetro, y devuelve 1 si es par o devuelve 0 si es impar.

Dato: N (Número entero que el usuario ingresará para determinar si es par o impar).

Page 7: Web viewEscribir "El cubo del numero ",number, " es ",cubo(number ... Se dice que un número es considerado perfecto si la suma de sus divisores excepto el

Solución Pseudocódigo:

Solución Diagrama de Flujo Función:

Solución Diagrama de Flujo Proceso:

Funcion res<-parimpar(number Por Valor) Definir res como entero;Si number%2 =0 Entonces

res<-1; Sino

res<-0; FinSi

FinFuncion

Proceso ParImparFnDefinir number,resultado Como Entero; Escribir "Introduzca un número: "; Leer number; //Llamada a la función par resultado<-parimpar(number); Si resultado=1 Entonces

Escribir number," Es PAR"; Sino

Escribir number," Es IMPAR"; Finsi

FinProceso

Page 8: Web viewEscribir "El cubo del numero ",number, " es ",cubo(number ... Se dice que un número es considerado perfecto si la suma de sus divisores excepto el

Ejemplo No.4: Se dice que un número es considerado perfecto si la suma de sus divisores excepto el mismo, es igual al propio número. Escriba un pseudocódigo que obtenga e imprima todos los números perfectos comprendidos entre 1 y N.

Dato: N (variable de tipo entero que representa el número entero positivo que se ingresa).

Solución Pseudocódigo:Funcion Perfecto(numdatos)

Definir i,sum,j como entero;Para i<-1 Hasta numdatos Hacer

sum<-0;Para j<-1 Hasta i/2 Hacer

Si i%j=0 Entoncessum<-sum+j;

FinSiFinPara

Si sum = i EntoncesEscribir i," es un numero perfecto";

FinsiFinPara

FinFuncion

Proceso NumeroPerfectoDefinir num Como Entero; Escribir sin saltar "Calcular desde 1...";Leer num;Perfecto(num);

FinProceso

Page 9: Web viewEscribir "El cubo del numero ",number, " es ",cubo(number ... Se dice que un número es considerado perfecto si la suma de sus divisores excepto el

Solución Diagrama de Flujo Función:

Solución Diagrama de Flujo Proceso:

Page 10: Web viewEscribir "El cubo del numero ",number, " es ",cubo(number ... Se dice que un número es considerado perfecto si la suma de sus divisores excepto el

Ejemplo No.5: Realizar un pseudocódigo que defina una función llamada media, que toma dos números reales como parámetros, y devuelve un número que representa la media de los dos números pasados como parámetros.

Dato: n1,n2 (variables de tipo entero que representan los dos números enteros positivo que se ingresan).

Solución Pseudocódigo:

Solución Diagrama de Flujo Función:

// Función media: Devuelve la media de 2 números realesSubProceso result<-media(n1 por Valor,n2 por Valor)

Definir result como real; result=(n1+n2)/2;

FinSubProceso

Proceso medianumerosDefinir n1,n2, resultado Como Real; Escribir "Numero 1: "; Leer n1; Escribir "Numero 2: "; leer n2; resultado=media(n1,n2); Escribir "La media es: ",resultado;

FinProceso

Page 11: Web viewEscribir "El cubo del numero ",number, " es ",cubo(number ... Se dice que un número es considerado perfecto si la suma de sus divisores excepto el

Solución Diagrama de Flujo Proceso:

Ejemplo No.6: Pseudocódigo que define una función llamada factorial, la cual recibirá como parámetro un número entero positivo e imprime su factorial.

Dato: N (variable de tipo entero que representa el número entero positivo que se ingresa).

Solución Pseudocódigo:Funcion fact<-Factorial(Num Por Valor)

Definir fact,f Como Entero;Si Num=1 | Num =0 Entonces

fact<-1;Sino

fact<-1;Para f<-1 Hasta Num Con Paso 1 Hacer

fact<-fact*f;FinPara

FinSiFinFuncion

Proceso MiFuncionFactorialDefinir Num,fac Como Entero;Escribir Sin Saltar "Numero:"," ";Leer Num;fac<-Factorial(Num);Escribir "!",Num," = ",fac;

FinProceso

Page 12: Web viewEscribir "El cubo del numero ",number, " es ",cubo(number ... Se dice que un número es considerado perfecto si la suma de sus divisores excepto el

Solución Diagrama de Flujo Función:

Solución Diagrama de Flujo Proceso:

Page 13: Web viewEscribir "El cubo del numero ",number, " es ",cubo(number ... Se dice que un número es considerado perfecto si la suma de sus divisores excepto el

Ejercicios Propuestos:

1. Escribe un pseudocódigo que, al recibir como dato un número entero positivo, determine el mayor divisor de dicho número.Dato: NUM (variable de tipo entero que representa el número que se ingresa).

2. Escribe un pseudocódigo que, al recibir como datos dos números enteros, determine si el segundo número es múltiplo del primero.Datos: NU1, NU2 (variables de tipo entero que representan los números que se ingresan).

3. Escribe un pseudocódigo que, al recibir como datos N números enteros, determine cuántos de estos números son pares y cuántos impares. Datos: N, NUM1, NUM2,..., NUMN

Donde: N es una variable de tipo entero que representa el número de

datos que se ingresan. NUMi es una variable de tipo entero que representa al número

(1≤ i ≥ N).