SlideShare a Scribd company logo
1 of 17
Download to read offline
Pág. 1
Algoritmica I- Modularidad
Modularidad
DEFINICIÓN
La Modularidad es la sub división de un algoritmo, o programa en partes más
pequeñas, llamadas módulos, cada una de las cuales debe ser lo más
independiente posible de la aplicación principal y de las restantes partes. La
programación modular es una de las técnicas fundamentales de la
programación. Se apoya en el diseño descendente y en la filosofía de “divide y
vencerás”, es decir se trata de dividir el problema dado, en problemas más
simples en que cada uno de los cuales lo implementaremos en un módulo
independiente.
Gráfico 01. Esquema de modularidad
Siempre existirá un módulo o programa principal que es con el que comienza
la ejecución de todo el programa, y a partir de él iremos llamando al resto.
Cada vez que se llama a un subprograma se le pasa la información que necesita
en la llamada, a continuación comienza a ejecutarse el subprograma llamado, y
cuando termine su ejecución, devuelve el control a la siguiente instrucción a la
de llamada en el programa que lo llamó. Así cabe mencionar que los módulos
también se les conoce como, sub algoritmos, subprogramas y sub subrutinas.
Pág. 2
Ecler Mamani Vilca
A nivel general podemos clasificar en dos:
• Procedimientos
• Funciones
Diferencias entre procedimientos y funciones
Estos subprogramas son similares aunque presentan diferencias entre ellos:
1. Las funciones devuelven un sólo valor al algoritmo principal. Los
procedimientos pueden devolver cero, uno o más valores.
2. A un nombre de procedimiento no se puede asignar un valor y por
consiguiente ningún tipo está asociado con un nombre de
procedimiento.
3. Una función se referencia utilizando su nombre en una expresión,
mientras que un procedimiento se referencia por una llamada o
invocación al mismo
Argumentos
Un argumento representa el valor que se transfiere a un parámetro del
procedimiento cuando se llama al procedimiento. El código de llamada
proporciona los argumentos cuando llama al procedimiento.
Cuando se llama al procedimiento Function o Sub, se incluye una lista de
argumentos entre paréntesis que van inmediatamente después del nombre del
procedimiento. A diferencia de la definición de parámetros, los argumentos no
tienen nombres. Cada argumento es una expresión que puede contener cero o
más variables, constantes y literales. El tipo de datos de la expresión evaluada
normalmente debe coincidir con el tipo de datos definido para el parámetro
correspondiente, y en algún caso, debe poder convertirse al tipo del parámetro.
Parámetros
Un parámetro representa un valor que el procedimiento espera que se transfiera
cuando es llamado. La declaración del procedimiento define sus parámetros.
El nombre de cada parámetro actúa como una variable local dentro del
procedimiento. El nombre del parámetro se utiliza del mismo modo que
cualquier otra variable.
Pág. 3
Algoritmica I- Modularidad
PROCEDIMIENTO
Un procedimiento es un subprograma o un sub algoritmo que ejecuta una
determinada tarea, pero que tras ejecutar no necesariamente debe devolver un
valor aun cuando tengan argumentos. En realidad los argumentos son
parámetros (variables) de entrada cuando ejecutas un programa. En Python y
C++ los procedimientos son funciones sin parámetros de retorno. El uso de
las variables de en un procedimiento son como locales y la estructura del
programa similar al del programa principal.
Algoritmo Python C++
//Procedimiento
Sub nombre_modulo( )
//procesos
FinSub
#Procedimiento
nombre_modulo( ):
#procesos
//Procedimiento
nombre_modulo( ){
//procesos
}
//Programa principal
Inicio
//llamando al modulo
nombre_modulo( )
Fin
#Programa principal
//llamando al modulo
nombre_modulo( )
//Programa principal
main( ) {
//llamando al modulo
nombre_modulo( );
}
a) Procedimientos sin argumentos
Son aquellas que no reciben argumentos de entrada al módulo.
Ejemplo 01. Crear dos módulos, el primero que escriba una etiqueta y
para el segundo que permita calcular un número al cuadrado.
a) Análisis del problema
El cuadrado es: Cuad Num * Num
Declaración de variables y argumentos
Programa principal
Invocación a etiqueta ( ), cuadrado ( )
Sub Programa Etiqueta ( )
Variable de Salida: Texto
Sub Programa cuadrado ( )
Variable de Entrada: Numerico real : Num
Variable de Salida: Numerico real : Cuad
Pág. 4
Ecler Mamani Vilca
b) Algoritmo
c) Codificación
En Pseudocódigo
// Ejem. 01. Procedimiento sin argumentos
Sub etiqueta ( )
Escribir “======================”
Escribir “ Procedimiento sin Argumentos”
Escribir “======================”
Fin
Sub cuadrado ( )
Escribir “Ingrese un Número”
Leer Num
Cuad Num * Num
Escribir “ El cuadrado es ”, Cuad
Fin
//Programa principal
Inicio
etiqueta ( ) //Invoca al modulo
cuadrado ( ) //Invoca al modulo
Fin
En Phyton
# Ejem. 0. Procedimiento sin argumentos
def etiqueta():
print "======================="
print " Procedimiento sin argumentos"
print "======================="
def cuadrado( ):
print "Ingrese numero"
n = float(raw_input())
cuad = n * n
print n," al cuadrado es ",cuad
#Programa principal en Python
etiqueta() #Invoca al modulo
cuadrado()#Invoca al modulo
Pág. 5
Algoritmica I- Modularidad
b) Procedimientos con argumentos
Son aquellas que reciben argumentos de entrada al módulo mas no
emiten un valor como retorno.
Ejemplo 02. Realizar un procedimiento con argumento que permita generar la
tabla de multiplicar.
a) Análisis del problema
En referencia la ejercicio 02, de la unidad de bucles. Se tiene:
Para i 1 hasta 20 Hacer
prod i * m
Escribir i,” X“, m,”=”,prod
Declaración de variables y argumentos:
Programa principal
Invocación a Tabla (multip)
Variable de Entrada: Numérico entero multip
Sub Programa Tabla ( real m)
Argumento de entrada: Numérico real m
En C++,
void declara una
función que no
tiene valor de
retorno, en los
nuevos
compiladores de
C++ ya no es
necesario
declararlos.
En C++
//Ejem. 01. Procedimiento sin argumentos
#include<conio.h>
#include<iostream.h>
void etiqueta ( ) {
cout<<"====================="<<endl;
cout<<" Procedim. sin argumentos ”<<endl;
cout<<"====================="<<endl;
}
void cuadrado ( ){
//Variable local
float Cuad, Num;
cout<<"Ingrese un Numero ";
cin>>Num;
Cuad=Num * Num;
cout<<"El cuadrado es "<<Cuad;
getch();
}
//Programa principal
main( ){
etiqueta ( ); //Invoca al modulo
cuadrado ( ); //Invoca al modulo
}
Pág. 6
Ecler Mamani Vilca
Algoritmo
d) Codificación
En Pseudocódigo
// Ejemplo de procedimiento con argumentos
//llama el argumento m
Sub tabla (real m )
Para i 1 hasta 20 Hacer
prod i * m
Escribir i,” X“, m,”=”,prod
Fin
//Programa principal
Inicio
Escribir “Ingrese multiplicador”
Leer multip
tabla (multip )
Fin
En Phyton
# Ejem .02 Procedimiento con argumentos
#llama el argumento m
def tabla(m):
for i in range (1,20):
prod = i * m
print i," x ",m," = ",prod
#Programa principal
print "Ingrese multiplicador "
multi = float(raw_input( ))
tabla(multi)
En C++
// Ejem .02 Procedimiento con argumentos
#include<conio.h>
#include<iostream.h>
#llama el argumento m
tabla (float m)
{ int i; float prod;
for (i=1;i<=20;i++){
prod = i*m;
cout<<i<<"x"<<m<<"=" <<prod<<endl;
}
}
//Programa principal
main( ){ float multi;
cout<<"Ingrese multiplicador";
cin >>multi;
tabla(multi);
}
Pág. 7
Algoritmica I- Modularidad
FUNCIÓN
Una función es un módulo de código con un nombre asociado que realiza una
serie de tareas y devuelve un valor. Desde el punto de vista matemático, una
función es una operación que toma uno o a varios operandos, y devuelve un
resultado. Y desde el punto de vista algorítmico, es un subprograma que toma
uno o varios parámetros como entrada y devuelve a la salida un único
resultado. f(p1,p2,...,pn) donde p1, p2, ..., pn son los parámetros y f es el
nombre de la función. Cabe recordar que para el uso de las funciones en
muchas ocasiones es necesario usar variables globales.
Variable global
Una variable global es aquella que se define fuera del cuerpo de cualquier
función. El ámbito de una variable global son todas las funciones que
componen el programa, cualquier función puede acceder a dichas variables
para leer y escribir en ellas. Es decir, se puede hacer referencia a su dirección
de memoria en cualquier lugar del programa.
Variable local
Es aquella cuyo ámbito se restringe a la función que la ha declarado se dice
entonces que la variable es local a esa función. Esto implica que esa variable
sólo va a poder ser manipulada en dicha sección, y no se podrá hacer
referencia fuera de dicha sección.
Un ejemplo en C++, observamos una modificación para “int i” como variable
global y “float prod”, es una variable local.
En C++
//Ejem. tipos de variables
#include<conio.h>
#include<iostream.h>
int i; //Variable global
tabla (float m)
{ float prod; //Variable local
for (i=1;i<=20;i++){
prod = i*m;
cout<<i<<"x"<<m<<"=" <<prod<<endl;
}
getch( );
}
Pág. 8
Ecler Mamani Vilca
Sintaxis:
Algoritmo Python C++
//función
Sub nombre (parametro)
//procesos
Retorna valor
FinSub
//función
nombre(tipo parametro){
//procesos
return valor;
}
#función
nombre(parametro ):
#procesos
return valor
//Programa principal
Inicio
//Ingreso de datos
//llamando al modulo
nombre(parametro )
Fin
//Programa principal
main( ) {
//Ingreso de datos
// Llamando al modulo
nombre(parametro);
}
#Programa principal
#Ingreso de datos
nombre(parametro )
La sentencia return 0, break o exit (0), le permite terminar la ejecución de una
función. Cuando el valor devuelto es diferente de 0, es cuando retorna un
valor, con fines didácticos utilizaremos los ejemplos anteriores.
Ejemplo 03. Realizar una función que genere un número al cuadrado.
a) Análisis del problema
Declaración de variables y argumentos:
Programa principal
Invocación a cuadra (num)
Argumento de entrada: Numérico real num
Sub Programa cuadra ( real )
Argumento de recepción Numérico real n
b) Algoritmo
Pseudocódigo
// Función numero al cuadrado
Sub cuadra (real n)
Retorna n*n
Fin
//Programa principal
Inicio
Escribir “Ingrese un numero”
Leer num
Escribir num,”^ 2 =”,cuadra(num)
Fin
En Phyton
# Función numero al cuadrado
def cuadra(n):
return n*n
#Programa principal
print "Ingrese un numero"
num = float(raw_input())
print num,"^2 =",cuadra(num)
Pág. 9
Algoritmica I- Modularidad
c) Codificación
Función recursiva
La recursividad es una función que se llama así misma generando secuencias
en forma descendente, ya sea directamente o indirectamente. La función
recursiva al principio cuesta un poco entender cuando se está aprendiendo a
programar. No todas las funciones son recursivas son particularidades. Si
hacemos una comparación visual en la parte inferior, observamos que dentro
del monitor mayor se encuentra dentro de un segundo y este último en un
tercer monitor, ha esto podemos denominar una recursividad visual.
La definicion de recursividad algunas veces puedes causar algo de humor,
siempre y cuando se entienda bien, para ejemplo tenemos en un diccionario
cuya definición indica:
En C++
// Función numero al cuadrado
#include<conio.h>
#include<iostream.h>
cuadra (float m){
return m*m;
}
//Programa principal
main( ){ float num;
cout<<"Ingrese un numero ";
cin>>num;
//imprime directamente la función
cout<<num<<"^2 = " <<cuadra(num);
getch();
}
Pág. 10
Ecler Mamani Vilca
"Recursion". Consulte la sección "Recursividad".
Recursividad. Vease “recursión”
Una de las apliaciones mas entendibles es usando las matemáticas visuales,
nos referimos a los fracales, los fractales gráficos son formas que se repiten
entre si, cuya función principal es la recursividad, veamos algunos de ellos.
Sintaxis:
PSeudocódigo Python C++
#función recursiva
Sub nombre(n):
#el bucle se rompe
Si n ==0 Entonces
return 0
Sino :
retorna nombre(n - 1)
// desciende de n hasta 1
#función recursiva
def nombre(n):
#el bucle se rompe
if n == 0:
return 0
else :
return nombre(n - 1)
// desciende de n hasta 1
//función recursiva
nombre(tipo n)
{ // el bucle se rompe
if (n==0)
return 0;
else
return nombre(n-1);
//desciende de n hasta 1
}
#programa principal
nombre ( numero)
#programa principal
nombre ( numero)
//programa principal
main( ) {
//llamando al modulo
nombre ( numero);
}
Ejemplo 04. Realizar una función recursiva, cuenta regresiva.
a) Análisis del problema
Cuenta atrás espera que su parámetro, n, sea un entero positivo. Si n el
parámetro es cero, muestra la palabra “Despegando….!”. En otro caso,
muestra n y luego llama a la función llamada regresiva (ella misma)
pasándole como argumento n-1.
Triángulo de Sierpiński Curva T Curva de Koch
Pág. 11
Algoritmica I- Modularidad
Que sucede si llamamos a la función de la siguiente manera?, regresiva
(n), donde n= 10. La ejecución de cuenta atrás comienza con n=10, y
puesto que n no es cero, da como salida el valor 10, y luego se llama a sí
misma, veamos en una prueba de escritorio:
Condición
n = 10
Iteración Función Escribir
F 10 regresiva(n) = 10 10
F 9 regresiva (regresiva(n-1) = 10-1) 9
F 8 regresiva(regresiva(n-1) = 9-1) 8
F 7 regresiva(regresiva(n-1) = 8-1) 7
F 6 regresiva(regresiva(n-1) = 7-1) 6
F 5 regresiva(regresiva(n-1) = 6-1) 5
F 4 regresiva(regresiva(n-1) = 5-1) 4
F 3 regresiva(regresiva(n-1) = 4-1) 3
F 2 regresiva(regresiva(n-1) = 3-1) 2
F 1 regresiva(regresiva(n-1) = 2-1) 1
Verdad Corte regresiva(regresiva(n-1) = 0) “Despegando¡”
La ejecución de regresiva atrás comienza con n=10, y puesto que n no es
cero, muestra el valor 10 y luego se llama a sí misma ...hasta llegar a
cero, la ejecución de cuenta atrás llega a n=0, y puesto que n es cero,
muestra la palabra “Despegando…¡”.
Declaración de variables y parámetros
Programa principal
Invocación a regresiva (entero num )
Sub regresiva ( entero n )
Parámetro de salida: retorno regresiva (n-1);
b) algoritmo
Pseudocódigo
//Ejemplo cuenta regresiva
Sub regresiva (n)
Si n=0 Entonces
Escribir “Despegando…..¡”
retorna 0
SiNo
Escribir n
#llamando a sí mismo
retorna regresiva (n-1)
FinSi
#Programa principal
Inicio
Escribir "Ingrese un numero ";
Leer num
regresiva(num)
Fin
Pág. 12
Ecler Mamani Vilca
En Phyton
#Ejemplo de función recursiva cuenta
# regresiva
def regresiva (n):
if n==0:
print “Despegando…..¡”
return 0
else:
print n
#llamando a sí mismo
return regresiva (n-1)
#Programa principal
print "Ingrese un numero "
num=int(raw_input());
regresiva(num)
En C++
// Ejemplo cuenta regresiva
#include<conio.h>
#include<iostream.h>
regresiva (int n){
if (n==0)
cout<<”Despegando…..¡”
return 0;
else
cout<<n<<endl;
//llamando a si mismo
return regresiva (n-1);
}
//Programa principal
main(){ int num;
cout<<"Ingrese un numero ";
cin>>num;
regresiva(num);
getch();
}
Pág. 13
Algoritmica I- Modularidad
Ejercicios
1. Realizar una función recursiva para imprimir y numerar n veces el nombre
de “Hola”.
a) Análisis del problema
Utilizaremos el bucle que genera la recursividad para imprimir la
numeración.
Función Interacción Impresión, n,“Hola”
n = 5 5 5 “Hola”
n -1 (5-1) 4 4 “Hola”
n -1 (4-1) 3 3 “Hola”
n -1 (3-1) 2 2 “Hola”
n -1 (2-1) 1 1 “Hola”
n -1 (1-1) 0 Como n=0, termina
Declaración de variables y argumentos:
Programa principal
Invocación a nombre (cantidad)
Argumento de entrada: Numérico real num
Sub Programa nombre ( cantidad )
Argumento de recepción Numérico entero cantidad
Pág. 14
Ecler Mamani Vilca
b) Algoritmo
2. Realizar una función recursiva en Phyton que muestra la tabla de
multiplicar.
a) Análisis del problema
Conociendo que la recursividad generar los bucles en orden decreciente,
agregaremos un contador k, el cual genera la iteración ascendente
Función Iterac. k 0 p 12 ,p k*m k," x ",m," = ",p
N = 8 8 k k +1 (0+1 = 1) P (1*12) = 12 1 x 12 = 12
N -1 (8-1) 7 k k +1 (1+1 = 2) P (2*12) = 12 2 x 12 = 24
N -1 (7-1) 6 k k +1 (2+1 = 3) P (3*12) = 12 3 x 12 = 36
N -1 (6-1) 5 k k +1 (3+1 = 4) P (4*12) = 12 4 x 12 = 48
N -1 (5-1) 4 k k +1 (4+1 = 5) P (5*12) = 12 5 x 12 = 60
N -1 (4-1) 3 k k +1 (5+1 = 6) P (6*12) = 12 6 x 12 = 72
N -1 (3-1) 2 k k +1 (6+1 = 7) P (7*12) = 12 7 x 12 = 84
N -1 (2-1) 1 k k +1 (7+1 = 8) P (8*12) = 12 8 x 12 = 96
n -1 (1-1) 0
Declaración de variables y argumentos:
Programa principal
Invocación a tabla (cantidad,multimplicador)
Argumento de entrada: Numérico entero cantidad,multimplicador
Sub tabla ( n,m )
Argumento de recepción Numérico entero n,m
En pseudocódigo
//Imprime n veces hola
Sub nombre( n )
Si (n=0) Entonces //si n llega ha ser 0 la iteracion se rompe
retorna 0; //se detiene
Sino
Escribr n, " Hola"
retorna nombre(n-1) // decrementa desde n hasta 1
FinSub
//Programa principal
Inicio
Escribir "Ingrese la cantidad de nombres a imprimir ==> "
Leer cantidad
nombre(cantidad);//función recursiva
Fin
Pág. 15
Algoritmica I- Modularidad
3. Realizar una función recursiva en C++ que muestre la potencia de un base
x a la potencia n.
a) Análisis del problema
Usaremos la recursividad para generar bucles con el cual repetir las veces
de “x” se multiplique por “n”.
En Phyton
#Tabla de multiplicar con recursividad
#Variable globlal
k=0
def tabla(n,m):
global k
if (n==0):#si n llega ha ser 0 la iteracion se rompe
return 0
else:
k=k+1 #contador para imprimir ascendentemente
p=k*m
print k," x ",m," = ",p
return tabla(n-1,m) #punto recursivo
#Programa principal
cantidad=int(raw_input("Hasta que numero desea la tabla ==> "))
multiplicador=int(raw_input(" Ingrese multiplicador ==> "))
tabla(cantidad,multiplicador)#funcion recursiva
En C++
# include<conio.h>
# include <iostream.h>
int potencia(int base,int exponente) //funcion recursiva
{ int pot;
if (exponente==0)
return 0;
else
{ // productoria
pot=base*potencia(base,exponente-1);
return pot;
}
}
main ( )
{ int base,exponente,resultado;
cout<<" Ingresa la base X = "; cin >>base;
cout<<"Ingresa la exponente n = "; cin>>exponente;
resultado=potencia(base,exponente);
cout<<" La potencia es igual a = "<<resultado;
getch();
}
Pág. 16
Ecler Mamani Vilca
4. Realizar un algoritmo que permita convertir números decimales a binario
usando recursividad.
b) Análisis del problema
Para el caso de convertir un numero decimal a binario es excelente el
método de recursividad, pues la conversion normal de cambio de base se
realiza en forma descendente. Realizaremos una prueba para 8 que es en
binario 1000.
binario (num/2) num Escribir num mod 2
8 1 1 mod 2 = 1
8/2=4 2 2 mod 2 = 0
4/2=2 4 4 mod 2 = 0
2/2 = 1 8 8 mod 2 = 0
5. Graficar el fractal de Tcuadrado.
a) Análisis del problema
Puede ser generado a partir de usar este algoritmo :
Pseudocódigo
//Numero decimal a binario con recursividad
Sub binario( num)
Si (num = 0) Entonces
Retorno 0
Sino
binario(num/2) //divide entre hasta que sea cero
FinSi
//escribe bit de resto
printf("%d",num%2);
FinSub
//Programa Principal
Inicio
Escribir "Ingrese un numero en decimal "
Leer n
binario(n)
Fin
Pág. 17
Algoritmica I- Modularidad
1. Imagen 1:
1. Comience con un cuadrado.
2. Restar un medio cuadrado de la longitud original y la
anchura (un cuarto de la zona) desde el centro.
2. Imagen 2:
1. Comience con la imagen anterior.
2. Escala abajo una copia de una mitad de la longitud original
y anchura.
3. De cada uno de los cuadrantes de imagen 1, restar la copia de la
imagen.
3. Imágenes 3-6:
1. Repita el paso 2.
En C++
#include <conio.h>
#include <graphics.h>
#include <dos.h>
void Cfractal(int x,int y,int radio)
{
rectangle(x-radio,y-radio,x+radio,y+radio);
if(radio>10)
{
Cfractal(x-radio,y-radio,radio/2);
Cfractal(x-radio,y+radio,radio/2);
Cfractal(x+radio,y-radio,radio/2);
Cfractal(x+radio,y+radio,radio/2);
}
}
void main()
{
int driver=DETECT,x;
initgraph(&driver,&x,"c:bc5bgi");
Cfractal(getmaxx()/2,getmaxy()/2,100);
getch();
}

