contenido p - fcqi.tij.uabc.mxfcqi.tij.uabc.mx/usuarios/cgaxiola/apuntesmp.pdf · palabras...
TRANSCRIPT
-
1
Contenido
Introduccin ..........................................................................................................5
Conceptos bsicos................................................................................................6
Proceso.............................................................................................................6
Algoritmo...........................................................................................................6
Procedimiento ...................................................................................................7
Programa ..........................................................................................................7
Tipos de datos...................................................................................................7
Numrico .......................................................................................................8
Alfanumrico..................................................................................................8
Memoria ............................................................................................................9
Constante ......................................................................................................9
Variable .........................................................................................................9
Identificadores .............................................................................................10
Expresiones ....................................................................................................10
Expresiones aritmticas...............................................................................13
Expresiones relacionales.............................................................................14
Expresiones lgicas.....................................................................................15
Ejercicios propuestos ......................................................................................16
Metodologa para la solucin de problemas .......................................................17
Definicin del problema...................................................................................17
Planeacin de la solucin................................................................................18
Algoritmo.........................................................................................................18
2
Pedir datos. .................................................................................................19
Desplegar datos...........................................................................................20
Evaluar condiciones.....................................................................................20
Ejecutar operaciones. ..................................................................................21
Diagrama de flujo. ...........................................................................................22
Bloques terminales ......................................................................................23
Bloques de entrada/salida ...........................................................................23
Bloques de proceso.....................................................................................24
Bloques de decisin o condicionales...........................................................24
Bloques de conexin ...................................................................................25
Codificacin y edicin......................................................................................26
Pruebas y depuracin. ....................................................................................27
Documentacin y Mantenimiento. ...................................................................27
Problemas secuenciales. ....................................................................................29
Definicin. .......................................................................................................29
Caractersticas. ...............................................................................................29
Ejemplos. ........................................................................................................30
Ejercicios propuestos ......................................................................................33
Problemas condicionales. ...................................................................................36
Definicin ........................................................................................................36
Problemas condicionales simples ...................................................................36
Problemas condicionales compuestos ............................................................37
Problemas condicionales mltiples .................................................................39
-
3
Ejercicios propuestos ......................................................................................46
Problemas repetitivos .........................................................................................51
Contador .........................................................................................................51
Acumulador.....................................................................................................52
Interruptor........................................................................................................53
Ciclos ..............................................................................................................53
Ciclo de repeticin por contador ..................................................................53
Ciclo de repeticin de prueba por arriba......................................................55
Ciclo de repeticin de prueba por abajo ......................................................55
Problemas repetitivos simples.........................................................................56
Problemas repetitivos compuestos .................................................................56
Ejemplos .........................................................................................................57
Problemas propuestos ....................................................................................65
Estructuras dimensionales..................................................................................67
Vectores..........................................................................................................68
Matrices...........................................................................................................70
Ejemplos .........................................................................................................70
Problemas propuestos ....................................................................................74
Mdulos ..............................................................................................................76
Parmetros......................................................................................................78
Representacin de mdulos............................................................................79
Pseudocdigo .....................................................................................................84
Palabras reservadas .......................................................................................84
4
Entrada / Salida...............................................................................................84
Estructuras de control .....................................................................................86
-
5
Introduccin
La metodologa de la programacin le dar al alumno una visin
ms amplia a la hora de enfrentarse a sus desarrollos. Se conocern
los distintos enfoques o paradigmas de programacin que existen
actualmente, principalmente, la programacin imperativa o tradicional,
en la que se ejecutan las instrucciones en el orden establecido.
Se conocern y entendern diferentes conceptos necesarios para
entender la programacin, como son los fundamentos lgicos, el
concepto de algoritmo como frmula para la resolucin de un
problema, las diferentes estructuras de datos para almacenar y
organizar datos y las estructuras de control utilizadas para dirigir la
ejecucin de un programa. Todos estos conceptos sern necesarios a
la hora de analizar, disear, implementar, documentar y probar un
programa.
Esta obra tiene pseudocdigo enfocado al lenguaje C. El motivo de
escoger dicho lenguaje es porque en las materias sucesivas ser el
lenguaje en el que se van a desarrollar la codificacin de los
programas de computadora, adems de su rigidez, por lo que se
"obliga" al participante a programar siguiendo una metodologa
estricta que le har comprender la esencia de la programacin,
pudiendo aplicar despus los conocimientos adquiridos a otros
lenguajes invirtiendo un mnimo esfuerzo.
6
Conceptos bsicos
Dentro de la metodologa de la programacin existen algunos
conceptos que se deben estudiar para apreciar mejor el concepto de
una metodologa. Estos conceptos son proceso, algoritmo,
procedimiento y programa. Estos conceptos se explican con detalle en
las siguientes secciones. Tambin se presentan los conceptos de tipos
de datos, como numricos y alfanumricos, zonas de memoria, en
donde se encuentran los conceptos de constante y variable y las reglas
de los identificadores y las expresiones aritmticas, lgicas y
relacionales desarrollando algunos ejemplos.
Proceso
Es un conjunto de acciones que manipulan informacin a partir de un
estado inicial (datos de entrada) para obtener un resultado (datos de
salida).
PROCESODATOS DE
ENTRADA
DATOS DE
SALIDA
Algoritmo
Formalmente se define un algoritmo como un conjunto de pasos,
procedimientos o acciones secuenciales y detalladas para resolver un
problema o alcanzar un resultado.
-
7
Por ejemplo para leer un libro, se hace de una manera automtica que
no se da cuenta del procedimiento que se hace para terminar de
leerlo. Los pasos ms bsicos para leer un libro serian, abrir el libro en
la primera pgina, leer la primera pgina, dar vuelta a la hoja, leer la
siguiente pgina, y as sucesivamente hasta terminar de leer el libro y
cerrarlo.
Procedimiento
Tambin llamado subprograma, es una seccin dentro de un programa
donde se realizan actividades o pasos especficos. Imaginar que la
operacin de suma en un programa se quiere realizar 10 veces, para
esto se tendran que hacer 10 sumas dentro de un programa, sin
embargo, cuando se tiene un procedimiento que hace cualquier suma,
entonces se llama las veces que sea necesario y as se ahorra tiempo y
recursos para el problema que se este resolviendo.
Programa
El concepto de programa fue desarrollado por Von Neumann en 1946 y
lo define como un conjunto de instrucciones que sigue la computadora
para alcanzar un resultado especfico.
Tipos de datos
Los datos a procesar por una computadora pueden ser de dos tipos:
datos numricos y datos alfanumricos.
8
Numrico
Los datos numricos son nmeros enteros y nmeros reales. Los
nmeros enteros pueden estar precedidos por los signos + o y no
tienen punto decimal, por ejemplo:
123 -541 +789 10 78912
Los nmeros reales pueden estar precedidos por los signos + o y
tienen punto decimal, por ejemplo:
3.14159 9.81 -8.124 -7.5
Alfanumrico
Los datos alfanumricos son datos de tipo caracter y cadena de
caracteres. Son datos cuyo contenido puede ser letras, dgitos o
smbolos especiales (, @, #, $, %, ^, &, etc.) y deben estar entre
comillas simples () o comillas dobles (). Aunque este tipo de datos
puede contener nmeros no es posible realizar operaciones aritmticas
con ellos.
Un dato de tipo carcter contiene solamente un carcter, por ejemplo
a # 5 D
-
9
Un dato de tipo de cadena de caracteres contiene un conjunto de
caracteres, normalmente la longitud de la cadena de caracteres es de
255 caracteres.
Ejemplos:
abcde Juan Perez 123-4567
Memoria
Las zonas de memoria estn formadas por un nombre para su
identificacin, y un contenido, el cual ser el dato que se guarda en
ellas. Por ejemplo, si el contenido es 15 y el nombre de la variable es
edad, entonces significa que hay una zona de memoria que se llama
edad cuyo valor es 15.
Constante
Son zonas de memoria cuyo contenido no cambia durante la fase de
procesamiento de informacin.
Variable
Son zonas de memoria cuyo contenido cambia durante la fase de
procesamiento de informacin.
10
Identificadores
Los nombres de estas zonas de memoria se forman respetando las
siguientes reglas:
1. El primer carcter debe ser una letra.
2. Los dems caracteres podrn ser letras, nmeros o guiones; las
letras no deben estar acentuadas.
Por ejemplo:
Suma Num_1 Dato01 nombre EDAD
Los identificadores deben ser representativos de la funcin que
cumplen en el procedimiento o programa. Por ejemplo si se va a
realizar una suma de dos nmeros, los identificadores que se podran
usar serian Numero1, Numero2 y Suma, por ejemplo.
Expresiones
Al conjunto de operadores y operandos que producen un valor se le
llama expresin. Existen expresiones aritmticas, relacionales y
lgicas.
Una expresin esta compuesta por operadores y operandos. Un
operador es un smbolo o palabra que significa qu operacin se va a
realizar entre uno o dos valores, llamados operandos. Estos valores
pueden ser variables o constantes.
-
11
Cuando se utilizan variables como operandos se toma el valor de la
variable y no el nombre que identifica a la variable.
En forma general una expresin se puede expresar de una de las
siguientes dos formas:
Operando1 OPERADOR Operando2
OPERADOR Operando
Existen cuatro tipos de operadores: asociativos, aritmticos,
relacionales y lgicos.
El nico operador asociativo es el parntesis (), el cual permite indicar
en que orden deben realizarse las operaciones. Cuando una expresin
se encentra entre parntesis, indica que las operaciones que estn
dentro de ellos deben realizarse primero. Si en una expresin se utiliza
ms de un parntesis se deber proceder primero con los que se
encuentren ms hacia el centro de la expresin.
Los operadores aritmticos son operadores que permiten realizar
operaciones aritmticas entre operandos.
El resultado que se obtiene al evaluar una expresin aritmtica es un
nmero. Al evaluar expresiones que contienen operadores aritmticos,
se respeta una jerarqua en el orden en que se aplican. Es decir, si se
tiene una expresin aritmtica con al menos dos operadores de
distinta jerarqua, se deber realizar primero una operacin y luego la
otra. La siguiente tabla muestra los operadores aritmticos ordenados
de mayor a menor jerarqua. Los operadores aritmticos son:
12
OPERADOR OPERACIN
^ Potenciacin
*, / Multiplicacin, Divisin
+, - Suma, Resta
Los operadores relacionales son operadores que permiten compara dos
valores, sean numricos o alfanumricos. El resultado obtenido es un
valor de verdad, que puede ser V (verdadero) o F (falso). La
comparacin entre un dato numrico y un dato alfanumrico no puede
llevarse a cabo. Los operadores relacionales son los siguientes:
OPERADOR OPERACIN
= Igual que
o >< Diferente que
< Menor que
> Mayor que
= Mayor o igual que
Los operadores lgicos son operadores que permiten realizar las
operaciones lgicas de conjuncin, disyuncin y negacin. El resultado
obtenido es un valor de verdad que puede ser V (verdadero) o F
(falso). Los operadores lgicos se muestran a continuacin, indicando
la jerarqua de mayor a menor:
OPERADOR OPERACIN
NOT Negacin
AND Conjuncin
OR Disyuncin
-
13
Recordar que la negacin cambia el valor verdadero por el falso, y
viceversa. En la conjuncin se necesitan dos valores verdaderos para
producir otro verdadero; en cualquier otro caso se produce un valor de
falso. En la disyuncin, con cualquiera de los dos valores de los
operadores, que sea verdadero, se obtiene un resultado de verdadero;
en caso contrario el valor ser falso.
Expresiones aritmticas
Para resolver una expresin aritmtica se deben seguir las siguientes
reglas:
1. Primero se resuelven las expresiones que se encuentran entre
parntesis.
2. Se procede aplicando la jerarqua de operadores. En caso de que
haya dos operadores con la misma jerarqua se procede de
izquierda a derecha.
Ejemplo 1.
Resolver la siguiente expresin aritmtica 3*(4+7^2) +3/1-45
3*(4+7^2) +3/1-45
3*(4+49) +3/1-45
3*53 +3/1-45
159 +3/1-45
159 +3-45
162-45
117
14
Ejemplo 2.
Resolver la siguiente expresin aritmtica 2+4*((6+3)+7*2^1^2)-
25^(1/2)
2+4*((6+3)+7*2^1^2)-25^(1/2)
2+4*(9+7*2^1^2)-25^(1/2)
2+4*(9+7*2^2)-25^(1/2)
2+4*(9+7*4)-25^(1/2)
2+4*(9+28)-25^(1/2)
2+4*37-25^(1/2)
2+4*37-25^0.5
2+4*37-5
2+148-5
150-5
145
Expresiones relacionales
El resultado de una expresin con operadores relacionales es
verdadero o falso.
Las reglas para resolver las expresiones relacionales son las
siguientes:
1. Se resuelven primero los parntesis.
2. Se encuentran los valores de verdad de las expresiones.
3. Se aplica la jerarqua de operadores lgicos. En caso de haber
dos operadores iguales se procede la operacin de izquierda a
derecha.
-
15
Expresiones lgicas
Las reglas para resolver las expresiones lgicas son las siguientes:
1. Se resuelven primero los parntesis.
2. Se encuentran los valores de verdad de las expresiones
relacionales.
3. Se aplica la jerarqua de operadores lgicos. En caso de haber
dos operadores iguales se procede la operacin de izquierda a
derecha.
Ejemplo 3.
Resolver la siguiente expresin lgica relacional (5^2) > (16+3)
(5^2) > (16+3)
25 > (16+3)
25 > 19
V
Ejemplo 4.
Resolver la siguiente expresin lgica relacional (7*3^2) > 21 OR
((6+5)*3) < (6+5*3)
(7*3^2) > 21 OR ((6+5)*3) < (6+5*3)
(7*3^2) > 21 OR (11*3) < (6+5*3)
(7*9) > 21 OR (11*3) < (6+5*3)
63 > 21 OR (11*3) < (6+5*3)
63 > 21 OR 33 < (6+5*3)
63 > 21 OR 33 < (6+15)
63 > 21 OR 33 < 21
V OR 33 < 21
V OR F
V
16
Ejercicios propuestos
Aplicando la jerarqua de operadores, encontrar el valor de cada una
de las siguientes expresiones:
1. 4 + 1 * 5^2 1
2. 9 / 3 + 4^2 5 * 1 + 9 / -2 + 3
3. 5 / 2 + 3 4 * 5 / 2
4. (4 + 1) * 5^2 1
5. 17 / 2 + 3^2^2 2 * 2 / 2
Aplicando la jerarqua de operadores, encontrar el valor de verdad de
cada una de las siguientes expresiones: Para el problema 1 los valores
para las variables son: M = 8, N = 9, R = 5, S = 5, T = 4
1. NOT ((M > N AND R > S) OR (NOT (T < V AND S > M)))
2. (3 * 2^2 4 / 2 * 1) > (3 * 2^-4 / 2 * 1) AND (5 > 9 / 3)
3. (3 >= 3 OR 5 5) AND NOT (15 / 5 + 2 5)
4. NOT (NOT ((3 (-3)) * 2 > (3 (-3) *2) OR 1^3 * 2 > 6))
5. (3 >= 4 AND 5 > 3 AND 3 > 3) OR NOT (4 4 OR 6 >= 7)
-
17
Metodologa para la solucin de problemas
Se sabe que una computadora es un aparato electrnico que ejecuta
tareas de una manera veloz y precisa, pero no es capaz de razonar
autnomamente. Por eso la persona que instruir a la computadora es
la que debe razonar el problema. Si la persona la instruye correcta o
incorrectamente sta har de igual manera las tareas que se le
encomienden.
La persona capaz de instruir a la computadora usando algn lenguaje
computacional, es llamado programador; se le llama programa al
conjunto de instrucciones escritas en un lenguaje computacional.
La prctica debe hacerse mediante una serie de pasos, llamados
metodologa para la solucin de problemas por medio de computadora,
los cuales se enumeran a continuacin:
1. Definicin del problema
2. Planeacin de la solucin
3. Algoritmo
4. Diagrama de flujo
5. Codificacin y edicin
6. Pruebas y depuracin
7. Documentacin y mantenimiento
Definicin del problema.
La definicin del problema se centra en la elaboracin de un texto que
permitir saber qu es lo que se pretende solucionar, y proporcionar
informacin til para el planteamiento de la solucin.
18
Cabe mencionar que no siempre ser til la informacin que se
proporcione para poder solucionar el problema.
Planeacin de la solucin.
En este paso se debe entender por completo el problema y dejar en
claro cul es la informacin til que se da, qu otra hace falta y, con
base en esto, determinar la mejor solucin. Si hiciera falta
informacin, en esta fase del problema se podra determinar que el
problema no tiene solucin.
En esta fase tambin se define formalmente lo que se debe entregar
como resultado. Dado que esta informacin, una vez resuelto el
problema, saldr de la computadora, se puede decir que es una salida
de informacin. De igual manera, la informacin adicional que se
necesite pedir, constituye una entrada de informacin hacia la
computadora.
Algoritmo.
Como se mencion en el capitulo anterior, un algoritmo es una serie
de pasos ordenados, encaminados a resolver un problema. Para
establecer esta serie de pasos se requiere de una reflexin previa del
problema dada por el paso anterior (planeacin de la solucin).
Adems, se podr observar que aunque en el paso anterior ya se sabe
cmo obtener la solucin del problema, nada se dice de qu hacer
antes y despus de aplicar la solucin.
-
19
Las acciones que se pueden llevar a cabo en un algoritmo son las
siguientes: pedir datos, desplegar datos, evaluar condiciones y
ejecutar operaciones. A continuacin se explica el uso de cada una de
ellas.
Pedir datos.
Lo que una computadora puede pedir son nmeros o palabras, que
automticamente son asignados a una zona de memoria de la
computadora, llamada como el programador quiere nombrarle. Puede
ser una pequea zona llamada nmero y que contenga al nmero 5, o
puede ser una zona menos pequea llamada oracin que contenga la
frase Estoy aprendiendo computacin. A estas zonas de memoria en
donde se guardan datos se les denomina variables.
Formato de peticin de datos:
PEDIR variable
Ejemplos:
PEDIR costo
PEDIR edad
PEDIR nombre
20
Desplegar datos.
Una computadora puede mostrar, por pantalla o impresora, nmeros o
palabras que, en su conjunto, den el resultado esperado.
Probablemente estos nmeros o palabras estn almacenados en
variables creadas durante la ejecucin del programa.
Formato del despliegue de datos:
DESPLEGAR mensaje
DESPLEGAR variable
DESPLEGAR mensaje/variable
Ejemplos:
DESPLEGAR El valor excede a 200 000 pesos
DESPLEGAR edad
DESPLEGAR El nombre de la persona es: + nombre
Evaluar condiciones.
La computadora es capaz de comparar nmeros para saber si alguno
es mayor, menor o igual que otro; tambin es capaz de comparar
palabras para saber si alguna es ms extensa o tiene precedencia
alfabtica sobre la otra, etctera. El propsito de evaluar condiciones
es decidir qu accin es la que va a seguir a continuacin en caso de
que una condicin se cumpla o no.
-
21
Formatos para evaluar condiciones:
SI condicin ENTONCES
acciones_V
DE_OTRA_FORMA
acciones_F
FIN_SI
SI condicin ENTONCES
acciones_V
FIN_SI
Ejemplo:
SI precio < 200 000 ENTONCES
DESPLEGAR El precio es accesible
DE_OTRA_FORMA
DESPLEGAR El precio es inaccesible
Ejecutar operaciones.
La mquina puede realizar operaciones aritmticas guardando el
resultado en alguna variable. Tambin puede determinar el valor inicial
para alguna variable.
Formato para realizar operaciones:
variable ! expresin_numrica
variable ! expresin_alfanumrica
22
Ejemplos:
nueva_edad ! edad +10
Lo cual significa que el valor de la variable edad, incrementado en 10,
es almacenado en otra zona de memoria llamada nueva_edad.
gastos_actuales ! 56000
Lo cual significa que la variable gastos_actuales simplemente toma el
valor de 56000.
nombre ! Alberto Jimnez
Lo cual significa que la variable nombre toma el valor de Alberto
Jimnez
Diagrama de flujo.
Un diagrama de flujo esta definido como la representacin grfica de
un algoritmo. Un diagrama de flujo debe hacerse porque regularmente
resulta ms fcil entender dibujos que entender un texto, sobre todo
cuando el algoritmo tiende a hacerse grande.
En un diagrama de flujo existen figuras con informacin dentro de
cada una de ellas, con flechas que indican la secuencia. A las figuras
se les llamara de ahora en adelante bloques; existen bloques de varios
tipos:
-
23
Bloques terminales
Se emplean para indicar el principio y el fin del diagrama de flujo. Su
forma es:
Si se escribe la palabra INICIO dentro del smbolo, sirve como el
bloque indicador del inicio del diagrama de flujo. Si se escribe la
palabra FIN, ser el que indique que se ha terminado. Debe haber slo
un bloque de inicio y uno de fin en todo el diagrama de flujo.
Bloques de entrada/salida
Se emplean para introducir datos a la computadora o exteriorizarlos.
El bloque de entrada tiene la siguiente forma:
El bloque de salida de datos tiene la siguiente forma:
24
Dentro de las figuras se anotan los datos que estn entrando o
saliendo, segn el caso.
Bloques de proceso
En ellos se indica una accin imperativa o una operacin aritmtica. Su
forma es:
Bloques de decisin o condicionales
Son preguntas del tipo SI o NO, que pueden alterar la secuencia en la
ejecucin de los bloques del diagrama de flujo, dependiendo si la
respuesta es afirmativa o negativa. Su forma es:
Dentro de la figura, se anota la pregunta, a la derecha se indica la
accin o acciones que deben hacerse en caso de que la respuesta a la
pregunta sea afirmativa, mientras que por el lado izquierdo las
acciones que deben hacerse en el caso de respuesta negativa. Un
bloque condicional siempre debe terminar con un pequeo crculo que
une al ltimo bloque de la parte afirmativa con el ltimo bloque de la
-
25
parte negativa. Cuando no se cumpla esta regla, debe escribirse en la
flecha la palabra SI para indicar el camino en dado caso que la
condicin sea verdadera.
Bloques de conexin
Son figuras que determinan que la secuencia de acciones en un
diagrama contina en alguna otra parte. Su forma es:
Dentro de la figura se anota una letra o nmero para identificar un
conector de otro. La funcin de los conectores depende de su forma. Si
la forma es de este tipo:
significa que la secuencia de los bloques contina en donde se
encuentre otro conector igual. Cuando se tienen problemas de espacio
al escribir los diagramas estos conectores son muy tiles. Y cuando se
tiene esta otra forma:
26
implica que se seguir con los bloques en donde se encuentre otro
conector igual y al terminar la secuencia regresar al bloque que sigue
al conector original.
Una vez que se ha pasado el algoritmo al diagrama de flujo se debe
probar su funcionalidad. Para esto, se anotan a un lado del diagrama
las variables del problema y los valores que van tomando al ir
siguiendo la secuencia del diagrama para verificar que estn correctos.
Si el diagrama tiene bloques condicionales se deben hacer tantas
pruebas como combinaciones de condiciones haya.
Codificacin y edicin.
La codificacin consiste en traducir el diagrama de flujo a instrucciones
de un lenguaje de programacin, por ejemplo C/C++, Pascal, Java,
Basic, etc.
Al conjunto de instrucciones escritas en un lenguaje de computadora
se llama programa. La edicin consiste en introducir el programa a la
computadora por medio de un editor de textos.
Debe cuidarse el aspecto de la sintaxis en la codificacin de un
programa, ya que las instrucciones deben tener un orden en la
secuencia de las palabras y smbolos que las componen. Por ejemplo
en espaol no es lo mismo decir:
El caballo blanco de Napolen, que: Napolen blanco de el caballo.
-
27
Pruebas y depuracin.
Una vez que se tiene el programa introducido en la computadora, debe
probarse exhaustivamente, ejecutando el programa hasta concluir que
los resultados son los deseados y que no tiene errores. Para esto se
deben prepara datos de prueba en papel, as como su solucin para
cotejarlo con la solucin que obtenga la computadora.
Si el programa tiene errores sintcticos stos pueden corregirse
simplemente consultando un libro de instrucciones del lenguaje. No as
si el problema es de lgica, en cuyo caso debe revisarse y corregirse
desde el algoritmo.
Documentacin y Mantenimiento.
Una vez que el paso anterior ha sido completado, todos los pasos
anteriores de la metodologa de solucin de problemas por medio de la
computadora, deben pasarse en limpio y quedar archivados dentro de
una carpeta llamada documentacin.
Para el paso 5 (codificacin) debe obtenerse un listado del programa
impreso por computadora, al igual que las pruebas que se hicieron en
el paso 6.
Si por algn motivo se llega a modificar el programa generalmente
porque cambian los requerimientos del problema toda la
documentacin debe modificarse. Al proceso de mantener los
programas y su documentacin se le llama mantenimiento.
28
Dado que tiempo despus de haber hecho el programa ni el mismo
programador puede recordar con exactitud cmo resolvi determinado
problema, la importancia de tener la documentacin actualizada radica
en su utilidad.
-
29
Problemas secuenciales.
Definicin.
Se caracterizan porque una accin se ejecuta detrs de otra. El flujo
del programa coincide con el orden fsico en el que se han ido
poniendo las instrucciones.
Caractersticas.
Para escribir un algoritmo en modo secuencial en la tabla se puede
apreciar que las acciones estn una debajo de la otra y se ejecuta la
accin_2 despus de la accin_1 y as sucesivamente hasta llegar a la
accion_n. Tambin se muestra el diagrama de flujo para cualquier
problema secuencial.
Algoritmo Diagrama de flujo
accin_1
accin_2
accion_n
INICIO
accion_1
accion_2
accion_n
...
FIN
30
Ejemplos.
Aplicar los primeros cuatro pasos de la metodologa para la solucin de
problemas por medio de la computadora para resolver los siguientes
problemas:
Ejemplo 3.1. Encontrar el rea de un crculo de radio 5.
DEFINICIN DEL PROBLEMA
area = " * radio ^ 2
PLANEACIN DE LA SOLUCIN
Datos de entrada:
radio = 5
Datos de salida:
area
ALGORITMO
1. radio ! 5
2. area ! 3.1416 * radio ^ 2
3. DESPLEGAR El rea del circulo de radio 5 es: + area
DIAGRAMA DE FLUJO
-
31
INICIO
radio 5
area 3.1416 * radio ^ 2
"El area del circulo
de radio 5 es" + area
FIN
Ejemplo 3.2. Suponer que un individuo decide invertir su capital en un
banco y desea saber cuanto dinero ganar despus de un mes si el
banco paga a razn de 2% mensual.
DEFINICIN DEL PROBLEMA
La variable capital representa el dinero a invertir
La variable interes representa el interes sobre el capital que se va a
invertir
PLANEACIN DE LA SOLUCIN
Datos de entrada:
capital
Datos de salida:
interes
Proceso:
interes ! capital * 0.02
32
ALGORITMO
1. PEDIR capital
2. interes ! capital * 0.02
3. DESPLEGAR El inters ganado es: + interes
DIAGRAMA DE FLUJO
capital
INICIO
interes capital * 0.02
"El interes ganado
es" + interes
FIN
-
33
Ejercicios propuestos
Aplicar los primeros cuatro pasos de la metodologa de la solucin de
problemas por medio de la computadora para resolver los siguientes
problemas:
1. Encontrar el rea de un crculo con radio 10.
2. Modificar el problema anterior para que sea capaz de calcular el
rea de un crculo de cualquier radio requerido.
3. Determinar el rea y permetro de un rectngulo cualquiera.
4. Suponga que un individuo decide invertir su capital en un banco y
desea saber cuanto dinero ganar despus de un mes si el banco
paga a razn de 2% mensual.
5. Un vendedor recibe un sueldo base, ms un 10% extra por
comisiones de sus ventas. El vendedor desea saber cuanto dinero
obtendr por concepto de comisiones por las tres ventas que realiz
en el mes, y el total que recibir en el mes tomando en cuenta su
sueldo base y sus comisiones.
6. Una tienda ofrece un descuento del 15% sobre el total de la compra
y un cliente desea saber cunto deber pagar finalmente por su
compra.
7. Un alumno desea saber cul ser su calificacin final de la materia
de computacin. Dicha calificacin se compone de los siguientes
34
porcentajes: 55% del promedio de sus tres calificaciones parciales;
30% de la calificacin del examen final y 15% de la calificacin de
un trabajo final
8. Un maestro desea saber qu porcentaje de hombres y que
porcentaje de mujeres hay en un grupo de estudiantes.
9. Dada una cantidad en pesos, obtener la equivalencia en dlares,
asumiendo que la unidad cambiaria es un dato desconocido.
10. Calcular el numero de pulsaciones que una persona debe tener
por cada 10 segundos de ejercicio, si la frmula es: nmero de
pulsaciones = (220 edad) /10
11. Calcular el nuevo salario de un obrero si obtuvo un incremento
del 25% sobre su salario anterior.
12. En un hospital existen tres reas: Ginecobstetricia, Pediatra y
Traumatologa. El presupuesto anual del hospital se reparte
conforme a la siguiente tabla:
rea Porcentaje del
presupuesto
Ginecobstetricia 40%
Traumatologa 30%
Pediatra 30%
Obtener la cantidad de dinero que recibir cada rea, para cualquier
monto presupuestal.
-
35
13. El dueo de una tienda compra un artculo a un precio
determinado. Obtener el precio a que lo debe vender para obtener
una ganancia del 30%.
14. Tres personas deciden invertir su dinero para fundar una
empresa. Cada una de ellas invierte una cantidad distinta. Obtener
el porcentaje que cada quien invierte con respecto a la cantidad
total invertida.
36
Problemas condicionales.
Definicin
Los problemas condicionales se basan en la evaluacin de una
condicin, si la condicin es verdadera se ejecutan una serie de
acciones y si la condicin es falsa puede o no ejecutarse otro conjunto
de acciones.
Existen tres tipos de problemas condicionales. Los problemas
condicionales simples, compuestos y mltiples, en las siguientes
secciones se explican con detalle.
Problemas condicionales simples
Existen dos formatos para los tipos de problemas secuenciales
simples. El primero solo tiene un conjunto de acciones para cuando la
condicin que se evala es verdadera, es decir carece de conjunto de
acciones para ejecutarse cuando la condicin sea falsa. El formato
general es como se muestra en la siguiente tabla:
-
37
Algoritmo Diagrama de flujo
SI condicin ENTONCES
accion_V
FIN_SI condicion
accion_V
SI
SI condicin ENTONCES
accion_V
DE_OTRA_FORMA
accion_F
FIN_SI
condicion
accion_Vaccion_F
SI
Problemas condicionales compuestos
Un problema condicional compuesto es cuando en la parte de la
condicin existe mas de una condicin para evaluar separados por los
operadores NOT, OR o AND. Puede haber uno o ms de ellos y
tambin combinacin de los mismos. A esta combinacin se le da el
nombre de expresin. En este tipo de problemas tambin existen dos
tipos al igual que en los problemas condicionales simples. En la tabla
siguiente se muestra el algoritmo y diagrama de flujo correspondiente.
38
Algoritmo Diagrama de flujo
SI expresin ENTONCES
accion_V
FIN_SI expresion
accion_V
SI
SI expresin ENTONCES
accion_V
DE_OTRA_FORMA
accion_F
FIN_SI
expresion
accion_Vaccion_F
SI
Tanto los problemas condicionales simples como los problemas
condicionales compuestos pueden estar anidados, es decir, estar una
dentro de la otra, como se puede observar en la siguiente forma
general:
SI condicion1 ENTONCES
acciones1
DE_OTRA_FORMA
SI condicion2 ENTONCES
acciones2
DE_OTRA_FORMA
SI condicion3 ENTONCES
-
39
acciones3
DE_OTRA_FORMA
accionesX
FIN_SI
FIN_SI
FIN_SI
Problemas condicionales mltiples
En los problemas condicionales mltiples permite que el flujo del
diagrama se bifurque por varias ramas en el punto de la toma de
decisin (es), esto es en funcin del valor que tome la expresin. Si el
valor que toma la expresin es el valor1 entonces se ejecutaran las
acciones1, si el valor que toma la expresin es el valor2, se ejecutaran
las acciones2 hasta el valorN, entonces se ejecutaran las accionesN.
Cada grupo de acciones puede estar ligado con un solo valor, varios
valores separados por comas, un rango de valores expresados como
valorInicial..valorFinal o una mezcla de valores y rangos.
Cuando el valor obtenido no se encuentre en la lista de valores se
ejecutaran las acciones establecidas en la clusula SI_NO, si existe
dicha clusula.
En la siguiente tabla se muestra el algoritmo y diagrama de flujo para
este tipo de problemas condicionales mltiples.
40
Algoritmo Diagrama de flujo
SEGN_SEA expresin HACER
lista1 : accion1
lista2 : accion2
...
[SI_NO :
accionN]
FIN_SEGUN
expresion
accion1 accion2 accionN...
lista1 lista2 SI_NO
4.1 Ejemplos
Ejemplo 4.1. Determinar si un alumno aprueba o reprueba un curso,
sabiendo que aprobar si su promedio de tres calificaciones es igual o
mayor a 7; reprueba en caso contrario.
DEFINICIN DEL PROBLEMA
Las variables calif1, calif2 y calif3 representan las calificaciones de un
alumno
La variable prom representa el promedio de las tres calificaciones de
un alumno
PLANEACIN DE LA SOLUCIN
Datos de entrada:
calif1
calif2
calif3
-
41
Datos de salida:
Aprobado o No Aprobado
Proceso:
prom ! (calif1 + calif2 + calif3) / 3
ALGORITMO
1. PEDIR calif1
2. PEDIR calif2
3. PEDIR calif3
4. prom ! (calif1 + calif2 + calif3) / 3
5. SI prom >= 7 ENTONCES
6. DESPLEGAR Aprobado
7. DE_OTRA_FORMA
8. DESPLEGAR No Aprobado
9. FIN_SI
DIAGRAMA DE FLUJO
42
INICIO
FIN
calif1
calif2
calif3
prom (calif1+calif2+calif3) / 3
prom >= 7
"Aprobado""No Aprobado"
SI
Ejemplo 4.2.
Determinar si un nmero es positivo, negativo o nulo.
DEFINICIN DEL PROBLEMA
La variable num representa el nmero a analizar
PLANEACIN DE LA SOLUCIN
Datos de entrada:
num
Datos de salida:
Positivo, Negativo o Nulo
-
43
ALGORITMO
1. PEDIR num
2. SI num > 0 ENTONCES
3. DESPLEGAR Positivo
4. DE_OTRA_FORMA
5. SI num < 0 ENTONCES
6. DESPLEGAR Negativo
7. DE_OTRA_FORMA
8. DESPLEGAR Nulo
9. FIN_SI
10.FIN_SI
DIAGRAMA DE FLUJO
INICIO
FIN
num
num > 0
"Positivo"
"Negativo"
SI
num < 0
"Nulo"
SI
44
Ejemplo 4.3.
En una tienda se tiene una promocin. Si el total comprado es menor
de $200 el descuento es de 5%, si el total esta entre $200 y $500, el
descuento es de 15% y si el total de la compra es mayor que $500, el
descuento es del 25%. Escribir un programa que dependiendo del
monto total de la compra, determine el total a pagar.
DEFINICIN DEL PROBLEMA
La variable compra representa el monto total de la compra
La variable total representa el monto total a pagar
PLANEACIN DE LA SOLUCIN
Datos de entrada:
compra
Datos de salida:
total
Proceso:
total ! compra compra * 0.05
total ! compra compra * 0.15
total ! compra compra * 0.25
ALGORITMO
-
45
1. PEDIR compra
2. SEGN_SEA compra HACER
3. 0..199 : total ! compra compra * 0.05
4. 200..499 : total ! compra compra * 0.15
5. SI_NO : total ! compra compra * 0.25
6. FIN_SEGUN
7. DESPLEGAR total
DIAGRAMA DE FLUJO
INICIO
FIN
compra
compra
total compra - compra * 0.05total compra - compra * 0.05 total compra - compra * 0.05
total
0..199 200..499 SI_NO
46
Ejercicios propuestos
Aplicar los primeros cuatro pasos de la metodologa de la solucin de
problemas por medio de la computadora para resolver los siguientes
problemas:
Problemas selectivos simples
1. Determinar si un alumno aprueba o reprueba un curso, sabiendo
que aprobar si su promedio de tres calificaciones es igual o mayor
a 7; reprueba en caso contrario.
2. En un almacn se hace un 20% de descuento a los clientes cuya
compra supere los $1000. Cul ser la cantidad de dinero que
pagar una persona por su compra?
3. Un obrero necesita calcular su salario semanal, el cual se obtiene de
la siguiente manera: Si trabaja 40 horas o menos se le paga $4 por
hora. Si trabaja ms de 40 horas se le paga $4 por cada una de las
primeras 40 horas y $6 por cada hora extra.
4. Un hombre desea saber cunto dinero se generar por concepto de
intereses sobre la cantidad que tiene en inversin en el banco. l
decidir reinvertir los intereses siempre y cuando estos excedan a
$7000, y en ese caso desea saber cunto dinero tendr finalmente
en su cuenta.
5. Una persona enferma que pesa 70 kilogramos, se encuentra en
reposo y desea saber cuntas caloras consume su cuerpo durante
-
47
todo el tiempo que realice una misma actividad. Las actividades que
tiene permitido realizar son nicamente dormir o estar sentado en
reposo. Los datos que tiene son que estando dormido consume
1.08 caloras por minuto y estando sentado en reposo consume
1.66 caloras por minuto.
6. Una empresa quiere hacer una compra de varias piezas de la
misma clase a un fabricante de refacciones. La empresa,
dependiendo del monto total de la compra, decidir que hacer para
pagar al fabricante. Si el monto total de la compra excede de $500
000 la empresa tendr la capacidad de invertir de su propio dinero
un 55% del monto de la compra, pedir prestado un 30%, y el resto
lo pagar solicitando un crdito al fabricante. Si el monto total de la
compra no excede de $500 000 la empresa tendr la capacidad de
invertir de su propio dinero un 70% y el restante 30% lo pagar
solicitando un crdito al fabricante. El fabricante cobra por concepto
de intereses un 20% sobre la cantidad que se le pague a crdito. La
empresa necesita determinar: cunto dinero deber invertir, de sus
propios fondos; si hay necesidad cuanto tendr que pedir prestado
al banco, cunto tendr que pagar a crdito y cuanto pagar por
concepto de intereses que se generen en el crdito.
7. Calcular el total que una persona debe pagar en una llantera, si el
precio de cada llanta es de $300 si se compran menos de 5 llantas,
y de $250 si se compran 5 o ms.
8. En un supermercado se hace una promocin, mediante la cual el
cliente obtiene un descuento dependiendo de un nmero que
escoge al azar. Si el nmero escogido es menor que 74, el
48
descuento es del 15% sobre el total de la compra, y si es mayor o
igual a 74 el descuento es del 20%. Obtener cunto dinero se le
descuenta.
9. Una compaa de seguros est abriendo un departamento de
fianzas y estableci un programa para captar clientes, el programa
consiste en lo siguiente: Si el monto por el que se efecta la fianza
es menor que $50 000 la cuota a pagar ser por el 3% del monto, y
si el monto es mayor que $50 000 la cuota a pagar ser el 2% del
monto. La afianzadora desea determinar cul ser la cuota que
debe pagar un cliente.
10. En una escuela la colegiatura de los alumnos se determina segn
el nmero de materias que cursan. El costo de todas las materias
es el mismo. Se ha establecido un programa para estimular a los
alumnos, el cual consiste en lo siguiente: si el promedio obtenido
por un alumno en el ltimo periodo es mayor o igual que 9, se le
har un descuento del 30% sobre la colegiatura y no se le cobrar
IVA; si el promedio obtenido es menor que 9 deber pagar la
colegiatura completa, la cual incluye el 10% de IVA. Obtener cuanto
debe pagar un alumno.
Problemas selectivos compuestos.
11. Determinar la cantidad de dinero que recibir un trabajador por
concepto de las horas extras trabajadas en una empresa, sabiendo
que cuando las horas de trabajo exceden de 40, el resto se
consideran horas extras y que stas se pagan al doble de una hora
normal cuando no exceden a 8; si las horas extras exceden de 8 se
-
49
pagan las primeras 8 al doble de lo que se paga por una hora
normal y el resto al triple.
12. Calcular la utilidad que un trabajador recibe el reparto anual de
utilidades si ste se le asigna como un porcentaje de su salario
mensual que depende de su antigedad en la empresa de acuerdo
con la siguiente tabla:
TIEMPO UTILIDAD
Menos de 1 ao 5% del salario
1 ao o ms y menos de 2 aos 7% del salario
2 aos o ms y menos de 5 aos 10% del salario
5 aos o ms y menos de 10 aos 15% del salario
10 aos o ms 20% del salario
13. En una tienda de descuento se efecta una promocin en la cual
se hace un descuento sobre el valor de la compra total segn el
color de la bolita que el cliente saque al pagar en caja. Si la bolita
es blanca no se le har descuento alguno, si es verde se le har un
10% de descuento, si es amarilla un 25% de descuento, si es azul
un 50% y si es roja un 100%. Determinar la cantidad final que un
cliente deber pagar por su compra. Se sabe que slo hay bolitas
de los colores mencionados.
14. Una empresa que comercializa cosmticos tiene organizados a
sus vendedores en tres departamentos y ha establecido un
programa de incentivos para incrementar su productividad. El
gerente, al final del mes, pide el importe global de los tres
departamentos y aquellos que excedan el 33% de las ventas
50
globales se les paga una cantidad extra equivalente al 20% de su
salario mensual. Si todos los vendedores ganan lo mismo,
determinar cunto recibirn los vendedores de los tres
departamentos al finalizar el mes.
15. El Instituto Mexicano del Seguro Social (IMSS) requiere clasificar
a las personas que se jubilarn en el ao de 2003. Existen tres
tipos de jubilaciones: por edad, por antigedad joven y por
antigedad adulta. Las personas adscritas a la jubilacin por edad
deben tener 60 aos o ms y una antigedad en su empleo de
menos de 25 aos. Las personas adscritas a la jubilacin por edad
joven deben tener menos de 60 aos y una antigedad en su
empleo de 25 aos o ms. Las personas adscritas a la jubilacin por
edad adulta deben tener 60 aos o ms y una antigedad en su
empleo de 25 aos o ms. Determinar en que tipo de jubilacin,
quedar adscrita una persona.
-
51
Problemas repetitivos
La mayor parte de las soluciones a los problemas que se resuelven por
medio de la utilizacin de una computadora son procesos que se basan
en la repeticin de un grupo de instrucciones. Para facilitar la
implementacin de estos procesos existen las estructuras de repeticin
o ciclos. Una estructura de repeticin es aquella que le permite al
programador repetir un conjunto o bloque de instrucciones un nmero
determinado de veces mientras una condicin dada sea cierta o hasta
que una condicin dada sea cierta. Se debe establecer un mecanismo
para terminar las tareas repetitivas. Dicho mecanismo es una
expresin condicional que se evala cada vez que se realiza un ciclo.
La expresin condicional que controla la entrada al ciclo puede ser
verificada antes o despus de ejecutar el conjunto de instrucciones
que lo componen. En caso de que la evaluacin resulte verdadera se
repite el ciclo o caso de sea falsa lo terminar.
Muchos ciclos utilizan variables de propsito especial las cuales se
conocen como contadores, acumuladores e interruptores.
Contador
Un contador es una variable cuyo valor se incrementa o decrementa
en una cantidad constante cada vez que se produce un determinado
suceso o accin. Los contadores se utilizan en las estructuras
repetitivas con la finalidad de contar sucesos o acciones internas del
ciclo.
52
Con los contadores se debe realizar una operacin de inicializacin y,
posteriormente, las sucesivas de incremento o decremento del
contador.
La inicializacin consiste en asignarle al contador un valor. Se situar
antes y fuera del ciclo.
!
En cuanto a los incrementos o decrementos del contador, puesto que
la operacin de asignacin admite que la variable que recibe el valor
final de una expresin intervenga en la misma, se realizarn a travs
de este tipo de instrucciones de asignacin, de la siguiente forma:
! +
dicho podr ser positivo o negativo, Esta
instruccin se colocar en el interior del bucle.
Acumulador
Son variables cuyo valor se incrementa o decrementa en una cantidad
variable. Necesitan operaciones de:
o Inicializacin:
!
o Acumulacin:
! < nombre_acumulador > +
-
53
Hay que tener en cuenta que la siguiente operacin tambin
seria una operacin de acumulacin:
! < nombre_acumulador > +
Interruptor
Un interruptor, bandera o switch es una variable que puede tomar los
valores verdad o falso a lo largo de la ejecucin de un programa,
comunicando as informacin de una parte a otra del mismo. Pueden
ser utilizados para el control de bucles.
Ciclos
Ciclo de repeticin por contador
Tambin llamados ciclos es una estructura de repeticin que ejecuta
un conjunto de una o ms instrucciones una determinada cantidad de
veces.
La caracterstica de esta estructura es que el numero de veces que se
repetir el ciclo es conocido, ya sea por medio de una cantidad explicita
o por un valor asignado a una zona de memoria, sea esta constante o
variable. Si para establecer el numero de repeticiones se utiliza una
variable el valor asignado a esta no podr variar dentro del ciclo. Esta
estructura tiene asociada una variable ndice, la cual no podr ser
modificada dentro del ciclo.
La estructura de repeticin por contador comienza con un valor inicial
de la variable ndice y las acciones especificadas se ejecutan a menos
54
que el valor inicial sea mayor que el final. Por definicin la variable
ndice se incrementa en 1, pero se puede especificar cualquier otro
valor de incremento, y si este nuevo valor no excede al valor final se
ejecutan de nuevo las acciones. Si establecemos que la variable ndice
se decremente en cada iteracin el valor inicial deber ser superior al
final. Se considera siempre la variable ndice de tipo entero.
Algoritmo
DESDE variable ! valor_inicial HASTA valor_final
[incremento|decremento inc]
FIN_DESDE
Diagrama de flujo
-
55
Ciclo de repeticin de prueba por arriba
Lo que caracteriza este tipo de estructura es que las acciones del
cuerpo del ciclo se realizan cuando la condicin es cierta. Adems, se
analiza la expresin condicional al principio, de donde se deduce que
dichas acciones se podrn ejecutar 0 a N veces
Algoritmo
MIENTRAS HACER
FIN_MIENTRAS
Diagrama de flujo
Ciclo de repeticin de prueba por abajo
Las acciones del interior del ciclo se ejecutan una vez y continan
repitindose mientras que la condicin sea falsa. Se analiza la
56
expresin condicional al final del ciclo, de lo cual deducimos que las
acciones se ejecutan de 1 a N veces.
Algoritmo
REPETIR
HASTA
Diagrama de flujo
Problemas repetitivos simples
Los problemas repetitivos simples son aquellos que para su solucin
solo se involucra una estructura de repeticin.
Problemas repetitivos compuestos
Los problemas repetitivos compuestos son aquellos que para su
solucin se necesitan dos o ms estructuras de repeticin. Estas
estructuras no necesariamente tienen que ser del mismo tipo y podrn
-
57
estar anidadas, esto es que un ciclo sea parte del cuerpo de otro ciclo,
o podrn ser independientes entre s.
Cuando en el proceso de solucin intervienen dos o mas estructuras de
repeticin decimos que es un problema repetitivo compuesto.
Ejemplos
Ejemplo 5.1.
DEFINICION DEL PROBLEMA
Algoritmo que lee una secuencia de 100 nmeros y obtiene e
imprime cuntos hay positivos, negativos y nulos (ceros).
PLANEACION DE LA SOLUCION
ENTRADA: serie de 100 nmeros
SALIDA: cantidad de nmeros positivos, negativos y nulos
Utilizaremos 3 contadores pos, neg y nulo, para contar cuantos
nmeros positivos, negativos y nulos aparecen respectivamente.
Los tres contadores se inicializan en cero.
El ciclo que utilizaremos es un ciclo DESDE donde la variable
ndice ser i. El valor inicial sera 1 y el final 100.
ALGORITMO
1. pos ! 0
2. neg ! 0
3. nulo ! 0
4. DESDE i ! 1 HASTA 100
5. PEDIR num
6. SI num > 0 ENTONCES
58
7. pos ! pos + 1
8. DE_OTRA_FORMA
9. SI num < 0 ENTONCES
10. neg ! neg + 1
11. DE_OTRA_FORMA
12. nulo ! nulo + 1
13. FIN_SI
14. FIN_SI
15. FIN_DESDE
16. DESPLEGAR Positivos: , pos
17. DESPLEGAR Negativos: , neg
18. DESPLEGAR Nulos: , nulo
DIAGRAMA DE FLUJO
-
59
Ejemplo 5.2.
DEFINICION DEL PROBLEMA
Algoritmo que obtenga el cociente y el residuo de dos nmeros
enteros positivos mediante restas.
PLANEACION DE LA SOLUCION
ENTRADA: dividendo y divisor
SALIDA: cociente y residuo
Se utiliza un ciclo MIENTRAS donde la condicin de entrada ser
que el residuo sea igual o mayor que el divisor. El residuo y el
cociente son dos acumuladores. El residuo se inicializa en el
valor del dividendo y se decrementa en una cantidad igual al
divisor cada vez que entra al ciclo, a su vez el cociente se
incrementa en uno. El cociente se inicializa en cero.
ALGORITMO
1. DESPLEGAR Dividendo:
2. PEDIR a
3. DESPLEGAR Divisor:
4. PEDIR b
5. coc ! 0
6. res ! a
7. MIENTRAS res >= b HACER
8. res ! res b
9. coc ! coc + 1
10. FIN_MIENTRAS
11. DESPLEGAR Cociente: , coc
12. DESPLEGAR Residuo: , res
60
DIAGRAMA DE FLUJO
Ejemplo 5.3.
DEFINICION DEL PROBLEMA
Algoritmo que lee una secuencia de nmeros no nulos,
terminada con la introduccin de un 0, y obtiene e imprime el
mayor, visualizando un mensaje de si se ha ledo algn numero
negativo.
-
61
PLANEACION DE LA SOLUCION
ENTRADA: secuencia de nmeros
SALIDA: el nmero mayor y un mensaje si alguno de los
nmeros fue negativo
Se utiliza un ciclo REPETIR-HASTA, cuando el numero que
capturemos sea igual a cero entonces termina el ciclo. Dentro
del ciclo se captura un numero, se compara contra una variable
que almacena el numero mas grande que se a capturado, si el
numero recin capturado es mayor entonces se le asigna a esta
variable y se verificara si este es negativo, de ser as entonces
se activa una bandera para indicar que se ley un nmero
negativo.
ALGORITMO
1. neg ! FALSO
2. mayor ! 0
3. REPETIR
4. PEDIR num
5. SI num > mayor ENTONCES
6. mayor ! num
7. FIN_SI
8. SI num < 0 ENTONCES
9. neg ! VERDADERO
10. FIN_SI
11. HASTA num = 0
12. DESPLEGAR Numero mayor: , mayor
13. SI neg = VERDADERO ENTONCES
14. DESPLEGAR Si se ley algn numero
negativo
15. FIN_SI
62
DIAGRAMA DE FLUJO
-
63
Ejemplo 5.4.
DEFINICIN DEL PROBLEMA
Algoritmo que calcula e imprime los nmeros perfectos menores
que 1000. (Un nmero es perfecto si a suma de sus divisores,
excepto el mismo, es igual al propio nmero.)
PLANEACIN DE LA SOLUCIN
ENTRADA: ninguna
SALIDA: todos los nmeros perfectos menores que 1000
Se utiliza un ciclo desde para recorrer todos los nmeros
positivos menores que 1000. Dentro de este ciclo se utiliza otro
ciclo para encontrar os divisores del nmero en turno, cuando se
encuentra un divisor se acumula en una variable, una vez que
se localizaron todos los divisores esta variable va a tener la
suma de los divisores. Se compara el acumulador con el nmero
analizado, si son iguales se imprime el nmero, si no es as
continua con el siguiente.
ALGORITMO
1.DESDE i ! 1 HASTA 999
2. suma ! 0
3. DESDE j ! 1 HASTA ( i / 2 )
4. res ! i mod j
5. SI res = 0 ENTONCES
6. suma ! suma + j
7. FIN_SI
8. FIN_DESDE
9. SI suma = i ENTONCES
10. DESPLEGAR i
64
11. FIN_SI
12.FIN_DESDE
DIAGRAMA DE FLUJO
-
65
Problemas propuestos
1. Algoritmo que lee una secuencia de 100 nmeros y obtiene e
imprime cuntos hay positivos, negativos y nulos (ceros).
2. Algoritmo que lee un nmero entero positivo N y calcula e imprime
su factorial N!.
3. Algoritmo que obtenga el producto de dos nmeros enteros
positivos mediante sumas sucesivas.
4. Algoritmo que lee un nmero X y otro entero positivo N y calcula la
N-sima potencia de X.
5. Algoritmo que genera la lista de los N primeros nmeros primos,
siendo N el dato de entrada.
6. Algoritmo que calcula e imprime el valor del nmero e como la
suma de la serie:
# 1 / i! = 1/0! + 1/2! + 1/3! + 1/4! + ... + 1/N!
La precisin del resultado ser mayor cuanto mayor sea el dato de
entrada N (entero positivo).
7. Algoritmo que evala un polinomio de grado N Los datos de entrada
son el valor de la variable y de los coeficientes.
8. Algoritmo que determina si dos nmeros enteros positivos son
amigos. (Dos nmeros son amigos si la suma de los divisores,
excepto l mismo, es igual al segundo, y viceversa)
9. Algoritmo que lee un nmero entero positivo N e imprime su tabla
de multiplicar.
10. Algoritmo que lee un nmero entero y positivo N y escriba la
lista de sus divisores.
11. Algoritmo que lee un nmero entero y positivo N y calcula y
escribe la suma de sus divisores.
12. Algoritmo que lee un nmero entero y positivo N y escribe los n
primeros trminos de la sucesin Fibonacci. La sucesin Fibonacci
66
se caracteriza porque cada trmino es igual a la suma de sus dos
anteriores,dndose por definicin el primero (0) y el segundo (1).
a0 = 1 a1 = 1 an = an-1 + an-2
13. Realizar un algoritmo que calcule la suma de los enteros entre 1
y 10, es decir 1+2+3+...+10.
14. Realizar un algoritmo que calcule y visualice las potencias de 2
entre 0 y 10.
15. Se desea calcular independientemente la suma de los nmeros
pares e impares comprendidos entre 1 y 200.
16. Calcular y visualizar la suma y el producto de los nmeros pares
comprendidos entre 20 y 400, ambos inclusive.
17. Leer 500 enteros y obtener cuantos son positivos.
18. Calcular la suma de los cuadrados de los 100 primeros nmeros
naturales.
19. Sumar los nmeros pares del 2 al 100 e imprimir su valor.
20. Sumar 10 nmeros introducidos por el teclado.
21. Calcular la media de 50 nmeros introducidos por el teclado y
visualizar su resultado.
22. Visualizar los mltiplos de 4 comprendidos entre 4 y N, donde N
es un nmero introducido por teclado.
23. Realizar un algoritmo que permita imprimir los primeros 100
nmeros enteros.
24. Dados 10 nmeros enteros que introduciremos por teclado,
visualizar la suma de los nmeros pares de la lista, cuntos
nmeros pares existen y cul es la media aritmtica de los nmeros
impares.
25. Calcular la nota media por alumno de una clase de a alumnos.
Cada alumno podr tener un nmero n de notas distinto.
-
67
Estructuras dimensionales
Un arreglo es una coleccin finita de elementos del mismo tipo
agrupados en una sola variable. Cada posicin de almacenamiento en
un arreglo es llamada un elemento del arreglo. Los elementos de un
arreglo se encuentran agrupados de manera ordenada, es decir,
podemos determinar cul es el primer elemento, el segundo, el
tercero,, y el n-simo elemento.
Fsicamente, un arreglo es un conjunto de localidades de memoria
contiguas donde la direccin ms baja corresponde al primer
elemento y la direccin ms alta al ltimo.
Para accesar a un elemento en particular, utilizamos un ndice. En un
arreglo de n elementos, sus el ndice para el primer elemento es 0,
para el segundo elemento es 2, y as sucesivamente hasta llegar al n-
simo elemento para el cual el ndice correspondiente es n-1.
As, una notacin tpica para un arreglo de 10 elementos es X0, X1, X2,
, X9. X es el nombre general por el cual identificamos a los elementos
del arreglo, mientras que los nmeros 0, 1, , 9 son los ndices los
cuales indican cual es la posicin de cada elemento en el arreglo.
Las operaciones que podemos realizar con arreglos son:
o Lectura. El proceso de lectura consiste en accesar a cualquier
elemento del arreglo para conocer el valor que tiene
almacenado.
o Escritura. El proceso de escritura consiste en accesar a cualquier
elemento del arreglo para almacenar un valor.
68
o Inicializacin. Consiste en dar un valor de inicio a cada elemento
del arreglo.
o Actualizacin
Insercin. Con esta operacin podemos agregar nuevos
elementos a un arreglo.
Eliminacin. Es posible eliminar elementos de un arreglo.
Modificacin. Podemos modificar el valor almacenado en
cualquier elemento de un arreglo.
o Ordenacin. Consiste en ordenar bajo cierto criterio
(descendente, ascendente, etc.) los elementos de un arreglo.
o Bsqueda. Podemos conocer la posicin de cualquier elemento
de un arreglo.
Vectores
Los vectores son arreglos unidimensionales.
Un vector es
(2, 3, 4, 8, 9, 10, 15, 17)
y representa una lista de elementos.
La forma general para definir un arreglo unidimensional es la
siguiente:
Tipo_de_dato nombre_variable [tamao]
Ejemplos:
entero edades[20]
real X[10];
-
69
tipo_de_dato se refiere al tipo de dato de cada elemento del arreglo
y tamao es la cantidad de elementos agrupados en la misma
variable.
Forma de acceso a un elemento especfico del arreglo
Para accesar a uno de los elementos del arreglo en particular, basta
con invocar el nombre del arreglo y especificar entre corchetes del
elemento.
Por ejemplo, si queremos accesar al cuarto elemento del arreglo X,
se invocara de la siguiente manera:
X[3]
Recuerde que el arreglo almacena desde la casilla 0. Por tanto, en
un arreglo de 20 casillas, stas estn numeradas del 0 al 19.
Utilizacin de arreglos unidimensionales como cadenas
El uso ms comn de los arreglos unidimensionales es la
implementacin de una cadena (conjunto) de caracteres.
Por ejemplo si deseamos crear un cadena que contenga 5
caracteres la declaracin debe hacerse como sigue:
caracter cadena[5];
70
Matrices
Una matriz es un arreglo de arreglos unidimensionales. Constituyen
la forma ms simple de los arreglos multidimensionales. Una matriz
o arreglo bidimensional tiene dos subndices.
Su forma general de declaracin es
tipo_dato nombre_variable [primer ndice][segundo ndice];
El primer ndice corresponde a la filas y el segundo a las columnas.
Ejemplos
Ejemplo 6.1
DEFINICIN DEL PROBLEMA
Declare un arreglo de 20 elementos de tipo entero e inicialice
todos los elementos de dicho arreglo en 0.
ANLISIS DEL PROBLEMA
ENTRADA: ninguna
SALIDA: ninguna
Necesitamos primeramente declarar un arreglo de 20
elementos, despus de la declaracin vamos a utilizar un ciclo
DESDE que inicie en 0 y termine en 19 para la operacin de
inicializacin. El contador del ciclo nos va a servir como ndice
para los elementos del arreglo.
ALGORITMO
-
71
1. entero numero[20]
2. DESDE i ! 0 HASTA 19
3. numero[i] ! 0
4. FIN_DESDE
DIAGRAMA
Ejemplo 6.2
DEFINICIN DEL PROBLEMA
Sume el contenido de los elementos de una matriz de 5
columnas x 5 renglones.
ANLISIS DEL PROBLEMA
72
ENTRADA: ninguna
SALIDA: suma
Se necesitan dos ciclos DESDE para recorrer todos los
elementos de la matriz, cada vez que se accesa a un
elemento el valor almacenado en este se suma a un
acumulador.
ALGORITMO
1. suma ! 0
2. DESDE i ! 0 HASTA 4
3. DESDE j ! 0 HASTA 4
4. suma ! suma + matriz[i][j]
5. FIN_DESDE
6. FIN_DESDE
7. DESPLEGAR suma
DIAGRAMA DE FLUJO
-
73
74
Problemas propuestos
1. Obtener el valor mayor almacenado en una tabla de 5 columnas por
4 renglones.
2. En un vector se ha almacenado el nmero total de toneladas de
cereales cosechados durante cada mes del ao anterior. Se desea
la siguiente informacin: a. El promedio anual de toneladas
cosechadas b. Cuntos meses tuvieron una cosecha superior al
promedio anual? c. Cuntos meses tuvieron una cosecha inferior
al promedio anual?
3. En un vector se almacenan las calificaciones finales de N alumnos.
Escribir: a. El promedio general del grupo b. Nmero de alumnos
aprobados y numero de alumnos reprobados c. Porcentaje de
alumnos aprobados y porcentaje de alumnos reprobados d.
Nmero de alumnos cuya calificacin fue mayor o igual a 8
4. Dada una cadena de caracteres como dato, se desea saber el
nmero de veces que aparecen las letras a, b y c en dicha
cadena.
5. Se tienen registradas las calificaciones de 50 alumnos obtenidas en
un examen. Los datos son cal1, cal2, ..., cal50, donde cali es un
numero entero comprendido entre los valores 0 y 10. Calcular e
visualizar la frecuencia de cada uno de los posibles valores.
6. Calcular la suma de dos matrices de M x N, donde (0! M ! 9) y
(0! N ! 19) y visualizar su resultado.
7. Calcular la multiplicacin de dos matrices. La matriz A es de M x N y
la matriz B es de N x P, donde (0! M ! 9), (0! N ! 9) y (0! P !
4). La matriz resultante ser de M x P.
8. Llenar con ceros una matriz de N x N excepto en la diagonal
principal donde debe asignar 1.
-
75
9. Intercambiar por rengln los elementos de una matriz. Los
elementos del rengln 1 deben intercambiarse con los elementos
del rengln N, los del rengln 2 con los del N-1, y as
sucesivamente.
76
Mdulos
Uno de los mtodos ms conocidos para resolver un problema es
dividirlo en problemas ms pequeos, llamados sub-problemas. De
esta manera, en lugar de resolver una tarea compleja y tediosa, se
resuelven otras ms sencillas y a partir de ellas se llega a la solucin.
Esta tcnica se usa mucho en programacin y se le suele llamar diseo
descendente, metodologa de divide y vencers o programacin top-
down.
Es evidente que si esta metodologa lleva a tratar con sub-problemas,
entonces tambin se tendr la necesidad de poder crear y trabajar con
subprogramas para resolverlos. A estos subprogramas se les suele
llamar mdulos, de ah viene el nombre de programacin modular.
El concepto bsico de la programacin modular es muy simple,
consiste en dividir un programa en mdulos. En realidad es un mtodo
de diseo que tiende a dividir el problema, de forma lgica, en partes
perfectamente diferenciadas que pueden ser analizadas, programadas
y puestas a punto independientemente.
Se podran sintetizar los objetivos de la programacin modular en los
siguientes:
Disminuir la complejidad
Aumentar la claridad y fiabilidad
Disminuir el costo
Aumentar el control del proyecto
Facilitar la ampliacin del programa mediante nuevos mdulos
-
77
Facilitar las modificaciones y correcciones al quedar
automticamente localizadas en un modulo
Un mdulo esta constituido por una o varias instrucciones fsicamente
contiguas y lgicamente encadenadas, las cuales se pueden
referenciar mediante un nombre y pueden ser llamadas desde
diferentes puntos de un programa.
Un modulo puede ser:
Un programa
Una funcin
Una subrutina (o procedimiento)
Se consideran las siguientes dos situaciones:
1. En un cierto programa, diferentes listas o tablas de nmeros se
desean clasificar por orden ascendente y luego descendente es
decir, primero la lista A, luego la lista B y luego la C. Se conoce
un algoritmo de clasificacin por ejemplo la burbuja y el
ordenamiento rpido por lo que se escribir primeramente el
cdigo para clasificar a A, a continuacin se repite el proceso,
con los cambios adecuados, para clasificar B y C. esto esta claro,
pero requiere el uso de cdigos casi iguales para las tres listas.
Se puede ahorrar esfuerzos si fuera posible escribir el cdigo
solamente una vez y a continuacin aplicarlos a A, B y C.
2. El programador jefe o el analista de aplicaciones de un gran
proyecto desea dividir el trabajo entre varios programadores.
Para evitar confusiones, el debe hacer cada parte tan
independiente como sea posible de los dems. Cmo puede un
78
programa, que es una tarea sencilla, ser dividida en dos sub-
problemas independientes?
Un medio de solucionar estos dos problemas es dividir el programa en
partes que puedan ser desarrolladas por separado y eventualmente
integrarse en una unidad. Tales partes independientes se llaman
mdulos o subprogramas.
Los mdulos son independientes, esto es quiere decir que puede
ejecutar su trabajo sin interferencia de, y sin interferir con, otras
partes del programa.
Cada mdulo ejecuta una tarea especifica. Entendindose como tarea
un trabajo concreto que un programa debe ejecutar como parte de su
operacin general, como enviar una lnea de texto a la impresora,
ordenar un arreglo en orden numrico o calcular una raz cbica.
Parmetros
Es muy comn que las funciones utilicen argumentos, es decir, que
necesiten de algn valor o valores externos dentro de su propio
cdigo. Estos valores se pasan mediante variables las cuales se
declaran dentro de los parntesis que siguen al nombre de la funcin.
Solo se debe tomar en cuenta que los argumentos utilizados al
declarar la funcin sean del mismo tipo que los usados para llamar la
funcin.
Se pueden utilizar a las variables que son parmetros formales como
cualquier otra variable local, es decir, se les puede hacer asignaciones
o usarlos en cualquier expresin permitida.
-
79
Representacin de mdulos
Un modulo se puede representar por:
Algoritmo Diagrama de flujo
MODULO
nombreModulo(argumentos)
//cuerpo del modulo
FIN_MODULO
nombreModulo
fin_modulo
LLAMAR
nombreModulo(argumentos)
Mdulo
nombreModulo. Es la palabra con la que se identificar al mdulo.
Cada mdulo tiene un nombre nico. Con ese nombre, en cualquier
otra parte del programa se puede ejecutar los enunciados contenidos
en l. A esto se le conoce como la llamada de mdulo. Un mdulo
puede ser llamado desde el interior de otro mdulo.
argumentos. Es un conjunto de variables separadas por comas y con
un tipo de dato especfico que reciben los valores de los argumentos
cuando se llama a la funcin. Una funcin puede carecer de
80
parmetros en cuyo caso los parntesis estarn vacos tanto al
declarar como al mandar llamar a la funcin.
Ejemplo
PLANTEAMIENTO DEL PROBLEMA
Crear un subprograma para cada una de las siguientes actividades:
Inicializar un vector de N elementos
Insertar un elemento en el vector
Borrar un elemento del vector
Mostrar los elementos del vector
ALGORITMOS
MODULO CrearVector(Vector,N,Numero)
/*El algoritmo crea un vector de N elementos. N es el
numero de elementos del vector. Numero es el numero
actual de elementos*/
DESDE i 0 HASTA N -1
Vector[i] 0
FIN_DESDE
Numero 0
FIN_MODULO
MODULO InsertaElemento(Vector,N,Numero,dato)
/*El algoritmo inserta un elemento en un vector. Vector
es un arreglo de N elementos. Numero es el nmero actual
de elementos. dato es el valor a insertar*/
SI Numero < N ENTONCES
Numero Numero + 1
Vector[Numero] dato
DE_OTRA_FORMA
-
81
DESPLEGAR El elemento + dato + no se puede
insertar
FIN_SI
FIN_MODULO
MODULO EliminaElemento(Vector,N,Numero,dato)
/*El algoritmo elimina un elemento en un vector. Vector
es un arreglo de N elementos. Numero es el nmero actual
de elementos. dato es el valor a eliminar*/
SI Numero>=0 ENTONCES
i 1
band falso
MIENTRAS ( i
-
83
FIN_SEGUN
HASTA_QUE opcion=5
FIN_MODULO
84
Pseudocdigo
Pseudo o seudo, significa falso, imitacin y cdigo se refiere a las
instrucciones escritas en un lenguaje de programacin. Pseudocdigo
es un lenguaje artificial e informal que ayuda a los programadores a
desarrollar algoritmos. El pseudocdigo es similar al lenguaje
cotidiano; es cmodo y amable con el usuario, aunque no es
realmente un verdadero lenguaje de computadora. No se ejecutan en
las computadoras mas bien sirven para ayudar al programador a
razonar un programa antes de intentar escribirlo en algn lenguaje. Un
programa traducido a pseudocdigo puede ser fcilmente convertido
en un programa en C/C++, si es que esta bien elaborado.
Palabras reservadas
Las palabras reservadas son palabras clave que permiten reconocer
que se esta haciendo, por ejemplo cuando se desea pedir un dato al
usuario, se escribe la palabra PEDIR, con letras maysculas para
diferenciarla del texto restante. Las palabras reservadas se clasifican
en dos grandes grupos, las de entrada y salida y las de estructuras de
control. Las primeras permiten controlar las coordenadas de la
pantalla. Y las segundas, permiten tener el control, como su nombre lo
indica, del programa en general.
Entrada / Salida
En el pseudocdigo ser necesario escribir de qu tipo son las
variables que se van a utilizar antes de empezar a utilizarlas. Los tipos
de datos que se van a utilizar son:
-
85
entero
caracter
cadena
decimal
lgico
vaco
La forma general de usar los tipos de variables es:
tipo nombreVariable;
La siguiente tabla muestra las funciones que se utilizan para el manejo
de entrada y salida y adems para los bloques de cdigo en
pseudocdigo.
Descripcin Pseudocdigo Lenguaje
C/C++
Simula al cursor en la pantalla
en la posicin x, y.
irxy(x, y) gotoxy(x, y)
Simula limpiar la pantalla limpia() clrscr()
Se pide un dato y se almacena
en la variable
pedir(variable) scanf(variable)
Escribe datos en la pantalla de
una variable o un mensaje.
escribir(variable) printf(variable)
Simula un salto de lnea en la
pantalla
\n \n
Inicia un bloque de
instrucciones
{ {
Finaliza un bloque de } }
86
instrucciones
Finaliza una lnea de
instrucciones
; ;
Estructuras de control
Pseudocdigo Diagrama de flujo Lenguaje
C/C++
si(condicin)
condicin
accin
SI
if(condicin)
si(condicin)-sino
condicin
accin1 accin2
SI
if(condicin)-
else
-
87
segn(variable)
variable
accin 1 accin 2 accin n
val1 val2 valn. . .
. . .
switch(variabl
e)
para(valorInicio;
condicin;
incremento)
valorInicio
incremento
condicin
accin
for(valorInicio;
condicin;
incremento)
hacer-
mientras(condici
n) condicin
accin
SI
do-
while(condici
n)
88
mientras(condici
n)
condicin
accin
SI
while(condici
n)
Ejemplo
DEFINICIN DEL PROBLEMA
Determinar si un alumnos esta aprobado o reprobado segn su
calificacin (esta aprobado si la calificacin es mayor o igual a 7).
PLANEACION DE LA SOLUCION
ENTRADA: calificacin (calif)
Si la calificacin es mayor o igual (>=) a 7, se desplegara que esta
aprobado, de lo contrario que esta reprobado
SALIDA: Aprobado o Reprobado
ALGORITMO
1. PEDIR calif
2. SI calif >= 7 ENTONCES
3. DESPLEGAR Aprobado
4. DE_OTRA_FORMA
5. DESPLEGAR Reprobado
6. FIN_SI
DIAGRAMA DE FLUJO
-
89
calif >= 7
calif
inicio
fin
SI
"Reprobado" "Aprobado"
PSEUDOCODIGO
1. entero calif;
2. limpiar();
3. pedir(calif);
4. si(calif >= 7){
5. irxy(10,5);
6. escribir(Aprobado);
7. }
8. sino{
9. irxy(10,5);
10. escribir(Reprobado);
11. }