Vous êtes sur la page 1sur 16

UNIVERSIDAD DE CARABOBO. FACULTAD DE INGENIERÍA. DEPARTAMENTO DE COMPUTACIÓN.

CÁTEDRA DE COMPUTACIÓN I

DISEÑO DE ALGORITMOS

Evaluación Diagnóstica
1. Enumere los pasos para la resolución de problemas usando la computadora
2. ¿Cuáles son las tres preguntas del análisis del problema a ser aplicadas al enunciado del
problema?
3. De estas preguntas, ¿Cuál de ellas genera una síntesis?

D ISEÑO DEL A LGORITMO


En matemáticas, ciencias de la computación, y disciplinas relacionadas, un algoritmo (del latín, dixit
algorithmus y éste a su vez del matemático persa Muhammad ibn Musa al-Jwarizmi) es una lista bien
definida, ordenada y finita de operaciones que permite hallar la solución a un problema. Dado un
estado inicial y una entrada, a través de pasos sucesivos y bien definidos se llega a un estado final
obteniendo una solución.

Ahora bien, para poder diseñar algoritmos es necesario disponer de una notación, que llamaremos
‘notación algorítmica’, que permita:

1. Describir las operaciones puestas en juego (acciones, instrucciones, comandos, ...)


2. Describir los objetos manipulados por el algoritmo (datos/informaciones)
3. Controlar la realización de las acciones descritas, indicando la forma en que estas se organizan
en el tiempo

Para poder describir cualquier tipo de acción de las que intervienen en un algoritmo, diversos autores
proponen el uso de un conjunto de construcciones lógicas (secuencia, decisión e iteración), también
llamadas estructuras, con las que es posible escribir cualquier programa. Lo que sigue a continuación es
la descripción de las diferentes construcciones disponibles para el diseño de algoritmos.

1.- D E S C R I B I R L A S O P E R A C I O N E S P U E S T A S E N J U E G O .

Para los efectos de esta guía de estudio, estas operaciones se denominarán Acciones a las acciones,
instrucciones, comando y otros que puedan ejecutar la computadora en forma directa o la forma como
ellas deben ser descritas para su correcta ejecución. Se clasifican en:

a. Acciones Elementales
b. Secuencia de Acciones
c. Acción de Decisión
d. Acción iterativa

ACCIONES ELEMENTALES

Se entiende por acciones elementales aquellas que el ordenador es capaz de realizar y que serán de dos
tipos:

Aritmético – lógicas: Operaciones que, a partir de unos determinados datos, realizan un cálculo
aritmético (suma, resta, multiplicación, ...) o un cálculo lógico (mayor que, menor que, igual que, ...).Las
primeras devuelven un valor numérico (4, -5.67, ...) y las segundas un valor lógico: SI (True); No (false).

Segundo Período Lectivo 2008 Página 1 de 16


UNIVERSIDAD DE CARABOBO. FACULTAD DE INGENIERÍA. DEPARTAMENTO DE COMPUTACIÓN. CÁTEDRA DE COMPUTACIÓN I

DISEÑO DE ALGORITMOS
De entrada – salida: Acciones que permiten capturar datos para su posterior tratamiento (las de entrada)
y guardar los resultados de dicho tratamiento (las de salida).

ACCIÓN ARITMÉTICO – LÓGICAS

Esta acción se logra mediante el uso de operadores. Según la cantidad de datos sobre los que opera
(llamados operandos) se clasifican en:

• Unarios: actúa sobre un dato u operando  Operador (Dato)


• Binario: actúa usando dos datos u operandos  (Dato1) Operador (Dato2)

Según su función, se clasifican en:

• Aritméticos: son los que permiten realizan cálculos numéricos, dando como resultado un valor
numérico.
• Relacionales: son los que permiten verificar si una relación, expresado en forma de inecuación, se
cumple o no, dando como resultado un valor lógico: SI (True); No (false).
• Lógicos: son los que permiten unir los resultados lógicos de las relaciones y generar un nuevo
resultado lógico: SI (True); No (false).

Operadores Aritméticos Operadores Relacionales Operadores Lógicos


Acción Operador Relación Operador Operador
Sumar + Menor que < Y AND
Restar – Menor o igual que <= O OR
Multiplicar ∗ Mayor que > NO NOT
Dividir / Mayor o igual que >=
Potencia ^ Igual a = Resultado: Valor Lógico
Cociente entero de DIV Diferente de <>
una división entre
enteros Resultado: Valor Lógico
Residuo entero de MOD
una división entre
enteros
Resultado: valor numérico

Operador Lógico AND: El operador AND responde SI (True) únicamente cuando los resultados
lógicos de ambas relaciones responden SI (True); en cualquier otro caso, responde NO (False)

Relación 1
Relación 2 SI (True) NO (False)
SI (True) SI (True) NO (False)
NO (False) NO (False) NO (False)

Operador Lógico OR: El Operador OR siempre responde SI (True) excepto cuando los resultados
lógicos de ambas relaciones responden NO (False).

Relación 1
Relación 2 SI (True) NO (False)
SI (True) SI (True) SI (True)
NO (False) SI (True) NO (False)

Segundo Período Lectivo 2008 Página 2 de 16


UNIVERSIDAD DE CARABOBO. FACULTAD DE INGENIERÍA. DEPARTAMENTO DE COMPUTACIÓN. CÁTEDRA DE COMPUTACIÓN I

DISEÑO DE ALGORITMOS
Operador Lógico NOT: Es un operador unario que invierte el resultado lógico de la relación.

