Está en la página 1de 14

MÓDULO

Área: NEGOCIOS

2 Curso: PENSAMIENTO ALGORÍTMICO


Módulo: Construcción de expresiones, modelado y especificación de
problemas
Área: NEGOCIOS M2
Curso: PENSAMIENTO ALGORÍTMICO

Construcción de expresiones, modelado y especificación de problemas


Índice

1. Construcción de expresiones ............................................................................................................................ 2


1.1. Expresiones lógicas ..................................................................................................................................................... 2
1.2. Expresiones aritméticas .............................................................................................................................................. 2
1.3. Expresiones lógico-aritméticas ................................................................................................................................... 3
2. Introducción al modelado y especificación de problemas ............................................................................... 7
2.1. Abstracción de variables ............................................................................................................................................. 7
2.2. Pre-condiciones y post-condiciones ........................................................................................................................... 9
Cierre .................................................................................................................................................................. 11
Área: NEGOCIOS M2
Curso: PENSAMIENTO ALGORÍTMICO

Construcción de expresiones, modelado y especificación de problemas


Mapa de Contenido

Introducción al pensamiento
algorítmico y datos

Construcción de Introducción al modelado y


expresiones especificación de problemas

Expresiones lógicas Abstracción de variables

Pre-condiciones y Post-
Expresiones aritméticas
condiciones

Expresiones lógico-
aritméticas
Área: NEGOCIOS M2
Curso: PENSAMIENTO ALGORÍTMICO Pág. 1

Construcción de expresiones, modelado y especificación de problemas


RESULTADO DE
Realiza modelos matemáticos en base a una situación problemática, identificando
APRENDIZAJE
elementos relevantes de un problema para su adecuado análisis y solución.
DEL MÓDULO

En el módulo anterior pudimos ver que existen varios


tipos de datos de acuerdo con su valor, por ejemplo,
enteros, reales, lógicos, cadena y carácter, así mismo
vimos que existían los operando que son los datos y los
operadores, que juntos forman la estructura de una
expresión. En este módulo nos enfocaremos en
desarrollar las expresiones tanto lógicas como
aritméticas y en forma integral como sucede en la
práctica, en expresiones lógico-aritméticas.

Por otra parte, nos enfocaremos en los conceptos


nuevos de pre-condiciones y post-condiciones que
deben existir dentro del algoritmo, para poder
asegurar que existan las condiciones de entrada y
salida adecuadas para que el algoritmo funcione
correctamente.

Otro concepto nuevo que también va a ser parte del módulo será el de la abstracción de las variables. En la
vida real, siempre acostumbramos a realizar una abstracción para entender, describir o hacer referencia a un
objeto, tal como un computador, donde solamente hacemos referencia a las características funcionales más
importantes, dejando de lado las partes internas e integrantes del computador con el fin de simplificar el
entendimiento y el uso de las demás personas.

Desde el punto de vista del pensamiento algorítmico, también usaremos la abstracción en los datos y en las
variables.
Área: NEGOCIOS M2
Curso: PENSAMIENTO ALGORÍTMICO Pág. 2

Construcción de expresiones, modelado y especificación de problemas


1. Construcción de expresiones
Tal como se vio en el módulo anterior, una expresión es una combinación de operadores y operando. Los
operando podrán ser constantes, variables o expresiones mientras que los operadores pueden ser de cadena,
aritméticos, relacionales o lógicos.
En este capítulo nos enfocaremos en la construcción de las expresiones lógicas y aritméticas:

1.1. Expresiones lógicas


Este tipo de expresiones se construye mediante los operadores relacionales y lógicos y el valor siempre será
lógico, es decir: verdadero o falso.
Generalmente las expresiones lógicas se utilizan en los bloques de decisión o control de flujo en un algoritmo.
Antes de realizar operaciones lógicas, recordemos la tabla de verdad en la siguiente tabla:

Tabla de verdad1.

P Q no P PyQ PoQ
VERDADERO VERDADERO FALSO VERDADERO VERDADERO
VERDADERO FALSO FALSO FALSO VERDADERO
FALSO VERDADERO VERDADERO FALSO VERDADERO
FALSO FALSO VERDADERO FALSO FALSO

Veamos ahora algunos ejemplos de operando y expresiones lógicas en la siguiente tabla:

Operando y expresiones lógicas2.

Operando Operando
Expresión lógica R1 R2 Resultado
1 2
(4 > 2) (1 < 5) ((4 > 2) Y (1 < 5)) V V V
(7 =< 8) (2 > 5) ((7 =< 8) Y (2 > 5)) V F F
(9 = 1) (9 > 9) ((9 = 1) O (9 > 9)) F F F
(2 > 9) (3 = 3) (2 > 9) O (3 = 3) F V V

