La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Curso de C # República Bolivariana de Venezuela Área de Computación

Presentaciones similares


Presentación del tema: "Curso de C # República Bolivariana de Venezuela Área de Computación"— Transcripción de la presentación:

1 Curso de C # República Bolivariana de Venezuela Área de Computación
Facilitador: Prof. Bassam Asfur

2 Programación Modular Es un método de resolución de problemas que consiste en resolver de forma independiente los subproblemas que se obtienen de una descomposición del problema general Un módulo debe ofrecer un grupo de servicios diseñados para que el esto del programa pueda interactuar con él Es más fácil resolver un problema complejo cuando se rompe en piezas manejables. ¡Divide y Vencerás!

3 Programación Modular La base fundamental de este paradigma de programación es el módulo Un módulo en un conjunto de rutinas que prestan un servicio específico. Una rutina, subrutina o subprograma, como idea general, se presenta como un algoritmo separado del algoritmo principal, el cual permite resolver una tarea específica Decimos que algo es modular si es construido de manera tal que se facilite su ensamblaje, acomodamiento flexible y reparación de sus componentes La modularidad da una mejor compresión del problema y reduce el tamaño del código Generalmente se hace la asociación de un módulo como una caja negra. Se sabe que entra y que sale pero no como se procesa

4 Programación Modular En la programación modular se debe asegurar los siguientes preceptos ● máxima cohesión ● mínimo acoplamiento entre módulos Un módulo debe ofrecer un grupo de servicios que sin lugar a dudas deben ir juntos, por ejemplo: La Clase Math Algunas Ventajas Facilitan la escritura y depuración de un programa Localización rápida de errores La modificación de un módulo no afecta a los demás Un grupo de instrucciones que se repite en varias partes de un programa puede incluirse en un módulo y llamarlo en el programa.

5 Funciones y Procedimientos
Es evidente, que si está metodología, nos lleva a tratar con subproblemas, entonces también tengamos la necesidad de poder crear y trabajar con subprogramas para resolverlos. A estos subprogramas se les suele llamar módulos, de ahí viene el nombre de programación modular. En los lenguajes de programación disponemos de dos tipos de módulos: los procedimientos y las funciones. Elementos de la declaración de una subrutina Un nombre único en el ámbito: nombre de la función con el que se identifica y se distingue de otras. No podrá haber otra función ni procedimiento con ese nombre (salvo sobrecarga o polimorfismo en programación orientada a objetos). Un tipo de dato de retorno: tipo de dato del valor que la subrutina devolverá al terminar su ejecución. Una lista de parámetros: especificación del conjunto de argumentos (pueden ser cero, uno o más) que la función debe recibir para realizar su tarea.

6 Funciones y Procedimientos
Los procedimientos y funciones son subprogramas que realizan tareas específicas. Para invocarlo, es decir, para hacer que se ejecute, basta con escribir su nombre en el cuerpo de otro procedimiento o en el programa principal. La diferencia entre procedimiento y función está dada por su utilización dentro de nuestro diseño de la solución, un procedimiento realiza una tarea y al finalizar retorna al punto donde fue invocado, no así la función al ejecutarse obtiene un valor el cual es retornado al punto donde fue invocado por ejemplo raíz cuadrada es una función por que retorna un resultado.   Declaración de Funciones y Procedimientos Al igual que los identificadores (Variables), los procedimientos y funciones deben declararse dentro del programa. La declaración de un procedimiento NO indica a la computadora que ejecute las instrucciones dadas, sino que indica a la computadora cuáles son estas instrucciones y dónde están localizadas cuando sea necesario.

7 Funciones y Procedimientos
Una función es una un conjunto de instrucciones, con un nombre asociado, que cumple las siguientes características: Tiene uno o más parámetros de entrada. Tiene un parámetro exclusivamente de salida y de tipo simple (es decir, lo que devuelve). Muchos lenguajes de programación no requieren el hecho de que el parámetro sea simple pero en esta asignatura se considerará la versión más purista. Todos los valores de entrada son necesarios y suficientes para determinar el valor de salida.

8 Funciones y Procedimientos
PARÁMETROS DE UN PROCEDIMIENTO O FUNCIÓN Los parámetros o argumentos de una función o procedimiento son el mecanismo que permite el intercambio de datos entre la función o procedimiento que es llamado y el que realiza la llamada. En el momento de definir una función o procedimiento, es necesario especificar los parámetros, con el tipo asociado. En este momento, los parámetros se denominan formales. Por otra parte, en el momento de hacer la llamada a una función o procedimiento, cuando se utilizan literales o variables como lista de parámetros (que deben emparejarse con los parámetros formales en cuanto al tipo y orden). Estos parámetros se denominan reales.

