Está en la página 1de 99

METODOLOGÍA DE LA PROGRAMACIÓN

CON PSEUDOCÓDIGO ENFOCADO AL LENGUAJE C

Selección Anual del Libro UANC 2004-2005


Dr. Gabriel Estrella Valenzuela
Rector

Dr. Felipe Cuamea Velázquez


Secretario general

M. C. Judith Isabel Luna Serrano


Vicerrectora Campus Ensenada

Arq. Aarón Gerardo Bernal Rodríguez


Vicerrector Campus Mexicali

M. A. Alfonso Vega López


Vicerrector Campus Tijuana

LCC. Ricardo Moreno García


Secretario de Rectoría e Imagen Institucional

Dra. Graciela Cordero Arrollo


Instituto de Investigación y Desarrollo Educativo
Metodología de la
programación con pseudocódigo
enfocado al lenguaje C

Carelia Guadalupe Gaxiola Pacheco


Dora Luz Flores Gutiérrez
Primera edición: 2008

© Carelia Guadalupe Gaxiola Pacheco y Dora Luz Flores Gutiérrez


© Universidad Autónoma de Baja California
© Plaza y Valdés, S. A. de C. V.

Derechos exclusivos de edición reservados


para Plaza y Valdés, S. A. de C. V. Prohibida
la reproducción total o parcial por cualquier
medio sin autorización escrita de los editores.

Plaza y Valdés, S. A. de C. V.
Manuel María Contreras 73. Colonia San Rafael
México, D. F. 06470. Teléfono: 5097 20 70
editorial@plazayvaldes.com
www.plazayvaldes.com

Plaza y Valdés, S. L.
Calle de Las Eras 30, B
28670, Villaviciosa de Odón
Madrid, España. Teléfono: 91 665 8959
madrid@plazayvaldes.com
www.plazayvaldes.es

ISBN: 978-970-735-052-6 (UABC)


ISBN: 978-970-722-775-0 (Plaza y Valdés)

Impreso en México / Printed in Mexico


Índice

Prólogo.......................................................................... 11
Introducción................................................................. 13

1.Conceptos básicos..................................................... 15
Proceso ......................................................................... 15
Algoritmo...................................................................... 16
Procedimiento................................................................ 16
Programa........................................................................ 16
Tipos de datos................................................................ 17
Numérico....................................................................... 17
Alfanumérico................................................................. 17
Memoria........................................................................ 18
Constante....................................................................... 18
Variable......................................................................... 18
Identificadores............................................................... 18
Expresiones................................................................... 19
Expresiones aritméticas................................................. 21
Expresiones relacionales............................................... 22
Expresiones lógicas....................................................... 23
Ejercicios propuestos..................................................... 24
2. Metodología para la
solución de problemas................................................. 27
Definición del problema................................................ 28
Planeación de la solución.............................................. 28
Algoritmo....................................................................... 28
Pedir datos..................................................................... 29
Desplegar datos............................................................. 29
Evaluar condiciones....................................................... 30
Ejecutar operaciones...................................................... 31
Diagrama de flujo.......................................................... 32
Bloques terminales........................................................ 32
Bloques de entrada/salida.............................................. 33
Bloques de proceso........................................................ 33
Bloques de decisión o condicionales............................. 34
Bloques de conexión...................................................... 34
Codificación y edición................................................... 36
Pruebas y depuración..................................................... 36
Documentación y mantenimiento.................................. 37

3. Problemas secuenciales........................................... 39
Definición...................................................................... 39
Características................................................................ 39
Ejemplos........................................................................ 40
Ejercicios propuestos..................................................... 42

4. Problemas condicionales......................................... 45
Definición...................................................................... 45
Problemas condicionales simples.................................. 45
Problemas condicionales compuestos........................... 46
Problemas condicionales múltiples............................... 47
Ejemplos........................................................................ 48
Ejercicios propuestos..................................................... 53
5. Problemas repetitivos.............................................. 59
Contador........................................................................ 60
Acumulador................................................................... 60
Interruptor...................................................................... 61
Ciclos............................................................................. 61
Ciclo de repetición por contador.............................. 61
Ciclo de repetición de prueba por arriba.................. 63
Ciclo de repetición de prueba por abajo.................. 63
Problemas repetitivos simples....................................... 64
Problemas repetitivos compuestos................................ 64
Ejemplos........................................................................ 65
Problemas propuestos.................................................... 73

6. Estructuras dimensionales...................................... 75
Vectores......................................................................... 76
Matrices......................................................................... 77
Ejemplos........................................................................ 78
Problemas propuestos.................................................... 81

7. Módulos.................................................................... 83
Parámetros..................................................................... 85
Representación de módulos........................................... 86
Ejemplo......................................................................... 87

8. Pseudocódigo............................................................ 91
Palabras reservadas........................................................ 91
Entrada/Salida................................................................ 92
Estructuras de control.................................................... 93
Ejemplo......................................................................... 94

Bibliografía................................................................... 97
Prólogo

ualquiera que tenga conocimientos básicos de progra­

C mación puede escribir un programa. Pero eso no implica


que esté bien hecho.
En la programación es muy importante seguir un estilo, una
metodología; y no porque el código fuente “quede más bonito”,
sino porque se gana en legibilidad y eficiencia. Hay que
entender y asumir la diferencia entre alguien que consigue
que sus programas funcionen y alguien que no sólo elabora
sus programas de forma coherente, sino que consigue mejorar
la ejecución de dichos programas, ya sea en velocidad o en el
consumo de recursos.
Para llegar a obtener estos resultados es necesario seguir
una metodología que se presenta en esta obra como metodolo­
gía de la programación para resolver problemas de tipo
aritmético, lógico y/o relacional. Cualquier problema de la vida
real se podría resolver de forma correcta utilizando una
metodología de programación.

11
Introducción

a metodología de la programación le dará al lector

L una visión más amplia a la hora de enfrentarse a sus


desarrollos. Se conocerán los distintos enfoques o para­
digmas de programación que existen actualmente, princi­
palmente la programación imperativa o tradicional, en la que
se ejecutan las instrucciones en el orden establecido.
Se conocerán y entenderán diferentes conceptos necesarios
para comprender la programación: los fundamentos lógicos,
el concepto de algoritmo como fórmula para la resolución de
un problema, las diferentes estructuras de datos para almacenar
y organizar datos y las estructuras de control utilizadas para
dirigir la ejecución de un programa. Todos estos conceptos
serán necesarios a la hora de analizar, diseñar, implementar,
documentar y probar un programa.
Esta obra tiene un pseudocódigo enfocado al lenguaje C. El
motivo de escoger dicho lenguaje es porque en las materias
sucesivas será el lenguaje en el que se va a desarrollar la codificación
de los programas de computadora, además de su rigidez, por lo
que se “obliga” al participante a programar siguiendo una
metodología estricta que le hará comprender la esencia de la
programación, pudiendo aplicar después los conocimientos
adquiridos a otros lenguajes invirtiendo un mínimo esfuerzo.

13
1
Conceptos básicos

entro de la metodología de la programación existen

D algunas ideas que se deben estudiar para apreciar


mejor el concepto de metodología. Estos conceptos
son: proceso, algoritmo, procedimiento y programa. Estos con­
ceptos se explican con detalle en las siguientes secciones.
También se presentan los conceptos de tipos de datos, como
numéricos y alfanuméricos, zonas de memoria, en donde se
encuentran los conceptos de constante y variable y las reglas
de los identificadores y las expresiones aritméticas, lógicas y
relacionales desarrollando algunos ejemplos.

