Está en la página 1de 61

LENGUAJ ES ALGORTMICOS

Apuntes de la materia

Por Vctor Castillo





CAPTULO I


ALGORITMOS












1.1 Procesos.

1.1.1 Definicin.

Para poder dar una definicin de proceso, debemos adentrarnos un poco
en los sistemas.

La definicin de un sistema hace referencia a un conjunto de dispositivos
que se relacionan con el fin de llevar a cabo una tarea. La Teora General de los
Sistemas presentada por Bertalanfy en el ao 1812 brinda un panorama muy
claro sobre la importancia que tienen los sistemas en la vida cotidiana.

Si pusiramos atencin a todo lo que nos rodea, veramos que estamos
sumergidos en muchos sistemas, y que todos ellos conviven, de alguna u otra
manera, con el fin de hacer que nuestra vida sea normal. Por ejemplo, el
cuerpo humano es un sistema global formado por el sistema nervioso, el sistema
cardiovascular, sistema respiratorio, etctera, cada uno de los cuales trabaja en
conjunto con los otros a fin de mantenernos vivos. Si escarbramos en los
sistemas, veramos a su vez, que todos ellos estn formados de procesos. Por
ejemplo, el sistema nervioso, entre otros, cuenta con un proceso de sensibilidad
al mundo exterior, el cual nos ayuda, a sentir cuando el ambiente es fro o clido.

Un proceso es un conjunto de actividades desarrolladas con el fin de
llevar a cabo una tarea especfica.

Gracias a los procesos, las computadoras ha llegado a ser tan tiles en la
vida actual. Los procesos de cmputo estn enfocados a transformar ciertos
datos en otros datos o en informacin a velocidades muy grandes, a final de
cuentas esa es la virtud principal de las computadoras.

1.1.2 Componentes.
Un proceso de cmputo se compone de tres partes bsicas: entrada,
procesamiento y salida.

La entrada es la parte de un proceso que se encarga de recibir los datos
que sern manejados en el mismo. Es una etapa muy importante, ya que la
informacin o los datos que genera el proceso dependen en gran medida de qu
tan buenos sean los datos en este fase. El procesamiento es la etapa
fundamental de un proceso, en esta se realizan ciertas operaciones (que
dependen del proceso que se est siguiendo) para transformar los datos de
entrada en ciertos datos o informacin de salida (vea figura 1.1).


Figura 1.1. Las partes de un proceso de cmputo.






Salida Procesamiento Entrada

La salida es la parte de un proceso en la que se presentan los resultados
de la etapa de procesamiento.

Las computadoras son menos inteligentes de lo que parecen, la gran
capacidad de procesamiento que muchas veces escuchamos al respecto de las
mismas se debe a la velocidad a la que estas llevan a cabo procesos simples y
no a la complejidad de los mismos.

Ejemplo: Elaborar un proceso para sumar dos nmeros.

Parte I. Entrada de datos: Conocer los elementos a sumar:
A=3
B=5
Parte II. Procesamiento de los datos. Se lleva a cabo la operacin que transformar los
datos de entrada (A, B) en un resultado de salida (la suma de los nmeros).
C=A+B
Parte III. Salida de datos. Se presenta el resultado del procesamiento de los datos de
entrada
C=8

Como puede observar, el proceso de suma es muy sencillo. En la mayora
de los aspectos de informtica, los datos son mencionados con nombres de
variables (en este ejercicio usamos las variables A, B y C, de las cuales A y B
son variables de entrada y C es la variable de proceso, la cual es presentada
como salida). Este es un ejemplo tpico de un proceso y aunque la mayora de
los procesos de computadora tienen ms variables de entrada, ms etapas de
procesamiento y ms variables de salida, las partes fundamentales de los
mismos siempre sern las tres mencionadas anteriormente (entrada,
procesamiento y salida).


1.2 Algoritmos.

1.2.1 Definicin.

Un algoritmo es un conjunto ordenado y finito de pasos usados en la
solucin de un problema o realizacin de una tarea.

Como podr notar, esta definicin tiene qu ver con la de procesos, detalle
que tambin observaremos en el prrafo siguiente.

Un algoritmo est compuesto de tres partes principales, cada una con
funciones muy particulares. La etapa de entrada indica los datos que son
necesarios para la solucin del problema en cuestin. En la etapa de proceso o
procesamiento, es donde se realizan las operaciones que tienen que ver con la
solucin del problema, mientras que en la etapa de salida es donde se mostrarn
los resultados obtenidos en el procesamiento.

Con estos pasos tan sencillos es como se construyen los programas ms
sofisticados. Los lenguajes algortmicos nos proporcionan metodologas que
permiten representar cualquier problema (o casi cualquiera) para posteriormente
expresarlo en un lenguaje de computadora. De lo anterior podemos concluir que,
expresando correctamente un problema mediante un algoritmo, podemos
representarlo en cualquier lenguaje de programacin, esta es la razn por la que
interesa el estudio de la presente materia.


1.2.2 Caractersticas de los algoritmos.

a) Un algoritmo debe ser preciso, e indicar el orden de realizacin de cada
paso.

b) Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se
debe obtener el mismo resultado cada vez.

c) Un algoritmo debe ser finito, si se sigue un algoritmo se debe terminar en
algn momento.

Ejercicio: Escriba un algoritmo para calcular el promedio de 4 nmeros.

La solucin se lleva a cabo estructurando el problema en las partes que conforman el
algoritmo, as tenemos:

ENTRADA

PASO 1: Conocer los nmeros a promediar: A =2, B =3, C =4, D =5

PROCESAMIENTO

PASO 2: S =A +B +C +D
PASO 3: P =S/4

SALIDA

PASO 4: P


Se debe observar en la solucin que existe una secuenciacin, esto es, la
solucin se va dando en forma de pasos bien definidos: despus del paso 1, sigue
el 2, luego el 3, para finalmente dar el resultado de salida en el paso 4.


Ejercicio: Elabore un algoritmo para ayudar a una persona a cruzar la calle.

ENTRADA

