You are on page 1of 46

Toshiba

INSTITUTO TECNOLGICO DE CD.GUZMN

CURSO TALLER DE INTRODUCCIN


A LA ING. EN SISTEMAS
COMPUTACIONALES
INTRODUCCIN A LA PROGRAMACIN

OBJETIVO Desarrollar en el aspirante sus habilidades Lgicas


que se aplican a la solucin de los problemas
susceptibles de ser computarizados

ACADEMIA DE ING. EN SISTEMAS COMPUTACIONALES


Agosto 2014
NDICE

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.

En el captulo denominado introduccin 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 captulo 3 (expresiones) se aprender como escribir cualquier expresin matemtica en


un formato que se utiliza en la computadora, y que usa la mayora de los lenguajes de
programacin de computadoras.

En el captulo de algoritmia, se aprender el concepto de algoritmo, sus partes y la forma de


representar la solucin de un problema usando algoritmos.

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 6 llamado decisiones se aprender a identificar las bifurcaciones que son


necesarias incluir en la solucin de los problemas y la forma de escribirlas en los algoritmos.

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

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 jamn. Qu
hacemos primero? Podramos poner el jamn antes de untar la mayonesa en el pan? Por
supuesto que no, entonces, cules seran los pasos a seguir para preparar dicha torta y
podrnosla 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 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.

2.1.2. Hacer quesadillas

Los pasos necesarios para preparar unas quesadillas, pueden ser los siguientes:

1. Sacar tortillas y queso.


2. Sacar sartn o comal.
3. Calentar sartn o comal.
4. Cortar el queso.
5. Calentar las tortillas.
6. Agregar a la tortilla la cantidad suficiente de queso.
7. Doblar por la mitad.
8. Esperar a que se derrita el queso.
9. Sacar del sartn o comal.
10. Servir y disfrutar.

2
2.1.3. Cambiar un foco

Qu se necesita para cambiar un foco fundido?

1. Sita la escalera debajo del foco fundido.


2. Elige el foco nuevo igual que el anterior.
3. Sube por la escalera hasta alcanzar el foco.
4. Gira el foco fundido en contra de las manecillas del reloj hasta quitarlo.
5. Ubica el nuevo foco en el mismo lugar donde se quit el anterior.
6. Enrosca el foco hasta que quede fijo.
7. Baja de la escalera y retrala.
8. Prende la luz.

En ejemplos como ste se pueden identificar las caractersticas 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 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?

2.2. Definicin de problemas

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.

2.2.1. Leer y comprender el problema

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).

2.2.2. Identificar entradas

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.

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 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.

2.2.4. Identificar proceso

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.

2.2.5. Identificar datos

Tambin 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 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.

3.1. Operadores aritmticos

La tabla 3.1 muestra los operadores aritmticos que se pueden utilizar para realizar
operaciones aritmticas:

Operador Significado Ejemplo Resultado


+ Suma a+b Suma de a y b
- Resta ab Resta de a y b
* Multiplicacin a*b Producto de a por b
/ Divisin a/b Cociente de a por b
mod Mdulo a mod b Resto de a entre b
Tabla 3.1 Operadores aritmticos
En donde:
1. Los operadores aritmticos +, -, * 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 nmeros enteros, aunque algunos
lenguajes permiten la operacin con nmeros reales.

Nota:

Si operador1 es 0, el resultado de / o mod no est definido.


Si operador2 es negativo, el resultado de la operacin mod es negativo.

Ejemplos:

Expresin Resultado Expresin Resultado


7 mod 2 1 -15 mod 6 -3
12 mod 3 0 3 mod 5 3
0 mod 5 0 -15 mod -7 -1

3.2. Expresiones matemticas

Una expresin matemtica es un conjunto de datos o funciones unidos por operadores


aritmticos.

FORMATO: variable = expresin

5
En donde:

Variable Es el nombre de la variable en la que se asignar el resultado de la expresin.


Expresin Es un valor constante o una variable o una expresin algebraica o frmula
(para calcular un valor) El cual se le asigna a la variable que est a la izquierda
del smbolo =.
= Es el smbolo que indica la asignacin del valor de expresin a la variable.

3.3. Jerarqua de operadores

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

Deber escribirse como:

n = (x+y) / (y-1)

La computadora examina toda la expresin y va evaluando cada componente de acuerdo a


cierto orden de precedencia que tienen las operaciones aritmticas:

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:

1. 4+2*5 Primero la multiplicacin;


despus, la suma
4 + 10

14

2. 23 * 2 / 5 De izquierda a derecha por la


regla asociativa
46 / 5

3. 3 + 5 * ( 10 (2 + 4) ) primero parntesis mas interno


