Compare commits

...

2 Commits

Author SHA1 Message Date
Vladimir Lemus 6494acb364 otros modelos 2022-12-01 01:34:16 -06:00
Vladimir Lemus 3cc5c95bc1 otros modelos 2022-12-01 01:33:49 -06:00
2 changed files with 53 additions and 1 deletions

Binary file not shown.

View File

@ -6,6 +6,8 @@
\usepackage{amssymb}
\usepackage{hyperref}
\usepackage{graphicx}
\usepackage{algpseudocode}
\usepackage[Algoritmo]{algorithm}
\usepackage{subcaption}
\usepackage{pgf}
\usepackage{tikz}
@ -202,7 +204,57 @@ Con esta estructura podemos construir la suma de forma recursiva en cálculo $\l
Esto lo pueden ver sólo de sustituir en la estructura de arriba, tomando en cuenta que $k=1$ y $n=1$, es decir, sólo hay una $x$.
De manera similar pueden convertir la minimización no acotada.
\section*{Lenguaje IMP}
El lenguaje IMP es un modelo sencillo, aún con partes de abstracción, de un lenguaje de programación de ato nivel. Se pueden reconocer estructuras como el $if$ y el $while$ presentes en la mayoría de lenguajes de programación usados.
Se define como una gram{atica independiente de contexto, pero es un lenguaje Turing completo
\begin{align*}
P &\rightarrow skip \mid X:=A\mid (P;P)\mid (if\ B\ then\ P\ else\ P) \mid (while\ B\ do\ P) \\
A &\rightarrow Z\mid X\mid (A+A)\mid (A-A)\mid (A\times A) \\
B &\rightarrow v\mid f\mid (A=A)\mid (A < A)\mid \neg B\mid (B \wedge B)\mid (B\vee B) \\
X &\rightarrow x_N \\
N &\rightarrow 0\mid C \\
C &\rightarrow 1S\mid 2S\mid ...\mid 9S \\
S &\rightarrow 0S\mid 1S\mid ...\mid 9S\mid \epsilon \\
Z &\rightarrow N\mid -C \\
\end{align*}
\noindent donde podemos identificar las expresiones aritméticas($A$), las expresiones booleanas ($B$), la producción d elos números enteros $Z$, las localidades de memoria ($X$) y los comandos del lenguaje $P$.
En este caso no es necesario definir la suma desde una función más sencilla, pero lo que sí hay que definir es la recursión, eso se puede hacer a partir de $\mathbf{if}$ y $\mathbf{while}$.
Por ejemplo, si para el caso cero queremos evaluar una función $h$ lo hacemos como se puede ver en el algoritmo \ref{alg:ejem}
\begin{algorithm}
\caption{Evaluación diferenciada}\label{alg:ejem}
\begin{algorithmic}[1]
\State inicializaciones
\If {Condición inicial}
\State $h$ es evaluada
\Else $\ g$ es evaluada
\EndIf
\end{algorithmic}
\end{algorithm}
Lo pongo muy platicado, pero ya les toca a ustedes llenar los huecos.
Pero por poner un ejemplo ya sin recursión primitiva podemos definir la operación factorial de la forma como se ve en el algoritmo \ref{alg:fact}.
\begin{algorithm}
\caption{Función factorial de $n$}\label{alg:fact}
\begin{algorithmic}[1]
\State $x_0 := 1;$
\While $(x_1 < n) do$
\State $x_1:= (x_1 + 1);$
\State $x_0:= (x_0\times x_1)$
\EndWhile
\end{algorithmic}
\end{algorithm}
\section*{Programas While}
De nueva cuenta nos movemos a terrenos más conocidos de la programación, para ello definimos un lenguaje de programación sencillo.