8/14/2019 Clase Programacin 15
1/54
Programacin
Prof. Gonzalo [email protected]
Facultad de Ingeniera Universidad Central de Venezuela
Clase 15. M ulos en C
8/14/2019 Clase Programacin 15
2/54
Clase Anterior
Creacin de un programa Compilado.
Ambiente de Desarrollo C.
Lenguaje C/C++
Vocabulario: Identificadores, Palabras Claves,
Programacin Prof. Gonzalo Mller Clase 15 GM - 2
pera ores, onstantes, etc.Estructura bsica de un programa en C.
Funcin Main.Declaraciones: Tipos de Datos.
Secuencia de Sentencias.
8/14/2019 Clase Programacin 15
3/54
Clase Anterior
Directivas de preprocesador, Libreras y Funciones.
Funciones Entrada/Salida:
printf: Sin formato, Con formato.scanf.
Programacin Prof. Gonzalo Mller Clase 15 GM - 3
Sentencias de Control.Condicionales.
Repetitivas.Metodologa para creacin de un programa C.
8/14/2019 Clase Programacin 15
4/54
Metodologa de la Programacin Modular
Nombre armetro1 armetro2
Programacin Prof. Gonzalo Mller Clase 15 GM - 4
Fin
8/14/2019 Clase Programacin 15
5/54
Metodologa de la Programacin Modular
Tabla de Mdulos: Una vez desarrollados losalgoritmos de todos los mdulos, se debe establecer
los tipos de datos para las variables y los parmetros.Es de utilidad para la posterior implementacin en ellenguaje construir una tabla donde se listen todos los
Programacin Prof. Gonzalo Mller Clase 15 GM - 5
mdulos con sus parmetros y retorno indicando eltipo de dato para cada uno de estos.
Modulo Parmetros Retorno Tipomodulo1 parametro11:tipo11, retorno1:tipo1 subrutina o funcin
moduloN parametroN1:tipoN1, retornoN :tipoN subrutina o funcin
8/14/2019 Clase Programacin 15
6/54
Programacin Modular en C
Mdulos en C: El uso de mdulos en C consta de trespasos:
1. Declaracin.2. Llamada.
Programacin Prof. Gonzalo Mller Clase 15 GM - 6
. e n c n.
8/14/2019 Clase Programacin 15
7/54
Declaracin de Mdulos en C
1. Declaracin: se indica al compilador el encabezado delmdulo, conocido como prototipo, de tal forma que al
llamar al mismo dentro del cdigo ste seareconocido.
Las declaraciones de los mdulos a i ual ue las
Programacin Prof. Gonzalo Mller Clase 15 GM - 7
variables debe hacer antes de ser utilizados, por loque se colocan antes de las declaraciones de las
variables globales.
Dar a conocer el mdulo para poder hacer uso a lolargo de todo el programa.
8/14/2019 Clase Programacin 15
8/54
Definicin de Mdulos en C
3. Definicin: constituye la codificacin del algoritmodel mdulo, es decir, el conjunto de sentencias
necesarias para que ste realice la tarea a la que estdestinado.
Usualmente la definicin de los mdulos se coloca
Programacin Prof. Gonzalo Mller Clase 15 GM - 8
luego del bloque principal.Al igual que el main un mdulo:
Puede declarar sus propias variables.Puede realizar llamadas a otros mdulos.
Debe ser documentado adecuadamente.
8/14/2019 Clase Programacin 15
9/54
Declaracin y Definicin de Mdulos en C
Declaracin y Definicin de una funcin :
tipo nombre ( tipo parmetro1 , tipo parmetro2 ,){
Declaraciones locales
Programacin Prof. Gonzalo Mller Clase 15 GM - 9
//// Algoritmo
////return valor ;
}
8/14/2019 Clase Programacin 15
10/54
Declaracin y Definicin de Mdulos en C
Tipo del Valor de Retorno Tipo del Parmetro
Identificador de la funcintipo nombre ( tipo parmetro1 , tipo parmetro2 ,){
Declaraciones locales
Programacin Prof. Gonzalo Mller Clase 15 GM - 10
Mismo Tipo//// Algoritmo
////return valor ;
}
8/14/2019 Clase Programacin 15
11/54
Declaracin y Definicin de Mdulos en C
Identificador: Es el nombre que el programadorcoloca para referirse a una determinada locacin de
memoria, ya sea una variable o una funcin.
Programacin Prof. Gonzalo Mller Clase 15 GM - 11
cubo
F41C LocalidadDireccin
8/14/2019 Clase Programacin 15
12/54
Declaracin y Definicin de Mdulos en C
Reglas para definir un Identificador:
1. Se forma con un secuencia de los siguientes
caracteres:a b c d e f g h i j k l m n o p q r s t u v w x y z
Programacin Prof. Gonzalo Mller Clase 15 GM - 12
A B C D E F G H I J K L M N O P Q R S TU V W X Y Z
0 1 2 3 4 5 6 7 8 9 _
8/14/2019 Clase Programacin 15
13/54
Declaracin y Definicin de Mdulos en C
2. No puede contener espacios en blanco, ni ningnotro carcter diferente de los indicados en
anteriormente.3. El primer carcter no puede ser un dgito.
Programacin Prof. Gonzalo Mller Clase 15 GM - 13
.minsculas.
5. Puede tener hasta 31 caracteres.
Recomendacin: utilizar un nombre que tenganun significado la funcin que representa.
8/14/2019 Clase Programacin 15
14/54
Declaracin y Definicin de Mdulos en C
Variable retorno : Usualmente se define una variablelocal que contiene el valor a retornar.tipo nombre ( tipo parmetro1 , tipo parmetro2 ,){
// Declaraciones localesMismo Tipo
Programacin Prof. Gonzalo Mller Clase 15 GM - 14
tipo resultado ;
// Algoritmo
////return resultado ;
}
Variable retorno
Retorno
8/14/2019 Clase Programacin 15
15/54
Declaracin y Definicin de Mdulos en C
Ejemplo: Definir una funcin que calcule el cubo deun nmero:signed long cubo( signed short numero){
// Declaraciones locales//
Mismo Tipo
Programacin Prof. Gonzalo Mller Clase 15 GM - 15
signed long res;// Algoritmo//res = numero*numero*numero;//return res;
}
Variable retorno
Retorno
8/14/2019 Clase Programacin 15
16/54
Declaracin y Definicin de Mdulos en C
Declaracin y Definicin de una subrutina :
void nombre ( tipo parmetro1 , tipo parmetro2 ,){
Programacin Prof. Gonzalo Mller Clase 15 GM - 16
//
// Algoritmo
//}
8/14/2019 Clase Programacin 15
17/54
Declaracin y Definicin de Mdulos en C
Le indica al C que NO hay Valor de Retorno
void nombre ( tipo parmetro1 , tipo parmetro2 ,){
Programacin Prof. Gonzalo Mller Clase 15 GM - 17
//
// Algoritmo
//}
8/14/2019 Clase Programacin 15
18/54
Declaracin y Definicin de Mdulos en C
Ejemplo: Definir una subrutina para escribir enpantalla un resultado numrico:
void escribeResultado( float resultado){
printf( El Resultado es %f , resultado);
Con Parmetro
Programacin Prof. Gonzalo Mller Clase 15 GM - 18
Ejemplo: Definir una subrutina para escribir enpantalla un encabezado:
void escribeEncabezado(){
printf( GOLTEC 1.0\n2006\n );
}
Sin Parmetro
8/14/2019 Clase Programacin 15
19/54
Declaracin y Definicin de Mdulos en C
// Directivas de preprocesador//
Programacin Prof. Gonzalo Mller Clase 15 GM - 19
// Mdulos//
main()
{
8/14/2019 Clase Programacin 15
20/54
Llamada de Mdulos en C
2. Llamada: se pone en ejecucin el mdulo.
Se coloca el nombre del mdulo.
Seguido de los argumentos separados por comasentre parntesis.
Programacin Prof. Gonzalo Mller Clase 15 GM - 20
nom re argumento1 , argumento2 ,
Llamada a una subrutina: se pone en ejecucin a travsuna sentencia de llamada:
nombre ( argumento1 , argumento2 , );
8/14/2019 Clase Programacin 15
21/54
Llamada de Mdulos en C
Llamada a una funcin:Sentencia a Asignacin.
Ejemplo: s = cubo(a);Expresin Lgica.
Programacin Prof. Gonzalo Mller Clase 15 GM - 21
u
Expresin Aritmtica.Ejemplo: (cubo(a) + 2)/cubo(b)
Argumento de otra Llamada.Ejemplo: cubo(a + cubo(b))
escribeResultado(cubo(a));
Argumento
Argumento
8/14/2019 Clase Programacin 15
22/54
Programacin Modular en C
Ejemplo: Disear y construir un programa modular enC con acoplamiento de datos bsicos para calcular las
races de una ecuacin cuadrtica.
Programacin Prof. Gonzalo Mller Clase 15 GM - 22
8/14/2019 Clase Programacin 15
23/54
Ejercicio
Disear y construir un programa modular en C conacoplamiento de datos bsico para calcular el cubo dedos nmeros. Al menos 3 mdulos:
Programacin Prof. Gonzalo Mller Clase 15 GM - 23
Fase 1: Diseo y Anlisis:DTDDES, DRE DF y LV de Mdulos y TM.
DES, DRE DF, LV y CF de Bloque Principal.Fase 2: Codificacin: programa modular en C.Notacin, Documentacin e Indentacin.
ectura, proceso y escritura
8/14/2019 Clase Programacin 15
24/54
Ejercicio
Disear y construir un programa modular en C conacoplamiento de datos bsico para calcular el cubo deN nmeros. Al menos 3 mdulos:
Programacin Prof. Gonzalo Mller Clase 15 GM - 24
Fase 1: Diseo y Anlisis:DTDDES, DRE DF y LV de Mdulos y TM.
DES, DRE DF, LV y CF de Bloque Principal.Fase 2: Codificacin: programa modular en C.Notacin, Documentacin e Indentacin.
ectura, proceso y escritura
8/14/2019 Clase Programacin 15
25/54
Funciones Matemticas en C
C ofrece un conjunto de funciones matemticaspredefinidas en las libreras estndar math, las
principales operaciones definidas son:Raz Cuadrada.
Programacin Prof. Gonzalo Mller Clase 15 GM - 25
.
Seno.
Coseno.
Tangente.
Exponencial.
Logaritmos.
8/14/2019 Clase Programacin 15
26/54
Funciones Matemticas en C
Raz Cuadrada: La funcin sqrt permite obtener la razcuadrada de un valor
sqrt( A)
2 A
Programacin Prof. Gonzalo Mller Clase 15 GM - 26
sqrt( aria le)
sqrt( Constante)
sqrt( Expresin Aritmtica)
8/14/2019 Clase Programacin 15
27/54
Funciones Matemticas en C
Potencia: La funcin pow permite elevar un nmero auna potencia dada.
pow( A, B)
B
A
Programacin Prof. Gonzalo Mller Clase 15 GM - 27
pow( Varia le, Varia le) pow( Variable, Constante )
pow( Variable, Expresin Aritmtica)
pow( Expresin Aritmtica, Expresin Aritmtica )
8/14/2019 Clase Programacin 15
28/54
Funciones Matemticas en C
Seno: La funcin sin calcula el seno de un valor dadoen radianes.
sin( Variable)sin( Constante)
Programacin Prof. Gonzalo Mller Clase 15 GM - 28
s n( Expresin Aritmtica)Arcoseno:
asin( Variable)
asin( Constante)
asin( Expresin Aritmtica)
8/14/2019 Clase Programacin 15
29/54
Funciones Matemticas en C
Coseno: La funcin cos calcula el coseno de un valordado en radianes.
cos( Variable)cos( Constante)
Programacin Prof. Gonzalo Mller Clase 15 GM - 29
cos( Expresin Aritmtica)Arcocoseno:
acos( Variable)
acos( Constante)
acos( Expresin Aritmtica)
8/14/2019 Clase Programacin 15
30/54
Funciones Matemticas en C
Tangente: La funcin tan calcula la tangente de un valor dado en radianes.
tan( Variable)tan( Constante)
Programacin Prof. Gonzalo Mller Clase 15 GM - 30
tan( Expresin Aritmtica)Arcotangente:
atan( Variable)
atan( Constante)
atan( Expresin Aritmtica)
8/14/2019 Clase Programacin 15
31/54
Funciones Matemticas en C
Exponencial: La funcin exp calcula e (constante deEuler) elevado a un valor dado.
exp( A)A
e
Programacin Prof. Gonzalo Mller Clase 15 GM - 31
exp( aria le)exp( Constante)
exp( Expresin Aritmtica)
8/14/2019 Clase Programacin 15
32/54
Funciones Matemticas en C
Logaritmo: La funcin log10 calcula logaritmo base 10de un valor dado.
log10( A) Alog 10
Programacin Prof. Gonzalo Mller Clase 15 GM - 32
log1 ( aria le)log10( Constante)
log10( Expresin Aritmtica)
8/14/2019 Clase Programacin 15
33/54
Funciones Matemticas en C
Logaritmo neperiano: La funcin log calcula logaritmobase e de un valor dado.
log( A) Alog e
Programacin Prof. Gonzalo Mller Clase 15 GM - 33
log( Varia le)log( Constante)
log( Expresin Aritmtica)
8/14/2019 Clase Programacin 15
34/54
Funciones Matemticas en C
Valor Absoluto : El mtodo abs calcula el valorabsoluto de un valor entero.
abs( A) A
Programacin Prof. Gonzalo Mller Clase 15 GM - 34
a s ar a eabs( Constante)
abs( Expresin Aritmtica)
8/14/2019 Clase Programacin 15
35/54
Funciones Matemticas en C
Valor Absoluto : El mtodo fabs calcula el valorabsoluto de un valor real.
fabs( A) A
Programacin Prof. Gonzalo Mller Clase 15 GM - 35
a s ar a efabs( Constante)
fabs( Expresin Aritmtica)
8/14/2019 Clase Programacin 15
36/54
Funciones Matemticas en C
Nmeros Aleatorios : En ocasiones es necesarioobtener nmeros en forma aleatoria.
rand(): Es una funcin de la librera stdlib, generanmeros enteros positivos pseudo aleatoriosuniformemente distribuidos entre 0 32767
Programacin Prof. Gonzalo Mller Clase 15 GM - 36
(RAND_MAX).
Pseudo aleatorios ya que se generan una sucesin{Nk } de nmeros a travs de una funcin fija f(k)
8/14/2019 Clase Programacin 15
37/54
Funciones Matemticas en C
Si se requiere un rango diferente se debe construiruna expresin que realice el ajuste, tal como:
rand() % (N + 1) Rango: 0Nrand() / 32767.0 Rango: 0.01.0
Programacin Prof. Gonzalo Mller Clase 15 GM - 37
8/14/2019 Clase Programacin 15
38/54
Funciones Matemticas en C
srand(semilla): Es una funcin de la librera stdlib,que permite establecer la semilla del generador denmeros pseudo aleatorios.
Programacin Prof. Gonzalo Mller Clase 15 GM - 38
.
Normalmente se llama al comienzo del programaantes de la primera llamada a rand().
La semilla permite ajustar en que elemento de la
sucesin {N k } comienza el generador.
8/14/2019 Clase Programacin 15
39/54
Funciones Matemticas en C
Ejemplo: Construir un programa en C para hallar lahipotenusa de un triangulo cuyos catetos son A y Bson aleatorios.
A = Entero entre 0 y 8, B = Real entre 0 y 5.
Programacin Prof. Gonzalo Mller Clase 15 GM - 39
8/14/2019 Clase Programacin 15
40/54
Ejercicios
Construir un programa modular en C conacoplamiento de datos bsico para:
1) Calcular f(x) = sen(2*x)+x4 para 2 puntos.2) Determinar las distancias entre 2 maquinas.3) Calcular el factorial de 2 nmeros.
Programacin Prof. Gonzalo Mller Clase 15 GM - 40
4) Dado un conjunto de 2 nmeros, establecercuales son capica.Fase 1: Diseo y Anlisis:DES, DTD
DES, DRE DF y LV de Mdulos y TM.DRE DF, LV y CF de Bloque Principal.Fase 2: Codificacin: programa modular en C.
Ej i i
8/14/2019 Clase Programacin 15
41/54
Ejercicios
Construir un programa modular en C conacoplamiento de datos bsico para:
1) Calcular f(x) = sen(2*x)+x4 para N puntos.2) Determinar las distancias entre N maquinas.3) Calcular el factorial de N nmeros.
Programacin Prof. Gonzalo Mller Clase 15 GM - 41
4) Dado un conjunto de N nmeros, establecercuales son capica.Fase 1: Diseo y Anlisis:DES, DTD
DES, DRE DF y LV de Mdulos y TM.DRE DF, LV y CF de Bloque Principal.Fase 2: Codificacin: programa modular en C.
Ej i i
8/14/2019 Clase Programacin 15
42/54
Ejercicios
Construir un programa modular en C conacoplamiento de datos bsico para:
5) Dado 2 puntos en R 2, determinar cuales seencuentra por encima, por debajo y sobre una rectadada por el usuario.
Programacin Prof. Gonzalo Mller Clase 15 GM - 42
6) Dado 2 intervalos, calcular la sumatoria de losnmeros que contiene cada intervalo.Fase 1: Diseo y Anlisis:DES, DTD
DES, DRE DF y LV de Mdulos y TM.DRE DF, LV y CF de Bloque Principal.
Fase 2: Codificacin: programa modular en C.
Ej i i
8/14/2019 Clase Programacin 15
43/54
Ejercicios
Construir un programa modular en C conacoplamiento de datos bsico para:
5) Dado un conjunto de puntos en R 2, determinarcuales se encuentra por encima, por debajo y sobreuna recta dada por el usuario.
Programacin Prof. Gonzalo Mller Clase 15 GM - 43
6) Dado N intervalos, calcular la sumatoria de losnmeros que contiene cada intervalo.Fase 1: Diseo y Anlisis:DES, DTD
DES, DRE DF y LV de Mdulos y TM.DRE DF, LV y CF de Bloque Principal.
Fase 2: Codificacin: programa modular en C.
Ej i i
8/14/2019 Clase Programacin 15
44/54
Ejercicios
Construir un programa modular en C conacoplamiento de datos bsico para:
7) Promediar los pares y promediar los impares delos nmeros entre A y B.8) Encontrar por Newton 1 solucin para f(x) = 0.
Programacin Prof. Gonzalo Mller Clase 15 GM - 44
9) Encontrar 1 Mnimo de f(x) por 1+1.Fase 1: Diseo y Anlisis:DES, DTD
DES, DRE DF y LV de Mdulos y TM.DRE DF, LV y CF de Bloque Principal.Fase 2: Codificacin: programa modular en C.
Ejercicios
8/14/2019 Clase Programacin 15
45/54
Ejercicios
Construir un programa modular en C conacoplamiento de datos bsico para:
10) Dado un conjunto de puntos en R 2, determinarcual se encuentra ms alejado del origen.11) Dado N segmentos en R 3, determinar cual tiene
Programacin Prof. Gonzalo Mller Clase 15 GM - 45
menor longitud.Fase 1: Diseo y Anlisis:DES, DTDDES, DRE DF y LV de Mdulos y TM.DRE DF, LV y CF de Bloque Principal.Fase 2: Codificacin: programa modular en C.
Resumen
8/14/2019 Clase Programacin 15
46/54
Resumen
Mdulos en C:Declaracin.
Nombre, Tipos: parmetros y retorno.Definicin.
Programacin Prof. Gonzalo Mller Clase 15 GM - 46
a otros mdulos.Variable de retorno.
LlamadaSubrutinas: Sentencia de llamada.Funciones: Asignacin, Expresiones y Argumento.
Funciones Matemticas en C.
8/14/2019 Clase Programacin 15
47/54
LecturaExtra
Programacin Prof. Gonzalo Mller Clase 15 GM - 47
Declaracin y Definicin por Separado
Otra forma de trabajar la programacin modular en C
Declaracin y Definicin por Separado
8/14/2019 Clase Programacin 15
48/54
Declaracin y Definicin por Separado
Estructura bsica de un programa modular :
// Declaraciones de mdulos//
main()
Programacin Prof. Gonzalo Mller Clase 15 GM - 48
{
}// Definiciones de mdulos
//
Declaracin y Definicin por Separado
8/14/2019 Clase Programacin 15
49/54
Declaracin y Definicin por Separado
Declaracin de un funcin : En la declaracin deuna funcin se debe establecer:
El nombre de la funcin.El tipo de dato del valor de retorno.
Programacin Prof. Gonzalo Mller Clase 15 GM - 49
.
tipo tipo tipo tipo nombre ( tipo tipo tipo tipo parmetro1 , tipo tipo tipo tipo parmetro2 , );
Tipo del Valor de RetornoNombre de la funcin
Tipo del Parmetro 1 Tipo del Parmetro 2
Declaracin y Definicin por Separado
8/14/2019 Clase Programacin 15
50/54
Declaracin y Definicin por Separado
Ejemplo: Declarar una funcin que calcule el cubo deun nmero:
signed long cubo( signed short numero);
Programacin Prof. Gonzalo Mller Clase 15 GM - 50
Declaracin y Definicin por Separado
8/14/2019 Clase Programacin 15
51/54
Declaracin y Definicin por Separado
Declaracin de una subrutina : En la declaracin deuna subrutina se debe establecer:
El nombre de la subrutina.El tipo de dato de cada uno de los parmetros.
Programacin Prof. Gonzalo Mller Clase 15 GM - 51
voidvoidvoidvoid nombre ( tipo tipo tipo tipo parmetro1 , tipo tipo tipo tipo parmetro2 , );
Le indica al C que NO hay Valor de RetornoNombre de la funcin
Tipo del Parmetro 1 Tipo del Parmetro 2
Declaracin y Definicin por Separado
8/14/2019 Clase Programacin 15
52/54
Declaracin y Definicin por Separado
Ejemplo: Declarar una subrutina para escribir en lasalida un resultado numrico:
void escribeResultado( float resultado);
Programacin Prof. Gonzalo Mller Clase 15 GM - 52
Declaracin y Definicin por Separado
8/14/2019 Clase Programacin 15
53/54
Dec a ac y De c po Sepa ado
// Declaraciones de mdulos//tipo modulo1 ( tipo parametro1 , ...);
main(){
Programacin Prof. Gonzalo Mller Clase 15 GM - 53
variable1 = modulo1 ( variable2 );
}// Definiciones de mdulos
//tipo modulo1 ( tipo parametro1 , ...){
}
Declaracin y Definicin por Separado
8/14/2019 Clase Programacin 15
54/54
y p p
// Declaraciones de mdulos//float cubo( float numero);
main(){
Programacin Prof. Gonzalo Mller Clase 15 GM - 54
x = cubo(2);
}// Definiciones de mdulos
//float cubo( float numero){
return numero*numero*numero;
}