PASO 1: Checar la luz del semforo. Ir a paso 2.

PROCESO

PASO 2: Preguntar Si L =Verde, ir a paso 3. De lo contrario ir a paso 1

SALIDA

PASO 3: Cruzar calle


1.3 Datos.

1.3.1 Definicin.

La forma ms sencilla de definir un dato, es como aquel hecho que nos da
una idea bsica de algo, es cualquier carcter que produce una imagen en nuestro
cerebro. Muy bien, aunque esto es una definicin poco formal, es muy til, ya que
un dato es una secuencia de smbolos (letras, nmeros, etctera) que representan
un valor y que por s solos no tienen un significado. Como ejemplos de datos,
tenemos los siguientes: perro, 345, 86-1841, tapa, i. Todos estos datos no nos
dicen o no representan algo til si no son procesados o relacionados de alguna
manera. De la definicin de dato, se puede pasar a la definicin de informacin.
Reafirmando, diremos que los datos son hechos, conceptos disponibles para ser
procesados o convertidos en informacin mediante un sistema de procesamiento.
Muchos autores afirman que los datos son la materia prima de la informacin. De
aqu que la informacin es el proceso que se hace de los datos.

Vamos a suponer que tenemos los siguientes datos: pizarrn, gis, borrador,
bancos, escritorio, silla, treinta jvenes, una persona adulta. Muy bien, De qu
estamos hablando? Si relacionamos los datos es muy probable que tengamos la
informacin de que hacemos referencia a un saln de clase, si necesitramos
alguna otra informacin (si es un saln con alumnos de preparatoria o secundaria,
por ejemplo) tendramos que proporcionar ms datos (la edad).

El ejemplo anterior es elemental, pero proporciona una idea clara de la
diferencia entre dato e informacin. Aunque parezca una cuestin simple, existe
un gran estudio respecto a la informacin que se conoce como Teora de la
Informacin, mismo que se encuentra sustentado en gran medida en el trabajo
del norteamericano Claude Shannon presentado en 1948.

1.3.2 Tipos de datos.

Internamente, los datos que maneje una computadora deben ser
representados de la forma ms clara posible, por esta razn, se clasifican de
manera que puedan representar varios rangos. Estos rangos determinan lo que se
conoce como tipos, mismos que determinan las operaciones que cada uno puede
soportar (por ejemplo, no es posible obtener el cociente de dos nombres de
personas, operacin matemtica que s sera vlida para dos nmeros). La
definicin de los tipos de datos que utilizaremos en lenguajes algortmicos o
diagramacin es la ms sencilla (cabe sealar que todos los lenguajes de
computadora manejan muchos tipos de datos).


1.3.2.1 Datos numricos.

Los datos numricos, cmo su nombre lo indica, sern aquellos que slo
pueden representar nmeros. De esta manera diremos que existen datos
numricos enteros y reales (con decimales). Las variables que representen datos
numricos sern identificadas slo con su nombre. Ejemplos: A, Edad, X1,
etctera.


1.3.2.2 Datos alfanumricos.

Este tipo permite manipular datos que contengan nmeros y letras. Las
variables alfanumricas deben representarse con un signo de pesos antes de la
mismas. Por ejemplo: $A, $Nombre, $Y2, etctera.


1.2.3.2 Datos lgicos.

Los datos lgicos slo permiten almacenar dos tipos de valores: cierto y
falso. Por lo general, los datos lgicos son devueltos por expresiones dnde se
realiza alguna condicin o pregunta.


1.3.3 Operaciones.

Las operaciones que pueden realizarse entre los datos tendrn que hacerse
por medio de operadores. Como mencionbamos en puntos anteriores, no todos
los operadores pueden aplicarse a todos los tipos de datos. Enseguida lo
veremos.

De esta forma, en la tabla 1.1 presentamos los operadores aritmticos que
son vlidos en lenguajes algortmicos.



Tabla 1.1. Los operadores aritmticos y su orden de precedencia.

PRECEDENCIA OPERADOR OPERACIN
Ms alta Exponenciacin
*
/
Multiplicacin
Divisin
+
-
Suma
Resta
Ms baja % Mdulo



En la Tabla 1.1 podemos ver la columna llamada precedencia, la cual nos
indicar el orden en que se ejecutan los operadores cuando son encontrados en
una expresin (este asunto se tratar con ms detalle en el punto 1.4).

La tabla 1.2 nos muestra los operadores relacionales. Estos tienen el mismo
orden de precedencia y debe hacerse una diferenciacin entre el operador
relacional igual(=) y el operador de asignacin igual(=).



Tabla 1.2. Operadores relacionales.

OPERADOR OPERACIN
= Igual
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que



Los operadores lgicos, por otra parte, se muestran en la tabla 1.3. En ellos
si existe orden de precedencia.


Tabla 1.2. Operadores lgicos.

PRECEDEDENCIA OPERADOR OPERACIN
Ms alta NOT Negacin
AND Conjuncin
Ms baja OR Disyuncin



Para finalizar la parte de operadores mencionaremos que existe el operador
asignacin, el cual permite representar el paso del valor de una expresin a una
variable. El operador indica que el resultado de la expresin que est a su
lado derecho ser pasada a la variable que se localiza en su lado izquierdo:

A4+5

en la anterior expresin asignamos a la variable A el valor de 4+5 (esto es, A
vale 9). Lo cual difiere de preguntar si la variable A es igual a nueve, en cuyo
caso se expresara con el operador de relacin =de la forma:

A=4+5


en el caso anterior estamos haciendo la pregunta: Es la variable A igual a
4+5?, lo cual nos devolver un valor lgico cierto o falso dependiendo cunto
vale dicha variable A.


1.4 Constantes, variables y expresiones.

Cuando referimos un tipo de datos, lo hacemos en forma de constantes o
variables. Una variable es un objeto (dato en la memoria de la computadora) que
puede cambiar su valor a lo largo de la ejecucin o funcionamiento de un
programa. El caso contrario lo representan las constantes, las cuales mantienen
fijo su valor mientras un programa se ejecuta.

