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

46
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 ACADEMIA DE ING. EN SISTEMAS COMPUTACIONALES Agosto 2014 OBJETIVO Desarrollar en el aspirante sus habilidades Lógicas que se aplican a la solución de los problemas susceptibles de ser computarizados

Upload: dangkhanh

Post on 06-Jan-2017

216 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: curso taller de introducción a la ing. en sistemas computacionales

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

ACADEMIA DE ING. EN SISTEMAS COMPUTACIONALES

Agosto 2014

OBJETIVO Desarrollar en el aspirante sus habilidades Lógicas

que se aplican a la solución de los problemas

susceptibles de ser computarizados

Page 2: curso taller de introducción a la ing. en sistemas computacionales

1

ÍNDICE

Pág.

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

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

Page 3: curso taller de introducción a la ing. en sistemas computacionales

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.

Page 4: curso taller de introducción a la ing. en sistemas computacionales

2

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. Sacar tortillas y queso.

2. Sacar sartén o comal.

3. Calentar sartén 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 sartén o comal.

10. Servir y disfrutar.

Page 5: curso taller de introducción a la ing. en sistemas computacionales

3

2.1.3. Cambiar un foco

¿Qué se necesita para cambiar un foco fundido?

1. Sitúa 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 retírala.

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

Page 6: curso taller de introducción a la ing. en sistemas computacionales

4

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.

Page 7: curso taller de introducción a la ing. en sistemas computacionales

5

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

mod 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 Resultado Expresión 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 matemáticas

Una expresión matemática es un conjunto de datos o funciones unidos por operadores

aritméticos.

FORMATO: variable = expresión

Page 8: curso taller de introducción a la ing. en sistemas computacionales

6

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.

Page 9: curso taller de introducción a la ing. en sistemas computacionales

7

Ejemplos de evaluación de expresiones:

1. 4 + 2 * 5

4 + 10

14

Primero la multiplicación;

después, la suma

2. 23 * 2 / 5

46 / 5

9

De izquierda a derecha por la

regla asociativa

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.

Page 10: curso taller de introducción a la ing. en sistemas computacionales

8

Fórmulas matemáticas Expresión aritmética

𝑎 = 𝑏𝑐 a = b * c

𝑏2 – 4𝑎𝑐 b * b – 4 * a * c

𝑚 = 𝑦2 − 𝑦1

𝑥2 − 𝑥1

m = (y2 – y1) / (x2 – x1)

𝑥 + 𝑦 − 𝑧 x + y - z 𝑥 + 𝑦

𝑧 + 𝑤

(x + y) / (z + w)

5

1 + 𝑥2

5 / (1 + x * x)

𝑋 = 𝐴 + 𝐵 − 𝑌

𝑍

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

5𝐶 + 32

f = 9 / 5 * c + 32

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

Page 11: curso taller de introducción a la ing. en sistemas computacionales

9

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:

e= 9−4

3 e = RC(9 - 4) / 3

𝑣 = 1 − cos 𝑎

2

v = (1 – cos(a)) / 2

𝑎 = 𝜋𝑛2 a = 3.1416 * n * n

3.6. Ejercicios de evaluación de expresiones

1.- ¿Cuál 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 matemáticas como expresiones de computadoras

a. 𝑥

𝑦+ 1 b.

𝑏

𝑐+𝑑 c.

𝑥𝑦

1−4𝑍𝑥

d. 𝑥+𝑦

𝑥−𝑦 e. 𝑎 + 𝑏

𝑐

𝑑 f.

𝑥𝑦

𝑚𝑛

g. 𝑥+

𝑦

𝑧

𝑥− 𝑦

𝑧

h. [(𝑎 + 𝑏2)]2 i. (𝑥 + 𝑦)2 (𝑎 − 𝑏)

Page 12: curso taller de introducción a la ing. en sistemas computacionales

10

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

Page 13: curso taller de introducción a la ing. en sistemas computacionales

11

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.

Page 14: curso taller de introducción a la ing. en sistemas computacionales

12

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.

Page 15: curso taller de introducción a la ing. en sistemas computacionales

13

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

Page 16: curso taller de introducción a la ing. en sistemas computacionales

14

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.

Page 17: curso taller de introducción a la ing. en sistemas computacionales

15

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.

Page 18: curso taller de introducción a la ing. en sistemas computacionales

16

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.

Page 19: curso taller de introducción a la ing. en sistemas computacionales

17

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

