Mostrando entradas con la etiqueta Programación_Estructurada. Mostrar todas las entradas
Mostrando entradas con la etiqueta Programación_Estructurada. Mostrar todas las entradas

martes, 7 de julio de 2020

Funciones y Procedimientos

Unidad 4:

Funciones y Procedimiento

*Definir que son las funciones, sus características y sintaxis.

*Definir los procedimientos, sus características y sintaxis.

*Explicar el ámbito de las variables.

*Definir que es la Recursividad.

Concepto de Función:

Desde el punto de vista matemático es una función una operación que toma uno o varios operandos  (parámetros) y devuelve un resultado. Desde el punto de vista algorítmico una función es un subprograma que toma uno o varios parámetros como entrada y devuelve un único resultado. Este único resultado ira asociado al nombre de la función.

Existen 2 tipos de Funciones:

Internas o Incorporadas: Son las que vienen definidas por defecto en el lenguaje de programación.

Externas del Usuario: Son las que define el usuario y tienen un nombre o identificador.

 

Declaración de una Función:

La estructura de función es semejante a cualquier subprograma, tendrá una cabecera con el nombre y los parámetros  y un cuerpo con la declaración de los parámetros de las funciones y las instrucciones.

Sintaxis:




La sintaxis para la declaración de una función depende del lenguaje de programación utilizado se propone un esquema que usa la palabra función. Para indicar el inicio de la función seguido del identificador o nombre, la lista de parámetros, el tipo de dato de retorno de la función y por último, el cuerpo de la función enmarcado entre sentencias de inicio y fin del bloque de código.

La lista de parámetros es la información que se le tiene que pasar a la función los parámetros dentro del cuerpo de la función se utilizan como variables locales definidas en la función .Es necesario definirle a cada parámetro su nombre y tipo de dato al momento de declarar la función.

El nombre de la función lo da el programador y debe ser un nombre significativo.

Dentro del cuerpo de la función se escriben todas acciones o sentencias de código destinadas a cumplir el propósito de la función. Es necesario para las funciones que dentro de las acciones de su cuerpo, se incluya una del tipo retorno valor, esta sentencia pondrá fin a la ejecución de la función. Y devolverá el valor de la función al programa que lo invoco.

El valor de la función deberá ser del mismo valor del dato que se colocó al final de la cabecera.

Invocación de una función:

Para que una función pueda ser invocada desde cualquier parte de un programa es necesario que la definición de dicha función ya sea del conocimiento previo del compilador antes de usarla. El nombre de la función, tipo y número de argumentos debe estar presente en algún lugar valido del programa antes de poder invocarla.

Pasos Para Hacer la Llamada a una función:


Cuando se efectúa una llamada se sede al control de la función y se asocia, es decir se asigna , el valor de cada parámetro real al parámetro formal correspondiente , siempre por orden de aparición de izquierda a derecha , se produce un error cuando no coincidan los tipos o el número de parámetros formales y reales.

Si la llamada de la función es válida entonces se ejecutan las acciones de la función hasta que se encuentre una instrucción tipo retorno en la misma función.

Colocadas en diferentes bloques de código y normalmente dependen de sentencias condicionales para su ejecución.

En resumen, se asocia el valor retorno con el nombre de la función y se devuelve el control al subprograma que hizo la llamada, sustituyendo así el nombre de la función por el valor devuelto.

 

Procedimiento: Es un subprograma que realiza una determinada tarea  pro que tras ejecutar esa tarea no tiene ningún valor asociado a su  nombre , como ocurre en las funciones , si un procedimiento devuelve información los hace a través de parámetros de entrada – salida  o de salida.

Al invocar un procedimiento se le cede control, comienza a ejecutarse y cuando termina devuelve el control  a la instrucción siguiente, al punto donde se efectuó la llamada.

Ejemplo de declaración y llamado de un Procedimiento:



Sintaxis de un Procedimiento:

La sintaxis para declarar un procedimiento es  esencialmente la misma que para definir una función, solo que no se coloca un tipo de retorno asociado.

La cabecera va a estar formada por el nombre del procedimiento se colocan todas las sentencias necesarias con su tarea y no habrá ninguna sentencia de tipo retorno valor. Ahora bien si el procedimiento devuelve resultados a través de sus parámetros que se pasan por referencia, tendrán que existir sentencias de asignación de valores a estos parámetros pasados por referencia para devolver resultados.

Pasos para hacer la llamada a un Procedimiento:


En primer lugar, desde el programa principal o subrutina, se coloca el nombre del procedimiento con su lista de parámetros reales entre paréntesis como una sentencia única. Esto sede el control al procedimiento que se llama después de esto lo primero es sustituir cada parámetro formal de la definición, por un parámetro actual o real asociado a él en la llamada. Esta asociación entre parámetros formales se realiza de izquierda a derecha por orden de ubicación. Para que pueda existir la asociación debe haber el mismo número de parámetros formales que reales y además el tipo de dato debe coincidir con el parámetro formal asociado. Si no se cumple con algunas de estas condiciones se produce un error.