More Related Content

What's hot (18)

Yy
YyYy
Yy
 
Funciones
FuncionesFunciones
Funciones
 
Principios programacion
Principios programacionPrincipios programacion
Principios programacion
 
Javadoc
JavadocJavadoc
Javadoc
 
Instrucciones de control repetitivas
Instrucciones de control repetitivasInstrucciones de control repetitivas
Instrucciones de control repetitivas
 
Funciones
FuncionesFunciones
Funciones
 
Programación modular
Programación modularProgramación modular
Programación modular
 
Ppiosprogramacion 090925153826-phpapp01[1]Principios de Programación
Ppiosprogramacion 090925153826-phpapp01[1]Principios de Programación Ppiosprogramacion 090925153826-phpapp01[1]Principios de Programación
Ppiosprogramacion 090925153826-phpapp01[1]Principios de Programación
 
Funciones con arrays y vectores en c
Funciones con arrays y vectores en cFunciones con arrays y vectores en c
Funciones con arrays y vectores en c
 
C facil de_v2
C facil de_v2C facil de_v2
C facil de_v2
 
Elementos
ElementosElementos
Elementos
 
Clase lenguaje c
Clase lenguaje c Clase lenguaje c
Clase lenguaje c
 
05 - Funciones en lenguaje C
05 - Funciones en lenguaje C05 - Funciones en lenguaje C
05 - Funciones en lenguaje C
 