1.2. Expresiones aritméticas


Las expresiones aritméticas se componen de operadores y funciones aritméticas y sus operando que pueden
ser variables y constantes tienen valor de tipo numérico; su resultado también es numérico.

1
Tabla de verdad. Fuente: Jorge Carrillo.
2
Operando y expresiones lógicas. Fuente: Jorge Carrillo.
Área: NEGOCIOS M2
Curso: PENSAMIENTO ALGORÍTMICO Pág. 3

Construcción de expresiones, modelado y especificación de problemas


Generalmente en un algoritmo, encontraremos a una o más expresiones para la asignación de valores a las
variables.
Veamos algunos ejemplos de operando y expresiones con sus resultados en la siguiente tabla:

Operando y expresiones aritméticas3

Operando 1 Operando 2 Expresión aritmética Resultado


5 4 5+4 9
3,82 2,65 3,82 * 2,65 10,123
10 6 10 mod 6 4
45 8 45 div 8 5
-7,5 4 -7,5 + 4 -3,5

1.3. Expresiones lógico-aritméticas


Este tipo de expresiones consiste en una combinación de expresiones lógicas con expresiones aritméticas y
que en la práctica será lo que ocurre en los algoritmos. Para entender mejor, veamos varios ejemplos donde
trabajaremos con expresiones mixtas:

EJEMPLO 1

Para los siguientes ejercicios, considerar que los valores de las variables son:
a = 5, b = 3, c = 1 y port = falso

(a ≤ b) y (b ≥ c)
(5 ≤ 3) y (3 ≥ 1)
(falso) y (verdadero)
falso

De acuerdo con el valor de las variables, en la evaluación de condiciones se obtiene falso para la primera
condición y verdadero para la segunda condición. Teniendo en cuenta los valores de la tabla de verdad, al
evaluar el valor resultante es falso.

3
Operando y expresiones aritméticas. Fuente: Jorge Carrillo.
Área: NEGOCIOS M2
Curso: PENSAMIENTO ALGORÍTMICO Pág. 4

Construcción de expresiones, modelado y especificación de problemas


EJEMPLO 2
port 2 ← (c ≤ b)
port 2 ← (1 ≤ 3)
port 2 ← verdadero

En este caso la variable port 2 ha sido declarada de tipo booleano y se le asigna el valor resultante de la
operación lógica entre c y b con el operador menor o igual. De acuerdo con el valor de las variables, en la
evaluación de condiciones se obtiene verdadero para esta condición.

EJEMPLO 3
(2 b = a + c)
(2 · 3 = 5 + 1)
(6 = 6) verdadero

De acuerdo con el valor de las variables, en la evaluación de condiciones, en esta operación lógica con operador
de igualdad se obtiene verdadero luego de la evaluación de la condición.

EJEMPLO 4
port 2 ← (no port) o (5 > 3)
port 2 ← (no falso) o (verdadero)
port 2 ← verdadero o verdadero
port 2 ← verdadero

Se puede ver que a la variable port 2 se le está asignando el resultado de la operación lógica de la conjunción
que involucra a la negación de la variable port y a la comparación con el operador mayor. De acuerdo con el
valor de las variables, en la evaluación de condiciones se obtiene verdadero para ambas condiciones, por lo
tanto, el valor resultante es verdadero.
Área: NEGOCIOS M2
Curso: PENSAMIENTO ALGORÍTMICO Pág. 5

Construcción de expresiones, modelado y especificación de problemas


EJEMPLO 5
port 2 ← (a > b)
port 2 ← (5 > 3)
port 2 ← verdadero

A la variable port 2 se le asigna el resultado de la operación lógica de la comparación con el operador mayor
de a y b. De acuerdo con el valor de las variables, en la evaluación de condiciones se obtiene verdadero para
esta condición.

EJEMPLO 6
port 2 ← no ((a > b) o (b > c))
port 2 ← no ((5 > 3) o (3 > 1))
port 2 ← no ((verdadero) o (verdadero))
port 2 ← no (verdadero)
port 2 ← falso

A la variable port 2 se le asigna el resultado de la operación lógica de la negación de la disyunción (o) de dos
comparaciones: la primera entre a y b con el operador mayor, y la segunda entre b y c con el operador mayor.
De acuerdo con el valor de las variables, en la evaluación de condiciones se obtiene verdadero; luego de la
negación el valor asignado a la variable port 2 es falso.
Área: NEGOCIOS M2
Curso: PENSAMIENTO ALGORÍTMICO Pág. 6

Construcción de expresiones, modelado y especificación de problemas


Ahora vamos a integrar expresiones aritméticas y lógicas en un ejemplo para el siguiente algoritmo que
desarrollaremos:

Diseñar un algoritmo para leer un número entero n y escriba una función que tome dicho número entero y
devuelva el número de dígitos del número y el valor del número entero ingresado.

EJEMPLO 6

var
entero: n1, cd
real: n
inicio
leer (n)
n1  n
cd  0
mientras (n1 > 0) hacer
n1  n1 / 10
cd  cd + 1
fin_mientras
escribir (‘El número ingresado es’, n)
escribir (‘Tiene un número de dígitos igual a’, cd)
fin
Área: NEGOCIOS M2
Curso: PENSAMIENTO ALGORÍTMICO Pág. 7

Construcción de expresiones, modelado y especificación de problemas


2. Introducción al modelado y especificación de
problemas

2.1. Abstracción de variables


En la vida real, siempre acostumbramos a realizar una abstracción para entender, describir o hacer referencia
a un objeto, tal como un computador, donde solamente hacemos referencia a las características funcionales
más importantes, dejando de lado las partes internas e integrantes del computador con el fin de simplificar el
entendimiento y el uso de las demás personas. Desde el punto de vista del pensamiento algorítmico, también
usaremos la abstracción en los datos y en las variables y según define Joyanes (2007):

La abstracción de datos es la técnica de programación que permite inventar o definir nuevos tipos de
datos (tipos de datos definidos por el usuario) adecuados a la aplicación que se desea realizar. La
abstracción de datos es una técnica muy potente que permite diseñar programas más cortos, legibles y
flexibles. La esencia de la abstracción es similar a la utilización de un tipo de dato, cuyo uso se realiza
sin tener en cuenta cómo está representado o implementado. Los tipos de datos son abstracciones y el
proceso de construir nuevos tipos se llaman abstracciones de datos. Los nuevos tipos de datos definidos
por el usuario se llaman tipos abstractos de datos (ADT, Abstract Data Types) (…) Los tipos abstractos
de datos proporcionan un mecanismo adicional mediante el cual se realiza una separación clara entre
la interfaz y la implementación del tipo de dato. La implementación de un tipo abstracto de dato consta
de:

1. Representación: elección de las estructuras de datos.


2. Operaciones: elección de los algoritmos.

La interfaz del tipo abstracto de dato se asocia con las operaciones y datos visibles al exterior del TAD.

Para poder especificar el TAD podemos usar un enfoque informal, describiendo los datos y las operaciones
relacionadas en lenguaje natural. Joyanes (2007) especifica que una descripción informal:
Consta de dos partes:

1. Detallar en los datos del tipo, los valores que pueden tomar.
2. Describir las operaciones, relacionándolas con los datos. El formato que generalmente se emplea,
primero especifica el nombre del TAD y los datos: TAD nombre del tipo (valores y su descripción). A
continuación, cada una de las operaciones con sus argumentos, y una descripción funcional en lenguaje
natural, con este formato: Operación(argumentos).
Área: NEGOCIOS M2
Curso: PENSAMIENTO ALGORÍTMICO Pág. 8

Construcción de expresiones, modelado y especificación de problemas


A continuación, se especifica, siguiendo esos pasos, el tipo abstracto de datos Conjunto: TAD Conjunto
(colección de elementos sin duplicidades, pueden estar en cualquier orden, se usa para representar los
conjuntos matemáticos con sus operaciones). Las operaciones básicas sobre conjuntos son las siguientes:

Definición TAD Conjunto4

Conjuntovacio Crea un conjunto sin elementos

Comprueba si el elemento forma parte del conjunto, en caso


Añadir(Conjunto,elemento) negativo se añade. La operación modifica al conjunto.

Si el elemento pertenezca al conjunto se retira. La operación


Retirar(Conjunto, elemento) modifica al conjunto.
Verifica si el elemento forma parte del conjunto, en cuyo caso
Pertenece(Conjunto,elemento) devuelve cierto
Verifica si el conjunto no tiene elementos, en cuyo caso
Esvacio(Conjunto) devuelve cierto.

Cardinal(Conjunto) Devuelve el número de elementos del conjunto.


Realiza la operación matemática unión de dos conjuntos.
La operación devuelve un conjunto con los elementos comunes
Union (Conjunto, Conjunto) y no comunes de ambos.

Se puede especificar más operaciones sobre conjuntos, todo dependerá de la aplicación que se quiera dar al
TAD.
Veamos ahora un ejemplo sobre un tipo abstracto de datos (TAD):

4
Definición TAD Conjunto. Fuente: Joyanes, L (2007).
Área: NEGOCIOS M2
Curso: PENSAMIENTO ALGORÍTMICO Pág. 9

Construcción de expresiones, modelado y especificación de problemas


EJEMPLO TAD

