aboutsummaryrefslogtreecommitdiff
path: root/ip
diff options
context:
space:
mode:
Diffstat (limited to 'ip')
-rw-r--r--ip/n.lyx224
-rw-r--r--ip/n0.lyx210
-rw-r--r--ip/n1.lyx1788
-rw-r--r--ip/n2.lyx571
-rw-r--r--ip/n3.lyx1300
-rw-r--r--ip/n4.lyx302
-rw-r--r--ip/n5.lyx1691
7 files changed, 6086 insertions, 0 deletions
diff --git a/ip/n.lyx b/ip/n.lyx
new file mode 100644
index 0000000..f5b4510
--- /dev/null
+++ b/ip/n.lyx
@@ -0,0 +1,224 @@
+#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 a5paper
+\use_geometry true
+\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
+\leftmargin 0.2cm
+\topmargin 0.7cm
+\rightmargin 0.2cm
+\bottommargin 0.7cm
+\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 empty
+\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 Title
+Introducción a la programación
+\end_layout
+
+\begin_layout Date
+\begin_inset Note Note
+status open
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+def
+\backslash
+cryear{2017}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset CommandInset include
+LatexCommand input
+filename "../license.lyx"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Bibliografía:
+\end_layout
+
+\begin_layout Itemize
+Diapositivas de teoría y guiones de prácticas, Introducción a la Programación,
+ Universidad de Murcia (anónimo).
+\end_layout
+
+\begin_layout Chapter*
+¿Qué tareas puede realizar un ordenador?
+\end_layout
+
+\begin_layout Standard
+\begin_inset CommandInset include
+LatexCommand input
+filename "n0.lyx"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Chapter
+Léxico y organización de un algoritmo
+\end_layout
+
+\begin_layout Standard
+\begin_inset CommandInset include
+LatexCommand input
+filename "n1.lyx"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Chapter
+Parametrización de acciones
+\end_layout
+
+\begin_layout Standard
+\begin_inset CommandInset include
+LatexCommand input
+filename "n2.lyx"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Chapter
+Composición iterativa y noción de secuencia
+\end_layout
+
+\begin_layout Standard
+\begin_inset CommandInset include
+LatexCommand input
+filename "n3.lyx"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Chapter
+Esquemas algorítmicos de recorrido y búsqueda.
+ Iteraciones
+\end_layout
+
+\begin_layout Standard
+\begin_inset CommandInset include
+LatexCommand input
+filename "n4.lyx"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Chapter
+Tablas
+\end_layout
+
+\begin_layout Standard
+\begin_inset CommandInset include
+LatexCommand input
+filename "n5.lyx"
+
+\end_inset
+
+
+\end_layout
+
+\end_body
+\end_document
diff --git a/ip/n0.lyx b/ip/n0.lyx
new file mode 100644
index 0000000..782557f
--- /dev/null
+++ b/ip/n0.lyx
@@ -0,0 +1,210 @@
+#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 Standard
+
+\series bold
+Ordenador:
+\series default
+ Mecanismo digital de propósito general.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Hardware:
+\series default
+ Le das patadas.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Software:
+\series default
+ La razón por la que das las patadas.
+\end_layout
+
+\begin_layout Standard
+El ordenador procesa y ejecuta algoritmos.
+ Un
+\series bold
+algoritmo
+\series default
+ es una secuencia de instrucciones
+\series bold
+finita
+\series default
+ (termina en algún momento),
+\series bold
+definida
+\series default
+ (totalmente inambigua),
+\series bold
+efectiva
+\series default
+ (se puede hacer sólo con papel y lápiz) y
+\series bold
+general
+\series default
+ (funciona con casos diferentes del problema a tratar y no solo con uno
+ en particular), y que tiene una serie de
+\series bold
+entradas
+\series default
+ (parámetros, eventos, etc., incluyendo números pseudoaleatorios),
+\series bold
+salidas
+\series default
+ (resultados) y una determinada
+\series bold
+eficiencia
+\series default
+ (los recursos que consume, esp.
+ en función del tamaño del problema).
+\end_layout
+
+\begin_layout Standard
+Los problemas se clasifican en
+\series bold
+computables
+\series default
+, cuando existe un algoritmo que los resuelve, y
+\series bold
+no computables
+\series default
+.
+ Los computables a la vez se dividen en
+\series bold
+tratables
+\series default
+, si hay un algoritmo eficiente que lo resuelve, o
+\series bold
+intratables
+\series default
+ si no, entre los que destacan los NP-completos (no polinomiales).
+\end_layout
+
+\begin_layout Standard
+El ordenador trabaja con
+\series bold
+instrucciones máquina
+\series default
+, muy sencillas, y a través del código binario.
+ El bit (valor 0 o 1) es la unidad mínima de información.
+ Los
+\series bold
+lenguajes de programación
+\series default
+ son una notación de las operaciones a realizar por el ordenador con un
+ nivel de abstracción mayor al lenguaje máquina.
+ El código escrito en estos como representación del algoritmo es convertido
+ al lenguaje máquina por el
+\series bold
+compilador
+\series default
+ para su posterior ejecución o bien es ejecutado por un
+\series bold
+intérprete
+\series default
+, que junta traducción y ejecución.
+\end_layout
+
+\begin_layout Standard
+
+\series bold
+IMPORTANTE:
+\series default
+ A la hora de escribir un programa o algoritmo en exámenes o prácticas a
+ entregar,
+\series bold
+no usar NUNCA
+\family typewriter
+return
+\family default
+ a mitad ni tampoco usar
+\family typewriter
+goto
+\family default
+\series default
+.
+\end_layout
+
+\end_body
+\end_document
diff --git a/ip/n1.lyx b/ip/n1.lyx
new file mode 100644
index 0000000..1936a5c
--- /dev/null
+++ b/ip/n1.lyx
@@ -0,0 +1,1788 @@
+#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 Standard
+\align center
+\begin_inset Tabular
+<lyxtabular version="3" rows="2" columns="2">
+<features tabularvalignment="middle">
+<column alignment="left" valignment="top" width="55text%">
+<column alignment="left" valignment="top" width="35text%">
+<row>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Lenguaje algorítmico
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Pascal
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+LÉXICO
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $v_{1}$
+\end_inset
+
+:
+\begin_inset Formula $tipo_{1}$
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $v_{2},v_{3}$
+\end_inset
+
+ :
+\begin_inset Formula $tipo_{2}$
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $A_{1}$
+\end_inset
+
+: una acción
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+PRE {
+\emph on
+precondición
+\begin_inset Formula $A_{1}$
+\end_inset
+
+
+\emph default
+ }
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+POST {
+\emph on
+postcondición
+\begin_inset Formula $A_{1}$
+\end_inset
+
+
+\emph default
+ }
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+LÉXICO
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+...
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+ALGORITMO
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+...
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+FIN
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $f_{1}$
+\end_inset
+
+: función
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+PRE {
+\emph on
+precondición
+\begin_inset Formula $f_{1}$
+\end_inset
+
+
+\emph default
+ }
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+POST {
+\emph on
+postcondición
+\begin_inset Formula $f_{1}$
+\end_inset
+
+
+\emph default
+ }
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+LÉXICO
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $\dots$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+ALGORITMO
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $\dots$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+FIN
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+...
+\end_layout
+
+\begin_layout Plain Layout
+ALGORITMO
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+PRE {
+\emph on
+precondición algoritmo
+\emph default
+ }
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+POST {
+\emph on
+postcondición algoritmo
+\emph default
+ }
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+...
+\end_layout
+
+\begin_layout Plain Layout
+FIN
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+program
+\family default
+
+\begin_inset Formula $nombre$
+\end_inset
+
+
+\family typewriter
+;
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+type
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $tipo_{1}$
+\end_inset
+
+
+\family typewriter
+ =
+\begin_inset Formula $\dots$
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $tipo_{2}$
+\end_inset
+
+
+\family typewriter
+ =
+\begin_inset Formula $\dots$
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $\dots$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+var
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $v_{1}$
+\end_inset
+
+
+\family typewriter
+ :
+\begin_inset Formula $tipo_{1}$
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $v_{2}$
+\end_inset
+
+
+\family typewriter
+,
+\begin_inset Formula $v_{3}$
+\end_inset
+
+ :
+\begin_inset Formula $tipo_{2}$
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $\dots$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+procedure
+\begin_inset Formula $A_{1}$
+\end_inset
+
+(
+\begin_inset Formula $\dots$
+\end_inset
+
+):
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+var
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $\dots$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+begin
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $\dots$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+end;
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+function
+\begin_inset Formula $f_{1}$
+\end_inset
+
+(
+\family default
+
+\begin_inset Formula $\dots$
+\end_inset
+
+
+\family typewriter
+):
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+var
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $\dots$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+begin
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $\dots$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+end;
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+var
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $\dots$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+begin
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $\dots$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+end.
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset Note Note
+status open
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+La
+\series bold
+notación algorítmica
+\series default
+ establece la forma de describir las acciones e informaciones y organizarlas
+ en el tiempo, mientras que el código del programa establece la forma en
+ la que estas se implementan de forma interpretable por un ordenador.
+ Está formado por un
+\series bold
+léxico,
+\series default
+ donde se definen las informaciones u objetos y las acciones, y el
+\series bold
+control,
+\series default
+ que establece cómo actúan las acciones sobre los objetos.
+ La
+\series bold
+abstracción
+\series default
+ sirve para dominar la complejidad de un programa.
+\end_layout
+
+\begin_layout Section
+Tipos de datos y operaciones primitivos
+\end_layout
+
+\begin_layout Standard
+Especifican un dominio de valores y un conjunto de operaciones aplicables.
+ Los tipos pri
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+-
+\end_layout
+
+\end_inset
+
+mi
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+-
+\end_layout
+
+\end_inset
+
+ti
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+-
+\end_layout
+
+\end_inset
+
+vos son:
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Entero
+\series default
+ (
+\family typewriter
+integer
+\family default
+).
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Real:
+\series default
+ Se usa el
+\begin_inset Quotes cld
+\end_inset
+
+.
+\begin_inset Quotes crd
+\end_inset
+
+ como separador (
+\family typewriter
+real
+\family default
+).
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Booleano:
+\series default
+ Valores
+\begin_inset Quotes cld
+\end_inset
+
+Verdadero
+\begin_inset Quotes crd
+\end_inset
+
+ y
+\begin_inset Quotes cld
+\end_inset
+
+Falso
+\begin_inset Quotes crd
+\end_inset
+
+ (
+\family typewriter
+boolean
+\family default
+,
+\family typewriter
+true
+\family default
+,
+\family typewriter
+false
+\family default
+).
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Carácter:
+\series default
+ Se ponen entre comillas simples (
+\family typewriter
+char
+\family default
+).
+\end_layout
+
+\begin_layout Standard
+Las operaciones primitivas son:
+\end_layout
+
+\begin_layout Itemize
+\begin_inset Formula $-$
+\end_inset
+
+: Entero
+\begin_inset Formula $\rightarrow$
+\end_inset
+
+Entero, Real
+\begin_inset Formula $\rightarrow$
+\end_inset
+
+Real
+\end_layout
+
+\begin_layout Itemize
+\begin_inset Formula $+$
+\end_inset
+
+,
+\emph on
+
+\begin_inset Formula $-$
+\end_inset
+
+
+\emph default
+,
+\emph on
+
+\begin_inset Formula $*$
+\end_inset
+
+
+\emph default
+: Entero
+\begin_inset Formula $\times$
+\end_inset
+
+Entero
+\begin_inset Formula $\rightarrow$
+\end_inset
+
+Entero, Real
+\begin_inset Formula $\times$
+\end_inset
+
+Real
+\begin_inset Formula $\rightarrow$
+\end_inset
+
+Real
+\end_layout
+
+\begin_layout Itemize
+
+\emph on
+\begin_inset Formula $/$
+\end_inset
+
+
+\emph default
+:Entero
+\begin_inset Formula $\times$
+\end_inset
+
+Entero
+\begin_inset Formula $\rightarrow$
+\end_inset
+
+Real, Real
+\begin_inset Formula $\times$
+\end_inset
+
+Real
+\begin_inset Formula $\rightarrow$
+\end_inset
+
+Real
+\end_layout
+
+\begin_layout Itemize
+
+\emph on
+\begin_inset Formula $DIV$
+\end_inset
+
+
+\emph default
+,
+\emph on
+
+\begin_inset Formula $MOD$
+\end_inset
+
+
+\emph default
+: Entero
+\begin_inset Formula $\times$
+\end_inset
+
+Entero
+\begin_inset Formula $\rightarrow$
+\end_inset
+
+Entero
+\end_layout
+
+\begin_layout Itemize
+\begin_inset Formula $<$
+\end_inset
+
+,
+\begin_inset Formula $>$
+\end_inset
+
+,
+\begin_inset Formula $=$
+\end_inset
+
+,
+\begin_inset Formula $\leq$
+\end_inset
+
+ (
+\family typewriter
+<=
+\family default
+),
+\begin_inset Formula $\geq$
+\end_inset
+
+ (
+\family typewriter
+>=
+\family default
+),
+\begin_inset Formula $\neq$
+\end_inset
+
+ (
+\family typewriter
+<>
+\family default
+): Entero
+\begin_inset Formula $\times$
+\end_inset
+
+Entero
+\begin_inset Formula $\rightarrow$
+\end_inset
+
+Booleano, Real
+\begin_inset Formula $\times$
+\end_inset
+
+Real
+\begin_inset Formula $\rightarrow$
+\end_inset
+
+Booleano, Carácter
+\begin_inset Formula $\times$
+\end_inset
+
+Carácter
+\begin_inset Formula $\rightarrow$
+\end_inset
+
+Booleano
+\end_layout
+
+\begin_layout Itemize
+\begin_inset Formula $Predecesor$
+\end_inset
+
+,
+\begin_inset Formula $Sucesor$
+\end_inset
+
+: Entero
+\begin_inset Formula $\rightarrow$
+\end_inset
+
+Entero, Carácter
+\begin_inset Formula $\rightarrow$
+\end_inset
+
+Carácter
+\end_layout
+
+\begin_layout Itemize
+\begin_inset Formula $Y$
+\end_inset
+
+,
+\begin_inset Formula $O$
+\end_inset
+
+,
+\begin_inset Formula $YDESPUÉS$
+\end_inset
+
+ (
+\family typewriter
+and
+\family default
+),
+\begin_inset Formula $ODESPUÉS$
+\end_inset
+
+ (
+\family typewriter
+or
+\family default
+): Booleano
+\begin_inset Formula $\times$
+\end_inset
+
+Booleano
+\begin_inset Formula $\rightarrow$
+\end_inset
+
+Booleano
+\end_layout
+
+\begin_layout Itemize
+\begin_inset Formula $NO$
+\end_inset
+
+ (
+\family typewriter
+not
+\family default
+): Booleano
+\begin_inset Formula $\rightarrow$
+\end_inset
+
+Booleano
+\end_layout
+
+\begin_layout Itemize
+\begin_inset Formula $Car$
+\end_inset
+
+ (
+\family typewriter
+chr
+\family default
+): Entero
+\begin_inset Formula $\rightarrow$
+\end_inset
+
+Carácter
+\end_layout
+
+\begin_layout Itemize
+\begin_inset Formula $Ord$
+\end_inset
+
+ (
+\family typewriter
+ord
+\family default
+): Carácter
+\begin_inset Formula $\rightarrow$
+\end_inset
+
+Entero
+\end_layout
+
+\begin_layout Standard
+Las acciones primitivas son:
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Asignación:
+\series default
+
+\emph on
+Variable
+\emph default
+
+\begin_inset Formula $\leftarrow$
+\end_inset
+
+
+\emph on
+Expresión
+\emph default
+.
+ Pascal:
+\family typewriter
+\emph on
+var
+\emph default
+ :=
+\emph on
+expr
+\family default
+\emph default
+.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Entrada:
+\series default
+ Leer(
+\emph on
+lista de variables
+\emph default
+).
+ Pascal:
+\family typewriter
+read(
+\emph on
+vars
+\emph default
+)
+\family default
+,
+\family typewriter
+readln(
+\emph on
+vars
+\emph default
+)
+\family default
+.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Salida:
+\series default
+ Escribir(
+\emph on
+lista de expresiones
+\emph default
+).
+ Pascal:
+\family typewriter
+write(
+\emph on
+exprs
+\emph default
+)
+\family default
+,
+\family typewriter
+writeln(
+\emph on
+exprs
+\emph default
+)
+\family default
+.
+\end_layout
+
+\begin_layout Standard
+Todas las declaraciones e instrucciones del léxico y algoritmo terminan
+ por punto y coma, y cada Entero o Real puede ir acompañado de un rango.
+ Ejemplos:
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Tabular
+<lyxtabular version="3" rows="2" columns="2">
+<features tabularvalignment="middle">
+<column alignment="left" valignment="top" width="40text%">
+<column alignment="left" valignment="top" width="40text%">
+<row>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Lenguaje algorítmico
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Pascal
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Formula $m:\text{Entero}[0,59]$
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset Formula $d:\text{Entero}\geq0$
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset Formula $c:\text{Caracter}[\text{'a'},\text{'z'}]$
+\end_inset
+
+;
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+m : 0..59;
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+c : 'a'..'z';
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+mes : febrero..abril;
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Section
+Organización de las acciones
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Composición secuencial:
+\series default
+ Se introducen estados intermedios para reducir la complejidad, descomponiendo
+ el problema en subproblemas más simples independientes.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Análisis de casos:
+\series default
+ Se divide el problema en casos según los datos y se resuelve el caso correspond
+iente en cada situación.
+ La precondición de cada problema debe implicar la precondición inicial,
+ y la postcondición de cada uno debe cumplir la postcondición inicial.
+ Además, se deben considerar todos los casos como mucho una vez.
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Tabular
+<lyxtabular version="3" rows="3" columns="2">
+<features tabularvalignment="middle">
+<column alignment="left" valignment="top" width="40text%">
+<column alignment="left" valignment="top" width="40text%">
+<row>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Lenguaje algorítmico
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Pascal
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+SEGÚN
+\begin_inset Formula $c_{1},\dots,c_{n}$
+\end_inset
+
+ { Nombres de las variables a comprobar }
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset Formula $e_{1}$
+\end_inset
+
+:
+\begin_inset Formula $a_{1}$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset Formula $\dots$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset Formula $e_{n}$
+\end_inset
+
+:
+\begin_inset Formula $a_{n}$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+EN_OTRO_CASO:
+\begin_inset Formula $a_{n+1}$
+\end_inset
+
+
+\begin_inset Formula $_{opcional}$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+FIN_SEGÚN
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+SI
+\begin_inset Formula $e$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+ENTONCES
+\begin_inset Formula $a$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+SI_NO
+\begin_inset Formula $b$
+\end_inset
+
+
+\begin_inset Formula $_{opcional}$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+FIN_SI
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+if
+\begin_inset Formula $e$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+then
+\begin_inset Formula $a$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+[
+\family typewriter
+else
+\begin_inset Formula $b$
+\end_inset
+
+
+\family default
+ ]
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+En Pascal, los campos de expresiones solo permiten una acción, pero se pueden
+ agrupar varias en una sola con las etiquetas
+\family typewriter
+begin
+\family default
+ y
+\family typewriter
+end
+\family default
+.
+ Además, se debe situar un punto y coma (
+\family typewriter
+;
+\family default
+) para separar las acciones.
+ No es necesario pues introducirlo antes de un
+\family typewriter
+end
+\family default
+, ni tampoco debe usarse antes de un
+\family typewriter
+else
+\family default
+, pues indicaría el final de la sentencia
+\family typewriter
+if
+\family default
+ completa.
+\end_layout
+
+\begin_layout Section
+Tipos de datos no primitivos
+\end_layout
+
+\begin_layout Standard
+Son las
+\series bold
+tablas,
+\series default
+ los
+\series bold
+registros
+\series default
+ o
+\series bold
+producto de tipos
+\series default
+ (estructuras) y las
+\series bold
+secuencias
+\series default
+.
+ Para definir un registro:
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Tabular
+<lyxtabular version="3" rows="2" columns="2">
+<features tabularvalignment="middle">
+<column alignment="left" valignment="top" width="40text%">
+<column alignment="left" valignment="top" width="40text%">
+<row>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Lenguaje algorítmico
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Pascal
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\emph on
+nombre_del_tipo
+\emph default
+ = TIPO <
+\begin_inset Formula $a_{1},a_{2}$
+\end_inset
+
+ :
+\begin_inset Formula $T_{1}$
+\end_inset
+
+;
+\begin_inset Formula $\dots$
+\end_inset
+
+;
+\begin_inset Formula $a_{n}$
+\end_inset
+
+:
+\begin_inset Formula $T_{m}$
+\end_inset
+
+>;
+\end_layout
+
+\begin_layout Plain Layout
+
+\emph on
+variable
+\emph default
+ :
+\emph on
+nombre_del_tipo
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+type
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \qquad{}
+\end_inset
+
+
+\emph on
+nombre_del_tipo
+\family typewriter
+\emph default
+ = record
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \qquad{}
+\end_inset
+
+
+\begin_inset space \qquad{}
+\end_inset
+
+
+\begin_inset Formula $a_{1},a_{2}$
+\end_inset
+
+
+\family typewriter
+ :
+\begin_inset Formula $T_{1}$
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \qquad{}
+\end_inset
+
+
+\begin_inset space \qquad{}
+\end_inset
+
+
+\begin_inset Formula $\dots$
+\end_inset
+
+
+\family typewriter
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \qquad{}
+\end_inset
+
+
+\begin_inset space \qquad{}
+\end_inset
+
+
+\begin_inset Formula $a_{n}$
+\end_inset
+
+
+\family typewriter
+ :
+\begin_inset Formula $T_{m}$
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \qquad{}
+\end_inset
+
+
+\family typewriter
+end;
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+var
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \qquad{}
+\end_inset
+
+
+\emph on
+variable
+\family typewriter
+\emph default
+ :
+\family default
+\emph on
+nombre_del_tipo
+\family typewriter
+\emph default
+;
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\end_body
+\end_document
diff --git a/ip/n2.lyx b/ip/n2.lyx
new file mode 100644
index 0000000..80e064a
--- /dev/null
+++ b/ip/n2.lyx
@@ -0,0 +1,571 @@
+#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
+<lyxtabular version="3" rows="2" columns="2">
+<features tabularvalignment="middle">
+<column alignment="left" valignment="top" width="40text%">
+<column alignment="left" valignment="top" width="50text%">
+<row>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Lenguaje algorítmico
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Pascal
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\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
+</cell>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\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
+</cell>
+</row>
+</lyxtabular>
+
+\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
+<lyxtabular version="3" rows="2" columns="2">
+<features tabularvalignment="middle">
+<column alignment="left" valignment="top" width="50text%">
+<column alignment="left" valignment="top" width="40text%">
+<row>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Lenguaje algorítmico
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Pascal
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\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
+</cell>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\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
+</cell>
+</row>
+</lyxtabular>
+
+\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
diff --git a/ip/n3.lyx b/ip/n3.lyx
new file mode 100644
index 0000000..d15221e
--- /dev/null
+++ b/ip/n3.lyx
@@ -0,0 +1,1300 @@
+#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 Standard
+Una
+\series bold
+secuencia
+\series default
+ es un conjunto ordenado de valores.
+ Se expresa como
+\begin_inset Formula $[a_{1},\dots,a_{n}]$
+\end_inset
+
+.
+ La función
+\begin_inset Quotes cld
+\end_inset
+
+
+\begin_inset Formula $long(S)$
+\end_inset
+
+
+\begin_inset Quotes crd
+\end_inset
+
+ devuelve la longitud de la secuencia
+\begin_inset Formula $S$
+\end_inset
+
+.
+ Si
+\begin_inset Formula $S=[a_{1},\dots,a_{n}]$
+\end_inset
+
+ y
+\begin_inset Formula $S'=[b_{1},\dots,b_{m}]$
+\end_inset
+
+ y
+\begin_inset Formula $e$
+\end_inset
+
+ es un elemento, definimos conceptualmente las siguientes operaciones:
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Añadir un elemento:
+\series default
+
+\begin_inset Formula $S\bullet e=[a_{1},\dots,a_{n},e]$
+\end_inset
+
+;
+\begin_inset Formula $e\circ S=[e,a_{1},\dots,a_{n}]$
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Concatenar secuencias:
+\series default
+
+\begin_inset Formula $S\&S'=[a_{1},\dots,a_{n},b_{1},\dots,b_{m}]$
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Itemize
+\begin_inset Formula $primero(S)=a_{1}$
+\end_inset
+
+;
+\begin_inset Formula $último(S)=a_{n}$
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Sucesor:
+\series default
+
+\begin_inset Formula $sucesor(S,i)=S_{i+1}$
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Cola
+\series default
+ y
+\series bold
+cabeza:
+\series default
+
+\begin_inset Formula $cola(S)=[S_{2},\dots,S_{n}]$
+\end_inset
+
+;
+\begin_inset Formula $cabeza(S)=[S_{1},\dots,S_{n-1}]$
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+¿Vacía?
+\series default
+:
+\begin_inset Formula $esvacía(S)=\begin{cases}
+\text{Verdadero} & S=[]\\
+\text{Falso} & S\neq[]
+\end{cases}$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsection
+Primer modelo
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Tabular
+<lyxtabular version="3" rows="7" columns="4">
+<features tabularvalignment="middle">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+E.
+ inicial
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+E.
+ final
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Efecto
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Comenzar(S)
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Marcada/Consulta
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Consulta
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Comienza desde el principio.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Avanzar(S)
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Consulta
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Consulta
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Avanza un elemento.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+EA(S)
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Consulta
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Consulta
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Obtiene el elemento actual.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Crear(S)
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Cualquiera
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Creación
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Crea una secuencia vacía.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Registrar(S,e)
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Creación
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Creación
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Añade un elemento.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Marcar(S)
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Creación
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Marcada
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Añade una marca de fin de secuencia.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Por defecto una secuencia no está en ningún estado, por lo que solo podemos
+ usar Crear(S).
+ En Pascal, estas operaciones se encuentran en los archivos
+\family typewriter
+unitmse1
+\family default
+,
+\family typewriter
+unitmsc1
+\family default
+ y
+\family typewriter
+unitmsr1
+\family default
+ para enteros, caracteres y reales.
+ Debemos añadir el código justo después de la línea con el nombre del programa,
+ con el nombre del archivo correspondiente:
+\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
+uses
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\emph on
+unitms
+\series bold
+x
+\series default
+1
+\emph default
+;
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+El tipo de dato es
+\begin_inset Formula $MS_{x}1$
+\end_inset
+
+ (siendo
+\begin_inset Formula $_{x}$
+\end_inset
+
+ una
+\family typewriter
+e
+\family default
+,
+\family typewriter
+c
+\family default
+ o
+\family typewriter
+r
+\family default
+), y las funciones se denominan
+\begin_inset Newline newline
+\end_inset
+
+
+\begin_inset Formula $Comenzar\_MS_{x}1$
+\end_inset
+
+, etc.
+ Además, se añaden
+\begin_inset Formula $Encender\_Maquina\_MS_{x}1(S)$
+\end_inset
+
+, que debe ser llamada una y sólo una vez antes de cualquier otra operación
+ sobre la secuencia (el
+\begin_inset Quotes cld
+\end_inset
+
+constructor
+\begin_inset Quotes crd
+\end_inset
+
+) y
+\begin_inset Formula $Cargar\_Fichero\_MS_{x}1(S,s)$
+\end_inset
+
+, donde
+\begin_inset Formula $s$
+\end_inset
+
+ es una cadena de caracteres (capítulo 5), y carga en la secuencia los datos
+ leídos del fichero indicado en
+\begin_inset Formula $s$
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Subsection
+Segundo modelo
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Tabular
+<lyxtabular version="3" rows="8" columns="4">
+<features tabularvalignment="middle">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+E.
+ inicial
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+E.
+ final
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Efecto
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Iniciar(S)
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Cr./Inic./Cons.
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Consulta
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Comienza desde antes del
+\begin_inset Formula $1^{er}$
+\end_inset
+
+ elemento.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Avanzar(S)
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Iniciada/Cons.
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Consulta
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Avanza un elemento.
+ Error si EsÚltimo.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+EA(S)
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Consulta
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Consulta
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Obtiene el elemento actual.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+EsVacía(S)
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Cualquiera
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+(E.
+ inicial)
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Devuelve si la secuencia es vacía.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+EsÚltimo(S,e)
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Inic./Cons.
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+(E.
+ inicial)
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Devuelve si el elem.
+ actual es el último.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Crear(S)
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Cualquiera
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Creación
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Crea una secuencia vacía.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Registrar(S)
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Creación
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Creación
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Añade un elemento a la secuencia.
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Estas secuencias son similares a las del primer modelo, y en Pascal se usan
+ igual, pero no tienen marca de fin y empiezan antes del primer elemento.
+\end_layout
+
+\begin_layout Section
+Composición iterativa
+\end_layout
+
+\begin_layout Standard
+Las iteraciones tienen un
+\series bold
+invariante
+\series default
+ (INV), que se cumple tras cada ciclo y es un subconjunto de la post-condición,
+ además de tener una
+\series bold
+precondición
+\series default
+ (PRE) y una
+\series bold
+postcondición
+\series default
+ (POST).
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Tabular
+<lyxtabular version="3" rows="4" columns="2">
+<features tabularvalignment="middle">
+<column alignment="left" valignment="top" width="50text%">
+<column alignment="left" valignment="top" width="40text%">
+<row>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Lenguaje algorítmico
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Pascal
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+MIENTRAS
+\series default
+
+\begin_inset Formula $c$
+\end_inset
+
+
+\series bold
+HACER
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $e$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+
+\series bold
+FIN_MIENTRAS
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+while
+\begin_inset Formula $c$
+\end_inset
+
+ do
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $e$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+REPETIR
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $s$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+
+\series bold
+HASTA_QUE
+\series default
+
+\begin_inset Formula $c$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+repeat
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $s$
+\end_inset
+
+
+\family default
+ (no es necesario
+\family typewriter
+begin
+\family default
+..
+\family typewriter
+end
+\family default
+).
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+until
+\begin_inset Formula $c$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\series bold
+ITERAR
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $s_{1}$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+
+\series bold
+DETENER
+\series default
+
+\begin_inset Formula $c$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $s_{2}$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+
+\series bold
+FIN_ITERAR
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+repeat
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $s_{1}$
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+if
+\begin_inset Formula $c$
+\end_inset
+
+ then break;
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $s_{2}$
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+until false
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+En exámenes y prácticas, no podemos utilizar
+\family typewriter
+break
+\family default
+ salvo en este caso.
+\end_layout
+
+\begin_layout Standard
+Cualquier composición iterativa se puede expresar en términos de cualquier
+ otra, pero hay que saber elegir la más apropiada en cada caso.
+\end_layout
+
+\end_body
+\end_document
diff --git a/ip/n4.lyx b/ip/n4.lyx
new file mode 100644
index 0000000..2e5246e
--- /dev/null
+++ b/ip/n4.lyx
@@ -0,0 +1,302 @@
+#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 Standard
+Un esquema algorítmico es una
+\begin_inset Quotes cld
+\end_inset
+
+plantilla
+\begin_inset Quotes crd
+\end_inset
+
+ de algoritmo aplicable no a un problema sino a una
+\emph on
+clase
+\emph default
+ de problemas.
+ Estudiaremos los siguientes:
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Recorrido
+\series default
+ o
+\series bold
+enumeración secuencial:
+\series default
+ Aplicación del mismo tratamiento a todos los elementos de una colección.
+ Debemos estudiar si podemos tratar la secuencia vacía como el resto (
+\begin_inset Formula $H_{1}$
+\end_inset
+
+) y si podemos tratar al primer elemento como el resto (
+\begin_inset Formula $H_{2}$
+\end_inset
+
+).
+ Dado que
+\begin_inset Formula $H_{1}\implies H_{2}$
+\end_inset
+
+, tenemos tres esquemas: (1)
+\begin_inset Formula $H_{1}\land H_{2}$
+\end_inset
+
+, (2)
+\begin_inset Formula $\neg H_{1}\land H_{2}$
+\end_inset
+
+ y (3)
+\begin_inset Formula $\neg H_{1}\land\neg H_{2}$
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Búsqueda:
+\series default
+ Encontrar el primer elemento
+\begin_inset Formula $e$
+\end_inset
+
+ en la colección
+\begin_inset Formula $P$
+\end_inset
+
+ que cumpla cierta propiedad.
+ Puede que dicha propiedad no dependa solo de
+\begin_inset Formula $e$
+\end_inset
+
+ sino también de los elementos anteriores (
+\begin_inset Formula $P_{iz}$
+\end_inset
+
+), en cuyo caso habrá que hacer los tratamientos necesarios.
+ Una vez encontrado el elemento buscado, la iteración se detiene.
+\end_layout
+
+\begin_layout Standard
+Es muy importante identificar la clase de cada problema, pues de lo contrario
+ se podría confundir una búsqueda con un recorrido.
+ Un mismo problema puede combinar búsqueda y recorrido, bien de manera secuencia
+l o uno dentro del otro.
+\end_layout
+
+\begin_layout Standard
+Una
+\series bold
+iteración
+\series default
+ define una sucesión de valores dados por el conjunto de variables implicadas,
+ que denotamos
+\begin_inset Formula $V$
+\end_inset
+
+.
+ La secuencia se caracteriza por un valor inicial
+\begin_inset Formula $V_{0}$
+\end_inset
+
+ (
+\series bold
+inicialización
+\series default
+), una
+\series bold
+condición de continuación
+\series default
+
+\begin_inset Formula $P(V)$
+\end_inset
+
+ y un conjunto de funciones que modifican el valor de
+\begin_inset Formula $V$
+\end_inset
+
+ en cada iteración,
+\begin_inset Formula $f(V)$
+\end_inset
+
+ (
+\series bold
+cuerpo
+\series default
+).
+ Para saber que la iteración finaliza después de un número finito de pasos,
+ definimos una
+\series bold
+función de terminación
+\series default
+
+\begin_inset Formula $T$
+\end_inset
+
+ entera que dependa de las variables y sea estrictamente decreciente respecto
+ al progreso de la iteración con una cota inferior.
+\end_layout
+
+\begin_layout Standard
+Existen dos formas de definir una sucesión:
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Explícita
+\series default
+ o
+\series bold
+calculada
+\series default
+:
+\begin_inset Formula $a_{i}$
+\end_inset
+
+ se expresa como una fórmula o algoritmo desde
+\begin_inset Formula $i$
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Implícita
+\series default
+ o
+\series bold
+recurrente
+\series default
+:
+\begin_inset Formula $a_{i}$
+\end_inset
+
+ se expresa mediante una relación de inducción, a partir de
+\begin_inset Formula $a_{i-r},\dots,a_{i-1}$
+\end_inset
+
+, donde
+\begin_inset Formula $r$
+\end_inset
+
+ es la
+\series bold
+profundidad
+\series default
+, y los valores
+\begin_inset Formula $a_{0},\dots,a_{r-1}$
+\end_inset
+
+ son dados.
+\end_layout
+
+\begin_layout Standard
+Dada una sucesión
+\begin_inset Formula $a_{n}$
+\end_inset
+
+, definimos la sucesión de
+\series bold
+sumas parciales
+\series default
+ o
+\series bold
+serie
+\series default
+ como
+\begin_inset Formula $S_{1}=a_{1}$
+\end_inset
+
+,
+\begin_inset Formula $S_{n}=S_{n-1}+a_{n}$
+\end_inset
+
+.
+\end_layout
+
+\end_body
+\end_document
diff --git a/ip/n5.lyx b/ip/n5.lyx
new file mode 100644
index 0000000..90076a7
--- /dev/null
+++ b/ip/n5.lyx
@@ -0,0 +1,1691 @@
+#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 Standard
+Están formadas por un número fijo de elementos de un determinado tipo.
+ Definición:
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Tabular
+<lyxtabular version="3" rows="2" columns="2">
+<features tabularvalignment="middle">
+<column alignment="left" valignment="top" width="50text%">
+<column alignment="left" valignment="top" width="40text%">
+<row>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Lenguaje algorítmico
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Pascal
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\emph on
+nombre_tipo
+\emph default
+ = TIPO Tabla [
+\begin_inset Formula $s_{1}$
+\end_inset
+
+,
+\begin_inset Formula $e_{1}$
+\end_inset
+
+;
+\begin_inset Formula $\dots$
+\end_inset
+
+;
+\begin_inset Formula $s_{n}$
+\end_inset
+
+,
+\begin_inset Formula $e_{n}$
+\end_inset
+
+] de
+\emph on
+tipo
+\emph default
+;
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+\emph on
+nombre_tipo
+\emph default
+ = array [
+\begin_inset Formula $s_{1}$
+\end_inset
+
+..
+\begin_inset Formula $e_{1}$
+\end_inset
+
+,
+\begin_inset Formula $\dots$
+\end_inset
+
+,
+\begin_inset Formula $s_{n}$
+\end_inset
+
+..
+\begin_inset Formula $e_{n}$
+\end_inset
+
+] of
+\emph on
+tipo
+\emph default
+;
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Si
+\begin_inset Formula $T$
+\end_inset
+
+ es una variable de un tipo tabla, podemos acceder a sus elementos con la
+ notación
+\begin_inset Formula $T_{a_{1},\dots,a_{n}}$
+\end_inset
+
+, donde
+\begin_inset Formula $s_{i}\leq a_{i}\leq e_{i}$
+\end_inset
+
+, siendo
+\begin_inset Formula $s_{i}$
+\end_inset
+
+ y
+\begin_inset Formula $e_{i}$
+\end_inset
+
+ constantes de tipo entero, caracter o enumerado.
+ En Pascal,
+\family typewriter
+\emph on
+T
+\emph default
+[
+\begin_inset Formula $a_{1}$
+\end_inset
+
+,
+\begin_inset Formula $\dots$
+\end_inset
+
+,
+\begin_inset Formula $a_{n}$
+\end_inset
+
+]
+\family default
+.
+\end_layout
+
+\begin_layout Section
+Composición
+\begin_inset Formula $k$
+\end_inset
+
+-RECORRIENDO
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Tabular
+<lyxtabular version="3" rows="3" columns="2">
+<features tabularvalignment="middle">
+<column alignment="left" valignment="top" width="50text%">
+<column alignment="left" valignment="top" width="40text%">
+<row>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Lenguaje algorítmico
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Pascal
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="left" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Formula $i$
+\end_inset
+
+
+\series bold
+RECORRIENDO
+\series default
+ [
+\begin_inset Formula $a$
+\end_inset
+
+,
+\begin_inset Formula $b$
+\end_inset
+
+]
+\series bold
+HACER
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $s$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+
+\series bold
+FIN_RECORRIENDO
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="left" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+for
+\begin_inset Formula $i$
+\end_inset
+
+ :=
+\begin_inset Formula $a$
+\end_inset
+
+ to
+\begin_inset Formula $b$
+\end_inset
+
+ do
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $s$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Formula $i$
+\end_inset
+
+
+\series bold
+RECORRIENDO
+\series default
+ [
+\begin_inset Formula $a$
+\end_inset
+
+,
+\begin_inset Formula $b$
+\end_inset
+
+]
+\series bold
+EN_SENTIDO_INVERSO HACER
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $s$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+
+\series bold
+FIN_RECORRIENDO
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\family typewriter
+for
+\begin_inset Formula $i$
+\end_inset
+
+ :=
+\begin_inset Formula $b$
+\end_inset
+
+ downto
+\begin_inset Formula $a$
+\end_inset
+
+ do
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $s$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Ejecuta
+\begin_inset Formula $s$
+\end_inset
+
+ una vez por cada elemento entre
+\begin_inset Formula $a$
+\end_inset
+
+ y
+\begin_inset Formula $b$
+\end_inset
+
+, en sentido directo o inverso, y en este la variable
+\begin_inset Formula $i$
+\end_inset
+
+, de sólo lectura, toma el valor del elemento en cuestión.
+\end_layout
+
+\begin_layout Section
+Tipo
+\family typewriter
+string
+\end_layout
+
+\begin_layout Standard
+Representa una cadena de caracteres, a los que se accede igual que en una
+ tabla definida de 1 a
+\begin_inset Formula $n$
+\end_inset
+
+:
+\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
+var
+\emph on
+str
+\emph default
+ : string [
+\begin_inset Formula $n$
+\end_inset
+
+]
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Newpage newpage
+\end_inset
+
+Se representan con comillas simples rodeando el contenido, se accede a los
+ caracteres con
+\family typewriter
+\emph on
+str
+\emph default
+[
+\emph on
+i
+\emph default
+]
+\family default
+ y se definen las siguientes operaciones:
+\end_layout
+
+\begin_layout Itemize
+
+\family typewriter
+st1 + st2
+\end_layout
+
+\begin_layout Itemize
+
+\family typewriter
+concat(st1, ..., stn : string) : string
+\end_layout
+
+\begin_layout Itemize
+
+\family typewriter
+copy(st : string; start, index : integer) : string
+\end_layout
+
+\begin_layout Itemize
+
+\family typewriter
+delete(var st : string; start, index : integer)
+\end_layout
+
+\begin_layout Itemize
+
+\family typewriter
+insert(src : string; var dst : string; pos : integer)
+\end_layout
+
+\begin_layout Itemize
+
+\family typewriter
+length(s : string) : integer
+\end_layout
+
+\begin_layout Itemize
+
+\family typewriter
+pos(substr, str : string) : byte
+\end_layout
+
+\begin_layout Itemize
+
+\family typewriter
+str(in :
+\family default
+(byte, integer...)
+\family typewriter
+; var out : string)
+\end_layout
+
+\begin_layout Itemize
+
+\family typewriter
+val(in : string; var out :
+\family default
+(byte, integer...)
+\family typewriter
+; var invalidcharpos : integer)
+\end_layout
+
+\begin_layout Section
+Algoritmos de ordenación
+\end_layout
+
+\begin_layout Standard
+Suponemos que todos los algoritmos incluyen el siguiente léxico:
+\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
+
+\series bold
+LÉXICO
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $\text{TipoClave}=\text{ENTERO}$
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $\text{TipoDatos}=\text{\textbf{TIPO}}<\text{clave}:\text{TipoClave}\text{;}\dots>$
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $\text{TipoIndice}=\text{\textbf{TIPO}}\text{[1..\ensuremath{n}]}$
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $a:\text{\textbf{TABLA} [TipoIndice] \textbf{DE} TipoDatos}$
+\end_inset
+
+;
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsection
+Inserción directa
+\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
+
+\series bold
+LÉXICO
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $q,j:\text{TipoIndice}$
+\end_inset
+
+
+\family default
+;
+\end_layout
+
+\begin_layout Plain Layout
+
+\family typewriter
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $b:\text{TipoDatos}$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+
+\series bold
+ALGORITMO
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\emph on
+
+\begin_inset Formula $q$
+\end_inset
+
+
+\emph default
+
+\series bold
+RECORRIENDO
+\series default
+ [2,
+\begin_inset Formula $n$
+\end_inset
+
+]
+\series bold
+HACER
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $b\leftarrow a_{q}$
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $j\leftarrow q-1$
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\series bold
+MIENTRAS
+\series default
+
+\begin_inset Formula $b\text{.clave}<a_{j}\text{.clave}$
+\end_inset
+
+
+\series bold
+HACER
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $a_{j+1}\leftarrow a_{j}$
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $j\leftarrow j-1$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\series bold
+FIN_MIENTRAS
+\series default
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $a_{j+1}\leftarrow b$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\series bold
+FIN_RECORRIENDO
+\end_layout
+
+\begin_layout Plain Layout
+
+\series bold
+FIN
+\series default
+.
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsection
+Inserción binaria
+\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
+
+\series bold
+LÉXICO
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $inf,sup,med:\text{TipoIndice}$
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $x:\text{TipoDatos}$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+
+\series bold
+ALGORITMO
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $i$
+\end_inset
+
+
+\series bold
+RECORRIENDO
+\series default
+ [2,
+\begin_inset Formula $n$
+\end_inset
+
+]
+\series bold
+HACER
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $inf\leftarrow1$
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $sup\leftarrow i-1$
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $x\leftarrow a_{i}$
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\series bold
+MIENTRAS
+\series default
+
+\begin_inset Formula $inf\leq sup$
+\end_inset
+
+
+\series bold
+HACER
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $med\leftarrow(inf+sup)\text{ DIV }2$
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\series bold
+SI
+\series default
+
+\begin_inset Formula $x.\text{clave}<a_{med}\text{.clave}$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\series bold
+ENTONCES
+\series default
+
+\begin_inset Formula $sup\leftarrow med-1$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\series bold
+SI_NO
+\series default
+
+\begin_inset Formula $inf\leftarrow med+1$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\series bold
+FIN_SI
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\series bold
+FIN_MIENTRAS
+\series default
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $j$
+\end_inset
+
+
+\series bold
+RECORRIENDO
+\series default
+ [
+\begin_inset Formula $inf$
+\end_inset
+
+,
+\begin_inset Formula $i-1$
+\end_inset
+
+]
+\series bold
+EN_SENTIDO_INVERSO
+\series default
+
+\series bold
+HACER
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $a_{j+1}\leftarrow a_{j}$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\series bold
+FIN_RECORRIENDO
+\series default
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $a_{inf}\leftarrow x$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\series bold
+FIN_RECORRIENDO
+\end_layout
+
+\begin_layout Plain Layout
+
+\series bold
+FIN
+\series default
+.
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsection
+Selección directa
+\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
+
+\series bold
+LÉXICO
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $pos,j,q:\text{TipoIndice}$
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $min:\text{TipoDatos}$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+
+\series bold
+ALGORITMO
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $q$
+\end_inset
+
+
+\series bold
+RECORRIENDO
+\series default
+ [1,
+\begin_inset Formula $n-1$
+\end_inset
+
+]
+\series bold
+HACER
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $pos\leftarrow q$
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $min\leftarrow a_{q}$
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $j$
+\end_inset
+
+
+\series bold
+RECORRIENDO
+\series default
+ [
+\begin_inset Formula $q+1$
+\end_inset
+
+,
+\begin_inset Formula $n$
+\end_inset
+
+]
+\series bold
+HACER
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\series bold
+SI
+\series default
+
+\begin_inset Formula $min\text{.clave}>a_{j}\text{.clave}$
+\end_inset
+
+
+\series bold
+ENTONCES
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $pos\leftarrow j$
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $min\leftarrow a_{j}$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\series bold
+FIN_SI
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\series bold
+FIN_RECORRIENDO
+\series default
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $a_{pos}\leftarrow a_{q}$
+\end_inset
+
+;
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\begin_inset Formula $a_{q}\leftarrow min$
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset space \hspace{}
+\length 8ex
+\end_inset
+
+
+\series bold
+FIN_RECORRIENDO
+\end_layout
+
+\begin_layout Plain Layout
+
+\series bold
+FIN
+\series default
+.
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Otros algoritmos de ordenación, más avanzados, son el
+\series bold
+algoritmo de Shell
+\series default
+,
+\begin_inset Formula $O(n^{1.25})$
+\end_inset
+
+, y
+\series bold
+Quicksort
+\series default
+,
+\begin_inset Formula $O(n\log n)$
+\end_inset
+
+, que Charles Hoare demostró que no existe otro más rápido.
+\end_layout
+
+\end_body
+\end_document