Proceso

Es un conjunto de acciones que manipula infonnación a partir


de un estado inicial (datos de entrada) para obtener un resultado
(datos de salida).

DATOS DE DATOS DE
ENTRADA SALIDA

15
Metodología de la programación

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.
Por ejemplo, iniciar la lectura de un libro se hace de una
manera automática que no da cuenta del procedimiento que se
realiza para terminar de leerlo. Los pasos más básicos para
leer un libro serían: abrirlo en la primera página, leer la página,
dar vuelta a la hoja, leer la siguiente página, y así sucesivamente
hasta terminar de leer el libro y cerrarlo.

Procedimiento

También llamado subprograma, es una sección dentro de un


programa donde se realizan actividades o pasos específicos.
Imaginar que la operación de suma en un programa se quiere
realizar 10 veces, para esto se tendrían 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 esté resolviendo.

Programa

El concepto de programa fue desarrollado por Von Neumann


en 1946 y se define como un conjunto de instrucciones que
sigue la computadora para alcanzar un resultado específico.

16
Conceptos básicos

Tipos de datos

Los datos a procesar por una computadora pueden ser de dos


tipos: datos numéricos y datos alfanuméricos.

Numérico

Los datos numéricos son números enteros y números reales.


Los números enteros pueden estar precedidos por los signos
+ o - y no tienen punto decimal, por ejemplo:

123 -541 +789 10 78912

Los números reales pueden estar precedidos por los signos


+ o - y tienen punto decimal, por ejemplo:

3.14159 9.81 -8.124 -7.5

Alfanumérico

Los datos alfanuméricos son datos de tipo carácter y cadena


de caracteres. Son datos cuyo contenido pueden ser letras,
dígitos o símbolos especiales (Á, @, #, $, %, ^, &, etc.) y de­
ben estar entre comillas simples (”) o comillas dobles (“”).
Aunque este tipo de datos puede contener números no es
posible realizar operaciones aritméticas con ellos.
Un dato de tipo carácter contiene solamente un uno de éstos,
por ejemplo:

‘a’ ‘#’ ‘5’ ‘D’

17
Metodología de la programación

Un dato de tipo de cadena de caracteres contiene un


conjunto de éstos. Normalmente la longitud de la cadena de
caracteres es de 255.

Ejemplos:

“abcde” “Juan Pérez” “123-4567”

Memoria

Las zonas de memoria están formadas por un nombre para su


identificación 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 información.

Variable

Son zonas de memoria cuyo contenido cambia durante la fase


de procesamiento de información.

Identificadores

Los nombres de estas zonas de memoria se forman respetando


las siguientes reglas:

18
Conceptos básicos

1. El primer carácter debe ser una letra.


2. Los demás caracteres podrán ser letras, números o
guiones; las letras no deben estar acentuadas.

Por ejemplo:

Suma Num_l Dato0l nombre EDAD

Los identificadores deben ser representativos de la función


que cumplen en el procedimiento o programa. Por ejemplo, si
se va a realizar una suma de dos números, los identificadores
que se podrían usar serían Número 1, Número2 y Suma, por
ejemplo.

Expresiones

Al conjunto de operadores y operandos que producen un valor


se les llama expresión. Existen expresiones aritméticas,
relacionales y lógicas.
Una expresión está compuesta por operadores y operandos.
Un operador es un símbolo o palabra que significa qué ope­
ración se va a realizar entre uno o dos valores, llamados operan-
dos. Estos valores pueden ser variables o constantes.
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 expresión se puede escribir de alguna
de las siguientes dos formas:

Operando 1 OPERADOR Operando2


OPERADOR Operando

Existen cuatro tipos de operadores: asociativos, aritméticos,


relacionales y lógicos.

19
Metodología de la programación

El único operador asociativo es el paréntesis (), el cual


permite indicar en qué orden deben realizarse las operaciones.
Cuando una expresión se encierra entre paréntesis, indica que
las operaciones que están dentro de ellos deben realizarse
primero. Si en una expresión se utiliza más de un paréntesis se
deberá proceder primero con los que se encuentren más cerca
del centro de la expresión.
Los operadores aritméticos son operadores que permiten
realizar operaciones aritméticas entre operandos.
El resultado que se obtiene al evaluar una expresión
aritmética es un número. Al evaluar expresiones que contie­
nen operadores aritméticos se respeta una jerarquía en el orden
en que se aplican. Es decir, si se tiene una expresión aritmética
con al menos dos operadores de distinta jerarquía, se deberá
realizar primero una operación y luego la otra. La siguiente
tabla muestra los operadores aritméticos ordenados de mayor
a menor jerarquía. Los operadores aritméticos son:

Los operadores relacionales son operadores que permiten


comparar dos valores, sean numéricos o alfanuméricos. El
resultado obtenido es un valor de verdad, que puede ser V
(verdadero) o F (falso). La comparación entre un dato numérico
y un dato alfanumérico no puede llevarse a cabo. Los
operadores relacionales son los siguientes:

20
Conceptos básicos

Los operadores lógicos son operadores que permiten realizar


las operaciones lógicas de conjunción, disyunción y negación.
El resultado obtenido es un valor de verdad que puede ser V
(verdadero) o F (falso). Los operadores lógicos se muestran a
continuación, indicando la jerarquía de mayor a menor:

Recordar que la negación cambia el valor verdadero por el


falso y viceversa. En la conjunción se necesitan dos valores
verdaderos para producir otro verdadero; en cualquier otro caso
se produce un valor de falso. En la disyunción, 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 aritméticas

Para resolver una expresión aritmética se deben seguir las


siguientes reglas:
1. Primero se resuelven las expresiones que se encuentran
entre paréntesis.

21

I
Metodología de la programación

2. Se procede aplicando la jerarquía de operadores. En caso


de que haya dos operadores con la misma jerarquía se procede de
izquierda a derecha.
Ejemplo 1. Resolver la siguiente expresión aritmética:

Ejemplo 2. Resolver la siguiente expresión aritmética:

Expresiones relacionales

El resultado de una expresión con operadores relacionales es


verdadero o falso.

22
Conceptos básicos

Las reglas para resolver las expresiones relacionales son


las siguientes:
1. Se resuelven primero los paréntesis.
2. Se encuentran los valores de verdad de las expresiones.
3. Se aplica la jerarquía de operadores lógicos. En caso de
haber dos operadores iguales se procede la operación de izquierda
a derecha.

Expresiones lógicas

Las reglas para resolver las expresiones lógicas son las si­
guientes:
1. Se resuelven primero los paréntesis.
2. Se encuentran los valores de verdad de las expresiones
relacionales.
3. Se aplica la jerarquía de operadores lógicos. En caso de
haber dos operadores iguales se procede la operación de izquierda
a derecha.
Ejemplo 3. Resolver la siguiente expresión lógica relacional:

23
Metodología de la programación

Ejemplo 4. Resolver la siguiente expresión lógica relacional:

Ejercicios propuestos

Aplicando la jerarquía de operadores, encontrar el valor de


cada una de las siguientes expresiones:

Aplicando la jerarquía 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)))

24
Conceptos básicos

25
2
Metodología para la
solución de problemas

