Está en la página 1de 9

ASIGNATURA:

Algorítmica

CARRERAS:

• Administración (Contabilidad y Finanzas)


• Administración de Empresas
• Mercadeo

ALGORÍTMOS CUANTITATIVOS:

SECUENCIALES, LINEALES O SIMPLES

ING. JOSÉ CECILIO AVELLANEDA V.

SAN CRISTÓBAL, MARZO DE 2019


UNIDAD III:

ALGORITMOS Y PROGRAMAS

Un sistema de computación no es capaz de realizar cálculos o manipular datos por si


sólo, debemos darle órdenes exactas, paso a paso, es decir, un programa, que consista de
instrucciones ordenadas y agrupadas en forma lógica. Cada programa atiende a un proyecto
que debe planificarse con el objeto de llegar a la solución del problema planteado, y para
ello deben usarse los poderes de la lógica. El diseño de un programa, o su lógica de
programación deben ser determinados antes de escribir el programa, por lo que se hace
necesario atender a un enfoque o técnica que permita lograr con éxito lo propuesto.

PASOS PARA RESOLVER UN PROBLEMA MEDIANTE EL USO DE UN COMPUTADOR:

1. Descripción del problema:


Es la definición exacta de lo que se necesita hacer, para ello se requiere leer el
enunciado cuantas veces sea necesario, hasta entenderlo completamente. Implica
entender claramente el alcance y la delimitación del mismo, de manera que el problema
a resolver no sea otro distinto.

2. Análisis del problema:


Se contempla en esta etapa, analizar varios componentes:
• Enfocar la naturaleza del problema ubicándolo en su tipología, usuarios, alcance,
cobertura, restricciones, influencia de variables externas como: normativas,
decisiones gubernamentales, etc.
• Determinar claramente con qué datos de entrada se dispone para la solución del
problema.
• Aclarar y determinar la información o resultados que se soliciten.

3. Planificación de la Solución:
En esta actividad es donde radica la mayor parte de la dificultad para solucionar
un problema, el resto de las etapas básicamente se circunscriben a la adaptación para
que un computador ejecute lo ordenado. Implica diseñar la lógica general y detallada del
programa, y el uso de una técnica como herramienta, es fundamental. Dos de las
técnicas más comunes son las de elaborar un proceso en seudocódigo (ALGORITMO)
y la elaboración de un diagrama estructurado o de flujo.
El seudocódigo representa la lógica en instrucciones, en nuestro lenguaje,
semejantes a las del programa, sólo que éste no tiene principios de sintaxis o reglas
para formular instrucciones. El uso de enunciados o formas permitirán describir las
actividades de procesamiento y sus relaciones, cálculos, manipulación de datos,
operaciones lógicas, entradas y salidas. Esta técnica también se conoce como
“DISEÑO DE ALGORITMOS”.
Los diagramas de flujo o los estructurados se usan para ilustrar gráficamente,
mediante símbolos que representan estructuras preestablecidas, la lógica del programa.
Con esta técnica se logra una mejor visualización de los procesos y de la secuencia de
los pasos a seguir.

4. Prueba de Escritorio:
Llamada también “corrida en frío “ o “traza”, consiste en hacer un seguimiento
manual, utilizando lápiz y papel, de los pasos que se definieron en el seudocódigo o en
el diagrama estructurado y comprobar, con unos pocos datos, si el resultado que se
obtiene es el esperado.
ALGORITMOS CUANTITATIVOS

Los algoritmos cuantitativos son aquellos en los que se utilizan cálculos numéricos para
definir los pasos del proceso.

ELEMENTOS QUE CONFORMAN UN ALGORITMO

• ENTRADA: Los datos iniciales que posee el algoritmo antes de ejecutarse.


• PROCESO: Acciones que lleva a cabo el algoritmo.
• SALIDA: Datos que obtiene finalmente el algoritmo.

Es decir, que para poder definir bien un problema es conveniente responder a las siguientes
preguntas:

• ¿Qué entradas se requieren (tipo y cantidad)? Entrada


• ¿Cuál es la salida deseada (tipo y cantidad)? Salida
• ¿Qué método produce la salida deseada? Proceso

ESTRUCTURAS ALGORÍTMICAS

Las estructuras de operación de programas son un grupo de formas de trabajo, que


permiten, mediante la manipulación de variables, realizar ciertos procesos específicos que
nos lleven a la solución de problemas. Estas estructuras se clasifican de acuerdo con su
complejidad en:

Secuenciales

• Asignación
• Entrada
• Salida

Estructuras Algorítmicas

• Simples
• Condicionales
• Múltiples

Cíclicas

• Hacer para
• Hacer mientras
• Repetir hasta

PSEUDOCÓDIGO:

Mezcla de lenguaje de programación y español (o inglés o cualquier otro idioma) que se


emplea, dentro de la programación estructurada, para realizar el diseño de un programa. En
esencia, el pseudocódigo se puede definir como un lenguaje de especificaciones de
algoritmos.
CUERPO DEL ALGORITMO EN PSEUDOCÓDIGO