Si la asociación ha sido correcta comienza a ejecutarse las instrucciones del procedimiento hasta llegar a la última instrucción.

Finalmente sede el control a la instrucción siguiente a la que efectuó la llamada al procedimiento.

Ejemplo de declaración y llamado de un Procedimiento:

Diferencias entre funciones y procedimientos:

Las funciones están diseñadas para devolver un único valor y un procedimiento puede devolver ningún o muchos valores por medio de sus argumentos o parámetros

Ninguno de los resultados devueltos por el procedimiento se asocia a su nombre como ocurre en la función.

Mientras que la llamada a una función siempre puede formar parte de una expresión, la llamada a un procedimiento es una instrucción aislada que por sí sola no puede formar parte de una expresión.

Ámbitos: Variables Globales y Locales

El ámbito de un identificador ya sea variable, constante, función entre otros, se refiere a la parte del programa en la que se conoce y por lo tanto se puede usar al identificador. Un identificador es un nombre construido bajo ciertas reglas de sintaxis y se asocia a un elemento del programa.

Existen dos tipos de ámbitos básicos:

El ámbito global: Se refiere a los identificadores que se declaran dentro del programa principal y fuera de cualquier otro bloque de código. Al ser declarados de esta forma, los identificadores globales están disponibles a lo largo del programa y podrán ser usados en cualquier parte del mismo. De allí su nombre de globales porque se dice que son globales al programa.

El ámbito Local:

Se refiere a los identificadores declarados dentro de un bloque de  código diferente al programa principal, como por ejemplo una subrutina o procedimiento, siendo visibles y accesibles, por lo tanto solo dentro de un bloque de código especifico.

 

Variable Local:

Una variable local es aquella que está declarada y definida dentro de un subprograma o sub-bloque de código, por lo tanto, su ámbito coincidirá con el ámbito del subprograma en la que está definida.

Variable Global:

Una variable global es aquella que está definida a nivel del programa, es decir, su ámbito es el programa o algoritmo principal y todos los subprogramas que dependen de este último.

Tipos de Parámetros:

Parámetros de Entrada: Son parámetros que solo aportan el valor que tienen, como entrada al subprograma al que pertenecen como parámetros. En  el caso de las funciones todas sus variables son de este tipo, como solo son entradas solo pueden ser leídos pero no modificados.

Parámetros de Salida: Se usan solo y exclusivamente para devolver resultados a través de ellos. Su valor al hacer la llamada al subprograma no es de relevancia. Ese valor solo va a tener sentido cuando termine la ejecución del subprograma. Un parámetro de este tipo teóricamente nunca se puede leer, solo se va actualizar o modificar.

Parámetros de Entrada y Salida:

El valor del parámetro tiene importancia tanto a la entrada como a la salida del subprograma. Aporta dato cuando se llama al subprograma y por otra parte, devuelve a través de él los resultados cuando se termina el subprograma. En este caso, tiene sentido tanto poder leer como actualizar el parámetro.

Recursividad:

Se dice que un subprograma es recursivo cuando se llama así mismo. La recursividad se puede utilizar en subprogramas que se pueden definir en términos recursivos, es decir en términos de sí mismo, como procesos de alguna manera repetitivos.

Todo programa recursivo debe tener una condición que ponga fin a la recursividad. De otra forma se genera un bucle infinito con el consecuente error de desbordamiento de pila.

Factorial (x) = x* Factorial (x-1)







viernes, 3 de julio de 2020

Programación Estructurada

Unidad 3: Programación Estructurada:


La programación estructurada es un paradigma basado en utilizar funciones o subrutinas , y unicamente tres estructuras de control:

*Secuencial: Ejecucion de una sentencia tras otra.

*Seleccion o Condicional:Ejecucion de una sentencia o conjunto de sentencias , segun el valor de una variable booleana.

*Iteracion(ciclo o bucle): Ejecucion de una sentencia o conjunto de sentencias , mientras una variable booleana sea verdadera.

Se apoya en los conceptos:

Recursos Abstractos:Son los recursos que se tiene a la hora de programar y que se van transformando en recursos concretos.

Diseño Descendiente (Top-Down): Ir descomponiendo el problema en niveles o pasos cada vez mas sencillos ya que la salida de una etapa va hacer la entrada de otra.

Estructura Básicas de Control: Para construir un programa se siguen los siguientes pasos de razonamiento anteriores y al final se codifica un programa usando 3 tipos de estructuras repetitivas, alternativas y secuenciales.