e sabe que una computadora es un aparato electrónico que

S ejecuta tareas de una manera veloz y precisa, pero que no


es capaz de razonar autónomamente. Por eso la persona
que instruirá a la computadora es la que debe razonar el pro­
blema. 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 algún
lenguaje computacional, es llamado programador; se le llama
programa al conjunto de instrucciones escritas en un lenguaje
computacional.
La práctica debe hacerse mediante una serie de pasos,
llamados metodología para la solución de problemas por medio
de computadora, los cuales se enumeran a continuación:

1. Definición del problema


2. Planeación de la solución
3. Algoritmo
4. Diagrama de flujo
5. Codificación y edición
6. Pruebas y depuración
7. Documentación y mantenimiento

27
Metodología de la programación

Definición del problema

La definición del problema se centra en la elaboración de un


texto que permitirá saber qué es lo que se pretende solucionar,
y proporcionará información útil para el planteamiento de la
solución.
Cabe mencionar que no siempre será útil la información
que se proporcione para poder solucionar el problema.

Planeación de la solución

En este paso se debe entender por completo el problema y


dejar en claro cuál es la información útil que se da, qué otra
hace falta y, con base en esto, determinar la mejor solución. Si
hiciera falta información, en esta fase del problema se podría
determinar que el problema no tiene solución.
En esta fase también se define formalmente lo que se debe
entregar como resultado. Dado que esta información, una vez
resuelto el problema saldrá de la computadora, se puede decir
que es una salida de información. De igual manera, la infor­
mación adicional que se necesite pedir constituye una entrada
de información hacia la computadora.

Algoritmo

Como se mencionó en el capítulo anterior, un algoritmo es


una serie de pasos ordenados encaminados a resolver un
problema. Para establecer esta serie de pasos se requiere de
una reflexión previa del problema dada por el paso anterior
(planeación de la solución). Además, se podrá observar que
aunque en el paso anterior ya se sabe cómo obtener la solución

28
Metodología para la solución de problemas

del problema, nada se dice de qué hacer antes y después de


aplicar la solución.
Las acciones que se pueden llevar a cabo en un algoritmo
son las siguientes: pedir datos, desplegar datos, evaluar condi­
ciones y ejecutar operaciones. A continuación se explica el
uso de cada una de ellas.

Pedir datos

Lo que una computadora puede pedir son números o palabras,


que automáticamente son asignados a una zona de memoria
de la computadora, llamada como el programador quiere
nombrarle. Puede ser una pequeña zona llamada número y que
contenga al número 5, o puede ser una zona menos pequeña
llamada oración que contenga la frase: “Estoy aprendiendo
computación”. A estas zonas de memoria en donde se guardan
datos se les denomina variables.

Formato de petición de datos:

PEDIR variable

Ejemplos:

PEDIR costo
PEDIR edad
PEDIR nombre

Desplegar datos

Una computadora puede mostrar, por pantalla o impresora,


números o palabras que, en su conjunto, den el resultado

29
Metodología de la programación

esperado. Probablemente estos números o palabras estén


almacenados en variables creadas durante la ejecución 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 números para saber si


alguno es mayor, menor o igual que otro; también es capaz de
comparar palabras para saber si alguna es más extensa o tiene
precedencia alfabética sobre la otra, etcétera. El propósito de
evaluar condiciones es decidir qué acción es la que va a
realizarse a continuación en caso de que una condición se
cumpla o no.

Formatos para evaluar condiciones:

SI condición ENTONCES
accionesV
D E _ O T R A _ F ORMA
acciones_F
FIN_SI

30
Metodología para la solución de problemas

SI condición 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 máquina puede realizar operaciones aritméticas


guardando el resultado en alguna variable y también puede
determinar el valor inicial para alguna de ellas.

Formato para realizar operaciones:

Ejemplos:

Lo cual significa que el valor de la variable edad, incremen­


tado en 10, es almacenado en otra zona de memoria llamada
nuevaedad.

31
Metodología de la programación

Esto significa que la variable gastos_actuales simplemente


toma el valor de 56000.

Lo cual significa que la variable nombre toma el valor de

“Alberto Jiménez”

Diagrama de flujo

Un diagrama de flujo está definido como la representación gráfica


de un algoritmo. Un diagrama de flujo debe hacerse porque
regularmente resulta más fácil entender dibujos que entender un
texto, sobre todo cuando el algoritmo tiende a hacerse grande.
En un diagrama de flujo existen figuras con información
dentro de cada una de ellas, con flechas que indican la
secuencia. A las figuras se les llamará de ahora en adelante
bloques; existen bloques de varios tipos:

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 símbolo, 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 sólo un bloque de inicio y uno de fin
en todo el diagrama de flujo.

32
Metodología para la solución de problemas

Bloques de entrada/salida

Se emplean para introducir datos a la computadora o exte­


riorizarlos.
El bloque de entrada tiene la siguiente forma:

El bloque de salida de datos tiene la siguiente forma:

Dentro de las figuras se anotan los datos que están entrando


o saliendo, según el caso.

Bloques de proceso

En ellos se indica una acción imperativa o una operación arit­


mética. Su forma es:

33
Metodología de la programación

Bloques de decisión o condicionales

Son preguntas del tipo SI o NO, que pueden alterar la secuencia


en la ejecución 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 acción 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 pequeño círculo que une al último bloque de la parte
afirmativa con el último bloque de la parte negativa. Cuando
no se cumpla esta regla, debe escribirse en la flecha la palabra
SI para indicar el camino en caso que la condición sea
verdadera.

Bloques de conexión

Son figuras que determinan que la secuencia de acciones en


un diagrama continúa en alguna otra parte. Su forma es:

34
Metodología para la solución de problemas

Dentro de la figura se anota una letra o número para


identificar un conector de otro. La función de los conectores
depende de su forma. Si la forma es de este tipo:

significa que la secuencia de los bloques continúa 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:

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 estén correctos. Si el diagrama tiene bloques condicionales
se deben hacer tantas pruebas como combinaciones de condi­
ciones haya.

35
Metodología de la programación

Codificación y edición

La codificación consiste en traducir el diagrama de flujo a


instrucciones de un lenguaje de programación, por ejemplo,
C/C++, Pascal, Java, Basic, etcétera.
Al conjunto de instrucciones escritas en un lenguaje de
computadora se llama programa. La edición consiste en
introducir el programa a la computadora por medio de un editor
de textos.
Debe cuidarse el aspecto de la sintaxis en la codificación
de un programa, ya que las instrucciones deben tener un orden
en la secuencia de las palabras y símbolos que las componen.
Por ejemplo, en español no es lo mismo decir:
“El caballo blanco de Napoleón”, que “Napoleón blanco de
el caballo”.

Pruebas y depuración

Una vez que se tiene el programa introducido en la compu­


tadora, debe probarse exhaustivamente, ejecutando el programa
hasta concluir que los resultados son los deseados y que no
tiene errores. Para esto se deben preparar datos de prueba en
papel, así como su solución para cotejarlo con la solución que
obtenga la computadora.
Si el programa tiene errores sintácticos éstos pueden
corregirse simplemente consultando un libro de instrucciones
del lenguaje. No así si el problema es de lógica, en cuyo caso
debe revisarse y corregirse desde el algoritmo.

36
Metodología para la solución de problemas

Documentación y mantenimiento