Como observar el lector, hemos venido manejando desde puntos
anteriores el concepto de expresin, la cual definimos como un conjunto de
constantes, variables y operadores. Las expresiones se componen de operadores
y operandos.

La siguiente es una expresin:

A+3

en la cual apreciamos dos operandos (la variable A y la constante 3) y un operador
(el operador que representa una suma + entre los operandos).

Existen dos tipos de expresiones: aritmticas y lgicas. Las expresiones
aritmticas arrojan valores numricos, las lgicas valores lgicos(cierto o falso).

Veamos ahora unos ejemplos de expresiones. Suponga que las variables
tienen los siguientes valores:

A3, B5, C10, D1


EXPRESIN VALOR DEVUELTO
A+C-D 12
B+C/2 10
A+D-B2 -21
A+B=3 FALSO


La primera expresin no tiene problema alguno. En la segunda quiz se
pueda observar alguna ambigedad, pero queda liberada cuando recordamos el
orden de precedencia: como encontramos el operador /,el cual tiene mayor orden
de precedencia que la suma, este se realiza primero que +, por tal razn el
resultado es 10. En la tercera expresin el resultado es -21 porque primero se
efecta la exponenciacin de B2 (que es igual a 25), luego se realiza la resta a
la suma de A+D (igual a 4) y se le resta el resultado B2 dndonos 21. La cuarta
expresin, a diferencia de las anteriores que son aritmticas, devuelve un valor
lgico de falso: estamos preguntando Es la suma de A+B (la cual es 8) igual a
3?, lo cual como observamos es falso.

Las expresiones suelen tomar aspecto un poco ms complejos,
observemos las siguientes suponiendo:

A2, B4, C10, D1


EXPRESIN VALOR DEVUELTO
B+C+D/2 14.5
(B+C+D)/2 7.5
A2/2+D-B/22 13
((A+B)=3) AND (C3>1000) FALSO


Las primeras dos expresiones nos indican que el uso de parntesis puede
alterar el orden de precedencia (siempre se evalan primero los parntesis ms
internos), de all que ambas expresiones aunque similares en apariencia difieran
drsticamente en el resultado. En la tercera expresin nos volvemos a encontrar
con la precedencia de los operadores: recordando, primero se evalan las
potencias, luego las divisiones y finalmente las sumas y restas en el mismo orden.
En la cuarta expresin, se realiza una conjuncin que involucra dos operadores
relaciones, uno de igualdad y otro de mayor, la expresin (A+B)=3 es falsa(4+3 no
es igual a 3), tambin lo es C3>1000 (1000 no es mayor que 1000), de tal forma
que la conjuncin de estas expresiones lgicas resulta en un valor lgico final
falso.



Ejercicios propuestos para el captulo.

1.- Elabore los siguientes algoritmos:

a).- Que tenga por entrada una variable numrica que represente una
cantidad en grados cengrados (C) y la convierta a su equivalente en grados
farenheit (F). Recuerde F=1.8C+32.

b).- Que acepte como entrada una variable numrica que represente la
edad de una persona e indique mediante un mensaje si dicha persona puede o no
votar.

c).- Que en su entrada acepte una cantidad numrica que indique un valor
en dlares y que lo convierta a pesos mexicanos. Considere un dlar=9.5 pesos.

d).- Que tome por entrada tres variables numricas que representen las
calificaciones de un alumno. El algoritmo debe calcular el promedio de dicho
alumno e indicar mediante un mensaje si su promedio es aprobatorio o no.

2.- Suponga los siguientes valores para las variables indicadas:

A3, B5, C10, D1

y encuentre el valor de las expresiones siguientes:

a).- (A+B/2-1)-(B2)*2 _______
b).- (A2+B2) (1/2) _______
c).- C-D*5/A+42*4 _______
d).- (C-5)=B _______
e).- 8-10%2+C _______
f).- 4*C-B _______
g).- (A/2+3*C-(4*B/(C-B)*7) )3 _______





CAPTULO II


DIAGRAMAS DE FLUJO














2.1 Definicin

Un diagrama de flujo es la representacin grfica de un algoritmo, por esta
razn, cada parte de un algoritmo tiene un equivalente en un diagrama de flujo.
Esta es una forma ms explcita de representar problemas, la cual, se ajusta a las
estructuras lgicas de todos los lenguajes de programacin existentes.


2.2 Smbolos usados en los diagramas de flujo

En los diagramas existen bloques funcionales que representan las
operaciones descritas para los algoritmos en el Captulo I. La figura 2.1 nos
muestra las equivalencias que existen entre los algoritmos y diagramas de flujo.


Figura 2.1. Simbologa bsica equivalente para algoritmos y diagramas de flujo.


Etapa en un algoritmo Figura equivalente en diagramas de flujo

Entrada:




Proceso:



Salida:




Generalmente un diagrama de flujo deber tener la identificacin tanto de
su inicio como su fin. En ambos casos, se utilizar el siguiente smbolo:

Inicio
Fin


Cada uno de los bloques funcionales deben ser unidos mediante flechas
que indiquen el flujo de la lgica del problema en cuestin.


2.3 Implementacin de diagramas de flujo a partir de algoritmos.

En este punto describiremos la implementacin de diagramas de flujo
tomando como referencia algunos de los algoritmos del captulo pasado.

Ejemplo: Elaborar un diagrama de flujo que tenga por entrada (lea) dos variables
numricas y que calcule e imprima su suma.

La solucin se formula como sigue, a la izquierda tenemos el algoritmo y a
la derecha el diagrama de flujo equivalente:











ALGORITMO:

ENTRADA:
PASO 1: A, B

PROCESO:
PASO 2: C =A +B

SALIDA:
PASO 3: C

INICIO
A,B
C A+B
C
FIN



