Download curso taller de introducción a la ing. en sistemas

Document related concepts
no text concepts found
Transcript
Toshiba
INSTITUTO TECNOLÓGICO DE CD.GUZMÁN
CURSO TALLER DE INTRODUCCIÓN
A LA ING. EN SISTEMAS
COMPUTACIONALES
INTRODUCCIÓN A LA PROGRAMACIÓN
OBJETIVO Desarrollar en el aspirante sus habilidades Lógicas
que se aplican a la solución de los problemas
susceptibles de ser computarizados
ACADEMIA DE ING. EN SISTEMAS COMPUTACIONALES
Agosto 2014
ÍNDICE
1.
INTRODUCCIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.
INTRODUCCIÓN A LOS ALGORITMOS . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1. Algoritmos cotidianos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.1. Torta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.2. Orden de enchiladas (quesadillas). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.3. Cambiar un foco. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2. Definición de problemas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1. Leer y comprender el problema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.2. Identificar entradas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.3. Identificar salidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.4. Identificar proceso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.5. Identificar datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.
EXPRESIONES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1. Operadores aritméticos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2. Expresiones matemáticas simples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3. Jerarquía de operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4. Funciones matemáticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5. Expresiones matemáticas combinadas con funciones matemáticas . . . . . . . . . . . .
3.6. Ejercicios de evaluación de expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.
ALGORITMIA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1. Definición de algoritmo y características. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2. Diseño del algoritmos con pseudocódigos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3. Proceso de un programa en la computadora. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4. Ejercicios sencillos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.
MEMORIA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1. Localidades (tamaño y dirección) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2. Tipos de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3. Asignación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.
DECISIONES. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.1. Operadores relacionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2. Operadores lógicos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3. Decisiones simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4. Decisiones anidadas (complejas) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.5. Decisiones múltiples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.6. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.
CICLOS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.1. Ciclos contados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2. Ciclos condicionados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8. Anexo A. Sintaxis para el Pseudocódigo utilizado en el diseño de algoritmos. . .
Pág.
1
2
2
2
2
3
3
3
3
4
4
4
5
5
5
6
8
9
9
10
10
10
10
11
13
13
14
15
17
19
21
23
24
26
27
28
28
30
34
1
1.
INTRODUCCIÓN
Para cursar la Ingeniería en Sistemas Computacionales es necesario que el aspirante tenga
habilidad lógico-matemática, que generalmente ha ido adquiriendo conforme avanzó en sus
estudios de nivel medio superior.
Por otra parte, independientemente del antecedente académico que haya adquirido el aspirante,
es necesario que conozca aspectos básicos 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 algún lenguaje de programación
Como puede leerse en el objetivo del curso, se desea que el aspirante desarrolle su capacidad
de razonamiento lógico para resolver problemas usando la computadora. Para ellos se dividió
su contenido de acuerdo a lo que se indica enseguida.
En el capítulo denominado introducción a los algoritmos se trata de comprender acciones
cotidianas para convertirlas en algoritmos, posteriormente dado un problema, identificar sus
partes (entradas, salidas, datos y el proceso a ejecutar).
En el capítulo 3 (expresiones) se aprenderá como escribir cualquier expresión matemática en
un formato que se utiliza en la computadora, y que usa la mayoría de los lenguajes de
programación de computadoras.
En el capítulo de algoritmia, se aprenderá el concepto de algoritmo, sus partes y la forma de
representar la solución de un problema usando algoritmos.
El capítulo 5 cubre el tema de memoria, que sin incluir conocimientos técnicos de electrónica
digital, se aprenderá a relacionar lo que físicamente es la memoria, con los datos que maneja
un programa cuando se ejecuta.
En el capítulo 6 llamado decisiones se aprenderá a identificar las bifurcaciones que son
necesarias incluir en la solución de los problemas y la forma de escribirlas en los algoritmos.
En el capítulo 7 se aprenderá a identificar los diversos tipos de ciclos para elegir el apropiado
y codificarlo en el algoritmo que representa la solución del problema.
El capítulo 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. INTRODUCCIÓN A LOS ALGORITMOS
2.1. Algoritmos cotidianos
2.1.1. Torta
¿Qué hacemos si tenemos hambre? ¿Qué hacemos primeramente? Nos dirigimos al
refrigerador y vamos en busca de algo para comer pero resulta que no hay nada preparado,
¡ah! pero observamos que hay todos los ingredientes para hacer una torta de jamón. ¿Qué
hacemos primero? ¿Podríamos poner el jamón antes de untar la mayonesa en el pan? Por
supuesto que no, entonces, ¿cuáles serían los pasos a seguir para preparar dicha torta y
podérnosla comer? Una posible forma de preparar una torta, es la siguiente:
1. Tomar el pan.
2. Partirlo a la mitad.
3. Untarle la mayonesa.
4. Poner una rebanada de jamón.
5. Rebanar un jitomate.
6. Poner el jitomate encima del jamón.
7. Rebanar una cebolla.
8. Poner la cebolla encima del jitomate.
9. Tapar la torta.
10. Comerla.
¿De qué nos damos cuenta en este pequeño ejemplo? Si reflexionamos un poco, muchas de las
actividades que realizamos diariamente pueden ser traducidas a pasos, ¿Cómo? 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.
2.1.2. Hacer quesadillas
Los pasos necesarios para preparar unas quesadillas, pueden ser los siguientes:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sacar tortillas y queso.
Sacar sartén o comal.
Calentar sartén o comal.
Cortar el queso.
Calentar las tortillas.
Agregar a la tortilla la cantidad suficiente de queso.
Doblar por la mitad.
Esperar a que se derrita el queso.
Sacar del sartén o comal.
Servir y disfrutar.
2
2.1.3. Cambiar un foco
¿Qué se necesita para cambiar un foco fundido?
1.
2.
3.
4.
5.
6.
7.
8.
Sitúa la escalera debajo del foco fundido.
Elige el foco nuevo igual que el anterior.
Sube por la escalera hasta alcanzar el foco.
Gira el foco fundido en contra de las manecillas del reloj hasta quitarlo.
Ubica el nuevo foco en el mismo lugar donde se quitó el anterior.
Enrosca el foco hasta que quede fijo.
Baja de la escalera y retírala.
Prende la luz.
En ejemplos como éste se pueden identificar las características y el concepto de lo que es un
algoritmo.
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 lógico 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?, ¿cómo
empezar un algoritmo y cómo terminarlo?, ¿cuáles serían los resultados y cómo seguir los
pasos?
2.2. Definición de problemas
Para resolver un problema se requiere seguir una serie de pasos que comienza con la
definición y comprensión del problema y conduce a la resolución de mismo, hasta llegar a la
implantación del programa.
2.2.1. Leer y comprender el problema
Este proceso inicia cuando surge la necesidad de resolver algún problema mediante la
computadora. Se debe identificar el problema y comprender la utilidad de la solución que se
pretende alcanzar. Se debe tener una visión general del problema estableciendo las
condiciones iniciales (datos de entrada) y además los límites del problema, es decir, donde
empieza y donde termina (el proceso a seguir). Así como también la salida y resultado
esperado (datos de salida).
2.2.2. Identificar entradas
Es necesario entender en detalle el problema para obtener una radiografía en término 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 información requerida. Identificar los datos de entrada
3
requiere que se analice a fondo qué se necesita para poder encontrar una solución al problema
y cuáles son los datos indispensables que se requieren como datos iniciales.
2.2.3. Identificar salidas
Las salidas o datos de salida se presentan una vez que ha finalizado el proceso y se ha llegado
a la solución del problema, se requiere desde el principio saber cuáles son esos datos de salida
para poder verificar en el proceso que no se vaya a perder o cambiar alguno de estos datos.
2.2.4. Identificar proceso
Una vez que se tienen identificados tanto los datos de entrada como de salida se requiere
conocer cuál es el proceso que se debe seguir para solucionar el problema. Consiste en una
serie de pasos que permitirán llegar al resultado esperado. Estos pasos no deben omitirse o de
lo contrario se perderá la solución esperada.
2.2.5. Identificar datos
También es conocida como lectura de datos, consiste en recibir desde un dispositivo de
entrada, como el teclado, un valor.
Ejercicios:


Desarrolla un algoritmo para realizar una llamada telefónica desde un teléfono público.
Desarrolla un algoritmo para hacer palomitas de maíz en un horno de microondas.
4
3. EXPRESIONES
Las operaciones aritméticas fundamentales permiten modificar la apariencia de los datos para
generar información; en otras palabras, procesar los datos que entran como materia prima para
convertirlos en información que saldrá de la computadora.
3.1. Operadores aritméticos
La tabla 3.1 muestra los operadores aritméticos que se pueden utilizar para realizar
operaciones aritméticas:
Operador
+
*
/
mod
Significado
Ejemplo
Resultado
Suma
a+b
Suma de a y b
Resta
a–b
Resta de a y b
Multiplicación
a*b
Producto de a por b
División
a/b
Cociente de a por b
Módulo
a mod b
Resto de a entre b
Tabla 3.1 Operadores aritméticos
En donde:
1. Los operadores aritméticos +, -, * y / pueden ser utilizados con tipos enteros o reales.
Si ambos son enteros, el resultado es entero; si alguno de ellos es real, el resultado es
real.
2. El operador mod por lo general se trabaja con números enteros, aunque algunos
lenguajes permiten la operación con números reales.
Nota:
Si operador1 es 0, el resultado de / o mod no está definido.
Si operador2 es negativo, el resultado de la operación mod es negativo.
Ejemplos:
Expresión
7 mod 2
12 mod 3
0 mod 5
Resultado
1
0
0
Expresión
-15 mod 6
3 mod 5
-15 mod -7
Resultado
-3
3
-1
3.2. Expresiones matemáticas
Una expresión matemática es un conjunto de datos o funciones unidos por operadores
aritméticos.
FORMATO: variable = expresión
5
En donde:
Variable Es el nombre de la variable en la que se asignará el resultado de la expresión.
Expresión Es un valor constante o una variable o una expresión algebraica o fórmula
(para calcular un valor) El cual se le asigna a la variable que está a la izquierda
del símbolo =.
=
Es el símbolo que indica la asignación del valor de expresión a la variable.
3.3. Jerarquía de operadores
Las expresiones aritméticas deben escribirse en una línea para que puedan introducirse a la
computadora. La forma en que se escribe una expresión determina la forma en que será
evaluada. Por ejemplo, la expresión matemática:
𝑁=
𝑥+𝑦
𝑦−1
Deberá escribirse como:
n = (x+y) / (y-1)
La computadora examina toda la expresión y va evaluando cada componente de acuerdo a
cierto orden de precedencia que tienen las operaciones aritméticas:
1. Operaciones entre paréntesis. Primero busca lo que está entre paréntesis y lo evalúa.
En caso de haber paréntesis anidados, evalúa primero los más internos y luego
prosigue con los externos.
2. Operaciones Unarias. A continuación se evalúan las operaciones unarias, es decir, de
cambio de signo. Ejemplo a -4 le cambia el signo a 4.
3. Multiplicación y división. Posteriormente evalúa las operaciones de multiplicación y
división, las cuales tienen el mismo nivel de precedencia.
4. Suma y resta. Estas operaciones se evalúan al final, ya que tienen el más bajo nivel de
precedencia.
Nota 1: Cuando existen varias operaciones de un mismo nivel, se evalúan en orden de
izquierda a derecha.
Nota 2: en el ejemplo se encerraron entre paréntesis las operaciones (x+y) y (y-1) para
cerciorarse de que se hiciera primero la suma, luego la resta y por último la división. Si la
expresión se hubiera escrito n = x+y / y-1, estaría incorrecta, porque la computadora
primero haría la división de y/y, luego la suma y después la resta, lo que arrojaría un
resultado incorrecto.
6
Ejemplos de evaluación de expresiones:
1.
4+2*5
Primero
la
multiplicación;
después, la suma
4 + 10
14
2.
23 * 2 / 5
De izquierda a derecha por la
regla asociativa
46 / 5
9
3.
3 + 5 * ( 10 – (2 + 4) )
3 + 5 * ( 10 – 6)
3+5*4
3 + 20
23
primero paréntesis mas interno
segundo paréntesis
multiplicación
suma
4.
( 9 + 3 ) * 5 / 4 mod 7 + 1
12 * 5 / 4 mod 7 + 1
60 / 4 mod 7 + 1
15 mod 7 + 1
1+1
2
paréntesis
multiplicación
división
módulo
suma
5.
x – ( A + B / 2) + y * z
Escritura de fórmulas matemáticas
En la tabla 3.2 se muestran algunos ejemplos de cómo escribir una fórmula matemática a una
expresión aritmética, considerando la jerarquía de los operadores.
7
Fórmulas matemáticas
Expresión aritmética
a=b*c
𝑎 = 𝑏𝑐
b*b–4*a*c
𝑏 2 – 4𝑎𝑐
𝑦2 − 𝑦1
m = (y2 – y1) / (x2 – x1)
𝑚=
𝑥2 − 𝑥1
x+y-z
𝑥+𝑦−𝑧
𝑥+𝑦
(x + y) / (z + w)
𝑧+𝑤
5
5 / (1 + x * x)
2
1+ 𝑥
𝑌
x=a+b–y/z
𝑋 =𝐴+𝐵−
𝑍
𝐴𝐶 𝐵
w=(a*c/d)+b/c
𝑊=
+
𝐷
𝐶
𝑇 𝑌−2 +𝑅
z=(t*(y–2)+r)/s
𝑍=
𝑆
𝐶𝐸 − 𝐵𝐹
x = (c*e - b*f) / (a*e - b*d)
𝑋=
𝐴𝐸 − 𝐵𝐷
9
f = 9 / 5 * c + 32
𝐹 = 𝐶 + 32
5
Tabla 3.2 Conversión de funciones matemáticas a expresiones aritméticas
3.4. Funciones matemáticas
Para facilitar el cálculo matemático, todos los lenguajes de programación cuentan con
funciones matemáticas incluidas en su biblioteca de funciones. En la tabla 3.3 se listan algunas
las funciones cuya sintaxis está basada en la herramienta PSInt.
Función
Significado
RC(X)
Raíz Cuadrada de X
ABS(X)
Valor Absoluto de X
LN(X)
Logaritmo Natural de X
EXP(X)
Función Exponencial de X
SEN(X)
Seno de X
COS(X)
Coseno de X
ATAN(X)
Arcotangente de X
REDON(X) Entero más cercano a X
Tabla 3.3 Funciones matemáticas de PSInt
8
Ejemplos:
𝑎=𝑏− 𝑐
𝑏 =|𝑎|
𝑦 = 𝑠𝑒𝑛(𝑥)
a = b – RC(c)
b = ABS(a)
y = SEN ( X )
3.5. Expresiones matemáticas combinadas con funciones matemáticas
Los operadores matemáticos pueden combinarse con las funciones matemáticas, cómo puede
apreciarse en los siguientes ejemplos:
9−4
e = RC(9 - 4) / 3
e= 3
1 − cos 𝑎 v = (1 – cos(a)) / 2
𝑣=
2
a = 3.1416 * n * n
𝑎 = 𝜋𝑛2
3.6. Ejercicios de evaluación de expresiones
1.- ¿Cuál es el valor de cada una de las siguientes expresiones?
a.
c.
e.
g.
15 * 14 – 3 * 7
(24 + 2 * 6) / 4
3 + 4 * (8 * (4 – (9 + 3) / 6))
4 – 40 / 5
b.
d.
f.
h.
–4*5*2
a * b + 7 * 8 donde a = 5 y b = 8
4*3*5+8*4*2-5
(- 5) / (- 2)
2.- Escribir las siguientes expresiones matemáticas como expresiones de computadoras
a.
d.
g.
𝑥
+ 1
𝑦
𝑥+𝑦
𝑥−𝑦
𝑦
𝑥+
𝑧
𝑦
𝑥−
𝑧
b.
e.
𝑏
𝑐+𝑑
𝑎+𝑏
c.
𝑐
𝑑
2
h. [(𝑎 + 𝑏 )]
f.
2
i.
𝑥𝑦
1−4𝑍𝑥
𝑥𝑦
𝑚𝑛
(𝑥 + 𝑦)2 (𝑎 − 𝑏)
9
4. ALGORITMIA
“La Algoritmia es la ciencia que estudia técnicas para diseñar algoritmos eficientes y
evaluar la eficacia de un algoritmo”.
4.1 Definición de algoritmo y características
“Un algoritmo es una secuencia ordenada y cronológica de pasos que llevan a la
solución de un problema o a la ejecución de una tarea o actividad”[1].
La definición de un algoritmo debe describir tres partes: Entrada, Proceso y Salida.
Las características principales que debe cumplir un algoritmo son:
Debe ser preciso. Indicar el orden de realización de cada paso.
Debe ser definido. Si se sigue un algoritmo varias veces, se debe obtener el mismo
resultado cada vez.
Debe ser finito. Si se sigue un algoritmo, se debe terminar en algún momento, es decir
tener un número finito de pasos.
4.2 Diseño del algoritmos con pseudocódigos
Ver anexo A.
4.3 Proceso de un programa en la computadora
El proceso de resolución del problema, incluye el análisis del problema así como el
diseño y verificación del algoritmo.
1. Análisis del problema
a. Definición del problema
b. Datos de entrada
c. Proceso
d. Salida
2. Diseño del algoritmo
3. Verificación del algoritmo
4. Codificación del algoritmo
5. Ejecución del programa
6. Verificación del programa
10
4.4 Ejercicios sencillos
1. Diseñar algoritmo que lea cinco números y calcule e imprima el producto, su suma
y media aritmética.
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. Diseñar un algoritmo que calcule la distancia recorrida (m) por un automóvil, 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
3. Diseñar un algoritmo lea el nombre de un empleado, su salario básico por hora y el
número de horas trabajadas en el mes. Calcular su salario mensual e imprimir tanto
el nombre como su salario mensual.
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. Diseñar 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).
5. Diseñar un algoritmo que calcule el Área de un triángulo.
6. Diseñar un algoritmo que calcule el Área de un círculo.
11
7. Diseñar un algoritmo que permita convertir grados a radianes y diseñar otro
algoritmo que convierta de radianes a grados. Dar a conocer el resultado de dichas
conversiones.
Radianes = ¶/180 X grados
Grados = 180/¶ X radianes
8. Diseñar un algoritmo que lea un número de pies y calcule e imprima su equivalente
en yardas, pulgadas, centímetros
1 pie = 12 pulgadas
1 yarda = 3 pies
1 pulgada = 2.54 cm
1 metro = 100 cm
9. Diseñar un algoritmo que lea una cantidad de horas e imprima su equivalente en
segundos, minutos y días.
10. Diseñar un algoritmo que lea la cantidad de dólares que se va a comprar y el tipo
de cambio en pesos (costo de un dólar en pesos). Calcular e imprimir la cantidad
que se debe pagar en pesos por la cantidad de dólares indicada.
[1] Leobardo López Román. Metodología de la Programación. Segunda Edición. Alfaomega.
[2] Luis Joyanes Aguilar, Luis Rodríguez Baena y Matilde Fernández Azuela. Fundamentos
de Programación. 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 relación que existe entre ella y los datos que puede manejar cualquier
programa que se ejecutará en dicha computadora.
5.1. Localidades (tamaño y dirección)
La memoria es una de las partes internas más importantes de la computadora. Está formada
por un conjunto de circuitos electrónicos en la cual se almacena el programa que está en
ejecución, los datos que requiere para trabajar así como los resultados obtenidos. Dado que
está formada por circuitos electrónicos, éstos requieren energía eléctrica para trabajar, por lo
tanto, cuando la energía se desconecta (o se apaga la computadora) lo almacenado en la
memoria desaparece. A lo anterior se le llama memoria volátil.
La memoria está compuesta por localidades, todas ellas del mismo tamaño. Una localidad es
un espacio físico 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 rectángulo
representa una posición de memoria y cada uno de ellos su tamaño es idéntico a los demás.
localidad
dirección
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 posición de memoria se puede almacenar un dato. En la parte derecha del dibujo
existe una serie de números consecutivos que inician en 0 y concluyen en n. Dicho número se
utiliza para identificar cada una de las posiciones de memoria y diferenciarla de las demás. A
dicho número se le denomina dirección. Así por ejemplo: la posición marcada con 9 es la
dirección 9 en la cual se puede almacenar un dato, 5 es otra y n-2 es otra dirección de
memoria. La capacidad de memoria de una computadora está limitada por los circuitos
electrónicos que conforman dicha memoria. Es obvio pensar que una computadora que tiene
más capacidad de memoria es más costosa que otra que tenga menos, debido que posee más
circuitos electrónicos 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 dirección
máxima. Así por ejemplo, si una computadora tiene 230 localidades de memoria
(1073‟741,824) en realidad tiene una capacidad de 1 Gigabyte. Dicha capacidad, en la
actualidad es suficiente para una computadora portátil pequeña.
Como se mencionó, un programa de computadora, para trabajar con sus datos y obtener
resultados utiliza direcciones de memoria (números) para almacenar dichos datos. Para las
personas es más difícil aprender números que aprender nombres. Por esa razón en los
programas de computadora no será necesario utilizar direcciones de memoria tales como son
(números), 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 líneas de código del
programa para hacer referencia a los datos almacenados en la memoria.
5.2. Tipos de datos
Para cualquier programa, existen diversos tipos de datos, entre los cuales los más utilizados
son numéricos, caracteres y cadenas. Otros mas que se utilizan con menos frecuencia pero que
son muy importantes son los lógicos y punteros entre otros (también estos datos se aprenderán
en una materia de primer semestre). Para efectos de facilitar la comprensión de estos temas
solamente se hará mención de números sin fracción (todos enteros).
Los datos numéricos, como su nombre lo dice son números, mismos que pueden ser de varios
tipos.
Si se habla de la edad de una persona, pues se utiliza un número 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 mecánico, en el cual para facilitar la
administración del propio taller a cada empleado que trabaja ahí se le asigna un número, si el
taller tiene muy pocos empleados (menos de 100), pueden usarse números de 1 a 99.
Si ahora se considera el dinero que maneja el propio taller mecánico para cobro de las
reparaciones, es posible que una reparación llegue cerca de los 100,000 pesos, entonces aquí
se utilizan números más grandes, que quizás puedan llegar a ser hasta 99,999 pesos.
Otro ejemplo diferente puede ser para aplicaciones de los astrónomos que manejan distancias
de millones de kilómetros. En este caso se usarán número más grandes.
14
Existen datos considerados como tipo carácter, mismo que se explican aquí. Haciendo
referencia al taller mecánico 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 desempeñar, como pueden ser velador, recepcionista, contador, mecánico,
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 cambio para manipular el nombre de la persona, es necesario utilizar un conjunto de letras
para que pueda almacenarse nombre, apellido paterno y materno. Quizás puedan ser necesario
40 caracteres para que haya espacio para almacenar nombres muy largos. Para este tipo de
datos se puede usar una cadena de caracteres. De la misma manera, debe usarse un dato tipo
cadena de caracteres para manejar el puesto que desempeña. Pero en este caso, la cadena que
se use en el nombre de la persona será más larga (porque tiene más letras) que para el puesto.
En conclusión, dependiendo del problema se identifican los datos y para cada dato debe
identificarse que tipo es, según sus valores posibles.
Ahora surge la pregunta, ¿Cómo 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 dirección 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 dirección de
memoria para la variable s, en este caso se supone que es la dirección 8. El programador no
necesita saber que en la dirección 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 dirección 9. Entonces significa que no es necesario que el
programador conozca que en la dirección 9 (posición 9) se almacena la letra correspondiente
al sexo.
En conclusión, para cada tipo de datos que maneja el programa se utiliza una variable y cada
variable representa una posición de memoria en la cual se almacena el dato.
5.3. Asignación
Asignación es un proceso muy importante que sucede dentro de la computadora, en él
intervienen varios elementos físicos y lógicos. Para explicarlo, considerar el que se desea
calcular el área de un triángulo. Para ello, se requieren tres variables: a, b y h de acuerdo a lo
siguiente: a representa el área del triángulo, b es una variable que representa el valor de la
base y h que se usará para representar la altura.
El hecho de que esas tres variables se utilicen en un programa que haga el cálculo, significa
que hay una dirección de memoria en la cual se almacenará el valor de b, en otra el valor de h
y una más (para la variable a ) para almacenar el resultado, sin embargo en el programa se
usarán las variables que pueden tener valores diferentes cada vez que se ejecute el programa.
15
La expresión que calcula el área es la siguiente:
b*h/2
Esa expresión 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 expresión es necesario
almacenarlo en la memoria mientras el programa sigue en ejecución. La necesidad de
almacenarlo es para usarlo posteriormente, por ello se definió una localidad de memoria
llamada a. la ecuación queda de la siguiente manera:
a = b*h/2
Matemáticamente se dice que a es igual al resultado de la expresión. Desde el punto de vista
de un programa de computadora en realidad es una instrucción que se llama asignación.
Técnicamente asignación consiste en almacenar un valor en una variable, ese valor puede ser
el resultado de una expresión, una constante o el valor de otra variable. Ejemplos:
X = Y
L = 18
En el primer ejemplo se asigna el valor de Y a la variable X, el segundo se asigna el valor 18 a
la variable L.
Se concluye que la asignación es en sí el almacenar un valor en la memoria representado por
la variable escrita del lado izquierdo del signo igual.
16
6. DECISIONES
Las estructuras lógicas selectivas se encuentran en la solución algorítmica de casi todo tipo de
problemas. Se utilizan cuando en el desarrollo de la solución de un problema se debe tomar
una decisión, para establecer un proceso o señalar un camino alternativo a seguir.
Esta toma de decisión se basa en la evaluación de una o más condiciones que señalarán 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.
Figura 6.1 Laberinto 1
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 Inducción en el Tecnológico.
18
6.1. Operadores relacionales
Los operadores relacionales son operadores que permiten comparar dos operandos. Los
operandos pueden ser números, alfanuméricos, constantes o variables. Las constantes o
variables a su vez, pueden ser de tipo entero, real, carácter o cadena de caracteres. El resultado
de una expresión con operandos relacionales es verdadero o falso.
En la tabla 6.1 se presentan los operadores relacionales, la operación que pueden realizar, un
ejemplo de su uso y el resultado de dicho ejemplo.
OPERADOR
==
<>
<
>
<=
>=
OPERACIÓÓN
Igual que
Diferente a
Menor que
Mayor que
Menor o igual que
Mayor o igual que
EJEMPLO
„hola‟ = = „lola‟
„a‟ <> „b‟
7 < 15
11 > 22
15 <= 22
20 >=35
RESULTADO
FALSO
VERDADERO
VERDADERO
FALSO
VERDADERO
FALSO
Tabla 6.1 Operadores Relacionales
Nótese que las expresiones matemáticas de mayor o igual que y menor o igual que se escriben
utilizando los símbolos de mayor o menor seguidos de un igual (>=, <=).
La evaluación de una comparación da lugar a un resultado de verdadero o falso. Este resultado
puede servir de base para tomar una decisión, pero también puede almacenarse en una variable
booleana. Por 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.
En la tabla 6.2 se muestra un ejemplo de distintas expresiones de comparación entre dos
variables A y B, suponiendo los siguientes valores A = 2 y B =7.
EXPRESIÓN
A>B
A<B
A >= B
A <= B
B>A
A–B>0
A+B>0
Res = A > B
(A / B) * B <> A
A <> B
A==B
EVALUACIÓN
Falso
Verdadero
Falso
Verdadero
Verdadero
Falso
Verdadero
Falso es almacenado en la variable Res
No es factible de evaluar
Verdadero
Falso
Tabla 6.2 Ejemplo de aplicación de los operadores relacionales
19
Se ha dejado una expresión sin evaluación aunque la computadora le asignará un valor:
verdadero o falso. Lo que no es tan inmediato es decir qué opción será la que aplique.
Depende de factores como la prioridad de las operaciones, el número de decimales, etc.
Si se piensa en que una computadora, a efectos matemáticos, funciona como una calculadora,
se puede hacer en la casa la siguiente experiencia:
1.
Con una calculadora no científica, dividir 2 entre 7. Una calculadora con 8 dígitos
devuelve el resultado con 7 decimales como 0,2857142. A continuación se multiplica el
resultado por 7 y se obtiene 1,9999994.
2.
Con una calculadora más avanzada se puede obtener un resultado de 2/7 con más
decimales y un valor final igual a 2. Pero con esta misma calculadora se puede dividir 1
entre 3, obtener un valor 0,3 periódico y luego multiplicar por 3 para obtener
0,999999999.
(A / B) * B se tiene claro que es igual a A. Por ejemplo (2/7) * 7 = 2. Pero una
computadora podría devolver un resultado (2/7) * 7 = 1,999. Con lo cual se diría que (A /
B) * B es distinto de A.
En definitiva, una computadora no trabaja con infinitos decimales y puede dar lugar a
resultados inesperados. Estos casos habrán de ser previstos por el programador, que tomará las
medidas que estime convenientes. La forma de operar de las computadoras o las características
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
1. Suponiendo que P tiene el valor de 5 y Q el valor de 3.
La expresión a evaluar es P > Q si se sustituyen los valores la expresión queda 5 >3, al
evaluar esta expresión da el valor de VERDADERO.
La siguiente expresión a evaluar es P < Q, la expresión es 5 < 3, al evaluarla el resultado es
FALSO.
20
2. Si se evalúa una expresión más larga quedaría 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
6.2. Operadores lógicos
Los operadores lógicos son operadores que permiten formular condiciones complejas a partir
de condiciones simples. Los operadores lógicos son de conjunción (y), disyunción (o) y
negación (no). En la tabla 6.3 se presenta el operador lógico, la expresión lógica y significado
de dicha expresión, teniendo en cuenta la jerarquía correspondiente.
OPERADOR
LÓGICO
JERARQUÍA
NO
(mayor)
Y
(menor)
O
EXPRESIÓN
LÓGICA
SIGNIFICADO
No P
NO P
No es cierto que P
Es FALSO que P
PyQ
P sin embargo Q
PoQ
PoQ
o P o Q o ambas
Mínimo P o Q
Tabla 6.3 Operadores Lógicos
En la tabla 6.4 se presenta la tabla de verdad de los operadores lógicos.
P
Q
~P
~Q
PoQ
PyQ
VERDADERO
VERDADERO
FALSO
FALSO
VERDADERO
FALSO
VERDADERO
FALSO
FALSO
FALSO
VERDADERO
VERDADERO
FALSO
VERDADERO
FALSO
VERDADERO
VERDADERO
VERDADERO
VERDADERO
FALSO
VERDADERO
FALSO
FALSO
FALSO
Tabla 6.4 Tabla de Verdad de los Operadores Lógicos
21
En resumen:
Los operadores lógicos combinan condiciones, según el tipo de operador se deberá cumplir
una u otra función. En la tabla 6.5 se describe el significado de los operadores.
OPERADOR
AND
OR
NOT
SIGNIFICADO
Almacenara True, sólo si todos las condiciones son verdaderas
Almacenara True, sólo si alguna de las condiciones es verdadera
Cambia el valor al contrario
Tabla 6.5 Significado de los operadores lógicos
Ejemplos
Para entender mejor el para qué sirven estos operadores se presentan unos ejemplos y su
resolución:
1. Evaluamos varias expresiones compuestas
(5 > 3)
y
VERDADERO y FALSO
Resultado: FALSO
(8 < 4)
(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
((9 +
((9 +
(17 <
* (5-3)) < (10/2+20)) O (((8 * 3+12) –5 * 4) > (7 * 4/2))
4 * 2) < (5 + 20)) O (((24 + 12) – 20) > (28 / 2))
8) < 25) O ((36 – 20) > 14)
25) O (16 > 14)
VERDADERO O VERDADERO
Resultado: VERDADERO
6.3. Decisiones simples
Una decisión 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 condición es verdadera y la otra rama si la misma condición es falsa.
La decisión selecciona la salida según los datos de entrada.
La estructura si – entonces, evalúa la condición y en tal caso: si la condición es verdadera,
entonces ejecuta la acción Si (o acciones si son varias). Si la condición es falsa, entonces no se
hace nada.
Ejemplos
1.
Construir un algoritmo tal, que dado como dato la calificación de un alumno en un
examen, escriba “Aprobado” en caso que esa calificación fuese mayor que 6.
Proceso Calificaciones
Leercal;
Sical> 6 Entonces
Escribir “Aprobado”;
FinSi
FinProceso
2.
Dado como dato el sueldo de un trabajador, aplíquele 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:



Dado un número, imprimir si es positivo.
Dado un número, imprimir si es par.
Dado un número, imprimir si su cuadrado es mayor que 100.
6.4. Decisiones anidadas (complejas)
Las decisiones a veces tienen más de un camino, es decir cuando se tienen dos opciones de
alternativas de acción 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:
1.
Al tener dos números y comparar cuál de ellos es el mayor.
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.
A esto se le denominan “decisiones anidadas”.
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. Además 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 más de 50 horas, las horas se deben pagar triple.
Como datos de entrada se requiere:
horastrabajadas, sueldoporhora
24
Como datos de salida:
sueldo, sueldodoble, sueldotriple
Para el proceso:
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 además de cada vía posible se tienen otras posibles soluciones u opciones para
elegir una sola alternativa para resolver el problema.
Ejercicios propuestos:



Calcular el valor de X y Y, teniendo como entrada el valor de X y calculando el de Y de
acuerdo con las siguientes condiciones:
Si X< 0 entonces Y = 3X + 6
Si X> = 0 entonces Y = X 2 + 6
Calcular e imprimir el precio de un terreno del cual se tienen los siguientes datos:
largo, ancho y precio por metro cuadrado. Si el terreno tiene más de 400 metros
cuadrados se hace un descuento de 10%.
Calcular el costo de un pedido de un artículo del cual se tiene la descripción, la
cantidad pedida y el precio unitario. Si la cantidad pedida excede de 50 unidades, se
hace un descuento de 15%.
25
6.5. Decisiones múltiples
Cuando se tienen más de dos opciones alternativas de acción, 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 acción o
acciones correspondientes y se finaliza con la selección.
Ejemplo: leer el número de día y presentar el día correspondiente.
Proceso DiaSemana
Definir dia como entero;
Leer dia;
Según dia Hacer
1: Escribir
“Domingo”;
2: Escribir
“Lunes”;
3: Escribir
“Martes”;
4: Escribir
“Miércoles”;
5: Escribir
“Jueves”;
6: Escribir
“Viernes”;
7: Escribir
“Sábado”;
De otro modo: Escribir “Dato erróneo”;
FinSegun
FinProceso
Ejercicios propuestos:

En un almacén de venta de trajes, si se compra uno se hace el 50% de descuento, si se
compran dos, se hace el 55%, si se compran 3, el 60% y si se compran más de 3 el
65%. Solicitar la cantidad de trajes a comprar además del precio unitario. Como salida,
escribir el subtotal por pagar, el descuento y el total por pagar.

Leer los datos de un empleado (nombre, tipo de empleado y sueldo), calcule el
incremento de sueldo y su nuevo sueldo de acuerdo a lo siguiente: si es tipo de
empleado 1 se le aumentará el 5%, si es tipo 2 se le aumentará 7%, si es tipo 3 el 9%,
si es tipo 4 el 12% y si es tipo 5 el 15%. Como resultado, escribir el nombre, tipo de
empleado y el nuevo sueldo
26
6.6. Ejercicios
Resuelve los siguientes 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 sólo el número mayor de dos números leídos.
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 admisión. El promedio mínimo es de 85.
Ejemplo: Promedio de la Preparatoria 85, calificación del examen de admisión 80, el
promedio es 82.5000 por lo tanto NO es admitido.
7. Presionar una tecla y escribir que tipo de tecla es, mayúscula, minúscula, dígito o
carácter especial.
8. Introducir los segundos y escribir a cuantas horas, minutos y segundos equivale.
9. Escribir a qué mes corresponde en número. Por ejemplo: número de mes 3 y equivale
al mes de Marzo.
10. Escribir qué tipo de alumno es según su calificación, 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
7.1.
Ciclos contados
Ciclo PARA
Este ciclo es uno de los más usados para repetir una instrucción o conjunto de instrucciones,
sobre todo cuando se conoce la cantidad exacta de veces que se quiere que se ejecute una o
más instrucciones.
Su formato general es:
Para<variable> = <inicial>Hasta<final>Con Paso<paso>Hacer
<Instrucción(es)>
FinPara
Las instrucciones dentro de un ciclo resuelve el problema de repetir todo el programa o cierta
parte del programa más de una vez, ya que estas instrucciones se repiten cada vez en cada
pasada del ciclo.
Analizando este ciclo en cada una de sus partes:






La palabra Para indica que se realizaran una serie de instrucciones repetitivas.
El valor inicial se almacena en la variable.
Mediante la palabra Hasta vamos a indicar la cantidad de veces que se repetirán las
instrucciones.
Con Paso indicamos los cambios que aplicaremos a la variable que se evalúa en el
Hasta
Usando la palabra Hacer indicamos el comienzo de las instrucciones que necesitamos
se repitan
Y la palabra FinPara la utilizamos para indicar que es el fin de las instrucciones y el
fin de este ciclo.
Con el buen uso de este ciclo Para logramos que nuestros programas sean de una menor
cantidad de líneas y el tamaño del mismo al guardarlo sea también menor, por ejemplo si
necesitamos pedir el nombre dirección y teléfono de 45 personas tendríamos que poner 45
instrucciones para leer el nombre, otras 45 para pedir la dirección, y otro tanto igual para pedir
el teléfono, si hacemos uso de este ciclo solamente ponemos tres instrucciones que se repitan
45 veces y nuestro programa es mucho menor que el que resultaría de repetir las 3
instrucciones para cada una de las 45 personas.
28
Ejemplos del ciclo Para
Ejemplo Uno:
En este ejemplo calcularemos el promedio de una lista de N datos
Proceso Promedio
Escribir "Ingrese la cantidad de datos:"
Leer n
acum=0
Para i=1 Hasta n Hacer
Escribir "Ingrese el dato ",i,":"
Leer dato
acum=acum+dato
FinPara
prom = acum/n
Escribir "El promedio es: ",prom
FinProceso
Ejemplo Dos:
En este ejemplo calcularemos la sumatoria de una lista de N datos
Proceso Sumatoria
Escribir "Ingrese la cantidad de datos:"
Leer n
suma=0
Para i=1Hasta n Hacer
Escribir "Ingrese el dato ",i,":"
Leer dato
suma=suma+dato
FinPara
Escribir "La sumatoria es: ", suma
FinProceso
29
Ejercicio a desarrollar:
Anotar las líneas de código necesarias para obtener el valor factorial de un x número.
Ejemplo factorial de 5 = 120 puesto que:
Valor del x = 5
5-1=4 y se multiplican
5x4=20
El resultado se multiplica por 3
20*3=60
El resultado se multiplica por 2
60 * 2 =120
Y el resultado se multiplica por uno y nos da el mismo resultado
Obsérvese que el valor de x se multiplica por x-1,x-2,x-3 y así consecutivamente, o sea las
veces que se multiplica es el valor de x-1.
7.2.
Ciclos condicionados
Ciclo Mientras
La instrucción Mientras ejecuta una secuencia de instrucciones mientras una condición sea
verdadera.
Mientras<condición>Hacer
<instrucciones>
FinMientras
<condicion>: Permite que se realicen las instrucciones mientras que la condición sea
verdadera.
<instrucciones>: Representa el conjunto de actividades a realizar.
30
Ejemplo 1
Si se quiere adquirir un refresco, que cuesta 9 pesos, de una máquina despachadora de
refrescos y se cuenta con puras monedas de un peso, el proceso sería el siguiente.
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 través 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 números 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 cálculo de la suma de los números impares comprendidos entre el 0 y el 100
o Se requiere mostrar y contar los múltiplos 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.
Ciclo Repetir… hasta que ( Do… while)
El ciclo, Repetir… hasta que, es otra estructura de
repetición de instrucciones que se utiliza en los
casos en que no se sabe con exactitud cuántas
veces se han de repetir las instrucciones del ciclo,
pero se sabe que dichas instrucciones se ejecutarán
al menos por una vez. La figura 7.1 muestra la
estructura del ciclo. En esta estructura se tiene un
conjunto de instrucciones que son las actividades
del ciclo y al final se incluye una instrucción,
llamada Condición, que cuando se cumple, indica
en qué momento se debe terminar el ciclo de
repeticiones.
Instrucciones
Falso
Condición
Verdadero
Figura 7.1
Fin del ciclo
32
En el cuerpo de las instrucciones debe haber alguna acción que cambie el estado de los
elementos que se evalúan en la Condición, para asegurar que el ciclo se terminará en algún
momento, de lo contrario se entraría 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 sería:
Repetir
Dar una vuelta a la pista trotando
Hasta que
Esté suficientemente cansado
Este caso se representa en la figura 7.2.El atleta,
al llegar a la pista, deberá inmediatamente dar al
Dar una vuelta a la pista trotando
1
menos una vuelta a la pista . Una vez que
terminó la primera vuelta se pregunta ¿Ya está
suficientemente cansado? Si la respuesta es
No
¿Suficientemente
negativa entonces el atleta repetirá la instrucción
cansado?
“Dar una vuelta a la pista trotando”, y así
sucesivamente, hasta que la respuesta a la
Sí
Figura 7.2
pregunta sea afirmativa, con lo que se termina el
ciclo y se pasa a la siguiente instrucción, tal vez ir a tomar una ducha.
Ejercicios:




Diseñar un código para sumar los números naturales consecutivos a partir del número
n dado por el usuario, hasta que la suma alcance al menos el valor k, también dado por
el usuario, para k > n.
Diseñar un código de un programa que permita leer una cadena de caracteres hasta que
se introduzca un espacio en blanco.
Diseñar un código que permita a una estación de gasolina, bombear el combustible
hasta que se alcance la cantidad de litros ordenada por el cliente.
Diseñar un código para un guardia de seguridad en la puerta de un antro, que permita
el acceso de clientes hasta que se alcance el límite de clientes permitido por protección
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 Pseudocódigo utilizado en el diseño 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 conformarán el algoritmo de solución y que es
necesario diseñar para garantizar que el resultado sea el esperado.
Existen diversas formas de describir y diseñar un algoritmo, partiendo de una simple narración
de paso o yéndonos al uso de palabras prediseñadas (pseudopalabras) que se asocien con las
instrucciones de la computadora llamadas pseudocódigos, aunque de manera gráfica también
podemos diseñar un algoritmo haciendo uso de diagramas de flujo, diagramas de N-S (NassiSchneiderman), Diagramas de Warnier, diagramas de actividades entre otros.
En este curso se tocará sólo el uso de pseudocódigo para el diseño de un algoritmo. Parte de su
sintaxis estará basada en herramienta PSeInt, la cual se puede encontrar en la página:
http://pseint.sourceforge.net/, y en el libro Metodología de la programación orientada a
objetos, segunda edición, de Leobardo López Román, de la editorial AlfaOmega.
Estructura básica
Todo algoritmo en pseudocógido bajo PSeInt tiene la siguiente estructura general:
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 más instrucciones, cada una terminada en punto y coma.
Cabe mencionar que en lugar de utilizarse la palabra proceso, es más común 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 diseñar. A continuación se
tiene la estructura general de un algoritmo sin seguir herramienta alguna:
34
Caso general
Algoritmo Nombre del algoritmo
Inicio
accion 1;
accion 1;
.
.
.
accion n;
FinAlgoritmo
Las acciones incluyen operaciones de entrada y salida, asignaciones de variables, estructuras
condicionales si-entonces o de selección múltiple y/o estructuras cíclicas mientras, repetir o
para.
Operadores y Funciones
Se dispone de un conjunto básico de operadores y funciones que pueden ser utilizados para la
construcción de expresiones más o menos complejas. Y las cuales se presentan en la tabla A.1
y en la tabla A.2.
Operador
Relacionales
>
<
=
<=
>=
Lógicos
&oY
|oO
~ o NO
Algebraicos
+
*
/
^
% o MOD
Significado
Ejemplo
Mayor que
Menor que
Igual que
Menor o igual que
Mayor o igual que
3>2
'ABC'<'abc'
4=3
'a'<='b'
4>=5
Conjunción (y).
Disyunción (o).
Negación (no).
(7>4) & (2=1) //falso
(1=1 | 2=1) //verdadero
~(2<5) //falso
Suma
Resta
Multiplicación
División
Potenciación
Módulo (resto de la división entera)
total <- cant1 + cant2
stock <- disp – venta
area <- base * altura
porc <- 100 * parte / total
sup <- 3.41 * radio ^ 2
resto <- num MOD div
Tabla A.1 Relación de operadores
35
La jerarquía de los operadores matemáticos es igual a la del álgebra, aunque puede alterarse
mediante el uso de paréntesis.
A continuación se listan las funciones integradas disponibles:
Función
Significado
RC(X)
Raíz Cuadrada de X
ABS(X)
Valor Absoluto de X
LN(X)
Logaritmo Natural de X
EXP(X)
Función 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 más cercano a X
AZAR(X)
Entero aleatorio entre 0 y X-1
Tabla A.2 Relación de funciones matemáticas
Comentarios
Dentro de un algoritmo también se pueden poner comentarios, lo que nos permite de alguna
manera ir documentando internamente nuestro pseudocódigo, para ello se utilizarán dos
diagonales juntas //.
Los comentarios se pueden introducir luego de una instrucción, o en líneas separadas. Todo lo
que precede a //, hasta el fin de la línea, no será tomado en cuenta al interpretar el algoritmo.
Declaración de variables y constantes
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 algún resultado es necesario definir variables que contendrán 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 declaración o definición antes de ser utilizadas dichas variables, para ello
se seguirá el formato siguiente:
Definir <variable>,<variable>, …,<variable> como <tipoDato>;
Definir <constante> = <valor>;
36
Ejemplo:
Definir nombre como cadena;
Definir TOTAL = 10;
Los tipos de datos más comunes son: numéricos (enteros, y reales), cadenas (delimitadas por
comilla), caracteres (delimitados por apostrofes), booleanos (verdadero y falso).
Asignación
La instrucción de asignación permite almacenar un valor en una variable. Es común utilizar
una flecha dirigida hacia a la izquierda para denotar la asignación como lo muestra tanto el
símbolo de la figura A.1 como la instrucción, pero para nuestro caso utilizaremos el símbolo
de igual (=).
Para el caso de PSeInt
<variable> <- <expresión> ;
<variable> <- <valor> ;
Para nuestro caso:
<variable> =<expresión> ;
<variable> = <valor> ;
Ejemplo:
a=10;
b=3.2;
res=12+2-b;
Al ejecutarse la asignación, primero se evalúa la expresión de la derecha y luego se asigna el
resultado a la variable de la izquierda. El tipo de la variable y el de la expresión deben
coincidir.
var = Expresión
Figura A.1 Símbolo Asignación
37
Entradas
La instrucción Leer permite ingresar información desde el ambiente.
Leer <variablel>, <variable2>, ...,<variableN> ;
Ejemplo:
Leer altura;
Leer altura, base;
Esta instrucción lee N valores desde el ambiente (en este caso el teclado) y los asigna a las N
variables mencionadas. Pueden incluirse una o más variables, por lo tanto el comando leerá
uno o más valores. La figura A.2 ilustra el símbolo que puede ser utilizado para la entrada de
datos.
Figura A.2 Símbolo Entrada de datos
Salidas
La instrucción Escribir permite mostrar valores al ambiente.
Escribir <exprl> , <expr2> , ... , <exprN> ;
Ejemplo:
Escribir “Dame tu nombre”;
Escribir “Esta es una impresión”;
Esta instrucción imprime al ambiente (en este caso en la pantalla) los valores obtenidos de
evaluar N expresiones. Dado que puede incluir una o más expresiones, mostrará uno o más
valores.
La figura A.3 ilustra el símbolo que puede ser utilizado para la salida de datos.
Figura A.3 Símbolo Salida de datos
38
Estructuras condicionales
Condicional Si-Entonces
La secuencia de instrucciones ejecutadas por la instrucción Si-Entonces-Sino depende del
valor de una condición lógica.
Si <condición>
Entonces
<instrucciones>
Sino
<instrucciones>
FinSi
Al ejecutarse esta instrucción, se evalúa la condición y se ejecutan las instrucciones que
correspondan: las instrucciones que le siguen al Entonces si la condición es verdadera, o las
instrucciones que le siguen al Sino si la condición es falsa. La condición debe ser una
expresión lógica, que al ser evaluada retorna Verdadero o Falso.
La cláusula Entonces debe aparecer siempre, pero la cláusula Sino puede no estar. En ese caso,
si la condición es falsa no se ejecuta ninguna instrucción y la ejecución del programa continúa
con la instrucción 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 símbolo que puede ser utilizado para definir una instrucción
condicional del tipo si-entonces-sino.
Figura A.4 Símbolo Condición si-entonces-sino
39
Selección Múltiple
La secuencia de instrucciones ejecutada por una instrucción Segun depende del valor de una
variable numérica.
Segun <variable> Hacer
<número1>: <instrucciones>
<número2>,<número3>: <instrucciones>
<...>
De Otro Modo: <instrucciones>
FinSegun
Esta instrucción permite ejecutar opcionalmente varias acciones posibles, dependiendo del
valor almacenado en una variable de tipo numérico. Al ejecutarse, se evalúa el contenido de la
variable y se ejecuta la secuencia de instrucciones asociada con dicho valor.
Cada opción está formada por uno o más números separados por comas, dos puntos y una
secuencia de instrucciones. Si una opción incluye varios números, la secuencia de
instrucciones asociada se debe ejecutar cuando el valor de la variable es uno de esos números.
Opcionalmente, se puede agregar una opción final, denominada De Otro Modo, cuya
secuencia de instrucciones asociada se ejecutará sólo 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 número que corresponde al día de la semana”;
Leer dia;
Según dia Hacer
1: Escribir “Lunes”;
2: Escribir “Martes”;
3: Escribir “Miércoles”;
:
7: Escribir “Domingo”;
De Otro Modo: Escribir “Dato erróneo”;
FinSegun
FinProceso
40
La figura A.5 ilustra el símbolo que puede ser utilizado para definir una instrucción de
selección o condición múltiple.
Figura A.5 Símbolo Selección (o condición) Múltiple
Estructuras cíclicas
Ciclo Mientras
La instrucción Mientras ejecuta una secuencia de instrucciones mientras una condición sea
verdadera.
Mientras <condición> Hacer
<instrucciones>
FinMientras
Al ejecutarse esta instrucción, la condición es evaluada. Si la condición resulta verdadera, se
ejecuta una vez la secuencia de instrucciones que forman el cuerpo del ciclo. Al finalizar la
ejecución del cuerpo del ciclo se vuelve a evaluar la condición y, si es verdadera, la ejecución
se repite. Estos pasos se repiten mientras la condición 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 condición resulta ser falsa.
Hay que tener cuidado con lo siguiente: si la condición siempre es verdadera, al ejecutar esta
instrucción se produce un ciclo infinito. A fin de evitarlo, las instrucciones del cuerpo del ciclo
deben contener alguna instrucción que modifique la o las variables involucradas en la
condición, de modo que ésta sea falsificada en algún momento y así finalice la ejecución del
ciclo.
Ejemplo:
La figura A.6 ilustra el símbolo que puede ser utilizado para definir una instrucción de tipo
cíclica, para este caso del ciclo Mientras.
Figura A.6 Símbolo Ciclo Mientras
Ciclo Repetir
La instrucción Repetir-Hasta Que ejecuta una secuencia de instrucciones hasta que la
condición sea verdadera.
Repetir
<instrucciones>
Hasta Que <condición>
Al ejecutarse esta instrucción, la secuencia de instrucciones que forma el cuerpo del ciclo se
ejecuta una vez y luego se evalúa la condición. Si la condición es falsa, el cuerpo del ciclo se
ejecuta nuevamente y se vuelve a evaluar la condición. Esto se repite hasta que la condición
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 condición se evalúa al final, las instrucciones del cuerpo del
ciclo serán ejecutadas al menos una vez.
Además, a fin de evitar ciclos infinitos, el cuerpo del ciclo debe contener alguna instrucción
que modifique la o las variables involucradas en la condición de modo que en algún momento
la condición sea verdadera y se finalice la ejecución del ciclo.
La figura A.7 ilustra el símbolo que puede ser utilizado para definir una instrucción de tipo
cíclica, para este caso del ciclo Repetir.
Figura A.7 Símbolo Ciclo Repetir
Ciclo Para
La instrucción Para ejecuta una secuencia de instrucciones un número determinado de veces.
Para <variable> = <inicial> Hasta <final> ( Con Paso <paso> )
Hacer
<instrucciones>
FinPara
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 evalúa 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 cláusula 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 símbolo que puede ser utilizado para definir una instrucción de tipo
cíclica, para este caso del ciclo Para.
Figura A.8 Símbolo Ciclo Para
44