Relación
Operador SI (True) NO (False)
NOT NO (False) SI (True)

Más adelante se verán las expresiones y como se involucran estos operadores en el cálculo y verificación
de relaciones. También se verá cual es el orden de prioridad que se les asigna a estos operadores, a fin
de que los resultados de las expresiones coincidan con la realidad esperada.

ACCIÓN ENTRADA – SALIDA

Entrada: sirve para obtener la información del mundo exterior, trasformarlo en dato y almacenarlo
en la memoria.

Para ejecutar esta acción se utiliza el verbo LEER

Salida: sirve para transferir los datos almacenados en la memoria hacia el mundo exterior,
transformándolos en información.

Para ejecutar esta acción, se utiliza cualquiera de los siguientes verbos: Imprimir, ImprimirLN

La diferencia entre estas acciones es que Imprimir al finalizar la impresión se queda en la misma
línea, de forma que la próxima impresión se haga al lado de la anterior; mientras que ImprimirLN al
finalizar la impresión se ubica al comienzo de la siguiente línea, de forma que la próxima impresión
se haga debajo de la anterior.

LN se forma de quitarle las vocales a la palabra Línea, para así recordar la acción de cambio de
línea de la acción de salida ImprimirLN.

SECUENCIA DE ACCIONES

Cuando en un algoritmo se deben ejecutar varias acciones sucesivamente, éstas se describen una detrás
de otra según el orden en que deban ejecutarse. Si se desea se puede emplear algún tipo de símbolo
para separar dos acciones consecutivas. En el siguiente ejemplo se muestra la descripción de n acciones
sin uso de separadores.

Acción 1
Acción 2
:
Acción n

ACCIÓN DE DECISIÓN

La Acción de Decisión, como su nombre lo indica, decide cual es la próxima Acción que se ejecutará en
la computadora. La decisión depende de una operación lógica, llamada Condición, que se construye
usando relaciones y operadores lógicos; por lo tanto, la respuesta de una condición será un valor lógico:
SI (True) ó NO (False), indicando SI se cumple o NO se cumple la Condición respectivamente.

Segundo Período Lectivo 2008 Página 3 de 16


UNIVERSIDAD DE CARABOBO. FACULTAD DE INGENIERÍA. DEPARTAMENTO DE COMPUTACIÓN. CÁTEDRA DE COMPUTACIÓN I

DISEÑO DE ALGORITMOS
Se clasifica en:

• Acción de decisión sencilla


• Acción de decisión completa

ACCIÓN DE DECISIÓN SENCILLA

Se utiliza cuando en un algoritmo se quiere indicar que cierta acción sólo se debe ejecutar bajo el
cumplimiento de cierta condición. Si la condición no se cumple, se omite la ejecución de dicha acción.

Si Condición Entonces
Acción
FinSi

Si la Condición (operación lógica) responde SI (True), es decir, se cumple, se ejecuta la Acción y luego se
pasa la ejecución a la Acción siguiente al FinSi. Si la condición responde NO (false), es decir, no se
cumple, se omite la ejecución de la Acción y se pasa directamente la ejecución a la Acción siguiente al
FinSi. La Acción puede referirse tanto a una acción como a un conjunto de acciones.

ACCIÓN DE DECISIÓN COMPLETA

Se utiliza cuando en un algoritmo, en base a una Condición (Operación Lógica), se decide cual de las
dos Acciones disponibles será ejecutada.

Si Condición Entonces
Acción A
SiNo
Acción B
FinSi

Si la Condición (operación lógica) responde SI (True), es decir, se cumple, se ejecuta la Acción A y luego
se pasa la ejecución a la Acción siguiente al FinSi. Si la condición responde NO (false), es decir, no se
cumple, se ejecuta la Acción B y luego se pasa la ejecución a la Acción siguiente al FinSi. De forma
análoga a como ocurría en el caso anterior, tanto la Acción A como la Acción B pueden referirse a una
acción o a un conjunto de acciones.

ACCIÓN ITERATIVA

Cuando una acción o conjunto de acciones debe ejecutarse varias veces se recurre a una acción
iterativa. En este tipo de acción se requiere de una condición que determine cuando terminan las
iteraciones o repeticiones de la acción o conjunto de acciones. Dependiendo de si esa condición se
evalúa al principio o al final de la acción se pueden definir dos construcciones iterativas distintas:

• Con Condición al inicio


• Con Condición al final

Segundo Período Lectivo 2008 Página 4 de 16


UNIVERSIDAD DE CARABOBO. FACULTAD DE INGENIERÍA. DEPARTAMENTO DE COMPUTACIÓN. CÁTEDRA DE COMPUTACIÓN I

DISEÑO DE ALGORITMOS
CON CONDICIÓN AL INICIO - MIENTRAS

En este caso la condición se coloca primero en la definición de la acción iterativa y se evalúa antes de
ejecutar la acción o conjunto de acciones.

Mientras Condición Hacer


Acción
FinMientras

Sólo si la respuesta de la Condición (operación lógica) es SI (True), se ejecuta la Acción. Al terminar de


ejecutarse la Acción, se vuelve a evaluar la Condición; si la Condición nuevamente responde SI (True), se
repite la ejecución de la acción; si la Condición responde NO (False), la acción iterativa termina y pasa la
ejecución a la siguiente acción en la secuencia del algoritmo. En cualquier caso, la Acción puede
referirse tanto a una acción elemental, a un conjunto de ellas u otra estructura.