Como podemos observar en el ejemplo anterior, al algoritmo le corresponde
exactamente un bloque funcional en el diagrama. El smbolo de lectura de las
variables A, B indica que un programa esperar a que el usuario, va teclado,
introduzca dos valores numricos, los cuales sern asignados a las respectivas
variables. Una vez asignados los valores a las variables en el bloque de lectura se
elaborar un proceso de asignacin de la suma de A, B a la variable C, la cual se
imprimir seguidamente para terminar. Observe el lector tambin como existen los
smbolos de inicio y fin del diagrama y que el flujo de la ejecucin de cada una de
sus partes lo ilustran claramente las flechas, es decir, despus del inicio sigue una
lectura, luego un proceso de asignacin para despus imprimir o dar salida a un
resultado, enseguida se nos indica que el diagrama termina.

Los smbolos que usaremos a lo largo del curso varan de significado
ligeramente por parte de algunos autores, por ejemplo, el smbolo de salida puede
tener una connotacin diferente si se usa para dar salida a pantalla o impresora,
nosotros generalizaremos usando slo el mostrado previamente.


Ejemplo: Hacer un diagrama de flujo que lea tres nmeros y que calcule e
imprima su promedio.










ENTRADA:
A, B, C

PROCESO:
P =(A +B +C)/3

SALIDA:
P
INICIO
A,B,C
P (A+B+C)/3
P
FIN




2.4 Reglas para la construccin de diagramas de flujo.

Es necesario advertir al lector que no existen recetas concretas para
solucionar problemas mediante diagramas de flujo o algoritmos, pero s podemos
decir que siguiendo algunos consejos prcticos, esta tarea se facilitar. Tambin
debemos dejar claro que hay problemas que pueden tener muchas
representaciones en diagramas, pero no por eso algunas sern incorrectas. Las
siguientes lneas son algunas reglas que ayudan a la estructuracin de diagramas
de flujo(las cuales fueron tomadas del libro de J oyanes):

1.- Todo diagrama debe tener un principio y un fin.

2.- Las lneas de conexin siempre deben ser rectas, y si es posible que
sean slo verticales y horizontales (no deben cruzarse ni estar inclinadas). As
mismo, se deben usar los conectores slo en casos estrictamente necesarios.

3.- Las lneas que enlazan smbolos entre si deben estar todas conectadas.

4.- Se deben dibujar todos los smbolos de modo que se pueda seguir el
proceso visualmente de arriba abajo (diseo top down) y de izquierda a derecha.

5.- Realizar un diagrama claro y estructurado procurando que la parte
central del diagrama sea la parte central de la hoja de papel.

6.- Evitar la utilizacin de terminologa especfica de un lenguaje de
programacin.

7.- En las operaciones lgicas recurrir preferentemente a la lgica positiva y
que a la lgica negativa.

2.5 Comprobacin de diagramas de flujo.

Segn J oyanes, terminado un diagrama de flujo se deben tomar un
conjunto de datos significativos y comenzar la lectura del mismo en el orden arriba
abajo/izquierda derecha y seguir paso a paso todos los smbolos, con sus
operaciones correspondientes, introduciendo los datos tomados inicialmente en
los momentos oportunos y ver cmo responde el diagrama de flujo y si los
resultados son correctos y coherentes. Este fase ayudar a comprobar si el
diagrama tiene algn fallo y en su caso a corregirlo.

A la metodologa descrita la llamaremos corrida a mano y suele ser muy til
en la comprensin de problemas representados mediante diagramas.

Ejemplo: Hacer un diagrama de flujo que lea una variable A y otra B que
representen los coeficientes de una ecuacin de 1er grado, de la forma Bx +A =0
El diagrama debe imprimir el valor de la raz ( x =- A / B).

INICIO
A, B
X - A/B
X
FIN


Comprobacin del diagrama: Suponiendo que damos los valores 4 y 2
respectivamente a las variables A, B en el bloque de entrada, proseguimos con
el bloque de proceso donde podemos ver que a la variable X se le asigna el
valor de A/B, lo cual corresponde a un valor de 2. Si sustituimos el valor
obtenido de X en la ecuacin original (Bx +A =0) veremos que la igualdad se
cumple. Al lector le corresponder probar el diagrama con otros valores.


2.5 Ventajas y desventajas de los diagramas de flujo.

Como hemos dicho hasta el momento, los diagramas de flujo presentan
caractersticas favorables para ser usados en la solucin de problemas que sern
traducidos a un lenguaje de computadora, pero an con todo esto, existen algunos
inconvenientes en su uso, los cuales deben tenerse presentes. La siguiente es
una lista de ventajas y desventajas tomadas tambin del autor J oyanes:

Como ventajas principales tenemos:

1.- Rpida comprensin de las relaciones.

2.- Anlisis efectivo de las diferentes secciones del programa.

3.- Documentacin adecuada de los programas.

4.- Codificacin eficaz de los programas.

5.- Depuracin y pruebas ordenadas de los programas.


Las desventajas que se pueden observar se resumen as:

1.- Los diagramas complejos y detallados suelen ser laboriosos en
planteamiento y elaboracin.

2.- No existen normas fijas para la elaboracin de diagramas de flujo que
permitan incluir todos los detalles que el usuario desea introducir.


2.6 Pseudocdigo.

Al igual que los diagramas de flujo, el pseudocdigo es otra herramienta
muy til para implementar programas de computadora y podemos definirlo como
una tcnica para expresar en lenguaje natural la lgica de un programa, es decir,
su flujo de control (J oyanes).

Analicemos la definicin dada con un ejemplo. El siguiente diagrama lee
dos variables numricas A, B y mediante un proceso calcula su suma y luego el
promedio de las mismas. Seguido, imprime dicho valor previamente calculado. Por
otra parte, al lado derecho del diagrama tenemos su codificacin en el lenguaje de
programacin Pascal. Lo que aparece en este programa es un conjunto de
instrucciones que puede ser interpretado por una computadora para realizar la
tarea de leer dos nmeros y calcular e imprimir en pantalla su promedio. Pero
suponga el lector que ya tiene su diagrama debidamente probado y que an no
sabe en qu lenguaje se va a codificar, bueno, para esta situacin es posible
utilizar pseudocdigo y dejarlo listo para codificar en el lenguaje que se decida
posteriormente.