3 + 5 * ( 10 6) segundo parntesis
3+5*4 multiplicacin
3 + 20 suma
23

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

Escritura de frmulas matemticas

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

3.4. Funciones matemticas


Para facilitar el clculo matemtico, todos los lenguajes de programacin cuentan con
funciones matemticas incluidas en su biblioteca de funciones. En la tabla 3.3 se listan algunas
las funciones cuya sintaxis est basada en la herramienta PSInt.

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

REDON(X) Entero ms cercano a X

Tabla 3.3 Funciones matemticas de PSInt

8
Ejemplos:

= a = b RC(c)
=|| b = ABS(a)
= () y = SEN ( X )

3.5. Expresiones matemticas combinadas con funciones matemticas

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

3.6. Ejercicios de evaluacin de expresiones

1.- Cul es el valor de cada una de las siguientes expresiones?

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)

2.- Escribir las siguientes expresiones matemticas como expresiones de computadoras


a. + 1 b. c.
+ 14
+
d. e. + f.

2 2
+
h. [( + )] i. ( + )2 ( )
g.

9
4. ALGORITMIA

La Algoritmia es la ciencia que estudia tcnicas para disear algoritmos eficientes y


evaluar la eficacia de un algoritmo.

4.1 Definicin de algoritmo y caractersticas

Un algoritmo es una secuencia ordenada y cronolgica de pasos que llevan a la


solucin de un problema o a la ejecucin de una tarea o actividad[1].

La definicin de un algoritmo debe describir tres partes: Entrada, Proceso y Salida.

Las caractersticas principales que debe cumplir un algoritmo son:

Debe ser preciso. Indicar el orden de realizacin 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 algn momento, es decir
tener un nmero finito de pasos.

4.2 Diseo del algoritmos con pseudocdigos

Ver anexo A.

4.3 Proceso de un programa en la computadora

El proceso de resolucin del problema, incluye el anlisis del problema as como el


diseo y verificacin del algoritmo.

1. Anlisis del problema


a. Definicin del problema
b. Datos de entrada
c. Proceso
d. Salida
2. Diseo del algoritmo
3. Verificacin del algoritmo
4. Codificacin del algoritmo
5. Ejecucin del programa
6. Verificacin del programa

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

3. Disear un algoritmo lea el nombre de un empleado, su salario bsico por hora y el


nmero 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. 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).

5. Disear un algoritmo que calcule el rea de un tringulo.

6. Disear un algoritmo que calcule el rea de un crculo.

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

8. Disear un algoritmo que lea un nmero de pies y calcule e imprima su equivalente


en yardas, pulgadas, centmetros
1 pie = 12 pulgadas
1 yarda = 3 pies
1 pulgada = 2.54 cm
1 metro = 100 cm

9. Disear un algoritmo que lea una cantidad de horas e imprima su equivalente en


segundos, minutos y das.

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.

[1] Leobardo Lpez Romn. Metodologa de la Programacin. Segunda Edicin. Alfaomega.

