Professional Documents
Culture Documents
Pg.
1. INTRODUCCIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2. INTRODUCCIN A LOS ALGORITMOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.1. Algoritmos cotidianos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.1.1. Torta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.1.2. Orden de enchiladas (quesadillas). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.1.3. Cambiar un foco. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2. Definicin de problemas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2.1. Leer y comprender el problema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2.2. Identificar entradas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2.3. Identificar salidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.4. Identificar proceso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.5. Identificar datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. EXPRESIONES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.1. Operadores aritmticos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2. Expresiones matemticas simples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.3. Jerarqua de operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.4. Funciones matemticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.5. Expresiones matemticas combinadas con funciones matemticas . . . . . . . . . . . . 9
3.6. Ejercicios de evaluacin de expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4. ALGORITMIA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.1. Definicin de algoritmo y caractersticas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.2. Diseo del algoritmos con pseudocdigos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.3. Proceso de un programa en la computadora. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.4. Ejercicios sencillos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5. MEMORIA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
5.1. Localidades (tamao y direccin) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
5.2. Tipos de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5.3. Asignacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
6. DECISIONES. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6.1. Operadores relacionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.2. Operadores lgicos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6.3. Decisiones simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6.4. Decisiones anidadas (complejas) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.5. Decisiones mltiples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6.6. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
7. CICLOS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7.1. Ciclos contados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7.2. Ciclos condicionados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
8. Anexo A. Sintaxis para el Pseudocdigo utilizado en el diseo de algoritmos. . . 34
1
1. INTRODUCCIN
Para cursar la Ingeniera en Sistemas Computacionales es necesario que el aspirante tenga
habilidad lgico-matemtica, que generalmente ha ido adquiriendo conforme avanz en sus
estudios de nivel medio superior.
Por otra parte, independientemente del antecedente acadmico que haya adquirido el aspirante,
es necesario que conozca aspectos bsicos del desarrollo de algoritmos y de una manera
general, que aplique sus habilidades del pensamiento para encontrar lo esencial de un
problema y lo resuelva utilizando la computadora sin importar que tenga conocimientos o no
de algn lenguaje de programacin
Como puede leerse en el objetivo del curso, se desea que el aspirante desarrolle su capacidad
de razonamiento lgico para resolver problemas usando la computadora. Para ellos se dividi
su contenido de acuerdo a lo que se indica enseguida.
El captulo 5 cubre el tema de memoria, que sin incluir conocimientos tcnicos de electrnica
digital, se aprender a relacionar lo que fsicamente es la memoria, con los datos que maneja
un programa cuando se ejecuta.
En el captulo 7 se aprender a identificar los diversos tipos de ciclos para elegir el apropiado
y codificarlo en el algoritmo que representa la solucin del problema.
El captulo 8 incluye diversos problemas que el aspirante puede resolver por su cuenta
aplicando los conocimientos y habilidades que ha ido adquiriendo en el presente curso.
1
2. INTRODUCCIN A LOS ALGORITMOS
2.1. Algoritmos cotidianos
2.1.1. Torta
1. Tomar el pan.
2. Partirlo a la mitad.
3. Untarle la mayonesa.
4. Poner una rebanada de jamn.
5. Rebanar un jitomate.
6. Poner el jitomate encima del jamn.
7. Rebanar una cebolla.
8. Poner la cebolla encima del jitomate.
9. Tapar la torta.
10. Comerla.
De qu nos damos cuenta en este pequeo ejemplo? Si reflexionamos un poco, muchas de las
actividades que realizamos diariamente pueden ser traducidas a pasos, Cmo? S, para
realizar actividades como vestirse, peinarse, comer, ir a la escuela o cualquier otra podemos
escribirlas en pasos consecutivos. Piensa en qu actividades realizas cotidianamente y que las
puedes describir en una serie de pasos a seguir.
Los pasos necesarios para preparar unas quesadillas, pueden ser los siguientes:
2
2.1.3. Cambiar un foco
Se pueden identificar las entradas: foco nuevo y escalera, as como la serie de pasos que lo
componen. Se puede decir, que se tiene un orden lgico hasta llegar al final. El elemento de
salida en este caso es la luz prendida. Eso es lo que se espera al final del algoritmo.
Qu sucede cuando se cambia alguno de los pasos?, qu sucede si se omiten pasos?, cmo
empezar un algoritmo y cmo terminarlo?, cules seran los resultados y cmo seguir los
pasos?
Para resolver un problema se requiere seguir una serie de pasos que comienza con la
definicin y comprensin del problema y conduce a la resolucin de mismo, hasta llegar a la
implantacin del programa.
Este proceso inicia cuando surge la necesidad de resolver algn problema mediante la
computadora. Se debe identificar el problema y comprender la utilidad de la solucin que se
pretende alcanzar. Se debe tener una visin general del problema estableciendo las
condiciones iniciales (datos de entrada) y adems los lmites del problema, es decir, donde
empieza y donde termina (el proceso a seguir). As como tambin la salida y resultado
esperado (datos de salida).
Es necesario entender en detalle el problema para obtener una radiografa en trmino de los
datos disponibles como materia prima, es decir, los datos de entrada y as definir el proceso
necesario para convertir los datos en la informacin requerida. Identificar los datos de entrada
3
requiere que se analice a fondo qu se necesita para poder encontrar una solucin al problema
y cules son los datos indispensables que se requieren como datos iniciales.
Las salidas o datos de salida se presentan una vez que ha finalizado el proceso y se ha llegado
a la solucin del problema, se requiere desde el principio saber cules son esos datos de salida
para poder verificar en el proceso que no se vaya a perder o cambiar alguno de estos datos.
Una vez que se tienen identificados tanto los datos de entrada como de salida se requiere
conocer cul es el proceso que se debe seguir para solucionar el problema. Consiste en una
serie de pasos que permitirn llegar al resultado esperado. Estos pasos no deben omitirse o de
lo contrario se perder la solucin esperada.
Ejercicios:
Desarrolla un algoritmo para realizar una llamada telefnica desde un telfono pblico.
Desarrolla un algoritmo para hacer palomitas de maz en un horno de microondas.
4
3. EXPRESIONES
Las operaciones aritmticas fundamentales permiten modificar la apariencia de los datos para
generar informacin; en otras palabras, procesar los datos que entran como materia prima para
convertirlos en informacin que saldr de la computadora.
La tabla 3.1 muestra los operadores aritmticos que se pueden utilizar para realizar
operaciones aritmticas:
Nota:
Ejemplos:
5
En donde:
Las expresiones aritmticas deben escribirse en una lnea para que puedan introducirse a la
computadora. La forma en que se escribe una expresin determina la forma en que ser
evaluada. Por ejemplo, la expresin matemtica:
+
=
1
n = (x+y) / (y-1)
1. Operaciones entre parntesis. Primero busca lo que est entre parntesis y lo evala.
En caso de haber parntesis anidados, evala primero los ms internos y luego
prosigue con los externos.
2. Operaciones Unarias. A continuacin se evalan las operaciones unarias, es decir, de
cambio de signo. Ejemplo a -4 le cambia el signo a 4.
3. Multiplicacin y divisin. Posteriormente evala las operaciones de multiplicacin y
divisin, las cuales tienen el mismo nivel de precedencia.
4. Suma y resta. Estas operaciones se evalan al final, ya que tienen el ms bajo nivel de
precedencia.
Nota 1: Cuando existen varias operaciones de un mismo nivel, se evalan en orden de
izquierda a derecha.
Nota 2: en el ejemplo se encerraron entre parntesis las operaciones (x+y) y (y-1) para
cerciorarse de que se hiciera primero la suma, luego la resta y por ltimo la divisin. Si la
expresin se hubiera escrito n = x+y / y-1, estara incorrecta, porque la computadora
primero hara la divisin de y/y, luego la suma y despus la resta, lo que arrojara un
resultado incorrecto.
6
Ejemplos de evaluacin de expresiones:
14
4. ( 9 + 3 ) * 5 / 4 mod 7 + 1 parntesis
12 * 5 / 4 mod 7 + 1 multiplicacin
60 / 4 mod 7 + 1 divisin
15 mod 7 + 1 mdulo
1+1 suma
2
5. x ( A + B / 2) + y * z
En la tabla 3.2 se muestran algunos ejemplos de cmo escribir una frmula matemtica a una
expresin aritmtica, considerando la jerarqua de los operadores.
7
Frmulas matemticas Expresin aritmtica
= a=b*c
2 4 b*b4*a*c
2 1 m = (y2 y1) / (x2 x1)
=
2 1
+ x+y-z
+ (x + y) / (z + w)
+
5 5 / (1 + x * x)
1+ 2
x=a+by/z
=+
w=(a*c/d)+b/c
= +
2 + z=(t*(y2)+r)/s
=
x = (c*e - b*f) / (a*e - b*d)
=
9 f = 9 / 5 * c + 32
= + 32
5
Tabla 3.2 Conversin de funciones matemticas a expresiones aritmticas
Funcin Significado
SEN(X) Seno de X
COS(X) Coseno de X
ATAN(X) Arcotangente de X
8
Ejemplos:
= a = b RC(c)
=|| b = ABS(a)
= () y = SEN ( X )
Los operadores matemticos pueden combinarse con las funciones matemticas, cmo puede
apreciarse en los siguientes ejemplos:
94 e = RC(9 - 4) / 3
e= 3
1 cos v = (1 cos(a)) / 2
=
2
= 2 a = 3.1416 * n * n
a. 15 * 14 3 * 7 b. 4*5*2
c. (24 + 2 * 6) / 4 d. a * b + 7 * 8 donde a = 5 y b = 8
e. 3 + 4 * (8 * (4 (9 + 3) / 6)) f. 4*3*5+8*4*2-5
g. 4 40 / 5 h. (- 5) / (- 2)
a. + 1 b. c.
+ 14
+
d. e. + f.
2 2
+
h. [( + )] i. ( + )2 ( )
g.
9
4. ALGORITMIA
Ver anexo A.
10
4.4 Ejercicios sencillos
1. Disear algoritmo que lea cinco nmeros y calcule e imprima el producto, su suma
y media aritmtica.
Proceso Producto_Suma_Media
Definir a, b ,c, d, e, Producto, Suma como Entero;
Definir media como Real;
Leer a, b, c, d, e;
Producto = a * b * c * d * e;
Suma = a + b + c + d + e;
Media = (a + b + c + d + e) / 5;
Escribir Producto, Suma, Media;
FinPoceso
2. Disear un algoritmo que calcule la distancia recorrida (m) por un automvil, que
tiene una velocidad constante (m/s) durante un Tiempo (seg.).
Proceso Distancia_Recorrida
Definir Tiempo, Velocidad, Distancia como Entero;
Leer Velocidad, Tiempo;
Distancia = Velocidad * Tiempo;
Escribir Distancia;
FinProceso
Proceso salario
Definir nombre como Cadena;
Definir SalarioxHora, SMes como
Definir HorasT como Flotante;
Leer nombre, SalarioxHora, HorasT;
SMes = SalarioxHora * HorasT;
Escribir nombre, SMes;
FinPeoceso
4. Disear un algoritmo que lea el peso de una persona en libras e imprima su peso en
kilogramos y gramos (una libra equivale a 0.454 kilogramos).
11
7. Disear un algoritmo que permita convertir grados a radianes y disear otro
algoritmo que convierta de radianes a grados. Dar a conocer el resultado de dichas
conversiones.
Radianes = /180 X grados Grados = 180/ X radianes
10. Disear un algoritmo que lea la cantidad de dlares que se va a comprar y el tipo
de cambio en pesos (costo de un dlar en pesos). Calcular e imprimir la cantidad
que se debe pagar en pesos por la cantidad de dlares indicada.
[2] Luis Joyanes Aguilar, Luis Rodrguez Baena y Matilde Fernndez Azuela. Fundamentos
de Programacin. Mc. Graw Hill.
12
5. MEMORIA
Sin perder de vista el objetivo principal del curso, en este tema se tocar la memoria de la
computadora y la relacin que existe entre ella y los datos que puede manejar cualquier
programa que se ejecutar en dicha computadora.
La memoria est compuesta por localidades, todas ellas del mismo tamao. Una localidad es
un espacio fsico de la memoria para almacenar un byte (mas adelante en una materia del plan
de estudios se aprender todo lo relacionado con el byte).
La figura 5.1 representa un esquema de la memoria. Como puede observarse, cada rectngulo
representa una posicin de memoria y cada uno de ellos su tamao es idntico a los dems.
localidad direccin
n
n-1
n-2
9
8
7
6
5
4
3
2
1
0
Figura 5.1. Esquema de la memoria
13
En cada posicin de memoria se puede almacenar un dato. En la parte derecha del dibujo
existe una serie de nmeros consecutivos que inician en 0 y concluyen en n. Dicho nmero se
utiliza para identificar cada una de las posiciones de memoria y diferenciarla de las dems. A
dicho nmero se le denomina direccin. As por ejemplo: la posicin marcada con 9 es la
direccin 9 en la cual se puede almacenar un dato, 5 es otra y n-2 es otra direccin de
memoria. La capacidad de memoria de una computadora est limitada por los circuitos
electrnicos que conforman dicha memoria. Es obvio pensar que una computadora que tiene
ms capacidad de memoria es ms costosa que otra que tenga menos, debido que posee ms
circuitos electrnicos para conformarla. Por ello la capacidad de memoria es en s la cantidad
de localidades que pueda tener. Dado por N (ver la figura) que representa la direccin
mxima. As por ejemplo, si una computadora tiene 230 localidades de memoria
(1073741,824) en realidad tiene una capacidad de 1 Gigabyte. Dicha capacidad, en la
actualidad es suficiente para una computadora porttil pequea.
Como se mencion, un programa de computadora, para trabajar con sus datos y obtener
resultados utiliza direcciones de memoria (nmeros) para almacenar dichos datos. Para las
personas es ms difcil aprender nmeros que aprender nombres. Por esa razn en los
programas de computadora no ser necesario utilizar direcciones de memoria tales como son
(nmeros), en su lugar se utilizan variables. Esa es la importancia de las variables, manejan los
datos de una forma sencilla dentro de los programas sin utilizar de manera directa las
direcciones de memoria. Dichas variables las utiliza el programador en las lneas de cdigo del
programa para hacer referencia a los datos almacenados en la memoria.
Para cualquier programa, existen diversos tipos de datos, entre los cuales los ms utilizados
son numricos, caracteres y cadenas. Otros mas que se utilizan con menos frecuencia pero que
son muy importantes son los lgicos y punteros entre otros (tambin estos datos se aprendern
en una materia de primer semestre). Para efectos de facilitar la comprensin de estos temas
solamente se har mencin de nmeros sin fraccin (todos enteros).
Los datos numricos, como su nombre lo dice son nmeros, mismos que pueden ser de varios
tipos.
Si se habla de la edad de una persona, pues se utiliza un nmero que puede estar en un rango
de 0 a 150 (dado que se est afirmando que no hay personas que puedan tener edad mayor a
150). Otro ejemplo puede ser si consideramos un taller mecnico, en el cual para facilitar la
administracin del propio taller a cada empleado que trabaja ah se le asigna un nmero, si el
taller tiene muy pocos empleados (menos de 100), pueden usarse nmeros de 1 a 99.
Si ahora se considera el dinero que maneja el propio taller mecnico para cobro de las
reparaciones, es posible que una reparacin llegue cerca de los 100,000 pesos, entonces aqu
se utilizan nmeros ms grandes, que quizs puedan llegar a ser hasta 99,999 pesos.
Otro ejemplo diferente puede ser para aplicaciones de los astrnomos que manejan distancias
de millones de kilmetros. En este caso se usarn nmero ms grandes.
14
Existen datos considerados como tipo carcter, mismo que se explican aqu. Haciendo
referencia al taller mecnico de un ejemplo anterior, y suponiendo que para llevar el control
administrativo de dicho taller, es necesario considerar datos de los empleados (mismos que
tienen un puesto a desempear, como pueden ser velador, recepcionista, contador, mecnico,
etc.) Si se registra el sexo de cada persona se puede usar una letra, para tal efecto por ejemplo
M para masculino y F para femenino. En este caso un dato que puede ser manejado por una
sola letra, se le denomina dato tipo caracter.
En conclusin, dependiendo del problema se identifican los datos y para cada dato debe
identificarse que tipo es, segn sus valores posibles.
Ahora surge la pregunta, Cmo es que una variable representa un dato?. Suponiendo que el
programa requiere manejar el dato sexo una letra), entonces se utiliza una variable, que en este
ejemplo se le llama s. Entonces, cada vez que en el programa se use la variable s, se hace
referencia a una direccin de memoria en la cual estar almacenada el valor (que como se
mencion puede ser F o M). Cuando un programa se ejecuta, ya se asign usan direccin de
memoria para la variable s, en este caso se supone que es la direccin 8. El programador no
necesita saber que en la direccin 8 est almacenada la letra que representa el sexo, para l,
solo es importante saber que la variable es s y cada vez que se utilice dicha variable est
haciendo referencia a la direccin 9. Entonces significa que no es necesario que el
programador conozca que en la direccin 9 (posicin 9) se almacena la letra correspondiente
al sexo.
En conclusin, para cada tipo de datos que maneja el programa se utiliza una variable y cada
variable representa una posicin de memoria en la cual se almacena el dato.
5.3. Asignacin
El hecho de que esas tres variables se utilicen en un programa que haga el clculo, significa
que hay una direccin de memoria en la cual se almacenar el valor de b, en otra el valor de h
y una ms (para la variable a ) para almacenar el resultado, sin embargo en el programa se
usarn las variables que pueden tener valores diferentes cada vez que se ejecute el programa.
15
La expresin que calcula el rea es la siguiente:
b*h/2
Esa expresin se interpreta de la siguiente forma: el valor que tenga b se multiplica por h y el
resultado se divide entre 2. El resultado final obtenido de la expresin es necesario
almacenarlo en la memoria mientras el programa sigue en ejecucin. La necesidad de
almacenarlo es para usarlo posteriormente, por ello se defini una localidad de memoria
llamada a. la ecuacin queda de la siguiente manera:
a = b*h/2
X = Y
L = 18
16
6. DECISIONES
Las estructuras lgicas selectivas se encuentran en la solucin algortmica de casi todo tipo de
problemas. Se utilizan cuando en el desarrollo de la solucin de un problema se debe tomar
una decisin, para establecer un proceso o sealar un camino alternativo a seguir.
Esta toma de decisin se basa en la evaluacin de una o ms condiciones que sealarn como
alternativa o consecuencia la rama a seguir. Para reconocer esta toma de decisiones en la vida
diaria, se pueden hacer los siguientes ejercicios:
1. Resuelve los siguientes laberintos, mostrados en las figuras 6.1 y 6.2, pensando en las
decisiones que se tomaron para ir por un camino u otro.
17
Figura 6.2 Laberinto 2
2. Describe las opciones y las decisiones que realizas a diario para llegar desde tu casa al
curso de Induccin en el Tecnolgico.
18
6.1. Operadores relacionales
Los operadores relacionales son operadores que permiten comparar dos operandos. Los
operandos pueden ser nmeros, alfanumricos, constantes o variables. Las constantes o
variables a su vez, pueden ser de tipo entero, real, carcter o cadena de caracteres. El resultado
de una expresin con operandos relacionales es verdadero o falso.
En la tabla 6.1 se presentan los operadores relacionales, la operacin que pueden realizar, un
ejemplo de su uso y el resultado de dicho ejemplo.
Tec = H < 3 da lugar a que la variable Tec adquiera valor verdadero si H es menor que tres, o
falso si H no es menor que tres.
EXPRESIN EVALUACIN
A>B Falso
A<B Verdadero
A >= B Falso
A <= B Verdadero
B>A Verdadero
AB>0 Falso
A+B>0 Verdadero
Res = A > B Falso es almacenado en la variable Res
(A / B) * B <> A No es factible de evaluar
A <> B Verdadero
A==B Falso
Si se piensa en que una computadora, a efectos matemticos, funciona como una calculadora,
se puede hacer en la casa la siguiente experiencia:
1. Con una calculadora no cientfica, dividir 2 entre 7. Una calculadora con 8 dgitos
devuelve el resultado con 7 decimales como 0,2857142. A continuacin se multiplica el
resultado por 7 y se obtiene 1,9999994.
En definitiva, una computadora no trabaja con infinitos decimales y puede dar lugar a
resultados inesperados. Estos casos habrn de ser previstos por el programador, que tomar las
medidas que estime convenientes. La forma de operar de las computadoras o las caractersticas
del lenguaje que se est utilizando en un momento dado pueden dar lugar a aparentes fallos o
resultados inesperados. No son muy habituales pero conviene tener en cuenta que pueden
aparecer. A estos resultados inesperados se les llama paradojas. El caso de (A / B) * B <> A
se le denomina paradoja de los decimales finitos. Conocer las paradojas de un lenguaje y
manejarlas a su antojo es un hobby para muchos programadores.
Ejemplos
20
2. Si se evala una expresin ms larga quedara de la siguiente manera:
A = 10
B = 5
(A * 2 4) >= (B * 3 + 6)
(10 * 2 4) >= (5 * 3 + 6)
(20 4) >= (15 + 6)
16 >= 21
FALSO
3. (6 * 5 + 20 / 4) <= (6 ^ 3 div 7)
(30 + 20 / 4) <= (216 div 7)
(50 / 4) <= 30
12.5 <= 30
VERDADERO
Los operadores lgicos son operadores que permiten formular condiciones complejas a partir
de condiciones simples. Los operadores lgicos son de conjuncin (y), disyuncin (o) y
negacin (no). En la tabla 6.3 se presenta el operador lgico, la expresin lgica y significado
de dicha expresin, teniendo en cuenta la jerarqua correspondiente.
OPERADOR EXPRESIN
JERARQUA SIGNIFICADO
LGICO LGICA
NO P
No P No es cierto que P
NO (mayor)
Es FALSO que P
PoQ
(menor)
PoQ o P o Q o ambas
O
Mnimo P o Q
P Q ~P ~Q PoQ PyQ
VERDADERO VERDADERO FALSO FALSO VERDADERO VERDADERO
VERDADERO FALSO FALSO VERDADERO VERDADERO FALSO
FALSO VERDADERO VERDADERO FALSO VERDADERO FALSO
FALSO FALSO VERDADERO VERDADERO FALSO FALSO
21
En resumen:
Los operadores lgicos combinan condiciones, segn el tipo de operador se deber cumplir
una u otra funcin. En la tabla 6.5 se describe el significado de los operadores.
OPERADOR SIGNIFICADO
AND Almacenara True, slo si todos las condiciones son verdaderas
OR Almacenara True, slo si alguna de las condiciones es verdadera
NOT Cambia el valor al contrario
Tabla 6.5 Significado de los operadores lgicos
Ejemplos
Para entender mejor el para qu sirven estos operadores se presentan unos ejemplos y su
resolucin:
(5 > 3) y (8 < 4)
VERDADERO y FALSO
Resultado: FALSO
(5 > 3) y (4 < 8)
VERDADERO y VERDADERO
Resultado: VERDADERO
(5 > 3) o (8 < 4)
VERDADERO o FALSO
Resultado: VERDADERO
(5 < 3) o (8 < 4)
FALSO o FALSO
Resultado: FALSO
NO (5 < 3)
NO FALSO
Resultado: VERDADERO
2. NO (15 > 7 * 2)
NO (15 > 14)
NO VERDADERO
Resultado: FALSO
3. (7 + 5 6) > (9 + 7 * 8 36 / 5)
(12 6) > (9 + 56 36 / 5)
6 > (9 + 56 7.2)
6 > (65 7.2)
6 > 57.8
Resultado: FALSO
22
4. ((9+4 * (5-3)) < (10/2+20)) O (((8 * 3+12) 5 * 4) > (7 * 4/2))
((9 + 4 * 2) < (5 + 20)) O (((24 + 12) 20) > (28 / 2))
((9 + 8) < 25) O ((36 20) > 14)
(17 < 25) O (16 > 14)
VERDADERO O VERDADERO
Resultado: VERDADERO
Una decisin simple tiene una rama de entrada con una sola entrada y dos ramas de salida con
una salida cada una. Cuando se ejecuta el proceso, el flujo del proceso toma una rama de
salida si una determinada condicin es verdadera y la otra rama si la misma condicin es falsa.
La decisin selecciona la salida segn los datos de entrada.
Ejemplos
Proceso Calificaciones
Leercal;
Sical> 6 Entonces
Escribir Aprobado;
FinSi
FinProceso
2. Dado como dato el sueldo de un trabajador, aplquele un aumento del 15% si su sueldo es
inferior a $1000. Imprima en este caso, el nuevo sueldo del trabajador.
Proceso Sueldo
LeerSue;
SiSue< 1000 Entonces
Aum = Sue * 0.15;
Nsue = Sue + Aum;
EscribirNsue;
FinSi
FinProceso
23
Ejercicios propuestos:
Las decisiones a veces tienen ms de un camino, es decir cuando se tienen dos opciones de
alternativas de accin y por la naturaleza de stas, se debe ejecutar una o la otra pero no ambas
a la vez, es decir son mutuamente excluyentes.
Por ejemplo:
Proceso Compara
A=5;
B=10;
Si (A>B) Entonces
Escribir A es el mayor;
Sino
Escribir B es el mayor;
FinSi
FinProceso
Pero a veces se necesitan seguir otros caminos una vez que ya se ha tomado uno de los dos
caminos principales, es decir, ya se tom una alternativa, pero se deben tomar otras decisiones.
Ejemplo:
Se necesita calcular el sueldo de un empleado tomando en cuenta que las horas trabajadas
deben ser de 8 horas diarias de lunes a viernes. Adems se debe tomar en cuenta que a la
semana son 40 horas. Una cantidad mayor, esta se calcula como horas extra, donde cada hora
extra se paga doble, pero si se trabajan ms de 50 horas, las horas se deben pagar triple.
horastrabajadas, sueldoporhora
24
Como datos de salida:
Proceso Horas
Si (horastrabajadas<= 40) Entonces
sueldo = horastrabajadas * sueldoporhora;
Sino
Si (horastrabajadas<= 50) Entonces
sueldodoble = (40 * sueldoporhora) +
((horastrabajadas - 40) * (sueldoporhora *
2));
Sino
sueldotriple = (40 * sueldoporhora) +
((horastrabajadas 50) * (sueldoporhora *
3));
FinSi
FinSi
FinProceso
Las decisiones anidadas se utilizan cuando se tienen dos alternativas para solucionar el
problema y adems de cada va posible se tienen otras posibles soluciones u opciones para
elegir una sola alternativa para resolver el problema.
Ejercicios propuestos:
25
6.5. Decisiones mltiples
Cuando se tienen ms de dos opciones alternativas de accin, se debe tomar un solo camino
para resolver el problema. En este tipo de decisiones se tienen diversas alternativas y un solo
camino es el que debe tomarse. Esta estructura funciona de la siguiente manera: se presentan
varios caminos y se debe seleccionar uno solo de todos los posibles, se realiza la accin o
acciones correspondientes y se finaliza con la seleccin.
Ejemplo: leer el nmero de da y presentar el da correspondiente.
Proceso DiaSemana
Definir dia como entero;
Leer dia;
Segn dia Hacer
1: Escribir Domingo;
2: Escribir Lunes;
3: Escribir Martes;
4: Escribir Mircoles;
5: Escribir Jueves;
6: Escribir Viernes;
7: Escribir Sbado;
De otro modo: Escribir Dato errneo;
FinSegun
FinProceso
Ejercicios propuestos:
26
6.6. Ejercicios
1. A = 5 y B =1 6
(A ^ 2) > (B * 2)
2. ((5 * 4 - 8) + (18 / 3)) > ((4 * 6 - 7) + (2 * 5 + 6 /(3 * 3 - 7) ))
3. X=6
Y=7
(1580 mod X * 2 ^ Y) > (Y + 8 * X + (Y div 3))
4. Escribir si una persona es mayor de edad (mayor de 18), tomando como base la edad
proporcionada.
5. Escribir slo el nmero mayor de dos nmeros ledos.
6. Escribir si un estudiante es admitido en la Universidad o no con base a los promedios
que tenga en la preparatoria y del examen de admisin. El promedio mnimo es de 85.
Ejemplo: Promedio de la Preparatoria 85, calificacin del examen de admisin 80, el
promedio es 82.5000 por lo tanto NO es admitido.
7. Presionar una tecla y escribir que tipo de tecla es, mayscula, minscula, dgito o
carcter especial.
8. Introducir los segundos y escribir a cuantas horas, minutos y segundos equivale.
9. Escribir a qu mes corresponde en nmero. Por ejemplo: nmero de mes 3 y equivale
al mes de Marzo.
10. Escribir qu tipo de alumno es segn su calificacin, considerando que si el alumno
tiene 100 se escriba EXCELENTE. Si tiene entre:
a. 90 y 99 MUY BUENO
b. 80 y 89 BUENO
c. 70 y 79 REGULAR
d. 60 y 69 MALO
e. 0 y 59 REPROBADO
27
7. CICLOS
Ciclo PARA
Este ciclo es uno de los ms usados para repetir una instruccin o conjunto de instrucciones,
sobre todo cuando se conoce la cantidad exacta de veces que se quiere que se ejecute una o
ms instrucciones.
<Instruccin(es)>
FinPara
Las instrucciones dentro de un ciclo resuelve el problema de repetir todo el programa o cierta
parte del programa ms de una vez, ya que estas instrucciones se repiten cada vez en cada
pasada del ciclo.
Con el buen uso de este ciclo Para logramos que nuestros programas sean de una menor
cantidad de lneas y el tamao del mismo al guardarlo sea tambin menor, por ejemplo si
necesitamos pedir el nombre direccin y telfono de 45 personas tendramos que poner 45
instrucciones para leer el nombre, otras 45 para pedir la direccin, y otro tanto igual para pedir
el telfono, si hacemos uso de este ciclo solamente ponemos tres instrucciones que se repitan
45 veces y nuestro programa es mucho menor que el que resultara de repetir las 3
instrucciones para cada una de las 45 personas.
28
Ejemplos del ciclo Para
Ejemplo Uno:
Proceso Promedio
acum=0
prom = acum/n
FinProceso
Ejemplo Dos:
Proceso Sumatoria
FinProceso
29
Ejercicio a desarrollar:
Anotar las lneas de cdigo necesarias para obtener el valor factorial de un x nmero.
Valor del x = 5
5-1=4 y se multiplican
5x4=20
20*3=60
60 * 2 =120
Ciclo Mientras
La instruccin Mientras ejecuta una secuencia de instrucciones mientras una condicin sea
verdadera.
Mientras<condicin>Hacer
<instrucciones>
FinMientras
<condicion>: Permite que se realicen las instrucciones mientras que la condicin sea
verdadera.
<instrucciones>: Representa el conjunto de actividades a realizar.
30
Ejemplo 1
Proceso refresco
Definircontador como entero
Inicializarcontador= 0
Elegir refresco
Mientrascontador< 9 Hacer
Depositar moneda
Incrementar contador en uno (contador=contador+1)
FinMientras
Tomar el refresco
FinProceso
Ejemplo 2
Se requiere enviar un mensaje de texto a travs del celular, considera que ya se eligi el
contacto y que se presenta el cuadro de texto donde se escribir el mensaje.
Proceso EnviarMensaje
Definir salida como entero
Inicializar salida= 0
Mientrassalida<> enviar Hacer
Entrar salida= caracter
Escribir salida
FinMientras
FinProceso
Ejemplo 3
Se quiere sumar los nmeros comprendidos entre el 1 y el 100, es decir, el resultado de
1+2+3+100
31
Proceso Suma
Definir s,i como entero
Inicializar s= 0
Inicializar i = 1
Mientrasi<= 100 Hacer
s = s+i
i = i+1
FinMientras
Escribir s
FinProceso
Ejercicios
o Hacer el clculo de la suma de los nmeros impares comprendidos entre el 0 y el 100
o Se requiere mostrar y contar los mltiplos de 7 que hay entre 1 y 700
o Mostrar la tabla de multiplicar del 1 al 10, elegida por el usuario.
Ejemplo: si el usuario elige la tabla 3, se debe representar 3 x 1 = 3, 3 x 2 = 6, etc.
32
En el cuerpo de las instrucciones debe haber alguna accin que cambie el estado de los
elementos que se evalan en la Condicin, para asegurar que el ciclo se terminar en algn
momento, de lo contrario se entrara en un ciclo infinito.
Ejemplo: Si un atleta va a hacer ejercicio en una pista de atletismo hasta que se canse, la
secuencia de instrucciones sera:
Repetir
Dar una vuelta a la pista trotando
Hasta que
Est suficientemente cansado
Ejercicios:
Disear un cdigo para sumar los nmeros naturales consecutivos a partir del nmero
n dado por el usuario, hasta que la suma alcance al menos el valor k, tambin dado por
el usuario, para k > n.
Disear un cdigo de un programa que permita leer una cadena de caracteres hasta que
se introduzca un espacio en blanco.
Disear un cdigo que permita a una estacin de gasolina, bombear el combustible
hasta que se alcance la cantidad de litros ordenada por el cliente.
Disear un cdigo para un guardia de seguridad en la puerta de un antro, que permita
el acceso de clientes hasta que se alcance el lmite de clientes permitido por proteccin
civil.
1
En este caso el atleta deber dar una vuelta a la pista aun cuando al llegar al campo de entrenamiento ya est
suficientemente cansado.
33
8. Anexo A. Sintaxis para el Pseudocdigo utilizado en el diseo de
algoritmos
Para que una computadora pueda resolver un problema es necesario que se le indiquen las
instrucciones para ello. Estas instrucciones es lo que constituye el programa de la
computadora, y definen los pasos que debe de seguir la computadora para obtener el resultado
que se est solicitando. Estos pasos son los que conformarn el algoritmo de solucin y que es
necesario disear para garantizar que el resultado sea el esperado.
Existen diversas formas de describir y disear un algoritmo, partiendo de una simple narracin
de paso o yndonos al uso de palabras prediseadas (pseudopalabras) que se asocien con las
instrucciones de la computadora llamadas pseudocdigos, aunque de manera grfica tambin
podemos disear un algoritmo haciendo uso de diagramas de flujo, diagramas de N-S (Nassi-
Schneiderman), Diagramas de Warnier, diagramas de actividades entre otros.
En este curso se tocar slo el uso de pseudocdigo para el diseo de un algoritmo. Parte de su
sintaxis estar basada en herramienta PSeInt, la cual se puede encontrar en la pgina:
http://pseint.sourceforge.net/, y en el libro Metodologa de la programacin orientada a
objetos, segunda edicin, de Leobardo Lpez Romn, de la editorial AlfaOmega.
Estructura bsica
Caso PSeInt
Proceso NombreProceso
accion 1;
accion 1;
.
.
.
accion n;
FinProceso
Comienza con la palabra clave Proceso seguida del nombre del programa, luego le sigue una
secuencia de instrucciones y finaliza con la palabra FinProceso. Una secuencia de
instrucciones es una lista de una o ms instrucciones, cada una terminada en punto y coma.
Cabe mencionar que en lugar de utilizarse la palabra proceso, es ms comn y general la
palabra algoritmo, pero respetando sintaxis de la herramienta PSeInt se trabajar bajo el
nombre de proceso para indicar el nombre e inicio del algoritmo a disear. A continuacin se
tiene la estructura general de un algoritmo sin seguir herramienta alguna:
34
Caso general
Inicio
accion 1;
accion 1;
.
.
.
accion n;
FinAlgoritmo
Operadores y Funciones
Se dispone de un conjunto bsico de operadores y funciones que pueden ser utilizados para la
construccin de expresiones ms o menos complejas. Y las cuales se presentan en la tabla A.1
y en la tabla A.2.
35
La jerarqua de los operadores matemticos es igual a la del lgebra, aunque puede alterarse
mediante el uso de parntesis.
Funcin Significado
RC(X) Raz Cuadrada de X
ABS(X) Valor Absoluto de X
LN(X) Logaritmo Natural de X
EXP(X) Funcin Exponencial de X
SEN(X) Seno de X
COS(X) Coseno de X
ATAN(X) Arcotangente de X
TRUNC(X) Parte entera de X
REDON(X) Entero ms cercano a X
AZAR(X) Entero aleatorio entre 0 y X-1
Tabla A.2 Relacin de funciones matemticas
Comentarios
Dentro de un algoritmo tambin se pueden poner comentarios, lo que nos permite de alguna
manera ir documentando internamente nuestro pseudocdigo, para ello se utilizarn dos
diagonales juntas //.
Los comentarios se pueden introducir luego de una instruccin, o en lneas separadas. Todo lo
que precede a //, hasta el fin de la lnea, no ser tomado en cuenta al interpretar el algoritmo.
Dado que al momento de solucionar un problema es necesario contar con una serie de datos de
entrada, y en ocasiones de datos generados a partir de otros datos durante el proceso para
obtener algn resultado es necesario definir variables que contendrn dichos datos, los cuales
pueden ser a su vez de diversos tipos de datos, para que sean reconocidos por el programa es
necesario hacer una declaracin o definicin antes de ser utilizadas dichas variables, para ello
se seguir el formato siguiente:
36
Ejemplo:
Los tipos de datos ms comunes son: numricos (enteros, y reales), cadenas (delimitadas por
comilla), caracteres (delimitados por apostrofes), booleanos (verdadero y falso).
Asignacin
La instruccin de asignacin permite almacenar un valor en una variable. Es comn utilizar
una flecha dirigida hacia a la izquierda para denotar la asignacin como lo muestra tanto el
smbolo de la figura A.1 como la instruccin, pero para nuestro caso utilizaremos el smbolo
de igual (=).
<variable> =<expresin> ;
<variable> = <valor> ;
Ejemplo:
a=10;
b=3.2;
res=12+2-b;
var = Expresin
37
Entradas
Ejemplo:
Leer altura;
Esta instruccin lee N valores desde el ambiente (en este caso el teclado) y los asigna a las N
variables mencionadas. Pueden incluirse una o ms variables, por lo tanto el comando leer
uno o ms valores. La figura A.2 ilustra el smbolo que puede ser utilizado para la entrada de
datos.
Salidas
Ejemplo:
Escribir Dame tu nombre;
Escribir Esta es una impresin;
Esta instruccin imprime al ambiente (en este caso en la pantalla) los valores obtenidos de
evaluar N expresiones. Dado que puede incluir una o ms expresiones, mostrar uno o ms
valores.
La figura A.3 ilustra el smbolo que puede ser utilizado para la salida de datos.
38
Estructuras condicionales
Condicional Si-Entonces
La secuencia de instrucciones ejecutadas por la instruccin Si-Entonces-Sino depende del
valor de una condicin lgica.
Si <condicin>
Entonces
<instrucciones>
Sino
<instrucciones>
FinSi
La clusula Entonces debe aparecer siempre, pero la clusula Sino puede no estar. En ese caso,
si la condicin es falsa no se ejecuta ninguna instruccin y la ejecucin del programa contina
con la instruccin siguiente.
Ejemplo:
Si a<b
Entonces
Escribir a, es menor que , b;
Sino
Escribir a, no es menor que , b;
FinSi
La figura A.4 ilustra el smbolo que puede ser utilizado para definir una instruccin
condicional del tipo si-entonces-sino.
39
Seleccin Mltiple
La secuencia de instrucciones ejecutada por una instruccin Segun depende del valor de una
variable numrica.
Esta instruccin permite ejecutar opcionalmente varias acciones posibles, dependiendo del
valor almacenado en una variable de tipo numrico. Al ejecutarse, se evala el contenido de la
variable y se ejecuta la secuencia de instrucciones asociada con dicho valor.
Cada opcin est formada por uno o ms nmeros separados por comas, dos puntos y una
secuencia de instrucciones. Si una opcin incluye varios nmeros, la secuencia de
instrucciones asociada se debe ejecutar cuando el valor de la variable es uno de esos nmeros.
Opcionalmente, se puede agregar una opcin final, denominada De Otro Modo, cuya
secuencia de instrucciones asociada se ejecutar slo si el valor almacenado en la variable no
coincide con ninguna de las opciones anteriores.
Ejemplo:
Proceso DiasSemana
Definir dia como entero;
Escribe Escribe el nmero que corresponde al da de la semana;
Leer dia;
Segn dia Hacer
1: Escribir Lunes;
2: Escribir Martes;
3: Escribir Mircoles;
7: Escribir Domingo;
FinSegun
FinProceso
40
La figura A.5 ilustra el smbolo que puede ser utilizado para definir una instruccin de
seleccin o condicin mltiple.
Estructuras cclicas
Ciclo Mientras
La instruccin Mientras ejecuta una secuencia de instrucciones mientras una condicin sea
verdadera.
Ejemplo:
Proceso EjemploMientras
Definir i como entero;
i=1;
Mientras i<=5 Hacer
Escribir El valor de i=, i;
I=i+1;
FinMientras
FinProceso
41
Algo importante mencionar es que las instrucciones del cuerpo del ciclo pueden no ejecutarse
nunca, si al evaluar por primera vez la condicin resulta ser falsa.
Hay que tener cuidado con lo siguiente: si la condicin siempre es verdadera, al ejecutar esta
instruccin se produce un ciclo infinito. A fin de evitarlo, las instrucciones del cuerpo del ciclo
deben contener alguna instruccin que modifique la o las variables involucradas en la
condicin, de modo que sta sea falsificada en algn momento y as finalice la ejecucin del
ciclo.
Ejemplo:
La figura A.6 ilustra el smbolo que puede ser utilizado para definir una instruccin de tipo
cclica, para este caso del ciclo Mientras.
Ciclo Repetir
Repetir
<instrucciones>
Al ejecutarse esta instruccin, la secuencia de instrucciones que forma el cuerpo del ciclo se
ejecuta una vez y luego se evala la condicin. Si la condicin es falsa, el cuerpo del ciclo se
ejecuta nuevamente y se vuelve a evaluar la condicin. Esto se repite hasta que la condicin
sea verdadera.
42
Ejemplo:
Proceso EjemploRepetir
Definir i como entero;
i=1;
Repetir
Escribir El valor de i=, i;
I=i+1;
Hasta Que i>5;
FinProceso
Cabe mencionar que dado que la condicin se evala al final, las instrucciones del cuerpo del
ciclo sern ejecutadas al menos una vez.
Adems, a fin de evitar ciclos infinitos, el cuerpo del ciclo debe contener alguna instruccin
que modifique la o las variables involucradas en la condicin de modo que en algn momento
la condicin sea verdadera y se finalice la ejecucin del ciclo.
La figura A.7 ilustra el smbolo que puede ser utilizado para definir una instruccin de tipo
cclica, para este caso del ciclo Repetir.
Ciclo Para
43
Al ingresar al bloque, la variable <variable> recibe el valor <inicial> y se ejecuta la secuencia
de instrucciones que forma el cuerpo del ciclo. Luego se incrementa la variable <variable> en
<paso> unidades y se evala si el valor almacenado en <variable> super al valor <final>. Si
esto es falso se repite hasta que <variable> supere a <final>. Si se omite la clusula Con
Paso <paso>, la variable <variable> se incrementar en 1.
Ejemplo:
Proceso EjemploPara
Definir i como entero;
i=1;
Para i=1 Hasta i=5 Hacer
Escribir El valor de i=, i;
FinPara
FinProceso
La figura A.7 ilustra el smbolo que puede ser utilizado para definir una instruccin de tipo
cclica, para este caso del ciclo Para.
44