Una vez que el paso anterior ha sido completado, todos los


pasos anteriores de la metodología de solución de problemas
por medio de la computadora, deben pasarse en limpio y quedar
archivados dentro de una carpeta llamada documentación.
Para el paso 5 (codificación) debe obtenerse un listado del
programa impreso por computadora, al igual que las pruebas
que se hicieron en el paso 6.
Si por algún motivo se llega a modificar el programa -ge­
neralmente porque cambian los requerimientos del problema-
toda la documentación debe modificarse. Al proceso de mantener
los programas y su documentación se le llama mantenimiento.
Dado que tiempo después de haber hecho el programa ni el
mismo programador puede recordar con exactitud cómo
resolvió determinado problema, la importancia de tener la
documentación actualizada radica en su utilidad.

37
3
Problemas secuenciales

Definición

Se caracterizan porque una acción que se ejecuta detrás de otra.


El flujo del programa coincide con el orden físico en el que se
han ido poniendo las instrucciones.

Características

Para escribir un algoritmo en modo secuencial en la tabla se


puede apreciar que las acciones están una debajo de la otra y
se ejecuta la acción_2 después de la acción_l y así sucesiva­
mente hasta llegar a la acción_n. También se muestra el
diagrama de flujo para cualquier problema secuencial.

39
Metodología de la programación

Ejemplos

Aplicar los primeros cuatro pasos de la metodología para la


solución de problemas por medio de la computadora y resolver
los siguientes problemas:

Ejemplo 1. Encontrar el área de un círculo de radio 5.

Definición del problema

area = ó * radio ^ 2

Planeación de la solución

Datos de entrada:
radio = 5
Datos de salida:
area

40
Problemas secuenciales

Algoritmo

Diagrama de flujo

Ejemplo 2. Suponer que un individuo decide invertir su capital


en un banco y desea saber cuánto dinero ganará después de un
mes si el banco paga a razón de 2% mensual.

Definición del problema

La variable capital representa el dinero a invertir.


La variable interes representa el interes sobre el capital que
se va a invertir.

Planeación de la solución

Datos de entrada:
capital

41
Metodología de la programación

Diagrama de flujo

Ejercicios propuestos

Aplicar los primeros cuatro pasos de la metodología de la


solución de problemas por medio de la computadora para
resolver los siguientes problemas:
Problemas secuenciales

1. Encontrar el área de un círculo con radio 10.


2. Modificar el problema anterior para que sea capaz de
calcular el área de un círculo de cualquier radio requerido.
3. Determinar el área y perímetro de un rectángulo
cualquiera.
4. Suponga que un individuo decide invertir su capital en
un banco y desea saber cuánto dinero ganará después de un
mes si el banco paga a razón de 2% mensual.
5. Un vendedor recibe un sueldo base, más un 10% extra
por comisiones de sus ventas. El vendedor desea saber cuánto
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 cuánto deberá pagar
finalmente por su compra.
7. Un alumno desea saber cuál será su calificación final de la
materia de computación. Dicha calificación se compone de
los siguientes porcentajes: 55% del promedio de sus tres
calificaciones parciales; 30% de la calificación del examen
final y 15% de la calificación de un trabajo final
8. Un maestro desea saber qué porcentaje de hombres y
qué porcentaje de mujeres hay en un grupo de estudiantes.
9. Dada una cantidad en pesos, obtener la equivalencia en
dólares, asumiendo que la unidad cambiaría es un dato des­
conocido.
10. Calcular el número de pulsaciones que una persona debe
tener por cada 10 segundos de ejercicio, si la fórmula es:
número 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,
Pediatría y Traumatología. El presupuesto anual del hospital
se reparte conforme a la siguiente tabla:

43
Metodología de la programación

Area Porcentaje del presupuesto


Ginecobstetricia 40%
Traumatología 30%
Pediatría 30%

Obtener la cantidad de dinero que recibirá cada área, para


cualquier monto presupuestal.
13. El dueño de una tienda compra un artículo a un precio
determinado. Obtener el precio a que lo debe vender para
obtener una ganancia del 30 por ciento.
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.

44
4
Problemas condicionales

Definición

Los problemas condicionales se basan en la evaluación de una


condición, si la condición es verdadera se ejecuta una serie de
acciones y si la condición es falsa puede o no ejecutarse otro
conjunto de acciones.
Existen tres tipos de problemas condicionales. Los proble­
mas condicionales simples, compuestos y múltiples, que en las
siguientes secciones se explican con detalle.

Problemas condicionales simples

Existen dos formatos para los tipos de problemas secuenciales


simples. El primero sólo tiene un conjunto de acciones para
cuando la condición que se evalúa es verdadera, es decir, carece
de conjunto de acciones para ejecutarse cuando la condición
sea falsa. El formato general es como se muestra en la siguiente
tabla:

45
Metodología de la programación

Algoritmo Diagrama de flujo

SI condición ENTONCES
acciónV

FIN SI

SI condición ENTONCES

acción_V

Problemas condicionales compuestos

Un problema condicional compuesto es cuando en la parte de


la condición existe más de una condición para evaluar
separados por los operadores NOT, OR o AND. Puede haber
uno o más de ellos y también combinación de los mismos. A
esta combinación se le da el nombre de expresión. En este tipo
de problemas también existen dos tipos, al igual que en los
problemas condicionales simples. En la tabla siguiente se
muestra el algoritmo y el diagrama de flujo correspondiente.
Tanto los problemas condicionales simples como los
problemas condicionales compuestos pueden estar anidados:
es decir, estar unas dentro de los otros, como se puede observar
en la siguiente forma general:

46
Problemas condicionales

SI condiciónl ENTONCES
acciones 1
DEOTRAFORMA
SI condición2 ENTONCES
acciones 2
DE_OTRA_FORMA
SI condición3 ENTONCES
acciones3
DE_OTRA_FORMA
acciones X
FINSI
FINSI
FIN SI

Problemas condicionales múltiples

En los problemas condicionales múltiples se permite que el flujo


del diagrama se bifurque por varias ramas en el punto de la
toma de desición (es), esto es en función del valor que tome
la expresión. Si el valor que toma la expresión es el valor 1 entonces
se ejecutaran las acciones 1, si el valor que toma la expresión es el
valor2, se ejecutarán las acciones2 hasta el valorN, entonces se
ejecutarán las acciones N.
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.

47
Metodología de la programación

Cuando el valor obtenido no se encuentre en la lista de


valores se ejecutarán las acciones establecidas en la cláusula
SI_NO, si existe dicha cláusula.
En la siguiente tabla se muestra el algoritmo y el diagrama
de flujo para este tipo de problemas condicionales múltiples.

FIN SEGÚN

Ejemplos

Ejemplo 1. Determinar si un alumno aprueba o reprueba un


curso, sabiendo que aprobará si su promedio de tres calificacio­
nes es igual o mayor a 7; reprueba en caso contrario.

48
Problemas condicionales

Definición del problema

Las variables calif 1, calif 2 y califi 3 representan las calificacio­


nes de un alumno.
La variable prom representa el promedio de las tres califica­
ciones de un alumno.

Planeación de la solución

Datos de entrada:
califl
calif2
calif3

Datos de salida:
“Aprobado” o “No Aprobado”

Proceso:
prom (califl + calif2 + calif3) / 3

49
Metodología de la programación

Diagrama de flujo