Es importante hacer notar que si la Condición (operación lógica) responde NO (false) la primera vez que
se evalúa, no se ejecuta la acción o conjunto de acciones e inmediatamente pasa la ejecución a la
siguiente acción luego del FinMientras

CON CONDICIÓN AL FINAL - REPETIR

En este caso la condición se coloca al final de la definición de la acción iterativa y se evalúa después de
ejecutar la acción o conjunto de acciones.

Repetir
Acción
Hasta Condición

Al comenzar la ejecución de esta acción iterativa, se ejecutará la Acción primero; luego se evalúa la
Condición (operación lógica) y sólo si la condición responde NO (False), se repite la ejecución de la
acción; si la Condición responde SI (True) la acción iterativa termina y pasa la ejecución a la acción
siguiente al Hasta. En cualquier caso, la Acción contenida en la acción iterativa puede referirse tanto a
una acción como a un conjunto de acciones.

Es importante hacer notar que si la Condición (operación lógica) responde SI (True) la primera vez, sin
importar este hecho, previo se ejecutó la acción o las acciones contenidas dentro de la acción y luego
al evaluar la condición inmediatamente pasa la ejecución a la acción siguiente al Hasta. En este caso, la
acción o acciones contenidas en al acción iterativa se ejecutan, al menos, una vez.

REFLEXIÓN

Analice el funcionamiento de las dos acciones iterativas utilizando un cuadro comparativo y concluya
cuales son las principales diferencias entre ellas. Esta conclusión le permitirá, luego, reconocer cual debe
utilizar en la resolución de un problema usando un algoritmo.

Segundo Período Lectivo 2008 Página 5 de 16


UNIVERSIDAD DE CARABOBO. FACULTAD DE INGENIERÍA. DEPARTAMENTO DE COMPUTACIÓN. CÁTEDRA DE COMPUTACIÓN I

DISEÑO DE ALGORITMOS
2.- D E S C R I B I R L O S O B J E T O S M A N I P U L A D O S P O R E L A L G O R I T M O

El primer objeto que debe manipular un algoritmo es la información que almacenará en la memoria de la
computadora. Por razones técnicas es necesario indicar a la computadora cual es la naturaleza de la
información, para así poder transformarla en dato y establecer cuales son los tipos de procesos de
manipulación o acciones que se pueden utilizar con ella.

T I P O S D E D A T O S (N A T U R A L E Z A )

Los tipos de datos básicos que maneja la computadora son:

• Entero
• Real: números con decimales
• Cadena: concatenaciones de letras, dígitos y símbolos (Nombres, Direcciones, entre otros)
• Lógico: el dato que nace como respuesta de una relación o de un operador lógico (True, False)

La computadora manipula de forma diferente los números enteros de los números con decimales. La
razón es que los números con decimales, a medida que el número es más grande, se ignoran los
decimales menos significativos y se les asigna un valor nulo. Matemáticamente esto trae un problema de
precisión de los cálculos que realiza la computadora y ya existen técnicas y artificios estándares. En
cambio, en los números enteros, todos sus dígitos son importantes y no se pueden asumir nulos. De esta
manera los procesos aritméticos utilizados por la computadora para los números enteros, son totalmente
diferentes a los utilizados por los números con punto decimal (Real).

Los datos tipo cadena se utilizan para almacenar nombres de personas, empresas, artículos, entre otros;
pueden contener cualquier símbolo disponible en el teclado español.

Los datos lógicos se manejan en forma transparente al programador, pero si se desea, se puede
almacenar cualquiera de los valores lógicos (True, False).

VARIABLE

Cuando la información llega a la computadora, ésta se almacena, según su naturaleza, dentro de la


memoria del computador como un dato. Los resultados que se obtengan a través de cálculos
efectuados por el programa, también son datos y se almacenan en la memoria de la computadora.
Cada dato ocupa un lugar en la memoria que es exclusivo para él; el resto de los datos se almacenan en
otros lugares libres de la memoria.

Ahora bien, es necesario establecer algún mecanismo que permita ubicar cualquier dato almacenado
cuando un programa lo solicite. La forma mas simple es bautizar cada lugar de memoria que almacena
un dato con un nombre. La única diferencia con el ser humano es que la memoria de la computadora
no permite lugares de memoria que sean tocayas, es decir, que tengan el mismo nombre. Cada lugar de
la memoria que contenga un dato tendrá un nombre único y diferente al de otros lugares que
contengan datos.

Memoria
C
A “Buen día” Programa
-14.3051

Segundo Período Lectivo 2008 Página 6 de 16


UNIVERSIDAD DE CARABOBO. FACULTAD DE INGENIERÍA. DEPARTAMENTO DE COMPUTACIÓN. CÁTEDRA DE COMPUTACIÓN I

DISEÑO DE ALGORITMOS
En la práctica, los datos almacenados en la memoria no son fijos, sino que, pueden ser sustituidos por
otros datos de la misma naturaleza. Dentro de la Matemática este tipo de situación, donde un nombre
puede tomar un conjunto finito de valores se le conoce como Variable.

Por lo tanto, una Variable es un lugar de la memoria, bautizada con un nombre único, cuyo contenido
puede cambiar durante la ejecución de un programa.

En matemática, el nombre de la variable representa un conjunto finito de valores; mientras que en la


computadora, una variable posee, además de un nombre, un contenido (valor), que puede cambiar por
alguna acción del programa, y un tipo de dato (naturaleza).

REGLAS PARA CREAR IDENTIFICADORES Ó NOMBRES A VARIABLES