Veamos primero el diagrama:



INICIO
A, B
S A+B
P S/2
P
FIN




Codi f i caci n:

Pr ogr ampr omedi o;
Var s, a, b: i nt eger ;
p: r eal ;
Begi n
Wr i t e( Tecl ee el pr i mer nmer o: ) ;
r eadl n( a) ;
Wr i t e( Tecl ee el segundo nmer o: ) ;
r eadl n( b) ;
S: = A + B;
P: = S/ 2;
Wr i t e( El pr omedi o es: , p: 10: 2) ;
End.


Ahora bien, si deseramos escribir pseudocdigo para el diagrama, lo
haramos as:

Inicio
Escribir mensaje Teclea el primer nmero
Leer variable A
Escribir mensaje Teclea el segundo nmero
Leer variable B
Procesar : hacer la variable S igual a la suma de A+B
Procesar : hacer la variable P igual a S/2
Escribir el mensaje El promedio es y el valor de P
Fin

Como vemos, el pseudocdigo es un paso cercano a la codificacin del
programa (su escritura en un lenguaje de programacin), pero concretamente no
representa alguna instruccin de un lenguaje, es decir, slo expresa en lenguaje
ms comn la posible escritura de cdigo.



2.7 Ejemplos y solucin de problemas relacionados.

a).- Hacer un diagrama de flujo que lea una cantidad en dlares y que la convierta
en su equivalente en pesos (suponiendo que un dlar =$ 9.50).

INICIO
D
P D*9.5
P
FIN

INICIO
D, A
P D*A
P
FIN


Nota: Observe las dos soluciones alternativas planteadas.


b).- Hacer un diagrama de flujo que lea una cantidad que represente una
temperatura en grados Celsius ( C) y que los convierta en grados Farenheit (F).

INICIO
C
F 1.8*C+32
F
FIN


c).- Hacer diagrama de flujo que lea una cantidad en pesos y que la convierta en
dlares (suponiendo que el dlar =$ 10).

INICIO
P
D P/10
D
FIN



d).- Hacer diagrama de flujo que lea una cantidad en C y que la convierta en K.

INICIO
C
K C+273
K
FIN



e).- Hacer diagrama de flujo que lea una cantidad en C y que imprima su
equivalente en grados F y en K.

INICIO
C
K C+273
F 1.8*C+32
K, F
FIN




f).- Hacer diagrama de lujo que lea los lados de A, B de un tringulo y que calcule
e imprima la hipotenusa.

INICIO
A,B
C (A2
+
B2)(1/2)
C
FIN




g).- Hacer diagrama de flujo que lea e imprima el promedio de 3 calificaciones de
un alumno.
INICIO
A,B,C
P (A+B+C)/3
P
FIN




h).- Hacer diagrama de flujo capaz de resolver una ecuacin de segundo grado.

INICIO
A, B, C
DIS (B-4*A*C)(1/2)
X
1
, X
2
FIN
X
1
(-B +DIS) /2*A
X
2
(B +DIS)/2*A


Ejercicios propuestos para el captulo.

1.- Elabore un diagrama de flujo que lea una variable numrica que represente el
radio de un crculo y que calcule e imprima su rea.

2.- Haga un diagrama de flujo que lea una variable numrica X y que calcule e
imprima el valor de Z, suponiendo que

Z =(X +7)
2
+4

3.- Construya un diagrama de flujo que lea una variable numrica que represente
la masa de un objeto. El diagrama debe calcular e imprimir la posible energa que
puede liberar ese objeto segn la teora general de la relatividad.

4.- Elabore un diagrama de flujo que lea dos variables numricas que representen
respectivamente la velocidad y el tiempo que dura el recorrido de un mvil. El
diagrama debe calcular e imprimir la distancia que recorre dicho mvil.

5.- Realice un diagrama de flujo que lea tres variables numricas X, Y, Z y
determine el valor de la ecuacin W, donde:

W =X
Y
+3YX-[3/4Z-(Y
2
+Z
3
)]

6.- Hacer diagrama de flujo que lea dos cantidades numricas que representen las
dimensiones de los lados de un rectngulo. Estas dimensiones deben ser dadas
en centmetros y el diagrama debe imprimir el rea de dicho rectngulo en metros
cuadrados.

7.- Hacer un diagrama de flujo que lea una cantidad numrica que indique cierto
nmero de aos. El diagrama debe imprimir la cantidad equivalente en minutos.





CAPTULO III


CONCEPTOS DE
DIAGRAMAS DE FLUJO














3.1 Contador.

Existen algunas formas de asignacin que gozan de mucha utilidad en
programacin. Obviamente, estas formas de asignacin manipulan variables, las
cuales reciben nombres tcnicos, una de esas formas es el contador.

En los procesos repetitivos es necesario contar los sucesos que ocurren
dentro de un ciclo, estos sucesos pueden ser de muy diversos tipos, y por ahora
no son parte de atencin. Pues bien, para llevar un control de esos eventos se
hace uso de un contador, el cual reside en una parte de la memoria de la
computadora y se incrementa o decrementa cada vez que se entra al ciclo. El
incremento (ya sea positivo o negativo) en un contador siempre es constante.
Como ejemplos de contador tenemos:

C C+1
N N+1


3.2 Sumador.

Este tipo de variable almacena cantidad variables resultantes sumas
sucesivas (J oyanes, 1987). En este tipo de variables, el incremento es siempre
una variable, veamos ahora unos ejemplos de sumadores:

C C+T
S S+N


3.3 Multiplicador.

Una variable tipo multiplicador, como su nombre lo indica, es aquella que
multiplica valores, sea constantes o variables. Ejemplos:

C C*2
N N*X

Las tres herramientas mencionadas en lo que va de estos apuntes, tienen
infinidad de aplicaciones, las cuales veremos cuando toquemos el tema de ciclos y
arreglos. Por ahora slo es importante saber que existen y que cuentan con
caractersticas que las identifican claramente. La figura 3.1 muestra en forma
grfica los tres tipos de variables descritas previamente.