Estructuras Secuenciales:

Una instrucción sigue a otra en secuencia.


     Estructuras Selectivas:

      En este tipo de estructura se evalúa una condición en función del resultado lógico (verdadero o                falso)también son llamadas estructuras de control de flujos.

       Estructuras Simple:

En esta estructura condicional se evalúa la condición si el resultado es verdadero , se ejecuta el conjunto de acciones asociados al bloque . Entonces si el resultado es falso no se ejecuta acción alguna.


Estructura selectiva doble:Es una estructura condicional que evalúa una condición dada. Si es verdad , se ejecuta el conjunto de acciones de la porte "si", si es falso se ejecuta el conjunto de acciones asociadas a la parte" no" en la siguiente figura se observa con detalle esta estructura.


Estructura Selectiva Múltiple: En la estructura selectiva múltiple se evalúa condición o expresión

que puede tomar "n" valores distintos. Según sea el valor de la expresión de un instante dado, se ejecutan las acciones correspondientes a ese valor , en realidad equivale a un conjunto de condiciones anidadas. En varios lenguajes de programación se conocen como sentencia "case " o Switch.


Estructura Repetitivas de ciclo:

Representan un bucle o un conjunto de instrucciones que se repite un numero finito de veces cada repetición se llama iteracion.

Existen 3 tipos de Estructuras Repetitivas:

Mientras-hacer(while):

Evalúa antes de realizar cada iteracion.


Repetir - hata (repeat-until)

Se evalúa después de realizar  la primera iteracion.



 Desde(for):

Se usa cuando se sabe el numero exacto de veces que  se va a ejecutar el bucle.


D

Estructuras Anidadas:

Un ciclo puede tener dentro de sus sentencias otro ciclo

 

Anidación de Condicionales:

En muchas situaciones se requiere evaluar un conjunto de condiciones en forma secuencial y separada, en estos casos se recomienda utilizar una anidación de sentencias condicionales.



Bucles Anidados:

Al igual que se pueden colocar unas expresiones dentro de otras, los bucles pueden estar uno dentro de otros .Al anidar bucles hay que tener en cuenta que el bucle interno funciona como una sentencia más en el bloque del bucle externo, por lo tanto en cada iteración de bucle externo se van a ejecutar todas las iteraciones del bucle interno.

 

Desde i=1 hasta 8

Desde  k=1 hasta 5

Escribir “profesor” “i”  “introduzca su asignatura n” k

Leer asignatura

Fin desde

Fin desde

Cada siglo interno termina antes de cerrar el externo, no existen limitaciones formales en cuanto al número de sentencias y estructuras anidadas que se pueden colocar en el mismo bloque de código.

Control de Datos de Entrada:

Existen una serie de situaciones comunes en programación donde se toman datos desde un dispositivo de entrada y se requiere de alguna forma de control implementado por bucles.

Utilizando un Valor Centinela que Determina el Fin del Bucle: En este caso se espera la entrada de un valor centinela para decidir si se va a ingresar al ciclo o no de entrada de datos:

El bucle se va a repetir mientras no se lea un valor determinado, la primera lectura se va a realizar fuera del bucle . Si al ingresar el dato de entrada, este es el valor del centila entonces no se entra en el bucle y se seguirá con el resto del algoritmo. En caso contrario, se entra en el bucle para seguir con la entrada de datos.

Centinela=9

Leer opción

Mientras (opción <> centinela) hacer

<Acciones>

Leer opción

Fin mientras

 

Cuando se sabe el número exacto de veces que se ejecuta una acción o proceso:

La opción natural para realizar el control de entrada es utilizar un ciclo o bucle “desde- hasta”

Normalmente el número de veces que se desea repetir el proceso, es solicitado como un valor de entrada o es suministrado de alguna fuente. Una vez que se obtiene este valor se le asigna a la variable de índice para el ciclo “desde” se efectúa la operación hasta que se cumpla el número de veces deseado.

 

Var i: Entero

Mostrar “Ingrese el número de materias a registrar: ”

Leer numero_materias

Desde i=1 Hasta numero_materias

Mostrar “Ingresar datos Materia número” ,i, “:”

Leer materia

<Acciones a realizar con materia>

Fin desde

 

 

Control de Datos para no Permitir Datos Erróneos:

Se usa cuando se controla al usuario para que introduzca los datos validos se recomienda usar el ciclo repetir –hasta.

 

Var opción: Entero

Opción=0

Repetir

Mostrar “Menu:”

Mostrar “1. Crear archivo”

Mostrar “2. Borrar Archivo”

Mostrar “3. Incluir Registro”

Mostrar “4. Salir del sistema”

Mostrar “Su opción”

Hasta (opción>=1) y (opción<=4)