El conjunto de reglas que sirven para bautizar variables se conoce como identificador. El conjunto de
reglas son:

1. Un identificador debe comenzar por una letra de alfabeto norteamericano, es decir, no se puede
usar la Ñ o la ñ.
2. Puede continuar con combinaciones de letras del alfabeto norteamericano, dígitos y el símbolo
de piso o subrayado. No se pueden usar otros símbolos.
3. El nombre de un identificador no puede ser igual a ninguna de las palabras que sirven para definir
acciones en un programa.
4. No pueden existir dos identificadores iguales dentro de un programa.

CONSTANTE

En contraste a la variable, la computadora también maneja constante, las cuales no cambian de valor
durante la ejecución de un programa en la computadora, ya que no poseen un contenido ni un nombre
dentro de la memoria, aunque si poseen una naturaleza. Las constantes residen en la memoria, dentro
del programa, como parte de las acciones que se ejecutaran.

Por cada tipo de dato, existe un tipo de constante:

• Entero: 13, -7, 1024, 0, 48, entre otros.


• Real: 14.30, -0.0005, 0.03, 13452,997, entre otros.
• Cadena: “Hola mundo”, “Vivo en la calle 143”, “Soy el número 13 en mi promoción”, entre otros.
• Lógico: True, False

Las constantes tipo cadena reciben el nombre de Literales y siempre se encierra la palabra o conjunto
de ellas entre comillas.

Sólo existen dos constantes lógicas que son las palabras True y False; estas palabras no deben ser
encerradas entre comillas o ningún otro símbolo.

EXPRESIONES

Una expresión es una combinación de constantes, variables o funciones, que es interpretada (evaluada)
de acuerdo a las normas particulares de precedencia y asociación para un lenguaje de programación
en particular. Como en matemáticas, la expresión es su "valor evaluado", es decir, la expresión es una
representación de ese valor.

Segundo Período Lectivo 2008 Página 7 de 16


UNIVERSIDAD DE CARABOBO. FACULTAD DE INGENIERÍA. DEPARTAMENTO DE COMPUTACIÓN. CÁTEDRA DE COMPUTACIÓN I

DISEÑO DE ALGORITMOS
Existen dos tipos expresiones, según el tipo de dato que den como resultado:

• Numéricas: aquellas que al ser evaluadas dan como resultado un valor numérico entero o real.
• Lógicas: aquellas que al ser evaluadas dan como resultado un valor lógico true o false.

Como se expresó al comienzo del tema, las normas particulares de precedencia y asociación de objetos
y operadores dependen del lenguaje de programación que se utilice. Como primer ejemplo se mostrará
continuación las reglas de evaluación de expresiones del interpretador de algoritmos ALGOR.

Tabla de jerarquía de operadores de Algor, ordenados en orden decreciente de precedencia.

precedencia operador operando1 operando2 resultado Observaciones


1 – numérico igual al operando negativo, sólo tiene un operando
2 ^ numérico numérico ver nota debajo
* numérico numérico ver nota debajo
3 / numérico numérico real
DIV MOD entero entero entero
4 + – numérico numérico ver nota debajo
< numérico numérico
> numérico numérico
<= numérico numérico
5 lógico
>= numérico numérico
= cualquiera cualquiera
<> cualquiera cualquiera
6 NOT lógico lógico sólo tiene un operando
7 AND lógico lógico lógico
8 OR lógico lógico lógico

Notas: En el caso de los operadores ^, ∗, + y – los operandos son numéricos, es decir, enteros o reales, y el
resultado estará en función de si ambos operandos son del mismo tipo o no. Si son del mismo tipo
entonces el resultado sigue siendo de ese mismo tipo. Si uno de los operandos es real y el otro
entero, entonces el entero se convierte a real y resultado es real.

El operador de división / siempre realiza una división real, independientemente de si sus operandos lo son
o no; mientras que el operador DIV siempre realiza una división entera (sin decimales, ni redondeo) con
operandos únicamente enteros.

En el caso de los operadores relacionales = y <> sus operandos pueden ser ambos: numéricos, cadenas ó
lógicos; mientras que los operadores <, <=, > y >= sus operandos únicamente pueden ser numéricos.

ASOCIATIVIDAD DE LOS OPERADORES:

Los operadores – (negativo) y NOT, tienen un solo operando y se evalúan de derecha a izquierda.

El resto de los operadores tienen dos operandos, y se evalúan de izquierda a derecha, para el caso de los
que tienen igual precedencia.

Los paréntesis pueden ser utilizados para agrupar subexpresiones y alterar el orden de evaluación de una
expresión.

Segundo Período Lectivo 2008 Página 8 de 16


UNIVERSIDAD DE CARABOBO. FACULTAD DE INGENIERÍA. DEPARTAMENTO DE COMPUTACIÓN. CÁTEDRA DE COMPUTACIÓN I

DISEÑO DE ALGORITMOS
REGLAS DE EVALUACIÓN DEL LENGUAJE DE PROGRAMACIÓN PASCAL

1. Los paréntesis se evalúan primero dentro una expresión. Si existen paréntesis dentro de paréntesis
(subexpresiones), se evalúan de adentro hacia fuera.
2. Jerarquía de operadores, ordenados en orden decreciente de precedencia, sería:

precedencia operador operando1 operando2 resultado Observaciones