Lenguaje c tarea 3
Lenguaje c tarea 3Lenguaje c tarea 3
Lenguaje c tarea 3
 
Guia 04 parametros poo
Guia 04 parametros pooGuia 04 parametros poo
Guia 04 parametros poo
 
Funciones en visual basic
Funciones en visual basicFunciones en visual basic
Funciones en visual basic
 
Transparencias4
Transparencias4Transparencias4
Transparencias4
 
Ejemplo C++
Ejemplo C++Ejemplo C++
Ejemplo C++
 

Viewers also liked

Viewers also liked (10)

Lenguajes de Programacion
Lenguajes de ProgramacionLenguajes de Programacion
Lenguajes de Programacion
 
Diseño estructurado
Diseño estructuradoDiseño estructurado
Diseño estructurado
 
lenguajes de programacion
lenguajes de programacionlenguajes de programacion
lenguajes de programacion
 
Objetivo 01 Archivos de Texto
Objetivo 01 Archivos de TextoObjetivo 01 Archivos de Texto
Objetivo 01 Archivos de Texto
 
Diagramas de Flujo con DFD.
Diagramas de Flujo con DFD.Diagramas de Flujo con DFD.
Diagramas de Flujo con DFD.
 
Vista aérea de los lenguajes de programación
Vista aérea de los lenguajes de programaciónVista aérea de los lenguajes de programación
Vista aérea de los lenguajes de programación
 