INICIO
Declaración (variables y constantes)
Entrada (datos)
Proceso (transformación de datos en información útil)
Salida (datos e información)
FIN

ESTRUCTURAS SECUENCIALES

La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra


en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la
siguiente y así sucesivamente hasta el fin del proceso. Una estructura secuencial se
representa de la siguiente forma:

INICIO
Accion1
Accion2
.
.
AccionN
FIN

VARIABLES
Es un grupo de datos cuyo valor puede variar o alterarse durante la ejecución del algoritmo.
Principalmente, existen dos maneras de otorgar valores iniciales a variables:
1. Mediante una sentencia de asignación.
2. Mediante un procedimiento de entrada de datos (por ejemplo: “leer”).

CONSTANTES
Es un grupo de datos cuyo valor permanece sin cambio durante la ejecución del algoritmo.

Declaración de variables
La declaración de variables es un proceso que consiste en listar al principio del algoritmo
todas las variables que se usarán, además de colocar el nombre de la variable se debe decir
qué tipo de variable es.

Contador, edad: Entero


Direccion, nombre: Alfanumerico
Salario_Basico: Real
Declaración de constantes
En el momento de declarar constantes debe indicarse que lo es y colocarse su respectivo
valor.
CONST PI ← 3.141592 /* Constante matemática PI */
CONST Altura ← 40
CONST e ← 2.7182818284 /* Constante matemática e */

ASIGNACIÓN:
La asignación consiste, en el paso de valores o resultados a una zona de la memoria. Dicha
zona será reconocida con el nombre de la variable que recibe el valor. La asignación se
puede clasificar de la siguiente forma:

1. Simples: Consiste en pasar un valor constante a una variable (a ← 15)


2. Contador: Consiste en usarla como un verificador del número de veces que se
realiza un proceso (a ← a + 1)
3. Acumulador: Consiste en usarla como un sumador en un proceso (a ← a + b)
4. De trabajo: Donde puede recibir el resultado de una operación matemática que
involucre muchas variables (a ← c + b*2/4).

En general el formato a utilizar es el siguiente:

<Variable> ← <valor o expresión>

El símbolo ← debe leerse “asigne”

Lectura o entrada de datos:

La lectura consiste en recibir desde un dispositivo de entrada (por ejemplo el teclado) un


valor o dato. Este dato va a ser almacenado en la variable que aparece a continuación de la
instrucción. Esta operación se representa en pseudocódigo como sigue:

Leer(MesNac); Leer(Sumando)

Donde “MesNac” y “Sumando” son las variables que recibirán los valores

Escritura o salida de datos:

Consiste en enviar por un dispositivo de salida (por ejemplo, monitor o impresora) un


resultado o mensaje. Este proceso se representa en pseudocódigo como sigue:

Escribir “El resultado de la multiplicación es:”, Producto /* Cuando la salida va a la


pantalla */

Imprimir “El resultado de la multiplicación es:”, Producto /* Cuando la salida va a la


impresora */
Donde “Resultado de la multiplicación es:”, es un mensaje que se desea que aparezca
en pantalla junto a Producto la cual es una variable que contiene el valor de una
multiplicación.

Es decir, si la variable Producto vale 15, entonces, la instrucción:

Escribir “El resultado de la multiplicación es: ”, Producto, producirá el siguiente resultado en


pantalla:

C:\> El resultado de la multiplicación es: 15

Traza de un algoritmo (corrida en frío)


La traza de un algoritmo (o programa) indica la secuencia de acciones (instrucciones) de su
ejecución, así como, el valor de las variables del algoritmo (o programa) después de cada
acción (instrucción).

Ejemplo: Algoritmo para hallar el producto de tres números enteros introducidos por
teclado.

Inicio
mult_1, mult_2, mult_3, Producto: entero
escribir “Ingrese valor del primer multiplicando: “
leer(mult_1)
escribir “Ingrese valor del segundo multiplicando: “
leer(mult_2)
escribir “Ingrese valor del tercer multiplicando: “
leer(mult_3)
Producto ← (mult_1 * mult_2 * mult_3)
Escribir “El resultado de la multiplicación es: “, Producto
Fin

Prueba de escritorio, corrida en frío o traza

Le asignamos valores arbitrarios a mult_1, mult_2 y mult_3.

mult_1 mult_2 mult_3 Producto


3 5 2 30
La verdadera utilidad de esta herramienta se nota cuando diseñamos algoritmos con toma
de decisiones y ciclos repetitivos.

Ejercicio resuelto
1) Una tienda ofrece un 15% de descuento por cada compra. Un cliente desea saber
cuánto deberá pagar por su compra.

En primer lugar realizamos el análisis del problema (Opcional)

Entrada
Aquí van sólo los datos de entrada: Variables y constantes
monto, desc (variables de entrada)
CONST tasa_desc ← 0.15 (constante)

Proceso
Lugar para establecer variables de trabajo y auxiliares que
permitirán alcanzar el objetivo del algoritmo.