– numérico igual al operando negativo, sólo tiene un operando
1
NOT lógico lógico sólo tiene un operando
/ numérico numérico real
∗ numérico numérico ver nota debajo
2 DIV
entero entero entero
MOD
AND lógico lógico lógico
+
numérico numérico ver nota debajo
3 –
OR lógico lógico lógico
< un operando escalar corresponde
> a un operando numérico o un
operando cadena.
<=
4 escalar escalar lógico
>= tanto el operando1 como el
= operando2 deben ser del mismo
tipo escalar
<>

Notas: En el caso de los operadores ∗, + y –, si los operandos son numéricos, es decir, enteros o reales, el
resultado estará en función de si ambos operandos son del mismo tipo o no. Si son del mismo tipo
entonces el resultado sigue siendo de ese mismo tipo. Si uno de los operandos es real y el otro
entero, entonces el entero se convierte a real y resultado es real.

3. Cuando en la expresión o subexpresión existen operadores con el mismo orden de jerarquía, el


orden de evaluación es de izquierda a derecha. Los operadores – (negativo) y NOT, tienen un solo
operando y se evalúan de derecha a izquierda.

EL HECHO DE QUE CADA LENGUAJE DE PROGRAMACIÓN ESTABLEZCA SUS PROPIAS NORMAS, PUEDE CONVERTIRSE EN UN PROBLEMA
PARA AQUELLAS PERSONAS QUE, COMO LOS ESTUDIANTES DE COMPUTACIÓN I, SE INICIAN EN EL ÁREA DE LA PROGRAMACIÓN DE
COMPUTADORAS.

EN VISTA A QUE EL LENGUAJE DE PROGRAMACIÓN SELECCIONADO HASTA AHORA PARA LAS ASIGNATURAS COMPUTACIÓN I Y
COMPUTACIÓN II ES PASCAL, PARA FACILITAR LA INICIACIÓN EN LA PROGRAMACIÓN, SE USARÁN LAS REGLAS DE EVALUACIÓN DEL
LENGUAJE PASCAL DESDE EL COMIENZO DE LAS CLASES, YA QUE LAS DEL INTERPRETADOR DE ALGORITMOS ALGOR NO SE VEN
AFECTADAS DE NINGUNA FORMA POR ESTA DECISIÓN.

EJEMPLOS DE EVALUACIÓN DE EXPRESIONES:

Los siguientes ejemplos muestran la expresión a evaluar y luego en negritas resaltan la parte de la
expresión que será evaluada hasta obtener un resultado.

1. 5 + 2∗3 = 5 + 2∗
∗3 = 5 + 6 = 11
2. (5 + 2)∗3 = (5 + 2)∗3 = 7∗
∗3 = 21

Segundo Período Lectivo 2008 Página 9 de 16


UNIVERSIDAD DE CARABOBO. FACULTAD DE INGENIERÍA. DEPARTAMENTO DE COMPUTACIÓN. CÁTEDRA DE COMPUTACIÓN I

DISEÑO DE ALGORITMOS
3. 7 DIV 2 MOD 5 = 7 DIV 2 MOD 5 = 3 MOD 5 = 3
4. 3.5 + 5.09 – 14.0/4 = 3.5 + 5.09 – 14.0/4 = 3.5 + 5.09 – 3.5 = 8.59 – 3.5 = 5.09
5. 10 + 20 < 30 = 10 + 20 < 30 = 30 < 30 = False
6. (10 < 20) and (20 < 30) = (10 < 20) and (20 < 30) = True and (20 < 30) = True and True = True
7. (10 < 20) or (20 > 30) and (-3 < -1) = (10 < 20) or (20 > 30) and (-3 < -1) =
True or (20 > 30) and (-3 < -1) = True or False and (-3 < -1) = True or False and True =
True or False = True

CONSTRUCCIÓN DE EXPRESIONES:

7*3
1. 3+ = 3 + 7∗3/2
2
7−3
2. 3 + = 3 + (7 – 3)/2
2
7−3
3+
3. 2 = (3 + (7 – 3)/2)/(5^2 – 2/(9 – 5)^(1/2))
1
 2 2
52 −  
9 − 5
1

4.
(
− B + B2 − 4 * A * C )
2
= (-B + (B^2 – 4∗A∗C)^(1/2))/(2∗A)
2* A
3
3 7  17 
5. < y 9>  = ( 3/4 < 7/8 ) AND ( 9 >(17/5)^3 )
4 8  5 
1
1
  17  2
3
 ó 3 >  17  = ( 2 > ( (17/5)^2)^(1/3) ) OR ( (17/5)^(1/2) )
2
6. 2 >   
 5    5 
 
1
1
  17  2  3  17  2
1

7. 
2>    ó3>  y 2 > 19 3 =
 5    5 
 

( 2 > ( (17/5)^2)^(1/3) ) OR ( (17/5)^(1/2) ) AND ( 2 > 19^(1/3) )

 1
1 
   17  2  3  17  2 
1

8.  2 >     ó3>   y 2 > 19 3 =


  5    5  
 
 

( ( 2 > ( (17/5)^2)^(1/3) ) OR ( (17/5)^(1/2) ) ) AND ( 2 > 19^(1/3) )

Observe los dos últimos ejemplos; son casi idénticos, excepto que en la última, la subexpresion que usa el
operador lógico OR para unir dos subexpresiones lógicas está encerrada entre paréntesis. Recuerde que
los paréntesis se usan para alterar, a nuestra conveniencia, el orden establecido por el lenguaje. En el
penúltimo ejemplo, después de evaluarse todas las subexpresiones lógicas, primero opera el operador

