Está en la página 1de 7

Estructura de Datos

ESD-243
UNIDAD III: Nominación de Acciones

CONTENIDO

1. Definición de términos en la identificación de las


Acciones Nominales

Los términos que se pueden realizar en una nominación de


acciones pueden ser los siguientes:

 Función id-función

La función incorporada id() recibe como argumento un objeto y


retorna otro objeto que sirve como identificador único para el
primero. Qué tipo de objeto es el retornado y de qué forma identifica
al objeto pasado como argumento depende de la implementación
de Python. En CPython (la implementación oficial del lenguaje) el
valor retornado es un entero que indica la dirección de memoria en
la que está almacenado el objeto.

 proc id-procedimiento

Como los procedimientos no retornan valores directamente, no es


posible invocarlos de la misma forma que las funciones. Solo
pueden ser invocados directamente como si fuese una acción más
dentro de la secuencialidad del algoritmo, es decir directamente en
el cuerpo del algoritmo. No pueden ser asignados a variables
porque no retornan valores, así como tampoco es posible llamarlos
como parámetros actuales de funciones, ni llamarlos en secuencias
de escritura ni en expresiones.

2. Acciones Nominales

Acciones Nominadas (subprogramas o módulos):

Representan porciones de código que comprenden una o más


acciones, que pueden ser llamados en el código principal y ser
usados tantas veces sea necesario sin necesidad de escribir las
acciones nuevamente. Establecen “paquetes o capsulas” de código
que promueven la abstracción, la reutilización de código y
facilitación de depuración de soluciones de gran tamaño. Son la
base de la modularidad, que establece que un programa completo
se compone de un conjunto de módulos. Fomenta el pensamiento
“divide y vencerás”, que establece que la solución de un problema
grande está compuesta por la solución de diversos sub problemas
más pequeños. Es la base del Principio de Optimalidad de Bellman
que establece que la solución óptima de un problema se consigue
descomponiendo el problema en pequeñas partes, y aplicando la
solución óptima para cada parte implica la solución óptima del
problema principal. Facilitan el trabajo en grupo y permiten
abstraerse de ciertas cosas a la hora de solucionar problemas
puntuales. Se desarrollan bajo el enfoque de “caja negra”, que
representa una caja donde ocurre un procesamiento del cual no
estamos enterados del todo.

Se clasifican en:

Funciones: representan subprogramas que reciben n parámetros (n


>= 1) y retornan m valores de salida (m > = 1). En algunos
lenguajes, las funciones retornan únicamente 1 valor de salida, que
además debe ser primitivo (como es el caso de C). En el
pseudocódigo se cumple que deben recibir 1 o más valores de
entrada y deben arrojar una única salida primitiva.

Declaración:

Función id-función (lista de parámetros): tipo de retorno

Inicio

//declaración de variables locales

//acciones

Finfuncion

Ejemplo:

Var
a,b,c : entero

Función promedio (x : real, y : real, z: real) : real

Inicio

promedio, suma : real

suma ← (x + y + z)

promedio ← (suma/3)

retornar promedio

finfuncion //ejemplo de declaración

Inicio

leer (a)

leer (b)

leer (c)

escribir (“el promedio de los 3 números es:”, promedio(a,b,c))

fin

Las funciones al ser llamadas bajo unos parámetros determinados


retornan valores, por esta razón es posible llamar a las funciones al
lado derecho de asignaciones (sería

equivalente a asignarle a una variable un valor, ese valor seria el


retorno de la función), en operaciones de escritura (sería
equivalente a escribir un valor, siendo el valor el retorno de la
función), en expresiones (siendo la función un valor que sirve de
operando, siendo ese valor el retorno de la función) o como
parámetro en la invocación de otra función.

Procedimientos:

Son comúnmente conocidos como funciones que no retornan


valores. Reciben n parámetros (n >= 0) y no retornan valores.
Semánticamente, se puede usar un procedimiento para retornar
valores si se hace uso del paso de parámetros por referencia, en
donde aquellos parámetros pasados de esta forma podrían ser
modificados dentro del procedimiento y el cambio se vería reflejado
fuera de él cuando la subrutina termine. Como es posible pasar
cualquier cantidad de parámetros y estos pueden modificarse todos
si se quiere, se puede ver como una acción nominada que retorna
múltiples valores.

Declaración:

proc id-procedimiento (lista de parámetros formales)

Inicio

//declaraciones locales

//acciones

finproc

Invocación:

id-proc (lista de parámetros actuales)

Parámetros:

Establecen la comunicación entre los subprogramas, y definen la


entrada de datos a los mismos. Con respecto a su ubicación se
pueden clasificar como parámetros formales (aquellos parámetros
en la declaración del subprograma) o parámetros actuales (aquellos
usados en la invocación del subprograma). Cuando se llama a una
subrutina en el cuerpo principal del algoritmo, el control de flujo se
detiene momentáneamente para darle paso a la subrutina, que se
encargara de realizar las acciones que tiene programadas. Cuando
esto ocurre, se hace una sustitución entre los parámetros formales y
los parámetros actuales. Cuando se realiza una copia del contenido
de la variable pasada como parámetro actual al correspondiente
parámetro formal del subprograma, entonces se habla de paso de
parámetros por valor. El subprograma en su flujo trabaja sobre una
copia del valor pasado como parámetro actual, mas no sobre el
parámetro actual como tal, de esta forma el valor original del
parámetro actual se preserva sin cambiarse. Cuando en la
sustitución de parámetros, se trabaja directamente sobre el valor
pasado, se habla de paso de parámetros por referencia. Bajo este
paso de parámetros, se trabaja directamente sobre los valores
pasados y si estos son modificados el valor se ve reflejado fuera de
la subrutina cuando el control de flujo es regresado al cuerpo
principal del algoritmo. Cuando el subprograma trabaja sobre una
copia, pero justo antes de su salida de la subrutina hace la
actualización del valor del parámetro formal al valor del parámetro
actual, hablamos de paso de parámetros por valor-resultado. Bajo
este enfoque, el valor original es alterado solo al final del flujo de
ejecución del subprograma, a diferencia del paso por referencia
donde cada modificación era contemplada directamente.

Regla de ámbito básica en el pseudoformal: toda variable tiene


alcance en el bloque donde fue declarada, y no fuera de él.

Ejemplos En Lenguaje C

//Función que retorna la suma de 2 numeros

int suma(int a, int b){

int c;

c = a+b;

return c;

//Procedimiento que intercambia el valor de 2 variables (paso


referencia)

void exchange(int *a, int *b){

int c;

c = *a;

*a = *b;

*b = c;
}

También podría gustarte