#LyX 2.3 created this file. For more info see http://www.lyx.org/
\lyxformat 544
\begin_document
\begin_header
\save_transient_properties true
\origin unavailable
\textclass book
\use_default_options true
\maintain_unincluded_children false
\language spanish
\language_package default
\inputencoding auto
\fontencoding global
\font_roman "default" "default"
\font_sans "default" "default"
\font_typewriter "default" "default"
\font_math "auto" "auto"
\font_default_family default
\use_non_tex_fonts false
\font_sc false
\font_osf false
\font_sf_scale 100 100
\font_tt_scale 100 100
\use_microtype false
\use_dash_ligatures true
\graphics default
\default_output_format default
\output_sync 0
\bibtex_command default
\index_command default
\paperfontsize default
\spacing single
\use_hyperref false
\papersize default
\use_geometry false
\use_package amsmath 1
\use_package amssymb 1
\use_package cancel 1
\use_package esint 1
\use_package mathdots 1
\use_package mathtools 1
\use_package mhchem 1
\use_package stackrel 1
\use_package stmaryrd 1
\use_package undertilde 1
\cite_engine basic
\cite_engine_type default
\biblio_style plain
\use_bibtopic false
\use_indices false
\paperorientation portrait
\suppress_date false
\justification true
\use_refstyle 1
\use_minted 0
\index Index
\shortcut idx
\color #008000
\end_index
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\paragraph_indentation default
\is_math_indent 0
\math_numbering_side default
\quotes_style swiss
\dynamic_quotes 0
\papercolumns 1
\papersides 1
\paperpagestyle default
\tracking_changes false
\output_changes false
\html_math_output 0
\html_css_as_file 0
\html_be_strict false
\end_header
\begin_body
\begin_layout Section
Acciones
\end_layout
\begin_layout Standard
Permiten conseguir
\series bold
generalidad
\series default
representando un conjunto potencialmente infinito de cálculos con el mismo
algoritmo, que es una
\series bold
abstracción
\series default
de estos.
Las acciones son la base para
\series bold
descomposición
\series default
de programas en el paradigma imperativo.
También mejoran la legibilidad, el mantenimiento y la reutilización de
partes del programa.
La abstracción proporcionada es por
\series bold
especificación
\series default
(separa el qué hace del cómo lo hace) y por
\series bold
parametrización
\series default
(definición general contra caso específico).
En lenguaje algorítmico, las acciones se definen como:
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
Lenguaje algorítmico
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Pascal
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
nombre
\emph default
: una acción (
\begin_inset Formula $tp_{1}$
\end_inset
\begin_inset Formula $par_{1}$
\end_inset
:
\begin_inset Formula $td_{1}$
\end_inset
;
\begin_inset Formula $\dots$
\end_inset
;
\begin_inset Formula $tp_{n}$
\end_inset
\begin_inset Formula $par_{n}$
\end_inset
:
\begin_inset Formula $td_{n}$
\end_inset
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
procedure
\emph on
nombre
\emph default
(
\family default
[
\family typewriter
var
\family default
]
\begin_inset Formula $par_{1}$
\end_inset
\family typewriter
:
\begin_inset Formula $td_{1}$
\end_inset
;
\begin_inset Formula $\dots$
\end_inset
;
\family default
[
\family typewriter
var
\family default
]
\family typewriter
\begin_inset Formula $par_{n}$
\end_inset
:
\begin_inset Formula $td_{n}$
\end_inset
);
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
A esto le sigue la implementación, similar a la del algoritmo en sí.
Aquí,
\begin_inset Formula $par_{i}$
\end_inset
es el nombre del parámetro,
\begin_inset Formula $td_{i}$
\end_inset
es su tipo de dato y
\begin_inset Formula $tp_{i}$
\end_inset
puede ser
\begin_inset Quotes cld
\end_inset
DATO
\begin_inset Quotes crd
\end_inset
(entrada),
\begin_inset Quotes cld
\end_inset
RESULTADO
\begin_inset Quotes crd
\end_inset
(salida) o
\begin_inset Quotes cld
\end_inset
DATO-RESULTADO
\begin_inset Quotes crd
\end_inset
(entrada y salida), y en Pascal los dos últimos casos se indican con
\family typewriter
var
\family default
.
En
\begin_inset Formula $par_{i}$
\end_inset
se pueden agrupar varios parámetros separados por comas.
\end_layout
\begin_layout Standard
Los nombres de los parámetros forman parte de su
\series bold
léxico local
\series default
.
Pueden
\series bold
enmascarar
\series default
elementos del léxico global y no son utilizables fuera de la acción.
Llamamos
\series bold
parámetros formales
\series default
a los parámetros de una acción (
\begin_inset Formula $par_{1},\dots,par_{n}$
\end_inset
) y
\series bold
argumentos
\series default
o
\series bold
parámetros reales
\series default
a los valores con los que se invoca la acción, mediante la notación
\begin_inset Quotes cld
\end_inset
\emph on
nombre
\emph default
(
\begin_inset Formula $expr_{1},\dots,expr_{n}$
\end_inset
)
\begin_inset Quotes crd
\end_inset
.
\end_layout
\begin_layout Section
Funciones
\end_layout
\begin_layout Standard
Se diferencian de las acciones en que:
\end_layout
\begin_layout Itemize
Las acciones modifican el estado del proceso, mientras que las funciones
establecen una relación entre los elementos del
\series bold
dominio
\series default
y el
\series bold
codominio
\series default
(
\begin_inset Formula $f:A\rightarrow B$
\end_inset
).
\end_layout
\begin_layout Itemize
Las acciones definen procedimientos complejos a partir de otros más simples,
mientras que las funciones extienden el repertorio de operadores.
\end_layout
\begin_layout Standard
Se definen de forma similar a las acciones:
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
Lenguaje algorítmico
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Pascal
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\emph on
nombre
\emph default
: Función (
\begin_inset Formula $par_{1}$
\end_inset
:
\begin_inset Formula $td_{1}$
\end_inset
; ...;
\begin_inset Formula $par_{n}$
\end_inset
:
\begin_inset Formula $td_{n}$
\end_inset
)
\begin_inset Formula $\rightarrow$
\end_inset
tipo_retorno;
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
function
\emph on
nombre
\emph default
(
\family default
\begin_inset Formula $par_{1}$
\end_inset
\family typewriter
:
\begin_inset Formula $td_{1}$
\end_inset
;
\begin_inset Formula $\dots$
\end_inset
;
\family default
\family typewriter
\begin_inset Formula $par_{n}$
\end_inset
:
\begin_inset Formula $td_{n}$
\end_inset
):
\emph on
tipo_retorno
\emph default
;
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
Para devolver un valor, se asigna al propio nombre de la función, que se
comporta como una variable de tipo
\begin_inset Quotes cld
\end_inset
tipo_retorno
\begin_inset Quotes crd
\end_inset
de solo escritura.
En exámenes y prácticas, no podemos hacer esto a mitad de la función, aun
cuando en Pascal este nombre se comporta como cualquier otra variable local.
\end_layout
\begin_layout Section
Enumerado
\end_layout
\begin_layout Standard
Solo en Pascal.
Ejemplo:
\end_layout
\begin_layout Standard
\begin_inset Box Boxed
position "t"
hor_pos "c"
has_inner_box 1
inner_pos "t"
use_parbox 0
use_makebox 0
width "100col%"
special "none"
height "1in"
height_special "totalheight"
thickness "0.4pt"
separation "3pt"
shadowsize "4pt"
framecolor "black"
backgroundcolor "none"
status open
\begin_layout Plain Layout
\family typewriter
type colors = (red, green, blue);
\end_layout
\begin_layout Plain Layout
\family typewriter
var color : colors;
\end_layout
\begin_layout Plain Layout
\family typewriter
begin
\end_layout
\begin_layout Plain Layout
\family typewriter
\begin_inset space \hspace{}
\length 8ex
\end_inset
color := red;
\end_layout
\begin_layout Plain Layout
\family typewriter
end.
\end_layout
\end_inset
\end_layout
\end_body
\end_document