desc ← monto * tasa_desc


pago_total ← monto – desc

Salida
En la salida indicamos la(s) variable(s) que contienen
el(los) resultado(s) que deseamos obtener mediante el
proceso del algoritmo.
Pago_total (variable que indica el pago que deberá
realizar el cliente)

Teniendo el análisis hecho, nos resultará más sencillo realizar el algoritmo, ya que en el
mismo también se establece secuencialmente y en ese orden la entrada, el proceso y la
salida, de la misma manera como se encuentra en el análisis, es decir, después de la
palabra Inicio declaramos constantes y variables (aquí tanto de entrada como de salida), e
inmediatamente viene la entrada por teclado. Luego se presenta el proceso, representado
por variables auxiliares y de trabajo para finalmente mostrar al usuario la información
solicitada.

Algoritmo en pseudocódigo
Inicio
CONST tasa-desc ← 0.15 /* constante, asignado en forma de tanto por uno */
monto, desc, pago_total: real /* declaración de variables */
escribir “Indique el monto de la compra” /* mensaje visto por el usuario */
leer (monto) /* entrada de datos por el teclado */
desc ← monto * tasa_desc /* variable auxiliar para conocer el descuento */
pago_total ← monto – desc /* variable de trabajo */
Escribir “El monto a pagar por el cliente es: “, pago_total /* Visualizamos el resultado */
Fin
NOTAS:
• Los comentarios se representan con los símbolos /* y */
• El porcentaje (tanto por ciento) se trabaja mejor (con más sencillez) en forma de tanto
por uno:
Por ejemplo:
El 30% = 30/100 = 0.3
El 3% = 3/100 = 0.03

SECUENCIA DE INSTRUCCIONES

Observa la siguiente secuencia de instrucciones:

1) A←5
2) B←7
3) C←2
4) A←A+B+C
5) B ← C/2
6) A ← A/B + A*C
7) Escribir (A)

Responda las siguientes cuestiones:

a) Qué valor contiene la variable A al ejecutarse la cuarta instrucción. __________


b) Qué valor posee la variable B cuando se ejecuta la quinta línea
___________
c) Qué valor contiene A después de la sexta instrucción
___________
d) Qué valor imprime en pantalla la última instrucción.
___________

Llevar una expresión aritmética o algebraica a una expresión algorítmica:

𝐴 = 𝜋. 𝑟 2 Expresión matemática

A ← PI*r**2 Expresión algorítmica

Ejercicio propuesto:

Exprese en forma algorítmica la siguiente fórmula para calcular la depreciación:

Costo – Valor de recuperación


Depreciación =
Vida Util
Exprese en forma algorítmica la siguiente expresión algebraica:

W3∙ H – K Solución (W**3*H−K) / ((Y*3)+(7−2))


Y ∙ 3 + (7 – 2)

Calcule la siguiente expresión:

(35 + 23) * X / 3 – 4*Z – (Y div 3 + (7 *( Z mod 2) – 1))

Para: X← 6; Y← 9; Z ←12

Solución:

(35 + 23) * 6 / 3 – 4*12 – (9 div 3 + (7 *( 12 mod 2) – 1))


58 * 6 / 3 – 4*12 – (9 div 3 + (7 *( 12 mod 2) – 1))
58 * 6 / 3 – 4*12 – (9 div 3 + (7 * 0 – 1))
58 * 6 / 3 – 4*12 – (9 div 3 + (0 – 1))
58 * 6 / 3 – 4*12 – (9 div 3 + (– 1))
58 * 6 / 3 – 4*12 – (9 div 3 – 1)
58 * 6 / 3 – 4*12 – (3 – 1)
58 * 6 / 3 – 4*12 – 2
348 / 3 – 4*12 – 2
116 – 4*12 – 2
116 – 48 – 2
68 – 2
66

Secuencia de instrucciones:
Qué valores toman las variables a, b y c luego de ejecutarse la última instrucción
a←8
b ← 3+a Solución
a←8
c←5*2 b ← 3+(8) = 3+8 = 11
a←a+5 c ← 5 * 2 = 10
b←b+a–3 a ← (8) + 5 = 8+5 = 13
b ← (11) + (13) – 3 = 11 + 13 = 24
c←b–8 c ← (24) – 8 = 24 – 8 = 16
a ← a + b / 2+7 a ← a + b / 2+7= (13) + (24) / 2 +7 = 13 + 24 / 2 +7 =
b←5*c/2–b 13 + 24 / 2 +7 = 13 + 12 +7 = 25 + 7 =32
b ← 5 * (16) / 2 – (24) = 5 * 16 / 2 – 24 = 5 * 8 – 24
c←c-b/2*3 = 40 – 24 = 16
c ← (16) – (16) / 2 * 3 = 16 - 16 / 2 * 3 = 16 – 8 * 3
Aquí colocamos los resultados 16 – 24 = – 8
de la tabla
a b c
a 32 b 16 c – 8 8 11 10
13 24 16
32 16 –8