9 Funciones y Procedimientos
Parámetros de entrada Permiten aportar datos a función o procedimiento por parte del algoritmo que le invoca. Un parámetro real asociado con un parámetro formal de entrada, puede ser un literal, una variable o incluso el valor que se obtendrá como resultado de la evaluación de una expresión. La definición de un parámetro formal de entrada se hace anteponiendo el modificador delante del nombre del parámetro formal. Modificando un parámetro formal de entrada nunca se modifica el correspondiente parámetro real.

10 Funciones y Procedimientos
Parámetros de salida Permiten que la acción pueda devolver resultados de su ejecución al algoritmo que invoca. El parámetro real asociado con un parámetro formal de este tipo debe ser necesariamente una variable en la que almacenar el resultado devuelto por la acción. Esa variable no tiene porque haber sido inicializada con anterioridad. Cualquier acción o modificación realizada sobre el parámetro formal de salida se refleja, de forma inmediata, sobre el correspondiente parámetro real. Para la definición de un parámetro formal de salida se debe anteponer el modificador delante del nombre formal.

11 Funciones y Procedimientos
Parámetros de entrada/salida Los parámetros de entrada/salida permiten aportar datos de entrada en un procedimiento o función, que ésta los modifique y los devuelva como resultado al algoritmo que la invoca. El parámetro real asociado con un parámetro formal declarado de entrada /salida, necesariamente debe ser una variable donde almacenar el valor devuelto por el procedimiento o función invocada y debe haber sido inicializado previamente a la invocación. La declaración de un parámetro de entrada/salida se hará anteponiendo el modificador E/S delante del nombre del parámetro formal en la definición de la función.

12 Funciones y Procedimientos
Descomposición de una tarea en Funciones y Procedimientos La mayor complejidad a la hora de aplicar programación estructurada es saber decidir correctamente cuándo extraer código para colocarlo en un procedimiento o función, y cuándo utilizar una u otra. El proceso de identificación de procedimientos y funciones se basa en el empleo de cuestiones lógicas (experiencia y sentido común), ciertas heurísticas y una regla Básica. Existen procedimientos y funciones que realizan procesos de entrada de datos, otras de salida de datos y otras de procesamiento de datos. Un procedimiento o función no debe combinar los tres tipos de tareas.

13 Funciones y Procedimientos
Entre las heurísticas a tener en cuenta se encuentran las siguientes: 1. Cada vez que se necesita operar con ciertos tipos de datos compuestos (como registros o vectores) suele resultar necesario disponer de procedimientos para la lectura de esos datos, otras para la visualización de los mismos y finalmente otras que implementen las distintas operaciones necesarias. 2. Las operaciones de inicialización de un algoritmo que se ejecutan antes de empezar a funcionar dicho algoritmo (lecturas de ficheros de disco, inicialización de estructuras de datos) se colocan normalmente en un procedimiento (muchas veces llamado iniciar) si bien, de resultar ser este procedimiento demasiado extenso o complejo, se puede subdividir, a su vez, en otros procedimientos. Esto mismo ocurre con las operaciones que se deben ejecutar justo antes de terminar el algoritmo (volcados a disco, etc.). Por otra parte, si las operaciones son muy sencillas, no será probablemente interesante realizar este proceso.

14 Funciones y Procedimientos
3. Las operaciones de búsqueda y ordenación en cualquier estructura de datos se implementarán normalmente en procedimientos. 4. Cada una de las funcionalidades que un algoritmo proporcionará a un usuario un procedimiento. Tomando el enunciado del problema, muchas veces se pueden identificar los procedimientos (de más alto nivel) a crear prestando atención a los verbos presentes. 5. Un indicativo de que un procedimiento o función es demasiado grande suele ser el número de líneas que ocupa: si contiene más de 25 – 30 líneas (no se Visualizará totalmente en una sola pantalla) es demasiado grande y, por lo tanto, debe ser descompuesta, a su vez, en procedimientos o funciones más pequeños.

15 Funciones y Procedimientos
6. Cuando en un algoritmo se repita más de una vez la misma tarea con una diferencia pequeña, esta diferencia pequeña se representará en los parámetros de un procedimiento o función que será capaz de adaptarse a todas las circunstancias en las que pueda ser empleado. En todo caso, hablar de diferencia pequeña implica que las instrucciones ejecutadas son las mismas y que, por ejemplo la única diferencia se encuentra en el número de veces que se ejecuta una composición iterativa o cuestiones muy similares que se puedan parametrizar. Un error muy común es emplear un procedimiento para dos acciones totalmente diferentes empleando un parámetro que indique cuál de ellas ejecutar. 7. La interfaz de un procedimiento o función se diseñará para asegurar la máxima reutilización.