Ejemplo 2. Determinar si un número es positivo, negativo o nulo.

Definición del problema

La variable num representa el número a analizar

Planeación de la solución

Datos de entrada:
num
Datos de salida:
“Positivo”, “Negativo” o “Nulo”

50
Problemas condicionales

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. DEOTRAFORMA
8. DESPLEGAR “Nulo”
9. FINSI
10. FIN SI

Diagrama de flujo

Ejemplo 3. En una tienda se tiene una promoción. Si el total com­


prado es menor de $200 el descuento es de 5%; si el total está

51
Metodología de la programación

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.

Definición del problema

La variable compra representa el monto total de la compra.


La variable total representa el monto total a pagar.

Planeación de la solución

52
Problemas condicionales

Diagrama de flujo

Ejercicios propuestos

Aplicar los primeros cuatro pasos de la metodología de la


solución 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 almacén se hace un 20% de descuento a los clientes
cuya compra supere los $ 1000. ¿Cuál 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 más de 40 horas se le paga $4 por
cada una de las primeras 40 horas y $6 por cada hora extra.

53
Metodología de la programación

4. Un hombre desea saber cuánto dinero se generará por


concepto de intereses sobre la cantidad que tiene en inversión
en el banco. Él decidirá reinvertir los intereses siempre y cuando
éstos excedan a $7 000, y en ese caso desea saber cuánto dinero
tendrá finalmente en su cuenta.
5. Una persona enferma que pesa 70 kilogramos se encuentra
en reposo y desea saber cuántas calorías consume su cuerpo
durante 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 calorías por minuto y estando sentado en
reposo consume 1.66 calorías 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á qué 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 crédito 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 crédito al
fabricante. El fabricante cobra por concepto de intereses un
20% sobre la cantidad que se le pague a crédito. La empresa
necesita determinar: cuánto dinero deberá invertir de sus
propios fondos; si hay necesidad, cuánto tendrá que pedir pres­
tado al banco, cuánto tendrá que pagar a crédito y cuánto pagará
por concepto de intereses que se generen en el crédito.
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 más.
8. En un supermercado se hace una promoción mediante la
cual el cliente obtiene un descuento dependiendo de un número
que escoge al azar. Si el número escogido es menor que 74, el

54
Problemas condicionales

descuento es del 15% sobre el total de la compra, y si es mayor


o igual a 74 el descuento es del 20%. Obtener cuánto dinero se
le descuenta.
9. Una compañía 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
efectúa la fianza es menor que S50 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 cuál será la cuota que debe pagar un cliente.
10. En una escuela la colegiatura de los alumnos se determina
según el número 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 cuánto 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 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 antigüedad en la empresa,
de acuerdo con la siguiente tabla:

55
Metodología de la programación

Tiempo Utilidad

Menos de 1 año 5% del salario


1 año o más y menos de 2 años 7% del salario
2 años o más y menos de 5 años 10% del salario
5 años o más y menos de 10 años 15% del salario
10 años o más 20% del salario

13. En una tienda de descuento se efectúa una promoción en


la cual se hace un descuento sobre el valor de la compra total,
según 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 por ciento.
Determinar la cantidad final que un cliente deberá pagar por
su compra. Se sabe que sólo hay bolitas de los colores
mencionados.
14. Una empresa que comercializa cosméticos tiene organiza­
dos 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
globales se les paga una cantidad extra equivalente al 20% de
su salario mensual. Si todos los ven-dedores ganan lo mismo,
determinar cuánto recibirán los vendedores de los tres depar­
tamentos al finalizar el mes.
15. El Instituto Mexicano del Seguro Social (imss) requiere
clasificar a las personas que se jubilarán en el año de 2003.
Existen tres tipos de jubilaciones: por edad, por antigüedad
joven y por antigüedad adulta. Las personas adscritas a la
jubilación por edad deben tener 60 años o más y una antigüedad
en su empleo de menos de 25 años. Las personas adscritas a la
jubilación por edad joven deben tener menos de 60 años y una

56
Problemas condicionales

antigüedad en su empleo de 25 años o más. Las personas


adscritas a la jubilación por edad adulta deben tener 60 años o
más y una antigüedad en su empleo de 25 años o más.
Determinar en qué tipo de jubilación quedará adscrita una
persona.

57
5
Problemas repetitivos

a mayor parte de las soluciones a los problemas que se

L resuelven por medio de la utilización de una computa­


dora son procesos que se basan en la repetición de un
grupo de instrucciones. Para facilitar la implementación de
estos procesos existen las estructuras de repetición o ciclos.
Una estructura de repetición es aquella que le permite al pro­
gramador repetir un conjunto o bloque de instrucciones un
número determinado de veces mientras una condición dada
sea cierta o hasta que una condición dada sea cierta. Se debe
establecer un mecanismo para terminar las tareas repetitivas.
Dicho mecanismo es una expresión condicional que se evalúa
cada vez que se realiza un ciclo. La expresión condicional que
controla la entrada al ciclo puede ser verificada antes o después
de ejecutar el conjunto de instrucciones que lo componen. En
caso de que la evaluación resulte verdadera se repite el ciclo, en
o caso de que sea falsa lo terminará.
Muchos ciclos utilizan variables de propósito especial, se
conocen como contadores, acumuladores e interruptores.

59
Metodología de la programación

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 acción. Los contadores se utilizan en
las estructuras repetitivas con la finalidad de contar sucesos o
acciones internas del ciclo.
Con los contadores se debe realizar una operación de
inicialización y, posteriormente, las sucesivas de incremento
o decremento del contador.
La inicialización 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 operación de asignación admite que la variable
que recibe el valor final de una expresión intervenga en la
misma, se realizarán a través de este tipo de instrucciones de
asignación, de la siguiente forma:

dicho <valor_constante> podrá ser positivo o negativo. Esta


instrucción se colocará en el interior del bucle.

Acumulador

Son variables cuyo valor se incrementa o decrementa en una


cantidad variable. Necesitan operaciones de:

60
Problemas repetitivos

Hay que tener en cuenta que la siguiente operación también


sería una operación de acumulación:

Interruptor

Un interruptor, bandera o switch es una variable que puede


tomar los valores verdadero o falso a lo largo de la ejecución
de un programa, comunicando así información de una parte a
otra del mismo. Pueden ser utilizados para el control de bucles.

Ciclos

Ciclo de repetición por contador

También llamados ciclos: es una estructura de repetición que


ejecuta un conjunto de una o más instrucciones una determina­
da cantidad de veces.
La característica de esta estructura es que el número de veces
que se repite el ciclo es conocido, ya sea por medio de una
cantidad explícita o por un valor asignado a una zona de
memoria, sea ésta constante o variable. Si para establecer el
número de repeticiones se utiliza una variable, el valor asignado

61
Metodología de la programación

a ésta 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 repetición por contador comienza con un
valor inicial de la variable índice y las acciones especificadas
se ejecutan a menos que el valor inicial sea mayor que el final.
Por definición 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 iteración 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]
<acción>
FIN DESDE

62
Problemas repetitivos

Ciclo de repetición de prueba por arriba

Lo que caracteriza este tipo de estructura es que las acciones del


cuerpo del ciclo se realizan cuando la condición es cierta. Además,
se analiza la expresión condicional al principio, de donde se
deduce que dichas acciones se podrán ejecutar 0 a N veces.

Algoritmo