Figura 3.1. De izquierda a derecha, tenemos diagramas que implementan un contador, un sumador y un multiplicador,
respectivamente.

INICIO
C 1
C
FIN
C C +1







INICIO
X 1
S
FIN
S 1
S S +X







INICIO
X 1
X
FIN
X X * 1


3.4 Control de flujo en un diagrama.

Hasta este momento la lgica de ejecucin de instrucciones, en los
diagramas que se han visto, no ha sido interrumpida, es decir, se ejecuta todas
ellas de manera lineal ( de arriba hacia abajo).

Muchas veces ser necesario cambiar el flujo de un diagrama tomando en cuenta
ciertas condiciones. Para llevar a cabo sentencias condicionales el control del
flujo en un diagrama-, se utiliza el siguiente smbolo:

CONDICIN
FALSO CIERTO





Dependiendo cul es la respuesta resultante a la condicin, el flujo del
problema ir, a la izquierda, si es falsa o a la derecha si es verdadera.


3.5 Ejemplos y resolucin de problemas relacionados.

Ejemplo: Hacer un diagrama de flujo que lea una variable que represente la edad
de una persona y que escriba un mensaje que indique si la persona puede o no
votar en las elecciones.

INICIO
E
"LO SIENTO"
FIN
"FELICIDADES"
E>=18
SI NO








Ejemplo: Hacer diagrama de flujo que lea un nmero que represente una
temperatura en C y que la convierta a F. El diagrama debe determinar si la
temperatura convertida es mayor a 300 F.

INICIO
C
"Es menor a 300 C"
FIN
"Es mayor a 300 C"
F>=300
F 1.8 * C +32
SI NO




Ejemplo: Hacer diagrama de flujo que lea un nmero y que compare si ese
nmero es mayor a mil, en cuyo caso debe imprimir el cuadrado del nmero y en
caso contrario debe imprimir la raz cbica del mismo.

INICIO
X
A
FIN
X>=1000 A X(1/3) A X2
SI NO


Ejemplo: Hacer diagrama de flujo que lea un nmero y que determine si es
mltiplo de tres, en este cado debe calcular e imprimir respectivamente su
cuadrado y raz cuadrada. En caso contrario que calcule e imprima su valor
cubicado.
INICIO
N
X
1
, X
2
FIN
M =0 X
1
N * N * N
X
1
SQR (N)
X
2
SQRT (N)
M N MOD 3
SI NO
X
1



Ejemplo: Hacer diagrama de flujo que lea dos variables numricas y que evale
la propiedad de tricotoma en dichos nmeros.

INICIO
X, Y
"Y es mayor que X"
FIN
"X es mayor que Y"
X >Y
X =Y
"Son Iguales"
SI
NO
SI
NO



Ejemplo: Hacer diagrama de flujo que lea dos variables (X, Y) y que determine si
se satisface la siguiente ecuacin.
3 X + 5 Y 4
INICIO
X, Y
"No satisface la ecuacin"
FIN
"Si satisface la ecuacin"
3 X +5 Y >=4
SI NO


Ejemplo: Hacer diagrama de flujo que lea cuatro variables: X
1
,X
2
,Y
1
,Y
2
. El
diagrama debe calcular la media aritmtica de las variables (X, Y) e indicar sus
respectivas medias son iguales o cual de ellas es la mayor.




INICIO
X
1
, X
2
, Y
1
, Y
2
SX =X
1
+X
2
PX =SX / 2
SY =Y
1
+Y
2
PY =SY / 2
"LamediadeY's es mayor
quelamediadeX's"
FIN
"LamediadeX's es mayor
quelamediaY's" PX <PY
PX =PY
"Las medias son iguales"
SI
NO
SI
NO








CAPTULO IV


ESTRUCTURAS ITERATIVAS














4.1 Introduccin.

Las estructuras iterativas (tambin llamadas bucles), son procesos que
ejecutan una serie de instrucciones en un nmero determinado de veces. Las
operaciones, o instrucciones, sern siempre las mismas, pero con datos y
resultados diferentes. En el caso de un programa de computadora, el bucle o
lazo es un conjunto de instrucciones que deben ser ejecutadas un cierto
nmeros de veces(cada repeticin tambin se conoce como iteracin), en una
entrada y una salida; la entrada se producir con una o varias instrucciones y la
salida del bucle fin del proceso repetitivo-, se producir cuando se cumple o no
una condicin.

Un bucle que no controle su fin, recibe el nombre de bucle infinito o sin fin,
tiene la forma mostrada en la Figura 4.1.


Figura 4.1. Estructura general de un bucle infinito.
Accin 1
Accin 2


Lo ms deseable en un programa es que nunca se caiga en un ciclo infinito,
ya que no tendra mucho sentido no poder detener procesos.

En general, un bucle que no es infinito, es decir, uno que es finito, contar
con las siguientes partes:

Preparacin y arranque.
Cuerpo.
Modificacin.
Comprobacin de la condicin.


El esquema de un bucle finito se muestra en la Figura 4.2.


Figura 4.2. Estructura general de un bucle finito tipo repetir-mientras.
Condicin?
Proceso(s)
Falso
Cierto



4.2 Estructura repetir-mientras.

La Figura 4.2 ilustra que el proceso o los procesos del bucle sern repetidos
mientras se cumpla la condicin, es decir, mientras que esta sea evaluada como
verdadera. Un ciclo tipo de este tipo no asegura que los procesos que pertenecen
a l sean ejecutados, ya que si la condicin de entrada no es satisfecha, nunca se
ejecutarn el o los procesos.


4.3 Estructura repetir-hasta.

En Figura 4.3 observamos otra estructura de bucle conocida como repetir-
hasta, en la podemos apreciar que el o los procesos sern ejecutados mientras
que la condicin no sea satisfecha. Esta clase de bucle asegura la entrada a el
mismo al menos una vez, a diferencia de las estructuras de bucle tipo repetir-
mientras.