16 Funciones y Procedimientos
ÁMBITO DE VARIABLES Las variables sólo se pueden referenciar desde la función o procedimiento en la que están declaradas. Así, es fundamental restringir el uso de variables a las funciones o procedimientos en las que están declaradas para no sufrir errores de programación debida a efectos laterales. El ámbito de una variable local o parámetro formal v declarada dentro de una función o procedimiento M es la propia función o procedimiento, cuyas instrucciones pueden modificarla o consultarla. A veces, esto puede complicarse debido a que ciertos lenguajes de programación, como Pascal, permiten crear funciones (locales) dentro de funciones, de manera que las variables locales y parámetros formales creados para la contenedora sirven para todas las locales. Otros lenguajes, como C++, permiten crear bloques dentro de funciones o procedimientos, de manera que las variables creadas dentro de ellos tienen como ámbito sólo el bloque mencionado, y sin embargo se puede acceder al resto de variables de la función.

17 Variables Globales y Locales
Ámbito de las variables Variables globales: Están declaradas fuera del cuerpo de cualquier función y antes de que sea utilizada por ninguna de ellas (se recomienda declararlas al comienzo del programa antes de las definiciones de las funciones). El ámbito de estas variables es global, es decir, que son visibles por cualquier función y cualquiera de ellas puede modificar su valor. La vida de estas variables va ligada a la del programa, se crean cuando empieza la ejecución del programa y pueden ser utilizadas hasta que se acabe el mismo. Variables locales: Están declaradas dentro de la función, bien dentro del cuerpo o bien como parámetros formales. El ámbito de la variable se reduce al de la función y fuera de esta no tienen presencia, es decir, sólo puede ser utilizada por la función donde esta declarada

18 Variables Globales y Locales
Ámbito de las variables El intercambio de información entre procedimientos y funciones debe producirse siempre a través de los parámetros y nunca a través de variables globales. Cualquier otro dato cuyo uso sólo tenga sentido dentro de una función o procedimiento, se declarará como una variable local a ésta, incluso en el caso de que una variable similar con el mismo identificador y tipo se use en otros procedimientos y funciones. Tal y como se ha comentado con respecto a las variables globales, una variable local de una función o procedimiento oculta a la variable global con el mismo identificador.

19 Variables Globales y Locales
Por su parte, las variables locales pueden ser: Variables automáticas: Son eliminadas cuando se termina la ejecución de la función donde han sido declaradas, es decir, su vida se limita al tiempo que está activa la función. Los parámetros formales son variables automáticas Variables estáticas: A pesar de que sólo pueden ser utilizadas por la función donde han sido declaradas, no son destruidas al terminar ésta. Por lo tanto, mantienen su valor para la próxima vez en que sea llamada la función. Se declaran, precediendo el nombre del tipo por la palabra "static".

20 Variables Globales y Locales
EFECTOS LATERALES Efecto lateral es cualquier modificación de una variable producida en un procedimiento o función en la que la variable no está declarada. Estos efectos deben evitarse pues introducen dependencias indeseables (la función o procedimiento depende entonces de una variable global, por ejemplo), que son causas de errores muy difíciles de detectar. PRECEDENCIA DEL NOMBRE En un algoritmo pueden definirse identificadores de variables idénticos siempre y cuando se definen en procedimientos o funciones distintas.

21 PROCESO DE INVOCACIÓN DE UN PROCEDIMIENTO O FUNCIÓN
Al ejecutar un programa, el sistema operativo asigna cierta cantidad de memoria al mismo. El programa en ejecución (proceso en memoria) organiza el espacio asignado atendiendo al siguiente esquema: TEXT es la zona de la memoria donde se almacenan las instrucciones del programa. Muchas veces, en TEXT se almacenan también las constantes, al ser esta zona de la memoria normalmente de sólo lectura. En DATA se almacenan las variables globales (no las constantes).

22 PROCESO DE INVOCACIÓN DE UN PROCEDIMIENTO O FUNCIÓN
El STACK (o pila de llamadas) permite al sistema operativo seguir el flujo de ejecución del programa. Finalmente, el HEAP es una zona ampliable de la memoria donde se almacenan estructuras de datos que pueden variar de tamaño con el tiempo. Cuando aparece una llamada a una función o procedimiento M, se crea en la pila (stack) un registro de activación o entorno de ejecución, denominado marco o frame de la pila, en donde se alojan las variables locales y parámetros formales declarados en la función o procedimiento, así como, la dirección de retorno a la instrucción posterior a la invocación. Una vez creado el entorno, se cede el control a la primera instrucción de M. Si M llama a otra función o procedimiento M', se creará un nuevo frame en la pila, y se procede a la primera instrucción de M'. De este modo se pueden ir apilando llamadas (de ahí, su nombre) mientras sea necesario.