Archivos C++
Archivos C++Archivos C++
Archivos C++
 
Utilizacion de archivos en Dev C++
Utilizacion de archivos en Dev C++Utilizacion de archivos en Dev C++
Utilizacion de archivos en Dev C++
 
Manejo de archivos en c++
Manejo de archivos en c++Manejo de archivos en c++
Manejo de archivos en c++
 
Manejo de archivos en el lenguaje C
Manejo de archivos en el lenguaje CManejo de archivos en el lenguaje C
Manejo de archivos en el lenguaje C
 

Similar to 6 libro fundamentos cap__modularidad_ecler mv

Similar to 6 libro fundamentos cap__modularidad_ecler mv (20)

Programación Modular - Subprogramas o funciones
Programación Modular - Subprogramas o funcionesProgramación Modular - Subprogramas o funciones
Programación Modular - Subprogramas o funciones
 
Funciones lenguaje c modulo4
Funciones lenguaje c modulo4Funciones lenguaje c modulo4
Funciones lenguaje c modulo4
 
FUNCIONES EN LENGUAJE C
FUNCIONES EN LENGUAJE CFUNCIONES EN LENGUAJE C
FUNCIONES EN LENGUAJE C
 
5. PROGRAMACION ESTRUCTURADA C++.pptx
5. PROGRAMACION ESTRUCTURADA C++.pptx5. PROGRAMACION ESTRUCTURADA C++.pptx
5. PROGRAMACION ESTRUCTURADA C++.pptx
 