Figura 4.3. Estructura general de un bucle finito tipo repetir-hasta.
Condicin?
Proceso(s)
Cierto
Falso


En la mayora de los problemas que se resuelvan con estructuras tipo
repetir-mientras y repetir-hasta es frecuente encontrar, dentro de los procesos que
contiene el bucle, un contador que sea la variable de control que indique cuntas
veces ser ejecutar el ciclo.


4.4 Ciclos automticos.

Este tipo de bucles se les llama automticos porque la variable que controla
el nmero de iteraciones es incrementada de manera interna por el bucle, es decir,
no necesita incrementarse de manera explcita dentro del mismo. La Figura 4.4
ilustra una estructura general de un ciclo automtico.

Figura 4.4. Estructura general de un ciclo automtico.
Proceso(s)
var=inicio,fin, incremento


En un ciclo automtico, el o los procesos sern ejecutados mientras que la
variable de control (var) pasa del valor inicial al valor final en el incremento
especificado.


4.5 Ejemplos y resolucin de problemas relacionados.

Ejemplo: Hacer un diagrama de flujo que genere nmeros pares desde 2 hasta
infinito.

INICIO
C 0
C
C C +2


Ejemplo: Hacer diagrama de flujo que genere nmeros impares desde 1 hasta
infinito.

INICIO
C -1
C
C C +2


Ejemplo: Hacer diagrama de flujo que genere nmeros enteros sucesivos desde
1 hasta infinito.

INICIO
C 0
C
C C +1


Ejemplo: Hacer diagrama de flujo que genere nmeros de tres en tres hasta
infinito.

INICIO
C 0
C
C C +3




Ejemplo: Hacer diagrama de flujo que lea 1000 nmeros y que lea e imprima su
promedio.

INICIO
C 0
S 0
C C +1
S S +N
C =1000
N
FIN
P S / 1000
P
NO
SI


I

Ejemplo: Hacer diagrama de flujo que genere nmeros pares de 2 hasta 200.

INICIO
C 0
C C +2
C =200
FIN
C
NO
SI



Ejemplo: Hacer diagrama de flujo que genere nmeros enteros sucesivos de uno
en uno hasta N.

INICIO
C 0
C C +1
C =N
FIN
C
N
NO
SI





Ejemplo: Hacer diagrama de flujo que calcule la media aritmtica de N nmeros.

INICIO
C 0
S 0
P 0
S S +M
C =N
M
FIN
N
C C +1
P
P S / N
NO
SI



Ejemplo: Hacer diagrama de flujo que lea un nmero y que determine si es par o
impar, si el nmero es par, el diagrama debe generar nmeros pares de 2 20 y si
no, impares de 1-19.


INICIO
C MOD 2 =0
C
"Nmero par" "Nmero impar"
C -1
C =19
C C +2
C
C 0
C =20
C C +2
C
FIN
SI SI
NO NO
SI NO




Ejemplo: Hacer diagrama de flujo que lea n nmeros y que determine cual de
ellos es el mayor.

INICIO
MAY -32000
C 0
X >MAY
FIN
N
C C +1
MAY X
X
C =N
MAY
SI
NO
NO
SI


Ejemplo: Hacer diagrama de flujo que imprima la sucesin de Fibonacci:
0,1,1,2,3,5,8,13,21,

INICIO
A 0
B 1
A,B
C A +B
C
A B
B C


Ejemplo: Hacer diagrama de flujo que imprima nmeros mltiplos de cinco desde
cinco hasta quinientos.

INICIO
C 0
C C +5
C =500
FIN
C
NO
SI


Ejemplo: Hacer diagrama de flujo que imprima nmeros de uno en uno hasta 50
y que imprima el cuadrado de cada uno.

INICIO
C 0
C C +1
C =50
FIN
C
N C * C
N
NO
SI


Ejercicios propuestos para el captulo.

1.- Hacer un diagrama de flujo que lea un nmero N y que genera la siguiente
secuencia:

1 .. 1
2 .. 3
3 .. 9
4 .. 16
. .
. .
N .. N
2

2.- Elabore un diagrama de flujo imprima 500 veces la cadena Hola.

3.- Hacer un diagrama de flujo que lea un nmero N y que genere una secuencia
de nmeros primos menores o iguales que N.

4.- Hacer un diagrama de flujo que lea un nmero N y que genere la sucesin de
Fibonacci para nmeros menores o iguales que N.

5.- Elabore un diagrama de flujo que lea N nmeros y que indique cuntos de ellos
son pares y cuntos mltiplos de 3.

6.- Hacer un diagrama de flujo que lea un nmero N y que genere una secuencia
de nmeros impares menores o iguales que N.





CAPTULO V


ESTRUCTURAS DE
DATOS BSICAS













5.1 Vectores.

Un vector es un conjunto de elementos relacionados. En la mayora de los
lenguajes de computadora, todos los elementos de un vector(o arreglo
unidimensional) son del mismo tipo.

Para poder hacer referencia a los elementos de un vector es necesario que
exista un nombre para el mismo. A cantidad mxima de elementos que podemos
almacenar en un vector se le llama dimensin.

No es posible acceder a todos los datos de un arreglo al mismo tiempo, en
vez de ello se tiene que usar un nombre de arreglo y un nmero, llamado ndice,
que indica a qu elemento del vector se est haciendo referencia.

Figura 5.1. Representacin esquemtica de un vector.

X = 457 324 3 55
[1] [2] [3] [4]


La Figura No. 5.1 muestra un arreglo de enteros llamado X que tiene una
dimensin de 4. Si queremos hacer referencia al segundo elemento del arreglo X
(el nmero 324) tendramos que especificar X[2](se lee como X de 2), es decir,
X[2]=324. Cada uno de estos elementos individuales puede ser tratado como
cualquier variable.


5.2.1 Ejemplos y resolucin de problemas relacionados con
vectores.

Ejemplo: Hacer diagrama de flujo que lea e imprima un arreglo de N elementos.

INICIO
FIN
N
K 1, N
X[K]
X[K]