MIENTRAS <expresión_condicional> HACER


<acción>
FINMIENTRAS

Diagrama de flujo

Ciclo de repetición de prueba por abajo

Las acciones del interior del ciclo se ejecutan una vez y


continúan repitiéndose mientras que la condición sea falsa. Se
analiza la expresión condicional al final del ciclo, de lo cual
deducimos que las acciones se ejecutan de 1 a N veces.

63
Metodología de la programación

Problemas repetitivos simples


Los problemas repetitivos simples son aquellos en los que para
su solución sólo se involucra una estructura de repetición.

Problemas repetitivos compuestos


Los problemas repetitivos compuestos son aquellos en los que
para su solución se necesitan dos o más estructuras de repetición.
Estas estructuras no necesariamente tienen que ser del mismo
tipo y podrán estar anidadas, esto es que un ciclo sea parte del
cuerpo de otro ciclo o podrán ser independientes entre sí.
Cuando en el proceso de solución intervienen dos o más
estructuras de repetición se dice que es un problema repetitivo
compuesto.

64
Problemas repetitivos

Ejemplos

Ejemplo 1

Definición del problema

Algoritmo que lee una secuencia de 100 números y obtiene e


imprime cuantos hay positivos, negativos y nulos (ceros).

Planeación de la solución

ENTRADA: serie de 100 números.


SALIDA: cantidad de números positivos, negativos y nulos.

Se utilizarán 3 contadores: pos, neg y nulo, para contar


cuántos números positivos, negativos y nulos aparecen
respectivamente. Los tres contadores se inicializan en cero. El
ciclo que se utilizará es un ciclo DESDE donde la variable
índice será i. El valor inicial será 1 y el final 100.

Algoritmo

65
Metodología de la programación

66
Problemas repetitivos

Ejemplo 2

Definición del problema

Algoritmo que obtenga el cociente y el residuo de dos números


enteros positivos mediante restas.

Planeación de la solución

ENTRADA: dividendo y divisor


SALIDA: cociente y residuo

Se utiliza un ciclo MIENTRAS donde la condición 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
Metodología de la programación

68
Problemas repetitivos

Ejemplo 3

Definición del problema

Algoritmo que lee una secuencia de números no nulos,


terminada con la introducción de un 0, y obtiene e imprime el
mayor, visualizando un mensaje de si se ha leído algún numero
negativo.

Planeación de la solución
ENTRADA: secuencia de números.
SALIDA: el número mayor y un mensaje si alguno de los
números fue negativo.
Se utiliza un ciclo REPETIR-HASTA, cuando el número
que capturemos sea igual a cero, entonces termina el ciclo.
Dentro del ciclo se captura un número, se compara contra una
variable que almacena el número más grande que se ha
capturado, si el número recién capturado es mayor, entonces
se le asigna a esta variable y se verificará si éste es negativo,
de ser así entonces se activa una bandera para indicar que se
leyó un número negativo.

Algoritmo

69
Metodología de la programación

70
Problemas repetitivos

Ejemplo 4

Definición del problema

Algoritmo que calcula e imprime los números perfectos


menores que 1 000. (Un número es perfecto si la suma de sus
divisores, excepto el mismo, es igual al propio número).

Planeación de la solución

ENTRADA: ninguna.
SALIDA: todos los números perfectos menores que 1 000.
Se utiliza un ciclo desde para recorrer todos los números
positivos menores que 1 000. Dentro de este ciclo se utiliza
otro ciclo para encontrar los divisores del número en tumo.
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 número analizado, si son iguales, se imprime el número,
si no es así continúa con el siguiente.

Algoritmo

71
Metodología de la programación

72
Problemas repetitivos

Problemas propuestos

1. Algoritmo que lee una secuencia de 100 números y obtiene


e imprime cuántos hay positivos, negativos y nulos (ceros).
2. Algoritmo que lee un número entero positivo N y calcula e
imprime su factorial N!.
3. Algoritmo que obtenga el producto de dos números enteros
positivos mediante sumas sucesivas.
4. Algoritmo que lee un número X y otro entero positivo N y
calcula la n-ésima potencia de X.
5. Algoritmo que genera la lista de los N primeros números
primos, siendo N el dato de entrada.
6. Algoritmo que calcula e imprime el valor del número (e)
como la suma de la serie:
S 1 / i! = 1/0! + 1/2! + 1/3! + 1/4! + ... + 1/N!
La precisión del resultado será mayor cuanto mayor sea el
dato de entrada N (entero positivo).
7. Algoritmo que evalúa 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 números enteros positivos
son amigos. (Dos números son amigos si la suma de los diviso­
res, excepto él mismo, es igual al segundo, y viceversa).
9. Algoritmo que lee un número entero positivo N e imprime
su tabla de multiplicar.
10. Algoritmo que lee un número entero y positivo N y escribe
la lista de sus divisores.
11. Algoritmo que lee un número entero y positivo N; calcula
y escribe la suma de sus divisores.
12. Algoritmo que lee un número entero y positivo N y escribe
los n primeros términos de la sucesión Fibonacci. La sucesión
Fibonacci se caracteriza porque cada término es igual a la

73
Metodología de la programación

suma de sus dos anteriores, dándose por definición el primero


(0) y el segundo (1).
a0 = 1 al = 1 an = an-l+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
números pares e impares comprendidos entre 1 y 200.
16. Calcular y visualizar la suma y el producto de los números
pares comprendidos entre 20 y 400, ambos inclusive.
17. Leer 500 enteros y obtener cuántos son positivos.
18. Calcular la suma de los cuadrados de los 100 primeros
números naturales.
19. Sumar los números pares del 2 al 100 e imprimir su valor.
20. Sumar 10 números introducidos por el teclado.
21. Calcular la media de 50 números introducidos por el teclado
y visualizar su resultado.
22. Visualizar los múltiplos de 4 comprendidos entre 4 y N,
donde N es un número introducido por teclado.
23. Realizar un algoritmo que permita imprimir los primeros
100 números enteros.
24. Dados 10 números enteros que introduciremos por teclado,
visualizar la suma de los números pares de la lista, cuántos
números pares existen y cuál es la media aritmética de los nú­
meros impares.
25. Calcular la nota media por alumno de una clase de a
alumnos. Cada alumno podrá tener un número n de notas
distinto.

74
6
Estructuras dimensionales

n arreglo es una colección finita de elementos del mis­

U mo tipo agrupados en una sola variable. Cada posición


de almacenamiento en un arreglo es llamada un ele­
mento del arreglo. Los elementos de un arreglo se encuentran
agrupados de manera ordenada, es decir, podemos determinar
cuál es el primer elemento, el segundo, el tercero..., y el né-
simo elemento.
Físicamente, un arreglo es un conjunto de localidades de
memoria contiguas, donde la dirección más baja corresponde al
primer elemento y la dirección más alta al último.
Para accesar a un elemento en particular, utilizamos un
índice. En un arreglo de n elementos, el índice para el primer
elemento es 0, para el segundo elemento es 2 y así sucesiva­
mente hasta llegar al n-ésimo elemento para el cual el índice
correspondiente es n-1.
Así, una notación típica para un arreglo de 10 elementos
X0, X1, X2 , ..., X9. X es el nombre general por el cual
identificamos a los elementos del arreglo, mientras que los
números 0, 1, ..., 9 son los índices que indican cuál es la
posición de cada elemento en el arreglo.