Metodos funciones
Metodos funcionesMetodos funciones
Metodos funciones
 
Funcionesclase1
Funcionesclase1Funcionesclase1
Funcionesclase1
 
Procedimientos en visual basic
Procedimientos en visual basicProcedimientos en visual basic
Procedimientos en visual basic
 
Guía funciones
Guía funcionesGuía funciones
Guía funciones
 
Conociendo los Lenguajes de Programacion
Conociendo los Lenguajes de ProgramacionConociendo los Lenguajes de Programacion
Conociendo los Lenguajes de Programacion
 
07 funciones
07 funciones07 funciones
07 funciones
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
De algoritmo a programa en c++
De algoritmo a programa en c++De algoritmo a programa en c++
De algoritmo a programa en c++
 
Programación Modular
Programación ModularProgramación Modular
Programación Modular
 
Progra
PrograProgra
Progra
 
Cap7 2
Cap7 2Cap7 2
Cap7 2
 
Presentacion
PresentacionPresentacion
Presentacion
 
Programación modular en Introducción a la Programación
Programación modular en Introducción a la ProgramaciónProgramación modular en Introducción a la Programación
Programación modular en Introducción a la Programación
 
Funcionesenlenguaje c
Funcionesenlenguaje cFuncionesenlenguaje c
Funcionesenlenguaje c
 
Funciones en C
Funciones en CFunciones en C
Funciones en C
 
Funciones en C.docx
Funciones en C.docxFunciones en C.docx
Funciones en C.docx
 

More from Ecler Mamani Vilca

Taller de tesis en informática por Ecler MV
Taller de tesis en informática por Ecler MVTaller de tesis en informática por Ecler MV
Taller de tesis en informática por Ecler MVEcler Mamani Vilca
 
Pizarra digital de bajo costo basado en Wiimote y su satisfacción por el Usuario
Pizarra digital de bajo costo basado en Wiimote y su satisfacción por el UsuarioPizarra digital de bajo costo basado en Wiimote y su satisfacción por el Usuario
Pizarra digital de bajo costo basado en Wiimote y su satisfacción por el UsuarioEcler Mamani Vilca
 
Fracasos y triunfos de la tecnología
Fracasos y triunfos de la tecnologíaFracasos y triunfos de la tecnología
Fracasos y triunfos de la tecnologíaEcler Mamani Vilca
 
4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc
4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc
4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedocEcler Mamani Vilca
 
Programación a través de la creación de mundos flisol
Programación  a través de la creación de mundos flisolProgramación  a través de la creación de mundos flisol
Programación a través de la creación de mundos flisolEcler Mamani Vilca
 
Ecler software educativo intercultural
Ecler software educativo interculturalEcler software educativo intercultural
Ecler software educativo interculturalEcler Mamani Vilca
 
Ejercicios condicionales simples
Ejercicios condicionales simplesEjercicios condicionales simples
Ejercicios condicionales simplesEcler Mamani Vilca
 
Qué y cómo enseñar computación e informática
Qué y cómo enseñar computación e informáticaQué y cómo enseñar computación e informática
Qué y cómo enseñar computación e informáticaEcler Mamani Vilca
 
Virus de USB como detectar y eliminar
Virus de USB como detectar y eliminarVirus de USB como detectar y eliminar
Virus de USB como detectar y eliminarEcler Mamani Vilca
 

More from Ecler Mamani Vilca (9)

Taller de tesis en informática por Ecler MV
Taller de tesis en informática por Ecler MVTaller de tesis en informática por Ecler MV
Taller de tesis en informática por Ecler MV
 
Pizarra digital de bajo costo basado en Wiimote y su satisfacción por el Usuario
Pizarra digital de bajo costo basado en Wiimote y su satisfacción por el UsuarioPizarra digital de bajo costo basado en Wiimote y su satisfacción por el Usuario
Pizarra digital de bajo costo basado en Wiimote y su satisfacción por el Usuario
 
Fracasos y triunfos de la tecnología
Fracasos y triunfos de la tecnologíaFracasos y triunfos de la tecnología
Fracasos y triunfos de la tecnología
 
4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc
4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc
4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc
 
Programación a través de la creación de mundos flisol
Programación  a través de la creación de mundos flisolProgramación  a través de la creación de mundos flisol
Programación a través de la creación de mundos flisol
 
Ecler software educativo intercultural
Ecler software educativo interculturalEcler software educativo intercultural
Ecler software educativo intercultural
 
Ejercicios condicionales simples
Ejercicios condicionales simplesEjercicios condicionales simples
Ejercicios condicionales simples
 
Qué y cómo enseñar computación e informática
Qué y cómo enseñar computación e informáticaQué y cómo enseñar computación e informática
Qué y cómo enseñar computación e informática
 
Virus de USB como detectar y eliminar
Virus de USB como detectar y eliminarVirus de USB como detectar y eliminar
Virus de USB como detectar y eliminar
 

