Publicado el 24 de Junio del 2018
859 visualizaciones desde el 24 de Junio del 2018
2,6 MB
36 paginas
Creado hace 8a (01/05/2016)
Modularización en lenguaje C
Funciones
Segundo Cuatrimestre 2016
F. de la Informática- Int.a la Computación - Int.a la Programación
1
Ejercicio: Dado el siguiente algoritmo incompleto codificado en Lenguaje de Diseño,
complételo y modifíquelo de manera tal que el nuevo algoritmo cumpla con todas las
siguientes condiciones:
a) Defina el subalgoritmo Ingreso que permita ingresar datos en UN arreglo de enteros.
El ingreso de los datos a los arreglos NUM1 y NUM2, deberá hacerse mediate las
correspondientes invocaciones del subalgoritmo Ingreso.
b) Defina, además, el subalgoritmo Multiplos que permita determinar la cantidad de
números que no sean múltiplos de un determinado número.
c) Utilice el subalgoritmo Multiplos para desarrollar las tareas 3 y 4
ALGORITMO "ALGO"
COMENZAR
NUM1: arreglo [1 a 30] entero
NUM2: arreglo [1 a 20] entero
I: entero
FINPARA
Determinar cantidad de números que no sean múltiplos de siete del arreglo
NUM1
Determinar cantidad de números que no sean múltiplos de 4 del arreglo
NUM2
4
FIN
F. de la Informática - Int.a la Computación - Int.a la Programación - 2016
2
PARA I DESDE 1 HASTA 30 CON PASO 1 HACER
FINPARA
PARA I DESDE 20 HASTA 1 CON PASO -1 HACER
LEER NUM1[I]
LEER NUM2[I]
1
2
3
Subalgoritmo “Ingreso” (inout NUM: arreglo entero ,in inicio, final, FE: entero)
Comenzar
Modularización
I: entero
Escribir: “ingrese datos enteros”
Para I desde inicio hasta final con paso FE hacer
Leer NUM[I]
Fin para
Fin
Algoritmo "ALGO”
Comenzar
NUM1: arreglo [1…30] de entero
NUM2: arreglo [1…20] de entero
I: entero
Ingreso (NUM1 ,1,30,1)
Ingreso (NUM2 ,20,1,-1)
. . .
Fin
F. de la Informática - Int.a la Computación - Int.a la Programación - 2016
3
Modularización
Subalgoritmo “Multiplo” (inout NUM1: arreglo entero,
inout NUM2: arreglo entero)
Comenzar
I: entero
Cant: entero
Cant2: entero
Cant <-0
Para I desde 1 hasta 30 con paso 1 hacer
Si NUM1 [I]//7 <>0 entonces
Cant<-cant +1
Fin si
Fin para
Cant2<-0
Para I desde 20 hasta 1 con paso -1 hacer
Si NUM2 [I] //4 <>0 entonces
Cant 2 <- cant2 +1
Fin si
Fin para
Fin
F. de la Informática - Int.a la Computación - Int.a la Programación - 2016
4
Modularización
¿Cómo
invocarlo?
Subalgoritmo “Multiplo” (inout NUM1: arreglo de entero, in Li: entero, in Lo, in P,
in Mul, out Cant)
Comenzar
I: entero
Cant <-0
Para I desde Li hasta Lo con paso P hacer
Si NUM1 [I]//Mul <>0 entonces
Cant<-Cant +1
Finsi
Fin para
Fin
¿Es posible determinar con el subalgoritmo Multiplo la cantidad de
valores que son múltiplos de 6?
F. de la Informática - Int.a la Computación - Int.a la Programación - 2016
5
Objetivo:
Una vez que definimos un método que
resuelva un problema
concreto, se pretende ser capaces de
usarlo tantas veces como sea necesario
sin
tener que reescribirlo.
L. de Diseño
C
Subalgoritmos
Funciones
Modularización
F. de la Informática - Int.a la Computación - Int.a la Programación - 2016
6
Una función (subalgoritmo) es un conjunto de
instrucciones que realizan una tarea en
particular.
FUNCIONES
La modularización determina como mínimo dos módulos bien definidos de la
solución: el Módulo que invoca (puede ser el M. Principal) y el Módulo que
realiza la Tarea Específica.
El módulo principal es el algoritmo que soluciona el problema general planteado y
que invoca a la/s función/es. Usualmente es el ‘Programa Principal’.
Módulo que Invoca
Módulo Invocado
Programa Principal
Función de Tarea Específica
F. de la Informática - Int.a la Computación - Int.a la Programación - 2016
7
Una función (subalgoritmo) es un conjunto de
instrucciones que realizan una tarea en
particular.
FUNCIONES
La modularización determina como mínimo dos módulos bien definidos de la
solución: el Módulo que Invoca y el Módulo Invocado.
Módulo que Invoca
Módulo Invocado
F. de la Informática - Int.a la Computación - Int.a la Programación - 2016
8
Lenguaje “C”
FUNCIONES
Ejemplo:
Dado
un
número
n
entero
posi0vo,
se
desea
calcular
e
imprimir
el
factorial
de
n,
n2
y
de
n3.
Definir
un
módulo
(función)
para
el
cálculo
del
factorial.
(Ejemplo
visto
en
Lenguaje
de
Diseño)
F. de la Informática - Int.a la Computación - Int.a la Programación - 2016
9
ALGORITMO
“Calculo
Factoriales”
COMENZAR
FACTORIAL
FACTORIAL
FACTORIAL
FIN
Programa Principal
SUBALGORITMO
“FACTORIAL”
COMENZAR
N,
FACT,
I:
entero
LEER
N
FACT
PARA
I
DESDE
1
HASTA
N
CON
PASO
1
HACER
1
FACT
FACT
*
I
Función
F
U
N
C
I
O
N
E
S
FINPARA
ESCRIBIR
FACT
FIN
F. de la Informática - Int.a la Computación - Int.a la Programación
F. de la Informática - Int.a la Computación - Int.a la Programación - 2016
10
Gráficamente
FUNCIONES
invocación
retorno
Programa Principal
Factorial
11
Solución General (en Leng. de Diseño)
FUNCIONES
Cuerpo del
Programa Ppal.
ALGORITMO “Calculo Factoriales”
COMENZAR
N, AUX: entero
LEER AUX
N
AUX
N
FACTORIAL
N
N
FACTORIAL
N
N
FACTORIAL
FIN
AUX^2
AUX^3
Cuerpo de la
Función.
Queda por resolver
?
SUBALGORITMO “FACTORIAL”
COMENZAR
FACT, I: entero
FACT 1
PARA I DESDE 1 HASTA N CON PASO 1
HACER
FACT
FACT * I
FINPARA
ESCRIBIR FACT
FIN
12
F. de la Informática - Int.a la Computación - Int.a la Programación - 2016
Solución General (en Leng. “C”)
FUNCIONES
El programa principal
conserva el nombre main
#include <stdio.h>
int main() {
int n;
int aux;
printf(“Ingrese el número”);
scanf(“%d”, &aux);
getchar();
n = aux;
Factorial(); /* 1er Fact. */
n = aux * aux;
Factorial(); /* 2do Fact. */
n = aux * aux * aux;
Factorial(); /* 3er Fact. */
return(0);
}
F. de la Informática - Int.a la Computación - Int.a la Programación
F. de la Informática - Int.a la Computación - Int.a la Programación - 2016
13
Cuerpo del
Programa
Ppal.
FUNCIONES
La función adquiere
nombre propio.
int Factorial(){
int i;
int fact;
?
fact = 1;
for (i =1; i <= n; i=i+1 ){
fact = fact * i;
}
printf(“El factorial es: %d\n”, fact);
return(0);
}
Que valores toma
Cuerpo de la
Función.
F. de la Informática - Int.a la Computación - Int.a la Programación
F. de la Informática - Int.a la Computación - Int.a la Programación - 2016
14
F
U
N
C
I
O
N
E
S
#include <stdio.h>
int Factorial(){
int i;
int fact;
fact = 1;
for (i =1; i <= n; i=i+1 ){
fact = fact * i;
}
printf(“El factorial es: %d\n”, fact);
return(0);}
int main() {
int n;
int aux;
printf(“Ingrese el número”);
scanf(“%d”, &aux);
getchar();
n = aux;
Factorial(); /* 1er Fact. */
n = aux * aux;
Factorial(); /* 2do Fact. */
n = aux * aux * aux;
Factorial(); /* 3er Fact. */
return(0);}
F. de la Informática - Int.a la Computación - Int.a la Programación
F. de la Informática - Int.a la Computación - Int.a la Programación - 2016
15
Ámbito de una variable / constante
FUNCIONES
El ámbito de una variable es el bloque
de código en el cual una variable existe
y puede ser utilizada para procesar.
#include <stdio.h>
int main() {
int n;
int aux;
printf(“Ingrese el número”);
scanf(“%d”, &aux);
getchar();
n = aux;
Factorial(); /* 1er Fact. */
n = aux * aux;
Factorial(); /* 2do Fact. */
n = aux * aux * aux;
Factorial(); /* 3er Fact. */
return(0);
}
F. de la Informática - Int.a la Computación - Int.a la Programación
Ámbito para n,
aux
F. de la Informática - Int.a la Computación - Int.a la Programación - 2016
16
Ámbito de una variable / constante
FUNCIONES
Ámbito para i, fact
int Factorial(){
int i;
int fact;
fact = 1;
for (i =1; i <= n; i=i+1 ){
fact = fact * i;
}
printf(“El fact. es: %d\n”, fact);
return(0);
}
?
F. de la Informática - Int.a la Computación - Int.a la Programación - 2016
17
Toda variable definida dentro del cuerpo del Prog. Ppal. o de una función
se denomina LOCAL al Prog. Ppal. o función.
Programa Ppal. (main)
n, aux
Función (Factorial)
i, fact
‘n, aux’ son
LOCALES al
Prog. Ppal.
‘i, fact’ son
LOCALES a
Factorial.
F
U
N
C
I
O
N
E
S
Problema:
La
variable
n
NO
EXISTE
dentro
del
cuerpo
de
la
función
Factorial.
18
F. de la Informática - Int.a la Computación - Int.a la Programación
F. de la Informática - Int.a la Computación - Int.a la Programación - 2016
Solución 1
Mediante el uso de PARÁMETROS
FUNCIONES
Programa Ppal. (main)
n, aux
Invocación
n
Retorno
Función (Factorial)
i, fact
F. de la Informática - Int.a la Computación - Int.a la Programación - 2016
19
F
U
N
C
I
O
N
E
S
Ejemplo
#include <stdio.h>
int main() {
int n;
int aux;
printf(“Ingrese el número”);
scanf(“%d”, &aux);
getchar();
n = aux;
Factorial(n); /* 1er Fact. */
n = aux * aux;
Factorial(n); /* 2do Fact. */
n = aux * aux * aux;
Factorial(n); /* 3er Fa
Comentarios de: Modularización en lenguaje C - Funciones (0)
No hay comentarios