SlideShare una empresa de Scribd logo
1 de 44
Descargar para leer sin conexión
Programación Modular
CURSO: Programación Estructurada
Instructores:
MC. Gerardo Gálvez Gámez
Febrero 2024
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Modularidad
1. Modularidad
1.1. Declaración y uso de funciones.
1.2. Paso de parámetros
1.2.1. Por valor
1.2.2. Por referencia
1.3. Creación de bibliotecas de funciones
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Aprendizajes Esperados
• Identificar las ventajas, desventajas, estructura y
usos de la programación modular.
• Identificar la diferencia entre parámetros y
argumentos, su estructura e importancia,
mediante una investigación bibliográfica,
presentando ejemplos de programas en
exposición grupal.
• Realizar ejercicios en la plataforma OmegaUp que
involucren la implementación de métodos o
funciones con pase de parámetros en la
resolución de problemas, documentar y exponer.
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
¿Qué es la Programación Modular?
La programación modular es un paradigma
(modelo) de programación, que consiste en dividir
un problema en subproblemas con el fin de
simplificarlo.
Aplicando la Programación Modular, podemos
descomponer problemas grandes y tediosos en
pequeños subproblemas, y estos a su vez en otros
más pequeños, hasta poder resolverlos fácilmente
con un lenguaje de programación. A esta técnica la
llamaremos 'divide y vencerás’.
Un módulo es cada una de las partes del programa
que resuelve un subproblema en las que se dividió
el problema original.
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Concepto de Función(método, módulo)
• Una función es un conjunto de
instrucciones a las que se les da un
determinado nombre de tal manera que
sea posible ejecutarlas en cualquier
momento sin tenerlas que rescribir sino
usando sólo su nombre.
• A estas instrucciones se les denomina
cuerpo de la función, y a su ejecución a
través de su nombre se le denomina
llamada a la función.
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Uso de funciones
Uno de los principios básicos del diseño de aplicaciones es
que deben estar divididas en unidades funcionales, ya
que las secciones pequeñas de código son más fáciles de
entender, diseñar, desarrollar y depurar.
La división de una aplicación en unidades funcionales
permite también la reutilización de componentes
funcionales en toda la aplicación.
– Definición de funciones.
– Llamadas a funciones.
– Uso de la instrucción return.
– Uso de variables locales.
– Devolución de valores.
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Uso de funciones
• En C++ se debe declarar una función
antes de utilizarla.
• La declaración de la función indica al
compilador el tipo de valor que devuelve
la función y el número y tipos de
argumentos que acepta.
• Se utilizan para estructurar el código de
un programa.
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Definición de la función
Una función es una serie de instrucciones C++ que han sido
agrupadas bajo un nombre determinado.
Ejemplo:
▫ main es la función donde comienza la ejecución de un programa C.
Para definir funciones propias se usa la siguiente sintaxis:
<tipoRetorno> <FuncionName<(Lista de parámetros )
{
cuerpo de la función
}
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Definición de la función
Cuando se crea una función hay que especificar lo siguiente:
▫Nombre
– Una función no puede tener el mismo nombre que una variable, una
constante o cualquier otro elemento que no sea un código y haya
sido declarado en la clase. El nombre de la función puede ser
cualquier identificador permitido de C++ y distingue entre
mayúsculas y minúsculas.
▫Lista de parámetros
– A continuación del nombre de la función viene una lista de
parámetros para el la función. Esta lista aparece entre paréntesis
que deben estar presentes aunque no hay ningún parámetro.
▫Cuerpo del método
– Después de los paréntesis viene el cuerpo de la función, que debe
estar entre llaves ({ y }) aunque no contenga más que una
instrucción.
▫<tipoRetorno> indica cuál es el tipo de dato que la función
devuelve, y si no devuelve ninguno se ha de escribir void en su
lugar.
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Llamadas a Funciones
Una vez definido una función, se puede:
▫Llamar a una función:
– Se usa el nombre de la función seguido de una lista
de parámetros entre paréntesis.
▫Usar llamadas anidadas:
– Unas funciones pueden hacer llamadas a otras, que a
su vez pueden llamar a otras funciones, y así
sucesivamente
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Ejemplo
Función que retorna la suma de 2 números
int Suma (int a, int b){
return a+b;
}
void main(){
int x=10, y=20, z;
z = Suma(x, y);
printf("La Suma es %dn", z);
}
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Uso de la instrucción return
La instrucción return se puede emplear para hacer que una
función se devuelva inmediatamente al llamador. Sin una
instrucción return, lo normal es que la ejecución se
devuelva al llamador cuando se alcance la última
instrucción de la función.
• Return inmediato
• Return con una
instrucción condicional
void Example( )
{
int Numero;
printf("Hello");
if (Numero < 10)
{
return;
}
printf("World");
}
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Return inmediato
Por defecto, una función es devuelto a su llamador cuando
se llega al final de la última instrucción del bloque de
código.
La instrucción return se utiliza cuando se quiere que una
función sea devuelta inmediatamente al llamador.
Ejemplo:
void Example( )
{
printf("Hola");
return;
printf("mundo");//código inalcanzable
}
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Return con una instrucción
condicional
Es mucho más habitual, y mucho más útil, utilizar la
instrucción return como parte de una instrucción
condicional como if o switch.
Esto permite que una función sea devuelta al llamador si
se cumple cierta condición.
Ejemplo: void ExampleMethod( )
{
int Numero;
printf("Hello");
if (Numero < 10)
{
return;
}
printf("World");
}
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Uso de variables locales
• Variables locales:
▫Se crean cuando comienza la función.
▫Son privadas para la función.
▫Se destruyen a la salida.
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Variables Locales
void MethodWithLocals( )
{
int x = 1; // Variable con valor inicial
int y;
char z;
...
}
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Devolución de valores
• La función se debe declarar con un tipo que no sea void.
• Se añade una instrucción return con una expresión donde:
▫Se Fija el valor de retorno.
▫Se devuelve al llamador.
• Las funciones que no son void deben devolver un valor.
int DosMasDos( ) {
int a,b;
a = 2;
b = 2;
return a + b;
}
int main( )
{
int x;
x = DosMasDos( );
printf(“%d”,x);
return 0;
}
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Las funciones que no son void
Deben devolver valores:
1. Si se declara una función con un tipo distinto de void, es
obligatorio añadir al menos una instrucción return.
El compilador intenta comprobar que cada una de estas
funciones devuelve siempre un valor a la función de llamada.
2. Si detecta que una función que no es void no incluye
ninguna instrucción return, el compilador mostrará el
siguiente mensaje de error: “No todas las rutas de código
devuelven un valor.”
Este mensaje también aparecerá si el compilador detecta que es
posible ejecutar una función que no es void sin devolver un
valor.
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Uso de parámetros
• Declaración y llamadas a parámetros
• Mecanismos de paso de parámetros
• Parámetros de entrada
• Parámetros de entrada/salida
• Normas para el paso de parámetros
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Parámetros
La forma en que se define cada parámetro de una
función depende del tipo de parámetro del que se
trate.
En C++ se admiten dos tipos de parámetros:
entrada Paso por valor
entrada
salida Paso por referencia
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Declaración y llamadas a parámetros
• Declaración de parámetros:
▫Se ponen entre paréntesis después del nombre
de la función
▫Se definen el tipo y el nombre de cada
parámetro
• Llamadas a funciones con parámetros:
▫Un valor para cada parámetro
void MethodWithParameters(int n, float y)
{ ... }
MethodWithParameters(2, 2300.67);
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Parámetro de entrada (paso por valor)
Mecanismo predeterminado para el paso de
parámetros:
▫Se copia el valor del parámetro.
▫Se puede cambiar la variable dentro de la función.
▫No afecta al valor fuera de la función.
▫El parámetro debe ser de un tipo igual o compatible.
void SumaUno(int x)
{
x++; // Incrementar x
}
int main( )
{
int k = 6;
SumaUno(k);
printf(“%d”,k); // Muestra el valor 6, no 7
}
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Parámetros de entrada
• Ejemplo:
int suma (int a, int b){
return a+b;
}
void main(){
int x=10, y=20, z;
z = suma(x, y);
printf("La Suma es %dn", z);
}
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
ExtraClases
Objetivo:
El alumno demostrara la habilidad alcanzada en clases, para
codificar diversos problemas, que utilizan procedimientos de
solución de parametros de entrada.
24
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Parámetros por Entrada Salida (Paso
por referencia puntero)
• Son similar a un parámetro de salida sólo que no es
obligatorio modificarlo dentro de la función al que
pertenece, por lo que será obligatorio pasarle una variable
inicializada ya que no se garantiza su inicialización en la
función.
• Es una referencia a una posición de memoria.
• A diferencia de un parámetro valor, un parámetro
referencia no crea una nueva ubicación de
almacenamiento. Por el contrario, un parámetro referencia
representa la misma posición de memoria que la variable
indicada en la llamada a la función.
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Uso de Punteros en Funciones
Obje%vos:
1.Entender el concepto de punteros en el lenguaje C++
y su importancia en el paso de parámetros por
referencia.
2.Aprender cómo declarar y u=lizar punteros como
parámetros de funciones en C++.
3.Prac=car mediante ejemplos para afianzar los
conocimientos adquiridos.
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Contenido:
1. Concepto de Punteros en C++:
Definición de punteros.
La relación entre punteros y direcciones de memoria.
Operadores de punteros: * (operador de indirección) y & (operador de
dirección).
2. Declaración y Uso de Punteros como Parámetros de Funciones:
Sintaxis para declarar una función que toma punteros como parámetros.
Pasar variables por referencia uPlizando punteros.
Ejemplos de funciones que operan sobre variables uPlizando punteros
como parámetros.
3. Casos de Uso y Ventajas:
Ventajas de uPlizar punteros como parámetros en comparación con el
paso por valor.
Casos de uso comunes de punteros en funciones: manipulación de
arreglos, manipulación de estructuras de datos, entre otros.
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Concepto de Punteros en C++:
Los punteros son una de las caracterís0cas más poderosas
y dis0n0vas del lenguaje C++. Permiten trabajar
directamente con direcciones de memoria, lo que
proporciona un mayor control sobre la manipulación de
datos y la ges0ón de la memoria en un programa.
• Definición de Punteros:
• Un puntero es una variable que almacena la dirección de
memoria de otra variable. En lugar de almacenar el valor
de una variable, los punteros almacenan la dirección en la
que se encuentra esa variable en la memoria.
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Relación entre Punteros y Direcciones de Memoria:
Cada variable en C++ reside en una ubicación de memoria con una
dirección única. Los punteros nos permiten acceder a esta
dirección de memoria y, por lo tanto, manipular los datos
almacenados en esa ubicación.
Operadores de Punteros:
& (Operador de dirección): Este operador se u;liza para obtener
la dirección de memoria de una variable. Por ejemplo, &variable
devuelve la dirección de memoria de variable.
* (Operador de indirección o de desreferenciación): Este
operador se u;liza para acceder al valor almacenado en la
dirección de memoria apuntada por un puntero. Por ejemplo, *ptr
accede al valor almacenado en la dirección de memoria apuntada
por ptr.
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Ejemplo
int x = 10; // Variable entera
int *ptr; // Declaración de un puntero a entero
ptr = &x; // Asignación de la dirección de memoria de x al
puntero ptr
cout<<*ptr; // Acceso al valor de x a través del puntero ptr
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Sintaxis para Declarar una Función que
Toma Punteros como Parámetros:
void nombreFuncion(tipo *nombrePuntero);
Donde:
• void: Tipo de retorno de la función, puede ser cualquier Ppo de dato.
• nombreFuncion: Nombre de la función.
• Ppo *nombrePuntero: Parámetro de la función que es un puntero. Ppo es
el Ppo de dato al que apunta el puntero.
Ejemplo de Declaración de Función que Toma un
Puntero como Parámetro
▫void duplicarValor(int *ptr);
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Uso de Punteros como Parámetros:
Al llamar a la función, se pasan las direcciones de memoria de las variables
que se desean modificar como argumentos. Dentro de la función, se puede
acceder y modificar el valor de la variable original a través del puntero.
Ejemplo:
#include <stdio.h>
void duplicarValor(int *ptr) {
*ptr *= 2; // Duplica el valor de la variable apuntada por ptr
}
int main() {
int num = 10;
cout<<("Valor original:",<<num; // Llamada a la función con la dirección de memoria de num
duplicarValor(&num);
cout <<“Valor duplicado:”<<num;
return 0;
}
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Casos de Uso y Ventajas:
Los punteros como parámetros de funciones Penen varios casos de uso y
ofrecen ventajas significaPvas en la programación en C++:
Manipulación Eficiente de Datos:
Los punteros permiten acceder y modificar directamente los valores de las
variables en la memoria, lo que puede ser más eficiente que pasar copias de
grandes estructuras de datos como parámetros.
Modificación de Variables Externas:
Al uJlizar punteros como parámetros, las funciones pueden modificar
directamente las variables definidas fuera de su ámbito local. Esto es úJl cuando
se desea modificar el estado de una variable desde una función sin tener que
devolver un valor.
Ges;ón Dinámica de Memoria:
Los punteros son fundamentales para la gesJón dinámica de memoria en C++, ya
que permiten reservar y liberar memoria en Jempo de ejecución uJlizando
funciones como malloc, calloc, realloc y free.
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
• Operaciones sobre Arreglos y Estructuras de Datos:
• Los punteros son ampliamente uPlizados en operaciones sobre
arreglos y estructuras de datos. Permiten pasar arreglos a funciones
de manera eficiente y trabajar con estructuras de datos complejas
como listas enlazadas y árboles.
• Interacción con Funciones de la Biblioteca Estándar:
• Muchas funciones de la biblioteca estándar de C uPlizan punteros
como parámetros para interactuar con los datos. Por ejemplo, la
función scanf uPliza punteros para leer datos de entrada y
almacenarlos en variables.
• OpLmización de Recursos:
• Al uPlizar punteros como parámetros en lugar de copias de variables,
se reduce la sobrecarga de memoria y se opPmiza el uso de recursos,
especialmente en aplicaciones que manejan grandes canPdades de
datos.
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Intercambian valores de variables
u2lizando punteros.
Ejemplo:
void cambia (int *a, int *b){
int temp=*a;
*a=*b;
*b=temp;
}
void main() {
int v1=10, v2=20;
cambia(&v1, &v2);
cout<<"v1 es “<<v1<<“ v2 es ”<< v2;
}
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Preguntas:
1.¿Cuál es la diferencia entre el paso de parámetros
por valor y por referencia en C++?
2.¿Por qué es ú=l u=lizar punteros como parámetros
en funciones?
3.¿Cómo se declara una función que toma un puntero
como parámetro en C++?
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
ExtraClases
Objetivo:
El alumno demostrara la habilidad alcanzada en clases, para
codificar diversos problemas, que utilizan procedimientos de
solución de parametros por referencia.
37
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Biblioteca de funciones
Una biblioteca de funciones en C++ es un
conjunto de funciones y clases que están
agrupadas y organizadas de manera lógica
y coherente para realizar tareas específicas.
Estas bibliotecas pueden ser
proporcionadas por el propio lenguaje C++
estándar, por bibliotecas de terceros o
pueden ser creadas por los programadores.
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Importancia de las bibliotecas para
modularizar el código:
Las bibliotecas ayudan a organizar el código en módulos
separados, lo que facilita su mantenimiento y reu0lización.
Permiten ocultar la implementación de las funciones,
proporcionando una interfaz clara y coherente para los
usuarios.
Las librerías pueden 0enen la extensión .h
Se u0liza la direc0va #include seguida del nombre del
archivo de encabezado entre comillas (" ").
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Ejercicio:
1. Biblioteca de Funciones Matemá%cas:
Crear una biblioteca de funciones que contenga
operaciones matemá0cas como suma, resta,
mul0plicación y división.
2. Uso de la Biblioteca en un Programa Principal:
U0lizar la biblioteca de funciones en un programa
principal para realizar cálculos matemá0cos.
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Preguntas:
1. ¿Qué son las bibliotecas de funciones y cuál es su propósito
en la programación?
2. ¿Cuál es la diferencia entre archivos de código fuente (.cpp)
y archivos de encabezado (.h) en C++?
3. ¿Cómo se incluyen bibliotecas de funciones en programas
C++ y qué direcTva de preprocesador se uTliza para ello?
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
ExtraClases
Objetivo:
El alumno demostrara la habilidad alcanzada en clases, para
codificar diversos problemas, que utilizan procedimientos de
solución empleando la creación de librerias.
43
AYDOO
U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
Preguntas ?

Más contenido relacionado

Similar a Programacion Modular lic en informa.pdf

Similar a Programacion Modular lic en informa.pdf (20)

Unidad III
Unidad IIIUnidad III
Unidad III
 
Programación Modular - Subprogramas o funciones
Programación Modular - Subprogramas o funcionesProgramación Modular - Subprogramas o funciones
Programación Modular - Subprogramas o funciones
 
Funciones en c++
Funciones en c++Funciones en c++
Funciones en c++
 
Tema vi guia de c
Tema vi guia de cTema vi guia de c
Tema vi guia de c
 
6 libro fundamentos cap__modularidad_ecler mv
6 libro fundamentos cap__modularidad_ecler mv6 libro fundamentos cap__modularidad_ecler mv
6 libro fundamentos cap__modularidad_ecler mv
 
Presen iii 26 funciones
Presen iii  26 funcionesPresen iii  26 funciones
Presen iii 26 funciones
 
Funciones en C
Funciones en CFunciones en C
Funciones en C
 
FUNCIONES LENGUAJE C
FUNCIONES LENGUAJE CFUNCIONES LENGUAJE C
FUNCIONES LENGUAJE C
 
Programacion Orientada a Objetos - Unidad 2 clases y objetos
Programacion Orientada a Objetos - Unidad 2 clases y objetosProgramacion Orientada a Objetos - Unidad 2 clases y objetos
Programacion Orientada a Objetos - Unidad 2 clases y objetos
 
Funciones en C
Funciones en CFunciones en C
Funciones en C
 
Funciones
FuncionesFunciones
Funciones
 
Funciones
FuncionesFunciones
Funciones
 
Tutorial jared
Tutorial jaredTutorial jared
Tutorial jared
 
Turbo c
Turbo cTurbo c
Turbo c
 
Introduccion a C++.pdf
Introduccion a C++.pdfIntroduccion a C++.pdf
Introduccion a C++.pdf
 
Computacion punteros
Computacion punterosComputacion punteros
Computacion punteros
 
Semana 1 - Principios de Algoritmos.pdf
Semana 1 - Principios de Algoritmos.pdfSemana 1 - Principios de Algoritmos.pdf
Semana 1 - Principios de Algoritmos.pdf
 
ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++
 
Trabajo tutorial de visual C++
Trabajo tutorial de visual C++Trabajo tutorial de visual C++
Trabajo tutorial de visual C++
 
Presentacion
PresentacionPresentacion
Presentacion
 

Programacion Modular lic en informa.pdf

  • 1. Programación Modular CURSO: Programación Estructurada Instructores: MC. Gerardo Gálvez Gámez Febrero 2024 U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
  • 2. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Modularidad 1. Modularidad 1.1. Declaración y uso de funciones. 1.2. Paso de parámetros 1.2.1. Por valor 1.2.2. Por referencia 1.3. Creación de bibliotecas de funciones
  • 3. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Aprendizajes Esperados • Identificar las ventajas, desventajas, estructura y usos de la programación modular. • Identificar la diferencia entre parámetros y argumentos, su estructura e importancia, mediante una investigación bibliográfica, presentando ejemplos de programas en exposición grupal. • Realizar ejercicios en la plataforma OmegaUp que involucren la implementación de métodos o funciones con pase de parámetros en la resolución de problemas, documentar y exponer.
  • 4. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A ¿Qué es la Programación Modular? La programación modular es un paradigma (modelo) de programación, que consiste en dividir un problema en subproblemas con el fin de simplificarlo. Aplicando la Programación Modular, podemos descomponer problemas grandes y tediosos en pequeños subproblemas, y estos a su vez en otros más pequeños, hasta poder resolverlos fácilmente con un lenguaje de programación. A esta técnica la llamaremos 'divide y vencerás’. Un módulo es cada una de las partes del programa que resuelve un subproblema en las que se dividió el problema original.
  • 5. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Concepto de Función(método, módulo) • Una función es un conjunto de instrucciones a las que se les da un determinado nombre de tal manera que sea posible ejecutarlas en cualquier momento sin tenerlas que rescribir sino usando sólo su nombre. • A estas instrucciones se les denomina cuerpo de la función, y a su ejecución a través de su nombre se le denomina llamada a la función.
  • 6. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Uso de funciones Uno de los principios básicos del diseño de aplicaciones es que deben estar divididas en unidades funcionales, ya que las secciones pequeñas de código son más fáciles de entender, diseñar, desarrollar y depurar. La división de una aplicación en unidades funcionales permite también la reutilización de componentes funcionales en toda la aplicación. – Definición de funciones. – Llamadas a funciones. – Uso de la instrucción return. – Uso de variables locales. – Devolución de valores.
  • 7. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Uso de funciones • En C++ se debe declarar una función antes de utilizarla. • La declaración de la función indica al compilador el tipo de valor que devuelve la función y el número y tipos de argumentos que acepta. • Se utilizan para estructurar el código de un programa.
  • 8. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Definición de la función Una función es una serie de instrucciones C++ que han sido agrupadas bajo un nombre determinado. Ejemplo: ▫ main es la función donde comienza la ejecución de un programa C. Para definir funciones propias se usa la siguiente sintaxis: <tipoRetorno> <FuncionName<(Lista de parámetros ) { cuerpo de la función }
  • 9. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Definición de la función Cuando se crea una función hay que especificar lo siguiente: ▫Nombre – Una función no puede tener el mismo nombre que una variable, una constante o cualquier otro elemento que no sea un código y haya sido declarado en la clase. El nombre de la función puede ser cualquier identificador permitido de C++ y distingue entre mayúsculas y minúsculas. ▫Lista de parámetros – A continuación del nombre de la función viene una lista de parámetros para el la función. Esta lista aparece entre paréntesis que deben estar presentes aunque no hay ningún parámetro. ▫Cuerpo del método – Después de los paréntesis viene el cuerpo de la función, que debe estar entre llaves ({ y }) aunque no contenga más que una instrucción. ▫<tipoRetorno> indica cuál es el tipo de dato que la función devuelve, y si no devuelve ninguno se ha de escribir void en su lugar.
  • 10. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Llamadas a Funciones Una vez definido una función, se puede: ▫Llamar a una función: – Se usa el nombre de la función seguido de una lista de parámetros entre paréntesis. ▫Usar llamadas anidadas: – Unas funciones pueden hacer llamadas a otras, que a su vez pueden llamar a otras funciones, y así sucesivamente
  • 11. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Ejemplo Función que retorna la suma de 2 números int Suma (int a, int b){ return a+b; } void main(){ int x=10, y=20, z; z = Suma(x, y); printf("La Suma es %dn", z); }
  • 12. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Uso de la instrucción return La instrucción return se puede emplear para hacer que una función se devuelva inmediatamente al llamador. Sin una instrucción return, lo normal es que la ejecución se devuelva al llamador cuando se alcance la última instrucción de la función. • Return inmediato • Return con una instrucción condicional void Example( ) { int Numero; printf("Hello"); if (Numero < 10) { return; } printf("World"); }
  • 13. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Return inmediato Por defecto, una función es devuelto a su llamador cuando se llega al final de la última instrucción del bloque de código. La instrucción return se utiliza cuando se quiere que una función sea devuelta inmediatamente al llamador. Ejemplo: void Example( ) { printf("Hola"); return; printf("mundo");//código inalcanzable }
  • 14. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Return con una instrucción condicional Es mucho más habitual, y mucho más útil, utilizar la instrucción return como parte de una instrucción condicional como if o switch. Esto permite que una función sea devuelta al llamador si se cumple cierta condición. Ejemplo: void ExampleMethod( ) { int Numero; printf("Hello"); if (Numero < 10) { return; } printf("World"); }
  • 15. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Uso de variables locales • Variables locales: ▫Se crean cuando comienza la función. ▫Son privadas para la función. ▫Se destruyen a la salida.
  • 16. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Variables Locales void MethodWithLocals( ) { int x = 1; // Variable con valor inicial int y; char z; ... }
  • 17. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Devolución de valores • La función se debe declarar con un tipo que no sea void. • Se añade una instrucción return con una expresión donde: ▫Se Fija el valor de retorno. ▫Se devuelve al llamador. • Las funciones que no son void deben devolver un valor. int DosMasDos( ) { int a,b; a = 2; b = 2; return a + b; } int main( ) { int x; x = DosMasDos( ); printf(“%d”,x); return 0; }
  • 18. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Las funciones que no son void Deben devolver valores: 1. Si se declara una función con un tipo distinto de void, es obligatorio añadir al menos una instrucción return. El compilador intenta comprobar que cada una de estas funciones devuelve siempre un valor a la función de llamada. 2. Si detecta que una función que no es void no incluye ninguna instrucción return, el compilador mostrará el siguiente mensaje de error: “No todas las rutas de código devuelven un valor.” Este mensaje también aparecerá si el compilador detecta que es posible ejecutar una función que no es void sin devolver un valor.
  • 19. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Uso de parámetros • Declaración y llamadas a parámetros • Mecanismos de paso de parámetros • Parámetros de entrada • Parámetros de entrada/salida • Normas para el paso de parámetros
  • 20. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Parámetros La forma en que se define cada parámetro de una función depende del tipo de parámetro del que se trate. En C++ se admiten dos tipos de parámetros: entrada Paso por valor entrada salida Paso por referencia
  • 21. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Declaración y llamadas a parámetros • Declaración de parámetros: ▫Se ponen entre paréntesis después del nombre de la función ▫Se definen el tipo y el nombre de cada parámetro • Llamadas a funciones con parámetros: ▫Un valor para cada parámetro void MethodWithParameters(int n, float y) { ... } MethodWithParameters(2, 2300.67);
  • 22. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Parámetro de entrada (paso por valor) Mecanismo predeterminado para el paso de parámetros: ▫Se copia el valor del parámetro. ▫Se puede cambiar la variable dentro de la función. ▫No afecta al valor fuera de la función. ▫El parámetro debe ser de un tipo igual o compatible. void SumaUno(int x) { x++; // Incrementar x } int main( ) { int k = 6; SumaUno(k); printf(“%d”,k); // Muestra el valor 6, no 7 }
  • 23. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Parámetros de entrada • Ejemplo: int suma (int a, int b){ return a+b; } void main(){ int x=10, y=20, z; z = suma(x, y); printf("La Suma es %dn", z); }
  • 24. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A ExtraClases Objetivo: El alumno demostrara la habilidad alcanzada en clases, para codificar diversos problemas, que utilizan procedimientos de solución de parametros de entrada. 24
  • 25. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Parámetros por Entrada Salida (Paso por referencia puntero) • Son similar a un parámetro de salida sólo que no es obligatorio modificarlo dentro de la función al que pertenece, por lo que será obligatorio pasarle una variable inicializada ya que no se garantiza su inicialización en la función. • Es una referencia a una posición de memoria. • A diferencia de un parámetro valor, un parámetro referencia no crea una nueva ubicación de almacenamiento. Por el contrario, un parámetro referencia representa la misma posición de memoria que la variable indicada en la llamada a la función.
  • 26. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Uso de Punteros en Funciones Obje%vos: 1.Entender el concepto de punteros en el lenguaje C++ y su importancia en el paso de parámetros por referencia. 2.Aprender cómo declarar y u=lizar punteros como parámetros de funciones en C++. 3.Prac=car mediante ejemplos para afianzar los conocimientos adquiridos.
  • 27. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Contenido: 1. Concepto de Punteros en C++: Definición de punteros. La relación entre punteros y direcciones de memoria. Operadores de punteros: * (operador de indirección) y & (operador de dirección). 2. Declaración y Uso de Punteros como Parámetros de Funciones: Sintaxis para declarar una función que toma punteros como parámetros. Pasar variables por referencia uPlizando punteros. Ejemplos de funciones que operan sobre variables uPlizando punteros como parámetros. 3. Casos de Uso y Ventajas: Ventajas de uPlizar punteros como parámetros en comparación con el paso por valor. Casos de uso comunes de punteros en funciones: manipulación de arreglos, manipulación de estructuras de datos, entre otros.
  • 28. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Concepto de Punteros en C++: Los punteros son una de las caracterís0cas más poderosas y dis0n0vas del lenguaje C++. Permiten trabajar directamente con direcciones de memoria, lo que proporciona un mayor control sobre la manipulación de datos y la ges0ón de la memoria en un programa. • Definición de Punteros: • Un puntero es una variable que almacena la dirección de memoria de otra variable. En lugar de almacenar el valor de una variable, los punteros almacenan la dirección en la que se encuentra esa variable en la memoria.
  • 29. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Relación entre Punteros y Direcciones de Memoria: Cada variable en C++ reside en una ubicación de memoria con una dirección única. Los punteros nos permiten acceder a esta dirección de memoria y, por lo tanto, manipular los datos almacenados en esa ubicación. Operadores de Punteros: & (Operador de dirección): Este operador se u;liza para obtener la dirección de memoria de una variable. Por ejemplo, &variable devuelve la dirección de memoria de variable. * (Operador de indirección o de desreferenciación): Este operador se u;liza para acceder al valor almacenado en la dirección de memoria apuntada por un puntero. Por ejemplo, *ptr accede al valor almacenado en la dirección de memoria apuntada por ptr.
  • 30. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Ejemplo int x = 10; // Variable entera int *ptr; // Declaración de un puntero a entero ptr = &x; // Asignación de la dirección de memoria de x al puntero ptr cout<<*ptr; // Acceso al valor de x a través del puntero ptr
  • 31. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Sintaxis para Declarar una Función que Toma Punteros como Parámetros: void nombreFuncion(tipo *nombrePuntero); Donde: • void: Tipo de retorno de la función, puede ser cualquier Ppo de dato. • nombreFuncion: Nombre de la función. • Ppo *nombrePuntero: Parámetro de la función que es un puntero. Ppo es el Ppo de dato al que apunta el puntero. Ejemplo de Declaración de Función que Toma un Puntero como Parámetro ▫void duplicarValor(int *ptr);
  • 32. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Uso de Punteros como Parámetros: Al llamar a la función, se pasan las direcciones de memoria de las variables que se desean modificar como argumentos. Dentro de la función, se puede acceder y modificar el valor de la variable original a través del puntero. Ejemplo: #include <stdio.h> void duplicarValor(int *ptr) { *ptr *= 2; // Duplica el valor de la variable apuntada por ptr } int main() { int num = 10; cout<<("Valor original:",<<num; // Llamada a la función con la dirección de memoria de num duplicarValor(&num); cout <<“Valor duplicado:”<<num; return 0; }
  • 33. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Casos de Uso y Ventajas: Los punteros como parámetros de funciones Penen varios casos de uso y ofrecen ventajas significaPvas en la programación en C++: Manipulación Eficiente de Datos: Los punteros permiten acceder y modificar directamente los valores de las variables en la memoria, lo que puede ser más eficiente que pasar copias de grandes estructuras de datos como parámetros. Modificación de Variables Externas: Al uJlizar punteros como parámetros, las funciones pueden modificar directamente las variables definidas fuera de su ámbito local. Esto es úJl cuando se desea modificar el estado de una variable desde una función sin tener que devolver un valor. Ges;ón Dinámica de Memoria: Los punteros son fundamentales para la gesJón dinámica de memoria en C++, ya que permiten reservar y liberar memoria en Jempo de ejecución uJlizando funciones como malloc, calloc, realloc y free.
  • 34. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A • Operaciones sobre Arreglos y Estructuras de Datos: • Los punteros son ampliamente uPlizados en operaciones sobre arreglos y estructuras de datos. Permiten pasar arreglos a funciones de manera eficiente y trabajar con estructuras de datos complejas como listas enlazadas y árboles. • Interacción con Funciones de la Biblioteca Estándar: • Muchas funciones de la biblioteca estándar de C uPlizan punteros como parámetros para interactuar con los datos. Por ejemplo, la función scanf uPliza punteros para leer datos de entrada y almacenarlos en variables. • OpLmización de Recursos: • Al uPlizar punteros como parámetros en lugar de copias de variables, se reduce la sobrecarga de memoria y se opPmiza el uso de recursos, especialmente en aplicaciones que manejan grandes canPdades de datos.
  • 35. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Intercambian valores de variables u2lizando punteros. Ejemplo: void cambia (int *a, int *b){ int temp=*a; *a=*b; *b=temp; } void main() { int v1=10, v2=20; cambia(&v1, &v2); cout<<"v1 es “<<v1<<“ v2 es ”<< v2; }
  • 36. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Preguntas: 1.¿Cuál es la diferencia entre el paso de parámetros por valor y por referencia en C++? 2.¿Por qué es ú=l u=lizar punteros como parámetros en funciones? 3.¿Cómo se declara una función que toma un puntero como parámetro en C++?
  • 37. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A ExtraClases Objetivo: El alumno demostrara la habilidad alcanzada en clases, para codificar diversos problemas, que utilizan procedimientos de solución de parametros por referencia. 37
  • 38. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A
  • 39. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Biblioteca de funciones Una biblioteca de funciones en C++ es un conjunto de funciones y clases que están agrupadas y organizadas de manera lógica y coherente para realizar tareas específicas. Estas bibliotecas pueden ser proporcionadas por el propio lenguaje C++ estándar, por bibliotecas de terceros o pueden ser creadas por los programadores.
  • 40. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Importancia de las bibliotecas para modularizar el código: Las bibliotecas ayudan a organizar el código en módulos separados, lo que facilita su mantenimiento y reu0lización. Permiten ocultar la implementación de las funciones, proporcionando una interfaz clara y coherente para los usuarios. Las librerías pueden 0enen la extensión .h Se u0liza la direc0va #include seguida del nombre del archivo de encabezado entre comillas (" ").
  • 41. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Ejercicio: 1. Biblioteca de Funciones Matemá%cas: Crear una biblioteca de funciones que contenga operaciones matemá0cas como suma, resta, mul0plicación y división. 2. Uso de la Biblioteca en un Programa Principal: U0lizar la biblioteca de funciones en un programa principal para realizar cálculos matemá0cos.
  • 42. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Preguntas: 1. ¿Qué son las bibliotecas de funciones y cuál es su propósito en la programación? 2. ¿Cuál es la diferencia entre archivos de código fuente (.cpp) y archivos de encabezado (.h) en C++? 3. ¿Cómo se incluyen bibliotecas de funciones en programas C++ y qué direcTva de preprocesador se uTliza para ello?
  • 43. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A ExtraClases Objetivo: El alumno demostrara la habilidad alcanzada en clases, para codificar diversos problemas, que utilizan procedimientos de solución empleando la creación de librerias. 43
  • 44. AYDOO U N I V E R S I D A D A U T Ó N O M A D E S I N A L O A Preguntas ?