Page 20: curso taller de introducción a la ing. en sistemas computacionales

18

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.

Figura 6.2 Laberinto 2

Page 21: curso taller de introducción a la ing. en sistemas computacionales

19

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

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 EVALUACIÓN

A > B Falso

A < B Verdadero

A >= B Falso

A <= B Verdadero

B > A Verdadero

A – B > 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.1 Operadores Relacionales

Tabla 6.2 Ejemplo de aplicación de los operadores relacionales

Page 22: curso taller de introducción a la ing. en sistemas computacionales

20

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.

Page 23: curso taller de introducción a la ing. en sistemas computacionales

21

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

EXPRESIÓN

LÓGICA SIGNIFICADO

NO

(mayor)

(menor)

No P

NO P

No es cierto que P

Es FALSO que P

Y

P y Q P sin embargo Q

O

P o Q

P o Q

o P o Q o ambas

Mínimo P o Q

En la tabla 6.4 se presenta la tabla de verdad de los operadores lógicos.

P Q ~P ~Q P o Q P y Q 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.3 Operadores Lógicos

Tabla 6.4 Tabla de Verdad de los Operadores Lógicos

Page 24: curso taller de introducción a la ing. en sistemas computacionales

22

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 SIGNIFICADO

AND Almacenara True, sólo si todos las condiciones son verdaderas

OR Almacenara True, sólo si alguna de las condiciones es verdadera

NOT Cambia el valor al contrario

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

Tabla 6.5 Significado de los operadores lógicos

Page 25: curso taller de introducción a la ing. en sistemas computacionales

23

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

Page 26: curso taller de introducción a la ing. en sistemas computacionales

24

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

Page 27: curso taller de introducción a la ing. en sistemas computacionales

25

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

Page 28: curso taller de introducción a la ing. en sistemas computacionales

26

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

Page 29: curso taller de introducción a la ing. en sistemas computacionales

27

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

Page 30: curso taller de introducción a la ing. en sistemas computacionales

28

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.

Page 31: curso taller de introducción a la ing. en sistemas computacionales

29

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

Page 32: curso taller de introducción a la ing. en sistemas computacionales

30

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.

Page 33: curso taller de introducción a la ing. en sistemas computacionales

31

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

Page 34: curso taller de introducción a la ing. en sistemas computacionales

32

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

Verdadero

Falso Condición

Fin del ciclo Figura 7.1

Page 35: curso taller de introducción a la ing. en sistemas computacionales

33

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

menos una vuelta a la pista1. Una vez que

terminó la primera vuelta se pregunta ¿Ya está

suficientemente cansado? Si la respuesta es

negativa entonces el atleta repetirá la instrucción

“Dar una vuelta a la pista trotando”, y así

sucesivamente, hasta que la respuesta a la

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.

Dar una vuelta a la pista trotando

¿Suficientemente cansado?

No

Figura 7.2

Page 36: curso taller de introducción a la ing. en sistemas computacionales

34

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 (Nassi-

Schneiderman), 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:

Page 37: curso taller de introducción a la ing. en sistemas computacionales

35

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

Lógicos

& o Y Conjunción (y). (7>4) & (2=1) //falso

| o O Disyunción (o). (1=1 | 2=1) //verdadero

~ o NO Negación (no). ~(2<5) //falso

Algebraicos

+ Suma total <- cant1 + cant2

- Resta stock <- disp – venta

* Multiplicación area <- base * altura

/ División porc <- 100 * parte / total

^ Potenciación sup <- 3.41 * radio ^ 2

% o MOD Módulo (resto de la división entera) resto <- num MOD div

Tabla A.1 Relación de operadores

Page 38: curso taller de introducción a la ing. en sistemas computacionales

36

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

Page 39: curso taller de introducción a la ing. en sistemas computacionales

37

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.

Figura A.1 Símbolo Asignación

var = Expresión

Page 40: curso taller de introducción a la ing. en sistemas computacionales

38

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

Page 41: curso taller de introducción a la ing. en sistemas computacionales

39

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

Page 42: curso taller de introducción a la ing. en sistemas computacionales

40

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

Page 43: curso taller de introducción a la ing. en sistemas computacionales

41

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

Page 44: curso taller de introducción a la ing. en sistemas computacionales

42

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.

Page 45: curso taller de introducción a la ing. en sistemas computacionales

43

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

Page 46: curso taller de introducción a la ing. en sistemas computacionales

44

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