Segundo Período Lectivo 2008 Página 10 de 16


UNIVERSIDAD DE CARABOBO. FACULTAD DE INGENIERÍA. DEPARTAMENTO DE COMPUTACIÓN. CÁTEDRA DE COMPUTACIÓN I

DISEÑO DE ALGORITMOS
AND, dando un resultado lógico que se usa para que después opere el operdador OR. Si revisa la tabla
de jerarquía de operadore, notará que primero opera el AND y luego el OR, dentro de una expresión.

En la último ejemplo, después de evaluarse todas las subespresiones lógicas, debido al paréntesis que
encierra al operador, éste opera primero dando un resultado lógico, que se usa para que opere el
operador AND.

De esta manera, se puede evidenciar la utilidad del uso de los paréntesis para cambiar la jerarquía de los
operadores, cuando así se requiera por la expresión a evaluar.
3.- C O N T R O L A R L A R E A L I Z A C I Ó N D E L A S A C C I O N E S D E S C R I T A S , I N D I C A N D O L A F O R M A E N Q U E
ESTAS SE ORGANIZAN EN EL TIEMPO

Hasta el momento, se han descrito todas las acciones y objetos que pueden ser utilizados para la solución
de un problema usando la computadora. Ahora bien, primero se debe conocer cual es la forma y las
normas de codificación que el lenguaje de programación exige para el uso de las acciones y los objetos
que manipulan la información.

Para el primer corte de Computación 1 se seleccionó un interpretador de algoritmos, llamado ALGOR,