Se define un TAD llamado ‘auto’ correspondiente a cualquier automóvil donde también definiremos los
elementos, dentro de los cuales pueden estar por marca, combustible, tipo, color, etc. Dentro de cada
elemento se pueden definir varias opciones, por ejemplo: elemento combustible = gas, bencina, diésel,
eléctrico, híbrido.
Se pueden definir también operaciones sobre auto dependiendo de lo que se quiera realizar en el
algoritmo, por ejemplo:

• Añadir (combustible, diesel): agrega el elemento ‘diesel’ al conjunto llamado ‘combustible’ y los datos
del conjunto combustible serán: gas, bencina, diésel, eléctrico, híbrido.
• Añadir (marca, Toyota): agrega el elemento ‘Toyota’ al conjunto llamado ‘marca’ y los datos del
conjunto marca serán: Audi, BMW, Suzuki, Toyota y Volvo.
• Union (combustible, marca): La operación devuelve un conjunto con la unión de ambos conjuntos
combustible y marca con los elementos comunes y no comunes de ambos.

2.2. Pre-condiciones y post-condiciones


Cuando vamos a realizar el diseño de un programa, debemos solucionar una problemática que puede
demandar varios entregables o resultados, por lo que podemos dividir el proyecto en varios módulos para
simplificar el diseño, sin embargo, debemos tener claro que los módulos deben interactuar entre sí, por lo que
resulta importante especificar claramente el flujo de datos entre ellos. Un medio para realizar estas
especificaciones y detallar las hipótesis de entrada y salida para cada módulo es escribir una pre-condición
(descripción de las condiciones que deben cumplirse al principio del módulo) y una post-condición
(descripción de las condiciones al final de un módulo).

Otro aspecto importante a considerar es que, para que funcione correctamente un algoritmo, las variables de
entrada deben cumplir con algunas condiciones para que una función o una expresión funcione correctamente,
y que llamaremos precondición. Por ejemplo, si queremos usar una expresión que divide dos variables
(dividendo y divisor), las precondiciones serían que las variables tengan datos numéricos y que el divisor sea
distinto a cero. En este caso con las precondiciones podemos asegurar que el código funcione correctamente
y en caso de que el usuario ingrese un dato que no cumpla con la precondición, el código puede devolver un
mensaje de error.

Para el caso de una post-condición, diremos que, son las condiciones que cumplirá el valor de retorno, y los
parámetros recibidos, en caso de que hayan sido alterados, siempre que se hayan cumplido las precondiciones
y para el ejemplo anterior, la expresión con la división con sus precondiciones asignadas, puede asegurar que
devolverá un número correspondiente al cociente solicitado.

Veamos un ejemplo de un cálculo simple donde se divide dos números enteros a y b que son el dividendo y el
divisor respectivamente donde se usa la pre-condición de que el divisor debe ser un número distinto de cero y
que, al ocurrir, entregará un mensaje de error y pedirá ingresar nuevamente el número divisor y una post-
condición para que devuelva un número real, con el cociente de ambos números:
Área: NEGOCIOS M2
Curso: PENSAMIENTO ALGORÍTMICO Pág. 10

Construcción de expresiones, modelado y especificación de problemas


EJEMPLO
var
entero: a, b
real: division
inicio
leer (a, b)
si b = 0 entonces
escribir (‘Error, debe ingresar un número distinto de cero’)
si_no
division  a / b
escribir (‘El cociente es’, division)
fin_si
fin

IMPORTANTE

Las precondiciones y post-condiciones describen las condiciones que deben cumplirse a la entrada y a la
salida de un módulo.
Área: NEGOCIOS M2
Curso: PENSAMIENTO ALGORÍTMICO Pág. 11

Construcción de expresiones, modelado y especificación de problemas


Cierre
En este módulo se ha tratado en detalle sobre la estructura de una expresión en base a los operando y
operadores, distinguiendo si es lógica, aritmética o lógico-aritmética y se ha reforzado su desarrollo para poder
tener una buena base para los módulos siguientes donde se tratarán con más detalle los diagramas de flujo.
También se han tratado los conceptos de pre-condiciones y post-condiciones que usaremos en los próximos
módulos cuando se desarrollen árboles de decisión en los algoritmos.
No podemos dejar de lado lo aprendido respecto de la abstracción de las variables, que también será de
utilidad en el próximo módulo.

APORTE A TU FORMACIÓN

Sin duda que en este módulo nos hemos centrado más en el modelamiento matemático a partir de
expresiones aritméticas y lógicas, en la práctica veremos que la mayor proporción de casos de solución de
problemas por la vía de los algoritmos se centra en este tipo de expresiones, por lo que resulta importante
para el desempeño laboral del estudiante, toda vez que se requiera realizar algún cálculo simple o más
complejo donde se requiere establecer condiciones tanto de entrada como de salida para diseñar un
algoritmo que funcione de manera correcta.

También podría gustarte