75
Metodología de la programación

Las operaciones que se pueden realizar con arreglos son:


• Lectura. El proceso de lectura consiste en accesar a
cualquier elemento del arreglo para conocer el valor que
tiene almacenado.
• Escritura. El proceso de escritura consiste en accesar a
cualquier elemento del arreglo para almacenar un valor.
• Inicialización. Consiste en dar un valor de inicio a cada
elemento del arreglo.
• Actualización
Inserción. Con esta operación podemos agregar nuevos
elementos a un arreglo.
Eliminación. Es posible eliminar elementos de un arreglo.
Modificación. Podemos modificar el valor almacenado
en cualquier elemento de un arreglo.
• Ordenación. Consiste en ordenar bajo cierto criterio
(descendente, ascendente, etc.) los elementos de un
arreglo.
• Búsqueda. Podemos conocer la posición 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 [tamaño]

76
Estructuras dimensionales

Ejemplos:
entero edades[20]
real X[10];

Tipo de dato se refiere al tipo de dato de cada elemento del


arreglo y tamaño es la cantidad de elementos agrupados en la
misma variable.

Forma de acceso a un elemento específico 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 se quiere accesar al cuarto elemento del
arreglo X, se invocaría de la siguiente manera: X[3]
Recuerde que el arreglo almacena desde la casilla 0. Por tanto,
en un arreglo de 20 casillas, éstas están numeradas del 0 al 19.

Utilización de arreglos unidimensionales como


cadenas

El uso más común de los arreglos unidimensionales es la


implementación de una cadena (conjunto) de caracteres.
Por ejemplo, si se desea crear un cadena que contenga 5
caracteres, la declaración debe hacerse como sigue:
carácter cadena[5]

Matrices

Una matriz es un arreglo de arreglos unidimensionales.


Constituyen la forma más simple de los arreglos multidi-

77
Metodología de la programación

mensionales. Una matriz o arreglo bidimensional tiene dos


subíndices.
Su forma general de declaración es
tipo_dato nombre_variable [primer índice] [segundo índice];
El primer índice corresponde a la fila y el segundo a la
columnas.

Ejemplos
Ejemplo 1

Definición del problema

Declarar un arreglo de 20 elementos de tipo entero e inicialice


todos los elementos de dicho arreglo en 0.

Análisis del problema

ENTRADA: ninguna.
SALIDA: ninguna.
Se necesita primeramente declarar un arreglo de 20
elementos. Después de la declaración se va a utilizar un ciclo
DESDE que inicie en 0 y termine en 19 para la operación de
inicialización. El contador del ciclo va a servir como índice
para los elementos del arreglo.

Algoritmo

78
Estructuras dimensionales

Diagrama de flujo

Ejemplo 2

Definición del problema

Sumar el contenido de los elementos de una matriz de 5


columnas x 5 renglones.

Análisis del problema


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.

79
Metodología de la programación

80
Estructuras dimensionales

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 número total de toneladas de
cereales cosechados durante cada mes del año anterior. Se
desea la siguiente información: a. El promedio anual de
toneladas cosechadas; b. ¿Cuántos meses tuvieron una cosecha
superior al promedio anual?; c. ¿Cuántos meses tuvieron una
cosecha inferior al promedio anual?
3. En un vector se almacenan las calificaciones finales de N
alumnos. Escribir: o. El promedio general del grupo; b.
Número de alumnos aprobados y número de alumnos repro­
bados; c. Porcentaje de alumnos aprobados y porcentaje de
alumnos reprobados; d. Número de alumnos cuya calificación
fue mayor o igual a 8.
4. Dada una cadena de caracteres como dato, se desea saber el
número 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 cai l, cai 2, ..., cai50,
donde cali es un numero entero comprendido entre los valores
0 y 10. Calcular y 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 multiplicación 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.
Intercambiar por renglón los elementos de una matriz. Los
elementos del renglón 1 deben intercambiarse con los ele­
mentos del renglón N, los del renglón 2 con los del N-l y así
sucesivamente.

81
7
Módulos

no de los métodos más conocidos para resolver un

U problema es dividirlo en problemas más pequeños,


llamados subproblemas. De esta manera, en lugar de
resolver una tarea compleja y tediosa, se resuelven otras más
sencillas y a partir de ellas se llega a la solución. Esta técnica
se usa mucho en programación y se le suele llamar diseño
descendente, metodología de “divide y vencerás” o progra­
mación top-down.
Es evidente que si esta metodología lleva a tratar con
subproblemas, entonces también se tendrá la necesidad de
poder crear y trabajar con subprogramas para resolverlos. A
estos subprogramas se les suele llamar módulos, de ahí viene
el nombre de programación modular.
El concepto básico de la programación modular es muy
simple: consiste en dividir un programa en módulos. En
realidad es un método de diseño que tiende a dividir el proble­
ma, de forma lógica, en partes perfectamente diferenciadas
que pueden ser analizadas, programadas y puestas a punto
independientemente.
Se podrían sintetizar los objetivos de la programación
modular en los siguientes:

83
Metodología de la programación

Disminuir la complejidad.
Aumentar la claridad y fiabilidad.
Disminuir el costo.
Aumentar el control del proyecto.
Facilitar la ampliación del programa mediante nuevos
módulos.
Facilitar las modificaciones y correcciones al quedar
automáticamente localizadas en un módulo.
Un módulo está constituido por una o varias instrucciones
físicamente contiguas y lógicamente encadenadas, las cuales
se pueden referenciar mediante un nombre y pueden ser
llamadas desde diferentes puntos de un programa.

Un módulo puede ser:


Un programa.
Una función.
Una subrutina (o procedimiento).
Se consideran las siguientes dos situaciones:
1. En un cierto programa, diferentes listas o tablas de
números 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 clasificación -por
ejemplo, la burbuja y el ordenamiento rápido- por lo que se
escribirá primeramente el código para clasificar a A, a
continuación se repite el proceso, con los cambios adecuados,
para clasificar B y C. Esto está claro, pero requiere del uso de
códigos casi iguales para las tres listas. Se pueden ahorrar
esfuerzos si fuera posible escribir el código solamente una vez
y a continuación 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 programa­

84
Módulos

dores. Para evitar confusiones, él debe hacer cada parte tan


independiente como sea posible de los demás. ¿Cómo puede
un programa, que es una tarea sencilla, ser dividida en dos
subproblemas 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 módulos o subprogramas.
Los módulos son independientes, esto quiere decir que
pueden ejecutar su trabajo sin interferencia con otras partes
del programa.
Cada módulo ejecuta una tarea específica. Entendiéndose
como tarea un trabajo concreto que un programa debe ejecu­
tar como parte de su operación general, como enviar una línea
de texto a la impresora, ordenar un arreglo en orden numérico
o calcular una raíz cúbica.

Parámetros

Es muy común que las funciones utilicen argumentos, es decir,


que necesiten de algún valor o valores externos dentro de su
propio código. Estos valores se pasan mediante variables, las
cuales se declaran dentro de los paréntesis que siguen al
nombre de la función. Sólo se debe tomar en cuenta que los
argumentos utilizados al declarar la función sean del mismo
tipo que los usados para llamar la función.
Se puede utilizar a las variables que son parámetros formales
como cualquier otra variable local, es decir, se les puede hacer
asignaciones o usarlas en cualquier expresión permitida.