Ejemplo: Hacer diagrama de flujo que lea un arreglo de N elementos y que
imprima su media aritmtica.
INICIO
FIN
N
K 1, N
X[K]
P
P S / N
S X[K] +S
S 0










Ejemplo: Hacer diagrama de flujo que lea un vector numrico de N elementos y
que indique cuntos de ellos son negativos.


INICIO
FIN
N
K 1, N
X[K]
P 0
K 1, N
X[K] <0
P P +1
P
SI
NO


Ejemplo: Hacer un diagrama de flujo que lea un vector de N elementos que
calcule la siguiente norma:
(X
1
-M)+(X
1
-M)+...+(X
N
-M)
Norma =-----------------------------------------
N
Donde M es la media aritmtica del vector X.

INICIO
FIN
N
K 1, N
X[K]
S 0
DM
S S +X[K]
M S / N
S2 0
K 1, N
S2 S2 +(X[K] - M)
DM S2 / N


Ejemplo: Hacer diagrama de flujo que lea dos vectores de dimensin N y que
calcule e imprima la suma de ambos.




INICIO
FIN
N
K 1, N
X[K]
Y[K]
K 1, N
Z[K] X[K] +Y[K]
Z[K]


5.2 Matrices.

Un matriz es un arreglo bidimensional, es decir, para hacer referencia a
cualquiera de sus elementos son necesarios dos ndices.

Las matrices estn organizadas en filas y columnas, por lo tanto la
dimensin de las mismas ser dada en la forma NxM, donde N representa la
cantidad de renglones(llamados tambin filas) y M las columnas.

Figura 5.2. Representacin esquemtica de una matriz.

[1] 457 324 3
[2] 34 34 0
[3] 2 342 13
[4] 21 3 32
X =
[1] [2] [3]

En la Figura 5.2 podemos observar la representacin esquemtica de una
matriz de enteros llamada X, la cual tiene una dimensin 4x3. En la matriz X, el
acceso a los elementos individuales debe hacerse en la forma X[i,i], donde i
representa el nmero de rengln y j el nmero de columna, por lo tanto X[3,2] es
342.


5.2.1 Ejemplos y resolucin de problemas relacionados con
matrices.

Ejemplo: Hacer diagrama de flujo que lea una matriz de tres por dos (3 X 2).

INICIO
I 1, 3
X[I,J ]
J 1, 2
FIN

Ejemplo: Hacer diagrama de flujo que lea e imprima una matriz de N X M
elementos.


I 1, N
X[I,J ]
J 1, M
I 1, N
J 1, M
X[I,J ]
FIN
N , M
INICIO



Ejemplo: Hacer diagrama de flujo que lea matriz de dimensin NxM y un escalar
. El diagrama debe calcular e imprimir el producto escalar de ambos.

I 1, N
X[I,J ]
J 1, M
I 1, N
J 1, M
Y[I,J ]
FIN
N , M, K
INICIO
Y[I,J ] K*X[I,J ]
I 1, N
X[I,J ]
J 1, M
I 1, N
J 1, M
FIN
N , M, K
INICIO
Y[I,J ] K*X[I,J ]
I 1, N
J 1, M
Y[I,J ]
equivalea....


Ejemplo: Hacer diagrama de flujo que lea una matriz de dimensin NxM y
imprima su diagonal principal.





Ejercicios propuestos para el captulo.

1.- Hacer diagrama de flujo que lea un vector de N elementos y que indique
cuantos de ellos son pares.

2.- Hacer diagrama de flujo que lea una matriz de N X 3. El diagrama debe
calcular el promedio por fila e cual de tales promedios es el mayor.

3.- Hacer diagrama de flujo que lea un vector de N elementos y que indique
cuantos de ellos mltiplos de tres y cuntos mltiplos de 5.

4.- Hacer un diagrama de flujo que lea un vector de dimensin N y que calcule la
siguiente norma:
(X
1
-M)
2
+(X
1
-M)
2
+...+(X
N
-M)
2
Norma =-----------------------------------------
N
2
Donde M es la media aritmtica del vector X.

5.- Hacer un diagrama de flujo que lea dos matrices y que calcule su producto.

6.- Hacer un diagrama de flujo que lea dos matrices y que calcule su suma.

7.- Hacer un diagrama de flujo que lea una matriz entera de dimensin NxM y que
calcule su matriz transpuesta.

8.- Hacer un diagrama de flujo que lea una matriz entera de dimensin NxM y que
calcule el promedio de sus elementos.

9.- Hacer una diagrama de flujo que lea una matriz de caracteres de dimensin
NxM y que indique cuntos de los caracteres de tal matriz son letras a.

10.- Que lea dos vectores numricos de dimensin N y que indique cul de ellos
tiene la mayor media aritmtica de sus elementos.




CAPTULO VI


SUBRUTINAS













6.1 Definicin.

La programacin estructurada consiste en descomponer sucesivamente un
problema en mdulos que tratarn y programarn independientes unos de otros. A
estos mdulos tambin se les llama subprogramas.

El manejo de subprogramas en diagramacin se observa el esquema
mostrado en la Figura 6.1.

Figura 6.1. Esquema para el uso de subprogramas en diagramacin.
Subprograma B
Subprograma
A
?
Subprograma A
Operacin 1
Operacin 2
.
.
Fin
Subprograma B
Operacin 1
Operacin 2
.
.
Fin



Ejemplo: Elaborar un diagrama de flujo que genere un men con tres opciones:

1.- Suma de dos nmeros
2.- Promedio de N nmeros
3.- Terminar el algoritmo

El diagrama debe desarrollar las opciones 1 y 2 como subprogramas.

Subprograma B
Subprograma
A
Segn Opc
Subprograma A
Fin
Subprograma B
Fin
I nicio
Opc
Menu
1.- Suma de dos nmeros
2.- Promedio de N nmeros
3.- T erminar algoritmo
1 2
Otro
Opc=3
Fin
Cierto
Falso
a,b
c=a+b
c
N
s=0
i=1, N
X[i]
s=s+x[i]
P=s/N
P

También podría gustarte