PortadaCursoc++2-84448387

La App Makers

Introducción:

El concepto modularidad es tratar a un problema mayor, como una serie de problemas menores, obviamente más fáciles de resolver.

La modularidad consiste en dividir un programa en módulos que puedan compilarse por separado, sin embargo tendrá conexiones con otros módulos.

La modularidad también tiene principios y son los siguientes:

  1. Capacidad de descomponer un sistema complejo.
  2. Capacidad de componer a través de sus módulos.
  3. Comprensión de sistema en partes.

Pero.. ¿Qué significa cada módulo?

Capacidad de descomponer un sistema complejo

Recuerdas el principio de «Divide y Vencerás», en este procedimiento se realiza algo similar, ya qué descompones un sistema en subprogramas (recuerda llamarlos módulos), el problema en general lo divides en problemas más pequeños.

Capacidad de componer a través de sus módulos

Indica la posibilidad de componer el programa desde los problemas más pequeños  y resolviendo el problema en general, particularmente cuando se crea software se utilizan algunos módulos existentes para poder formar lo que nos solicitan, estos módulos que se integran a la aplicación deben de ser diseñados para ser reusables.

Comprensión de sistema en partes

El poder tener cada parte separada nos ayuda a la comprensión del código y del sistema, también a la modificación del mismo, recordemos que si el sistema necesita modificaciones y no hemos trabajado con módulos definitivamente eso será un caos.

Una de las razones por la cuál es útil hacerlo modular es debido a que podemos tener los límites bien definidos y claro es lo más valioso a la hora de leer el programa, recordemos una de las buenas prácticas «Programe pensando en quien mantendrá el código».

Indice del Curso

Se ha realizado este curso con la idea que contenga 7 unidades hasta el momento, eso no quiere decir que se vaya anexando otros temas en el futuro.El mismo va tener el siguiente temario.Haz clic en los enlaces de los temas.

Funciones un recurso como para modular

Son módulos a los que se le pasan una serie de datos (variables), o no, y devuelven una variable. Entonces, si devuelven una variable, podríamos decir que devuelven un determinado tipo de dato, por ejemplo: int, char, bool, long, etc..

Hay que diferenciar dos cosas: una es cuando declaro o defino la función y otra cosa es cuando llamo a la función.

En la declaración se define lo mas técnico de la función:

  • el tipo de dato de la función
  • el tipo de dato de los parámetros que le pasamos
  • los parámetros
  • codificamos lo que va a hacer esa función.

Cuando se llama a la función lo que en realidad se quiere decir, es que se va a usar esa función. No nos importa cómo está codificada en ese momento o como lo hace. Nosotros sabemos lo que hace, y la llamamos para que lo realice.

Declaración:

Implementemos una función que sume dos valores enteros y devuelva su resultado entero. (Suma de enteros, devuelve un entero).

A tener en cuenta:

  • Fíjese que int Sumar ()”, devuelve un tipo de entero int.
  • Declaro numero3 que es local de la función. Sumar(). ¿Que quiere decir que sea local? Que solamente Sumar() sabe de la existencia de esta variable. NINGUNA otra lo conoce.
  • Una vez que sumo los dos enteros, los retorno “return”. No tiene sentido sumar dos valores y no hacer nada después, es procesamiento desperdiciado.
  • numero1 y numero2 se los llama parámetros.

Llamar:

Antes que nada, hay que tener en cuenta, como las funciones devuelven valores, estos valores deben ser asignados a otra variable. Sino no tiene sentido devolver algo para nada.

En la línea 14, se usa la función Sumar, sin declararle nada, porque no es el lugar para eso. Solamente se llama y le pasamos las variables que se van a usar. Hay que tener en cuenta que importa el orden en que se le pasan los parámetros. (En este caso no porque la suma es conmutativa, pero si vamos a la “resta de números enteros” no es lo mismo 7-2 que 2-7).

Compilamos y nos queda :

Pueden existir funciones que no haya que pasar parámetros. Ejemplo:

Esta función solamente existe para devolver la letra ‘H’, nada más. Obviamente no tiene sentido ahora, pero puede ser que necesitemos funciones que devuelvan valores aleatorios y en ese caso va a ser útil este tipo de funciones.

Acciones un recurso como para modular

Parecidas a las funciones y muy fáciles de confundir pero con una gran diferencia. Las acciones NO devuelven valores, solamente hacen cosas.

También son declaradas e implementadas, pero también es distinta la forma:

Declaración:

Implementemos una función que solamente muestre un número.

Veamos que el tipo de la función es “void”, que significa que no retorna valores , solamente ejecuta sentencias.

Llamar:

Al no devolver valores, se puede llamar sin necesidad de asignar a variables, de la siguiente forma:

Se llama la acción y se le pasan los parámetros, y listo.

Variables Locales y Globales

Ya hablamos de las locales, pero para entenderlo bien en la primera unidad del curso.

Como se puede apreciar, tenemos variables globales que se declaran fuera del main(), y pueden ser leídas y escritas por cualquier otra función. Esto trae varios problemas obvios porque al hacer que CUALQUIERA pueda cambiarle el valor, va a traer posibles inconsistencias de datos.

El resto de “variable_local” son variables locales de las correspondientes funciones/acciones y solamente son conocidas por esas funciones/acciones.

Pasar valores por parámetro o por valor

Significa cual va ser la manera  que vamos a pasar los parámetros en las funciones/acciones.

Pasar a una variable por valor, significa que solo le paso el valor de la variable, y no es posible modificar aunque lo intente. En el ejemplo de la siguiente imagen, vemos que hace una acción que agarra a un número cualquiera y le asigna el valor 30. En el main() vemos que le paso la variable ‘a’, y aun así, cuando lo muestro por pantalla, el valor continúa siendo 5.

Caso distinto es si a la variable se la paso por parámetro. ¿Qué significa esto? que le paso la dirección de memoria donde está alojado el valor.

¿Que es la dirección de memoria? Es el espacio en memoria RAM, donde se almacena la variable.

Lo vemos en un ejemplo:

y la salida por pantalla por valor  será 30 y por referencia, o sea la dirección de memoria RAM será 0x22fe3c . Como vemos los valores pasados por referencia contienen la dirección de Memoria que contiene el valor.

Efectivamente se modificó el valor y ahí podemos ver que efectivamente haciendo que imprima &a, no nos va a dar 30, que es su valor, sino que nos va a decir la dirección de memoria de a.

Un Poco de práctica

Entonces, vamos  hacer un programa que use todo lo que vimos.
Vamos a hacer un programa, que multiplique 2 valores cualesquiera, le cambie el valor a uno de estos valores a 26 y luego imprima a todos los valores.

Entonces, si lo pensamos modular, tendríamos que tener:

  • Una función que multiplique valores y retorne su resultado.
  • Una acción que cambie el valor de un número a 26, porque no me interesa qué devuelva; ya se que la variable va a seguir valiendo 26.
  • Una acción que imprima valores.

y el resultado será el siguiente:

Distintos tipos de funciones, o al menos las que van a necesitar por ahora.

Conclusión: 

El uso de funciones y acciones hacen que el código se mas fácil de comprender para el que realizó el algoritmo como para otro programador. En definitiva proporciona esta característica que el código este más prolijo y ordenado.

  • Tutorial
  • Programación
2 Comentarios
  1. MRX_ Autor
    MRX_ 2 meses

    Hola Comunidad.Estuve revisando y editando algunas imágenes y explicaciones de los primeros capítulos, si ven algunos otros errores, me avisan. Gracias

    3+
  2. Daniel01
    Daniel01 2 meses

    Hola,Buenos Días, Ok, te ayudamos a revisarlo.

    0

Contesta

CONTACTANOS

Esta es su red social de tecnología para compartir tus ideas y proyectos .Puedes enviarnos un correo si tienes dudas.Nos vemos

Enviando

Nuevo informe

Cerrar

Inicia Sesión con tu Usuario y Contraseña

o    

¿Olvidó sus datos?

Create Account