23 PASO DE PARAMETROS Mecanismos de paso de parámetros en los lenguajes de programación Los mecanismos descritos anteriormente, de paso de parámetros de entrada, salida y entrada/salida, no suelen encontrarse en los lenguajes de programación, por el contrario, lo más típico es encontrar mecanismos de paso por valor y paso por referencia Paso de parámetros por valor Cuando se realiza la llamada de un procedimiento o función, se efectúa una copia de la evaluación de los parámetros reales, que se almacena en una variable local con el mismo nombre que el parámetro formal, dentro del registro de activación. Esto implica que al finalizar la ejecución, estos parámetros se destruyen, y los parámetros reales no se ven afectados. Es el mecanismo más genérico de los lenguajes de programación y en la mayoría de los cuales no es necesario especificar ningún modificador del parámetro formal. El parámetro real puede ser cualquier expresión.

24 PASO DE PARAMETROS Paso de parámetros por referencia En el paso de parámetros por referencia, en vez de trabajar con una copia de los parámetros reales almacenada en la pila de ejecución, se trabaja directamente sobre el parámetro real, por lo que cualquier modificación realizada sobre el parámetro formal es repercutida automáticamente en el parámetro real. El compilador hace que los parámetros formales declarados en la función o procedimiento apunten a la misma dirección de memoria que los parámetros reales. Este mecanismo de paso de parámetros se usa para parámetros de salida y entrada/salida, por lo que el parámetro real debe ser una variable. Muchas veces este tipo de paso de parámetros, combinado con restricciones de solo lectura, se emplea en algunos lenguajes de programación para sustituir al ineficiente paso de parámetros por valor en pasos de entrada. Nótese que si se pasara un vector por valor, se estaría copiando todo su contenido.

25 Funciones Un programa en C no es más que una colección de funciones, entre las cuales siempre ha de estar presente la función principal main. ¿Qué es una función en C? Una función es un módulo independiente de código, diseñado para realizar una tarea especifica y que tiene asignado un nombre como identificador, a través del cual puede ser llamada desde otras funciones, y “lanzar” su ejecución. Definición de funciones Para crear una nueva función hay que definirla. Dentro de la definición fijamos el nombre de la función, el tipo del resultado que devuelve, la lista de argumentos y el cuerpo de la función, siguiendo la siguiente sintaxis: tipo_del_valor_devuelto nombre_de_la_función (lista_de_parámetros) { cuerpo_de_la_función }

26 Funciones Basándonos en la lamina anterior:
· Tipo_del_valor_retornado (tipo de la función) Es el tipo del valor que devuelve la función como resultado, a través de la sentencia return. Si la función no devuelve ningún valor, es decir, sino existe ninguna sentencia return dentro de su cuerpo, el tipo de la función debe de ser void. · Nombre_de_la_función Es el identificador de la función. · Lista_de_parámetros_formales Son una lista de variables precedidas de su tipo y separadas por comas. Estas variables copian los valores de los argumentos que utilizamos cuando llamamos a la función. Cuando la función no tiene argumentos se dejan vacíos los paréntesis, o bien se pone entre ellos la palabra reservada void, para indicar exactamente eso, que la función esta ‘vacía’ de argumentos.

27 Funciones Llamada a las funciones
Para utilizar las funciones que hemos declarado, simplemente hemos de llamar a la función por su nombre, pasándole entre paréntesis tantos valores (argumentos) como parámetros formales hayamos definido. Estos valores que utilizamos en la llamada, se van copiando sobre las variables definidas como parámetros; por lo tanto ha de existir una correspondencia, no sólo entre el número de valores y el número de parámetros, sino también entre sus tipos. La sentencia return Podemos devolver el valor dentro del cuerpo de la función a través de la sentencia return. Además, es una sentencia de salto que provocaba la salida inmediata de la función, independientemente de su posición relativa dentro del cuerpo de la función. Sintaxis: return valor; // Opcionalmente: return (valor);

28 Actividades de Tutoría
Crear un programa que determine si un numero es primo Crear un programa que determine si un numero es Capicúa Crear un programa que indique si un numero es: Perfecto Abundante Deficiente


Descargar ppt "Curso de C # República Bolivariana de Venezuela Área de Computación"

Presentaciones similares


Anuncios Google