que está siendo desarrollado por Magister Eduardo F. Alonso Pérez, profesor e investigador de la
Universidad Católica Santo Toribio de Mogrovejo, Chiclayo, Perú. Actualmente el proyecto ALGOR se
encuentra, desde el año 2005, en su fase de evaluación (http://usuarios.lycos.es/ealonsop/).

F O R M A T O D E C O D I F I C A C I Ó N ALGOR

Los algoritmos, en este lenguaje, tienen tres secciones:

1. Encabezamiento
2. Definición de funciones
3. Variables
4. Instrucciones (llamadas acciones anteriormente)

La definición de funciones en ALGOR es materia que corresponde a la asignatura Computación II, y será
omitida del curso por los momentos. A continuación se describe la forma correcta (también llamada
sintaxis) de estas secciones.

SECCIÓN DE ENCABEZAMIENTO

El encabezamiento es simplemente la palabra algoritmo seguido de un identificador:

algoritmo identificador

Ejemplos:

1. algoritmo promedio
2. algoritmo calculo_del_promedio
3. algoritmo tarea1

Recuerde que un identificador está formado por secuencias de letras y/o dígitos que debe comenzar
obligatoriamente por una letra. También puede usarse el carácter _ (piso, subrayado o underscore).

Segundo Período Lectivo 2008 Página 11 de 16


UNIVERSIDAD DE CARABOBO. FACULTAD DE INGENIERÍA. DEPARTAMENTO DE COMPUTACIÓN. CÁTEDRA DE COMPUTACIÓN I

DISEÑO DE ALGORITMOS
SECCIÓN DE VARIABLES

Las variables que se usan en un algoritmo deben ser declaradas antes de ser usadas dentro de las
instrucciones (acciones) del algoritmo. La declaración de variables consiste en indicar el nombre de
cada variable (su identificador) y el tipo de dato que tendrá cada una(entero, real, cadena ó logico).

La estructura de ésta sección es la siguiente:

variables

identificador : Tipo de Dato

identificador : Tipo de Dato …

Comienza con la palabra variables seguidas de una lista de una o más declaraciones. Cada declaración
es una secuencia de una o más variable separadas por coma, seguida de dos puntos, seguida del tipo.

Ejemplo:

variables
i, contador, N : entero
suma, dato : real
mensaje : cadena
continuar : logico

Observe la sangría que existe antes de la declaración de la variable o conjunto de ellas. Esta sangría es
importante para resaltar la palabra variables y de esa forma se puede, rápidamente ubicar la zona de
declaración de variables.

Los tipos permitidos en la versión actual son simples: entero, real, cadena y logico.

Con respecto a los tipos de datos simples (también llamados escalares):

• Los Enteros permiten almacenar valores numéricos enteros (de 32 bits).


• Los Reales permiten almacenar valores numéricos reales de doble precisión (64 bits).
• Las Cadenas permiten almacenar secuencias de caracteres, para mensajes, etc. Las secuencias
de caracteres se encierran entre comillas. En la versión actual no se permiten caracteres
especiales dentro de las cadenas, ni tampoco la propia comilla.
• Los Lógicos permiten almacenar los valores lógicos FALSE y TRUE

SECCIÓN DE INSTRUCCIONES

Esta sección contiene las instrucciones ejecutables del algoritmo. Comienza con la palabra
(identificador) inicio, le siguen las instrucciones y termina con la palabra (identificador) fin

Las instrucciones (acciones) permitidas son las siguientes:

Segundo Período Lectivo 2008 Página 12 de 16


UNIVERSIDAD DE CARABOBO. FACULTAD DE INGENIERÍA. DEPARTAMENTO DE COMPUTACIÓN. CÁTEDRA DE COMPUTACIÓN I

DISEÑO DE ALGORITMOS
• Entrada
• Salida
• Asignación
• Condicional Simple
• Condicional Completa
• Iterativa con condición al inicio
• Iterativa con condición al final
• Iterativa Para

Todas estas instrucciones, excepto de asignación y la iterativa Para, fueron descritas anteriormente.

ESCRITURA DE COMENTARIOS EN ALGOR

En los algoritmos se puede incluir comentarios (texto que se ignora durante la ejecución). Los comentarios
comienzan con el carácter punto y coma (;) y tienen un alcance hasta el fin de la línea:

Ejemplo:
; algoritmo para calcular el promedio de dos
; numeros ingresados por el usuario

INSTRUCCIÓN DE ASIGNACIÓN

Permite asignarle a una variable simple ó escalar una constante o el resultado de una expresión. Su
sintaxis es el nombre de la variable (identificador) seguida de <- (símbolo menor que y símbolo guión),
seguida de la constante o expresión.

Ejemplos:

1. impuesto <- precio * 0.19


2. Mensaje <- ”Hola universo”
3. Continuar <- (A < 2∗C)
4. Bandera <- False

Algunas consideraciones:

1. A las variables de tipo entero se le pueden asignar expresiones de tipo entero ó de tipo real. En el
último caso se convierte de real a entero antes de la asignación. Ejemplo: Considerando a i,
declarada como entero, la instrucción i <- 1.5 le asigna 1 a la variable i.
2. A las variables de tipo real se le pueden asignar expresiones de tipo entero ó de tipo real.
3. A las variables de tipo cadena, solo se le pueden asignar cadenas. En la versión actual del
lenguaje no hay operadores para cadenas.
4. A las variables de tipo logico se le pueden asignar expresiones de tipo logico.

A partir de este momento se puede decir que se conocen todo lo necesario para la construcción de
soluciones a problemas utilizando el interpretador de algoritmos ALGOR. Falta aún la instrucción iterativa
Para, pero se verá en su momento

CARACTERÍSTICAS ESENCIALES DE LOS ALGORITMOS

El científico de computación Donald Knuth ofreció una lista de cinco propiedades, que son ampliamente
aceptadas como requisitos para un algoritmo:

Segundo Período Lectivo 2008 Página 13 de 16


UNIVERSIDAD DE CARABOBO. FACULTAD DE INGENIERÍA. DEPARTAMENTO DE COMPUTACIÓN. CÁTEDRA DE COMPUTACIÓN I

DISEÑO DE ALGORITMOS
1. Carácter finito. "Un algoritmo siempre debe terminar después de un número finito de pasos".
2. Precisión. "Cada paso de un algoritmo debe estar precisamente definido; las operaciones a llevar
a cabo deben ser especificadas de manera rigurosa y no ambigua para cada caso".
3. Entrada. "Un algoritmo tiene cero o más entradas: cantidades que le son dadas antes de que el
algoritmo comience, o dinámicamente mientras el algoritmo corre. Estas entradas son tomadas
de conjuntos específicos de objetos".
4. Salida. "Un algoritmo tiene una o más salidas: cantidades que tienen una relación específica con
las entradas".
5. Eficacia. "También se espera que un algoritmo sea eficaz, en el sentido de que todas las
operaciones a realizar en un algoritmo deben ser suficientemente básicas como para que en
principio puedan ser hechas de manera exacta y en un tiempo finito por un hombre usando lápiz
y papel".

Knuth admite que, aunque su descripción pueda ser intuitivamente clara, carece de rigor formal, puesto
que no está exactamente claro qué significa "precisamente definido", "de manera rigurosa y no
ambigua", o "suficientemente básicas", y así sucesivamente.

A partir del carácter finito y de la salida se deduce que ante una misma situación inicial (o valores de
entrada) un algoritmo debe proporcionar siempre el mismo resultado (o salida), con excepción de los
algoritmos probabilistas.

L OS PRIMEROS EJERCICIOS

Los siguientes ejercicios tienen como finalidad reforzar todo lo concerniente a algoritmos hasta la
instrucción selectiva. Aunque los ejercicios parezcan demasiado sencillos, son importantes para
comenzar en el área de la programación. De los pasos para la resolución de problemas usando la
computadora, se usaran únicamente los dos primeros: Análisis del Problema y Diseño del Algoritmo.

1. Dados dos números cualesquiera, desarrolle el algoritmo de un programa que determine la suma de
dichos números

¿Qué información esta presente? ¿Qué resultados exige? ¿Cómo lo logro?


1. Primer Valor Formando una expresión numérica que
La suma de los dos valores
2. Segundo Valor realice dicho cálculo

Tabla de Variables:
Descripción del dato Nombre de la Variable Tipo de Dato
Primer Valor A O Entero ⊗ Real O Lógico O Cadena
Segundo Valor B O Entero ⊗ Real O Lógico O Cadena
Suma de ambos valores S O Entero ⊗ Real O Lógico O Cadena

Algoritmo uno
Variables
A, B, S: Real;
Inicio
Imprimir "Primer Valor:"
Leer A
Imprimir "Segundo Valor:"
Leer B
S <- A+B
Imprimirln "La suma es:", S
Fin

Segundo Período Lectivo 2008 Página 14 de 16


UNIVERSIDAD DE CARABOBO. FACULTAD DE INGENIERÍA. DEPARTAMENTO DE COMPUTACIÓN. CÁTEDRA DE COMPUTACIÓN I

DISEÑO DE ALGORITMOS
2. Dadas las longitudes de la hipotenusa y los catetos de un triángulo, desarrolle el algoritmo de un
programa que, usando el teorema de Pitágoras (H2=C12+C22), imprima una constante literal que
indique si es o no un triángulo rectángulo.

1ra Solución: Evaluando separadamente cada lado del teorema de pitágoras

¿Qué información esta presente? ¿Qué resultados exige? ¿Cómo lo logro?


1. Se evalúa el lado derecho del
teorema y se almacena en una
variable
1. Longitud de la hipotenusa 2. Se evalúa el lado izquierdo del
Una constante literal que indique si
2. Longitud de un cateto teorema y se almacena en una
forma o no triángulo rectángulo
3. Longitud del otro cateto variable
3. Se comparan ambas variables y se
imprime la constante literal
correspondiente

Tabla de Variables:
Descripción del dato Nombre de la Variable Tipo de Dato
Longitud de la Hipotenusa H O Entero ⊗ Real O Lógico O Cadena
Longitud de un cateto C1 O Entero ⊗ Real O Lógico O Cadena
Longitud del otro cateto C2 O Entero ⊗ Real O Lógico O Cadena
Valor del Lado Derecho LD O Entero ⊗ Real O Lógico O Cadena
Valor del Lado Izquierdo LI O Entero ⊗ Real O Lógico O Cadena

Algoritmo dos1
Variables
H, C1, C2, LI, LD: Real
Inicio
Imprimir "Longitud de la Hipotenusa:"
Leer H
Imprimir "Longitud de un cateto:"
Leer C1
Imprimir "Longitud del otro cateto:"
Leer C2
LI <- H*H
LD <- C1*C1+C2*C2
Si LI=LD entonces
Imprimirln "El triangulo es rectangulo"
Sino
Imprimir "El triangulo no es rectangulo"
Finsi
Fin

2da Solución: Evaluando directamente el teorema de pitágoras

¿Qué información esta presente? ¿Qué resultados exige? ¿Cómo lo logro?


1. Longitud de la hipotenusa
Una constante literal que indique si Se evalúa el teorema directamente
2. Longitud de un cateto
forma o no triángulo rectángulo como una expresión lógica
3. Longitud del otro cateto

Tabla de Variables:
Descripción del dato Nombre de la Variable Tipo de Dato
Longitud de la Hipotenusa H O Entero ⊗ Real O Lógico O Cadena
Longitud de un cateto C1 O Entero ⊗ Real O Lógico O Cadena
Longitud del otro cateto C2 O Entero ⊗ Real O Lógico O Cadena

Segundo Período Lectivo 2008 Página 15 de 16


UNIVERSIDAD DE CARABOBO. FACULTAD DE INGENIERÍA. DEPARTAMENTO DE COMPUTACIÓN. CÁTEDRA DE COMPUTACIÓN I

DISEÑO DE ALGORITMOS
Algoritmo dos1
Variables
H, C1, C2, LI, LD: Real
Inicio
Imprimir "Longitud de la Hipotenusa:"
Leer H
Imprimir "Longitud de un cateto:"
Leer C1
Imprimir "Longitud del otro cateto:"
Leer C2
Si H*H=C1*C1+C2*C2 entonces
Imprimirln "El triangulo es rectángulo"
Sino
Imprimir "El triangulo no es rectángulo"
Finsi
Fin

A UTOEVALUACIÓN
1. Enumere los tres pasos para lograr el diseño del algoritmo
2. ¿Qué representa una acción para un algoritmo?
3. ¿Cuál es la diferencia entre una Acción de Decisión y una Acción iterativa?
4. ¿Cuál es la diferencia entre un valor numérico y un valor lógico?
5. Enumere las principales diferencias entre las acciones iterativas Mientras y Repita
6. ¿Cuál es la razón por la que la computadora obliga a indicar el tipo de dato de cada variable?
7. De un ejemplo que demuestre la necesidad de diferenciar el tipo de dato entero y el tipo de dato real.
8. ¿Por qué las variables se les bautiza con un nombre único?
9. Enumere las tres características esenciales de una variable en la computadora
10. Elabore dos listas de ejemplos con identificadores válidos y no válidos
11. ¿Qué es una constante literal?
12. Con sus propias palabras, indique el por qué las constantes lógicas True y False no pueden encerrarse entre
comillas.
13. ¿Por qué una constante no puede cambiar de valor a través de las acciones de un programa?
14. ¿Cuál es la diferencia entre “Nombre” y Nombre?
15. Usando sus propias palabras, diga cual es la diferencia entre un algoritmo y un programa.
16. Elabore un esquema de las Acciones que se pueden utilizar para resolver un problema utilizando la
computadora
17. ¿Qué es una variable? ¿Cuáles son sus principales características?
18. En la computadora, ¿Qué diferencia una constante de una variable?
19. ¿Por qué “Area” y Area no representan eL mismo objeto que puede manipular la computadora?
20. ¿Qué es una expresión?
21. ¿Cuál es la diferencia entre una expresión numérica y una expresión lógica?
22. Diga en sus propias palabras, por qué es importante que el lenguaje imponga normas de evaluación de
expresiones
23. Enumere y describe las secciones en que se divide un algoritmo escrito para ALGOR
24. En sus palabras, cual es la utilidad de escribir comentarios en un algoritmo
25. ¿Cuál es el objetivo fundamental de la instrucción de asignación?

REFERENCIAS:

Fernandez R., Manuel R.(2007). Material de Apoyo a clases. Departamento de Computación. Facultad de Ingeniería.
Universidad de Carabobo. Venezuela

Wikipedia. Enciclopedia Libre. Disponible en www.wikipedia.com

Segundo Período Lectivo 2008 Página 16 de 16

Vous aimerez peut-être aussi