6 libro fundamentos cap__modularidad_ecler mv

  • 1. Pág. 1 Algoritmica I- Modularidad Modularidad DEFINICIÓN La Modularidad es la sub división de un algoritmo, o programa en partes más pequeñas, llamadas módulos, cada una de las cuales debe ser lo más independiente posible de la aplicación principal y de las restantes partes. La programación modular es una de las técnicas fundamentales de la programación. Se apoya en el diseño descendente y en la filosofía de “divide y vencerás”, es decir se trata de dividir el problema dado, en problemas más simples en que cada uno de los cuales lo implementaremos en un módulo independiente. Gráfico 01. Esquema de modularidad Siempre existirá un módulo o programa principal que es con el que comienza la ejecución de todo el programa, y a partir de él iremos llamando al resto. Cada vez que se llama a un subprograma se le pasa la información que necesita en la llamada, a continuación comienza a ejecutarse el subprograma llamado, y cuando termine su ejecución, devuelve el control a la siguiente instrucción a la de llamada en el programa que lo llamó. Así cabe mencionar que los módulos también se les conoce como, sub algoritmos, subprogramas y sub subrutinas.
  • 2. Pág. 2 Ecler Mamani Vilca A nivel general podemos clasificar en dos: • Procedimientos • Funciones Diferencias entre procedimientos y funciones Estos subprogramas son similares aunque presentan diferencias entre ellos: 1. Las funciones devuelven un sólo valor al algoritmo principal. Los procedimientos pueden devolver cero, uno o más valores. 2. A un nombre de procedimiento no se puede asignar un valor y por consiguiente ningún tipo está asociado con un nombre de procedimiento. 3. Una función se referencia utilizando su nombre en una expresión, mientras que un procedimiento se referencia por una llamada o invocación al mismo Argumentos Un argumento representa el valor que se transfiere a un parámetro del procedimiento cuando se llama al procedimiento. El código de llamada proporciona los argumentos cuando llama al procedimiento. Cuando se llama al procedimiento Function o Sub, se incluye una lista de argumentos entre paréntesis que van inmediatamente después del nombre del procedimiento. A diferencia de la definición de parámetros, los argumentos no tienen nombres. Cada argumento es una expresión que puede contener cero o más variables, constantes y literales. El tipo de datos de la expresión evaluada normalmente debe coincidir con el tipo de datos definido para el parámetro correspondiente, y en algún caso, debe poder convertirse al tipo del parámetro. Parámetros Un parámetro representa un valor que el procedimiento espera que se transfiera cuando es llamado. La declaración del procedimiento define sus parámetros. El nombre de cada parámetro actúa como una variable local dentro del procedimiento. El nombre del parámetro se utiliza del mismo modo que cualquier otra variable.
  • 3. Pág. 3 Algoritmica I- Modularidad PROCEDIMIENTO Un procedimiento es un subprograma o un sub algoritmo que ejecuta una determinada tarea, pero que tras ejecutar no necesariamente debe devolver un valor aun cuando tengan argumentos. En realidad los argumentos son parámetros (variables) de entrada cuando ejecutas un programa. En Python y C++ los procedimientos son funciones sin parámetros de retorno. El uso de las variables de en un procedimiento son como locales y la estructura del programa similar al del programa principal. Algoritmo Python C++ //Procedimiento Sub nombre_modulo( ) //procesos FinSub #Procedimiento nombre_modulo( ): #procesos //Procedimiento nombre_modulo( ){ //procesos } //Programa principal Inicio //llamando al modulo nombre_modulo( ) Fin #Programa principal //llamando al modulo nombre_modulo( ) //Programa principal main( ) { //llamando al modulo nombre_modulo( ); } a) Procedimientos sin argumentos Son aquellas que no reciben argumentos de entrada al módulo. Ejemplo 01. Crear dos módulos, el primero que escriba una etiqueta y para el segundo que permita calcular un número al cuadrado. a) Análisis del problema El cuadrado es: Cuad Num * Num Declaración de variables y argumentos Programa principal Invocación a etiqueta ( ), cuadrado ( ) Sub Programa Etiqueta ( ) Variable de Salida: Texto Sub Programa cuadrado ( ) Variable de Entrada: Numerico real : Num Variable de Salida: Numerico real : Cuad
  • 4. Pág. 4 Ecler Mamani Vilca b) Algoritmo c) Codificación En Pseudocódigo // Ejem. 01. Procedimiento sin argumentos Sub etiqueta ( ) Escribir “======================” Escribir “ Procedimiento sin Argumentos” Escribir “======================” Fin Sub cuadrado ( ) Escribir “Ingrese un Número” Leer Num Cuad Num * Num Escribir “ El cuadrado es ”, Cuad Fin //Programa principal Inicio etiqueta ( ) //Invoca al modulo cuadrado ( ) //Invoca al modulo Fin En Phyton # Ejem. 0. Procedimiento sin argumentos def etiqueta(): print "=======================" print " Procedimiento sin argumentos" print "=======================" def cuadrado( ): print "Ingrese numero" n = float(raw_input()) cuad = n * n print n," al cuadrado es ",cuad #Programa principal en Python etiqueta() #Invoca al modulo cuadrado()#Invoca al modulo
  • 5. Pág. 5 Algoritmica I- Modularidad b) Procedimientos con argumentos Son aquellas que reciben argumentos de entrada al módulo mas no emiten un valor como retorno. Ejemplo 02. Realizar un procedimiento con argumento que permita generar la tabla de multiplicar. a) Análisis del problema En referencia la ejercicio 02, de la unidad de bucles. Se tiene: Para i 1 hasta 20 Hacer prod i * m Escribir i,” X“, m,”=”,prod Declaración de variables y argumentos: Programa principal Invocación a Tabla (multip) Variable de Entrada: Numérico entero multip Sub Programa Tabla ( real m) Argumento de entrada: Numérico real m En C++, void declara una función que no tiene valor de retorno, en los nuevos compiladores de C++ ya no es necesario declararlos. En C++ //Ejem. 01. Procedimiento sin argumentos #include<conio.h> #include<iostream.h> void etiqueta ( ) { cout<<"====================="<<endl; cout<<" Procedim. sin argumentos ”<<endl; cout<<"====================="<<endl; } void cuadrado ( ){ //Variable local float Cuad, Num; cout<<"Ingrese un Numero "; cin>>Num; Cuad=Num * Num; cout<<"El cuadrado es "<<Cuad; getch(); } //Programa principal main( ){ etiqueta ( ); //Invoca al modulo cuadrado ( ); //Invoca al modulo }
  • 6. Pág. 6 Ecler Mamani Vilca Algoritmo d) Codificación En Pseudocódigo // Ejemplo de procedimiento con argumentos //llama el argumento m Sub tabla (real m ) Para i 1 hasta 20 Hacer prod i * m Escribir i,” X“, m,”=”,prod Fin //Programa principal Inicio Escribir “Ingrese multiplicador” Leer multip tabla (multip ) Fin En Phyton # Ejem .02 Procedimiento con argumentos #llama el argumento m def tabla(m): for i in range (1,20): prod = i * m print i," x ",m," = ",prod #Programa principal print "Ingrese multiplicador " multi = float(raw_input( )) tabla(multi) En C++ // Ejem .02 Procedimiento con argumentos #include<conio.h> #include<iostream.h> #llama el argumento m tabla (float m) { int i; float prod; for (i=1;i<=20;i++){ prod = i*m; cout<<i<<"x"<<m<<"=" <<prod<<endl; } } //Programa principal main( ){ float multi; cout<<"Ingrese multiplicador"; cin >>multi; tabla(multi); }
  • 7. Pág. 7 Algoritmica I- Modularidad FUNCIÓN Una función es un módulo de código con un nombre asociado que realiza una serie de tareas y devuelve un valor. Desde el punto de vista matemático, una función es una operación que toma uno o a varios operandos, y devuelve un resultado. Y desde el punto de vista algorítmico, es un subprograma que toma uno o varios parámetros como entrada y devuelve a la salida un único resultado. f(p1,p2,...,pn) donde p1, p2, ..., pn son los parámetros y f es el nombre de la función. Cabe recordar que para el uso de las funciones en muchas ocasiones es necesario usar variables globales. Variable global Una variable global es aquella que se define fuera del cuerpo de cualquier función. El ámbito de una variable global son todas las funciones que componen el programa, cualquier función puede acceder a dichas variables para leer y escribir en ellas. Es decir, se puede hacer referencia a su dirección de memoria en cualquier lugar del programa. Variable local Es aquella cuyo ámbito se restringe a la función que la ha declarado se dice entonces que la variable es local a esa función. Esto implica que esa variable sólo va a poder ser manipulada en dicha sección, y no se podrá hacer referencia fuera de dicha sección. Un ejemplo en C++, observamos una modificación para “int i” como variable global y “float prod”, es una variable local. En C++ //Ejem. tipos de variables #include<conio.h> #include<iostream.h> int i; //Variable global tabla (float m) { float prod; //Variable local for (i=1;i<=20;i++){ prod = i*m; cout<<i<<"x"<<m<<"=" <<prod<<endl; } getch( ); }
  • 8. Pág. 8 Ecler Mamani Vilca Sintaxis: Algoritmo Python C++ //función Sub nombre (parametro) //procesos Retorna valor FinSub //función nombre(tipo parametro){ //procesos return valor; } #función nombre(parametro ): #procesos return valor //Programa principal Inicio //Ingreso de datos //llamando al modulo nombre(parametro ) Fin //Programa principal main( ) { //Ingreso de datos // Llamando al modulo nombre(parametro); } #Programa principal #Ingreso de datos nombre(parametro ) La sentencia return 0, break o exit (0), le permite terminar la ejecución de una función. Cuando el valor devuelto es diferente de 0, es cuando retorna un valor, con fines didácticos utilizaremos los ejemplos anteriores. Ejemplo 03. Realizar una función que genere un número al cuadrado. a) Análisis del problema Declaración de variables y argumentos: Programa principal Invocación a cuadra (num) Argumento de entrada: Numérico real num Sub Programa cuadra ( real ) Argumento de recepción Numérico real n b) Algoritmo Pseudocódigo // Función numero al cuadrado Sub cuadra (real n) Retorna n*n Fin //Programa principal Inicio Escribir “Ingrese un numero” Leer num Escribir num,”^ 2 =”,cuadra(num) Fin En Phyton # Función numero al cuadrado def cuadra(n): return n*n #Programa principal print "Ingrese un numero" num = float(raw_input()) print num,"^2 =",cuadra(num)
  • 9. Pág. 9 Algoritmica I- Modularidad c) Codificación Función recursiva La recursividad es una función que se llama así misma generando secuencias en forma descendente, ya sea directamente o indirectamente. La función recursiva al principio cuesta un poco entender cuando se está aprendiendo a programar. No todas las funciones son recursivas son particularidades. Si hacemos una comparación visual en la parte inferior, observamos que dentro del monitor mayor se encuentra dentro de un segundo y este último en un tercer monitor, ha esto podemos denominar una recursividad visual. La definicion de recursividad algunas veces puedes causar algo de humor, siempre y cuando se entienda bien, para ejemplo tenemos en un diccionario cuya definición indica: En C++ // Función numero al cuadrado #include<conio.h> #include<iostream.h> cuadra (float m){ return m*m; } //Programa principal main( ){ float num; cout<<"Ingrese un numero "; cin>>num; //imprime directamente la función cout<<num<<"^2 = " <<cuadra(num); getch(); }
  • 10. Pág. 10 Ecler Mamani Vilca "Recursion". Consulte la sección "Recursividad". Recursividad. Vease “recursión” Una de las apliaciones mas entendibles es usando las matemáticas visuales, nos referimos a los fracales, los fractales gráficos son formas que se repiten entre si, cuya función principal es la recursividad, veamos algunos de ellos. Sintaxis: PSeudocódigo Python C++ #función recursiva Sub nombre(n): #el bucle se rompe Si n ==0 Entonces return 0 Sino : retorna nombre(n - 1) // desciende de n hasta 1 #función recursiva def nombre(n): #el bucle se rompe if n == 0: return 0 else : return nombre(n - 1) // desciende de n hasta 1 //función recursiva nombre(tipo n) { // el bucle se rompe if (n==0) return 0; else return nombre(n-1); //desciende de n hasta 1 } #programa principal nombre ( numero) #programa principal nombre ( numero) //programa principal main( ) { //llamando al modulo nombre ( numero); } Ejemplo 04. Realizar una función recursiva, cuenta regresiva. a) Análisis del problema Cuenta atrás espera que su parámetro, n, sea un entero positivo. Si n el parámetro es cero, muestra la palabra “Despegando….!”. En otro caso, muestra n y luego llama a la función llamada regresiva (ella misma) pasándole como argumento n-1. Triángulo de Sierpiński Curva T Curva de Koch
  • 11. Pág. 11 Algoritmica I- Modularidad Que sucede si llamamos a la función de la siguiente manera?, regresiva (n), donde n= 10. La ejecución de cuenta atrás comienza con n=10, y puesto que n no es cero, da como salida el valor 10, y luego se llama a sí misma, veamos en una prueba de escritorio: Condición n = 10 Iteración Función Escribir F 10 regresiva(n) = 10 10 F 9 regresiva (regresiva(n-1) = 10-1) 9 F 8 regresiva(regresiva(n-1) = 9-1) 8 F 7 regresiva(regresiva(n-1) = 8-1) 7 F 6 regresiva(regresiva(n-1) = 7-1) 6 F 5 regresiva(regresiva(n-1) = 6-1) 5 F 4 regresiva(regresiva(n-1) = 5-1) 4 F 3 regresiva(regresiva(n-1) = 4-1) 3 F 2 regresiva(regresiva(n-1) = 3-1) 2 F 1 regresiva(regresiva(n-1) = 2-1) 1 Verdad Corte regresiva(regresiva(n-1) = 0) “Despegando¡” La ejecución de regresiva atrás comienza con n=10, y puesto que n no es cero, muestra el valor 10 y luego se llama a sí misma ...hasta llegar a cero, la ejecución de cuenta atrás llega a n=0, y puesto que n es cero, muestra la palabra “Despegando…¡”. Declaración de variables y parámetros Programa principal Invocación a regresiva (entero num ) Sub regresiva ( entero n ) Parámetro de salida: retorno regresiva (n-1); b) algoritmo Pseudocódigo //Ejemplo cuenta regresiva Sub regresiva (n) Si n=0 Entonces Escribir “Despegando…..¡” retorna 0 SiNo Escribir n #llamando a sí mismo retorna regresiva (n-1) FinSi #Programa principal Inicio Escribir "Ingrese un numero "; Leer num regresiva(num) Fin
  • 12. Pág. 12 Ecler Mamani Vilca En Phyton #Ejemplo de función recursiva cuenta # regresiva def regresiva (n): if n==0: print “Despegando…..¡” return 0 else: print n #llamando a sí mismo return regresiva (n-1) #Programa principal print "Ingrese un numero " num=int(raw_input()); regresiva(num) En C++ // Ejemplo cuenta regresiva #include<conio.h> #include<iostream.h> regresiva (int n){ if (n==0) cout<<”Despegando…..¡” return 0; else cout<<n<<endl; //llamando a si mismo return regresiva (n-1); } //Programa principal main(){ int num; cout<<"Ingrese un numero "; cin>>num; regresiva(num); getch(); }
  • 13. Pág. 13 Algoritmica I- Modularidad Ejercicios 1. Realizar una función recursiva para imprimir y numerar n veces el nombre de “Hola”. a) Análisis del problema Utilizaremos el bucle que genera la recursividad para imprimir la numeración. Función Interacción Impresión, n,“Hola” n = 5 5 5 “Hola” n -1 (5-1) 4 4 “Hola” n -1 (4-1) 3 3 “Hola” n -1 (3-1) 2 2 “Hola” n -1 (2-1) 1 1 “Hola” n -1 (1-1) 0 Como n=0, termina Declaración de variables y argumentos: Programa principal Invocación a nombre (cantidad) Argumento de entrada: Numérico real num Sub Programa nombre ( cantidad ) Argumento de recepción Numérico entero cantidad
  • 14. Pág. 14 Ecler Mamani Vilca b) Algoritmo 2. Realizar una función recursiva en Phyton que muestra la tabla de multiplicar. a) Análisis del problema Conociendo que la recursividad generar los bucles en orden decreciente, agregaremos un contador k, el cual genera la iteración ascendente Función Iterac. k 0 p 12 ,p k*m k," x ",m," = ",p N = 8 8 k k +1 (0+1 = 1) P (1*12) = 12 1 x 12 = 12 N -1 (8-1) 7 k k +1 (1+1 = 2) P (2*12) = 12 2 x 12 = 24 N -1 (7-1) 6 k k +1 (2+1 = 3) P (3*12) = 12 3 x 12 = 36 N -1 (6-1) 5 k k +1 (3+1 = 4) P (4*12) = 12 4 x 12 = 48 N -1 (5-1) 4 k k +1 (4+1 = 5) P (5*12) = 12 5 x 12 = 60 N -1 (4-1) 3 k k +1 (5+1 = 6) P (6*12) = 12 6 x 12 = 72 N -1 (3-1) 2 k k +1 (6+1 = 7) P (7*12) = 12 7 x 12 = 84 N -1 (2-1) 1 k k +1 (7+1 = 8) P (8*12) = 12 8 x 12 = 96 n -1 (1-1) 0 Declaración de variables y argumentos: Programa principal Invocación a tabla (cantidad,multimplicador) Argumento de entrada: Numérico entero cantidad,multimplicador Sub tabla ( n,m ) Argumento de recepción Numérico entero n,m En pseudocódigo //Imprime n veces hola Sub nombre( n ) Si (n=0) Entonces //si n llega ha ser 0 la iteracion se rompe retorna 0; //se detiene Sino Escribr n, " Hola" retorna nombre(n-1) // decrementa desde n hasta 1 FinSub //Programa principal Inicio Escribir "Ingrese la cantidad de nombres a imprimir ==> " Leer cantidad nombre(cantidad);//función recursiva Fin
  • 15. Pág. 15 Algoritmica I- Modularidad 3. Realizar una función recursiva en C++ que muestre la potencia de un base x a la potencia n. a) Análisis del problema Usaremos la recursividad para generar bucles con el cual repetir las veces de “x” se multiplique por “n”. En Phyton #Tabla de multiplicar con recursividad #Variable globlal k=0 def tabla(n,m): global k if (n==0):#si n llega ha ser 0 la iteracion se rompe return 0 else: k=k+1 #contador para imprimir ascendentemente p=k*m print k," x ",m," = ",p return tabla(n-1,m) #punto recursivo #Programa principal cantidad=int(raw_input("Hasta que numero desea la tabla ==> ")) multiplicador=int(raw_input(" Ingrese multiplicador ==> ")) tabla(cantidad,multiplicador)#funcion recursiva En C++ # include<conio.h> # include <iostream.h> int potencia(int base,int exponente) //funcion recursiva { int pot; if (exponente==0) return 0; else { // productoria pot=base*potencia(base,exponente-1); return pot; } } main ( ) { int base,exponente,resultado; cout<<" Ingresa la base X = "; cin >>base; cout<<"Ingresa la exponente n = "; cin>>exponente; resultado=potencia(base,exponente); cout<<" La potencia es igual a = "<<resultado; getch(); }
  • 16. Pág. 16 Ecler Mamani Vilca 4. Realizar un algoritmo que permita convertir números decimales a binario usando recursividad. b) Análisis del problema Para el caso de convertir un numero decimal a binario es excelente el método de recursividad, pues la conversion normal de cambio de base se realiza en forma descendente. Realizaremos una prueba para 8 que es en binario 1000. binario (num/2) num Escribir num mod 2 8 1 1 mod 2 = 1 8/2=4 2 2 mod 2 = 0 4/2=2 4 4 mod 2 = 0 2/2 = 1 8 8 mod 2 = 0 5. Graficar el fractal de Tcuadrado. a) Análisis del problema Puede ser generado a partir de usar este algoritmo : Pseudocódigo //Numero decimal a binario con recursividad Sub binario( num) Si (num = 0) Entonces Retorno 0 Sino binario(num/2) //divide entre hasta que sea cero FinSi //escribe bit de resto printf("%d",num%2); FinSub //Programa Principal Inicio Escribir "Ingrese un numero en decimal " Leer n binario(n) Fin
  • 17. Pág. 17 Algoritmica I- Modularidad 1. Imagen 1: 1. Comience con un cuadrado. 2. Restar un medio cuadrado de la longitud original y la anchura (un cuarto de la zona) desde el centro. 2. Imagen 2: 1. Comience con la imagen anterior. 2. Escala abajo una copia de una mitad de la longitud original y anchura. 3. De cada uno de los cuadrantes de imagen 1, restar la copia de la imagen. 3. Imágenes 3-6: 1. Repita el paso 2. En C++ #include <conio.h> #include <graphics.h> #include <dos.h> void Cfractal(int x,int y,int radio) { rectangle(x-radio,y-radio,x+radio,y+radio); if(radio>10) { Cfractal(x-radio,y-radio,radio/2); Cfractal(x-radio,y+radio,radio/2); Cfractal(x+radio,y-radio,radio/2); Cfractal(x+radio,y+radio,radio/2); } } void main() { int driver=DETECT,x; initgraph(&driver,&x,"c:bc5bgi"); Cfractal(getmaxx()/2,getmaxy()/2,100); getch(); }