85
Metodología de la programación

Representación de módulos

Un módulo se puede representar por:

nombreModulo. Es la palabra con la que se identificará al


módulo. Cada módulo tiene un nombre único. Con ese nombre,
en cualquier otra parte del programa se pueden ejecutar los
enunciados contenidos en él. A esto se le conoce como la
llamada de módulo. Un módulo puede ser llamado desde el
interior de otro.
argumentos. Es un conjunto de variables separadas por
comas y con un tipo de dato específico que reciben los valores
de los argumentos cuando se llama a la función. Una función
puede carecer de parámetros en cuyo caso los paréntesis estarán
vacíos tanto al declarar como al mandar llamar a la función.

86
Módulos

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

MÓDULO CrearVector(Vector,N,Número)
/*E1 algoritmo crea un vector de N elementos. N es el
número de elementos del vector. “Numero” es el número actual
de elementos*/

MODULO InsertaElemento(Vector,N,Numero,dato)
/*E1 algoritmo inserta un elemento en un vector. “Vector”
es un arreglo de N elementos. “Numero” es el número actual
de elementos, “dato” es el valor a insertar*/

87
Metodología de la programación

DEOTRAFORMA
DESPLEGAR “El elemento ” + dato + “ no se puede
insertar”
FINSI
FIN_MODULO

MODULO EliminaElemento(Vector,N,Numero,dato)
/*E1 algoritmo elimina un elemento en un vector. “Vector”
es un arreglo de N elementos. “Numero” es el número actual
de elementos, “dato” es el valor a eliminar*/

88
Módulos

FINMIENTRAS
SI band = falso ENTONCES
DESPLEGAR “El elemento “ + dato + “ no está en el
arreglo”
FIN SI
DEOTRAFORMA
DESPLEGAR “El arreglo está vacío”
FIN SI
FINMODULO

MODULO MostrarVector(Vector,N)
/*N es el número de elementos del vector*/

DESPLEGAR Vector[i]
FINDESDE
FINMODULO

MODULO Principal()
REPETIR
DESPLEGAR “1. Crear un vector”
DESPLEGAR “2. Insertar un elemento en el vector”
DESPLEGAR “3. Borrar un elemento del vector”
DESPLEGAR “4. Mostrar los elementos del vector”
DESPLEGAR “5. Salir”
DESPLEGAR “Elige una opcion:”
PEDIR opcion
SEGÚN_SEA opción

89
Metodología de la programación

1: DESPLEGAR “Cuántos elementos del vector: ”


PEDIR N
LLAMAR CrearVector(Vector,N,Numero)
2: DESPLEGAR “Elemento a insertar: ”
PEDIR dato
LLAMAR InsertaElemento(Vector,N,Numero,dato)
3: DESPLEGAR “Elemento a borrar: ”
PEDIR dato
LLAMAR EliminaElemento(Vector,N,Numero,dato)
4: DESPLEGAR “Los elementos del vector son:”
MostrarVector(Vector,N)
FINSEGÚN
HASTA QUE opcion=5
FIN MODULO

90
8
Pseudocódigo

seudo o seudo, significa falso, imitación y código se

P refiere a las instrucciones escritas en un lenguaje de


programación. Pseudocódigo es un lenguaje artificial
e informal que ayuda a los programadores a desarrollar
algoritmos. El pseudocódigo es similar al lenguaje cotidiano;
es cómodo y amable con el usuario, aunque no es realmente
un verdadero lenguaje de computadora. No se ejecutan en las
computadoras, sirven para ayudar al programador a razonar
un programa antes de intentar escribirlo en algún lenguaje. Un
programa traducido a pseudocódigo puede ser fácilmente
convertido en un programa en C/C++, si es que está bien
elaborado.

Palabras reservadas

Las palabras reservadas son palabras clave que permiten


reconocer qué se está haciendo. Por ejemplo, cuando se desea
pedir un dato al usuario, se escribe la palabra PEDIR, con
letras mayúsculas para diferenciarla del texto restante. Las pa­
labras reservadas se clasifican en dos grandes grupos, las de

91
Metodología de la programación

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 pseudocódigo 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:

entero
carácter
cadena
decimal
lógico
vacío

La forma general para usar los tipos de variables es:


tipo nombre Variable;
La siguiente tabla muestra las funciones que se utilizan para
el manejo de entrada y salida y además para los bloques de
código en pseudocódigo.

Descripción Pseudocódigo Lenguaje


_________________________________________________ C / C + +
Simula al cursor en la pantalla en la irxy(x, y) gotoxy(x, y)
posición x, y.
Simula limpiar la pantalla limpia() clrscr()
Se pide un dato y se almacena en la pedir(variable) scanf(variable)
variable

92
Pseudocódigo

Escribe datos en la pantalla de una


variable o un mensaje.
Simula un salto de línea en la pantalla
Inicia un bloque de instrucciones
Finaliza un bloque de instrucciones
Finaliza una línea de instrucciones

Estructuras de control

si(condición) if(condición)

si(condición)-sino if(condición)-else

según(variable) switch(variable)

para(valorInicio; for(valorlnicio;
condición; condición;
incremento) incremento)

93
Metodología de la programación

hacer- do-
mientras(condición) while(condición)

mientras(condición) while(condición)

Ejemplo

Definición del problema

Determinar si un alumno está aprobado o reprobado, según su


calificación (está aprobado si la calificación es mayor o igual
a 7).

Planeación de la solución

ENTRADA: calificación (calif)


Si la calificación es mayor o igual (>=) a 7, se desplegará
que está aprobado, de lo contrario que está reprobado.
SALIDA: “Aprobado” o “Reprobado”.

Algoritmo

1. PEDIR calif

94
Pseudocódigo

2. SI calif >= 7 ENTONCES


3. DESPLEGAR “Aprobado”
4. DE_OTRA_FORMA
5. DESPLEGAR “Reprobado”
6. FIN_SI

Pseudocódigo

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

95
Bibliografía

Bores Rangel, María del Rosario, Computación, metodología,


lógica computacional y programación, McGraw-Hill, 1993.
Cairo Battistutti, Osvaldo, Metodología de la programación:
algoritmos, diagramas de flujo y programas, 1.1 y n, Alfao-
mega, 1996.
Joyanes Aguilar, Luis, Metodología de la programación: dia­
gramas de flujo, algoritmos y programación estructurada,
McGraw-Hill, 1987.

97
Metodología de la programación
con pseudocódigo enfocado al lenguaje C
se terminó de imprimir en abril de 2008.
Tiraje: mil ejemplares.
ste libro proporciona una visión completa de la
metodología de la programación, enfocándose en
la fase analítica, considerándola como la parte sustan­
cial en el proceso de solución de problemas por medio
de computadora.

Por medio de la metodología utilizada, el lector


podrá dar solución a problemas de distinto nivel de
complejidad, capacitándolo para analizar las necesi­
dades inherentes de un programa, estructurarlo
adecuadamente y crear los algoritmos necesarios para
tratarlos, independientemente de cualquier lenguaje
de programación.

Por último se presenta un pseudocódigo como


preámbulo para iniciar con la siguiente fase de la
metodología, esto es la codificación en algún lenguaje de
programación, el pseudocódigo se enfoca al lenguaje C,
al ser este el lenguaje utilizado en el siguiente curso.

Ciencia/tecnología

También podría gustarte