Son 3 ventajas de utilizar la modularidad
Reducir la complejidad del problema
Reducir el tamaño del problema
Facilitar la cooperación entre programadores
Reutilizar código
Depuración mas sencilla
Se encarga de dar a conocer la función al compilador antes de que ésta sea definida
Prototipo
Técnica para resolver un problema reduciéndolo a una versión más pequeña del mismo problema hasta llegar a un caso que ya sabemos resolver
Recursividad
¿Dónde está el error?
int s(int n1, int n2);
int main(void){
printf("%d", s(2));
return 0;
}
int s(int n1, int n2){
return n1+n2;
}
numero de argumentos incorrecto
Son aquellas variables que son accesibles y modificables por todas las funciones del programa
Variables globales
Los módulos se dividen en
Funciones y procedimientos
Formato que debe utilizarse por convención para nombrar a las funciones o procedimientos
CamelCase - primera palabra toda en minúsculas, siguientes palabras con mayúscula la primera letra
Ocurre cuando una función recursiva no tiene un caso base adecuado, provocando llamadas infinitas
StackOverflow
En la llamada a la función, nombres que se le dan al 5 y al 3:
int res= suma(5,3)
argumentos
Nombre que se le da cuando una variable local tiene el mismo nombre que una global
shadowing
Subalgoritmo que recibiendo o no datos devuelve un único resultado
Función
Orden correcto de un programa modular
librerías
prototipos
main
definiciones de funciones
Es la parte donde la función se llama a sí misma con un argumento modificado, haciendo el problema más pequeño y acercándolo al caso base
Reducción
Caso base para una función recursiva suma(n) que sume los números del 1..n
suma(1) =1
Cualquier declaración dentro de los paréntesis en la declaración y/o definición de una función.
parámetro
Puede tener cero, uno o más argumentos, con los cuales realiza determinados procesos o acciones
Procedimiento
variable que recibe un valor cuando se llama a una función
Parámetro
Número máximo de veces que una función se llama a sí misma antes de alcanzar un caso base
Profundidad
resultado de llamar potencia(5) con la definición:
int potencia(int base, int exp) {
if (exp == 0)
return 1;
return base * potencia(base, exp + 1);
}
StackOverflow
Determina en qué partes del programa una variable es visible y puede usarse
Alcance
Partes de una función que obligatoriamente deben ser del mismo tipo
Tipo de retorno y valor de retorno
Máximo de parámetros permitidos en una función
253
Una función recursiva tiene un caso base correcto, pero el programa aún así entra en recursión infinita.
¿Cuál es la causa más probable de este problema?
La reducción del problema no acerca los valores al caso base.
Salida del programa:
#include <stdio.h>
int x = 10;
void f() {
int x = 5;
}
int main() {
f();
printf("%d", x);
}
x = 10
Si no existe un prototipo y se envía un argumento del tipo float a una función. Tipo de dato al que lo convertirá
double