[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.

5.1. Localidades (tamao y direccin)

La memoria es una de las partes internas ms importantes de la computadora. Est formada


por un conjunto de circuitos electrnicos en la cual se almacena el programa que est en
ejecucin, los datos que requiere para trabajar as como los resultados obtenidos. Dado que
est formada por circuitos electrnicos, stos requieren energa elctrica para trabajar, por lo
tanto, cuando la energa se desconecta (o se apaga la computadora) lo almacenado en la
memoria desaparece. A lo anterior se le llama memoria voltil.

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.

5.2. Tipos de datos

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 cambio para manipular el nombre de la persona, es necesario utilizar un conjunto de letras


para que pueda almacenarse nombre, apellido paterno y materno. Quizs 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 desempea. Pero en este caso, la cadena que
se use en el nombre de la persona ser ms larga (porque tiene ms letras) que para el puesto.

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

Asignacin es un proceso muy importante que sucede dentro de la computadora, en l


intervienen varios elementos fsicos y lgicos. Para explicarlo, considerar el que se desea
calcular el rea de un tringulo. Para ello, se requieren tres variables: a, b y h de acuerdo a lo
siguiente: a representa el rea del tringulo, 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 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

Matemticamente se dice que a es igual al resultado de la expresin. Desde el punto de vista


de un programa de computadora en realidad es una instruccin que se llama asignacin.
Tcnicamente asignacin consiste en almacenar un valor en una variable, ese valor puede ser
el resultado de una expresin, 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 asignacin 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 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.

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 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.

OPERADOR OPERACIN EJEMPLO RESULTADO


== Igual que hola = = lola FALSO
<> Diferente a a <> b VERDADERO
< Menor que 7 < 15 VERDADERO
> Mayor que 11 > 22 FALSO
<= Menor o igual que 15 <= 22 VERDADERO
>= Mayor o igual que 20 >=35 FALSO
Tabla 6.1 Operadores Relacionales
Ntese que las expresiones matemticas de mayor o igual que y menor o igual que se escriben
utilizando los smbolos de mayor o menor seguidos de un igual (>=, <=).

La evaluacin de una comparacin da lugar a un resultado de verdadero o falso. Este resultado


puede servir de base para tomar una decisin, pero tambin 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 comparacin entre dos


variables A y B, suponiendo los siguientes valores A = 2 y B =7.

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

Tabla 6.2 Ejemplo de aplicacin de los operadores relacionales


19
Se ha dejado una expresin sin evaluacin aunque la computadora le asignar un valor:
verdadero o falso. Lo que no es tan inmediato es decir qu opcin ser la que aplique.
Depende de factores como la prioridad de las operaciones, el nmero de decimales, etc.

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.

2. Con una calculadora ms avanzada se puede obtener un resultado de 2/7 con ms


decimales y un valor final igual a 2. Pero con esta misma calculadora se puede dividir 1
entre 3, obtener un valor 0,3 peridico 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 podra devolver un resultado (2/7) * 7 = 1,999. Con lo cual se dira 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 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

1. Suponiendo que P tiene el valor de 5 y Q el valor de 3.

La expresin a evaluar es P > Q si se sustituyen los valores la expresin queda 5 >3, al


evaluar esta expresin da el valor de VERDADERO.

La siguiente expresin a evaluar es P < Q, la expresin es 5 < 3, al evaluarla el resultado es


FALSO.

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

6.2. Operadores lgicos

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

Y PyQ P sin embargo Q

PoQ
(menor)
PoQ o P o Q o ambas
O
Mnimo P o Q

Tabla 6.3 Operadores Lgicos


En la tabla 6.4 se presenta la tabla de verdad de los operadores lgicos.

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

Tabla 6.4 Tabla de Verdad de los Operadores Lgicos

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:

1. Evaluamos varias expresiones compuestas

(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

6.3. Decisiones simples

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.

La estructura si entonces, evala la condicin y en tal caso: si la condicin es verdadera,


entonces ejecuta la accin Si (o acciones si son varias). Si la condicin es falsa, entonces no se
hace nada.

Ejemplos

1. Construir un algoritmo tal, que dado como dato la calificacin de un alumno en un


examen, escriba Aprobado en caso que esa calificacin fuese mayor que 6.

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:

Dado un nmero, imprimir si es positivo.


Dado un nmero, imprimir si es par.
Dado un nmero, imprimir si su cuadrado es mayor que 100.

6.4. Decisiones anidadas (complejas)

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:

1. Al tener dos nmeros y comparar cul 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. 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.

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 adems de cada va 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 ms de 400 metros
cuadrados se hace un descuento de 10%.
Calcular el costo de un pedido de un artculo del cual se tiene la descripcin, 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 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:

En un almacn 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 ms de 3 el
65%. Solicitar la cantidad de trajes a comprar adems 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 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

7.1. Ciclos contados

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.

Su formato general es:

Para<variable> = <inicial>Hasta<final>Con Paso<paso>Hacer

<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.

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 repetirn las
instrucciones.
Con Paso indicamos los cambios que aplicaremos a la variable que se evala 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 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:

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 lneas de cdigo necesarias para obtener el valor factorial de un x nmero.

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

Obsrvese 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 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

Si se quiere adquirir un refresco, que cuesta 9 pesos, de una mquina despachadora de


refrescos y se cuenta con puras monedas de un peso, el proceso sera 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 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.

Ciclo Repetir hasta que ( Do while)

El ciclo, Repetir hasta que, es otra estructura de


repeticin de instrucciones que se utiliza en los
casos en que no se sabe con exactitud cuntas Instrucciones
veces se han de repetir las instrucciones del ciclo,
pero se sabe que dichas instrucciones se ejecutarn
al menos por una vez. La figura 7.1 muestra la
Falso
estructura del ciclo. En esta estructura se tiene un Condicin
conjunto de instrucciones que son las actividades
del ciclo y al final se incluye una instruccin, Verdadero
llamada Condicin, que cuando se cumple, indica
en qu momento se debe terminar el ciclo de Figura 7.1 Fin del ciclo
repeticiones.

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

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
negativa entonces el atleta repetir la instruccin Suficientemente
Dar una vuelta a la pista trotando, y as cansado?
sucesivamente, hasta que la respuesta a la S
pregunta sea afirmativa, con lo que se termina el Figura 7.2
ciclo y se pasa a la siguiente instruccin, tal vez ir a tomar una ducha.

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

Todo algoritmo en pseudocgido 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 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

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 seleccin mltiple y/o estructuras cclicas mientras, repetir o
para.

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.

Operador Significado Ejemplo


Relacionales
> Mayor que 3>2
< Menor que 'ABC'<'abc'
= Igual que 4=3
<= Menor o igual que 'a'<='b'
>= Mayor o igual que 4>=5
Lgicos
&oY Conjuncin (y). (7>4) & (2=1) //falso
|oO Disyuncin (o). (1=1 | 2=1) //verdadero
~ o NO Negacin (no). ~(2<5) //falso
Algebraicos
+ Suma total <- cant1 + cant2
- Resta stock <- disp venta
* Multiplicacin area <- base * altura
/ Divisin porc <- 100 * parte / total
^ Potenciacin sup <- 3.41 * radio ^ 2
% o MOD Mdulo (resto de la divisin entera) resto <- num MOD div

Tabla A.1 Relacin de operadores

35
La jerarqua de los operadores matemticos es igual a la del lgebra, aunque puede alterarse
mediante el uso de parntesis.

A continuacin se listan las funciones integradas disponibles:

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.

Declaracin 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 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:

Definir <variable>,<variable>, ,<variable> como <tipoDato>;

Definir <constante> = <valor>;

36
Ejemplo:

Definir nombre como cadena;

Definir TOTAL = 10;

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 (=).

Para el caso de PSeInt

<variable> <- <expresin> ;

<variable> <- <valor> ;

Para nuestro caso:

<variable> =<expresin> ;

<variable> = <valor> ;

Ejemplo:

a=10;

b=3.2;

res=12+2-b;

Al ejecutarse la asignacin, primero se evala la expresin de la derecha y luego se asigna el


resultado a la variable de la izquierda. El tipo de la variable y el de la expresin deben
coincidir.

var = Expresin

Figura A.1 Smbolo Asignacin

37
Entradas

La instruccin Leer permite ingresar informacin desde el ambiente.

Leer <variablel>, <variable2>, ...,<variableN> ;

Ejemplo:

Leer altura;

Leer altura, base;

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.

Figura A.2 Smbolo Entrada de datos

Salidas

La instruccin Escribir permite mostrar valores al ambiente.

Escribir <exprl> , <expr2> , ... , <exprN> ;

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.

Figura A.3 Smbolo 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

Al ejecutarse esta instruccin, se evala la condicin y se ejecutan las instrucciones que


correspondan: las instrucciones que le siguen al Entonces si la condicin es verdadera, o las
instrucciones que le siguen al Sino si la condicin es falsa. La condicin debe ser una
expresin lgica, que al ser evaluada retorna Verdadero o Falso.

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.

Figura A.4 Smbolo Condicin si-entonces-sino

39
Seleccin Mltiple

La secuencia de instrucciones ejecutada por una instruccin Segun depende del valor de una
variable numrica.

Segun <variable> Hacer


<nmero1>: <instrucciones>
<nmero2>,<nmero3>: <instrucciones>
<...>
De Otro Modo: <instrucciones>
FinSegun

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;

De Otro Modo: Escribir Dato errneo;

FinSegun

FinProceso

40
La figura A.5 ilustra el smbolo que puede ser utilizado para definir una instruccin de
seleccin o condicin mltiple.

Figura A.5 Smbolo Seleccin (o condicin) Mltiple

Estructuras cclicas

Ciclo Mientras

La instruccin Mientras ejecuta una secuencia de instrucciones mientras una condicin sea
verdadera.

Mientras <condicin> Hacer


<instrucciones>
FinMientras

Al ejecutarse esta instruccin, la condicin es evaluada. Si la condicin resulta verdadera, se


ejecuta una vez la secuencia de instrucciones que forman el cuerpo del ciclo. Al finalizar la
ejecucin del cuerpo del ciclo se vuelve a evaluar la condicin y, si es verdadera, la ejecucin
se repite. Estos pasos se repiten mientras la 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.

Figura A.6 Smbolo Ciclo Mientras

Ciclo Repetir

La instruccin Repetir-Hasta Que ejecuta una secuencia de instrucciones hasta que la


condicin sea verdadera.

Repetir

<instrucciones>

Hasta Que <condicin>

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.

Figura A.7 Smbolo Ciclo Repetir

Ciclo Para

La instruccin Para ejecuta una secuencia de instrucciones un nmero 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 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.

Figura A.8 Smbolo Ciclo Para

44

You might also like