diff options
Diffstat (limited to 'ip')
| -rw-r--r-- | ip/n.lyx | 224 | ||||
| -rw-r--r-- | ip/n0.lyx | 210 | ||||
| -rw-r--r-- | ip/n1.lyx | 1788 | ||||
| -rw-r--r-- | ip/n2.lyx | 571 | ||||
| -rw-r--r-- | ip/n3.lyx | 1300 | ||||
| -rw-r--r-- | ip/n4.lyx | 302 | ||||
| -rw-r--r-- | ip/n5.lyx | 1691 |
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 |
