480

Computación metodología, lógica computa

Embed Size (px)

DESCRIPTION

Bores Rangel, Maria del Rosario.Estructura de la programacíon, diagramas de flujo, software de procesos internos y software de interfaces.

Citation preview

Page 1: Computación metodología, lógica computa
Page 2: Computación metodología, lógica computa
Page 3: Computación metodología, lógica computa
Page 4: Computación metodología, lógica computa

COMPUTACIÓN

METODOLOGÍA, LÓGICA COMPUTACIONAL Y PROGRAMACIÓN

Page 5: Computación metodología, lógica computa
Page 6: Computación metodología, lógica computa

COMPUTACIÓN

METODOLOGÍA, LÓGICA

COMPUTACIONAL Y PROGRAMACIÓN

Ma. del Rosario Bores Rangel Ingeniera en Sistemas Computacionales Profesora de planta de Computación en el Departamento de Ciencias Básicas de la División de Enseñanza Media en el Instituto Tecnológico y de Estudios Superiores de Monterrey Campus Toluca

Page 7: Computación metodología, lógica computa

Gerente de producto: Alejandra Martínez Ávila Supervisor de edición: Javier López Campoy Supervisor de producción: Zeferino García García

COMPUTACIÓN Metodología, lógica computacional y programación

Prohibida la reproducción total o parcial de esta obra, por cualquier medio, sin autorización escrita del editor.

DERECHOS RESERVADOS © 1993, respecto a la primera edición por McGRAW-HILL INTERAMERICANA DE MÉXICO, S. A. de C. V.

Atlacomulco 499-501, Fracc. Ind. San Andrés Atoto, 53500 Naucalpan de Juárez, Edo. de México Miembro de la Cámara Nacional de la Industria Editorial, Reg. Núm. 1890

ISBN 970-10-0225-3

1234567890

Impreso en México

9087654213

Printed in México

Esta obra se terminó de imprimir en febrero de 1993 en Programas Educativos, S.A. de C.V. Calz. Chabacano Núm. 65-A Col. Asturias Deleg. Cuauhtemoc 06850 México, D.F.

Se tiraron 4000 ejemplares

Page 8: Computación metodología, lógica computa

CONTENIDO

Prólogo ............................................................................................................................... XI

PARTE I: Metodología para la solución de problemas ......................................................... 1

Capítulo 1: Introducción .................................................................................................. 3

Objetivos ............................................................................................................................ 3 1) Definición de computadora ........................................................................................ 4 2) Definición de sistema computacional ............................................................................ 4 3) Clasificación de los componentes de un sistema computacional ..................................... 4 4) Clasificación del hardware ........................................................................................... 5

A) Dispositivos de entrada ......................................................................................... 5 B) Dispositivos de salida ........................................................................................... 6 C) Dispositivos de procesamiento .............................................................................. 6 D) Dispositivos de almacenamiento permanente ......................................................... 6

5) Clasificación del software ............................................................................................ 7 A) Software de aplicación .......................................................................................... 7 B) Software del sistema .......................................................................................... 7

Resumen ............................................................................................................................. 8

Capítulo 2: Metodología para la solución de problemas ....................................................... 9

Objetivos ............................................................................................................................ 9 1) Definición del problema ............................................................................................... 11 2) Planeación de la solución ............................................................................................. 12 3) Algoritmo ..................................................................................................................... 13 4) Diagrama de flujo ......................................................................................................... 15 5) Codificación y edición del programa ............................................................................ 17 6) Pruebas y depuración .................................................................................................... 18 7) Documentación y mantenimiento .................................................................................. 18 Resumen ............................................................................................................................. 19

PARTE II: Lógica computacional ........................................................................................ 21

Capítulo 3: Conceptos básicos ............................................................................................ 23

Objetivos ............................................................................................................................ 23 1) Tipos de datos 24

A) Numéricos ............................................................................................................. 24

Page 9: Computación metodología, lógica computa

Vi CONTENIDO

B) Alfanuméricos .................................................................................................................... 25 2) Zonas de memoria ...................................................................................................................... 25

A) Constantes ........................................................................................................................... 26 B) Variables ............................................................................................................................. 26

3) Expresiones ................................................................................................................................. 26 A) Definición ........................................................................................................................... 26 B) Elementos de una expresión ............................................................................................. 26

4) Tipos de operadores ................................................................................................................... 26 A) Asociativos ...................................................................................................................... 27 B) Aritméticos ......................................................................................................................... 27 C) Relaciónales ........................................................................................................................ 28 D) Lógicos ................................................................................................................................ 28

Problema resuelto de operadores aritméticos ................................................................................. 29 Problemas propuestos de operadores aritméticos ........................................................................... 30 Problema resuelto de operadores relaciónales y lógicos ............................................................... 30 Problemas propuestos de operadores relaciónales y lógicos ......................................................... 31 Resumen ............................................................................................................................................. 32

Capítulo 4: Tipos de problemas ....................................................................................................... 33

Objetivos ............................................................................................................................................ 33 1) Problemas secuenciales ............................................................................................................. 34

Problemas resueltos ...................................................................................................... 34 Problemas propuestos ...................................................................................................... 51

2) Problemas selectivos .................................................................................................................. 53 2a) Problemas selectivos simples .......................................................................................... 54

Problemas resueltos ...................................................................................................... 54 Problemas propuestos ...................................................................................................... 69

2b) Problemas selectivos compuestos ................................................................................... 72 Problemas resueltos ...................................................................................................... 72 Problemas propuestos ...................................................................................................... 96

3) Problemas repetitivos ................................................................................................................. 98 Introducción ....................................................................................................................................... 98 1) Ciclos con un número determinado de iteraciones ................................................................. 99 2) Ciclos con un número indeterminado de iteraciones .............................................................. 102

Tipos de problemas repetitivos ................................................................................................. 103 3a) Problemas repetitivos simples ......................................................................................... 103

Problemas resueltos ...................................................................................................... 104 Problemas propuestos ...................................................................................................... 154

3a.2) Número indeterminado de iteraciones ......................................................................... 155 Problemas resueltos ........................................................................................................................... 155 Problemas propuestos ........................................................................................................................ 175 Problemas repetitivos compuestos ................................................................................................... 176 Problemas resueltos ........................................................................................................................... 176 Problemas propuestos ....................................................................................................................... 204 Resumen ............................................................................................................................................. 205

Page 10: Computación metodología, lógica computa

CONTENIDO Vii

PARTE III: Programación ................................................................................................... 207

Capítulo 5: Elementos del lenguaje .................................................................................. 209

Objetivos ............................................................................................................................ 209 Introducción ....................................................................................................................... 210 1) Tipos de datos .............................................................................................................. 210 2) Zonas de memoria ........................................................................................................ 211 3) Expresiones ............................................................. . . ................................................ 212 4) Tipos de operadores ..................................................................................................... 212 5) Palabras reservadas ...................................................................................................... 214 Resumen ............................................................................................................................. 215

Capítulo 6: Manejo de archivos ........................................................................................... 216

Objetivos ............................................................................................................................ 216 Procedimiento de entrada a Quick Basic ............................................................................. 217 Instrucciones de manejo de archivos ................................................................................... 217 a) Creando un programa ................................................................................................... 217 b) Recuperando un programa de disco ............................................................................... 219 c) Guardando un programa en disco .................................................................................. 219 d) Imprimiendo un programa ............................................................................................ 220 e) Ejecutando un programa ............................................................................................... 220 Resumen ............................................................................................................................. 221

Capítulo 7: Interacción usuario-programa ............................................................................ 222

Objetivos ............................................................................................................................ 222 a) Asignación ................................................................................................................... 223

Instrucción LET ........................................................................................................... 223 b) Entrada de datos ........................................................................................................... 225

Instrucción INPUT ....................................................................................................... 225 c) Salida de datos ........................................................................................................... 226

Instrucción PRINT ....................................................................................................... 226 Comentarios ........................................................................................................................ 227 Instrucción REM................................................................................................................. 227 Problemas resueltos ............................................................................................................ 228 Problemas propuestos .......................................................................................................... 235 Resumen ............................................................................................................................. 236

Capítulo 8: Control de ejecución ......................................................................................... 237

Objetivos ............................................................................................................................ 237 8a) Control de ejecución condicional 238

Instrucción IF ... THEN ... ELSE ............................................................................. 238 Problemas resueltos .................................................................................................... 241

Page 11: Computación metodología, lógica computa

Viii CONTENIDO

Problemas propuestos ............................................................................................................. 261 8b) Control de ejecución incondicional .................................................................................... 261

Instrucción GOTO ................................................................................................................... 261 8c) Estructuras repetitivas: combinación de las instrucciones IF ... THEN ... ELSE

y GOTO .................................................................................... ■■ ........................................... 262 Problemas resueltos ................................................................................................................ 262 Problemas propuestos ............................................................................................................. 274

8d) Estructuras repetitivas: Instrucción FOR ... NEXT .............................................................. 274 Problemas resueltos ................................................................................................................ 282 Problemas propuestos ............................................................................................................. 309

Resumen ............................................................................................................................................ 310

Capítulo 9: Funciones ...................................................................................................................... 311

Objetivos ............................................................................................................................................ 311 9a) Funciones predefinidas ............................................................................................................ 313

1) Funciones numéricas ....................................................................................................... 313 Funciones trigonométricas .............................................................................................. 313 Función SIN...................................................................................................................... 313 Función COS .................................................................................................................... 313 Función TAN .................................................................................................................... 314 Función ARCTAN ........................................................................................................... 314

Funciones aritméticas ............................................................................................................. 314 Función SQR .................................................................................................................... 314 Función ABS .................................................................................................................... 315 Función FIX...................................................................................................................... 315 Función INT .................................................................................................................. 316

Problemas resueltos .......................................................................................................................... 317 Problemas propuestos ....................................................................................................................... 322

2) Funciones alfanuméricas ................................................................................................. 323 Función LEFT$ ................................................................................................................ 323 Función RIGHT$ ............................................................................................................. 323 Función MID$ ............................................................................................................... 324 Función LEN .................................................................................................................... 324 Función SPACE$ ............................................................................................................. 325 Concatenación de expresiones alfanuméricas ............................................................... 325

Problemas resueltos .......................................................................................................................... 326 Problemas propuestos ....................................................................................................................... 339 9b) Funciones definidas por el usuario ........................................................................................ 339

1) Funciones de una sola línea ............................................................................................ 340 2) Funciones multilínea ....................................................................................................... 340

Problemas resueltos .......................................................................................................................... 341 Problemas propuestos ....................................................................................................................... 343 Resumen ............................................................................................................................................ 345

Page 12: Computación metodología, lógica computa

CONTENIDO iX

Capítulo 10: Procesos modulares ......................................................................................... 346

Objetivos ............................................................................................................................. 346 1) Función ...................................................................................................................... 349 2) Subrutina ....................................................................................................................... 349 3) Procedimiento ............................................................................................................... 350 4) Subprogramas ............................................................................................................... 350 5) Programas ..................................................................................................................... 351 Problemas resueltos ............................................................................................................. 351 Problemas propuestos .......................................................................................................... 365 Resumen .............................................................................................................................. 366

Capítulo 11: Estructuras de datos ......................................................................................... 367

Objetivos ............................................................................................................................. 367 1) Arreglos ........................................................................................................................ 368

Instrucción DIM ......................................................................................................... 369 Instrucción OPTION BASE .......................................................................................... 370 Problemas resueltos ................................................................................................... 371 Problemas propuestos ................................................................................................. 381

2) Matrices ........................................................................................................................ 381 Problemas resueltos ............................................................................................................. 382 Problemas propuestos .......................................................................................................... 391 3) Archivos de datos .......................................................................................................... 392

Organización de los archivos de datos ........................................................................... 395 1) Secuenciales ........................................................................................................... 395 2) Aleatorios o directos .............................................................................................. 395 Archivos de datos aleatorios .......................................................................................... 395 Proceso para accesar un archivo de datos aleatorio ........................................................ 395 Concepción del archivo de datos ................................................................................... 396 Operaciones con los archivos aleatorios ........................................................................ 397

1) Altas ............................................................................................................................. 398 2) Bajas ............................................................................................................................. 398 3) Consultas ................................................................................................................... 398 4) Cambios ........................................................................................................................ 399 5) Reporte general ............................................................................................................. 399 6) Reportes específicos ...................................................................................................... 399

Instrucciones y funciones para el manejo de archivos de datos aleatorios ........................ 400 Instrucción OPEN ...................................................................................................... 400 Instrucción FIELD# ................................................................................................... 401 Instrucción LSET .......................................................................................................... 401 Instrucción RSET .......................................................................................................... 402 Instrucción PUT# .......................................................................................................... 403 Instrucción GET# ......................................................................................................... 403 Instrucción CLOSE# ..................................................................................................... 404 Función LOF ................................................................................................................ 404

Page 13: Computación metodología, lógica computa

X CONTENIDO

Función MKS$ ............................................................................................................. 405 Función MKD$ ............................................................................................................. 405 Función MKI$ ........................................................................................................... 405 Función MKL$ ............................................................................................................. 406 Función CVS ................................................................................................................ 406 Función CVD ............................................................................................................... 406 Función CVI .............................................................................................................. 406 Función CVL ................................................................................................................ 406 Instrucciones para dar presentación a un programa ........................................................ 407 Instrucción CLS ............................................................................................................ 407 Instrucción LÓCATE .................................................................................................... 407

Problemas resueltos ............................................................................................................. 407 Problemas propuestos .......................................................................................................... 450 Resumen .............................................................................................................................. 457

índice analítico .................................................................................................................... 459

Page 14: Computación metodología, lógica computa

PRÓLOGO El presente libro está destinado a todos aquellos interesados en iniciarse en la programación de computadoras.

Nuestra motivación para hacerlo fue que no pudimos encontrar en el mercado un libro que enseñara al alumno a programar con una metodología gradual y sencilla. Muchos de los libros que revisamos enseñan a programar directamente sobre un lenguaje de computadora, lo cual hace que la programación dependa de un lenguaje determinado; otros emplean metodologías que confunden al estudiante por la forma poco gradual en que tratan los temas; otros más incluyen pocos ejercicios, con lo que la práctica del alumno, base del aprendizaje en la programación de computadoras, se ve minimizada.

Con este libro buscamos resolver estas deficiencias, pues empleamos una metodología que presenta los temas de una manera gradual y organizada; además, incluimos dos tipos de problemas para que el estudiante se ejercite:

— Los problemas resueltos, en los cuales se muestra, paso a paso, la forma de resolver un problema dado.

— Los problemas propuestos, que tienen como propósito que el estudiante aplique la teoría aprendida para que, por sí mismo, resuelva un problema dado.

La obra está dividida en tres grandes partes. En la primera describimos tanto las partes de la computadora —con un enfoque dirigido hacia la programación— como los pasos de la metodología que usamos a lo largo del libro para la solución de los problemas. En la segunda parte enseñamos los conceptos de lógica computacional necesarios para poder programar en cualquier lenguaje computa-cional. Nos hemos basado en técnicas tales como los algoritmos y los diagramas de flujo, incluidos como pasos de la metodología. En la última parte, la fase de elaboración de programas, enseñamos la versión Quick Basic del lenguaje Basic para lograr el objetivo de hacer programas funcionales y estructurados.

Los capítulos que integran cada parte están organizados de la siguiente manera: primero se presentan los objetivos del capítulo; a continuación se expone la teoría, se resuelven problemas, se dejan problemas propuestos para el estudiante y, finalmente, el capítulo concluye con un resumen de conceptos.

Dada la estructuración de los capítulos y la exposición de los conceptos, pensamos que este libro puede usarse de manera autodidacta o como libro de texto para materias de introducción a la programación de computadoras. De hecho este libro cubre el temario del curso de la materia Computación de la enseñanza media del Instituto Tecnológico y de Estudios Superiores de Monterrey.

Por último hemos elaborado, para el maestro, un manual de soluciones de, aproximadamente, la mitad de los problemas propuestos. Dicho manual, que puede adquirirse por separado, creemos que será de gran utilidad. También recomendamos al maestro que utilice los problemas propuestos del último capítulo de este libro como proyectos finales para el alumno.

Agradecemos infinitamente el apoyo moral brindado por nuestros padres, hermanos, esposos e hijos para que la elaboración de este libro fuera posible.

Los autores

Page 15: Computación metodología, lógica computa
Page 16: Computación metodología, lógica computa

PARTE

I

METODOLOGÍA PARA

LA SOLUCIÓN DE PROBLEMAS

Page 17: Computación metodología, lógica computa
Page 18: Computación metodología, lógica computa

CAPÍTULO

1

INTRODUCCIÓN

OBJETIVOS

Al final de este capítulo el alumno:

1.1 Será capaz de definir los siguientes conceptos: a) Computadora b) Procesamiento de información c) Sistema computacional

1.2 Explicará y clasificará los componentes de un sistema computacional: 1.2.1 Hardware

á) Dispositivos de entrada b) Dispositivos de salida c) Dispositivos de procesamiento d) Dispositivos de almacenamiento permanente

1.2.2 Software a) De aplicación b) Del sistema

1.3 Identificará los componentes más importantes de la computadora por la función que realizan en ella.

3

Page 19: Computación metodología, lógica computa

CAPÍTULO

1

INTRODUCCIÓN

1) DEFINICIÓN DE COMPUTADORA

Una computadora es una máquina electrónica que resuelve tareas relacionadas con el procesamiento de información, con una gran velocidad y precisión.

Se entiende por procesamiento de información el tratamiento que reciben los datos para producir nueva información. Por ejemplo, si se tienen los datos (horas trabajadas, horas extras y pago por hora) de cada uno de los empleados de una empresa, se puede obtener la cantidad total de dinero que recibe cada uno en una semana determinada.

La finalidad de la computadora es ayudar al hombre a realizar las tareas repetitivas en menor tiempo y con mayor exactitud. Esto permite que el hombre dedique su tiempo a tareas más creativas.

Es importante notar que la computadora no razona de manera autónoma; simplemente ejecuta una serie de instrucciones que le proporciona un humano.

2) DEFINICIÓN DE SISTEMA COMPUTACIONAL

Se le llama sistema computacional al conjunto de componentes computacionales que, de manera integral, ayudan a resolver un problema que requiere de procesamiento de información.

3) CLASIFICACIÓN DE LOS COMPONENTES DE UN SISTEMA COMPUTACIONAL

Un sistema computacional consta de componentes físicos y lógicos. Los componentes físicos, o tangibles, conocidos como hardware, son los que realizan las tareas

y entre ellos se encuentran los componentes eléctricos y electromagnéticos, así como sus interco-nexiones.

Los componentes lógicos o intangibles, conocidos como software, son los que indican al hardware qué hacer y cómo hacerlo.

4

Page 20: Computación metodología, lógica computa

CAPÍTULO 1. INTRODUCCIÓN 5

En un humano también podemos encontrar componentes físicos y lógicos; por ejemplo, cuando se lanza una pelota, el brazo (componente físico) realiza la acción de tomar y lanzar la pelota, pero es el conjunto de órdenes (componente lógico) emitidas por el cerebro las que le indicarán al brazo que lleve a cabo este par de acciones, y cómo hacerlo.

4) CLASIFICACIÓN DEL HARDWARE

La clasificación de los componentes considerados como hardware está apegada a los recursos que utiliza el hombre cuando resuelve alguna tarea de procesamiento de información. Los componentes se clasifican en:

A) DISPOSITIVOS DE ENTRADA B) DISPOSITIVOS DE SALIDA C) DISPOSITIVOS DE PROCESAMIENTO D) DISPOSITIVOS DE ALMACENAMIENTO PERMANENTE

Por ejemplo, si se pretende que una computadora realice la tarea de obtener el promedio de tres números cualesquiera, ésta debe tener medios para preguntar cuáles son esos tres números. También debe tener manera de efectuar la suma de éstos y la división entre 3. Asimismo, debe tener un medio de comunicación para mostrar el promedio que obtuvo.

Si este problema lo tratara de resolver un humano en vez de la computadora, tendría que hacer lo siguiente:

1) Pedir el primer número y anotarlo en algún lugar, para evitar olvidarlo. 2) Pedir el segundo número y anotarlo. 3) Pedir el tercer número y anotarlo. 4) Efectuar la suma aritmética de estos tres números y anotar el resultado en algún lugar. 5) Dividir el resultado anterior entre 3 y anotarlo en algún lugar. 6) Mostrar el resultado anterior.

Quien hizo el proceso debió tener oídos para escuchar los tres números que se le dieron, papel y lápiz para retenerlos y ayudarse a obtener los resultados de la suma y de la división; tener cerebro para realizar estas operaciones, y boca para leer el resultado.

Así pues, esta persona tuvo canales de comunicación para preguntar datos y emitir resultados, y medios de procesamiento para realizar sus operaciones. De un modo análogo, la computadora también tiene canales de comunicación para recibir y emitir datos, así como medios de procesamiento.

Vamos ahora a estudiar las partes de una computadora analizándola desde el punto de vista de la información que emite, recibe y procesa.

A) Dispositivos de entrada

Éstos son los componentes que permiten a la computadora recibir información. El dispositivo más común que permite recibir información del exterior es el teclado, el cual permite

que se introduzca información cuando se oprimen sus teclas.

Page 21: Computación metodología, lógica computa

6 PARTE I. METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS

Otro dispositivo común es el ratón o mouse el cual permite que se seleccione información para así darle órdenes a la computadora, deslizándose a través de la pantalla.

Alternativamente existen más dispositivos para que la recepción o entrada de datos se lleve a cabo; algunos de ellos son: el lápiz óptico, el scanner, etcétera.

B) Dispositivos de salida

Son los componentes que le permiten a la computadora mostrar al exterior la información. El dispositivo más usado para exteriorizar la información procesada es el monitor o pantalla, el

cual permite visualizar letras, números, símbolos especiales e imágenes. Otro dispositivo especialmente útil, pues permite obtener la información impresa, es la impresora.

C) Dispositivos de procesamiento

Son los componentes que permiten procesar información. Éstos son en sí el "cerebro" de la computadora. Hasta ahora, tanto los dispositivos de entrada

como los de salida, no resultan ser más que dispositivos periféricos a la computadora, porque sólo le sirven para transmitir información de o hacia el exterior. Se compone de dos partes:

a) CPU (Central Procesing Unit: Unidad Central de Procesamiento). Es un circuito electrónico de la computadora capaz de realizar operaciones aritméticas y lógicas, así como coordinar todas las acciones de la computadora.

b) Memoria principal. Es un conjunto de circuitos electrónicos que permiten almacenar y recuperar datos en forma de señales eléctricas. Las acciones de almacenar y recuperar los datos son ejecutadas por el CPU; la memoria sólo es un lugar de almacén de datos; es temporal, porque los almacena sólo mientras esté presente la corriente eléctrica, pero es de muy rápido acceso pues la información viaja a manera de señales eléctricas.

D) Dispositivos de almacenamiento permanente

Estos componentes son conocidos como memoria secundaria, y permiten almacenar la información en forma permanente.

Debido a que la memoria principal es temporal, la información es trasladada a la memoria secundaria cuando se desea que ésta quede almacenada y que su permanencia no dependa de la presencia de la corriente eléctrica.

La memoria secundaria es permanente debido a que la información es almacenada por medios electromagnéticos, pero se reduce significativamente su velocidad de acceso, en contraste con la velocidad de la memoria principal.

Los dispositivos de almacenamiento permanente o secundario son considerados como dispositivos de entrada, pues el CPU, al recuperar la información que había sido almacenada previamente en memoria secundaria, está recibiendo información. Éstos mismos también son considerados como dispositivos de salida cuando el CPU manda la información de memoria principal a la memoria secundaria. Por lo tanto son considerados como dispositivos de entrada/salida.

Page 22: Computación metodología, lógica computa

CAPÍTULO I. INTRODUCCIÓN 7

Como ejemplos podemos citar el disco duro, el disco flexible (diskette), la cinta y el disco óptico.

5) CLASIFICACIÓN DEL SOFTWARE

Se clasifica en:

A) Software de aplicación B) Software del sistema

A) Software de aplicación

Es un software que tiene un propósito específico. Por ejemplo:

• Software de contabilidad • Software de nómina • Software de facturación • Software de procesamiento de textos, etcétera.

B) Software del sistema

Es un software que auxilia en la creación, modificación y ejecución del software de aplicación. Ejemplos;

Sistema operativo: es un software que establece la comunicación entre los componentes del hardware y el resto del software. Su función principal es administrar el funcionamiento del hardware según las órdenes dadas por algún software. Por ejemplo, si usando un software de procesamiento de textos, se desea imprimir un trabajo, el sistema operativo verifica que la impresora esté encendida, si lo está, permite que se realice la impresión, y durante ésta, continúa verificando su estado; si la impresora no está encendida envía un mensaje indicándolo. Si el sistema operativo no estuviera presente la comunicación entre el software de procesamiento de textos y la impresora no podría realizarse. Lo mismo ocurriría con cualquiera otra interacción entre hardware y software.

Lenguajes: es un software que proporciona un conjunto de vocablos y reglas, que se utilizarán para crear el software de aplicación.

A su vez, los lenguajes se clasifican en:

a) Bajo nivel: Utilizan vocablos directamente entendibles por el CPU de la computadora. Por ejemplo: Lenguaje máquina, ensamblador.

b) Alto nivel: Utilizan vocablos parecidos al lenguaje humano pero ininteligibles para el CPU, por lo cual deben ser traducidos a un lenguaje computacional de bajo nivel. Por ejemplo: Basic, Pascal, Cobol, DBase, etcétera.

Page 23: Computación metodología, lógica computa

8 PARTE I. METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS

RESUMEN

Computadora: Máquina electrónica que resuelve tareas relacionadas con el procesamiento de información con una gran velocidad y precisión.

Sistema computacional: Es el conjunto de componentes computacionales que de manera integral ayudan a resolver un problema que requiera de procesamiento de información. Se clasifica en:

Hardware: Componentes físicos o tangibles. Están incluidos los componentes eléctricos, electro-magnéticos e interconexiones, y son los que llevan a cabo las tareas. Se clasifica en:

Dispositivos de entrada: Son componentes que permiten recibir información. El más común es el teclado, pero también existen el mouse, lápiz óptico, scanner, etcétera. Dispositivos de salida: Son componentes que permiten mostrar información al exterior. Los más comunes son la pantalla y la impresora. Dispositivos de procesamiento: Son componentes que permiten procesar información; confor-man el "cerebro" de la computadora. Éstos son:

CPU: Circuito electrónico que lleva a cabo las operaciones aritméticas y lógicas y además coordina todas las acciones de la computadora. Memoria principal: Conjunto de circuitos electrónicos que permiten almacenar datos en forma de señales eléctricas, por lo cual es de rápido acceso, pero temporal. Dispositivos de

almacenamiento permanente: Llamados también memoria secundaria; permiten almacenar y recuperar información por medios electromagnéticos, por lo que es de acceso lento pero permanente. Ejemplos; disco duro, disco flexible.

Software: Componentes lógicos o intangibles. Indican al hardware qué hacer y cómo hacerlo. Se clasifica en:

Software de aplicación: Software con un propósito específico. Ejemplo: software de contabili-dad, software de nómina, etcétera. Software del sistema: Software que ayuda a la creación, modificación y ejecución del software de aplicación. Ejemplos: sistema operativo y lenguajes.

Page 24: Computación metodología, lógica computa

CAPÍTULO

2

METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS

OBJETIVOS

El alumno será capaz de enunciar cada uno de los pasos de la metodología para la solución de problemas, así como las características de cada paso. 2.1 El alumno definirá la metodología para la solución de problemas. 2.2 El alumno describirá cada uno de los siguientes pasos:

2.2.1 Definición del problema 2.2.2 Planeación de la solución 2.2.3 Forma de seleccionar o formular un algoritmo

— El alumno definirá qué es un algoritmo, — El alumno describirá las características generales de los algoritmos — El alumno enumerará las acciones que se pueden llevar a cabo con los algoritmos

2.2.4 Diagrama de flujo — El alumno definirá qué es un diagrama de flujo — El alumno explicará la siguiente notación: a) Bloques terminales, b) Bloques de

entrada y salida, c) Bloques de proceso, d) Bloques de decisión o condicionales, é) Bloques de conexión

2.2.5 Codificación y edición del programa — El alumno definirá qué es codificación — El alumno definirá qué es edición del programa

2.2.6 Pruebas y depuración — El alumno explicará la importancia de las pruebas y la depuración de un programa

para la validación de resultados 2.2.7 Documentación y mantenimiento

— El alumno explicará la importancia de la documentación de un programa computacio- nal

— El alumno explicará la importancia del mantenimiento de un programa computacional para su actualización

2.3 El alumno explicará la interrelación de los siguientes términos: Programador, Programa, Com- putadora, Sujeto de acción

2.4 El alumno enumerará las características esenciales de un programador.

Page 25: Computación metodología, lógica computa

CAPÍTULO

2

METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS

Ya sabemos que una computadora es un aparato electrónico que ejecuta tareas de una manera veloz y precisa, pero no es capaz de razonar autónomamente.

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 algún lenguaje computacional, es llamado programador; se le llama programa al conjunto de instrucciones escritas en un lenguaje computa-cional.

Cuando algún problema que requiera procesamiento de información es resuelto sin ayuda de una computadora, a la persona que lo resuelve de ahora en adelante le llamaremos sujeto de acción.

Como ahora el problema va a ser solucionado con la ayuda de una computadora, es indispensable que el programador se ponga en lugar del sujeto de acción, identifique todas las acciones que éste llevaría a cabo y que posteriormente instruya a la computadora para que sea ésta quien haga el trabajo del sujeto de acción.

Ahora bien, por una parte, está el sujeto de acción en una situación a resolver; por otra, está el programador que debe pensar como el sujeto de acción y también programar la computadora; y por otra, la misma computadora que, ejecutando un programa, resolverá el problema en lugar del sujeto de acción.

Es conveniente definir ahora la interrelación de estos elementos. En primer lugar, la computadora es la que realizará una serie de instrucciones programadas por

el programador para la correcta y rápida resolución del problema. En segundo lugar, el sujeto de acción sabe lo que requiere, y el programador debe entender eso

perfectamente para que obtenga su objetivo. Por último, el programador va a instruir a la computadora. Pero para ello debe hacerlo con un

10

Page 26: Computación metodología, lógica computa

CAPÍTULO 2. METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS 11

lenguaje que ella entienda, y, principalmente, con un orden de acciones adecuado para una correcta funcionalidad.

Resumiendo, podría decirse que el programador es un traductor de las necesidades del sujeto de acción a acciones ejecutables por la computadora.

Es posible que el sujeto de acción y el programador sean el mismo, cuando el programador requiera resolver una situación personal por medio de la computadora.

Por el contrario, puede ser que el sujeto de acción, sea un conocido suyo, dueño de un negocio, y desee llevar un control sobre lo que vende diariamente, y usted, el programador, se permita ayudarle con un programa. Para esto tendría que ponerse de acuerdo con él en qué quiere, exactamente, y de qué información dispone para lograrlo. Entre mejor se logre esta comprensión de la situación, más rápido se llega a la solución de la misma.

Un programador debe entonces tener tres características esenciales:

1) Ser capaz de analizar un problema hasta entenderlo a la perfección. 2) Saber enumerar una serie de pasos por medio de los cuales se va a llegar a la solución del

problema, tomando en consideración las capacidades de la computadora. 3) Conocer un lenguaje de computación adecuado a la solución del problema.

En este capítulo hablaremos de la metodología para la solución de problemas por medio de una computadora; antes comentaremos algunas de sus ventajas y desventajas. Como ventajas podemos citar que una computadora hace las cosas considerablemente rápido. Asimismo, tiene lenguajes con vocabularios que, aunque parcos, pueden ser increíblemente poderosos. Además, si se le instruyó correctamente, hace las cosas de manera perfecta. El inconveniente es que no está preparada para eventualidades. Por ejemplo si en la calle un perro ve que se le va a atravesar una bicicleta, éste puede detenerse aunque no se haya entrenado para ello; pero a una computadora se le debe programar contra todas las posibles condiciones del problema. Afortunadamente la computadora no tiene que cruzar la calle para ejecutar sus programas.

El programador debe tener todas las características enumeradas anteriormente. No hay que olvidar que la práctica es fundamental para adquirir y/o afinar estas características.

La práctica debe hacerse mediante una serie de pasos, llamados metodología para la solución de problemas por medio de la 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 del programa 6) Pruebas y depuración 7) Documentación y mantenimiento

1) DEFINICIÓN DEL PROBLEMA

La definición del problema se centra en la elaboración de un texto que nos permitirá saber qué es lo que se pretende solucionar, y nos proporcionará información útil para el planteamiento de la solución.

Page 27: Computación metodología, lógica computa

12 PARTE I. METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS

En este libro el texto que compone la definición del problema se encontrará ya elaborado. Cabe mencionar que no siempre será útil la información que se proporcione para poder solucionar el problema.

Para ejemplificar, analice la siguiente definición de un problema: Se pretende determinar cuánto mide el lado oeste de un terreno de 600 m2, que tiene forma

rectangular y que el dueño conoce lo que mide el lado norte. Cabe mencionar que dentro de la superficie del terreno, en la parte central, existe un gran agujero que impide el paso, principalmente de norte a sur.

Por lo anterior, nos damos cuenta que, puesto que no tenemos la necesidad de ir a medir el terreno, la información de la segunda oración es totalmente inútil. De hecho, para efectos de la solución, no nos afecta que algún despistado caiga en el agujero mencionado.

2) 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 nos da, qué otra nos hace falta y, con base en esto, determinar la mejor solución.

Si nos 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 definimos formalmente lo que debemos entregar como resultado. Dado que esta información, una vez resuelto el problema, saldrá de la computadora, podemos decir que es una salida de información. De igual manera, la información adicional que necesitemos pedir, constituye una entrada de información hacia la computadora.

Volviendo al ejemplo del terreno, definamos entonces cuáles son las entradas, salidas, datos adicionales, y solución al problema.

SALIDA: Medida del lado oeste del terreno.

ENTRADA: Necesitamos preguntarle al dueño cuánto mide el lado norte del terreno, pues no se da en la redacción de! problema.

DATOS ADICIONALES DE QUE SE DISPONEN: La superficie total del terreno, que es de 600 m2.

SOLUCIÓN: Dado que la superficie de un rectángulo está dada por la fórmula:

superficie = lado A x lado B,

tenemos como dato la medida de la superficie, 600 m2; también podemos decir, que el lado A es el lado oeste de nuestro terreno, mientras que el lado B vendría siendo el lado norte, por lo que la fórmula podría quedar de la siguiente manera:

600 = lado oeste x lado norte

Puesto que el lado norte es una información que, una vez obtenida, podremos disponer de ella, podemos decir que:

600

lado oeste = lado norte

Page 28: Computación metodología, lógica computa

CAPÍTULO 2. METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS 13

Aplicando esta fórmula, podremos llegar a la solución. Observe que las unidades de la superficie del terreno han sido omitidas, pues la computadora puede

realizar la operación aritmética, pero no el trabajo con unidades. Así que desde esta etapa se omitirá el uso de unidades.

3) ALGORITMO

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 supimos qué fórmula aplicar para obtener la solución al problema del terreno, nada nos dice qué hacer antes y después de aplicar la fórmula.

Las acciones que se pueden llevar a cabo en un algoritmo son las siguientes: Pedir datos, desplegar datos, evaluar condiciones y ejecutar operaciones. A continuación explicamos el uso de cada una de ellas.

1) Pedir datos

Lo que una computadora puede pedir son números o palabras, que automáticamente son asignados a una zona de la 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

2) Desplegar datos

Una computadora puede mostrarnos, por pantalla o impresora, números o palabras que, en su conjunto, nos den el resultado esperado. Probablemente estos números o palabras estén almacenados en variables creadas durante la ejecución del programa.

Formato del despliegue de datos:

Ejemplo: DESPLEGAR mensaje

Page 29: Computación metodología, lógica computa

1 4 PARTE I. METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS

DESPLEGAR variable DESPLEGAR mensaje / variable

Ejemplo: DESPLEGAR "el valor excede a 200 000 pesos" DESPLEGAR edad DESPLEGAR "el nombre de la persona es": nombre

3) 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 seguir a continuación en caso de que nuestra condición se cumpla o no.

Formatos para evaluar condiciones:

SI condición ENTONCES conjunto de acciones

DE OTRA FORMA conjunto de acciones

SI condición ENTONCES conjunto de acciones

Ejemplo: SI precio < 200 000 ENTONCES DESPLEGAR "El precio es accesible"

DE OTRA FORMA DESPLEGAR "El precio es inaccesible" PEDIR precio-nuevo

4) Ejecutar operaciones

La máquina puede realizar operaciones aritméticas guardando el resultado en alguna variable. También puede determinar un valor inicial para alguna variable.

Formato para realizar operaciones:

variable ←expresión numérica variable ← expresión alfanumérica

Ejemplos: nueva-edad ← edad + 10

Lo cual significa que el valor de la variable edad, incrementado en 10, es almacenado

Page 30: Computación metodología, lógica computa

CAPÍTULO 2. METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS 15

en otra zona de la memoria llamada nueva-edad, con lo cual estamos creando una nueva variable.

gastos-actuales ←56 000

Lo cual significa que la variable gastos-actuales simplemente toma el valor de 56 000.

Volviendo al ejemplo del terreno, el algoritmo para resolver el problema es:

1) PEDIR lado-norte 2) lado-oeste ← 600/ lado-norte 3) DESPLEGAR "la longitud del lado oeste es", lado-oeste

Al llevar a cabo este algoritmo se puede observar una vez más que: El paso 1 es una entrada de información; el paso 2 es una operación que ejecuta la computadora,

y el paso 3 es una salida de información.

4) DIAGRAMA DE FLUJO

Un diagrama de flujo está definido como la representación gráfica de un algoritmo. Un diagrama de flujo debe de hacerse porque 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 su secuencia. A las figuras les vamos a llamar de ahora en adelante bloques; existen bloques de varios tipos:

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

B) Bloques de entrada/salida

Se emplean para introducir datos a la computadora o exteriorizarlos. El

bloque de entrada de datos tiene la siguiente forma:

Page 31: Computación metodología, lógica computa

16 PARTE I. METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS

Dentro de las figuras se anotan los datos que están entrando o saliendo, según el caso.

C) Bloques de proceso

En ellos se indica una acción imperativa o una operación aritmética. Su forma es:

D) 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 el 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 de la parte negativa.

E) 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:

El bloque de salida de datos tiene la siguiente forma:

Page 32: Computación metodología, lógica computa

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 a 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 checar que estén correctos. Si el programa tiene bloques condicionales se deben hacer tantas pruebas como combinaciones de condiciones haya.

Volviendo al ejemplo del terreno el diagrama de flujo quedaría como se muestra en la figura 2.1.

5) CODIFICACIÓN Y EDICIÓN DEL PROGRAMA

La codificación consiste en traducir el diagrama de flujo a instrucciones de un lenguaje de compu-tadora, en nuestro caso BASIC.

Al conjunto de instrucciones escritas en un lenguaje de computadora se le 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.

Después de haber traducido a un programa en BASIC, se debe introducir a la computadora por medio de un editor de textos generalmente incluido con el lenguaje.

CAPÍTULO 2. METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS 17

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:

Page 33: Computación metodología, lógica computa

Figura 2.1

6) PRUEBAS Y DEPURACIÓN

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

7) 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 un folder llamado 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 —generalmente porque cambian los requerimientos del problema— toda la documentación debe modificarse. Al proceso de mantener los programas y su documentación actualizados se le llama mantenimiento.

Dado que tiempo después de haber hecho el programa ni el mismo programador puede recordar con exactitud cómo se resolvió determinado problema, la importancia de tener la documentación actualizada radica en su utilidad.

18 PARTE 1. METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS

Page 34: Computación metodología, lógica computa

CAPÍTULO 2. METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS 19

RESUMEN

Programador: Persona capaz de instruir a la computadora usando algún lenguaje computacional.

Sujeto de acción: Persona que resuelve tareas que requieran procesamiento de información sin ayuda de una computadora.

El programador es la persona que traduce las necesidades del sujeto de acción a acciones ejecutables por la computadora y, por lo tanto, debe tener tres características esenciales:

1) Ser capaz de analizar un problema hasta entenderlo a la perfección. 2) Saber enumerar una serie de pasos por medio de los cuales se va a llegar a la solución del

problema, tomando en consideración las capacidades de la computadora. 3) Conocer un lenguaje de computación adecuado a la solución del problema.

La solución de problemas con ayuda de una computadora debe llevarse a cabo por medio de una metodología, cuyos pasos 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 del programa 6) Pruebas y depuración 7) Documentación y mantenimiento

Page 35: Computación metodología, lógica computa
Page 36: Computación metodología, lógica computa

PARTE

II

LÓGICA COMPUTACIONAL

Page 37: Computación metodología, lógica computa
Page 38: Computación metodología, lógica computa

CAPÍTULO

3

CONCEPTOS BÁSICOS

OBJETIVOS

3.1 El alumno describirá los siguientes elementos necesarios para la solución de un problema: 3.1.1 Datos numéricos 3.1.2 Datos alfanuméricos

3.2 El alumno describirá y utilizará los siguientes elementos: 3.2.1 Constantes 3.2.2 Variables

3.3 El alumno describirá lo que es una expresión 3.3.1 El alumno explicará los elementos de una expresión

— Operadores — Operandos

3.3.2 El alumno mencionará y usará los tipos de expresiones. — Aritméticas — Lógicas

3.3.3 El alumno explicará y aplicará los operadores: — Asociativos — Aritméticos — Relaciónales — Lógicos

23

Page 39: Computación metodología, lógica computa

CAPÍTULO

3

CONCEPTOS BÁSICOS

Se ha visto ya que el objeto de la metodología para la solución de problemas es resolver problemas que requieran de procesamiento de información y que se pretende resolverlos con la ayuda de la computadora.

Ahora bien, la manera de instruir a la computadora es por medio de un lenguaje computacional. Los lenguajes computacionales tienen sus reglas y es necesario saber algunos conceptos para entenderlas y así poder aplicarlas. Estos conceptos serán explicados a continuación tomando como referencia el lenguaje BASIC:

1. TIPOS DE DATOS

Cuando se requiere de procesamiento de información, se pueden encontrar distintos tipos de datos que requieren ser procesados. Por ejemplo, para realizar operaciones aritméticas se requiere de datos de diferente tipo que los que se necesitarían para ordenar palabras alfabéticamente. Por lo tanto, podemos decir que los datos se clasifican en:

A) Numéricos B) Alfanuméricos

A) Numéricos

Son datos cuyo contenido es una serie de dígitos (0 - 9) que en conjunto nos proporcionan un valor numérico, ya sea entero o real, y que pueden ser precedidos por un signo de + (positivo) o -(negativo). Cuando se omite el uso del signo el dato se asume como positivo.

Con ellos se puede realizar operaciones aritméticas o de conteo. Ejemplos; 1519.17 -32.5 1 0

24

Page 40: Computación metodología, lógica computa

CAPÍTULO 3. CONCEPTOS BÁSICOS 25

B) Alfanuméricos

Son datos cuyo contenido son letras del abecedario, números o caracteres especiales, o bien una combinación de ellos. Aunque los datos alfanuméricos pueden contener números, no pueden ser usados para realizar operaciones aritméticas.

Entre los caracteres especiales podemos encontrar: #, $, &, %, /, ", !, ?, ¡, =, -, +, x, [, ], {, }, etcétera.

Cuando se hace referencia a este tipo de datos se deben encerrar entre comillas. Ejemplos; "Morelos Ote. # 23 - 7" "Benito Juárez" "16-45-19" "02/05/92" "Carlos Salinas de Gortari"

2. ZONAS DE MEMORIA

Como se había visto, la memoria principal permite almacenar datos. Éstos, ya sean numéricos o alfanuméricos, se alojan en zonas de memoria para utilizarlos posteriormente.

Estas 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, significa que hay una zona de memoria que se llama edad cuyo valor es 15.

Los nombres de estas zonas de memoria se forman respetando las siguientes reglas:

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 acentua

das. 3) Si el tipo de dato que guarda (contenido) es alfanumérico, el nombre deberá llevar al final el

signo $.

Ejemplos:

NOMBRE CONTENIDO salario 4000 nombre$ "William Shakespeare" direccion$ "Cuauhtémoc # 115,'Col. Narvarte" inscripción 500

NOTA: Obsérvese que en las zonas de memoria, nombre$ y direccion$, se incluye el signo $ en el nombre de la zona y el contenido se encierra entre comillas; esto se debe a que el contenido es un dato alfanumérico. También obsérvese que las variables direccion$ e inscripción no llevan acento. Las zonas de memoria se pueden clasificar en:

A) Constantes B) Variables

Page 41: Computación metodología, lógica computa

26 PARTE II. LÓGICA C0MPUTAC10NAL

A) Constantes

Son zonas de memoria que guardan datos, los cuales no cambian durante la fase de procesamiento de información. Por ejemplo, si se desea obtener un reporte para cada uno de los empleados de una empresa, que incluya el nombre del empleado, la fecha y la cantidad de dinero que recibieron en la última semana, el dato fecha es importante para identificar la semana en que se recibió ese dinero y es constante, ya que es el mismo para todos ellos.

B) Variables

Son zonas de memoria cuyo contenido cambia durante la fase de procesamiento de información. Por ejemplo; si se desea obtener el número de trabajadores cuyo sueldo es mayor que 400, se necesitará una variable que lleve a cabo el conteo, cuyo valor inicial será de cero y éste se irá incrementando (variando) conforme vaya encontrando trabajadores que cumplan con la condición dada.

3. EXPRESIONES

a) Definición

Conjunto de operadores y operandos que producen un valor.

b) Elementos de una expresión

Una expresión está compuesta por operadores y operandos. Un operador es un símbolo o palabra que significa que se ha de realizar cierta acción entre uno o

dos valores, llamados operandos. De modo general una expresión se escribe en cualquiera de las formas siguientes:

operando 1 OPERADOR operando2 OPERADOR operando 1

4. TIPOS DE OPERADORES

Existen cuatro tipos de operadores:

A) Asociativos B) Aritméticos C) Relaciónales D) Lógicos

Dependiendo del tipo de operadores que se usen en una expresión, ésta se convertirá en aritmética, lógica o relacional.

Page 42: Computación metodología, lógica computa

CAPÍTULO 3. CONCEPTOS BÁSICOS 27

A) Asociativos

El único operador asociativo es el paréntesis (), el cual permite indicar en qué orden deben realizarse las operaciones.

Cuando una expresión se encuentra entre paréntesis, indica que las operaciones que están dentro de ellos deben realizarse primero. Si en una expresión se utilizan más de un paréntesis se deberá proceder primero con los que se encuentren más hacia el centro de la expresión.

B) 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 contienen operadores aritméticos, se respeta una jerarquía en el orden en el 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:

OPERADOR OPERACIÓN ^ Potenciación *, / Multiplicación, división +, - Suma, resta

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 siguiendo estas mismas reglas.

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.

Por ejemplo, si se tiene la expresión

(4+ 1)* 3 - 5 / 2 + 1

Primero se resuelve el paréntesis, por lo tanto el resultado parcial es:

5 * 3 - 5 / 2 + 1

Después de haber terminado con todos los paréntesis, se procede con lo demás, respetando la jerarquía de operadores, por lo cual, en este caso, se sigue con la multiplicación y división, pues la potenciación no se encuentra en esta expresión. Pero como la multiplicación y la división tienen la misma jerarquía, se realizará primero la multiplicación, que es la que está más a la izquierda; así quedaría:

1 5 - 5 / 2 + 1

Page 43: Computación metodología, lógica computa

28 PARTE II . LÓGICA COMPUTACIONAL

Después se realiza la división:

15-2.5 + 1

A continuación se procede con la resta y queda:

12.5 + 1

Finalmente el resultado es: 13.5

Es muy importante señalar que si las expresiones aritméticas no se resuelven aplicando las reglas anteriores, se obtendrán resultados diferentes, como si cada persona decidiera hacerlo a su gusto; por eso, para asegurarse de expresar lo mismo, es importante respetar las reglas mencionadas.

C) Relaciónales

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 uno alfanumérico no puede llevarse a cabo. Los operadores relaciónales son los siguientes:

OPERADOR OPERACIÓN = Igual que < > o > < Diferente que < Menor que > Mayor que < = Menor o igual que > = Mayor o igual que

D) 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:

OPERADOR OPERACIÓN

NOT Negación AND Conjunción OR Disyunción

Recordemos que la negación cambia el valor verdadero por el falso, y viceversa.

Page 44: Computación metodología, lógica computa

CAPÍTULO 3. CONCEPTOS BÁSICOS 29

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.

Las reglas para resolver las expresiones lógicas son las siguientes:

1) Se resuelven primero los paréntesis. 2) Se encuentran los valores de verdad de las expresiones relaciónales. 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.

Por ejemplo, si se tiene la expresión

NOT (2 > = 3) AND ( 5 > 3 OR 3 < 2)

Primero se resuelven las expresiones relaciónales que estén dentro del paréntesis:

NOT (F) AND (V OR F)

Después se resuelven los paréntesis:

NOT (F) AND (V)

Después se resuelve la operación NOT, que tiene precedencia sobre la operación AND:

V AND V

Y el resultado final es:

V

lo que significa que el valor de verdad de la expresión es verdadero.

A continuación se presentan problemas resueltos y propuestos para los distintos tipos de operado-res.

PROBLEMA RESUELTO DE OPERADORES ARITMÉTICOS

Aplicando la jerarquía de operadores, encontrar el valor de la siguiente expresión.

(4 * 1 / 2) ^ 2 * 3 – 2 ^ 2 + 1

Primero se resuelve el paréntesis, para lo cual es necesario respetar la jerarquía de operadores aritméticos; como la multiplicación y división tienen la misma prioridad, se procede de derecha a izquierda y queda:

Page 45: Computación metodología, lógica computa

30 PARTE II. LÓGICA COMPUTACIONAL

(4 / 2)^2 * 3 - 2^2 + 1

2^ *3 - 2^2 + 1

Después de terminar con todos los paréntesis, se procede, respetando la jerarquía de operadores, que con la potenciación:

4 x 3 - 4 + 1

Después se realiza la multiplicación:

12-4 + 1

A continuación se procede con la resta y queda:

8 + 1 Y

finalmente el resultado es:

9

PROBLEMAS PROPUESTOS DE OPERADORES ARITMÉTICOS

Aplicando la jerarquía de operadores, encontrar el valor de cada una de las siguientes expresiones:

1. 4 + l * 5 ^ 2 - l 2. 9 / 3 + 4 ^ 2 - 5 * l + 9 / - 2 + 3 3. 5 / 2 + 3 - 4 * 5 / 2 4. (4 + 1) * 5^ 2- 1 5. 1 7 / 2 + 3^2^2-2 * 2 / 2

PROBLEMA RESUELTO DE OPERADORES RELACIÓNALES Y LÓGICOS

Aplicando la jerarquía de operadores, encontrar el valor de verdad de la siguiente expresión, suponiendo que el valor de S es 5 y el valor de T es 70.

NOT (S > 3 AND S <= 10) OR (T >= 100 AND T < 200)

Primero se resuelven las expresiones relaciónales que estén dentro de los paréntesis; para esto es necesario primero sustituir el valor de las variables S y T:

NOT (5 > 3 AND 5 <= 10) OR (70 >= 100 AND 70 < 200)

NOT (V AND V ) OR (F AND V)

Page 46: Computación metodología, lógica computa

CAPÍTULO 3. CONCEPTOS BÁSICOS 31

Después se resuelven los paréntesis:

NOT (V) OR (F)

Después se resuelve la operación NOT, que tiene precedencia sobre la operación OR:

F OR F

Y el resultado final es:

F

PROBLEMAS PROPUESTOS DE OPERADORES RELACIÓNALES Y LÓGICOS

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 ))) 2. (3x2^2-4/2 * l)>(3*2^-4/2 * 1 ) AND (5 > 9/3) 3. (3>=3OR5<>5)ANDNOT(15/5+ 2O5) 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 5 > 4 OR 6 >= 7)

Page 47: Computación metodología, lógica computa

3 2 PARTE II. LÓGICA COMPUTACIONAL

RESUMEN

Tipos de datos:

A) Numéricos: son datos cuyo contenido es una serie de dígitos (0-9) que en conjunto nos propor-cionan un valor numérico y que pueden ser precedidos por un signo de + (positivo) o - (negativo). Con ellos se puede realizar operaciones aritméticas o de conteo.

B) Alfanuméricos: son datos cuyo contenido son letras del abecedario, números o caracteres especiales, o bien una combinación de ellos. Estos datos no pueden usarse para realizar operaciones aritméticas.

Zonas de memoria: los datos, ya sean numéricos o alfanuméricos, se alojan en zonas de memoria principal con el objeto de utilizarlos posteriormente. Estas 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. Se pueden clasificar en:

A) Constantes: son zonas de memoria que guardan datos, los cuales no cambian durante toda la fase de procesamiento de información.

B) Variables: son zonas de memoria cuyo contenido cambia durante la fase de procesamiento de información.

Expresiones: son un conjunto de operadores y operandos que producen un valor. Un operador es un símbolo o palabra que significa que se ha de realizar cierta acción entre uno o dos valores que son llamados operandos. Existen cuatro tipos de operadores: asociativos, aritméticos, relaciónales y lógicos.

Page 48: Computación metodología, lógica computa

CAPÍTULO

4

TIPOS DE PROBLEMAS

OBJETIVOS

4.1 El alumno describirá los siguientes tipos de problemas, de acuerdo a su estructura y mencionará sus características. 4.1.1 Secuenciales 4.1.2 Selectivos

a) Simples b) Compuestos

4.1.3. Repetitivos a) Simples

— Con un número determinado de iteraciones — Con un número indeterminado de iteraciones

b) Compuestos 4.2 El alumno aplicará los primeros cuatro pasos de la metodología para la solución de problemas

por medio de la computadora para resolver: 4.2.1 Problemas secuenciales 4.2.2 Problemas selectivos 4.2.3. Problemas repetitivos

33

Page 49: Computación metodología, lógica computa

CAPÍTULO

4

TIPOS DE PROBLEMAS

Los tipos de problemas que podemos encontrar se clasifican según su estructura de la siguiente manera:

1) Secuenciales 2) Selectivos

a) simples b) compuestos

3) Repetitivos a) simples b) compuestos c) múltiples

A continuación definiremos cada uno de estos tipos de problemas y aplicaremos los primeros cuatro pasos de la metodología para la solución de problemas en cada uno de ellos.

1) PROBLEMAS SECUENCIALES

Son problemas en los que, para su solución, se emplea una serie de acciones ejecutadas invariable-mente en un orden secuencial.

Problemas resueltos

PROBLEMA 1

Aplicar los primeros cuatro pasos de la metodología de la solución de problemas por medio de la computadora para encontrar el área de un círculo de radio 5.

Paso 1. Definición del problema:

34

Page 50: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 35

Encontrar el área de un círculo de radio 5. Paso 2. Planeación de la solución: El área de un círculo está dada por la fórmula

área = pi x radio^2

Si, por un lado, sabemos que la constante pi es igual a 3.1416, y por otro, que el radio del círculo es de 5, al sustituir estos valores en la fórmula obtendríamos:

área = 3.1416 x 5^2

Al aplicar esta fórmula obtendremos la solución. Nos podemos percatar de que tenemos todos los datos para poder solucionar nuestro problema, por lo tanto no requeriremos de datos de entrada.

SALIDA: Área del círculo ENTRADA: Ninguna DATOS ADICIONALES: Ninguno SOLUCIÓN: Aplicar la fórmula Área = 3.1416 x 5^2

Paso 3. Algoritmo:

1. area←3.1416 * 5^2 2. DESPLEGAR área

El paso 1 implica: a) Una evaluación aritmética 3.1416 * 5

^2, la cual produce un valor, y b) La asignación de este valor a la variable área. El paso 2 implica que el valor de la variable área sea desplegado por algún dispositivo de salida

de la computadora, por el cual podremos ver la solución.

Paso 4. Diagrama de flujo: El paso 1 del algoritmo es una operación aritmética por lo que le corresponde el bloque de proceso:

y se lee "a la variable área se le asigna el valor del resultado de la operación 3.1416 * 5^2" El paso 2 implica una salida de datos, por lo que le corresponde el bloque de salida:

y se lee "desplegar el valor de la variable área".

El diagrama de flujo completo quedaría como se muestra en la figura 4.1.

Page 51: Computación metodología, lógica computa

Figura 4.1

Y lo probamos de la siguiente manera:

1) Escribir a un lado del diagrama los nombres de las variables utilizadas. En este caso sólo existe la variable área.

2) A la derecha de cada variable se escribe el símbolo de asignación "←". 3) A la derecha del símbolo de asignación se van escribiendo los valores que van tomando las

variables a lo largo de la prueba del diagrama, separados por comas (,).

Entonces, la prueba quedaría como en la figura 4.2. Como el único valor que toma la variable área está dado por la operación 3.1416 * 5^2, y esto es

igual a 78.54; lo anotamos a la derecha de la variable y del símbolo de asignación, por lo que podemos decir que el diagrama de flujo está asignando el valor 78.54 a la variable área.

A continuación, en el siguiente bloque este único valor que tomó la variable área es desplegado como la solución del problema que da el diagrama de flujo.

El último bloque indica el fin del diagrama de flujo.

NOTA: LOS pasos siguientes de la metodología (5 a 7) podrán ser concluidos en el capítulo siguiente.

PROBLEMA 2

Modificar el problema anterior para que sea capaz de calcular el área de un círculo de cualquier radio requerido.

Paso 1. Definición del problema: Encontrar el área de un círculo con un radio cualquiera.

36 PARTE II. LÓGICA COMPUTACIONAL

Page 52: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 37

área ←78.54

Figura 4.2 Paso 2. Planeación de la solución: Se resuelve con la misma fórmula del problema anterior:

Área = pi x radio^2

Sólo que en esta ocasión desconocemos el valor del radio, por lo que tendremos que pedirlo como dato de entrada en el problema.

SALIDA: área ENTRADA: radio DATOS ADICIONALES: Ninguno SOLUCIÓN: Aplicar la fórmula Área = pi x radio^2

NOTA: Si bien el término "cualquier radio" nos lleva a pensar en que podemos definir, en nuestro diagrama de flujo, el radio que queramos y sobre éste, calcular la fórmula, tenemos que pensar en "cualquier radio" como un término genérico, no particular. Así, nuestro diagrama de flujo puede ser utilizado cuantas veces se quiera utilizando cada vez un "radio cualquiera", con valores distintos dados como datos de entrada.

Paso 3. Algoritmo:

1. PEDIR radio 2. área ←3.1416 * radio^2

Page 53: Computación metodología, lógica computa

38 PARTE II. LÓGICA COMPUTACIONAL

3. DESPLEGAR área

Nótese que si elimináramos el paso 1, al tratar de aplicar la fórmula nos percataríamos de que nos falta que radio tenga algún valor, por lo que estaría mal hecho el algoritmo. Así pues, en el paso 1 la computadora pedirá, una vez elaborado el programa, un valor para la variable radio, que será introducido por algún dispositivo de entrada, y con esto en la fórmula siguiente no habrá problemas para calcular el área.

NOTA: En una fórmula no se pueden ocupar variables a las que no se les haya asignado previamente un valor.

Paso 4, Diagrama de flujo (Fig. 4.3).

Prueba 1 radio ←5 área ←78.54

Prueba 2 radio ← 8

Page 54: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 39

área←201.0624

PROBLEMA 3

Determinar el área y perímetro de un rectángulo cualquiera.

Paso 1. Definición del problema: Encontrar el área y perímetro de un rectángulo cualquiera. Paso 2. Planeación de la solución:

La fórmula para encontrar el perímetro de un rectángulo es:

perímetro = lado1 x 2 + lado2 x 2,

y la fórmula para calcular el área es:

área = lado1x Iado2;

de lo cual nos damos cuenta que nos hacen falta los datos lado1y Iado2, que tendremos que pedir como entrada.

SALIDAS: perímetro, área ENTRADAS: lado1, lado2 DATOS ADICIONALES: Ninguno SOLUCIÓN: Aplicar las fórmulas:

perímetro = lado1 x 2 + lado2 x 2

área = lado1x lado2

Paso 3. Algoritmo:

1. PEDIR lado1 2. PEDIR lado2 3. perímetro ← lado1 * 2 + lado2 * 2 4. área ←lado1 * lado2 5. DESPLEGAR perímetro 6. DESPLEGAR área

Como los pasos 1 y 2 implican la misma acción y están secuenciales, pueden reducirse a un solo paso. Lo mismo ocurre con los pasos 5 y 6.

1. PEDIR lado1, lado2 2. perímetro ←lado1* 2 +lado2 * 2 3. área ← lado1*lado2 4. DESPLEGAR perímetro, área

Page 55: Computación metodología, lógica computa

Figura 4.4

Paso 4. Diagrama de flujo (Fig. 4.4).

Ejercicio: Realizar al menos dos pruebas a este diagrama de flujo (Fig. 4.4) para verificar su funcionalidad.

PROBLEMA 4

Obtener el promedio de edades de 3 personas.

Paso 1. Definición del problema: Obtener el promedio de edades de 3 personas. Paso 2. Planeación de la solución: Para obtener un promedio se requiere sumar las cantidades implicadas y dividir la suma entre el número de estas cantidades.

En este caso, por ser tres cantidades, la fórmula es la siguiente:

I '

40 PARTE II. LÓGICA COMPUTACIONAL

Page 56: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 41

promedio = (edad1 + edad2 + edad3) / 3

Nótese que la suma se encuentra agrupada con un paréntesis para indicar que ésta se debe hacer primero que la división. Si el paréntesis no existiera únicamente dividiría a edad3 y este resultado lo sumaría a las otras dos edades.

En esta fórmula son desconocidas edad1, edad2 y edad3, por lo cual deberán ser pedidas como datos de entrada.

SALIDAS: promedio ENTRADAS: edad1, edad2, edad3 DATOS ADICIONALES: Ninguno SOLUCIÓN: Aplicar la fórmula:

promedio = (edad1 + edad2 + edad3) / 3

Paso 3. Algoritmo:

1. PEDIR edad1, edad2, edad3 2. promedio ← (edad1 + edad2 + edad3 ) / 3 3. DESPLEGAR promedio

Paso 4. Diagrama de flujo (Fig. 4.5).

Figura 4.5

Page 57: Computación metodología, lógica computa

4 2 PARTE II. LÓGICA COMPUTACIONAL

Ejercicio: Realizar al menos dos pruebas a este diagrama de flujo (Fig. 4.5) para verificar su funcionalidad.

PROBLEMA 5

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.

Paso 1. Definición del problema: Obtener cuánto dinero ganará un individuo después de un mes si el banco paga a razón de 2% mensual. Paso 2. Planeación de la solución: Para obtener la cantidad de dinero que el individuo ganará es necesario obtener el 2% de la cantidad invertida.

Un 2% significa 2/100 lo cual es equivalente a 0.02; por lo tanto, para obtener la ganancia sólo hay que multiplicar la cantidad invertida por 0.02.

Debido a que la cantidad invertida es un dato desconocido, éste se debe pedir como entrada.

SALIDAS: ganancia ENTRADA: cantidad invertida DATOS ADICIONALES: 2% de interés mensual SOLUCIÓN: Aplicar la siguiente fórmula:

ganancia = cantidad invertida x 0.02

Paso 3. Algoritmo:

Para simplificar, en este problema llamaremos:

g al dato ganancia ci al dato cantidad invertida

1. PEDIR ci 2. g← ci * 0.02 3. DESPLEGAR g

Paso 4. Diagrama de flujo (Fig. 4.6):

Ejercicio: Realizar al menos dos pruebas a este diagrama de flujo (Fig. 4.6) para verificar su funcionalidad.

PROBLEMA 6

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.

Page 58: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 43

Figura 4.6

Paso1. Definición del problema: Obtener la cantidad de dinero que obtendrá un vendedor por concepto de comisiones por tres ventas realizadas en el mes, y el total de dinero que recibirá en el mes por sueldo y comisiones. Se sabe que el vendedor recibe un sueldo base y un 10% extra por comisiones de sus ventas. Paso 2. Planeación de la solución: Para obtener la cantidad de dinero por concepto de comisiones es necesario saber la cantidad de cada una de las tres ventas, para poder sumarlas y obtener el total de sus ventas en ese mes. Posteriormente sobre el total de ventas podremos aplicar el 10% para obtener las comisiones correspondientes.

Para obtener la cantidad total de dinero que recibirá es necesario sumar las comisiones obtenidas al sueldo base.

Debido a que los datos de las tres ventas y el sueldo base son desconocidos, éstos serán las entradas.

SALIDAS: cantidad a recibir por comisiones, cantidad total a recibir. ENTRADAS: cantidad de venial, cantidad de venta2, cantidad de venta3, sueldo base. DATOS ADICIONALES: la comisión es 10% sobre las ventas del mes. SOLUCIÓN: Aplicar las siguientes fórmulas:

total de ventas = venta1 + venta2 + venta3

comisión = total de ventas x 0.10 total

a recibir = sueldo base + comisión

Page 59: Computación metodología, lógica computa

44 PARTE II. LÓGICA COMPUTACIONAL

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

tv a total de ventas c a comisión tr a total a recibir sb a sueldo base v1 a venta 1 v2 a venta 2 v3 a venta 3

1. PEDIR v1, v2, v2 2. tv ←v1 + v2 + v3 3. c←tv *0.10 4. tr ←sb + c 5. DESPLEGAR c, tr

Paso 4. Diagrama de flujo (Fig. 4.7).

Ejercicio: Realizar al menos dos pruebas a este diagrama de flujo (Fig. 4.7) para verificar su funcionalidad.

PROBLEMA 7

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.

Paso 1. Definición del problema: Obtener la cantidad de dinero que tendrá que pagar un cliente, si la tienda ofrece un 15% de descuento sobre el total de la compra. Paso 2. Planeación de la solución: Para obtener el descuento es necesario conocer la cantidad total de la compra, y sobre ésta aplicar el 15%. Posteriormente este descuento deberá ser sustraído de la cantidad total de compra para así obtener la cantidad con descuento, que es la que el cliente pagará. El único dato desconocido es la cantidad total de la compra.

SALIDAS: cantidad a pagar ENTRADAS: total de la compra DATOS ADICIONALES: El descuento equivale al 15% del total de la compra SOLUCIÓN: Aplicar las siguientes fórmulas:

descuento = total de la compra x 0.15

total a pagar = total de la compra - descuento

Page 60: Computación metodología, lógica computa

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

tc a total de la compra d a descuento tp a total a pagar

1. PEDIR tc 2. d←tc * 0.15 3. t p← t c -d 4. DESPLEGAR tp

Paso 4. Diagrama de flujo (Fig. 4.8).

Figura 4.7

CAPÍTULO 4. TIPOS DE PROBLEMAS 45

Page 61: Computación metodología, lógica computa

Figura 4.8

Este problema también se podría solucionar de la siguiente manera:

Paso 2. Planeación de la solución: Dado que el descuento es del 15% sobre el total de la compra podemos visualizar al 85% restante como la cantidad total a pagar.

SALIDAS: cantidad a pagar ENTRADAS: total de la compra DATOS ADICIONALES: El descuento equivale al 15% del total de la compra. SOLUCIÓN: Aplicar la siguiente fórmula:

total a pagar = total de la compra x 0.85

Paso 3. Algoritmo: De ahora en adelante llamaremos:

tc a total de la compra tp a total a pagar

46 PARTE I I . LÓGICA COMPUTACIONAL

Page 62: Computación metodología, lógica computa

Figura 4.9

1. PEDIR tc 2. tp ← tc * 0.85 3. DESPLEGAR tp

Paso 4. Diagrama de flujo (Fig. 4.9):

Ejercicio: Realizar al menos dos pruebas a este diagrama de flujo (Fig. 4.9) para verificar su funcionalidad.

PROBLEMA 8

Un alumno desea saber cuál será su calificación final en 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 15% de la calificación de un trabajo final

Paso 1. Definición del problema: Obtener la calificación final en una materia si ésta se compone de los siguientes porcentajes: 55% del promedio de sus tres calificaciones parciales 30% de la calificación del examen final

CAPÍTULO 4. TIPOS DE PROBLEMAS 47

Page 63: Computación metodología, lógica computa

48 PARTE II. LÓGICA COMPUTACIONAL

15% de la calificación de un trabajo final Paso 2. Planeación de la solución: Para obtener el porcentaje correspondiente a sus calificaciones parciales, es necesario conocer las calificaciones obtenidas, promediarlas y posteriormente aplicar el 55%.

Para obtener el porcentaje correspondiente al examen final es necesario aplicar el 30% sobre la calificación obtenida en el examen final, y para obtener el porcentaje correspondiente al trabajo final será necesario aplicar el 15% sobre la calificación obtenida en éste.

Finalmente para obtener la calificación final del curso será necesario sumar las cantidades obtenidas con los porcentajes.

Los datos que se desconocen son: calificación parcial1, calificación parcial2, calificación parcial3, calificación del examen final y calificación del trabajo final.

SALIDAS: calificación final del curso ENTRADAS: calificación parcial1, calificación parcial2, calificación parcial3, calificación de examen final, calificación del trabajo final DATOS ADICIONALES:

El promedio de calificaciones parciales equivale al 55% de la calificación final. El examen final equivale al 30% de la calificación final. El trabajo final equivale al 15% de la calificación final.

SOLUCIÓN: Aplicar las fórmulas:

promedio de parciales = (parcial1 + parcial2 + parcial3) / 3

porcentaje de parciales = promedio de parciales x 0.55

porcentaje de examen final = examen final x 0.30

porcentaje de trabajo final = trabajo final x 0.15

calificación final = porcentaje de parciales + porcentaje de examen final + porcentaje de trabajo final

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

p1 a calificación del parcial 1p2 a calificación del parcial2 p3 a calificación del parcial3 p a promedio de parcialesppa a porcentaje de parcialesef a calificación del examen pef a porcentaje de examen tf a calificación del trabajo ptf a porcentaje del trabajo cf a calificación final del curso

Page 64: Computación metodología, lógica computa

CAPITULO 4. TIPOS DE PROBLEMAS 49

1. PEDIR p1,p2,p3,ef,tf 2. p ← (pl + p2 + p3) / 3 3. ppar ← p * 0.55 4. pef ←ef * 0.30 5. ptf←tf*0.15 6. cf ←ppar + pef + ptf 7. DESPLEGAR cf

NOTA: Obsérvese que el paso 2 de este algoritmo requiere del proceso aplicado en el problema 4.

Paso 4. Diagrama de flujo (Fig. 4.10):

Ejercicio: Realizar al menos dos pruebas a este diagrama de flujo (Fig. 4.10) para verificar su funcionalidad.

PROBLEMA 9

Un maestro desea saber qué porcentaje de hombres y qué porcentaje de mujeres hay en un grupo de estudiantes.

Paso 1. Definición del problema: Obtener el porcentaje de hombres y de mujeres que hay en un grupo de estudiantes. Paso 2. Planeación de la solución: En primer lugar es necesario obtener el número de estudiantes que hay en el grupo, lo cual representará el 100%. Para obtener el número de estudiantes del grupo es necesario saber cuántos hombres y cuántas mujeres hay en el grupo.

Debido a que el número total de alumnos del grupo representa el 100% podemos establecer una regla de 3 que nos llevaría a obtener el porcentaje de hombres que hay en el grupo. La regla de 3 quedaría de la siguiente manera:

100% — total de alumnos del grupo x — número de hombres que hay en el grupo

Por lo tanto para obtener el porcentaje de hombres que hay en el grupo la fórmula a aplicar sería la siguiente:

porcentaje de hombres = (número de hombres que hay en el grupo x 100) / total de alumnos del grupo

De la misma manera se procede para obtener el porcentaje de mujeres, y la fórmula quedaría así:

porcentaje de mujeres = (número de mujeres que hay en el grupo x 100) / total de alumnos del grupo

Page 65: Computación metodología, lógica computa

Figura 4.10

SALIDAS: porcentaje de hombres, porcentaje de mujeres ENTRADAS: número de hombres, número de mujeres DATOS ADICIONALES: Ninguno SOLUCIÓN: Aplicar las fórmulas:

50 PARTE II. LÓGICA COMPUTAC1ONAL

Page 66: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 51

porcentaje de hombres = (número de hombres que hay en el grupo x 100) / total de alumnos del grupo

porcentaje de mujeres = (número de mujeres que hay en el grupo x100) / total de alumnos del grupo

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

n h a número de hombres que hay en el grupo nm a número de mujeres que hay en el grupo ph a porcentaje de hombres pm a porcentaje de mujeres ta a total de alumnos

1. PEDIR nh, nm 2. ta ← nh + nm 3. ph ←nh * 100 / ta 4. pm ← nm * 100 / ta 5. DESPLEGAR ph, pm

NOTA: Obsérvese que en este problema no es necesario el uso de paréntesis para indicar el orden de las operaciones, debido a la jerarquía de operadores aritméticos.

Paso 4. Diagrama de flujo (Fig. 4.11):

Ejercicio: Realizar al menos dos pruebas a este diagrama de flujo (Fig. 4.11) para verificar su funcionalidad.

Ejercicio: Buscar otra opción de solución a este problema y aplicar los primeros cuatro pasos de la metodología de la solución de problemas.

Problemas propuestos

Usando los primeros cuatro pasos de la metodología de la solución de problemas por medio de la computadora, resuelva los siguientes problemas:

1. Dada una cantidad en pesos, obtener la equivalencia en dólares, asumiendo que la unidad cambiaría es un dato desconocido.

2. La presión, el volumen y la temperatura de una masa de aire se relacionan por la fórmula:

masa = (presión x volumen) / (0.37 x (temperatura + 460))

Page 67: Computación metodología, lógica computa

Figura 4.11

Obtener la masa de aire de un neumático de automóvil que tiene un volumen de 2 pies cúbicos y una presión y temperatura indeterminadas.

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

4. Calcular el nuevo salario de un obrero si obtuvo un incremento del 25% sobre su salario anterior.

5. En un hospital existen tres áreas: Ginecobstetricia, Pediatría y Traumatología. El presupuesto anual del hospital se reparte conforme a la siguiente tabla:

52 PARTE I I . LÓGICA COMPUTAC1ONAL

Page 68: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 53

Área Porcentaje del presupuesto

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

Obtener la cantidad de dinero que recibirá cada área, para cualquier monto presupuestal. 6. El dueño de una tienda compra un artículo a un precio determinado. Obtener el precio en que

lo debe vender para obtener una ganancia del 30%. 7. Todos los lunes, miércoles y viernes, una persona corre la misma ruta y cronometra los tiempos

obtenidos. Determinar el tiempo promedio que la persona tarda en recorrer la ruta en una semana cualquiera.

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

9. Un alumno desea saber cuál será su promedio general en las tres materias más difíciles que cursa, y cuál será el promedio que obtendrá en cada una de ellas. Estas materias se evalúan como se muestra a continuación:

La calificación de Matemáticas se obtiene de la siguiente manera: Examen 90% Promedio de tareas 10%. En esta materia se pidió un total de tres tareas.

La calificación de Física se obtiene de la siguiente manera: Examen 80% Promedio de tareas 20% En esta materia se pidió un total de dos tareas.

La calificación de Química se obtiene de la siguiente manera: Examen 85% Promedio de tareas 15% En esta materia se pidió un total de tres tareas.

2) PROBLEMAS SELECTIVOS

Las soluciones de este tipo de problemas son una serie de acciones en las que la ejecución de alguna dependerá de que se cumplan una o varias condiciones.

Se identifican porque en la fase de solución del problema existe algún punto en el cual es necesario establecer una pregunta, para decidir si ciertas acciones deben realizarse o no.

Para solucionar este tipo de problemas será necesario evaluar una o más condiciones. Por eso, los problemas selectivos se clasifican en:

a) Simples b) Compuestos

Page 69: Computación metodología, lógica computa

54 PARTE II. LÓGICA COMPUTACIONAL

2a) Problemas selectivos simples

Se identifican porque están compuestos únicamente de una condición.

Problemas resueltos:

PROBLEMA 1

Determinar si un alumno aprueba o reprueba un curso, sabiendo que aprobará si su promedio de tres calificaciones es mayor o igual a 7; reprueba en caso contrario.

Paso 1. Definición del problema: Igual a la redacción del problema. Paso 2. Planeación de la solución: Lo primero que debe obtenerse es el promedio del alumno; se calcula con base en la siguiente fórmula:

promedio = (calificación1 + calificación2 + calificación3) / 3

Puesto que los datos calificación1, calificación2 y calificación3 son desconocidos, éstos repre-sentarán las entradas del problema.

El problema plantea dos opciones: que el alumno apruebe o que el alumno repruebe, lo cual se determina con base en el promedio obtenido. En este caso la salida será un mensaje que indique si el alumno está aprobado o reprobado.

Por ello tendremos que usar el bloque condicional que, como se había mencionado, son preguntas que pueden alterar la secuencia de ejecución de las instrucciones dependiendo de que la condición planteada por la pregunta se cumpla o no.

En este caso usaremos un bloque condicional pues si el promedio SI es mayor o igual a 7, sucederá una serie de acciones; y en caso de que el promedio NO sea mayor o igual que 7 sucederá otra serie de acciones. Para plantear esta condición utilizaremos el formato condicional ya visto:

SI condición ENTONCES conjunto de acciones DE

OTRA FORMA conjunto de acciones

El cual para este ejemplo quedaría:

SI promedio > = 7 ENTONCES DESPLEGAR "el alumno está aprobado"

DE OTRA FORMA DESPLEGAR "el alumno está reprobado"

SALIDAS: "el alumno está reprobado" o "el alumno está aprobado" ENTRADAS: calificación1, calificación2, calificación3

Page 70: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 55

DATOS ADICIONALES: Un alumno aprueba si su promedio es mayor o igual que 7; y en caso contrario reprueba.

SOLUCIÓN: Aplicar la fórmula:

promedio = (calificación1 + calificación2 + calificación3) / 3

Aplicar la condicional: SI promedio > = 7 ENTONCES

DESPLEGAR "el alumno está aprobado" DE OTRA FORMA

DESPLEGAR "el alumno está reprobado"

Paso 3. Algoritmo:

De. ahora en adelante llamaremos:

c1 a calificación 1 c2 a calificación2 c3 a calificación3 p a promedio

1. PEDIR c1,c2,c3 2. p ← (c1 + c2 + c3) / 3 3. SI p > = 7 ENTONCES

DESPLEGAR "el alumno está aprobado" DE OTRA FORMA

DESPLEGAR "el alumno está reprobado"

Paso 4. Diagrama de flujo: Como se había visto, el símbolo que representa la condicional es:

Dentro de la figura, se anota la pregunta. A la derecha se indica la acción o acciones que deben

hacerse en el caso de que la respuesta a la pregunta sea afirmativa, mientras que por el lado izquierdo las acciones que deben hacerse en caso de respuesta negativa.

Por lo tanto el diagrama de flujo quedaría como se indica en la figura 4.12. En el diagrama se puede observar claramente cómo el orden en el que se ejecutan las instrucciones

es secuencial, hasta antes de llegar a la condicional, pero en la condicional el orden varía dependiendo de si la condición es verdadera o falsa, es decir, si el promedio SI es mayor o igual a 7 o el promedio NO es mayor o igual a 7.

Note que el final de las partes verdadera y falsa de la condición convergen en un pequeño círculo que nos indica el término del bloque condicional.

Page 71: Computación metodología, lógica computa

Prueba 1 c1 ←8 c2 ←9 c3 ←9 p ← 8.66 salida: " el alumno está aprobado"

Prueba 2 c1 ←7 c2 ←6 c3 ←6 p ←6.33 salida: " el alumno está reprobado"

Figura 4.12

56 PARTE II. LÓGICA COMPUTACIONAL

Page 72: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 57

Obsérvese que en la prueba 1, la secuencia que el diagrama sigue es por el lado derecho del bloque condicional, lo que indica que la condición sí se cumplió, pues el promedio obtenido sí es mayor o igual que 7. En la prueba 2 la secuencia seguida es por el lado izquierdo del bloque condicional pues el promedio obtenido no es mayor o igual que 7.

Al realizar estas pruebas se puede observar que el diagrama de flujo sí resuelve todas las opciones que puedan presentarse, pues se han realizado pruebas para cada una de las posibilidades.

PROBLEMA 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? Paso 1. Definición del problema: Igual a la redacción del problema. Paso 2. Planeación de la solución:

Para determinar si el cliente alcanza descuento o no, necesitamos saber cuánto gastó en total. Como el dato no es proporcionado en la definición del problema se convertirá en dato de entrada.

SALIDAS: Total a pagar ENTRADAS: Total de la compra DATOS ADICIONALES: Se otorgará un 20% de descuento si la compra supera los $1000. SOLUCIÓN:

Aplicar la condicional: SI Total de la compra > 1000 ENTONCES

descuento = 0.2 DE OTRA FORMA

descuento = 0.0

Aplicar la fórmula:

pago = compra - compra x descuento

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

compra a TOTAL DE LA COMPRA desc a DESCUENTO pago a TOTAL A PAGAR

1. PEDIR compra 2. SI compra > 1000 ENTONCES

desc ← 0.2 DE OTRA FORMA desc ← 0.0

3. pago ← compra - compra*desc 4. DESPLEGAR pago

Page 73: Computación metodología, lógica computa

Paso 4. Diagrama de flujo (Fig. 4.13). Observe que el bloque condicional:

lleva a cabo la acción desc ← 0.2 si la condición se cumple, esto es, si el valor de compra excede a 1000. La acción desc ← 0.0 se lleva a cabo, si esta misma condición no se cumple, esto es, si el valor de compra es menor o igual a 1000.

58 PARTE II. LÓGICA COMPUTACIONAL

Page 74: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 59

Al final, se haya ejecutado un proceso o el otro, las acciones del condicional convergen en un pequeño círculo que le da fin y continúa con el siguiente bloque de proceso.

Prueba 1 Compra ← 2500 desc ← 0.2 Pago ← 2000

Prueba 2 Compra ← 700 desc ← 0 Pago ← 700

Prueba 3 Compra ← 1000 desc ← 0 Pago ← 1000

Obsérvese que en la prueba 1 la secuencia que el diagrama sigue es por el lado derecho del bloque condicional, lo que indica que la condición sí se cumplió pues el monto de la compra es mayor que 1000. En la prueba 2 la secuencia seguida es por el lado izquierdo del bloque condicional pues el monto de la compra no es mayor que 1000. En la prueba 3 la secuencia también es por el lado izquierdo ya que el monto de la compra tampoco es mayor que 1000.

Al realizar estas pruebas se puede observar que el diagrama de flujo sí resuelve todas las opciones que puedan presentarse, ya que se han realizado pruebas para cada una de las posibilidades.

Otra manera de resolver este problema se muestra en la figura 4.14.

Ejercicio: Realizar al menos dos pruebas a este diagrama de flujo (Fig. 4.14) para verificar su funcionalidad.

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

Paso 1. Definición del problema: Igual a la redacción del problema. Paso 2. Planeación de la solución: Para poder determinar el salario del obrero es importante determinar si trabajó horas extras o no, lo cual se determina de la siguiente manera: si las horas trabajadas exceden de 40 significa que SÍ trabajó horas extras y en caso de que las horas trabajadas sean menores o iguales que 40 significa que NO trabajó horas extras.

Page 75: Computación metodología, lógica computa

Figura 4.14

Como se habrá observado, este problema plantea dos posibilidades: que el obrero SÍ haya trabajado horas extras y que el obrero NO haya trabajado horas extras. Es importante establecerlo porque la serie de acciones que se efectúan en uno o en otro caso son distintas.

El uso de una condicional nos ayuda a plantear estas dos posibilidades. En caso de que el obrero SÍ haya trabajado horas extras, las acciones que tendrían que realizarse serían:

— Calcular horas extras trabajadas aplicando la fórmula:

horas extras = horas trabajadas - 40

Lo cual significa que las horas extras serán todas las que excedan de 40.

— Calcular salario de la siguiente manera:

salario = (horas extras x 6) + (40 x 4)

60 PARTE II. LÓGICA COMPUTAC1ONAL

Page 76: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 61

Lo cual significa que lo que se paga por las horas extras que haya trabajado es de $6 y las primeras 40 horas se le pagan a $4.

En caso de que el obrero NO haya trabajado horas extras las acciones que se llevarían a cabo son: —Calcular salario aplicando la siguiente fórmula:

salario = horas trabajadas x 4

El único dato que se desconoce y que no puede ser calculado a partir de otros es el de horas trabajadas, por lo cual constituirá la única entrada del problema.

SALIDAS: salario ENTRADAS: horas trabajadas DATOS ADICIONALES: la hora extra se paga a $6 y la hora normal se paga a $4. SOLUCIÓN: Aplicar la condicional:

SI horas trabajadas > 40 ENTONCES horas extras = horas trabajadas - 40

salario = (horas extras x 6) + (40 x 4) DE OTRA MANERA

salario = horas trabajadas x 4

O bien aplicar la condicional:

SI horas trabajadas < = 40 ENTONCES salario = horas trabajadas x 4

DE OTRA MANERA horas extras = horas trabajadas - 40 salario = (horas extras x 6) + (40 x 4)

Ahora se aplicarán los pasos 3 y 4 utilizando la primera condicional; que será ejercicio para el lector resolverlo aplicando la segunda condicional.

Paso 3. Algoritmo:

De ahora en adelante llamaremos: ht a horas trabajadas he a horas extras s a salario

1. PEDIR ht 2. SI ht > 40 ENTONCES he ← ht - 40

s ← h e * 6 + 4 0 * 4 DE OTRA MANERA

Page 77: Computación metodología, lógica computa

Figura 4.15

s ← ht * 4 3. DESPLEGAR s

Paso 4. Diagrama de flujo (Fig. 4.15).

Ejercicio: Realizar al menos dos pruebas a este diagrama de flujo (Fig. 4.15) para verificar su funcionalidad.

PROBLEMA 4

Un hombre desea saber cuánto dinero se generará por concepto de intereses sobre la cantidad que

62 PARTE 11. LÓGICA COMPUTACIONAL

Page 78: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 63

tiene en inversión en el banco. Él decidirá reinvertir los intereses siempre y cuando estos excedan a $7000, y en ese caso desea saber cuánto dinero tendrá finalmente en su cuenta.

Paso 1. Definición del problema: Igual a la redacción del problema Paso 2. Planeación de la solución: Lo primero que debe obtenerse son los intereses que se generaron a partir de la cantidad que el hombre tiene en inversión; para esto se aplicaría la siguiente fórmula:

intereses = cantidad en inversión x porcentaje de interés

El problema plantea dos posibilidades: que el hombre reinvierta los intereses o que no los reinvierta; lo que lo llevaría a tomar esta decisión es que los intereses excedan o no de $7000.

Si los intereses excedieran a $7000 la acción que sucedería es:

cantidad final en la cuenta = cantidad en inversión + intereses

Si los intereses no excedieran a $7000, no sucedería ninguna acción pues éstos no se reinvertirían. Se puede observar que los datos que se desconocen son: cantidad en inversión y porcentaje de

interés que está dando el banco, por lo cual éstas serían las entradas del problema.

SALIDAS: cantidad final en la cuenta, intereses ENTRADAS: cantidad en inversión, porcentaje de interés DATOS ADICIONALES: Los intereses se reinvertirán en caso de que excedan a $7000 y no se reinvertirán en caso contrario. SOLUCIÓN:

— Aplicar la fórmula: intereses = cantidad en inversión x porcentaje de interés

—Aplicar la condicional: SI intereses > 7000 entonces

cantidad final en la cuenta = cantidad en inversión + intereses

Nótese que la condicional carece del texto "DE OTRA FORMA", pues no hay acciones que efectuar si no se cumple la condición.

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

p a porcentaje de interés ci a cantidad en inversión i a intereses cf a cantidad final en la cuenta

1. PEDIR p,ci

2. i ← ci * p

Page 79: Computación metodología, lógica computa

64 PARTE II. LÓGICA COMPUTACIONAL

3. DESPLEGAR i 4. SI i > 7000 ENTONCES

cf ← ci + i DESPLEGAR cf

Paso 4. Diagrama de flujo (Fig. 4.16).

Figura 4.16

Page 80: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 65

Ejercicio: Realizar al menos dos pruebas a este diagrama de flujo (Fig. 4.16) para verificar su funcionalidad.

PROBLEMA 5

Una persona enferma, que pesa 70 kg, 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.

Paso1. Definición del problema: Igual a la redacción del problema. Paso 2. Planeación de la solución: Lo primero que es importante saber es cuánto tiempo permaneció realizando la misma actividad, lo que constituirá una entrada para el problema.

También será importante saber qué actividad es la que estuvo realizando, pues esto determinará cuál factor utilizar para hacer el cálculo, y así obtener el dato buscado; las calorías gastadas al realizar la misma actividad.

El problema presenta dos opciones: que la actividad que haya realizado la persona haya sido estar dormido o que haya sido no estar dormido, es decir, estar sentado en reposo.

Si el tipo de actividad que estuvo realizando fue dormir, la acción que se haría para calcular las calorías gastadas es:

calorías gastadas = 1.08 x tiempo que duró la actividad

Si el tipo de actividad que realizó fue no estar dormido, o sea estar sentado en reposo, la acción que se llevaría a cabo es:

calorías gastadas = 1.66 x tiempo que duró la actividad

Los datos que se desconocen son tiempo que duró la actividad y tipo de actividad, por lo que éstos serán las entradas del problema.

SALIDAS: Calorías gastadas ENTRADAS: tipo de actividad, tiempo de actividad DATOS ADICIONALES: Las calorías gastadas por minuto al estar dormido son de 1.08 por minuto y las que se gastan por estar sentado en reposo son de 1.66 por minuto. SOLUCIÓN: Aplicar la condicional:

SI tipo de actividad = "dormido" ENTONCES calorías gastadas ←1.08 x tiempo que duró la actividad

DE OTRA FORMA calorías gastadas ← 1.66 x tiempo que duró la actividad

Page 81: Computación metodología, lógica computa

66 PARTE II. LÓGICA COMPUTACIONAL

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

cg a calorías gastadas a$ a tipo de actividad t a tiempo que duró la actividad

1. PEDIR a$,t 2. SI a$ = "dormido" ENTONCES

cg ← 1.08 * t DE OTRA FORMA

cg ← 1.66 * t 3. DESPLEGAR cg

NOTA: ES importante notar que a la variable que representa el dato tipo de actividad se le agregó el signo $, así como a la palabra dormido se le encerró entre comillas pues el dato es de tipo alfanumérico.

Paso 4. Diagrama de flujo (Fig. 4.17)

Ejercicio: Realizar al menos dos pruebas a este diagrama de flujo (Fig. 4.17) para verificar su funcionalidad.

PROBLEMA 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 al banco 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á capacidad de invertir de su propio dinero un 70% y el restante 30% lo pagará solicitando crédito al fabricante.

El fabricante cobra por concepto de intereses un 20% sobre la cantidad que se le pague a crédito.

Paso 1. Definición del problema: Igual a la redacción del problema.

La empresa necesita determinar: cuánto dinero deberá invertir, de sus propios fondos; si hay necesidad, cuánto tendrá que pedir prestado al banco, cuánto tendrá que pagar a crédito y cuánto pagará por concepto de los intereses que se generen en el crédito.

Paso 2. Planeación de la solución: Lo primero que deberá determinarse es el monto total que se debe pagar por todas las piezas que se compren; esto puede determinarse aplicando la siguiente fórmula:

Page 82: Computación metodología, lógica computa

Figura 4.17

monto total = núm. de piezas x costo de cada pieza

El problema plantea dos opciones, las cuales dependen de si el monto total excede o no a $500 000. Si el monto total SÍ excede a $500 000 las acciones que se realizarían son las siguientes: — Calcular la cantidad que la empresa invertiría de sus propios fondos, lo cual se puede obtener aplicando la siguiente fórmula:

cantidad a invertir = monto total x 0.55

—Calcular la cantidad a pagar a crédito mediante la siguiente fórmula:

cantidad a pagar a crédito = monto total x 0.15

CAPÍTULO 4. TIPOS DE PROBLEMAS 67

Page 83: Computación metodología, lógica computa

68 PARTE II. LÓGICA C0MPUTAC10NAL

— Calcular la cantidad que se tendrá que pedir prestada al banco mediante la siguiente fórmula:

cantidad a pedir al banco = monto total x 0.3

Si el monto total NO excede a $500 000, las acciones que se efectuarían son las siguientes:

—Calcular la cantidad que la empresa invertiría de sus propios fondos, lo cual se puede obtener aplicando la siguiente fórmula:

cantidad a invertir = monto total x 0.7

— Calcular la cantidad a pagar a crédito mediante la siguiente fórmula:

cantidad a pagar a crédito = monto total x 0.30 Sea

cual sea el monto total, el interés se calcula de la siguiente manera:

interés = cantidad a pagar a crédito x 0.2

Los datos que se desconocen son núm. de piezas y costo de cada pieza; ésas son las entradas del problema.

SALIDAS: cantidad a invertir, cantidad a pagar a crédito, cantidad a pedir al banco, intereses ENTRADAS: núm. de piezas, costo por pieza DATOS ADICIONALES: Si el monto total excede a $500 000 los porcentajes se distribuyen de la siguiente manera: — 55% del monto total es la cantidad a invertir de los fondos de la empresa — 30% del monto total es la cantidad a pedir al banco —15% del monto total es la cantidad a pagar a crédito

Si el monto total no excede a $500 000 los porcentajes se distribuyen de la siguiente manera: — 70% del monto total es la cantidad a invertir de los fondos de la empresa — 30% del monto total es la cantidad a pagar a crédito.

El interés que se paga por concepto de pagar a crédito es el 20% del monto total.

SOLUCIÓN:

— Aplicar la fórmula:

monto total = núm. de piezas x costo de cada pieza

— Aplicar la condicional:

SI monto total > $500 000 ENTONCES cantidad a invertir ← monto total x 0.55 cantidad a pagar a crédito ← monto total x 0.15

Page 84: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 69

cantidad a pedir al banco ← monto total x 0.3 DESPLEGAR cantidad a pedir al banco DE OTRA FORMA

cantidad a invertir ← monto total x 0.7 cantidad a pagar a crédito←monto total x 0.3

—Aplicar la fórmula:

interés = cantidad a pagar a crédito x 0.2

Paso 3. Algoritmo: •

De ahora en adelante llamaremos:

np a número de piezas cu a costo de cada pieza mt a monto total ci a cantidad a invertir de los fondos de la empresa cpb a cantidad a pedir al banco cc a cantidad a pagar a crédito i a intereses

1. PEDIR np, cu 2. mt ← np * cu 3. SI mt > 500 000 ENTONCES

ci ← mt * 0.55 cpb ← mt * 0.3 cc ← mt * 0.15 DESPLEGAR cpb

DE OTRA FORMA ci ← mt * 0.7 cc ← mt * 0.3

4. i ←cc x 0.2 5. DESPLEGAR ci, ce, i

Paso 4. Diagrama de flujo (Fig. 4.18):

Ejercicio: Realizar al menos dos pruebas a este diagrama de flujo (Fig. 4.18) para verificar su funcionalidad.

PROBLEMAS PROPUESTOS

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

2. En un supermercado se hace una promoción, mediante la cual el cliente obtiene un descuento

Page 85: Computación metodología, lógica computa

Figura 4.18

dependiendo de un número que escoge al azar. Si el número escogido es menor que 74, el 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.

70 PARTE II. LÓGICA COMPUTACIONAL

Page 86: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 71

3. Calcular el número de pulsaciones que debe tener una persona por cada 10 segundos de ejercicio aeróbico; la fórmula que se aplica cuando el sexo es femenino es:

número de pulsaciones = (220 - edad) /10

y si el sexo es masculino es:

número de pulsaciones = (210 - edad) / 10

4. Una compañía de seguros está abriendo un departamento de fianzas y estableció un programa para captar clientes, que consiste en lo siguiente: Si el monto por el que se efectúa 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 cuál será la cuota que debe pagar un cliente.

5. 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. 6. Una empresa de bienes raíces ofrece casas de interés social, bajo las siguientes condiciones: Si

los ingresos del comprador son menores de $8000 el enganche será del 15% del costo de la casa y el resto se distribuirá en pagos mensuales, a pagar en diez años. Si los ingresos del comprador son de $8000 o más el enganche será del 30% del costo de la casa y el resto se distribuirá en pagos mensuales a pagar en 7 años.

La empresa quiere obtener cuánto debe pagar un comprador por concepto de enganche y cuánto por cada pago parcial.

7. El gobierno ha establecido el programa SAR (Sistema de Ahorro para el Retiro) que consiste en que los dueños de las empresas deben obligatoriamente depositar en una cuenta bancada un porcentaje del salario de los trabajadores; adicionalmente los trabajadores pueden solicitar a la empresa que deposite directamente una cuota fija o un porcentaje de su salario en la cuenta del SAR, la cual le será descontada de su pago.

Un trabajador que ha decidido aportar a su cuenta del SAR desea saber la cantidad total de dinero que se estará depositando a esa cuenta cada mes, y el pago mensual que recibirá.

8. Una persona desea iniciar un negocio, para lo cual piensa verificar cuánto dinero le prestaría el banco por hipotecar su casa. Tiene una cuenta bancaria, pero no quiere disponer de ella a menos que el monto por hipotecar su casa sea muy pequeño. Si el monto de la hipoteca es menor que $1 000 000 entonces invertirá el 50% de la inversión total, y un socio invertirá el otro 50%. Si el monto de la hipoteca es de $1 000 000 o más, entonces invertirá el monto total de la hipoteca y el resto del dinero que se necesite para cubrir la inversión total se repartirá a partes iguales entre el socio y él.

9. El gobierno del Estado de México desea reforestar un bosque que mide determinado número de hectáreas. Si la superficie del terreno excede a 1 millón de metros cuadrados, entonces decidirá sembrar de la siguiente manera:

Page 87: Computación metodología, lógica computa

72 PARTE II. LÓGICA COMPUTACIONAL

Porcentaje de la superficie del bosque Tipo de árbol 70% pino 20% oyamel 10% cedro

Si la superficie del terreno es menor o igual a un millón de metros cuadrados, entonces decidirá sembrar de la siguiente manera:

Porcentaje de la superficie del bosque Tipo de árbol 50% pino 30% oyamel 20% cedro

El gobierno desea saber el número de pinos, oyameles y cedros que tendrá que sembrar en el bosque, si se sabe que en 10 metros cuadrados caben 8 pinos, en 15 metros cuadrados caben 15 oyameles y en 18 metros cuadrados caben 10 cedros. También se sabe que una hectárea equivale a 10 mil metros cuadrados.

10. Una fábrica ha sido sometida a un programa de control de contaminación para lo cual se efectúa una revisión de los puntos IMECA generados por la fábrica. El programa de control de contami-nación consiste en medir los puntos IMECA que emite la fábrica en cinco días de una semana y si el promedio es superior a los 170 puntos entonces tendrá la sanción de parar su producción por una semana y una multa del 50% de las ganancias diarias cuando no se detiene la producción. Si el promedio obtenido de puntos IMECA es de 170 o menor entonces no tendrá ni sanción ni multa. El dueño de la fábrica desea saber cuánto dinero perderá después de ser sometido a la revisión.

11. Una persona se encuentra en la disyuntiva de comprar un automóvil o un terreno, los cuales cuestan exactamente la misma cantidad de dinero. Sabe que mientras el automóvil se devalúa, con el terreno sucede lo contrario. Esta persona comprará el automóvil si al cabo de tres años la devaluación de éste no es mayor que la mitad del incremento del valor del terreno. Ayúdele a esta persona a determinar si debe o no comprar el automóvil.

2b) Problemas selectivos compuestos

Este tipo de problemas se identifican porque para solucionarlos se necesita establecer más de una condición.

PROBLEMAS RESUELTOS

PROBLEMA 1

Paso 1. Definición del problema: 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 de 8; si las horas extras

Page 88: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 73

exceden de 8 se pagan las primeras 8 al doble de lo que se paga por una hora normal y el resto al triple.

Paso 2. Planeación de solución: Primero hay que determinar si el trabajador trabajó horas extras o no, ya que el hecho de que esta condición sea verdadera o falsa nos llevará a emprender acciones distintas. La condicional que ayudaría a determinarlo es la siguiente:

SI horas trabajadas > 40 ENTONCES acciones por llevar a cabo en caso de que sea verdad DE

OTRA FORMA acciones por llevar a cabo en caso de que sea falsa

En caso de que el trabajador SÍ haya trabajado más de 40 horas, significa que trabajó horas extras y las acciones que se llevarían a cabo son las siguientes:

• Primero sería necesario calcular las horas extras y la fórmula que nos ayudaría a calcularlas es la siguiente:

horas extras = horas trabajadas — 40

• El problema plantea dos opciones en caso de que el trabajador SÍ haya trabajado horas extras; dichas opciones son:

• SI trabajó 8 o menos horas extras, éstas se le pagarán al doble de lo que se le paga por una hora normal.

• SI trabajó más de 8 horas extras, las primeras 8 se le pagarán al doble de lo que se paga por una hora normal y el resto se le pagarán al triple.

Estas dos opciones se pueden establecer con la siguiente condicional:

SI horas extras > 8 ENTONCES horas extras excedentes de ocho ← horas extras — 8 pago por horas extras = pago por hora normal x 2 x 8 + pago por hora normal x 3 x horas extra excedentes de ocho

DE OTRA FORMA pago por horas extras = pago por hora normal x 2 x horas extras

• Finalmente, para calcular lo que el trabajador recibiría por pago habría que sumar lo que ganaría por las primeras 40 horas a lo que ganaría por las horas extras, puede usarse la siguiente fórmula:

pago = pago por una hora normal x 40 + pago por horas extras

Ahora determinemos que acciones se llevarían a cabo en caso de que el trabajador NO haya trabajado más de 40 horas:

Page 89: Computación metodología, lógica computa

7 4 PARTE II. LÓGICA COMPUTACIONAL

• La única acción posible en este caso es calcular el pago por las horas trabajadas, lo cual se puede hacer mediante la siguiente fórmula:

pago = pago por hora normal x horas trabajadas

Las entradas del problema estarán constituidas por los datos: horas trabajadas y pago por hora normal.

SALIDAS: pago ENTRADAS: pago por hora normal, horas trabajadas. DATOS ADICIONALES: si el trabajador no labora horas extras sólo se le paga el salario normal por hora, pero si trabaja horas extras, por cada una de ellas se le pagará el doble de lo que se le paga por una hora normal si son 8 o menos horas extras y si trabaja más de 8 horas extras se le pagan al doble las primeras 8 y el resto se la pagan al triple. SOLUCIÓN

Aplicar la condicional: SI horas trabajadas > 40 ENTONCES

horas extras ←horas trabajadas - 40 SI horas extras > 8 ENTONCES

horas extras excedentes de ocho ← horas extras - 8 pago por horas extras ←pago por hora normal x 2 x 8 + pago por hora normal x 3 x horas extras excedentes de ocho

DE OTRA FORMA pago por horas extras ← pago por hora normal x 2 x horas extras

pago ← horas trabajadas x 40 + pago por horas extras DE OTRA FORMA

pago ← horas trabajadas x pago por hora normal

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

ht a horas trabajadas ph a pago por hora normal he a horas extras het a horas extras que exceden de ocho phe a pago por horas extras pt a pago que recibe el trabajador

1. PEDIR ht.ph 2. SI ht > 40 ENTONCES

he ← ht - 40 SI he > 8 ENTONCES

het ← he - 8 pe ← ph * 2 * 8 + ph * 3 * het

DE OTRA FORMA

Page 90: Computación metodología, lógica computa

CAPÍTULO4. TIPOS DE PROBLEMAS 75

pe ← ph * 2 * he

pt ← ph * 40 + pe DE OTRA FORMA

Figura4.19

pe ← ph • 2 « 8 + ph • 3 * het

Page 91: Computación metodología, lógica computa

7 6 PARTE II. LÓGICA COMPUTACIONAL

pt ←ph * ht 3. DESPLEGAR pt

Paso 4. Diagrama de flujo (Fig. 4.19).

Prueba 1

ht←38 ph←2

Como la condición ht > 40 no se cumple, ejecuta la parte izquierda:

pt←76

Al terminar la condición imprime 76, el cual es el pago que recibió el trabajador en esta semana.

Prueba 2

ht←45 ph←2

Como la condición ht > 40 sí se cumple ejecuta el primer bloque de la parte derecha de la condición:

he←5

A continuación, como la condición ht > 8 no se cumple, ejecuta: pe←20 pt ←100

Y finalmente se imprime el valor de pt = 100, que es lo que gana el empleado en esa semana por haber trabajado 5 horas extra.

Prueba 3

ht←50 ph←2

La condición ht > 40 se cumple y ejecuta:

he←10 <■■■

También la condición he > 8 se cumple y ejecuta:

het ←2

Page 92: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 77

pe ←44 pt←124

E imprime 124, lo que ganó el empleado por haber trabajado 10 horas extras.

Otra forma de solucionar el problema es:

Paso 2. Planeación de la solución: La fórmula general para calcular el pago del trabajador es:

pago = horas normales x pago por hora normal + horas extras dobles x pago por hora normal x 2 + horas extras triples x pago por hora normal x 3

Por lo cual debemos obtener los datos horas normales, horas extras dobles y horas extras triples.

Si horas trabajadas > 40 ENTONCES horas extras = horas trabajadas - 40 Si horas extras > 8 ENTONCES

horas normales = 40 horas extras dobles = 8 horas extras triples = horas extras - 8

DE OTRA FORMA horas normales = 40 horas extras dobles = horas extras horas extras triples = 0

DE OTRA FORMA horas normales = horas trabajadas x pago por hora normal horas extras dobles = 0 horas extras triples = 0

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

h a horas trabajadas ph a pago por hora n a horas normales e a horas extras d a horas extras dobles t a horas extras triples P a pago

1. PEDIR h, Ph

2. SI h > 40 > ENTONCES e ← h - 40 S I e 8 ENTONCES

Page 93: Computación metodología, lógica computa

78 PARTE II. LÓGICA COMPUTACIONAL

nf ← 40 d ← 8 t ← e← 8

DE OTRA FORMA n←40 d ←e t←0 DE

OTRA FORMA n ← h d←0 t←0

3. p ← n * ph + d *ph * 2 + t *ph *3 4. DESPLEGAR p

Paso 4. Diagrama de flujo (Fig. 4.20).

En aquellos problemas en donde un bloque condicional incluye otro bloque condicional se dice que un bloque está anidado dentro del otro.

Ahora se efectuarán las mismas pruebas que se emplearon para la primera solución:

Prueba 1

h←38 ph←2

Como la condición h > 40 no se cumple, ejecuta la parte izquierda:

n←38 d←0 t←0

Al terminar la condición:

p←76

e imprime este valor.

Prueba 2

h←45 ph←2

Como la condición ht > 40 se cumple, ejecuta el primer bloque de la parte derecha de la condición:

e←5

Page 94: Computación metodología, lógica computa

Figura 4.20

A continuación, como la condición e > 8 no se cumple ejecuta:

n←40 d←5

CAPÍTULO 4. TIPOS DE PROBLEMAS 79

Page 95: Computación metodología, lógica computa

80 PARTE I I . LÓGICA COMPUTACIONAL

t←0 p← 100

Y se imprime 100, que es lo que gana el empleado en esa semana por haber trabajado cinco horas extras.

Prueba 3

h←50 ph←2

La condición ht > 40 se cumple y ejecuta:

e← 10

También la condición e > 8 se cumple y ejecuta:

n←40 d←8 t←2 p← 124

Y se imprime 124, lo que ganó el empleado por haber trabajado 10 horas extras.

PROBLEMA 2

Paso 1. Definición del problema: Calcular la utilidad que un trabajador recibe en 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:

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

Paso 2. Planeación de la solución: Lo primero que es importante determinar es en qué rango se encuentra la antigüedad del trabajador en la empresa. Para ello será necesario averiguar si está en el primer rango, es decir si tiene menos de un año trabajando. Esto puede determinarse con la ayuda de la siguiente condicional:

Page 96: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 81

SI tiempo < 1 ENTONCES acciones por llevar a cabo en caso de que tenga menos de 1 año trabajando en la empresa DE

OTRA FORMA acciones por llevar a cabo en caso de que tenga 1 año o más trabajando en la empresa

En caso de que el tiempo NO fuera menor que 1, significaría que el trabajador tiene 1 año o más trabajando en la empresa, pero no se sabe exactamente en cuál de los demás rangos se ubica, es decir, podría ser que estuviera en el rango de 1 a 2 años, o de 2 a 5 años, o de 5 a 10 años o de más de 10 años. El hecho de saber que NO tiene menos de 1 año trabajando no es útil para resolver el problema, por lo cual es necesario establecer un grupo de condiciones para verificar en qué rango se encuentra exactamente. Estas condiciones quedarían de la siguiente manera:

SI tiempo < 1 ENTONCES acciones por llevar a cabo en caso de que tenga menos de 1 año DE

OTRA FORMA SI tiempo < 2 ENTONCES

acciones por realizar en caso de que tenga más de 1 año y menos de 2 DE OTRA FORMA

SI tiempo < 5 ENTONCES acciones por realizar en caso de que tenga más de 2 años y menos de 5

DE OTRA FORMA SI tiempo < 10 ENTONCES

acciones por realizar en caso de que tenga más de 5 años y menos de 10 DE OTRA FORMA

acciones por realizar en caso de que tenga 10 años o más

La condicional tiempo < 2 es una acción que se llevaría a cabo sólo si la condicional tiempo < 1 NO fuera verdad, lo cual significa que si la condicional tiempo < 2 SÍ fuera verdad el tiempo estaría necesariamente en el rango de entre 1 y 2 años, ya que ya se sabe que NO tiene menos de 1 año y que SÍ tiene menos de 2.

Ocurre exactamente lo mismo con los demás rangos. Los datos tiempo y salario constituyen las entradas del problema.

SALIDAS: utilidad ENTRADAS: tiempo, salario DATOS ADICIONALES: La utilidad que se otorga depende del tiempo que se tiene trabajando en la empresa según la siguiente tabla:

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

Page 97: Computación metodología, lógica computa

82 PARTE II. LÓGICA COMPUTACIONAL

SOLUCIÓN Aplicar la condicional:

SI tiempo < 1 ENTONCES utilidad ← salario x 0.05 DE OTRA FORMA

SI tiempo < 2 ENTONCES utilidad ← salario x 0.07 DE OTRA FORMA

SI tiempo < 5 ENTONCES utilidad ← salario x 0.1 DE OTRA FORMA

Si tiempo < 10 ENTONCES utilidad ←salario x 0.15 DE OTRA FORMA

utilidad ← salario x 0.2

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

s a salario t a tiempo que tiene trabajando u a utilidad

1. PEDIR s, t 2. SI t < 1 ENTONCES

u ← s * 0.05 DE OTRA FORMA

SI t < 2 ENTONCES u ← s * 0.07

DE OTRA FORMA SI t < 5 ENTONCES u ← s * 0.1

DE OTRA FORMA S i t < 10 ENTONCES

u ←s*0.15 DE OTRA FORMA u ← s * 0.2

3. DESPLEGAR u

Paso 4. Diagrama de flujo (Fig. 4.21).

Prueba 1

Supongamos que una persona tiene 1/2 año de antigüedad y gana $1000 mensuales.

Page 98: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 83

Figura 4.21

t ←0.5 s ← 1000

La primera condición se cumple ya que 0.5 es menor que 1 y ejecuta:

Page 99: Computación metodología, lógica computa

84 PARTE I I . LÓGICA COMPUTACIONAL

u←50

y este último valor es desplegado como la solución del problema.

Prueba 2

Ahora supongamos que una persona que tiene 15 años de antigüedad y gana $5000 mensuales.

t← 15 s ←5000

La primera condición no la cumple, ya que 15 no es menor que 1, así que ejecuta la segunda condición, la cual tampoco se cumple ya que 15 no es menor que 2. Lo mismo pasa con la condición t < 5. Al llegar al último bloque condicional evalúa la condición 15 < 10, lo cual no es verdad y ejecuta la parte izquierda de la condición:

u ←1000

y despliega este valor que es el 20% de los $5000 que gana esta persona por mes.

Ejercicio: Efectuar por lo menos dos pruebas más a este diagrama de flujo para verificar su funcionalidad.

PROBLEMA 3

Paso 1. Definición del problema: 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%, 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 sólo hay bolitas de los colores mencionados.

Paso 2. Planeación de la solución: Lo primero que debe saberse es el color de la bolita que le correspondió al cliente. Con este dato se podrá determinar qué descuento se le aplicará. Esto puede hacerse estableciendo un grupo de condiciones que evalúen el color de la bolita. Las condiciones pueden ser las siguientes:

SI color de la bolita = "BLANCA" ENTONCES El descuento será de 0%

DE OTRA FORMA SI color de la bolita = "VERDE" ENTONCES

El descuento será de 10% DE OTRA FORMA

SI color de la bolita = "AMARILLA" ENTONCES El descuento será de 25%

Page 100: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 85

DE OTRA FORMA SI color de la bolita = "AZUL" ENTONCES

El descuento será de 50% DE OTRA FORMA

El descuento será de 100%

Nótese que si la bolita NO es blanca será necesario verificar SI es verde para poder asegurar que el descuento será del 10%. En caso de que la bolita NO sea blanca ni verde, entonces se tendrá que verificar que SÍ sea amarilla para poder asegurar que el descuento sea del 25%. En caso de que la bolita NO sea blanca ni verde ni amarilla ni azul, necesariamente tendrá que ser roja, ya que se sabe que no hay más colores y el descuento se obtiene entonces por exclusión.

En caso de que la bolita sea blanca la fórmula para encontrar la cantidad por descontar podría ser la siguiente:

cantidad por descontar = 0

Si la bolita es roja la fórmula para encontrar la cantidad por descontar debe ser la siguiente:

cantidad por descontar = monto de la compra

En cualquiera de los demás casos la cantidad por descontar podrá obtenerse mediante la siguiente fórmula:

cantidad a descontar = monto de la compra x descuento Los datos que

constituyen las entradas del problema son: monto de la compra y color de la bolita.

SALIDAS: cantidad final a pagar ENTRADAS: monto de la compra, color de la bolita DATOS ADICIONALES: el descuento que se otorga depende del color de la bolita que se obtenga, como lo muestra la siguiente tabla:

COLOR DE LA BOLITA DESCUENTO

Blanca 0% Verde 10% Amarilla 25% Azul 50% Roja 100%

SOLUCIÓN Aplicar la condicional:

SI color de la bolita = "BLANCA" ENTONCES cantidad a descontar ← 0 DE OTRA FORMA

Page 101: Computación metodología, lógica computa

86 PARTE I I . LÓGICA COMPUTACIONAL

SI color de la bolita = "VERDE" ENTONCES cantidad a descontar ← monto de la compra x 0.1

DE OTRA FORMA SI color de la bolita = "AMARILLA" ENTONCES

cantidad a descontar ← monto de la compra x 0.25 DE OTRA FORMA

SI color de la bolita = "AZUL" ENTONCES cantidad a descontar ← monto de la compra x 0.5

DE OTRA FORMA cantidad a descontar ← monto de la compra

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

m a monto de la compra b$ a color de la bolita d a cantidad por descontar cp a cantidad por pagar

1. PEDIR m, b$ 2. SI b$ = "BLANCA" ENTONCES

d←0 DE OTRA FORMA

SI b$ = "VERDE" ENTONCES d←m*0.1

DE OTRA FORMA SI b$ = "AMARILLA" ENTONCES

d←m* 0.25 DE OTRA FORMA

SI b$ = "AZUL" ENTONCES d ← m * 0.5

OTRA FORMA d←m

3. cp ← m ← d 4. DESPLEGAR cp

Nótese que el nombre de la variable que contiene el dato del color de la bolita tiene al final el signo $ y que los nombres de los colores están entre comillas, esto se debe a que el dato color es de tipo alfanumérico.

Paso 4. Diagrama de flujo (Fig. 4.22).

Prueba J Realicemos una prueba para una persona que compró $500 y le correspondió una bolita de color blanco:

Page 102: Computación metodología, lógica computa

Figura 4.22

m←500 b$ ← "BLANCA"

Al ser verdadera la primera condicional ejecuta:

CAPÍTULO 4. TIPOS DE PROBLEMAS 87

Page 103: Computación metodología, lógica computa

88 PARTE II. LÓGICA COMPUTACIONAL

d←0

cp ← 500

e imprime 500, cantidad que se tendrá que pagar ya que la bola blanca no da derecho a obtener descuento.

Prueba 2

Supongamos ahora que una persona ha comprado $200 y la bolita es amarilla.

m←200 b$ ← "AMARILLA"

La evaluación de la primera y la segunda condiciones resulta falsa, así que se evalúa la tercera, la cual es verdadera y entonces se ejecuta:

d←50

cp ← 150

este último valor se despliega porque es un 25% de descuento sobre $200.

Prueba 3

En esta prueba la persona obtuvo bolita roja y compró $350.

m←350 b$ ← "ROJA"

Ninguna de las cuatro condiciones es verdadera, ya que la bolita no es ni blanca ni verde ni amarilla, por lo cual se ejecuta la parte falsa de la última condición:

d←350

cp ← 0

y se imprime 0, ya que la bolita roja otorga un 100% de descuento sobre la compra.

PROBLEMA 4

Paso 1. Definición del problema: Una empresa que comercializa cosméticos 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 las ventas de los tres departamentos y aquellos que excedan el 33%

Page 104: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 89

de las ventas totales se les paga una cantidad extra equivalente al 20% de su salario mensual. Si todos los vendedores ganan lo mismo, determinar cuánto recibirán los vendedores de los tres departamentos al finalizar el mes.

Paso 2. Planeación de la solución: En primer lugar, será necesario obtener las ventas totales de la empresa, lo que puede calcularse mediante la fórmula:

ventas totales = ventas departamento 1 + ventas departamento 2 + ventas departamento 3

Una vez obtenidas las ventas totales se podrá calcular cuánto representa el 33% de éstas utilizando la siguiente fórmula:

porcentaje de ventas = ventas totales x 0.33

El porcentaje de ventas servirá para determinar si los departamentos rebasan éste o no y así poder calcular si los vendedores de cada departamento recibirán un 20% más sobre su salario o no. Por cada departamento se tendrá una condicional como la siguiente:

SI ventas del departamento > porcentaje de ventas ENTONCES cantidad por recibir ← salario + salario x 0.2

DE OTRA FORMA cantidad por recibir ← salario

En este problema las condicionales tendrán que aplicarse en forma secuencial, ya que si un departamento recibe aumento o no es independiente de lo que suceda con los otros dos departamentos.

Las entradas del problema estarán constituidas por los datos: ventas del departamento 1, ventas del departamento 2, ventas del departamento 3 y salario de los vendedores.

SALIDAS: cantidad por recibir por los vendedores del departamento 1 cantidad por recibir por los vendedores del departamento 2 cantidad por recibir por los vendedores del departamento 3

ENTRADAS: ventas del departamento 1, ventas del departamento 2, ventas del departamento 3, salario de los vendedores.

DATOS ADICIONALES: Los vendedores recibirán un 20% más sobre su salario si las ventas de su departamento rebasan el 33% de las ventas totales de la empresa.

SOLUCIÓN

—Aplicar la fórmula:

ventas totales = ventas departamento 1 + ventas departamento 2 + ventas departamento 3

— Aplicar la fórmula:

Page 105: Computación metodología, lógica computa

90 PARTE II. LÓGICA COMPUTACIONAL

porcentaje de ventas = ventas totales x 0.33

—Aplicar la condicional:

SI ventas del departamento 1 > porcentaje de ventas ENTONCES cantidad por recibir por vendedores del departamento 1 ← salario + salario x 0.2

DE OTRA FORMA cantidad por recibir por los vendedores del departamento 1 ← salario

—Aplicar la condicional:

SI ventas del departamento 2 > porcentaje de ventas ENTONCES cantidad por recibir por vendedores del departamento 2 ← salario + salario x 0.2

DE OTRA FORMA cantidad por recibir por los vendedores del departamento 2 ← salario

—Aplicar la condicional:

SI ventas del departamento 3 > porcentaje de ventas ENTONCES cantidad por recibir por vendedores del departamento 3 ← salario 4- salario x 0.2

DE OTRA FORMA cantidad por recibir por los vendedores del departamento 3 ← salario

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

v1 a ventas del departamento 1 v2 a ventas del departamento 2 v3 a ventas del departamento 3 s a salario que reciben los vendedores tv a total de ventas de la empresa p a porcentaje de ventas cd1 a cantidad por recibir por los vendedores del departamento 1 cd2 a cantidad por recibir por los vendedores del departamento 2 cd3 a cantidad por recibir por los vendedores del departamento 3

1. PEDIR vi, v2, v3, s 2. tv ← vi + v2 + v3 3. p ← tv * 0.33 4. SI vi > p ENTONCES

Cd1←s + s *0 . 2 DE OTRA FORMA

cd1 ← s 5. SI v2 > p ENTONCES

Page 106: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 91

cd2 ← S + S * 0.2 DE OTRA FORMA

cd2←s 6. SI v3 > p ENTONCES

cd3 ← s + s * 0.2 DE OTRA FORMA

cd3←s 7. DESPLEGAR cd1, cd2, cd3

Paso 4. Diagrama de flujo (Fig. 4.23).

Prueba Supongamos que el primer departamento vendió $32 000, el segundo $38 000 y el tercero $30 000. Cada vendedor gana $1500.

v1 ← 32 000 v2← 38 000 v3← 30 000 s← 1500

tv ← 100 000 p ← 33 000

Al evaluar la primera condición ésta resulta falsa, ya que 32 000 no es mayor que 33 000, así es que ejecuta:

Cd1 ← 1500

Cuando se evalúa la segunda condición ésta es verdadera, ya que 38 000 es mayor que 33 000, así es que ejecuta:

cd2← 1800

La tercera condición es falsa porque 30 000 no es mayor que 33 000:

cd3 ←1500

Y se imprimen los valores 1500, 1800 y 1500, lo que significa que el segundo departamento fue el único que obtuvo incentivo.

Ejercicio: efectuar al menos una prueba más a este diagrama de flujo para verificar su funcionalidad.

PROBLEMA 5

Paso 1. Definición del problema: El Instituto Mexicano del Seguro Social (IMSS) requiere clasificar a las personas que se jubilarán en

Page 107: Computación metodología, lógica computa

Figura 4.23

el año de 1992. 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.

92 PARTE II. LÓGICA C0MPUTAC10NAL

Page 108: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 93

Las personas adscritas a la jubilación por antigüedad joven deben tener menos de 60 años y una antigüedad en su empleo de 25 años o más.

Las personas adscritas a la jubilación por antigü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.

Paso 2. Planeación de la solución: Primero es importante determinar en qué rango se encuentran la edad y la antigüedad de la persona, para ello emplearemos la condicional:

SI edad > = 60 ENTONCES SI antigüedad < 25 ENTONCES

la jubilación es por edad DE OTRA FORMA

la jubilación es por antigüedad adulta DE OTRA FORMA

SI antigüedad < 25 ENTONCES no tiene por qué jubilarse

DE OTRA FORMA la jubilación es por antigüedad joven

Otra alternativa es emplear la siguiente condicional:

SI edad > = 60 Y antigüedad < 25 ENTONCES la jubilación es por edad

DE OTRA FORMA SI edad > = 60 Y antigüedad > 25 ENTONCES

la jubilación es por antigüedad adulta DE OTRA FORMA

SI edad < 60 Y antigüedad > 25 ENTONCES la jubilación es por antigüedad joven

DE OTRA FORMA no tiene por qué jubilarse

Recuerde que para que la expresión edad > = 60 Y antigüedad < 25 sea verdadera, es preciso que las dos condiciones se cumplan; si por lo menos una de ellas no se cumple toda la expresión será falsa.

Esta segunda alternativa se empleará para solucionar el problema. El lector tendrá, como ejercicio, que continuar con la metodología para la primera alternativa.

Las entradas del problema serán los datos: edad y antigüedad de la persona.

SALIDAS: tipo de jubilación ENTRADAS: antigüedad, edad DATOS ADICIONALES: Si la edad > = 60 y la antigüedad < 25 entonces el tipo de jubilación es por edad. Si la edad > = 60 y la antigüedad > 25 entonces el tipo de jubilación es por antigüedad adulta.

Page 109: Computación metodología, lógica computa

94 PARTE II. LÓGICA COMPUTACIONAL

Si la edad < 60 y la antigüedad > 25 entonces el tipo de jubilación es por antigüedad joven. Si la edad < 60 y la antigüedad < 25 entonces no tiene por qué jubilarse.

SOLUCIÓN

— Aplicar la condicional:

SI edad > = 60 Y antigüedad < 25 ENTONCES la jubilación es por edad

DE OTRA FORMA SI edad > = 60 Y antigüedad > 25 ENTONCES

la jubilación es por antigüedad adulta DE OTRA FORMA

SI edad < 60 Y antigüedad > 25 ENTONCES la jubilación es por antigüedad joven

DE OTRA FORMA no tiene por qué jubilarse

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

ed a edad ant a antigüedad

1. PEDIR ed, ant 2. SI ed > = 60 AND ant < 25 ENTONCES

DESPLEGAR "la jubilación es por edad" DE OTRA FORMA

SI ed > = 60 AND ant > 25 ENTONCES DESPLEGAR "la jubilación es por antigüedad adulta"

DE OTRA FORMA SI ed < 60 AND ant > 25 ENTONCES

DESPLEGAR "la jubilación es por antigüedad joven" DE OTRA FORMA

DESPLEGAR "no tiene por qué jubilarse"

Recuerde que el conectivo lógico conjunción se representa con el operador AND, y que por esta razón sustituyó el lugar del conectivo Y.

Paso 4. Diagrama de flujo (Fig. 4.24).

Prueba 1 Hagamos una prueba con una persona de 65 años de edad y 30 años de antigüedad:

ed←65

Page 110: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 95

Figura 4.24

ant ← 30

La primera condicional no se cumple, pues aunque ya la variable ed es mayor que 60, la variable ant no es menor que 25 y como no se cumplen ambas condiciones se pasa al siguiente bloque condicional.

Page 111: Computación metodología, lógica computa

96 PARTE I I . LÓGICA COMPUTACIONAL

En el segundo bloque ambas condiciones se cumplen, así que se despliega el letrero "La jubilación es por antigüedad adulta".

Prueba 2 Otro caso puede ser el de una persona que tenga 55 años de edad y 20 años de antigüedad:

ed ←55 t ← 20an

En la primera condicional sólo la condición ant < 25 se cumple, así es que la condición compuesta es falsa y se evalúa la parte izquierda del bloque.

La segunda condicional también es falsa, ya que ninguna de las dos condiciones se cumple. También la tercera condicional es falsa, ya que sólo la condición ed < 60 se cumple; por lo tanto,

se ejecuta la parte izquierda del bloque condicional, que consiste en desplegar el letrero "No tiene por qué jubilarse".

Ejercicio: efectuar al menos una prueba más a este diagrama de flujo para verificar su funcionalidad.

PROBLEMAS PROPUESTOS

1. En una fábrica de computadoras se planea ofrecer a los clientes un descuento que dependerá del número de computadoras que compren. Si las computadoras son menos de cinco se les da un 10% de descuento sobre el total de la compra; si el número de computadoras es mayor o igual a cinco pero menor que 10 se les otorga un 20% de descuento; y si son 10 o más se les da un 40% de descuento. El precio de cada computadora es de $3500.

2. En una llantera se ha establecido una promoción de las llantas marca "Ponchadas", dicha promoción consiste en lo siguiente:

Si se compran menos de cinco llantas el precio es de $45 cada una, de $40 si se compran de cinco a 10 y de $35 si se compran más de 10.

Obtener la cantidad de dinero que una persona tiene que pagar por cada una de las llantas que compra y la que tiene que pagar por el total de la compra.

3. En un juego de preguntas a lasque se responde "SÍ" o "NO" gana quien responda correctamente las tres preguntas. Si se responde mal a cualquiera de ellas ya no se pregunta la siguiente y termina el juego. Las preguntas son:

1. ¿Colón descubrió América? 2. ¿La independencia de México fue en el año 1810? 3. ¿The Doors fue un grupo de rock americano?

4. Un proveedor de estéreos ofrece un descuento del 10% sobre el precio sin IVA, de algún aparato si éste cuesta $2000 o más. Además, independientemente de esto, ofrece un 5% de descuento si

Page 112: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 97

la marca es "NOSY". Determinar cuánto pagará, con IVA incluido, un cliente cualquiera por la compra de su aparato.

5. Una frutería ofrece las manzanas con descuento según la siguiente tabla:

NUM. DE KILOS COMPRADOS % DESCUENTO

0 -2 2.01 -5 5.01 - 10 10.01 en adelante

0% 10% 15% 20%

Determinar cuánto pagará una persona que compre manzanas en esa frutería. 6. El dueño de una empresa desea planificar las decisiones financieras que tomará en el siguiente

año. La manera de planificarlas depende de lo siguiente:

Si actualmente su capital se encuentra con saldo negativo, pedirá un préstamo bancario para que su nuevo saldo sea de $10 000. Si su capital tiene actualmente un saldo positivo pedirá un préstamo bancario para tener un nuevo saldo de $20 000, pero si su capital tiene actualmente un saldo superior a los $20 000 no pedirá ningún préstamo.

Posteriormente repartirá su presupuesto de la siguiente manera:

$5000 para equipo de cómputo $2000 para mobiliario y del resto la mitad será para la compra de insumos y la otra para otorgar incentivos al personal.

Desplegar qué cantidades se destinarán para la compra de insumos e incentivos al personal y, en caso de que fuera necesario, a cuánto ascendería la cantidad que se pediría al banco.

7. Tomando como base los resultados obtenidos en un laboratorio de análisis clínicos, un médico determina si una persona tiene anemia o no, lo cual depende de su nivel de hemoglobina en la sangre, de su edad y de su sexo. Si el nivel de hemoglobina que tiene una persona es menor que el rango que le corresponde, se determina su resultado como positivo y en caso contrario como negativo. La tabla en la que el médico se basa para obtener el resultado es la siguiente:

EDAD NIVEL DE HEMOGLOBINA

0 - 1 mes mayor de 1 y menor o igual de 6 meses mayor de 6 y menor o igual de 12 meses mayor de 1 y menor o igual que 5 años mayor de 5 y menor o igual que 10 años mayor de 10 y menor o igual que 15 años mujeres mayores de 15 años hombres mayores de 15 años

13 - 26 g%10 - 18 g% 11 - 15 g% 11.5 - 15 g% 12.6 . 15.5 g% 13 - 15.5 g% 12 - 16 g% 14 - 18 g%

Page 113: Computación metodología, lógica computa

98 PARTE I I . LÓGICA COMPUTACIONAL

8. Una institución educativa estableció un programa para estimular a los alumnos con buen rendimiento académico y que consiste en lo siguiente:

Si el promedio es de 9.5 o más y el alumno es de preparatoria, entonces éste podrá cursar 55 unidades y se le hará un 25% de descuento.

Si el promedio es mayor o igual a 9 pero menor que 9.5 y el alumno es de preparatoria, entonces éste podrá cursar 50 unidades y se le hará un 10% de descuento.

Si el promedio es mayor que 7 y menor que 9 y el alumno es de preparatoria, éste podrá cursar 50 unidades y no tendrá ningún descuento.

Si el promedio es de 7 o menor, el número de materias reprobadas es de cero a tres y el alumno es de preparatoria, entonces podrá cursar 45 unidades y no tendrá descuento.

Si el promedio es de 7 o menor, el número de materias reprobadas es de cuatro o más y el alumno es de preparatoria, entonces podrá cursar 40 unidades y no tendrá ningún descuento.

Si el promedio es mayor o igual a 9.5 y el alumno es de profesional, entonces podrá cursar 55 unidades y se le hará un 20% de descuento.

Si el promedio es menor de 9.5 y el alumno es de profesional, entonces podrá cursar 55 unidades y no tendrá descuento.

Obtener el total que tendría que pagar un alumno si la colegiatura para alumnos de profesional es de $300 por cada cinco unidades y para alumnos de preparatoria es de $180 por cada cinco unidades.

3) PROBLEMAS REPETITIVOS

Introducción

Se les llama problemas repetitivos a aquellos en cuya solución es necesario utilizar un mismo conjunto de acciones que puedan ejecutarse más de una vez.

Por ejemplo, un problema repetitivo sencillo podría ser pedir cinco cantidades de la misma unidad. Para resolverlo se podría hacer este proceso en forma secuencial y el algoritmo y diagrama de flujo quedarían como se muestra en la figura 4.25.

Este problema es repetitivo pues para solucionarlo se necesita realizar la misma acción, PEDIR cant más de una vez.

Si bien escribir cinco veces la misma acción no costó mucho trabajo, imagine ahora si fueran 100 las cantidades que tuvieran que pedirse: la solución secuencial a este problema resultaría sumamente larga y tediosa.

Para solucionar problemas repetitivos recurriremos al uso de ciclos, que nos evitarán escribir muchas veces un conjunto de acciones.

Ahora definiremos lo que es un ciclo y algunos otros conceptos necesarios para la solución de problemas repetitivos.

Ciclo: Es la ejecución de un mismo conjunto de acciones una o más veces. Se compone de: cuerpo del ciclo y estructura cíclica.

Proceso: Conjunto de acciones a las que se les asigna un nombre. Para crearlo se deberán seguir las mismas reglas usadas para nombrar las variables, con la diferencia de que deberán emplearse letras mayúsculas. La última acción de un proceso deberá ser siempre FINP, para indicar el fin de éste.

Page 114: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 99

1. PEDIR cant 2. PEDIR cant 3. PEDIR cant 4. PEDIR cant 5. PEDIR cant

Figura 4.25 Cuerpo del ciclo: Proceso que se ejecutará una o más veces. Estructura cíclica: Conjunto de acciones que permiten que el cuerpo del ciclo se ejecute una o

más veces. Iteración: Es cada una de las ejecuciones del cuerpo del ciclo. La forma básica de un ciclo en algoritmo y diagrama de flujo es la siguiente:

1. 2.

C IR al paso 1

En donde C es el nombre del cuerpo del ciclo, y la estructura cíclica está representada por la flecha, la cual ayuda a que el cuerpo del ciclo se ejecute varias veces.

Los ciclos que usaremos son aquellos en los que el cuerpo del ciclo es ejecutado por la estructura cíclica hasta que cierta condición se satisface y que por lo tanto su número de iteraciones es finito.

A veces la definición del problema nos lleva a usar un ciclo en el que el número de iteraciones a efectuarse se puede determinar previamente; sin embargo, otras veces, aunque sabemos que el ciclo tiene un número finito de iteraciones, no podremos saber de antemano el número de ellas.

Es así que los ciclos se clasifican en:

1) Ciclos con un número determinado de iteraciones. 2) Ciclos con un número indeterminado de iteraciones.

1) Ciclos con un número determinado de iteraciones

Son aquellos en que el número de iteraciones es determinable antes de ejecutarse el ciclo. Este número

Page 115: Computación metodología, lógica computa

100 PARTE I I . LÓGICA COMPUTACIONAL

de iteraciones se puede obtener de la definición del problema, o bien mediante una entrada de datos cuando el problema indique que un conjunto de acciones se debe efectuar para n ocurrencias.

Como ejemplo, resolvamos el problema planteado al principio del capítulo en donde debíamos pedir cinco cantidades de la misma unidad. Es claro que el número de iteraciones es de 5, por lo que entra en la categoría de ciclos con un número determinado de iteraciones.

Para poder pedir exactamente cinco veces la variable cant necesitaremos ir contando el número de veces que la vayamos pidiendo. Cuando ya la hayamos pedido cinco veces tendremos que salir del ciclo, auxiliándonos con un bloque condicional que evalúe si ya hemos ejecutado cinco iteraciones. A la variable que nos ayuda a contar el número de iteraciones se le llama contador, y en adelante se utilizarán las variables i,j y k como contadores. En este caso, tanto el contador como el bloque condicional formarán parte de la estructura cíclica y la entrada de datos de la variable cant es el cuerpo del ciclo.

Para pedir la variable cant cinco veces debemos hacer lo siguiente:

1. i← 1 2. SI i > 5 ENTONCES IR al paso 3 DE OTRA FORMA PEDIR cant i← i +1 IR al paso 2 3. FIN

Y el diagrama de flujo correspondiente es el que se muestra en la figura 4.26. La variable i es el contador del número de iteraciones. La expresión:

i ← i+1

significa que al valor de la variable i se le suma 1 y el resultado de la suma es reasignado a la variable i, por lo que esta expresión implica que el valor de la variable i es incrementado en 1. El diagrama de flujo hace lo siguiente:

1) El primer bloque ejecutable asigna el valor 1 a la variable i. 2) La secuencia del diagrama nos lleva a evaluar si i es mayor que 5, esto es, si 1 es mayor que 5;

como esto es falso la secuencia del diagrama nos lleva a pedir la variable cant por primera vez. 3) El valor de i se incrementa y ahora es de 2. 4) Se evalúa la condición 2 > 5, la cual es falsa y nos lleva a pedir la variable cant por segunda

vez. 5) El valor de i se incrementa y ahora es de 3. 6) Se evalúa la condición 3 > 5 y como es falso, se pide la variable cant por tercera vez. 7) i tiene ahora un valor de 4. 8) Se evalúa la condición 4 > 5; al ser falsa se pide la variable cant por cuarta vez. 9) i tiene ahora un valor de 5. 10) Se evalúa la condición 5 > 5, y al ser falsa se pide la variable cant por quinta vez. 11) i tiene ahora un valor de 6. 12) Se evalúa la condición 6 > 5; al ser verdadera se termina la ejecución del ciclo.

Page 116: Computación metodología, lógica computa

Figura 4.26

Como regla general a los ciclos con un número determinado de iteraciones les corresponde un algoritmo como el siguiente:

1. i← 1 2. SI i > n ENTONCES IR al paso 3 DE OTRA FORMA C i← i +1 IR al paso 2 3. X

En donde la variable n es el número de iteraciones que se van a efectuar, y la variable i, como se vio, es el contador de iteraciones. C es el cuerpo del ciclo que será ejecutado n veces, y X es el conjunto de acciones que se ejecutarán cuando se termine con el ciclo.

A este algoritmo le corresponde un diagrama de flujo como el de la figura 4.27.

CAPÍTULO 4. TIPOS DE PROBLEMAS 101

Page 117: Computación metodología, lógica computa

102 PARTE II. LÓGICA COMPUTACIONAL

Figura 4.27 2)

Ciclos con un número indeterminado de iteraciones

Son aquellos en donde el número de iteraciones permanece indeterminado durante la ejecución del ciclo, y el proceso repetitivo termina hasta que el usuario lo indique.

En este tipo de ciclos el usuario decide dentro del ciclo cuando terminar con el proceso repetitivo sin importar cuántas iteraciones se hayan efectuado, a diferencia de los ciclos anteriores, en donde el número de iteraciones está determinado desde el principio.

El algoritmo que le corresponde a este tipo de ciclos es el siguiente:

1. C 2. PEDIR mas$ 3. SI mas$ = "NO" ENTONCES

IR al paso 4 DE OTRA FORMA IR al paso 1 4. X

En donde C es el cuerpo del ciclo que será ejecutado un número indeterminado de veces, X es el conjunto de acciones que suceden al ciclo, y a la variable mas$ el usuario le dará un valor de SÍ o de NO, dependiendo de si se desea realizar otra iteración o terminar con la ejecución del ciclo.

El diagrama de flujo correspondiente es el que se muestra en la figura 4.28.

Page 118: Computación metodología, lógica computa

Figura 4.28

En donde se podrá observar que el flujo del diagrama sale del ciclo hasta el momento en que la variable mas$ tome un valor de "NO" y debido a que no se sabe cuándo ocurrirá esto, se le llama ciclo con un número indeterminado de iteraciones.

Tipos de problemas repetitivos

Los Ciclos se emplean en los problemas repetitivos y, dependiendo de cómo sea necesario usar los ciclos, se clasifican en:

a) Problemas repetitivos simples b) Problemas repetitivos compuestos

Los problemas repetitivos simples son aquellos en los que se usa un solo ciclo, mientras que los problemas repetitivos compuestos emplean varios de ellos.

3a) Problemas repetitivos simples

3a.l) Número determinado de iteraciones Son problemas en que para su solución se requiere usar un solo ciclo, en el que su número de iteraciones es un dato conocido, que se puede obtener de la definición del problema, o bien como dato de entrada.

CAPÍTULO 4. TIPOS DE PROBLEMAS 103

Page 119: Computación metodología, lógica computa

104 PARTE I I . LÓGICA COMPUTAC1ONAL

Problemas resueltos

PROBLEMA 1 Calcular el promedio de calificaciones parciales de cada alumno de un grupo de cinco, sabiendo que existen tres periodos parciales.

Paso 1: Definición del problema: Igual a la redacción del problema.

Solución 1 Paso 2: Planeación de la solución: Dado que para cada alumno se efectuarán las mismas acciones, se puede determinar que es necesario utilizar un ciclo. Como en la definición del problema se plantea que son cinco alumnos se puede concluir que el número de iteraciones está determinado y es de cinco. Por lo tanto, el ciclo que le corresponde es el siguiente:

1. i ← 1 2. SI i > n ENTONCES IR al paso 3 DE OTRA FORMA C i ← i + 1 IR al paso 2 3. X

Sin embargo, como sabemos que el número de iteraciones es de cinco, podemos sustituir este valor en lugar de la variable n. Asimismo, como en cada iteración se procesará la calificación de cada alumno, sustituiremos ALUMNO como nombre del cuerpo del ciclo en lugar de C.

1. i ← 1 2. SI i > 5 ENTONCES IR al paso 3 DE OTRA FORMA ALUMNO i ← i + 1 IR al paso 2 3. X

El proceso ALUMNO, estará compuesto de las siguientes acciones: • Pedir los valores de las 3 calificaciones parciales. • Aplicar la fórmula:

promedio = ( calificación 1 + calificación2 + calificación3) / 3 • Desplegar el resultado obtenido.

El proceso X corresponderá a la acción de terminar, ya que no hay acciones posteriores al ciclo. Una vez terminada la serie de acciones necesarias para cada alumno es importante verificar que el valor del contador no exceda al número de iteraciones, es decir, verificar si el contador todavía no

Page 120: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 105

es mayor que 5. Si esto ocurriera significaría que no se ha terminado de procesar a todos los alumnos y sería necesario incrementar el contador en uno y repetir el proceso ALUMNO para el alumno siguiente. En caso contrario el proceso repetitivo se habrá terminado. SALIDAS: promedio de cada alumno ENTRADAS: calificación 1, calificación2 y calificación3 de cada alumno DATOS ADICIONALES: Ninguno SOLUCIÓN: Ver algoritmo

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

1 a contador del numero de ciclosel a calificación parcial 1 c2 a calificación parcial 2 c3 a calificación parcial 3 P a promedio

1. i← 1

2. SI i > 5 ENTONCES IR al paso 3 DE OTRA FORMA ALUMNO

i ← i + 1

IR al paso 2

3. FIN

El proceso ALUMNO constará de las siguientes acciones: 1. PEDIR cl,c2,c3 2. p ← (cl + c2 + c3 ) / 3 3. DESPLEGAR p 4. FINP

Nótese que las variables que se utilizan para obtener el promedio de todos los alumnos son las mismas, y esto no ocasiona ningún problema, pues al calcular el promedio de un alumno, éste inmediatamente se despliega, con lo que se cumple lo necesario para ese alumno. Cuando se procesa el promedio del alumno siguiente los datos del alumno anterior ya no se necesitan: entonces no afecta de ningún modo usar las mismas variables para resolver el problema.

Paso 4. Diagrama de flujo (véanse Figs. 4.29 y 4.30):

Hay que notar que este problema requirió del uso de un ciclo con un número determinado de iteraciones, la que a su vez requirió de una estructura secuencial, en este caso los bloques que componen al proceso ALUMNO.

Page 121: Computación metodología, lógica computa

106 PARTE II. LÓGICA COMPUTACIONAL

Figura 4.29

Figura 4.30

Page 122: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 107

Prueba 1 i← 1

Ejecuta ALUMNO, debido a que el valor de i no es mayor que 5 cl ←8 c2←9 c3←9 p ← 8.66 Termina ALUMNO e incrementa el valor de i en 1. i← 2

Ejecuta ALUMNO debido a que el valor de i no es mayor que 5 cl←7 c2←5 c3←6 p ← 6 Termina ALUMNO e incrementa el valor de i en 1. i← 3

Ejecuta ALUMNO debido a que el valor de i no es mayor que 5 cl←9 c2← 10 c3←6 p ← 8.33 Termina ALUMNO e incrementa el valor de i en 1. i← 4

Ejecuta ALUMNO debido a que el valor de i no es mayor que 5 cl← 10 c2←9 c3← 10 p ← 9.66 Termina ALUMNO e incrementa el valor de i en 1. i← 5

Ejecuta ALUMNO debido a que el valor de i no es mayor que 5 cl←8 c2←7 c3←8 p ←7.66 Termina ALUMNO e incrementa el valor de i en 1. i←6 Debido a que el valor de i ya es mayor que 5, termina el ciclo y ejecuta FIN.

Ejercicio: Realizar al menos dos pruebas a este diagrama de flujo para verificar su funcionali-dad.

Page 123: Computación metodología, lógica computa

108 PARTE I I . LÓGICA COMPUTACIONAL

Solución 2 Paso 2. Planeación de la solución: Resolveremos ahora el problema sin hacer uso de ciclos para justificar su gran utilidad.

Primero será necesario conocer las tres calificaciones parciales del alumno 1, qué serán las entradas para encontrar el promedio de este alumno.

Posteriormente podremos aplicar la fórmula para calcular el promedio:

promedio = ( calificación 1 + calificación2 + calificación3 ) / 3

Para continuar con los demás alumnos, la secuencia sería exactamente la misma que para el alumno 1. SALIDAS: promedio de cada alumno ENTRADAS: calificación 1, calificación2, calificación3 de cada alumno DATOS ADICIONALES: Ninguno SOLUCIÓN: Por cada alumno aplicar la fórmula:

promedio = (calificación 1 + calificación2 + calificación3 ) / 3

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

c1 a calificación 1 c2 a calificación 2 c3 a calificación 3 p a promedio

1. PEDIR cl,c2,c3 2. p ← (c1 + c2 + c3) / 3 3. DESPLEGAR p 4. PEDIR c1,c2,c3 5. p ← (c1 + c2 + c3) / 3 6. DESPLEGAR p 7. PEDIR cl,c2,c3 8. p ← (c1 + c2 + c3) / 3 9. DESPLEGAR p 10. PEDIR cl,c2,c3 11. p←(cl + c2 + c3)/3 12. DESPLEGAR p 13. PEDIR cl,c2,c3 14. p ← (c1 + c2 + c3) / 3

15. DESPLEGAR p

Al resolver así el problema, el trabajo del programador es más arduo que con la solución 1.

Paso 4. Diagrama de flujo (véanse Fig. 4.31):

Prueba I c1←8

Page 124: Computación metodología, lógica computa

Figura 4.31

CAPÍTULO 4. TIPOS DE PROBLEMAS 109

Page 125: Computación metodología, lógica computa

110 PARTE II. LÓGICA COMPUTACIONAL

c2←9 c3←9 p ← 8.66 cl←7 c2←5 c3←6 p ← 6 c1←9 c2← 10 c3←6 p←8.33 c1← 10 c2←9 c3← 10 p ← 9.66 cl←8 c2←7 c3←8 p ← 7.66

Ejercicio: Realizar al menos otra prueba a este diagrama de flujo para verificar su funcionali-dad.

PROBLEMA 2 Una compañía de seguros tiene contratados a n vendedores. Cada uno hace tres ventas a la semana. Su política de pagos es que un vendedor recibe un sueldo base, y 10% extra por comisiones de sus ventas. El gerente de su compañía desea saber cuánto dinero obtendrá en la semana cada vendedor por concepto de comisiones por las tres ventas realizadas, y cuánto tomando en cuenta su sueldo base y sus comisiones. Paso 1. Definición del problema: Igual a la redacción del problema. Paso 2. Planeación de la solución: Dado que para cada uno de los n vendedores se efectuarán las mismas acciones, se puede determinar que es necesario utilizar un ciclo. Como en la definición del problema se plantea que son n vendedores, se puede concluir que el número de iteraciones está determinado ya que el número de vendedores se puede pedir como dato de entrada. Por lo tanto, el ciclo que le corresponde es el siguiente:

1. i ← 1 2. SI i > n ENTONCES

IR al paso 3 DE OTRA FORMA VENDEDOR i ← i + 1

Page 126: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 111

IR al paso 2 3.X

Por otra parte, para cada uno de los n vendedores se realizará el proceso VENDEDOR, que estará compuesto de las siguientes acciones:

—Pedir el monto de las 3 ventas realizadas y el sueldo base. —Aplicar la fórmula:

total de ventas = venta 1 + venta2 + venta3

—Aplicar la fórmula: comisión = total de ventas x 0.1

—Aplicar la fórmula: total a recibir = sueldo base + comisión

—Desplegar comisión y total a recibir

El proceso X corresponderá a la acción de terminar, pues no hay acciones posteriores. Una vez terminada la serie de acciones necesarias para cada vendedor es importante verificar el

valor del contador, es decir, si el contador todavía no es mayor que n, significa que no se ha terminado de procesar a los n vendedores y será necesario incrementar el contador en uno y repetir el proceso VENDEDOR para el siguiente. En caso contrario el ciclo se habrá terminado. SALIDAS: comisión y total a recibir por cada vendedor ENTRADAS: número de vendedores, sueldo base, ventas 1, ventas2 y ventas3 de cada vendedor. DATOS ADICIONALES: La comisión de cada vendedor equivale al 10% de las ventas semanales. SOLUCIÓN: Ver algoritmo.

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

n a número de vendedores i a variable contador de vendedoressb a sueldo base vi a ventas 1 v a ventas 2 v a ventas 3 tv a total de ventas c a comisión tr a total a recibir

1 . PEDIR n 2 . i ← 1 3. SI i > n ENTONCES

IR al paso 4

Page 127: Computación metodología, lógica computa

112 PARTE II. LÓGICA COMPUTACIONAL

DE OTRA FORMA VENDEDOR i←i + 1 IR al paso 3 4. FIN

Proceso VENDEDOR:

1. PEDIR sb, v1, v2,2. tv ← v1 + v2 + v3 3. c ← tv * 0.1 4. tr ← sb + c 5. DESPLEGAR c, tr 6 FINP

Nótese que las variables que se utilizan para todos los vendedores son las mismas, y esto no ocasiona ningún problema pues al calcular comisión y total a recibir dé un vendedor, inmediatamente se despliega. Cuando se procesa lo del vendedor siguiente los datos del vendedor anterior ya no se necesitan, por lo que usar las mismas variables no afectó de ninguna manera para resolver el problema.

Paso 4. Diagrama de flujo (véanse Figs. 4.32 y 4.33):

Al igual que la solución 1 del problema anterior, requerimos en este problema de un ciclo con un número determinado de iteraciones, que necesitó a su vez de una estructura secuencial, dada por el proceso VENDEDOR.

Prueba I n←3 i← 1 Ejecuta VENDEDOR pues el valor de i no es mayor que el valor de n. sb ← 3000 v1 ← 10 000 v2 ←20 000 v3 ←17 000 tv ← 47 000 c ← 4700 tr ←7700 Imprime 4700, que es la comisión que obtuvo el vendedor, y 7700, que es lo que éste va a recibir como pago por su salario base y su comisión. Termina VENDEDOR e incrementa el valor de i en 1. i←2 Ejecuta VENDEDOR debido a que el valor de i no es mayor que el valor de n. sb ← 4000 v1 ← 45 000 v2 ← 32 000

Page 128: Computación metodología, lógica computa

Figura 4.32

Figura 4.33

CAPÍTULO 4. TIPOS DE PROBLEMAS 113

Page 129: Computación metodología, lógica computa

1 1 4 PARTE II. LÓGICA COMPUTACIONAL

v3 ← 33 000 tv← 110 000 c ← 11 000 tr ← 15 000 Imprime el valor de c y tr. Termina VENDEDOR e incrementa el valor de i en 1.ñ i← 3 Ejecuta VENDEDOR debido a que el valor de i no es mayor que el valor de n. sb ← 2500 v1 ←15 000 v2 ← 20 000 v3 ← 10 000 tv ← 45 000 c ← 4500 tr ← 7000 Imprime el valor de c y tr.

Termina VENDEDOR e incrementa el valor de i en 1. i←4 Ejecuta FIN debido a que el valor de i es mayor que el de n.

Ejercicio: Realizar al menos dos pruebas a este diagrama de flujo para verificar su funcionali-dad.

PROBLEMA 3 En una empresa se requiere calcular el salario semanal de cada uno de los n obreros que laboran en ella. El salario se obtiene de la siguiente manera:

— Si el obrero trabaja 40 horas o menos se le paga $4 por hora. —Si el obrero trabaja más de 40 horas se le paga $4 por cada una de las primeras 40 horas y $6

por cada hora extra. Paso 1. Definición del problema: Igual a la redacción del problema. Paso 2. Planeación de la solución: Debido a que en la definición del problema se plantea que son n obreros y para cada uno las acciones que se efectuarán son las mismas, se puede concluir que es necesario un ciclo con un número de iteraciones determinado, pues el número de obreros se puede pedir como dato de entrada. Por lo tanto, el ciclo que le corresponde es el siguiente:

1 . i ← 1 2. SI i > n ENTONCES

IR al paso 3 DE OTRA FORMA OBRERO

Page 130: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 115

i ← i+ 1 IR al paso 2

3. X

Por otra parte, para cada uno de los n obreros se efectuará el proceso OBRERO, el cual estará compuesto de las siguientes acciones:

—Pedir el número de horas trabajadas

—Determinar el salario del obrero utilizando la siguiente condicional: SI horas trabajadas > 40 ENTONCES

horas extras = horas trabajadas - 40 salario = 40 x 4 + horas extras x 6

DE OTRA FORMA salario = horas trabajadas x 4

—Desplegar el salario

El proceso X corresponderá a la acción de terminar, pues no hay acciones posteriores. SALIDAS: salario semanal ENTRADAS: número de obreros, horas trabajadas de cada obrero DATOS ADICIONALES:

— Si el obrero trabaja 40 horas o menos se le paga $4 por hora. —Si el obrero trabaja más de 40 horas se le paga $4 por cada una de las primeras 40 horas y $6

por cada hora extra.

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

n a numero de obrerosi a variable contador de obreros ht a horas trabajadas he a horas extras s a salario

1. PEDIR n 2. i← 1 3. SI i> n ENTONCES IR al paso 4 DE OTRA FORMA OBRERO i ← i + 1 IR al paso 3 4. FIN

Page 131: Computación metodología, lógica computa

1 1 6 PARTE II. LÓGICA COMPUTACIONAL

Proceso OBRERO:

1. PEDIR ht 2. SI ht > 40 ENTONCES

he← h t -40 s←40*4 + he*6 DE OTRA FORMA s ← ht * 4

3. DESPLEGAR s 4. FINP

Paso 4. Diagrama de flujo (Figs. 4.34 y 4.35).

Este problema requirió de una estructura selectiva simple, contenida dentro de un ciclo con un número determinado de iteraciones.

Prueba 1 n ← 4 i←1 Ejecuta OBRERO debido a que el valor de i no es mayor que el valor de n. ht←65 he←25 s←310 Imprime 310, que es el salario del primer obrero.

Termina OBRERO e incrementa el valor de i en 1. i←2

Ejecuta OBRERO, debido a que el valor de i no es mayor que el valor de n. ht←35 s← 140 Imprime 140, que es el salario del segundo obrero.

Termina OBRERO e incrementa el valor de i en 1. i←3

Ejecuta OBRERO debido a que el valor de i no es mayor que el valor de n. ht←40 s← 160 Imprime 160, que es el salario del tercer obrero. Termina OBRERO e incrementa el valor de i en 1. i←4 Ejecuta OBRERO debido a que el valor de i no es mayor que el valor de n. ht←80 he←40

Page 132: Computación metodología, lógica computa

Figura 4.34

Figura 4.35

CAPÍTULO 4. TIPOS DE PROBLEMAS 117

Page 133: Computación metodología, lógica computa

1 1 8 PARTE II. LÓGICA C0MPUTAC10NAL

S←400

Imprime 400, que es el salario del cuarto obrero.

Termina OBRERO e incrementa el valor de i en 1. i← 5

Ejecuta FIN debido a que el valor de i es mayor que el de n.

Ejercicio: Realizar al menos dos pruebas más a este diagrama de flujo para verificar su funcionalidad.

PROBLEMA 4 Determinar cuántos hombres y cuántas mujeres se encuentran en un grupo de n personas, suponiendo que los datos son extraídos alumno por alumno.

Paso 1. Definición del problema: Igual a la redacción del problema.

Paso 2. Planeación de la solución: El proceso de preguntar el sexo de una persona y categorizarlo se repetirá para cada una de las n personas, por lo que emplearemos un ciclo con un número determinado de iteraciones, pidiendo el valor de n como dato de entrada. La estructura que se deberá emplear es:

1 i← 1 2 Sli > n ENTONCES IR al paso 3 DE OTRA FORMA PERSONA i← i + 1 IR al paso 2 3 X

Por otra parte, será necesario utilizar dos variables una para hombres y otra para mujeres, que nos ayuden a realizar el conteo de las personas. Estas variables tomarán un valor inicial de cero, pues al iniciar el conteo se considera que hay cero hombres y cero mujeres. Conforme se vayan encontrando hombres la variable para contar hombres se irá incrementando de 1 en 1, y de la misma manera, conforme se vayan encontrando mujeres. Antes de iniciar el proceso PERSONA se deberá poner el valor de las variables que contarán hombres y mujeres en cero, de la siguiente manera:

—hombres = 0

— mujeres = 0

Además, para cada una de las n personas se realizará el proceso PERSONA, el cual estará compuesto por las siguientes acciones:

Page 134: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 119

—Pedir el sexo de la persona — Si el sexo es masculino se sabrá que hay un hombre más en el grupo y para llevar este conteo

haremos uso de una fórmula como la siguiente:

hombres = hombres + 1

—Si el sexo es femenino se sabrá que hay una mujer más en el grupo y para llevar este conteo haremos uso de una fórmula como la siguiente:

mujeres = mujeres + 1

El proceso X se realizará cuando se termine el conteo de todas las personas, es decir, cuando termine de ejecutarse el ciclo y estará compuesto de la acción:

—Desplegar el número de mujeres y de hombres

SALIDAS: número de hombres y mujeres ENTRADAS: número de personas, sexo de cada persona DATOS ADICIONALES: Ninguno

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

i a contador del número de ciclos s$ a sexo de la persona h a variable contador de hombres m a variable contador de mujeres n a número de ciclos

1. PEDIR n 2. h←0 3. m←0 4. i← 1 5. SI i > n ENTONCES IR al paso 6 DE OTRA FORMA PERSONA i← i + 1 IR al paso 5 6. DESPLEGAR h, m

Proceso PERSONA:

1. PEDIR s$ 2. SI s$ = "MASCULINO" ENTONCES

Page 135: Computación metodología, lógica computa

120 PARTE II. LÓGICA COMPUTACIONAL

h←h + 1 DE OTRA FORMA

m ← m + 1 3. FINP

Paso 4. Diagrama de flujo (véanse Figs. 4.36 y 4.37).

En este problema requerimos de un ciclo con un número determinado de iteraciones que a su vez requirió de una estructura selectiva simple para llegar a su solución.

Prueba 1 n ←6 i← 1 h←0 m←0

Ejecuta PERSONA, debido a que el valor de i no es mayor que 6. s$ ← "MASCULINO" h← 1 Termina PERSONA e incrementa el valor de i en 1. i← 2 Ejecuta PERSONA debido a que el valor de i no es mayor que 6. s$ ←"MASCULINO" h←2 Termina PERSONA e incrementa el valor de i en 1. i← 3 Ejecuta PERSONA debido a que el valor de i no es mayor que 6. s$ ← "FEMENINO" m ← 1 Termina PERSONA e incrementa el valor de i en 1. i←4

Ejecuta PERSONA debido a que el valor de i no es mayor que 6. s$ ← "FEMENINO" m←2 Termina PERSONA e incrementa el valor de i en 1. i← 5 Ejecuta PERSONA debido a que el valor de i no es mayor que 6. s$ ← "MASCULINO" h←3 Termina PERSONA e incrementa el valor de i en 1. i← 6

Page 136: Computación metodología, lógica computa

Figura 4.36

Figura 4.37

CAPÍTULO 4. TIPOS DE PROBLEMAS 121

Page 137: Computación metodología, lógica computa

122 PARTE II. LÓGICA COMPUTACIONAL

Ejecuta PERSONA debido a que el valor de i no es mayor que 6. s$ ← "MASCULINO" h←4 Termina PERSONA e incrementa el valor de i en 1. i←7

Ejecuta DESPLEGAR h,m debido a que i es mayor que 6, con lo cual se desplegará 4 y 2, los cuales son el número de hombres y mujeres del grupo, respectivamente.

Ejercicio: Realizar al menos dos pruebas más a este diagrama de flujo para verificar su funcionalidad.

PROBLEMA 5 El Departamento de Seguridad Pública y Tránsito del D.F., desea saber, de los n autos que entran a la ciudad de México, cuántos entran con calcomanía de cada color. Conociendo el último dígito de la placa de cada automóvil se puede determinar el color de la calcomanía utilizando la siguiente relación:

DÍGITO COLOR

1 o2 amarilla3o4 rosa 5o6 roja 7o8 verde 9oO azul

Paso 1. Definición del problema: Igual a la redacción del problema. Paso 2. Planeación de la solución: Cada auto que entre a la ciudad se clasificará según su dígito, por lo que se deberá utilizar un ciclo. Asimismo el número de iteraciones está determinado ya que se puede pedir como dato de entrada, por lo cual se utilizará un ciclo como el siguiente:

1 i ← 12 SI i > n ENTONCES IR al paso 3 DE OTRA FORMA AUTO i← i + 1 IR al paso 2 3 X

Por otra parte será necesario utilizar cinco variables, una para cada color de calcomanía, que nos ayuden al conteo de los autos de cada color. Estas variables tomarán un valor inicial de cero, pues al iniciar el conteo se considera que hay cero autos con calcomanía de cada color. Conforme se vayan

Page 138: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 123

encontrando autos con calcomanía de cada color la variable para contar las calcomanías del color encontrado se irá incrementando de 1 en 1. Así pues, antes de comenzar con el proceso AUTO se deberá inicializar el valor de las variables que contarán autos de la siguiente manera:

—amarillas = 0 —rosas = 0

—rojas= 0

—verdes = 0

—azules = 0

Por otra parte, para cada uno de los n autos se realizará el proceso AUTO, que estará compuesto de las siguientes acciones:

—Pedir el último dígito de la placa. — Si el dígito es 1 o 2, se sabrá que hay un auto más con calcomanía amarilla y para llevar este conteo

haremos uso de una fórmula como la siguiente:

amarillas = amarillas + 1

— Si el dígito es 3 o 4 se sabrá que hay un auto más con calcomanía rosa y para llevar este conteo usaremos una fórmula como la siguiente:

rosas = rosas + 1

— Si el dígito es 5 o 6 se sabrá que hay un auto más con calcomanía roja y para llevar este conteo haremos uso de una fórmula como la siguiente:

rojas = rojas + 1

— Si el dígito es 7 o 8 se sabrá que hay un auto más con calcomanía verde y para llevar este conteo haremos uso de una fórmula como la siguiente:

verdes = verdes + 1

— Si el dígito es 9 o 0 se sabrá que hay un auto más con calcomanía azul y para llevar este conteo haremos uso de una fórmula como la siguiente:

azules = azules + 1

El proceso X se realizará cuando se termine el conteo de todos los autos, es decir, cuando termine de ejecutarse el ciclo y estará compuesto de la acción: — Desplegar el número de autos con calcolmanía de cada color. SALIDAS: número de autos con calcomanía amarilla, número de autos con calcomanía rosa, número de autos con calcomanía roja, número de autos con calcomanía verde, número de autos con calcoma-nía azul. ENTRADAS: número de autos, último dígito de la placa de cada auto. DATOS ADICIONALES: Ninguno

Paso 3. Algoritmo: De ahora en adelante llamaremos:

Page 139: Computación metodología, lógica computa

124 PARTE II. LÓGICA COMPUTACIONAL

n a número de autos i a contador del número de iteraciones am a variable contador de autos con calcomanía amarilla rs a variable contador de autos con calcomanía rosa rj a variable contador de autos con calcomanía roja ve a variable contador de autos con calcomanía verde az a variable contador de autos con calcomanía azul ud a último dígito de la placa

1 PEDIR n 2 am ← 0 3 r s←0 4 rj ←0 5 ve ← 0 6 az←0 7 i ← 1 8 SI i > n ENTONCES IR al paso 9 DE OTRA FORMA AUTO

i = i + 1 IR al paso 8

9.

DESPLEGAR am, rs, rrj, ve,

, az

Proceso AUTO:

1 PEDIR ud 2 SI ud = 1 OR ud = 2 ENTONCES am ← am + 1 DE OTRA FORMA SI ud = 3 OR ud = 4 ENTONCES rs ← rs + 1 DE OTRA FORMA SI ud = 5 OR ud = 6 ENTONCES rj ← rj + 1 DE OTRA FORMA SI ud = 7 OR ud = 8 ENTONCES ve ← ve + 1 DE OTRA FORMA SI ud = 9 OR ud = 0 ENTONCES az ← az + 1 DE OTRA FORMA DESPLEGAR "Dígito erróneo" i ← i - 1

3. FINP

Paso 4. Diagrama de flujo (vánse Figs. 4.38 y 4.39).

Page 140: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 125

Page 141: Computación metodología, lógica computa

126 PARTE I I . LÓGICA COMPUTACIONAL

Nos habremos percatado de que en este problema se usó una estructura selectiva compuesta contenida en un ciclo con un número determinado de iteraciones.

Prueba 1 n← 10 i ← 1 am ← 0 rs ← 0 rj ← 0 ve ← 0 az← 0

Ejecuta AUTO debido a que el valor de i no es mayor que 10. ud←3 rs ← 1 Termina AUTO e incrementa el valor de i en 1. i ← 2

Ejecuta AUTO debido a que el valor de i no es mayor que 10. ud← 1 am ← 1 Termina AUTO e incrementa el valor de i en 1. i ←3

Ejecuta AUTO debido a que el valor de i no es mayor que 10. ud ← 4 rs ← 2 Termina AUTO e incrementa el valor de i en 1. i ← 4

Ejecuta AUTO debido a que el valor de i no es mayor que 10. ud←9 az ← 1 Termina AUTO e incrementa el valor de i en 1. i ← 5

Ejecuta AUTO debido a que el valor de i no es mayor que 10. ud←8 ve ← 1 Termina AUTO e incrementa el valor de i en 1. i ← 6

jecuta AUTO debido a que el valor de i no es mayor que 10. ud ← 4 rs ← 3 Termina AUTO e incrementa el valor de i en 1. i ← 7

Page 142: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 127

Ejecuta AUTO debido a que el valor de i no es mayor que 10. ud←0 az ← 2 Termina AUTO e incrementa el valor de i en 1. i ← 8

Ejecuta AUTO debido a que el valor de i no es mayor que 10. ud←23 Despliega "dígito erróneo" y ejecuta AUTO con el mismo valor de i, ya que éste se decrementa y luego se incrementa: i ← 7 i ← 8 d←2 am ← 2 Termina AUTO e incrementa el valor de i en 1. i ← 9

Ejecuta AUTO debido a que el valor de i no es mayor que 10. ud←3 rs ← 4 Termina AUTO e incrementa el valor de i en 1. i← 10

Ejecuta AUTO debido a que el valor de i no es mayor que 10. ud ←9 az←3 Termina AUTO e incrementa el valor de i en 1. i← 11

Ejecuta DESPLEGAR am,rs,rj,ve,az cuyos valores son 2,4,0,1,3 debido a que i es mayor que 10.

Ejercicio: Realizar al menos dos pruebas más a este diagrama de flujo para verificar su funcionalidad.

PROBLEMA 6 Obtener el promedio de calificaciones de un grupo de n alumnos.

Paso 1. Definición del problema: Igual a la redacción del problema. Paso 2. Planeación de la solución: En un grupo es fácilmente determinable el número de alumnos que lo componen, así que podemos

Page 143: Computación metodología, lógica computa

128 PARTE II. LÓGICA COMPUTACIONAL

asumir que el número de iteraciones que requeriremos para nuestro ciclo es determinable y puede ser pedido como dato de entrada.

Para poder obtener este promedio necesitamos saber la calificación de cada alumno, sumarlas y dividir esta suma entre el valor n.

Para obtener la suma de las calificaciones tendremos que usar la siguiente expresión:

suma ← suma + calificación

Lo cual significa que el valor de la variable calificación se sumará al valor de la variable suma y el resultado quedará nuevamente en la variable suma. Al paso de las iteraciones, esta expresión irá acumulando las calificaciones en la variable suma, por lo que a la variable suma se le llamará acumulador.

DEFINICIÓN. Un acumulador es una variable que suma sobre sí misma un conjunto de valores para de esta manera tener la suma de todos ellos en una sola variable.

El formato general de un acumulador es:

acumulador ← acumulador + variable

Los acumuladores son frecuentemente usados en los ciclos cuando el problema requiera ir acumulando valores obtenidos en las iteraciones.

Nótese que las expresiones:

suma ← suma + calificación

y

i ← i + i

tienen similitud en que un valor es sumado a una variable cuyo resultado quedará en la misma variable.

Sabemos que la variable i es un contador porque así lo hemos manejado para contar las iteraciones en un ciclo.

La diferencia entre un contador y un acumulador es que mientras el primero va aumentando de uno en uno, el acumulador va aumentando en una cantidad variable.

Como antes de sumar la primera calificación no se ha sumado nada, el valor inicial del acumulador suma debe ser de 0.

Volviendo al problema, una vez que obtengamos la suma de las calificaciones al terminar el ciclo aplicaremos la fórmula:

promedio = suma / n

Definamos ahora nuestros datos:

SALIDAS: promedio del grupo

Page 144: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 129

ENTRADAS: número de alumnos, calificación de cada alumno DATOS ADICIONALES: ninguno

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

c a calificación s a suma p a promedio

1. PEDIR n 2. s←0 3. i← 1 4. SI i > n ENTONCES

IR al paso 5 DE OTRA FORMA ALUMNO i← i + 1 IR al paso 4

5. p←s/n 6. DESPLEGAR p

Proceso ALUMNO:

1. Pediré 2. s ← s + c 3. FINP

Paso 4. Diagrama de flujo (véanse Figs. 4.40 y 4.41).

En este problema ocupamos un ciclo con un número determinado de iteraciones que contiene una estructura de tipo secuencial.

Efectuemos ahora una prueba a nuestro diagrama suponiendo que existe un grupo de cinco alumnos cuyas calificaciones son: 7, 5, 8, 10 y 10.

Prueba: n←5 s←0 i← 1

Ejecuta ALUMNO debido a que el valor de i no es mayor que 5. c ←7 s ←7 Termina ALUMNO e incrementa el valor de i en 1. i ← 2

Page 145: Computación metodología, lógica computa

130 PARTE 11. LÓGICA COMPUTACIONAL

Figura 4.41

I

Figura 4.40

Page 146: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 131

Ejecuta ALUMNO debido a que el valor de i no es mayor que 5. c←5 s← 12 Termina ALUMNO e incrementa el valor de i en 1.

Ejecuta ALUMNO debido a que el valor de i no es mayor que 5. c←8 s←20 Termina ALUMNO e incrementa el valor de i en 1.

Ejecuta ALUMNO debido a que el valor de i no es mayor que 5. c← 10 s←30 Termina ALUMNO e incrementa el valor de i en 1.

Ejecuta ALUMNO debido a que el valor de i no es mayor que 5. c← 10 s←40 Termina ALUMNO e incrementa el valor de i en 1.

Como i > 6 ejecuta: p← 8 y finalmente ejecuta DESPLEGAR p, por lo cual despliega el valor 8, el cual es el promedio de 7, 5, 8, 10 y 10.

En esta prueba se puede notar cómo antes del ciclo, el acumulador s tuvo que inicializarse con el valor cero, para que en cada una de las iteraciones se fueran acumulando correctamente los valores de la variable c.

Ejercicio: Realizar al menos otra prueba a este diagrama de flujo para verificar su funcionali- dad.

PROBLEMA 7 Una persona desea invertir su dinero en un banco, el cual le otorga un 2% de interés. ¿Cuál será la cantidad de dinero que esta persona tendrá al cabo de un año si la ganancia de cada mes es reinvertida? Paso 1. Definición del problema: Igual a la redacción del problema. Solución 1 Paso 2. Planeación de la solución: Este problema puede requerir del uso de un ciclo con un número determinado de iteraciones, pues el proceso de invertir, obtener una ganancia y reinvertir los intereses, se repite mes con mes durante los 12 que conforman un año.

Page 147: Computación metodología, lógica computa

132 PARTE II. LÓGICA COMPUTACIONAL

La cantidad invertida en el primer mes, más la ganancia obtenida por el interés de ese mismo mes se sumarán y constituirán la nueva cantidad invertida para el segundo mes, y así sucesivamente con los meses posteriores. Esto se expresa de la siguiente manera:

ganancia = cantidad a invertir x 0.02

y

cantidad a invertir = cantidad a invertir + ganancia

Podemos observar que la función de la variable cantidad a invertir es la de acumular la inversión con las ganancias de los 12 meses, por lo que esta variable es un acumulador. Evidentemente el valor inicial de esta variable será la cantidad a invertir en el primer mes, por lo que tendrá que ser pedido como un valor de entrada al principio.

Al final, el valor acumulado de cantidad a invertir será el resultado de invertir 12 meses una cantidad a invertir inicial. SALIDAS: cantidad a invertir final ENTRADAS: cantidad a invertir inicial DATOS ADICIONALES: Se otorga una ganancia mensual del 2% sobre el monto de la inversión.

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

i a contador de meses g a ganancia c a cantidad a invertir

1. PEDIR c 2. i← 1 3. SI i > 12 ENTONCES IR al paso 4 DE OTRA FORMA MES i← i + 1 IR al paso 2 4. DESPLEGAR c

Proceso MES:

1. g ← c * 0.02 2. c←c + g 3. FINP

Puso 4. Diagrama de flujo (véanse Figs. 4.42 y 4.43).

Page 148: Computación metodología, lógica computa

Figura 4.42

Figura 4.43

CAPÍTULO 4. TIPOS DE PROBLEMAS 133

Page 149: Computación metodología, lógica computa

134 PARTE II. LÓGICA C0MPUTAC10NAL

Nótese que mientras transcurren las 12 iteraciones el valor de la variable c que se emplea en la fórmula g ← c * 0.02 es el valor acumulado que obtuvo en la iteración anterior. Al final se imprime la cantidad a invertir en el décimo tercer mes, la cual ya no fue reinvertida, pero constituye el valor final de los 12 meses anteriores.

El problema requirió de una estructura secuencial contenida en un ciclo con un número determi-nado de iteraciones.

Ejercicio: Realizar al menos dos pruebas a este diagrama de flujo para verificar su funcionalidad.

Solución 2 Paso 2. Planeación de la solución: Las dos fórmulas:

ganancia = cantidad a invertir x 0.02

y

cantidad a invertir = cantidad a invertir + ganancia

Pueden ser sustituidas por la fórmula:

cantidad a invertir = cantidad a invertir x 1.02

por lo que el algoritmo y el diagrama de flujo de la solución anterior quedarían:

Paso 3. Algoritmo:

1. PEDIR c 2. i← 1 3. SI i > 12 ENTONCES

DESPLEGAR c IR al paso 4

DE OTRA FORMA MES i← i + 1 IR al paso 2

4. FIN

Proceso MES:

1. c←c*1.02 2. FINP

Page 150: Computación metodología, lógica computa

Paso 4. Diagrama de flujo (véase Fig. 4.44): CAPÍTULO 4. TIPOS DE PROBLEMAS 135

Page 151: Computación metodología, lógica computa

136 PARTE II. LÓGICA COMPUTACIONAL

Ejercicio: Realizar al menos dos pruebas a este diagrama de flujo para verificar su funcionali-dad.

Solución 3 Paso 2. Planeación de la solución: Basándonos en la solución anterior, veamos que es lo que va ocurriendo con la variable c:

primera iteración c ← c x 1.02 segunda iteración c ← c x 1.02

decimasegunda iteración c ← c x 1.02

Como se vio en la solución anterior, el valor que da como resultado la primera iteración es empleado en la segunda iteración para efectuar la multiplicación, y así sucesivamente con las diez iteraciones restantes. Esto lo podemos resumir de la siguiente manera:

c ← c x 1.02x1.02x...x1.02 12

12 veces

Multiplicar varias veces una cantidad por sí misma, equivale a la operación de potenciación, por lo que:

1.02x1.02x...x1.02 = 1.0212

12 veces

por lo que otra solución para este problema sería:

Paso 3. Algoritmo:

1. PEDIR c 2. c←c*1.02^12 3. DESPLEGAR c

Paso 4. Diagrama de flujo (véase Fig. 4.45).

Así, se habrá notado que una mejor planeación del problema lleva a una mejor solución. Se ha simplificado el problema de repetitivo a simplemente secuencial.

Ejercicio: Realizar al menos una prueba a este diagrama de flujo para verificar su funcionali-dad.

Page 152: Computación metodología, lógica computa

Figura 4.45

PROBLEMA 8 Calcular el promedio de edades de hombres, mujeres y de todo un grupo de n alumnos. Paso 1. Definición del problema: Igual a la redacción del problema. Paso 2. Planeación de la solución: En primer lugar debemos pedir las n edades del grupo, por lo cual emplearemos un ciclo con « iteraciones, en donde el valor de n será pedido como dato de entrada.

En cada ciclo deberemos pedir la edad y sexo de cada alumno. Para determinar los promedios pedidos emplearemos las siguientes fórmulas:

promedio de hombres = suma de edades de hombres / número de hombres

promedio de mujeres = suma de edades de mujeres / número de mujeres

promedio de grupo = (suma de edades de hombres + suma de edades de mujeres) / n

Por lo cual el problema requerirá de un acumulador de las edades de los hombres, un acumulador de las edades de las mujeres, un contador del número de hombres y un contador del número de mujeres que tiene el grupo. Acumular edades y contar alumnos de un sexo en especial quedará determinado por la condicional:

SI sexo = "MASCULINO" ENTONCES Acumular edad de la persona en acumulador de hombres Sumar uno al contador del número de hombres

DE OTRA FORMA Acumular edad de la persona en acumulador de mujeres Sumar uno al contador del número de mujeres

SALIDAS: promedio de edades de hombres,

CAPÍTULO 4. TIPOS DE PROBLEMAS 137

Page 153: Computación metodología, lógica computa

138 PARTE II. LÓGICA COMPUTACIONAL

promedio de edades de mujeres, promedio del grupo

ENTRADAS: número de alumnos, edad y sexo de cada uno de los alumnos

DATOS ADICIONALES: ninguno

Este problema es una modificación al problema resuelto 4, pero con un mayor grado de compleji-dad pues incluye, además de los dos contadores, dos acumuladores.

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

n a número de alumnosi a contador del número de e a edad del alumno s$ a sexo del alumno seh a suma de edades de hombres sem a suma de edades de mujeres nh a número de hombres nm a número de mujeres peh a promedio de edades de hombrespem a promedio de edades de mujeres Pg a promedio del grupo

1. Pedir n

2. nh ← 0 3. nm ← 0 4. seh ← 0 5. sem ← 0 6. i ← 1 7. SI i > n ENTONCES IR al paso 8 DE OTRA FORMA ALUMNO i ← i + 1 IR al paso 7 8. peh ← seh / nh 9. pem ← sem / nm 10. pg ← (seh + sem) / n

11. Desplegar peh, pem, pg Proceso ALUMNO: 1. Pedir e, s$ 2. Si s$ = "MASCULINO" ENTONCES

Page 154: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 139

nh ← nh + 1 seh ←seh + e

DE OTRA FORMA nm ← nm + 1 sem ← sem + e

3. FINP

Paso 4. Diagrama de flujo (véanse Figs. 4.46 y 4.47).

Véase que dentro del ciclo se encuentra una estructura selectiva simple, igual a la del problema resuelto 4, sólo que esta vez se usaron acumuladores.

Efectuemos ahora una prueba a nuestro diagrama suponiendo que existe un grupo de cinco alumnos.

Prueba: n←5 nh ←0 nm ← 0 seh←0 sem ← 0 i← 1

Ejecuta ALUMNO debido a que el valor de i no es mayor que 5. e← 18 s$ ← "FEMENINO"

Como s$ no es igual a "MASCULINO" ejecuta: nm ← 1 sem ← 18 i ← 2 Ejecuta ALUMNO debido a que el valor de i no es mayor que 5. e← 17 s$ ← "FEMENINO"

Como s$ no es igual a "MASCULINO" ejecuta: nm ← 2 sem ← 35 i ← 3

Ejecuta ALUMNO debido a que el valor de i no es mayor que 5. e←20 s$ ← "MASCULINO"

Page 155: Computación metodología, lógica computa

140 PARTE II. LÓGICA COMPUTACIONAL

Figura 4.46

Page 156: Computación metodología, lógica computa

Figura 4.47

Como s$ es igual a "MASCULINO" ejecuta: nh←1 seh ← 20 i ← 4

Ejecuta ALUMNO debido a que el valor de i no es mayor que 5. e← 19 s$ ← "FEMENINO"

Como s$ no es igual a "MASCULINO" ejecuta: nm ← 3 sem ← 54

i ← 5

CAPÍTULO 4. TIPOS DE PROBLEMAS 141

Page 157: Computación metodología, lógica computa

142 PARTE II. LÓCICA C0MPUTAC10NAL

Ejecuta ALUMNO debido a que el valor de i no es mayor que 5. e←24 s$ ← "MASCULINO"

Como s$ es igual a "MASCULINO" ejecuta: nh←2 seh ← 44

i ← 6

Como i > 6 ejecuta: peh ← 22 pem ← 18 pg←20

Ejercicio: A continuación se proporciona otro diagrama de flujo para solucionar este mismo problema (véanse Figs. 4.48 y 4.49). Encuentre la diferencia básica entre ambos diagramas e indique: a) cuál es más entendible y b) cuál es el más eficiente en la ejecución.

PROBLEMA 9 Una persona debe realizar un muestreo con 100 personas para determinar el promedio de peso de los niños, jóvenes, adultos y viejos que existen en su zona habitacional. Para ello, conforme encuentra a las personas introduce los datos a su computadora, la cual mediante un programa las clasifica y despliega los cuatro promedios que la .persona requiere. Se determinan las categorías con base en la siguiente tabla:

categoría edad

Paso 1. Definición del problema: Igual a la redacción del problema. Paso 2. Planeación de la solución: Requeriremos en primer lugar un ciclo que ejecute exactamente 100 iteraciones, pues se procesarán a 100 personas. En cada iteración, para cada persona debemos preguntar su edad, para clasificar. Asimismo para cada persona debemos pedir su peso y sumarlo al acumulador de pesos de su categoría. Al final del ciclo aplicaremos las siguientes fórmulas:

promedio de peso de niños = suma de pesos de niños / número de niños

promedio de peso de jóvenes = suma de pesos de jóvenes/ número de jóvenes

Niños 0 - 12Jóvenes 13 -29 Adultos 30 -59 Viejos 60 - adelante

Page 158: Computación metodología, lógica computa

Figura 4.48

CAPÍTULO 4. TIPOS DE PROBLEMAS 143

Page 159: Computación metodología, lógica computa

144 PARTE II. LÓGICA COMPUTACIONAL

promedio de peso de adultos = suma de pesos de adultos / número de adultos

promedio de peso de viejos = suma de pesos de viejos / número de viejos

Por lo cual requeriremos de cuatro acumuladores para los pesos y de cuatro contadores para el número de personas de cada categoría.

SALIDAS: promedio de peso de niños, promedio de peso de jóvenes, promedio de peso de adultos, promedio de peso de viejos. ENTRADAS: edad y peso de cada persona DATOS ADICIONALES:

Categoría Edad

Niños 0-12 Jóvenes 13-29 Adultos 30-59 Viejos 60 - adelante

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

i a contador del número de personas

e a edad de cada persona P a peso de cada persona nn a número de niños nj a número de jóvenes na a número de adultos nv a número de viejos spn a suma de pesos de niñosspj a suma de pesos de jóvenes spa a suma de pesos de adultos spv a suma de pesos de viejos ppn a promedio de pesos de niños PPJ a promedio de pesos de jóvenes ppa a promedio de pesos de adultos ppv a promedio de pesos de viejos

1. nn ←0 2. nj ← 0 3. na ← 0 4. nv ← 0 5. spn ← 0 6. Spj ← 0

Page 160: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 145

7. spa ← 0 8. spv ← 0 9. i← 1 10. SI i > 100 ENTONCES

IR al paso 11 DE OTRA FORMA PERSONA i←i + 1 IR al paso 10

11. ppn ← spn / nn 12. ppj←spj/nj 13. ppa ← spa / na 14. ppv ← spv / nv 15. DESPLEGAR ppn, ppj, ppa, ppv

Proceso PERSONA:

1. PEDIR e, p 2. Si e < = 12 ENTONCES

nn ←nn + 1 spn ← spn + p DE OTRA FORMA

Si e < = 29 ENTONCES n j ← n j + 1 spj ←spj + p DE OTRA FORMA

Si e < = 59 ENTONCES na ← na + 1 spa ← spa + p DE OTRA FORMA nv ← nv + 1 spv ← spv + p

3. FINP

Paso 4. Diagrama de flujo (véanse Figs. 4.50 y 4.51):

Para resolver este problema se empleó un ciclo con un número determinado de iteraciones que contiene, a su vez, una estructura de tipo selectivo compuesto.

A continuación se resolverá un par de problemas útiles para la solución de otros problemas más complejos.

PROBLE MA 10 Encontrar el menor valor de un conjunto de n números dados.

Paso J. Definición de problema: Igual a la redacción del problema.

Page 161: Computación metodología, lógica computa

146 PARTE I I . LÓGICA COMPUTACIONAL

Figura 4.50

Page 162: Computación metodología, lógica computa

Figura 4.51

CAPÍTULO 4. TIPOS DE PROBLEMAS 147

Page 163: Computación metodología, lógica computa

148 PARTE I I . LÓGICA COMPUTACIONAL

Paso 2. Planeación de la solución: Primero, el tener que pedir n números nos hace suponer que se deberá emplear un ciclo con n iteraciones.

Para encontrar el menor valor se deberá partir de un número de referencia, el cual será el primero de estos números. Éste deberá ser comparado con cada uno de los demás valores pedidos. Por cada vez que alguno de estos números sea menor que el número de referencia, éste deberá ser ahora la nueva referencia pues es el menor número hasta el momento. Cuando termine de ejecutarse el ciclo el último valor de referencia será el número más pequeño.

SALIDAS: número más pequeño ENTRADAS: n, número de referencia, números DATOS ADICIONALES: ninguno

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

n a número de ciclos i a contador del número de ciclos num a número r a número de referencia

1. PEDIR n, r 2. i←2 3. SI i > n ENTONCES

IR al paso 4 DE OTRA FORMA NUMERO i←i + 1 IR al paso 3

4. DESPLEGAR r

Proceso NUMERO:

1. PEDIR num 2. SI num < r ENTONCES

r ← num 3. FINP

Paso 4. Diagrama de flujo (véanse Figs. 4.52 y 4.53).

Hay que hacer notar que el contador del ciclo empezó esta vez con el valor de 2. Esto se debe a que antes del ciclo se pidió el primer número, que fue tomado como número de referencia; por lo tanto el ciclo se ejecutará n - 1 iteraciones pidiendo y comparando el resto de los n - 1 números.

Page 164: Computación metodología, lógica computa

Figura 4.52

Prueba:

Supongamos que queremos saber el menor de los siguientes números: 4, 17, -15, 8, 0

n← 5 r ← 4 i ← 2

Ejecuta NUMERO debido a que el valor de i no es mayor que 5. num ← 17

Como num no es menor que r no ejecuta acción alguna.

CAPÍTULO 4. TIPOS DE PROBLEMAS 149

Page 165: Computación metodología, lógica computa

150 PARTE II. LÓGICA COMPUTACIONAL

Figura 4.53

i←3

Ejecuta NUMERO debido a que el valor de i no es mayor que 5. num ←15 Como num es menor que r ejecuta: r ← 15 i ← 4 Ejecuta NUMERO debido a que el valor de i no es mayor que 5. num ← 8

Como num no es menor que r no ejecuta acción alguna. i←5

Ejecuta NUMERO debido a que el valor de i no es mayor que 5. num ←8

Como num no es menor que r no ejecuta acción alguna. i ← 6

Como i > 6 imprime el valor de r que es -15, que es el menor de los números dados.

Page 166: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 151

Ejercicio: Realizar al menos una prueba más a este diagrama de flujo para verificar su funcionalidad.

PROBLEMA 11 Encontrar el mayor valor de un conjunto de n números dados.

Paso 1. Definición de problema: Igual a la redacción del problema. Paso 2. Planeación de la solución: Este problema se resolverá de una manera bastante similar al anterior, sólo que esta vez, para encontrar el número mayor las comparaciones deben ser ahora buscando un número mayor que el número de referencia.

SALIDAS: número más grande ENTRADAS: n, número de referencia, números DATOS ADICIONALES: ninguno

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

n a número de ciclos i a contador del número de ciclos num a número r a número de referencia

1. PEDIR n, r 2. i←2 3. SI i > n ENTONCES

IR al paso 4 DE OTRA FORMA NUMERO i←i + 1

IR al paso 3 4. Desplegar r

Proceso NUMERO:

1. PEDIR num 2. SI num > r ENTONCES

r ← num 3. FINP

Paso 4. Diagrama de flujo (véase Fig. 4.54).

Page 167: Computación metodología, lógica computa

152 PARTE II. LÓGICA COMPUTACIONAL

Figura 4.54

Page 168: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 153

Como en el problema anterior el contador del ciclo empezó con el valor de 2 ya el primer número, que fue tomado como número de referencia, se compara con el resto de los n - 1 números.

Prueba: Lo probaremos con los mismos valores del anterior problema: 4, 17, -15, 8, 0

n ← 5 r ← 4 i ← 2 Ejecuta NUMERO debido a que el valor de i no es mayor que 5. num ← 17

Como num es mayor que r ejecuta: r ← 17 i ← 3 Ejecuta NUMERO debido a que el valor de i no es mayor que 5. num ← -15

Como num no es mayor que r no ejecuta acción alguna. i ← 4 Ejecuta NUMERO debido a que el valor de i no es mayor que 5. num ← 8

Como num no es mayor que r no ejecuta acción alguna.

i← 5

Ejecuta NUMERO debido a que el valor de i no es mayor que 5. num ← 8

Como num no es mayor que r no ejecuta acción alguna. i ← 6 Como i > 6 imprime el valor de r que es 17, que es el mayor de los números dados.

Ejercicio: Realizar al menos una prueba más a este diagrama de flujo para verificar su funcionalidad.

Page 169: Computación metodología, lógica computa

154 PARTE II. LÓGICA C0MPUTAC10NAL

Problemas propuestos

1) La presión, volumen y temperatura de una masa de aire se relacionan por la fórmula:

presión x volumen 0.37 x (temperatura + 460)

Calcular el promedio de masas de aire de los neumáticos de n vehículos que están en compostura en un servicio de alineación y balanceo. Los vehículos pueden ser motocicletas o automóviles.

2) Al cerrar un expendio de naranjas, 15 clientes que aún no han pagado recibirán un 15% de descuento si compran más de 10 kilos. Determinar cuánto pagará cada cliente y cuánto percibirá la tienda por esas compras.

3) Determinar la cantidad semanal de dinero que recibirá cada uno de los n obreros de una empresa. Se sabe que cuando las horas que trabajó un obrero exceden de 40, el resto se convierte en horas extras que se pagan al doble de una hora normal, cuando no exceden de 8; cuando 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.

4) Modificar el problema propuesto 3 para que se determine el total de dinero que la empresa tendrá que pagar por concepto de pago de salarios a los n empleados que laboran en ella.

5) En una granja se requiere saber alguna información para determinar el precio de venta por cada kilo de huevo. Es importante determinar el promedio de calidad de las n gallinas que hay en la granja. La calidad de cada gallina se obtiene según la fórmula:

peso de la gallina x altura de la gallina número de huevos que pone

Finalmente para fijar el precio del kilo de huevo, se toma como base el siguiente cuadro:

Promedio total de calidad Precio del kilo de huevo

mayor o igual que 15 1.2 x promedio de calidad mayor que 8 y menor que 15 1.00 x promedio de calidad menor o igual que 8 0.80 x promedio de calidad

6) En un centro de verificación de automóviles se desea saber el promedio de puntos contaminantes de los primeros 25 automóviles que lleguen. Asimismo se desea saber los puntos contaminantes del carro que menos contaminó y del que más contaminó.

7) En la Cámara de Diputados se levanta una encuesta con todos los integrantes con el fin de determinar qué porcentaje de los n diputados está a favor del Tratado de Libre Comercio, qué porcentaje está en contra y qué porcentaje se abstiene de opinar.

8) Un entrenador le ha propuesto a un atleta recorrer una ruta de cinco kilómetros durante 10 días, para determinar si es apto para la prueba de 5 kilómetros o debe buscar otra especialidad. Para considerarlo apto debe cumplir por lo menos una de las siguientes condiciones:

— Que en ninguna de las pruebas haga un tiempo mayor a 16 minutos. — Que al menos en una de las pruebas realice un tiempo menor a 14 minutos y medio. — Que su promedio de tiempos sea menor o igual a 15 minutos.

9) Para efectuar un muestreo que le indique porcentajes de marcas de automóviles, una persona se

masa =

calidad =

Page 170: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 155

sitúa a un lado de la carretera y clasifica los primeros 150 automóviles que pasen, según las marcas "FOR", "CHE", "VOL", "CHR", "NIS" y "OTROS".

10) Un zoólogo pretende determinar el porcentaje de animales que hay en las siguientes tres categorías de edades: de 0 a 1 año, de más de 1 año y menos de 3 y 3 o más años. El zoólogo todavía no está seguro del animal que va a estudiar. Si se decide por elefantes sólo tomará una muestra de 20 de ellos; si se decide por jirafas, tomará 15 muestras, y si son chimpancés tomará 40.

3a.2) Número indeterminado de iteraciones

Son problemas que para su solución se requiere usar un ciclo, en el que el número de iteraciones es un dato desconocido y el proceso repetitivo termina hasta que el usuario lo indica.

Problemas resueltos

PROBLEMA 1 En una tienda de descuento las personas que van a pagar el importe de su compra llegan a la caja y sacan una bolita de color, que les dirá qué descuento tendrán sobre el total de su compra. Determinar la cantidad que pagará cada cliente desde que la tienda abre hasta que cierra. Se sabe que si el color de la bolita es roja el cliente obtendrá un 40% de descuento; si es amarilla, un 25%, y si es blanca no obtendrá descuento.

Paso 1. Definición del problema: Igual a la redacción del problema. Paso 2. Planeación de la solución: En primer lugar podemos determinar que es necesario usar un ciclo, puesto que todos los clientes hacen repetidamente lo mismo: escoger una bolita y obtener un descuento. También podemos deducir que el número de clientes que se atenderán es indeterminado, pues no sabemos cuántos clientes van a entrar a la tienda a lo largo del día; por lo tanto el número de iteraciones del ciclo es indeterminado; entonces la estructura que le corresponde a este problema es:

1. CLIENTE 2. PEDIR mas$ 3. SI mas$ = "NO" ENTONCES

IR al paso 4 DE OTRA FORMA

IR al paso 1 4. FIN

El proceso CLIENTE será el conjunto de acciones que resolverá la situación para cada cliente, mientras que el ciclo repetirá el proceso CLIENTE hasta que ya no haya más clientes; por eso después de cada ejecución se encuentra la entrada de una variable alfanumérica cuyo valor deberá ser "SÍ" o "NO" y la condición que le precede llevará a ejecutar una vez más el ciclo o le dará término.

Page 171: Computación metodología, lógica computa

156 PARTE I I . LÓGICA COMPUTACIONAL

Por lo tanto, como el proceso CLIENTE resolverá la situación para uno solo de los clientes, éste tendrá que evaluar la siguiente condicional:

SI color de la bolita = "ROJA" total con descuento = total sin descuento x 0.6

DE OTRA FORMA SI color de la bolita = "ROJA"

total con descuento = total sin descuento x 0.75 DE OTRA FORMA

total con descuento = total sin descuento

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

color$ a color de la bolita tsd a total sin descuento tcd a total con descuento mas$ a variable que recibe un valor de "SÍ" o "NO"

dependiendo si hay más clientes o no

1. CLIENTE 2. PEDIR mas$ 3. SI mas$ = "NO" ENTONCES

IR al paso 4 DE OTRA FORMA

IR al paso 1

Proceso CLIENTE:

1. Pedir color$, tsd 2. SI color$ = "ROJA" ENTONCES

tcd ← tsd * 0.6 DE OTRA FORMA

SI color$ = "AMARILLA" ENTONCES tcd ← tsd * 0.75

DE OTRA FORMA tcd ← tsd

3. FINP

Paso 4. Diagrama de flujo (véanse Figs. 4.55 y 4.56).

En este diagrama podemos observar una estructura selectiva compuesta dentro de un ciclo con un número indeterminado de iteraciones.

Page 172: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 157

Page 173: Computación metodología, lógica computa

158 PARTE I I . LÓGICA COMPUTAC1ONAL

Prueba: Al llegar la primera persona del día se ejecuta el proceso P: color$ ← "AMARILLA" tsd ← 300

Como la pelotita no fue roja, la primera condición es negativa y evalúa la segunda condición. Como ésta es verdadera, se ejecuta: tcd ←225 y se imprime el resultado, que es el 25% de descuento de 300

Termina el proceso P y pide la variable mas$ para saber si continúa la ejecución del ciclo para más personas: mas$ ← "SI"

Como sí hubo mas personas regresa a ejecutar el proceso P: color$ ←"ROJA" tsd ← 200 Por lo que ejecuta la parte verdadera de la primera condicional: tcd ←120 e imprime este resultado.

mas$ ← "SI"

color$ ← "BLANCA" tsd← 150

Ejecuta la parte falsa de la segunda condicional pues la pelota no es ni roja ni amarilla:

tcd ← 150 e imprime este resultado para este comprador que no obtuvo descuento.

Supongamos ahora que ya no hay más compradores y se vaya a cerrar la tienda.

mas$ ← "NO"

Al evaluar la condición de fin de ciclo, ésta resulta verdadera y termina de ejecutarse el ciclo y el diagrama de flujo.

Ejercicio: Efectuar al menos una prueba más a este diagrama de flujo para verificar su funcionalidad.

PROBLEMA 2 En un supermercado una ama de casa pone en su carrito los artículos que va tomando de los estantes. La señora quiere asegurarse de que el cajero le cobre bien lo que ella ha comprado, por lo que cada vez que toma un artículo distinto anota su precio junto con la cantidad de artículos iguales que ha

Page 174: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 159

tomado y determina cuánto dinero gastará en ese artículo; a esto le suma lo que irá gastando en los demás artículos, hasta que decide que ya tomó todo lo que necesitaba. Ayudarle a esta señora a obtener el total de sus compras.

Paso 1. Definición del problema: Igual a la redacción del problema. Paso 2. Planeación de la solución: El hecho de ir a un supermercado sin una idea fija de lo que se va a comprar nos hace suponer que al entrar a él no sabemos el número exacto de artículos distintos que vayamos a comprar, por lo que tendremos que usar un ciclo con un número indeterminado de iteraciones, como el siguiente:

1. ARTICULO 2. PEDIR mas$ 3. SI mas$ = "NO" ENTONCES

IR al paso 4 DE OTRA FORMA

IR al paso 1 4. FIN

En cada ciclo debemos obtener un subtotal para el artículo que se acaba de comprar mediante la siguiente fórmula:

subtotal = precio del artículo x número de artículos

Este subtotal lo debemos ir sumando a un total de manera que por cada artículo distinto que se compre, se incremente este total, por lo que requeriremos del uso de un acumulador, que llamaremos total de la compra, que antes de iniciar el ciclo debe empezar con el valor cero.

SALIDAS: total de la compra ENTRADAS: precio, número de artículos para cada uno de los artículos distintos DATOS ADICIONALES: ninguno

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

p a precio de cada artículo diferente n a número de artículos sb a subtotal por artículo distinto t a total de la compra

1. t←0 2. ARTICULO 3. PEDIR mas$ 4. SI mas$ = "NO" ENTONCES

IR al paso 5

Page 175: Computación metodología, lógica computa

160 PARTE 11. LÓGICA COMPUTAC1ONAL

DE OTRA FORMA IR al paso 2

5. DESPLEGAR t

Proceso ARTICULO:

1 PEDIR p 2 sb ← p* n

3 t←t + sb 4 FINP

Paso 4. Diagrama de flujo (véanse Figs. 4.57 y 4. 58).

En este problema podremos notar que un ciclo con un número indeterminado de iteraciones, manda ejecutar una estructura secuencial.

Prueba: t←0 p← 10 n ← 4 sb←40 t ←40

mas$ ← “SI"

p ← 6

n←3 sb← 18 t ← 58

mas$ ← “SI"

p←22

n←5 sb← 110 t← 168

mas$ ← “SI"

p←6.5

n←2 sb← 13 t← 181 mas$ ← “NO”

El ciclo termina de ejecutarse e imprime 181, que es la cantidad total de dinero que la señora gastó en la compra de sus artículos.

Page 176: Computación metodología, lógica computa

Figura 4.57

Figura 4.58

CAPÍTULO 4. TIPOS DE PROBLEMAS 161

Page 177: Computación metodología, lógica computa

162 PARTE II. LÓGICA COMPUTACIONAL

Ejercicio: Efectuar al menos una prueba más a este diagrama de flujo para verificar su funcionalidad.

PROBLEMA 3 Un teatro otorga descuentos según la edad del cliente. Determinar la cantidad de dinero que el teatro deja de percibir por cada una de las categorías. Tomar en cuenta que los niños menores de 5 años no pueden entrar al teatro y que existe un precio único en los asientos. Los descuentos se hacen tomando en cuenta el siguiente cuadro:

Edad Descuentocategoría 1 5-14 35%

categoría 2 15-19 25% categoría 3 20-45 10%categoría 4 46-65 25% categoría 5 66 - adelante 35%

Paso 1. Definición del problema: Igual a la redacción del problema Paso 2. Planeación de la solución: Emplearemos un ciclo con un número indeterminado de iteraciones ya que no tenemos manera de saber cuántas personas entrarán en un teatro. Asimismo requeriremos de 5 acumuladores para saber el total de dinero por concepto de descuentos de cada categoría.

SALIDAS: total de dinero descontado en la categoría 1 total de dinero descontado en la categoría 2 total de dinero descontado en la categoría 3 total de dinero descontado en la categoría 4 total de dinero descontado en la categoría 5

ENTRADAS: precio del boleto edad de cada uno de los clientes

DATOS ADICIONALES:

Edad Descuentocategoría 1 5 -14 35%categoría 2 15-19 25% categoría 3 20-45 10% categoría 4 46-65 25% categoría 5 66 - adelante 35%

Nótese que el descuento de las categorías 1 y 5 es el mismo, así como el de las categorías 2 y 4.

Paso 3. Algoritmo: De ahora en adelante llamaremos:

Page 178: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 163

p a precio del boleto e a edad el a total de dinero descontado en la categoría 1 c2 a total de dinero descontado en la categoría 2 c3 a total de dinero descontado en la categoría 3 c4 a total de dinero descontado en la categoría 4 c5 a total de dinero descontado en la categoría 5 c a cantidad a descontar por cliente

1. PEDIR p 2. c1← 0 3. c2 ← 0 4. c3 ← 0 5. c4 ← 0 6. c5 ← 0 7. CLIENTE 8. PEDIR mas$ 9. SI mas$ = "NO" ENTONCES

IR al paso 10 DE OTRA FORMA IR al paso 7

10. DESPLEGAR c1, c2, c3, c4, c5

Proceso CLIENTE:

1. Pedir e 2. SI e >= 5 AND e <= 14 OR e >= 66 ENTONCES

c ← p * 0.65 SI e > = 5 AND e <= 14 ENTONCES c1 ← c1 + c DE OTRA FORMA

c5 ← c5 + c DE OTRA FORMA

SI e >= 15 AND e <= 19 OR e >= 46 AND e <= 65 ENTONCES c ← p * 0.75 SI e >= 15 AND e <= 19 ENTONCES c2 ← c2 + c

DE OTRA FORMA c4 ← c4 + c

DE OTRA FORMA SI e > = 20 AND e < = 45 ENTONCES c ← p * 0.9 c3 ← c3 + c DE OTRA FORMA DESPLEGAR "No pueden entrar niños menores de 5 años"

3. FINP

Page 179: Computación metodología, lógica computa

164 PARTE II. LÓGICA COMPUTAC1ONAL

Paso 4. Diagrama de flujo (véanse Figs. 4.59 y 4.60).

Obsérvese que un ciclo con un número indeterminado de iteraciones ejecuta una estructura selectiva compuesta.

Ejercicio: Efectuar al menos dos pruebas a este diagrama de flujo para verificar su funcionali-dad.

Otra forma de solucionarlo variando un poco la solución anterior es:

Paso 2. Planeación de la solución: En la solución anterior se tuvieron que emplear condiciones que preguntaban por el rango inferior y superior de las categorías, por ejemplo:

e >= 15 AND e <= 19 OR

e >= 46 AND e<= 65

Esto fue debido a que se tuvo que dejar por exclusión la parte falsa de la última condición para validar la solución contra edades que fueran inferiores a 5 años.

Sin embargo, para validar que el dato de entrada edad sea inferior a 5 años podemos hacer lo siguiente:

1. PEDIR e 2. SI e < 5 ENTONCES

DESPLEGAR "No pueden entrar niños menores de 5 años" IR al paso 1

Podrá observarse que esta última es un ciclo con un número indeterminado de iteraciones, el cual terminará de ejecutarse cuando la variable e tenga un valor mayor o igual a 5.

Esta variante del ciclo con un número indeterminado de iteraciones que conocíamos es muy usada para validar que los datos de entrada sean correctos y no tener que usar exclusión con estructuras selectivas.

El nuevo algoritmo quedaría de la siguiente manera:

Paso 3. Algoritmo:

1. PEDIR p 2. c1 ← 0 3. c2 ← 0 4. c3 ← 0 5. c4 ← 0 6. c5 ← 0 7. CLIENTE 8. PEDIR mas$

Page 180: Computación metodología, lógica computa

9. SI mas$ = "NO" ENTONCES IR al paso 10

DE OTRA FORMA IR al paso 7

Figura 4.59

CAPÍTULO 4. TIPOS DE PROBLEMAS 165

Page 181: Computación metodología, lógica computa

166 PARTE II. LÓGICA COMPUTACIONAL

Figura 4.60

Page 182: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 167

10. DESPLEGAR c1, c2, c3, c4, c5

Proceso CLIENTE:

1. Pediré 2. SI e < 5 ENTONCES

DESPLEGAR "No pueden entrar niños menores de 5 años" IR al paso 3 DE OTRA FORMA

3. SI e <= 14 OR e >=66 ENTONCES c ← p * 0.65 SI e<= 14 ENTONCES

c1 ← c1 + c DE OTRA FORMA

c5 ← c5 + c DE OTRA FORMA

SI e <= 19 OR e >= 46 ENTONCES c ←p *0.75 SI e<= 19 ENTONCES c2 ← c2 + c

DE OTRA FORMA c4 ← c4 + c

DE OTRA FORMA c ← p * 0.9 c3 ← c3 + c

4. FINP

Paso 4. Diagrama de flujo (véanse Figs. 4.61 y 4.62).

Ejercicio: Efectuar al menos dos pruebas a este diagrama de flujo para verificar su funcionali-dad.

PROBLEMA 4 Una compañía de transportes terrestres de lujo tiene dos tipos de camiones. Todos los camiones están divididos en tres secciones: de Lujo, fumar y No Fumar. Las reservaciones se hacen momentos antes de que el camión vaya a salir. Un camión puede salir cuando tenga el cupo Heno o cuando se decida que ya se esperó suficiente tiempo para llenarse. Lo que se necesita es que se haga un programa de computadora que avise cuándo un camión debe salir.

Se proporciona una tabla con el número de asientos de lujo, fumar y no fumar de los dos tipos de camiones:

tipo Lujo Fumar No fumar

1 10 16 20

2 18 20 24

Page 183: Computación metodología, lógica computa

168 PARTE II. LÓGICA COMPUTACIONAL

Figura 4.61

Page 184: Computación metodología, lógica computa

Figura 4.62

CAPÍTULO 4. TIPOS DE PROBLEMAS 169

Page 185: Computación metodología, lógica computa

170 PARTE II. LÓGICA COMPUTAC1ONAL

Paso 1. Definición del problema: Igual a la redacción del problema. Paso 2. Planeación de la solución: Antes de verificar el cupo del camión en turno debemos saber a qué tipo pertenece para así saber de cuantos asientos consta cada sección del camión. De esta manera podremos determinar posteriormen-te si ya se terminaron los asientos en alguna sección. Para esto empleamos la siguiente condicional:

SI tipo = 1 ENTONCES asientos de lujo disponibles = 10 asientos de fumar disponibles = 1 6 asientos de no fumar disponibles = 20

DE OTRA FORMA asientos de lujo disponibles = 1 8 asientos de fumar disponibles = 20 asientos de no fumar disponibles = 24

A continuación se tendrá que usar un ciclo con un número indeterminado de iteraciones. Dentro del ciclo debe pedirse la categoría del asiento y verificar si ya se ha llenado el cupo de las

categorías de asientos. Para esto emplearemos una variable tipo alfanumérica para cada sección del camión, que nos indique si la sección se ha llenado o no: si la variable toma un valor de "SI" significará que está llena la sección y si es "NO" significará que todavía hay asientos disponibles en esa sección. Esto se representa con la siguiente condicional:

SI categoría = "LUJO" ENTONCES SI llenoseccionlujo$ = "NO" ENTONCES

número de asientos de lujo ocupados = número de asientos de lujo ocupados + 1

SI número de asientos de lujo ocupados = asientos de lujo disponibles

llenoseccionlujo$ = "SI" DE OTRA FORMA

DESPLEGAR "Asientos de la sección de lujo agotados" DE OTRA FORMA

SI categoría = "FUMAR" ENTONCES SI llenoseccionfumar$ = "NO" ENTONCES

número de asientos de fumar ocupados = número de asientos de fumar ocupados + 1

SI número de asientos de fumar ocupados = asientos de fumar disponibles

llenoseccionfumarS = "SI" DE OTRA FORMA

DESPLEGAR "Asientos de la sección de fumar agotados" DE OTRA FORMA

SI llenoseccionnofumar$ = "NO" ENTONCES número de asientos de no fumar ocupados =

número de asientos de no fumar ocupados + 1

Page 186: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 171

SI número de asientos de no fumar ocupados = asientos de no fumar disponibles

llenoseccionnofumar$ = "SI" DE OTRA FORMA

DESPLEGAR "Asientos de la sección de no fumar agotados"

En donde el valor inicial que deben tener las variables llenoseccionlujo$, llenoseccionfumar$ y llenoseccionnofumar$ debe ser de "NO".

SALIDAS: Mensaje: "Ya puede salir el camión" ENTRADAS: tipo de camión

categoría por cada uno de los pasajeros DATOS ADICIONALES:

Tipo Lujo Fumar No fumar

1 10 16 20 2 18 20 24

Paso 3. Algoritmo: De ahora en adelante llamaremos:

t a tipo de camión c$ a categoría-del asiento ald a asientos de lujo disponibles afd a asientos de fumar disponibles anfd a asientos de no fumar disponibles nalo a número de asientos de lujo ocupados nafo a número de asientos de fumar ocupados nanfo a número de asientos de no fumar ocupados llenol$ a llenoseccionlujo$ llenof$ a llenoseccionfumar$ llenonf$ a llenoseccionnofumar$

1. PEDIR t 2. SI t = 1 ENTONCES

ald ←10 afd ← 16 anfd ← 20

DE OTRA FORMA ald← 18 afd ← 20 anfd ←24

3. nalo ←0 4. nafo ← 0 5. nanfo ← 0

Page 187: Computación metodología, lógica computa

172 PARTE II. LÓGICA COMPUTACIONAL

6. llenol$ ←"NO" 7. llenof$ ←"NO" 8. llenonf$ ← "NO" 9. CLIENTE 10. SI llenol = "SI" AND llenof = "SI" AND llenonf = "SI" ENTONCES

mas$ ← "NO" DE OTRA FORMA PEDIR mas$

11. SI mas$ = "NO" ENTONCES IR al paso 12

DE OTRA FORMA IR al paso 9

12. DESPLEGAR "Ya puede salir el camión"

Proceso CLIENTE:

1. PEDIR c$ 2. SI c$ = "LUJO" ENTONCES

SI Uenol$ = "NO" ENTONCES nalo ← nalo + 1

SI nalo = ald ENTONCES Uenol$ ← "SI"

DE OTRA FORMA DESPLEGAR "Asientos de la sección de lujo agotados"

DE OTRA FORMA SI c$ = "FUMAR" ENTONCES SI llenof$ = "NO" ENTONCES nafo ← nafo + 1 SI nafo = afd ENTONCES

llenof$ ← "SI" DE OTRA FORMA

DESPLEGAR "Asientos de la sección de fumar agotados" DE OTRA FORMA

SI llenonf$ = "NO" ENTONCES nanfo ← nanfo + 1

SI nanfo = anfd ENTONCES llenonf$ ← "SI"

DE OTRA FORMA DESPLEGAR "Asientos de la sección de no fumar agotados"

3. FINP

Paso 4. Diagrama de flujo (véanse Figs. 4.63 y 4.64).

En este problema podemos observar algunas variantes: el proceso principal consta de una estruc-tura selectiva simple seguida de un ciclo con un número indeterminado de iteraciones, el cual tiene

Page 188: Computación metodología, lógica computa

Figura 4.63

CAPÍTULO 4. TIPOS DE PROBLEMAS 173

Page 189: Computación metodología, lógica computa
Page 190: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 175

una manera inusual de terminar con el ciclo. A su vez este ciclo llama a una estructura selectiva compuesta.

Ejercicio: Efectuar al menos dos pruebas a este diagrama de flujo para verificar su funcionali-dad.

Las variables alfanuméricas que indican el estado de cada sección de asientos casi durante toda la ejecución del diagrama valen "NO" y no es sino hasta el momento en que se alcanza la cifra de asientos disponibles cuando vale "SI", valor usado para determinar que ya no se pueden vender más boletos en esa sección en iteraciones posteriores. A este tipo de variables que sirven como indicadores de que alguna condición se ha cumplido o no, se les llama banderas.

DEFINICIÓN: Una bandera es una variable que generalmente usa dos valores opuestos. Cuando se cumple cierta condición el valor inicial de la bandera cambia hacia el valor opuesto y este valor determinará acciones posteriores.

Problemas propuestos

1) Una persona que va de compras a la tienda "Enano, S.A.", decide llevar un control sobre lo que va comprando, para saber la cantidad de dinero que tendrá que pagar al llegar a la caja. La tienda tiene una promoción del 20% de descuento sobre aquellos artículos cuya etiqueta sea roja. Determinar la cantidad de dinero que esta persona deberá pagar.

2) Modificar el problema resuelto 4 para que imprima el total de dinero recaudado por el camión. 3) Un censador recopila ciertos datos aplicando encuestas para el último Censo Nacional de

Población y Vivienda. Desea obtener de todas las personas que alcance a encuestar en un día, qué porcentaje tiene estudios de primaria, secundaria, carrera técnica, estudios profesionales y estudios de posgrado.

4) Un inspector de la Secretaría de Desarrollo Social (SEDSO) que se dedica a verificar los puntos IMECA (índice Metropolitano de la Calidad del Aire) emitidos por las fábricas, desea saber el promedio de dichos puntos emitidos por todas las fábricas que pueda visitar en un día y el nombre y puntos IMECA de la fábrica que más haya contaminado.

5) El médico de un laboratorio de análisis clínicos desea determinar cuántas personas que visitan el laboratorio en un día determinado se encuentran con un resultado positivo para anemia. Tomando como base los resultados obtenidos en el laboratorio, el médico determina si cada persona tiene anemia o no, dependiendo de su nivel de hemoglobina en la sangre, de su edad y su sexo. Si el nivel de hemoglobina que tiene cada persona es menor que el rango que le corresponde se determina su resultado como positivo para anemia y en caso contrario como negativo. El cuadro en el que el médico se basa para obtener el resultado es el siguiente:

Edad Nivel de hemoglobina

0 - 1 mes mayor de 1 y menor o igual de 6 meses mayor de 6 y menor o igual de 12 meses mayor de 1 y menor o igual que 5 años mayor de 5 y menor o igual que 10 años

1 - 26 g%10

- 18 g%11

- 15 g11

.5 - 15 g1 .6 - 15.5 g%

Page 191: Computación metodología, lógica computa

176 PARTE II. LÓGICA COMPUTACIONAL

Edad Nivel de hemoglobina mayor de 10 y menor o igual que 15 años 13 - 15.5 g% mujeres mayores de 15 años 12 - 16 g% hombres mayores de 15 años 14 - 18 g%

6) Una escuela ha iniciado su periodo de inscripciones para el curso de computación. El sistema de inscripciones consiste en que los alumnos seleccionen el grupo en que deseen quedar inscritos y si hay lugar disponible se pueden inscribir en ese grupo. El cupo por grupo es de 15 alumnos y se ofrecen cuatro grupos distintos.

El director necesita que cuando un alumno se inscriba, el número de alumnos inscritos se incremente si hay cupo o bien que se indique si el cupo ya ha sido sobrepasado y que se dé al alumno la oportunidad de volver a seleccionar. Además el director desea saber cuántos alumnos quedaron inscritos en cada grupo al final del día.

7) Un jefe de casilla desea determinar cuántas personas de cada una de las secciones que componen su zona asisten el día de las votaciones. Las secciones son: norte, sur y centro. También desea determinar cuál es la sección con mayor número de votantes.

8) Un negocio de copias tiene un límite de producción diaria de 10 000 copias si el tipo de impresión es offset y de 50 000 si el tipo es estándar. Si hay una solicitud de un trabajo el empleado tiene que verificar que las copias pendientes hasta el momento y las copias solicitadas no excedan del límite de producción. Si el límite de producción se excediera el trabajo solicitado no podría ser aceptado. El empleado necesita llevar un buen control de las copias solicitadas hasta el momento para decidir en forma rápida si los trabajos que se soliciten en el día se deben aceptar o no.

3b) PROBLEMAS REPETITIVOS COMPUESTOS

Recordemos que los problemas repetitivos compuestos son aquellos en los que se emplean varios ciclos. Frecuentemente encontraremos problemas en donde el cuerpo de un ciclo es otro ciclo. En estos casos estaremos hablando de un ciclo interno que está anidado dentro de un ciclo externo. Podemos encontrar muchas combinaciones, dependiendo de si los ciclos tienen un número determi-nado o indeterminado de iteraciones o si existen más de dos ciclos anidados.

Problemas resueltos

PROBLEMA 1 En un supermercado un cajero captura los precios de los artículos que los clientes compran e indica a cada cliente cuál es el monto de lo que deben pagar. Al final del día le indica a su supervisor cuánto fue lo que cobró en total a todos los clientes que pasaron por su caja.

Paso 1. Definición del problema: Igual a la redacción del problema. Paso 2. Planeación de la solución: Para empezar, podemos visualizar dos ciclos: uno para obtener el total de cada cliente y otro para obtener el total de lo que el cajero cobró en todo el día.

Page 192: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 177

El ciclo para obtener el total por cliente debe obtener la cantidad de dinero por cada artículo distinto que compró el cliente para ir acumulando su total y como al llegar a la caja el cliente no sabe cuántos artículos distintos compró, emplearemos un ciclo con un número indeterminado de iteraciones que llamaremos "ciclo del cliente".

Lo que llamaremos "ciclo del cajero" deberá ir acumulando los totales de los clientes para así obtener el total del cajero. Como no podremos saber cuántos clientes pasarán por la caja se usará también un ciclo con un número indeterminado de iteraciones. El algoritmo del ciclo del cajero debe quedar de la siguiente forma:

1. total del cajero = 0 2. CLIENTE 3. total del cajero = total del cajero + total del cliente 4. PEDIR mas$ 5. SI mas$ = "NO" ENTONCES

IR al paso 6 DE OTRA FORMA

IR al paso 2 6. DESPLEGAR total del cajero

El paso 2 es la llamada a ejecución del ciclo denominado CLIENTE. Para poder saber el total del cajero necesitamos ir acumulando los totales de los clientes. Por ello

el ciclo del cajero llama a ejecución al ciclo del CLIENTE, cuyo algoritmo deberá quedar de la siguiente forma:

1. total del cliente = 0 2. ARTICULO 3. total del cliente = total del cliente + total del artículo 4. PEDIR masl$ 5. SI masl$ = "NO" ENTONCES

IR al paso 6 DE OTRA FORMA

IR al paso 2 6. DESPLEGAR total del cliente

En donde el paso 2 es la llamada a ejecución del proceso denominado ARTICULO, el cual constará de los siguientes pasos:

1. PEDIR precio, cantidad 2. total del artículo = precio x cantidad

Se definirán ahora los datos requeridos:

SALIDAS: total de cada cliente, total del cajero ENTRADAS: precio, cantidad de cada artículo DATOS ADICIONALES: ninguno

Page 193: Computación metodología, lógica computa

178 PARTE II. LÓGICA COMPUTACIONAL

Paso 3. Algoritmo: De ahora en adelante llamaremos:

p a precio de cada artículo c a cantidad de cada artículo tcaj a total del cajero tcl a total del cliente ta a total del artículo mas$ a Variable que determina el fin del ciclo del cajero. masl$ a Variable que determina el fin del ciclo del cliente. C a El proceso CLIENTE A a El proceso ARTICULO

1. tcaj←0 2. C 3. tcaj ← tcaj + tcl 4. PEDIR mas$ 5. SI mas$ = "NO" ENTONCES

IR al paso 6 DE OTRA FORMA

IR al paso 2 6. DESPLEGAR tcaj

Proceso C:

1. tcl←0 2. A 3. tcl ← tcl + ta 4. PEDIR masl$ 5. SI masl$ = "NO" ENTONCES

IR al paso 6 DE OTRA FORMA

IR al paso 2 6. DESPLEGAR tcl 7. FINP

Proceso A.

1. PEDIR p, c 2. ta ←p * c 3. FINP

Paso 4. Diagrama de flujo (véanse Figs. 4.65, 4.66 y 4.67).

Para resolver este problema se requirió de un ciclo con un número indeterminado de iteraciones, el cual tiene anidado otro ciclo del mismo tipo, que a su vez contiene un pequeño proceso secuencial.

Page 194: Computación metodología, lógica computa

Figura 4-65

Prueba: tcaj ← 0

Llega el primer cliente, ejecuta el ciclo del CLIENTE:

tcl←0

El cajero captura el primer artículo de este cliente y ejecuta el proceso ARTICULO:

p←20 c←3 ta←60

tcl ← 60

masl$← "SI"

CAPÍTULO 4. TIPOS DE PROBLEMAS 179

Page 195: Computación metodología, lógica computa

180 PARTE I I . LÓGICA COMPUTACIONAL

Figura 4.66

Figura 4-67

Page 196: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 181 p← 15 c← 1 ta← 15 tcl ← 75 masl$ ← "SI"

p←8 c←6 ta←48

tcl ← 123

mas$ ← "NO"

E imprime 123, que es el total a pagar de este cliente

tcaj ← 123

Llega otro cliente con un solo artículo y se ejecuta el ciclo del CLIENTE:

tcl←0

p← 110 c←1 ta←110

tcl← 110

masl$ ← "NO"

Imprime 110, que es el total a pagar de este cliente.

tcaj ← 233

Supongamos que llega el último cliente:

tcl ← 0

p←20 c ← 6 ta← 120

tcl ← 120

masl$ ← "SI"

Page 197: Computación metodología, lógica computa

182 PARTE 11. LÓGICA COMPUTACIONAL

p←65 c←2 ta← 130

tcl ←250

masl$ ←"NO"

Imprime 250, que es el total del cliente.

tcaj ← 483

mas$ ← "NO"

Finalmente imprime 483, que es lo que el cajero cobró a los tres clientes que pasaron por su caja.

Ejercicio: Efectuar dos pruebas a este diagrama de flujo.

PROBLEMA 2 Cinco miembros de un club contra la obesidad desean saber cuánto han bajado o subido de peso desde la última vez que se reunieron. Para esto se debe realizar un ritual de pesaje en donde cada uno se pesa en diez básculas distintas para así tener el promedio más exacto de su peso. Si existe diferencia positiva entre este promedio de peso y el peso de la última vez que se reunieron, significa que subieron de peso. Pero si la diferencia es negativa, significa que bajaron. Lo que el problema requiere es que por cada persona se imprima un letrero que diga "SUBIÓ" o "BAJO" y la cantidad de kilos que subió o bajó de peso.

Paso 1. Definición del problema: Igual a la redacción del problema Paso 2. Planeación de la solución: Para solucionar este problema será necesario utilizar dos ciclos. El primero estará compuesto por las acciones que se deben efectuar por cada uno de los cinco miembros del club, por lo que será necesario utilizar un ciclo con un número determinado de iteraciones. Este ciclo estará compuesto por las siguientes acciones:

1. contador = 1 2. SI contador >5 ENTONCES

IR al paso 3 DE OTRA FORMA

MIEMBRO contador = contador + 1 IR al paso 2

3. FIN

El segundo ciclo será el proceso MIEMBRO, el cual contiene las acciones que se realizarán por cada miembro del club. Dichas acciones estarán representadas por un ciclo con un número determi-

Page 198: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 183

nado de iteraciones, pues será necesario hacer lo mismo por cada una de las diez básculas y por una condicional para determinar si subió o bajó de peso. Las acciones que componen a este proceso son las siguientes:

1. PEDIR promedio de peso anterior 2. suma de pesos = 0 3. contador de básculas = 1 4. SI contador de básculas > 10 ENTONCES

IR al paso 5 DE OTRA FORMA

BASCULA contador de básculas = contador de básculas + 1 IR al paso 4

5. promedio actual = suma de pesos/10 6. diferencia de pesos = promedio actual - promedio de peso anterior 7. SI diferencia de pesos < 0 ENTONCES

DESPLEGAR "bajó de peso" DE OTRA FORMA

DESPLEGAR "subió de peso"

El proceso BASCULA está formado por las acciones que se llevan a cabo cuando un miembro llega a una báscula, las acciones que lo componen son las siguientes:

1. PEDIR peso 2. suma de pesos = suma de pesos + peso

Se definirán ahora los datos requeridos:

SALIDAS: el mensaje "bajó de peso " o "subió de peso" por cada miembro. ENTRADAS: promedio peso anterior de cada miembro, diez pesos distintos por cada miembro. DATOS ADICIONALES: Un miembro bajó de peso si la diferencia entre el peso anterior y el promedio de pesos en las diez básculas es negativo, en caso contrario subió de peso.

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

c a contador de miembros M a proceso MIEMBRO pant a promedio de peso anterior sp a suma de pesos cb a contador de básculas pa a promedio de peso actual dif a diferencia de pesos B a proceso BASCULA pe a peso por báscula

Page 199: Computación metodología, lógica computa

184 PARTE II. LÓGICA COMPUTACIONAL

1. c← 12. SI c> 5 ENTONCES IR al paso 3 DE OTRA FORMA M c ← c + 1 IR al paso 2 3. FIN

Proceso M:

1. PEDIR pant

2 sp ←0 3. cb← 1 4. SI cb> 10 ENTONCES IR al paso 5 DE OTRA FORMA B cb ← cb + 1 IR al paso 4 5. pa ←sp/10 6. dif 4- pa - pant 7. SI dif < 0 ENTONCES DESPLEGAR "bajó de peso" DE OTRA FORMA DESPLEGAR "subió de peso"8. FINP

Proceso B:

1. PEDIR pe

2. sp ← sp + pe3. FINP

Paso 4. Diagrama de flujo (véanse Figs. 4.68, 4.69 y 4.70).

En este problema se empleó un ciclo con un número determinado de iteraciones, el cual contiene a su vez un ciclo del mismo tipo seguido de una estructura selectiva simple. El ciclo interno ejecuta un proceso secuencial.

Prueba: c← 1

Llega el primer miembro, ejecuta el ciclo M

pant← 120 sp←0

Page 200: Computación metodología, lógica computa

Figura 4-68

cb← 1

El primer miembro se pesa la primera vez; se ejecuta el proceso B. pe← 115 sp← 115 cb←2 El primer miembro se pesa la segunda vez; se ejecuta el proceso B. pe← 114 sp ← 229 cb←3

El primer miembro se pesa la tercera vez; se ejecuta el proceso B. pe← 116 s p ← 345 cb←4 El primer miembro se pesa la cuarta vez; se ejecuta el proceso B. pe← 117 sp ← 462 cb←5

CAPÍTULO 4. TIPOS DE PROBLEMAS 185

Page 201: Computación metodología, lógica computa

186 PARTE II. LÓGICA COMPUTACIONAL

Figura 4-69

El primer miembro se pesa la quinta vez; se ejecuta el proceso B. pe ← 114 sp ← 576 cb ← 6

Page 202: Computación metodología, lógica computa

Figura 4.70

El primer miembro se pesa la sexta vez; se ejecuta el proceso B. pe← 115 sp ← 691 cb←7 El primer miembro se pesa la séptima vez; se ejecuta el proceso B. pe← 116 sp ←807 cb←8

El primer miembro se pesa la octava vez; se ejecuta el proceso B. pe← 115 sp ← 922 cb←9 El primer miembro se pesa la novena vez; se ejecuta el proceso B. pe ← 114 sp ← 1036 cb← 10

El primer miembro se pesa la décima vez; se ejecuta el proceso B. pe← 116 sp← 1152 cb← 11 Debido a que la variable cb, contador de básculas, se excede de 10, el ciclo B termina.

pa← 115.2 dif←-4.8

CAPÍTULO 4. TIPOS DE PROBLEMAS 187

Page 203: Computación metodología, lógica computa

188 PARTE II. LÓGICA COMPUTACIONAL

Como la diferencia de pesos es negativa se despliega: "bajó de peso" c←2 Llega el segundo miembro; ejecuta el ciclo M pant ← 100 sp ← 0 cb← 1

El segundo miembro se pesa la primera vez; se ejecuta el proceso B. pe ←98 sp←98 cb←2

El segundo miembro se pesa la segunda vez; se ejecuta el proceso B. pe ←97 sp ← 195 cb←3

El segundo miembro se pesa la tercera vez; se ejecuta el proceso B. pe ←98 sp ← 293 cb ← 4 El segundo miembro se pesa la cuarta vez; se ejecuta el proceso B. pe ←97.5 sp ← 390.5 cb←5

El segundo miembro se pesa la quinta vez; se ejecuta el proceso B. pe ←98.1 sp ←488.6 cb←6 El segundo miembro se pesa la sexta vez; se ejecuta el proceso B. pe ←97.7 sp ← 586.3 cb←7

El segundo miembro se pesa la séptima vez; se ejecuta el proceso B. pe ←98 sp ←684.3 cb←8 El segundo miembro se pesa la octava vez; se ejecuta el proceso B. pe ←97

Page 204: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 189

sp←781.3 cb←9

El segundo miembro se pesa la novena vez; se ejecuta el proceso B. pe ← 97.6 sp ← 878.9 cb ← 10

El segundo miembro se pesa la décima vez; se ejecuta el proceso B. pe ← 97.4 sp ← 976.3 cb← 11

Como la variable cb, contador de básculas, se excede de 10, el ciclo B termina. pa ← 97.63 dif←-2.37

Como la diferencia de pesos es negativa se despliega: "bajó de peso" Ejercicio: Efectuar las

pruebas correspondientes a los miembros 3,4 y 5 del club de obesidad.

PROBLEMA 3 Simular el comportamiento de un reloj digital imprimiendo la hora, minuto y segundo en cada segundo de un día desde las 0:00:00 horas hasta las 23:59:59 horas.

Paso 1: Definición del problema: Igual a la redacción del problema.

Paso 2: Planeación de la solución: En la solución de este problema deberán emplearse tres ciclos: uno para contar las horas, otro para contar los minutos y otro más para los segundos.

El ciclo de horas va desde la hora 0 hasta la hora 23. Además, cada hora contiene minutos, por lo que el ciclo de horas es el siguiente:

1. hora = 0 2. MINUTOS 3. hora = hora + 1 4. SI hora > 23 ENTONCES

IR al paso 5 DE OTRA FORMA

IR al paso 2 5. FIN.

Page 205: Computación metodología, lógica computa

190 PARTE 11. LÓGICA COMPUTACIONAL

De manera similar los minutos empiezan a correr a partir del minuto 0 y terminan en el 59 y cada minuto tiene segundos:

1 minuto = 02 SEGUNDOS 3 minuto = minuto + 1 4 SI minuto > 59 ENTONCES IR al paso 5 DE OTRA FORMA IR al paso 1 5 FINP

Finalmente los segundos también van de 0 a 59 y en cada segundo debe desplegarse la hora, minuto y segundo actual:

1. segundo = 0 2. DISPLAY 3. segundo = segundo + 1 4. SI segundo > 59 ENTONCES

IR al paso 5 DE OTRA FORMA

IR al paso 2 5. FIN El proceso DISPLAY constará de la acción:

1. DESPLEGAR hora, minuto, segundo

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

h a contador de horasm a contador de minutoss a contador de M a proceso MINUTOSS a proceso SEGUNDOSD a proceso DISPLAY

1. h←0

2. M 3. h← h +1 4. SI h > 23 ENTONCES IR al paso 5 DE OTRA FORMA IR al paso 2 5. FIN

Page 206: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 191

Proceso M: 1. m←0 2. S 3. m←m + 1 4. SI m > 59 ENTONCES

IR al paso 5 DE OTRA FORMA

IR al paso 2 5. FINP

Proceso S:

1. s←0 2. D 3. s←s + 1 4. SI s > 59 ENTONCES

IR al paso 5 DE OTRA FORMA

IR al paso 2 5. FINP

Proceso D:

1. DESPLEGAR h, m, s 2. FINP

Paso 4: Diagrama de flujo (véanse Figs. 4.71, 4.72 y 4.73).

En este diagrama de flujo podemos observar claramente cómo un ciclo con un número determinado de iteraciones manda a ejecutar otro ciclo con un número determinado de iteraciones, que a su vez llama a ejecución otro ciclo del mismo tipo.

Prueba: Debido a lo largo de la prueba ésta es abreviada.

h←0 m←0 s←0

Imprime 0, 0, 0, correspondiente a las 0:00:00 h.

h←0 m←0

Imprime 0, 0, 0, correspondiente a las 0:00:01 h.

Page 207: Computación metodología, lógica computa

192 PARTE I I . LÓGICA COMPUTACIONAL

Figura 4.71

Figura 4.72

Page 208: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 193

Figura 4.73

h←0 m←0 s←59

Imprime 0, 0, 59, correspondiente a las 0:00:59 h.

h←0 m←1 s←0

Imprime 0, 1,0, correspondiente a las 0:01:00 h.

. . . h←0 m←59

s←59

Imprime 0, 59, 59, correspondiente a las 0:59:59 h.

h← 1 .

Page 209: Computación metodología, lógica computa

194 PARTE I I . LÓGICA COMPUTACIONAL

m←0 s←0

Imprime 1, 0, 0, correspondiente a las 1:00:00 h. . . . h←23 m←59 s←59

Imprime 23, 59, 59, correspondiente a las 23:59:59 h.

h←23 m←59 s←59

Imprime 23, 59, 59, correspondiente a las 23:59:59 h.

h←2 3 m←59 s←60

y se cumple la condición de término del ciclo S, por lo que regresa al ciclo M:

h←23 m←60 s←60

con lo que también se cumple la condición de término del ciclo M, por lo que regresa al diagrama principal:

h←24 m←60 s← 60

y también se cumple la condición de término del ciclo de las horas y se llega al fin del diagrama de flujo.

PROBLEMA 4 Se desea obtener el promedio de g grupos que están en un mismo año escolar: siendo que cada grupo puede tener n alumnos que cada alumno puede llevar m materias y que en todas las materias se promedian tres calificaciones para obtener el promedio de la materia. Lo que se desea desplegar es el promedio de los grupos, el promedio de cada grupo y el promedio de cada alumno. Paso 1: Definición del problema: Igual a la redacción del problema.

Page 210: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 195

Paso 2: Planeación de la solución: La solución de este problema estará compuesta por 3 ciclos anidados.

El primer ciclo representará a las acciones que se han de realizar para cada uno de los g grupos, por lo que será necesario utilizar un ciclo con un número determinado de iteraciones. Las acciones que lo componen son las siguientes:

1. PEDIR número de grupos 2. suma de promedios de grupos = 0 3. contador de grupos = 1 4. SI contador de grupos > número de grupos ENTONCES

IR al paso 5 DE OTRA FORMA GRUPO

contador de grupos = contador de grupos +1' IR al paso 4

5. promedio de todos los grupos = suma de promedios de grupos / número de grupos

6. DESPLEGAR promedio de todos los grupos

El segundo ciclo será el proceso GRUPO y estará compuesto por las acciones que se habrán de realizar por cada grupo, lo que significa que será un ciclo que se repetirá tantas veces como alumnos haya en cada grupo, por lo que será necesario utilizar un ciclo con determinado número de iteraciones y las acciones que lo componen son las siguientes:

1. PEDIR número de alumnos 2. suma de grupo = 0 3. contador de alumnos = 1 4. Si contador de alumnos > número de alumnos ENTONCES

IR al paso 5 DE OTRA FORMA

ALUMNO contador de alumnos = contador de alumnos + 1 IR al paso 4

5. promedio del grupo = suma de grupo / número de alumnos

6. DESPLEGAR promedio del grupo 7. suma de promedios de grupos =

suma de promedios de grupos + promedio del grupo

El paso 7 implica el hecho de acumular el último promedio de grupo obtenido a los obtenidos anteriormente. Es muy importante que esta acción se realice cada vez que se ha terminado con un grupo: es por eso que el lugar correcto de ésta es después de que se ha terminado con el ciclo de un grupo y no se ha comenzado con otro.

El tercer ciclo será el proceso ALUMNO y estará compuesto por las acciones que sea necesario realizar por cada alumno de un grupo, por lo que el ciclo será con determinado número de iteraciones

Page 211: Computación metodología, lógica computa

196 PARTE II. LÓGICA COMPUTACIONAL

ya que el número de alumnos es determinable. Las acciones que componen a este ciclo son las siguientes:

1. PEDIR número de materias 2. suma de calificaciones del alumno = 0 3. contador de materias = 1 4. SI contador de materias > número de materias ENTONCES

IR al paso 5 DE OTRA FORMA

MATERIA contador de materias = contador de materias + 1 IR al paso 4

5. promedio del alumno = suma de calificaciones del alumno / número de materias

6. DESPLEGAR promedio del alumno 7. suma de grupo = suma de grupo + promedio del alumno

El proceso MATERIA se realizará una vez por cada materia que curse el alumno, las acciones que lo componen son las siguientes:

1. PEDIR calificación 1, calificación2, calificación3 2. promedio de materia = ( calificación 1 + calificación2 + calificación3) / 3 3. suma de calificaciones del alumno =

suma de calificaciones del alumno + promedio de materia

SALIDAS: promedio de grupos, promedio por grupo, promedio del alumno ENTRADAS: número de todos los grupos, número de alumnos por cada grupo, número de materias por cada alumno, calificación 1, calificación 2, calificación 3 de cada materia de cada alumno. DATOS ADICIONALES: ninguno

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

g a número de grupos stg a suma de promedios de grupos ptg a promedio de todos los grupos cg a contador de grupos G a proceso por GRUPO na a número de alumnos por grupo sg a suma de grupo ca a contador de alumnos A a proceso por ALUMNO pg a promedio del grupo nm a número de materias

Page 212: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 197

cm a contador de materias sa a suma de calificaciones del alumno pa a promedio del alumno el a calificación 1 de alguna materia de algún alumno de algún grupo. c2 a calificación 2 de alguna materia de algún alumno de algún grupo. c3 a calificación 3 de alguna materia de algún alumno de algún grupo. pm a promedio de materia

1. PEDIR g 2. stg ←0 3. cg ← 1 4. SI cg > g ENTONCES

IR al paso 5 DE OTRA FORMA G

cg ← cg + 1 IR al paso 4

5. ptg ← stg / g 6. DESPLEGAR ptg

Proceso G: 1. PEDIR na 2. sg ← 0 3. ca ← 1 4. SI ca > na ENTONCES

IR al paso 5 DE OTRA FORMA A

ca ←ca + 1 IR al paso 4

5. pg←sg/na 6. DESPLEGAR pg 7. stg ← stg + pg 8. FINP

Proceso A: 1. PEDIR nm 2. sa ← 0 3. cm ←1 4. SI cm > nm ENTONCES

IR al paso 5 DE OTRA FORMA M

cm ←cm 4- 1 IR al paso 4

5. pa ←sa / nm

Page 213: Computación metodología, lógica computa

198 PARTE II. LÓGICA COMPUTACIONAL

6. DESPLEGAR pa 7. sg ← sg + pa 8. FINP

Proceso M: 1. PEDIR c1,c2,c3 2. pm ←( c1+ c2 + c3) / 3 3. sa ← sa + pm 4. FINP

Paso 4. Diagrama de flujo (véanse Figs. 4.74 a 4.77):

En este problema empleamos un ciclo con un número determinado de iteraciones triplemente anidado en ciclos del mismo tipo. El ciclo más interno ejecuta un proceso secuencial.

Prueba:

g←1 stg←0 cg←1

Ejecuta el ciclo G para el primer grupo. na←2 sg←0 ca←1 Ejecuta el ciclo A para el primer alumno del primer grupo. nm ←2 sa ←0 cm ← 1 Ejecuta el ciclo M para la primera materia del primer alumno del primer grupo. c 1←9 c2←7 c3←8 pm ←8 sa←8 cm ←2

Ejecuta el ciclo M para la segunda materia del primer alumno del primer grupo. c l←8 c2←9 c3←8 pm ← 8.33 sa ← 16.33 cm ← 3 Termina el ciclo M para el primer alumno del primer grupo. pa←8.165

Page 214: Computación metodología, lógica computa

Figura 4.74

CAPÍTULO 4. TIPOS DE PROBLEMAS 199

Page 215: Computación metodología, lógica computa

200 PARTE II. LÓGICA COMPUTACIONAL

Figura 4.75

Despliega el promedio del primer alumno del primer grupo 8.165

sg← 8.165 ca ← 2

Ejecuta el ciclo A para el segundo alumno del primer grupo.

Page 216: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 201

Figura 4.77

Figura 4.76

nm ←2 sa ←0 cm ← 1

Ejecuta el ciclo M para la primera materia del segundo alumno del primer grupo. c1 ←7

Page 217: Computación metodología, lógica computa

202 PARTE II. LÓGICA COMPUTACIONAL

c2←6 c3←9 pm ← 7.33 sa ←7.33 cm←2

Ejecuta el ciclo M para la segunda materia del segundo alumno del primer grupo. cl←8 c2←9 c3←7 pm ← 8 sa ← 15.33 cm ← 3

Termina el ciclo M para el segundo alumno del primer grupo. pa ← 7.66 Despliega el promedio del segundo alumno del primer grupo 7.66

sg← 15.82 ca ←3 Termina el ciclo A para el primer grupo. pg←7.91

Despliega el promedio del primer grupo 7.91 stg ← 7.91 cg←2

Ejecuta el ciclo G para el segundo grupo. na ← 2 sg←0 ca ←1 Ejecuta el ciclo A para el primer alumno del segundo grupo. nm ←2 sa←0 cm ←1

Ejecuta el ciclo M para la primera materia del primer alumno del segundo grupo. c1 ← 10 c2←9 c3← 10 pm ←9.66 sa ← 9.66 cm ←2

Page 218: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 203

Ejecuta el ciclo M para la segunda materia del primer alumno del segundo grupo. c l←9 c2← 10 c3← 10 pm ← 9.66 sa ← 19.32 cm ←3

Termina el ciclo M para el primer alumno del segundo grupo. pa ← 9.66 Despliega el promedio del primer alumno del segundo grupo 9.66 sg ←9.66 ca ← 2 Ejecuta el ciclo A para el segundo alumno del segundo grupo. nm ← 2 sa ←0 cm ←1

Ejecuta el ciclo M para la primera materia del segundo alumno del segundo grupo. cl ←7 c2←6 c 3←5 pm ←6 sa ←6 cm ←2

Ejecuta el ciclo M para la segunda materia del segundo alumno del segundo grupo. el←10 c2← 10 c3←10 pm ←10 sa ←16 cm ← 3

Termina el ciclo M para el segundo alumno del segundo grupo. pa ←8 Despliega el promedio del segundo alumno del segundo grupo, 8. sg← 17.66 ca ←3

Termina el ciclo A para el segundo grupo.

Page 219: Computación metodología, lógica computa

204 PARTE II. LÓGICA COMPUTACIONAL

pg ← 8.83

Despliega el promedio del primer grupo, 8.83 stg ← 16.74 cg←3

Termina el ciclo G.

ptg ← 8.37

Despliega el promedio de todos los grupos, 8.37

Ejercicio: Efectuar una prueba más a este diagrama de flujo.

Problemas propuestos

1. Simular el comportamiento de un calendario, desplegando día, mes y año de un año completo no bisiesto.

2. Modificar el problema resuelto 3 de tal manera que antes de funcionar el reloj se le pueda dar una hora exacta en la que se active una alarma que despliegue el siguiente letrero: "RING, RING".

3. Modificar el problema resuelto 3 para que se pueda determinar la hora exacta en que debe comenzar el reloj.

4. Un atleta se ha propuesto recorrer una misma ruta durante un año, corriendo 6 días a la semana, para así saber su promedio por semana, por mes y por todo el año.

5. A lo largo del día un cajero procesa a las personas que llegan a efectuar movimientos bancarios. Estos movimientos deben ser esencialmente cargos o abonos. Determinar la cantidad total de dinero obtenida por concepto de cargos y abonos en todo el día, así como un balance que indique si hubo más cargos que abonos o viceversa y la diferencia absoluta.

6. Llevar el control de un tablero que registra los puntos de set de un partido de tenis de 5 sets sin muerte súbita, es decir, que gana el set aquel que llegue a 6 puntos o más con dos puntos de ventaja sobre el adversario. Lo que debe imprimir es un mensaje con el nombre del jugador que gana cada set y el nombre del ganador del partido.

Page 220: Computación metodología, lógica computa

CAPÍTULO 4. TIPOS DE PROBLEMAS 205

RESUMEN

Los tipos de problemas que podemos encontrar se clasifican, según su estructura, de la siguiente manera:

1) Secuenciales: son problemas en los que para su solución se emplean una serie de acciones, las cuales se ejecutan invariablemente en un orden secuencial.

2) Selectivos: las soluciones de este tipo de problemas son una serie de acciones en las que la ejecución de algunas de ellas dependerá de que se cumplan una o varias condiciones.

a) Simples: son aquellos que están compuestos únicamente de una condición. b) Compuestos: son aquellos que para solucionarlos se necesita establecer más de una condi-

ción. 3) Repetitivos: se les llama problemas repetitivos a aquellos en cuya solución es necesario utilizar

un mismo conjunto de acciones que puedan ejecutarse más de una vez. a) Simples: son aquellos en los que se usa un solo ciclo. Se clasifican a su vez en:

1) Con un número determinado de iteraciones: son problemas en que para su solución se requiere usar un solo ciclo en el que su número de iteraciones es un dato conocido, el cual se puede obtener, o bien de la definición del problema o bien como dato de entrada.

2) Con un número indeterminado de iteraciones: son problemas que para su solución se requiere usar un ciclo, en el que el número de iteraciones es un dato desconocido y el proceso repetitivo termina hasta que el usuario lo indica.

b) Compuestos: son aquellos en los que se usan varios ciclos

Conceptos relacionados con problemas repetitivos:

—Ciclo: es la ejecución de un mismo conjunto de acciones una o más veces. Se compone de cuerpo del ciclo y estructura cíclica. —Proceso: conjunto de acciones a las cuales se les asigna un nombre. — Cuerpo del ciclo: proceso que se ejecutará una o más veces. —Estructura cíclica: conjunto de acciones que permiten que el cuerpo del ciclo se ejecute una o más veces. —Iteración: es cada una de las ejecuciones del cuerpo del ciclo. — Contador: es la variable que nos ayuda a contar el número de iteraciones en un ciclo. —Acumulador: es una variable que suma sobre sí misma un conjunto de valores para de esta manera tener la suma de todos ellos en una sola variable. —Bandera: es una variable que generalmente usa dos valores opuestos. Cuando se cumple cierta condición el valor inicial de la bandera cambia hacia el valor opuesto y este valor determinará acciones posteriores.

Page 221: Computación metodología, lógica computa
Page 222: Computación metodología, lógica computa

PARTE

III

PROGRAMACIÓN

Page 223: Computación metodología, lógica computa
Page 224: Computación metodología, lógica computa

CAPÍTULO

5

ELEMENTOS DEL LENGUAJE

OBJETIVOS

5.1 El alumno describirá los tipos de datos que usa el lenguaje Basic. 5.2 El alumno explicará el manejo de los datos que usa el lenguaje Basic.

— Constantes, variables y palabras reservadas — Reglas de asignación — Operadores y jerarquía

a) Asociativos b) Aritméticos c) Relaciónales d) Lógicos

— Identificadores a) El alumno definirá qué es un identificador b) El alumno explicará las reglas para el uso de los identificadores

209

Page 225: Computación metodología, lógica computa

CAPÍTULO

5

ELEMENTOS DEL LENGUAJE

INTRODUCCIÓN

Dentro del marco de la metodología para la solución de problemas por medio de la computadora hemos trabajado hasta ahora con los cuatro primeros pasos. Con esto hemos aprendido la lógica computacional necesaria para poder hacer programas de computadora. Hasta cierto punto hemos aprendido lo más difícil; sin embargo, aún nos resta aprender las instrucciones del lenguaje Basic para poder empezar a hacer nuestros primeros programas.

Para el paso 5 de la metodología que, como se recordará, es la codificación, tiene como requisito aprender los conceptos básicos del lenguaje Basic. Así como aprendimos a traducir un algoritmo en diagrama de flujo, ahora aprenderemos a traducir ambos en programa. De hecho, retomaremos los problemas resueltos a lo largo del libro para trabajar con los últimos pasos de la metodología. Una vez dominando esto podremos ver otras instrucciones más complejas, propias de Basic.

El Basic es un lenguaje computacional de alto nivel, fácil de aprender, que vio la luz en 1964, creado por los estadunidenses G. Kemeny y Thomas E. Kurtz. A partir de entonces se han creado muchas versiones tanto en compilador como en intérprete. Para este libro emplearemos la versión denominada Quick Basic, que es un compilador, y viene proporcionado junto con el sistema operativo MS-DOS/OS-DOS a partir de la versión 5.0

Aunque algunos de los elementos básicos del lenguaje Basic fueron ya vistos al principio de la parte 2 del libro, los resumiremos a continuación.

1) TIPOS DE DATOS

A) Numéricos Son datos cuyo contenido es una serie de dígitos (0-9) que en conjunto nos proporcionan un valor numérico, ya sea entero o real, y que pueden ser precedidos por un signo de + (positivo) o -

210

Page 226: Computación metodología, lógica computa

CAPÍTULO 5. ELEMENTOS DEL LENGUAJE 211

(negativo). Cuando se omite el uso del signo el dato se asume como positivo. Existen varios tipos de datos numéricos. Para efectos de este libro emplearemos los números de simple precisión, con los cuales hemos venido trabajando hasta el momento.

Con los datos numéricos se pueden realizar operaciones aritméticas o de conteo. Ejemplos: 1519.17 -32.5 1 0

B) Alfanuméricos Son datos cuyo contenido son letras del abecedario, números o caracteres especiales, o bien una combinación de ellos. Aunque los datos alfanuméricos pueden contener números, éstos no pueden ser usados para realizar operaciones aritméticas. Entre los caracteres especiales podemos encontrar: #,$,&,%,/, ", !, ?, ¡, =, -, +, X, (,), {, }, etcétera. Cuando se hace referencia a este tipo de datos se deben encerrar entre dobles comillas. Ejemplos: "Morelos Ote, # 23-7" "Benito Juárez" "16-45-19" "02/05/92" "Carlos Salinas de Gortari"

2) ZONAS DE MEMORIA

Los datos, sean numéricos o alfanuméricos, se alojan en zonas de memoria para poder utilizarlos posteriormente.

Estas zonas de memoria están formadas por un nombre o identifícador y un contenido, que será el dato que se guarda en ellas. Por ejemplo, si el contenido es 15 y el nombre de la variable es EDAD, significa que hay una zona de memoria que se llama EDAD cuyo valor es 15.

Los identificadores de estas zonas de memoria se forman respetando las siguientes reglas. 1) El primer carácter debe ser una letra. 2) Los demás caracteres podrán ser letras, números o guiones, siempre y cuando las letras no

estén acentuadas. 3) Si el tipo de dato que guarda (contenido) es alfanumérico, el nombre deberá llevar al final el

signo $.

Ejemplos:

NOMBRE CONTENIDO

salario 4000 nombre$ "William Shakespeare" dirección$ "Cuauhtémoc # 115, Col. Narvarte" inscripción 500

Page 227: Computación metodología, lógica computa

212 PARTE III. PROGRAMACIÓN

NOTA: Obsérvese que en las zonas de memoria nombre$ y dirección$ se incluye el signo $; en el nombre de la zona y el contenido se encierra entre dobles comillas; esto es debido a que el contenido es un dato alfanumérico.

Las zonas de memoria se pueden clasificar en:

A) Constantes B) Variables

A) Constantes Son zonas de memoria que guardan datos, los cuales no cambian durante toda la fase de procesamiento de información.

B) Variables Son zonas de memoria cuyo contenido cambia durante la fase de procesamiento de información.

3. EXPRESIONES

a) Definición Conjunto de operadores y operandos que producen un valor.

b) Elementos de una expresión Una expresión está compuesta por operadores y operandos. Un operador es un símbolo o palabra que significa que se ha de realizar cierta acción entre uno o dos valores llamados operandos.

De modo general, una expresión se escribe en cualquiera de las formas siguientes,

operando 1 OPERADOR operando2

OPERADOR operando 1

4. TIPOS DE OPERADORES

Existen cuatro tipos de operadores:

A) Asociativos B) Aritméticos C) Relaciónales D) Lógicos

Dependiendo del tipo de operadores que se usen en una expresión, ésta se convertirá en aritmética, lógica o relacional.

Page 228: Computación metodología, lógica computa

CAPÍTULO 5. ELEMENTOS DEL LENGUAJE 213

A) Asociativos El único operador asociativo es el paréntesis (), el cual permite indicar en qué orden deben llevarse a cabo las operaciones.

Cuando una expresión se encuentra entre paréntesis, indica que las operaciones que se encuen-tran dentro de ellos deben realizarse primero. Si en una expresión se utilizan más de un paréntesis se deberá proceder primero con los que se encuentren más hacia el centro de la expresión.

B) 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 contienen operadores aritméticos, se respeta una jerarquía en el orden en el 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 que la otra. La siguiente tabla muestra los operadores aritméticos ordenados de mayor a menor jerarquía.

OPERADOR OPERACIÓN

- Negación ^ Potenciación x, / Multiplicación, División +, - Suma, Resta

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 siguiendo estas mismas reglas.

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.

C) Relaciónales Son operadores que permiten comparar dos valores sean numéricos o alfanuméricos. El resultado que se obtiene es un valor de verdad que puede ser V(verdadero) o F(falso). La comparación entre un dato numérico y uno alfanumérico no puede llevarse a cabo. Los operadores relaciónales son los siguientes:

OPERADOR OPERACIÓN

= ' Igual que <> o >< Diferente que < Menor que > Mayor que < = Menor o igual que > = Mayor o igual que

D) Lógicos Son operadores que permiten realizar las operaciones lógicas de conjunción, disyunción y nega-ción. El resultado que se obtiene 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.

Page 229: Computación metodología, lógica computa

214 PARTE I I I . PROGRAMACIÓN

OPERADOR OPERACIÓN

NOT Negación AND Conjunción OR Disyunción

Recordemos 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. Las reglas para resolver las expresiones lógicas son las siguientes:

1) Se resuelven primero los paréntesis. 2) Se encuentran los valores de verdad de las expresiones relaciónales. 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.

5) PALABRAS RESERVADAS

Son aquellas palabras que son elementos del lenguaje Basic, tales como las que forman parte de las instrucciones, los operadores, etc.. Estas palabras no pueden ser usadas como identificadores. Las palabras reservadas serán escritas en este libro con letras mayúsculas.

Page 230: Computación metodología, lógica computa

CAPÍTULO 5. ELEMENTOS DEL LENGUAJE 215

RESUMEN

Basic: lenguaje computacional de alto nivel, fácil de aprender que fue creado en el año de 1964 por los norteamericanos G. Kemeny y Thomas E. Kurtz.

Palabras reservadas: son aquellas palabras que son elementos del lenguaje Basic, tales como las que forman parte de las instrucciones, los operadores, etc. Estas palabras no pueden usarse como identificadores.

Tipos de datos: A) Numéricos: son datos cuyo contenido es una serie de dígitos (0-9) que en conjunto nos

proporcionan un valor numérico y que pueden ser precedidos por un signo de + (positivo) o - (negativo). Con ellos se puede realizar operaciones aritméticas o de conteo.

B) Alfanuméricos: son datos cuyo contenido son letras del abecedario, números o caracteres especiales, o bien una combinación de ellos. Estos datos no pueden ser usados para realizar operaciones aritméticas.

Zonas de memoria: los datos, ya sean numéricos o alfanuméricos, se alojan en zonas de memoria principal con el objeto de utilizarlos posteriormente. Estas 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. Se pueden clasificar en:

A) Constantes: son zonas de memoria que guardan datos, los cuales no cambian durante toda la fase de procesamiento de información.

B) Variables: son zonas de memoria cuyo contenido cambia durante la fase de procesamiento de información.

Expresiones: son un conjunto de operadores y operandos que producen un valor. Un operador es un símbolo o palabra que significa que se ha de realizar cierta acción entre uno o dos valores que son llamados operandos. Existen tres tipos de operadores: asociativos, aritméticos, relaciónales y lógicos.

Page 231: Computación metodología, lógica computa

CAPÍTULO

6

MANEJO DE ARCHIVOS

OBJETIVOS

6.1 El alumno explicará las siguientes operaciones del manejo de archivos:

—Crear un programa —Recuperar un programa —Guardar un programa —Imprimir un programa —Ejecutar un programa

216

Page 232: Computación metodología, lógica computa

CAPÍTULO

6

MANEJO DE ARCHIVOS

Un archivo es una colección de información. Según el tipo de información que contienen los archivos, se clasifican en:

1) archivos texto 2) archivos tipo programa 3) archivos de datos

El tipo de archivos en el que enfocaremos nuestro interés en este capítulo serán los archivos tipo programa, cuyo contenido será un conjunto de instrucciones escritas en el lenguaje computacional Quick Basic.

En este capítulo aprenderemos las instrucciones necesarias para interaccionar con un programa, esto es, para crearlo, modificarlo, guardarlo o recuperarlo de disco y ejecutarlo.

PROCEDIMIENTO DE ENTRADA A QUICK BASIC

Estando en el prompt del sistema operativo, se deberá teclear Qbasic e inmediatamente aparecerá en la pantalla una ventana como se muestra en la figura 6.1, a la que se deberá responder con cualquiera de las opciones Entrar o ESC como se indica en la ventana.

INSTRUCCIONES DE MANEJO DE ARCHIVOS

El manejo de archivos tipo programa se realiza con la utilización del menú Archivo de la barra de menúes que aparecen al seleccionar ESC en la ventana de bienvenida. Al seleccionar este menú aparecen las siguientes opciones, como se puede apreciar en la figura 6.2.

a) Creando un programa Para crear un programa se deberá seleccionar la opción Nuevo del menú Archivo. Después de

217

Page 233: Computación metodología, lógica computa

218 PARTE III. PROGRAMACIÓN

Archivo Edición Ver Búsqueda Ejecutar Depurar Opciones Ayuda

Figura 6.1

Archivo Edición Ver Búsqueda Ejecutar Depurar Opciones Ayuda

Figura 6.2

Figura 6.3

Abrir

Page 234: Computación metodología, lógica computa

Figura 6.4

seleccionar esta opción aparecerá una pantalla en blanco en la cual se podrá insertar un programa utilizando el editor de textos que se incluye con Quick Basic.

b) Recuperando un programa de disco Para recuperar un programa de disco será necesario ejecutar la opción Abrir... del menú Archivo (véase Fig. 6.3). En esta ventana será necesario escribir el nombre del programa que se desea editar o bien seleccionarlo de la lista de archivos que se muestra. También existe la posibilidad de seleccionar la unidad de disco en donde se pudiera encontrar el programa.

c) Guardando un programa en disco Las opciones Guardar. . . y Guardar como. .. nos ayudarán a almacenar un programa en disco. Si se ejecuta la opción Guardar. . . y es la primera vez que se almacena un programa, aparecerá una ventana como la de la figura 6.4.

En dicha ventana será necesario escribir el nombre del programa, e indicar la unidad de disco, en la que se desea que se almacene éste.

CAPÍTULO 6. MANEJO DE ARCHIVOS 219

Figura 6.5

Page 235: Computación metodología, lógica computa

220 PARTE III. PROGRAMACIÓN

d)

e)

Figura 6.6

Si se ejecuta la opción guardar y ya se le había dado nombre al programa, Quick Basic sólo almacenará el programa.

La opción Guardar como... se utiliza para almacenar un programa bajo un nombre diferente del que se le hubiera dado con la opción de Guardar. . . es una forma de obtener una copia del programa. Si se ejecuta esta opción aparecerá una ventana como la de la figura 6.5.

A la cual se le deberá responder con el nombre y unidad de disco deseados. Imprimiendo un programa La opción Imprimir. . . del menú Archivo nos permitirá desplegar por impresora un programa. Al ejecutar esta opción aparecerá una ventana como la de la figura 6.6. En la cual se le deberá seleccionar cualquiera de las opciones indicadas.

Ejecutando un programa Para ejecutar un programa debe emplearse la opción Ejecutar del menú principal de Quick Basic, la cual puede ser vista en las figuras 6.1 y 6.2.

Page 236: Computación metodología, lógica computa

CAPÍTULO 6. MANEJO DE ARCHIVOS 221

RESUMEN

Archivo: es una colección de información. Dependiendo del tipo de información que contienen los archivos, se clasifican en archivos de datos, programas y textos.

Instrucciones para el manejo de programas:

El manejo de archivos tipo programa se lleva a cabo con la utilización del menú Archivo de la barra de menúes que aparece en la ventana de bienvenida de Quick Basic.

a) Crear un programa Para crear un programa se deberá seleccionar la opción Nuevo... del menú Archivo. Después de

seleccionar esta opción aparecerá una pantalla en blanco en la cual se podrá insertar un programa utilizando el editor de textos que se incluye con Quick Basic.

b) Recuperar un programa de disco Para recuperar un programa de disco será necesario ejecutar la opción Abrir... del menú Archivo.

En esta ventana será necesario escribir el nombre del programa que se desea editar o bien seleccionarlo de la lista de archivos que se muestra. También existe la posibilidad de seleccionar la unidad de disco en donde se pudiera encontrar el programa.

c) Guardar un programa en disco Las opciones Guardar. . . y Guardar como. . . del menú Archivo nos ayudarán a almacenar un programa en disco.

Si se ejecuta la opción Guardar. .. y ya se le había dado previamente nombre al programa, Quick Basic sólo almacenará el programa.

La opción Guardar como. . . se utiliza para almacenar un programa bajo un nombre diferente del que se le hubiera dado con la opción de Guardar...

d) Imprimir un programa La opción Imprimir... del menú Archivo nos permitirá desplegar por impresora un programa.

e) Ejecutar un programa La opción Ejecutar del menú principal de Quick Basic nos permite ejecutar el programa que esté

cargado en memoria en ese momento.

Page 237: Computación metodología, lógica computa

CAPÍTULO

7

INTERACCIÓN USUARIO-PROGRAMA

OBJETIVOS

7.1 El alumno explicará los siguientes procesos iteractivos del usuario con el programa: —Asignación —Entrada de datos —Salida de datos —Comentarios

7.2 El alumno explicará el diseño de programas que sean amigables al usuario. 7.3 El alumno utilizará las instrucciones de iteracción del lenguaje Basic en la solución de problemas

de tipo secuencial.

222

Page 238: Computación metodología, lógica computa

CAPÍTULO

7

INTERACCIÓN USUARIO-PROGRAMA

Son instrucciones que permiten al usuario tener comunicación con el programa, sea para proporcio-narle datos de entrada u obtener datos de salida.

Las instrucciones de interacción usuario-programa se clasifican en:

a) Asignación b) Entrada de datos c) Salida de datos

A continuación definiremos las instrucciones útiles para la interacción usuario-programa; para especificarlas haremos uso de la siguiente simbología:

(expresión) La expresión que se encuentre dentro de este par de símbolos será considerada opcional.

{ expresiónl/expresión2 } Se puede optar entre cualquiera de las dos expresiones, pero se debe incluir alguna de las dos.

expresión Se debe incluir obligatoriamente.

a) ASIGNACIÓN

Instrucción: LET

Función:

223

Page 239: Computación metodología, lógica computa

2 2 4 PARTE III. PROGRAMACIÓN

Asignar a una variable un valor, ya sea el resultado de una expresión, el valor de una variable o bien el de una constante. Formato:

(LET) variable = expresión donde:

variable es el nombre de la variable, en donde se va a almacenar el valor de la expresión, expresión es la expresión cuyo valor será

almacenado en la variable.

Instrucción equivalente en algoritmo:

variable ← expresión

Bloque equivalente en simbología de diagramas de flujo:

Ejemplos;

1) a = 500

Al ejecutar esta instrucción la variable a toma el valor de 500.

2) LET a = 500 Al ejecutar esta instrucción la variable a toma el valor de 500. Nótese que el formato de esta instrucción permite la utilización opcional de LET, por eso es que este ejemplo hace exactamente lo mismo que el anterior.

3) promedio = (c1 + c2 + c3 ) / 3 Al ejecutar esta instrucción la variable promedio adquiere como valor el resultado de la expresión que se encuentra del lado derecho del signo =.

4) nom$ = "Federico" Al ejecutar esta instrucción la variable nom$ adquiere como valor el dato Federico.

5) nom$ = 5 Al ejecutar esta instrucción Quick Basic marcará un error, pues el tipo de la variable es distinto al tipo del dato que se le intenta asignar. Lo correcto sería asignar un dato alfanumérico a la variable nom$ o bien asignar el valor 5 a una variable de tipo numérica.

6) nom$ = ed Al igual que en el ejemplo anterior, al ejecutar esta instrucción Quick Basic marcará un error, pues el tipo de la variable es distinto al tipo del dato que se le intenta asignar. Lo correcto sería asignar un dato alfanumérico a la variable nom$ o bien asignar el valor de la variable ed a una variable de tipo numérica.

Page 240: Computación metodología, lógica computa

CAPÍTULO 7. INTERACCIÓN USUARIO-PROGRAMA 225

b) ENTRADA DE DATOS

Instrucción: INPUT

Función: Durante la ejecución de un programa, permite la introducción de datos por medio del teclado.

Formato: INPUT (;) ( "mensaje" {;/,}) variable (.variable ). ..

donde: mensaje es un texto asociado a los datos que se van a introducir, variable es el nombre de la variable en donde se almacenará el dato intro-

ducido. Instrucción equivalente en algoritmo: PEDIR variable

Bloque equivalente en simbología de diagramas de flujo:

Cuando Quick Basic ejecuta la instrucción INPUT, se produce una pausa en la ejecución del programa para permitir al usuario introducir los datos. En la pantalla aparece un signo de interrogación si el mensaje se omitió, y si éste se incluyó entonces aparece el mensaje seguido de un signo de interrogación. Para indicar fin de datos se debe oprimir la tecla <ENTER> o ←.

Ejemplos; 1)

INPUT ed

Al ejecutar esta instrucción en la pantalla aparece lo siguiente:

?__ Quick Basic hace una pausa esperando a que el usuario teclee algún valor, seguido de la tecla <ENTER> en el momento en que lo haga la variable ed adquirirá ese valor.

2) INPUT "Introduce tu edad"; ed Al ejecutar esta instrucción en la pantalla aparece:

Introduce tu edad ?__

Quick Basic hace una pausa esperando a que el usuario teclee algún valor; en el momento en que lo haga la variable ed adquirirá ese valor.

Obsérvese que la diferencia entre este ejemplo y el anterior es sólo en cuanto a la

Page 241: Computación metodología, lógica computa

226 PARTE III. PROGRAMACIÓN

comunicación que se establece con la utilización del mensaje. Aunque los dos ejemplos hacen lo mismo en cuanto a que la variable ed toma un valor, este ejemplo hace mucho más claro para el usuario que lo que se espera es que introduzca como entrada una edad.

3) INPUT "Introduce tu nombre"; nom$ Al ejecutar esta instrucción en la pantalla aparece:

Introduce tu nombre ? _

En el momento en que el usuario introduzca algún dato, la variable nom$ adquirirá ese valor. Obsérvese que es importante que el nombre de la variable utilizado en la instrucción incluya el signo $, ya que el tipo del dato es alfanumérico.

c) SALIDA DE DATOS

Instrucción: PRINT

Función: Permite desplegar datos en la pantalla.

Formato: { PRINT/ ? } (lista de expresiones ) ( { , / ; } )

donde: lista de expresiones es un conjunto de expresiones numéricas o alfanuméricas

separadas por comas o puntos y comas. Instrucción equivalente en algoritmo: DESPLEGAR lista de expresiones

Bloque equivalente en simbología de diagramas de flujo:

Cuando Quick Basic ejecuta la instrucción PRINT, se despliega en la pantalla la lista de expresio-nes especificada.

Ejemplos;

1) PRINT ed Al ejecutar esta instrucción en la pantalla aparece el valor de la variable ed.

2) ?ed

Page 242: Computación metodología, lógica computa

CAPÍTULO 7. INTERACCIÓN USUARIO-PROGRAMA 227

Al ejecutar esta instrucción en la pantalla aparece el valor de la variable ed. Nótese que es equivalente utilizar la instrucción PRINT que utilizar el signo ?.

3) PRINT "Tu edad es"; ed Al ejecutar esta instrucción en la pantalla aparece el mensaje Tu edad es seguido del valor de la variable ed.

4) PRINT 100+ 100 Al ejecutar esta instrucción en la pantalla aparece el resultado de la expresión, que es 200.

5) PRINT "100 + 100 ="; 100+100 Al ejecutar esta instrucción en la pantalla aparece el mensaje 100 + 100 = seguido del resultado de la expresión, que es 200.

6) PRINT "Mi nombre es" PRINT "María" Al ejecutar este conjunto de instrucciones en la pantalla aparece lo siguiente: Mi nombre es María

Después de que Quick Basic ejecuta la instrucción PRINT coloca el cursor en la línea siguiente. Por eso es que el mensaje María aparece en la siguiente línea.

7) PRINT "Mi nombre es" PRINT PRINT "María"

Al ejecutar estas instrucciones en la pantalla aparece lo siguiente: Mi nombre es María

Cuando Quick Basic ejecuta la instrucción PRINT y la lista de expresiones se omite sólo desplegará una línea en blanco y colocará el cursor en la línea siguiente. Por eso en este ejemplo entre los dos mensajes aparece una línea en blanco.

8) PRINT "Mi nombre es "; PRINT "María"

Al ejecutar estas instrucciones aparece lo siguiente en la pantalla: Mi nombre es María Cuando un PRINT termina con el símbolo ; no coloca el cursor en la línea siguiente, sino que el cursor permanece en la posición siguiente al último carácter desplegado.

Comentarios Instrucción: REM

Page 243: Computación metodología, lógica computa

228 PARTE III. PROGRAMACIÓN

Función:

Permite incluir mensajes no ejecutables dentro de un programa.

Formato: { REM / ' } (mensaje)

donde: mensaje es un texto que el programador incluye al programa como referencia.

Ejemplo: REM Este programa obtiene el promedio de tres calificaciones

Aplicación de las instrucciones necesarias para la interacción usuario-programa

Problemas resueltos

PROBLEMA 1 Aplicar los primeros 5 pasos de la metodología de la solución de problemas por medio de la computadora para encontrar el área de un círculo de radio 5. Paso 1. Definición del problema: Encontrar el área de un círculo de radio 5. Paso 2. Planeación de la solución: El área de un círculo está dada por la fórmula:

área = Pi * radio^2

Si, por un lado, sabemos que la constante Pi es igual a 3.1416, y por otro, que el radio del círculo es de 5, al sustituir estos valores en la fórmula obtendríamos:

área = 3.1416 * 5^2

Al aplicar esta fórmula obtendremos la solución. Nos podemos percatar de que tenemos todos los datos para poder solucionar nuestro problema, por lo que no requeriremos de datos de entrada.

SALIDA: Área del círculo ENTRADA: Ninguna DATOS ADICIONALES: Ninguno SOLUCIÓN: Aplicar la fórmula área = 3.1416 X 5^2

Paso 3: Algoritmo

1. área ←3.1416 * 5^2 2. DESPLEGAR área

Paso 4. Diagrama de flujo (véase Fig. 7.1):

Page 244: Computación metodología, lógica computa

Figura 7.1

Paso 5. Codificación y edición del programa: La codificación es la siguiente: REM Programa que obtiene el área de un círculo de radio 5 área = 3.1416 * 5^2 PRINT "El área del círculo con radio 5 es ": área END

NOTA: Un programa escrito en Quick Basic deberá incluir la instrucción END para indicar el FIN del programa.

La edición de este programa consistiría en seguir los siguientes pasos: 1) Estando en el sistema operativo teclear Qbasic para entrar a Quick Basic. 2) Seleccionar la opción ESC de la pantalla de bienvenida para ir a la barra de menúes. 3) Seleccionar la opción Nuevo del menú Archivo. 4) Escribir el programa utilizando el editor de Quick Basic.

NOTA: Los pasos correspondientes a la edición del programa serán los mismos para todos los pro-blemas.

Paso 6. Pruebas y depuración:

La fase de pruebas consiste en dos fases: —La primera es haciendo una prueba de escritorio como se había hecho en el capítulo 4, que consiste

en seguir el algoritmo o diagrama de flujo y darle valores a las variables para verificar su funcionalidad. En este caso la primera fase de pruebas quedaría así: área ← 78.54 Se despliega 78.54

CAPÍTULO 7. INTERACCIÓN USUARIO-PROGRAMA 229

Page 245: Computación metodología, lógica computa

230 PARTE III. PROGRAMACIÓN

—La segunda es ejecutando el programa para verificar si se logran los resultados buscados y si la presentación en la ejecución del programa nos es agradable. Para realizar esta prueba basta con ejecutar la opción Empieza del menú Ejecutar y en la pantalla se visualizaría lo siguiente:

El área del círculo con radio 5 es: 78.54

La depuración del programa consiste en corregir lo que sea necesario para lograr que el programa logre el objetivo buscado.

En los siguientes problemas resueltos se realizará la fase de codificación de los problemas resueltos 2, 3, 4 y 5 incluidos en los problemas secuenciales del capítulo 4.

Se omitirán algunos pasos de la metodología debido a que ya fueron estudiados.

PROBLEMA 2 Modificar el problema anterior para que sea capaz de calcular el área de un círculo de cualquier radio requerido. Paso 1. Definición del problema:

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

Paso 4. Diagrama de flujo (véase Fig. 7.2):

Paso 5. Codificación y edición del programa:

Figura 7.2

Page 246: Computación metodología, lógica computa

CAPÍTULO 7. INTERACCIÓN USUARIO-PROGRAMA 231

El programa correspondiente al diagrama de flujo anterior es el siguiente: Programa 1 REM Programa que obtiene el área de un círculo de un radio cualquiera INPUT radio área = 3.1416 * radio^2 PRINT área END

Este programa también podría ser escrito de la siguiente manera:

Programa 2 REM Programa que obtiene el área de un círculo de un radio cualquiera INPUT "Introduce el radio del círculo"; radio área = 3.1416 * radio^2 PRINT "El área es"; área END

La diferencia entre los dos programas mostrados consiste en la presentación, pues el segundo programa, al utilizar mensajes en las entradas y salidas, logra que el usuario tenga una idea de qué datos se espera introduzca como entradas y qué resultados son los que el programa arroja como salidas. El segundo programa se considera un programa amigable para el usuario.

Paso 6. Pruebas y depuración:

Primera fase de pruebas:

Prueba 1 para el programa 1 radio ←5 área ← 78.54 Se despliega 78.54

Prueba 1 para el programa 2 radio ← 5 área ← 78.54 Se despliega 78.54

Prueba 2 para el programa 1 radio ← 8 área ←201.0624 Se despliega 201.0624

Prueba 2 para el programa2 radio ←8 área ←201.0624 Se despliega 201.0624

Page 247: Computación metodología, lógica computa

232 PARTE 111. PROGRAMACIÓN

Segunda fase de pruebas: Prueba 1 para el programa 1 ?5 78.54

Prueba 1 para el programa 2 Introduce el radio del círculo ? 5 El área es 78.54

Prueba 2 para el programa 1 ?8 201.0624

Prueba 2 para el programa 2 Introduce el radio del círculo ? 8 El área es 201.0624

En esta fase de pruebas se puede observar claramente cómo el programa 2 es más amigable que el programa 1 por la utilización de mensajes asociados a las instrucciones INPUT y PRINT.

PROBLEMA 3 Determinar el área y perímetro de un rectángulo cualquiera.

Paso 1. Definición del problema:

Encontrar el área y perímetro de un rectángulo cualquiera.

Paso 4. Diagrama de flujo (véase Fig. 7.3):

Paso 5. Codificación y edición del programa:

El programa correspondiente al diagrama de flujo anterior es el siguiente:

Programa 1 REM Programa que obtiene el perímetro y área de un rectángulo INPUT "Da los lados del rectángulo"; lado1, Iado2 perímetro = lado1*2 + Iado2*2 área = lado1 * Iado2 PRINT "El perímetro y área son"; perímetro, área END

Programa 2 REM Programa que obtiene el perímetro y área de un rectángulo INPUT "Da el primer lado del rectángulo"; lado1 INPUT "Da el segundo lado del rectángulo"; Iado2

Page 248: Computación metodología, lógica computa

Figura 7.3

perímetro = lado1 * 2 + Iado2 * 2 área = lado1 * Iado2 PRINT "El perímetro del rectángulo es"; perímetro PRINT "El área del rectángulo es"; área END

Obsérvese cómo las instrucciones INPUT y PRINT del programa 1 se fraccionaron en dos instrucciones cada una; para lograr un programa más amigable al tener un mensaje por cada dato de entrada, y un mensaje por cada salida. De cualquier modo el objetivo se logra con los dos programas.

Ejercicio: Realizar al menos una vez el paso de pruebas y depuración incluyendo las dos fases de pruebas.

PROBLEMA 4 Obtener el promedio de edades de 3 personas.

Paso 1. Definición del problema: Obtener el promedio de edades de 3 personas.

Paso 4. Diagrama de flujo (véase Fig. 7.4):

CAPÍTULO 7. INTERACCIÓN USUARIO-PROGRAMA 233

Page 249: Computación metodología, lógica computa

Paso 5. Codificación y edición del programa:

El programa correspondiente al diagrama de flujo anterior es el siguiente:

REM Programa que obtiene el promedio de 3 edades INPUT "Da la primera edad"; edad1 INPUT "Da la segunda edad"; edad2 INPUT "Da la tercera"; edad3 promedio = [ edad1 + edad2 + edad3 ] / 3 PRINT "El promedio de las tres edades es"; promedio END

Ejercicio: Realizar al menos una vez el paso de pruebas y depuración, incluyendo las dos fases de pruebas.

PROBLEMA 5 Paso 1. Definición del problema: 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.

Paso 4. Diagrama de flujo (véase Fig. 7.5):

234 PARTE III. PROGRAMACIÓN

Page 250: Computación metodología, lógica computa

CAPÍTULO 7. INTERACCIÓN USUARIO-PROGRAMA 235

Figura 7.5

Paso 5. Codificación y edición del programa:

El programa correspondiente al diagrama de flujo anterior es el siguiente:

REM Reinversión mensual INPLJT "Introduce el capital"; ci g = ci X 0.02 PRINT "La ganancia después de un mes será de:" ;g END

Ejercicio: Realizar al menos una vez el paso de pruebas y depuración incluyendo las dos fases de pruebas.

Problemas propuestos

Aplicar los pasos 5) Codificación y edición del programa y 6) Pruebas y depuración, en los problemas propuestos incluidos en los problemas secuenciales del capítulo 4.

Page 251: Computación metodología, lógica computa

236 PARTE III. PROGRAMACIÓN

RESUMEN

Las instrucciones de interacción usuario-programa son aquellas que permiten al usuario tener comunicación con el programa ya sea para proporcionarle datos de entrada u obtener datos de salida. Las instrucciones de interacción usuario-programa se clasifican en:

a) Asignación Instrucción LET: asignar a una variable un valor, ya sea el resultado de una expresión, el valor

de una variable o bien el de una constante.

b) Entrada de datos Instrucción INPUT: durante la ejecución de un programa, permite la introducción de datos por

medio del teclado.

c) Salida de datos Instrucción PRINT: permite desplegar datos a través de la pantalla.

Comentarios Instrucción REM: permite incluir mensajes no ejecutables dentro de un programa.

Page 252: Computación metodología, lógica computa

CAPÍTULO

8

CONTROL

DE EJECUCIÓN

OBJETIVOS

8.1 El alumno definirá las estructuras de ejecución condicional. 8.2 El alumno definirá las estructuras de ejecución incondicional. 8.3 El alumno definirá las estructuras repetitivas. 8.4 El alumno aplicará las instrucciones de control de ejecución del lenguaje Basic en la solución de

problemas 8.4.1 Selectivos

a) Simples b) Compuestos

8.4.2 Repetitivos —Simples

a) Con un número indeterminado de iteraciones b) Con un número determinado de iteraciones

237

Page 253: Computación metodología, lógica computa

CAPÍTULO

8

CONTROL

DE EJECUCIÓN

Las instrucciones de control de ejecución se clasifican en:

1) Control de ejecución condicional 2) Control de ejecución incondicional 3) Estructuras repetitivas

8a) CONTROL DE EJECUCIÓN CONDICIONAL

Instrucción: IF. . . THEN. . . ELSE

Función: Permite la ejecución de un conjunto de instrucciones dependiendo del resultado de la evaluación de una condición dada. Esta instrucción es necesaria para resolver proble-mas de tipo selectivo, tanto simples como compuestos.

Equivalencias:

En algoritmo: SI condición ENTONCES

Conjunto de acciones 1 DE OTRA FORMA

Conjunto de acciones 2

En bloque de diagrama de flujo (véase Fig. 8.1):

Formatos:

238

Page 254: Computación metodología, lógica computa

Figura 8.1

Formato 1: IF condición THEN

Conjunto de instrucciones 1 (ELSE

Conjunto de instrucciones 2) ENDIF

Formato 2: IF condición THEN Conjunto de instrucciones 1 (ELSE Conjunto de instrucciones 2)

En este libro emplearemos únicamente el formato 1, pues resulta ser el más claro y por ende el que más ayuda en la fase de mantenimiento de los programas.

Cuando la evaluación de la condición resulta verdadera se evalúa el conjunto de instrucciones 1. Si resulta falsa se ejecuta el conjunto de instrucciones 2. El conjunto de instrucciones 1 equivale a la parte derecha o verdadera de un bloque condicional de diagrama de flujo, mientras que el conjunto de instrucciones 2, a la parte izquierda o falsa, y como ésta no siempre existe, está marcada como opcional en el formato de la instrucción.

Se recomienda ampliamente que tanto el conjunto de acciones 1 como el conjunto de acciones 2 se escriban indentados (con sangría) con respecto al IF, ELSE y END IF.

Observe que lo que delimita a la parte verdadera de la instrucción es el renglón en donde se encuentra el IF. . . THEN y el renglón donde se encuentra el ELSE.

Lo que delimita la parte falsa es el ELSE y el END IF. El END IF es equivalente al pequeño círculo delimitador del fin de un bloque selectivo en diagrama

de flujo.

Ejemplos: 1) Bloque (véase Fig. 8.2).

Instrucción: IFedad> = 18THEN

PRINT "Es mayor de edad" END IF

2) Bloque (véase Fig. 8.3).

CAPÍTULO 8. CONTROL DE EJECUCIÓN 239

Page 255: Computación metodología, lógica computa

Figura 8.3

Instrucción:

IF edad> = 18 THEN PRINT "Es mayor de edad"

ELSE PRINT "Es menor de edad"

END IF

3) Bloque (véase Fig. 8.4).

Instrucción: IF nombre$="ARTURO" AND color$="ROJO"THEN

PRINT "El Sr. Arturo tiene 20% de descuento" total=subtotal X 0.8

ELSE total=subtotal

END IF

A continuación se presentarán los pasos finales de la metodología para la solución de problemas de los problemas selectivos, tanto simples como compuestos.

240 PARTE III. PROGRAMACIÓN

Figura 8.2

Page 256: Computación metodología, lógica computa

CAPÍTULO 8. CONTROL DE EJECUCIÓN 241

Figura 8.4

Problemas resueltos

PROBLEMA 1

Determinar si un alumno aprueba o reprueba un curso, sabiendo que un alumno aprueba si su promedio de tres calificaciones es mayor o igual a 7, y reprueba en caso contrario.

Paso 4. Diagrama de flujo (véase Fig. 8.5).

Paso 5. Codificación y edición del programa:

REM Obtener promedio de tres calificaciones y decir si es aprobatorio o no INPUT "Primera calificación";c1 INPUT "Segunda calificación";c2 INPUT 'Tercera calificación";c3 p=[c1+c2+c3]/3 IF p>=7THEN

PRINT "El alumno está aprobado" ELSE

PRINT "El alumno está reprobado" ENDIF END

Paso 6. Pruebas y depuración:

Segunda fase:

nombre$ = "ARTURO

AND

"El Sr. Arturo tiene 20% de descuento'

Page 257: Computación metodología, lógica computa

Figura 8.5

Prueba 1 Primera calificación? 8 Segunda calificación? 9 Tercera calificación? 9 El alumno está aprobado

Prueba 2 Primera calificación? 7 Segunda calificación? 6 Tercera calificación? 6 El alumno está reprobado

PROBLEMA 2

En un almacén se hace un 20% de descuento a aquellos clientes cuya compra supere los $1000. ¿Cuál será la cantidad de dinero que pagará una persona por su compra?

242 PARTE III. PROGRAMACIÓN

Page 258: Computación metodología, lógica computa

Figura 8.6

Paso 4. Diagrama de flujo (véase Fig. 8.6).

Paso 5. Codificación y edición del programa: REM Descuento en un almacén para el que compre más de $1000 INPUT "Valor de la compra";compra IF compra>1OOOTHEN

pago=compra*O.8 ELSE

pago=compra ENDIF PRINT "El pago es:";pago END

CAPÍTULO 8. CONTROL DE EJECUCIÓN 243

Page 259: Computación metodología, lógica computa

244 PARTE III. PROGRAMACIÓN

Paso 6. Pruebas y depuración:

Segunda fase:

Prueba 1 Valor de la compra? 2500 El pago es: 2000

Prueba 2 Valor de la compra? 700 El pago es: 700

Prueba 3 Valor de la compra? 1000 El pago es: 1000

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

Paso 4. Diagrama de flujo (véase Fig. 8.7). Paso

5. Codificación y edición del programa:

REM Obtención del salario de un obrero con horas extras INPUT "Número de horas trabajadas";ht

IF ht>40 THEN he=ht-40 s=he*6 + 40*4

ELSE s=ht*4

END IF PRINT "El salario semanal es:";s END

Paso 6. Pruebas y depuración:

Segunda fase:

Prueba 1 Número de horas trabajadas? 38 El salario semanal es: 152

Page 260: Computación metodología, lógica computa

Figura 8.7

Prueba 2 Número de horas trabajadas? 45 El salario semanal es: 190

PROBLEMA 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 de $7000, y en ese caso desea saber cuánto dinero tendrá finalmente en su cuenta.

CAPÍTULO 8. CONTROL DE EJECUCIÓN 245

Page 261: Computación metodología, lógica computa

246 PARTE 111. PROGRAMACIÓN

Figura 8.8

Paso 4. Diagrama de flujo (véase Fig. 4.8).

Paso 5. Codificación y edición del programa:

REM Inversión en un banco INPUT "Porcentaje de interés";p INPUT "Cantidad en inversión";ci ¡=ci*p/1OO

Page 262: Computación metodología, lógica computa

CAPÍTULO 8. CONTROL DE EJECUCIÓN 247

PRINT "lntereses:";¡

IF i>7OOO cf=ci+i PRINT "Cantidad final en la cuenta:";cf

END IF END

Paso 6. Pruebas y depuración:

Segunda fase:

Prueba 1 Porcentaje de interés? 5 Cantidad en inversión? 70 000 Intereses: 3500

Prueba 2 Porcentaje de interés? 7 Cantidad en inversión? 120 000 Intereses: 8400 Cantidad final en la cuenta: 128 400

PROBLEMA 5

Una persona enferma que pesa 70 kg 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.

Paso 4. Diagrama de flujo (véase Fig. 8.9).

Paso 5. Codificación y edición del programa:

REM Calorías que gasta un enfermo INPUT “Tipo de actividad";a$ INPUT "Minutos que duró la actividad";t IF a$="DORMIDO"THEN

cg=1.BBXt ELSE

cg=1.OSXt END IF PRINT "Calorías gastadas";cg END

Paso 6. Pruebas y depuración:

Page 263: Computación metodología, lógica computa

Segunda fase:

Prueba 1 Tipo de actividad? DORMIDO Minutos que duró la actividad? 100 Calorías gastadas: 166

Prueba 2 Tipo de actividad? SENTADO Minutos que duró la actividad? 100 Calorías gastadas: 108

PROBLEMA 6

Figura 8.9

248 PARTE III. PROGRAMACIÓN

Page 264: Computación metodología, lógica computa

CAPÍTULO 8. CONTROL DE EJECUCIÓN 249

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, deberá pedir prestado al banco 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á capacidad de invertir de su propio dinero un 70% y el restante 30% lo pagará solicitando 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 tendrá que invertir de sus propios fondos, si hay

necesidad, cuánto deberá pedir prestado al banco, cuánto tendrá que pagar a crédito y cuánto por concepto de los intereses que se generen en el crédito.

Paso 4, Diagrama de flujo (véase Fig. 8.10). Paso

5. Codificación y edición del programa:

REM Presupuesto de compra de una empresa INPUT "Número de piezas";np NPUT "Costo de cada pieza";cu

mt=np*cu IF mt>500000 THEN

ci=mt*0.55 cc=mt*0.15 cpb=mt*0.3

PRINT "Cantidad a pedir al banco:"; cpb ELSE

ci=mt*0.7 cc=mt*0.3

END IF i=cc*0.2

PRINT "Cantidad que invierte la empresa:";ci PRINT "Cantidad a pagar a crédito";cc PRINT "lntereses:";¡ END

Ejercicio: Realizar la segunda fase del paso de pruebas y depuración.

PROBLEMA 7

Determinar la cantidad de dinero que recibirá un trabajador por concepto de las horas trabajadas en una empresa, sabiendo que cuando las horas que trabajó exceden de 40, el resto se convierte en horas extras y que éstas se pagan al doble de una hora normal cuando no exceden de 8; cuando 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 de lo de una normal.

Page 265: Computación metodología, lógica computa

250 PARTE III. PROGRAMACIÓN

Figura 8.10

Paso 4. Diagrama de flujo (véase Fig. 8.11).

Paso 5. Codificación y edición del programa:

Page 266: Computación metodología, lógica computa

CAPÍTULO 8. CONTROL DE EJECUCIÓN 251

Figura 8.11

REM Salario de un trabajador con horas normales, dobles y triples INPUT "Horas trabajadas";ht INPUT "Pago por hora normal";ph

pe ← ph * 2 * 8 + ph * 3 * het

Page 267: Computación metodología, lógica computa

252 PARTE III. PROGRAMACIÓN

IF ht>40 THEN he=ht-40 IF he>8 THEN het=he-8

pe=ph*2*8+ph*3*het ELSE

pe=ph*2*he END IF pt=ph*4O+pe

ELSE pt=ph*ht

ENDIF PRINT "Pago del trabajador:";pt END

Paso 6. Pruebas y depuración:

Segunda fase:

Prueba 1: Horas trabajadas? 38 Pago por hora normal? 2 Pago del trabajador: 76

Prueba 2: Horas trabajadas? 45 Pago por hora normal? 2 Pago del trabajador: 100

Prueba 3: Horas trabajadas? 50 Pago por hora normal? 2 Pago del trabajador: 124

PROBLEMA 8

Calcular la utilidad que un trabajador recibe en el reparto anual de utilidades si éste se le asigna como un porcentaje de su salario mensual, dependiendo del tiempo que tenga trabajando en la empresa de acuerdo con la siguiente tabla:

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

Page 268: Computación metodología, lógica computa

CAPÍTULO 8. CONTROL DE EJECUCIÓN 253

TIEMPO

5 años o más y menos de 10 años 10 años o más

UTILIDAD

15% del salario 20% del salario

Figura 8.12

Page 269: Computación metodología, lógica computa

254 PARTE III. PROGRAMACIÓN

Paso 4. Diagrama de flujo (véase Fig. 8.12): Paso 5. Codificación y edición del programa:

REM Reparto de utilidades INPUT "Tiempo que tiene trabajando";t INPUT "Salario";s IF t<1 THEN

u=s*0.05 ELSE

IF t<2 THEN u=s*0.07

ELSE IF t<5 THEN

u= s * 0 . 1ELSE

IF t<1OTHEN u=s*0.15

ELSE u=s*0,2

END IF END IF

END IF END IF PRINT "Utilidad:";u END

Paso 6. Pruebas y depuración:

Segunda fase:

Prueba 1: Supongamos que una persona tiene 1/2 año trabajando y gana $1000 mensuales. Tiempo que tiene trabajando? 0.5 Salario? 1000 Utilidad: 50

Prueba 2: Tiempo que tiene trabajando? 15 Salario? 5000 Utilidad: 1000

PROBLEMA 9

En una tienda de descuento se tiene una promoción mediante la cual se hace un descuento sobre el valor de la compra total, dependiendo del color de la bolita que el cliente saque al efectuar el pago en caja. Si la bolita es blanca no se le hará descuento; si es verde se le hará un 10% de descuento; si

Page 270: Computación metodología, lógica computa

CAPÍTULOS. CONTROL DE EJECUCIÓN 255

es amarilla un 25%; 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 sólo hay bolitas de los colores mencionados.

Paso 4. Diagrama de flujo (véase Fig. 8.13).

Figura 8.13

Page 271: Computación metodología, lógica computa

256 PARTE III. PROGRAMACIÓN

Paso 5. Codificación y edición del programa:

REM Descuento según el color de la bolita INPUT "Monto de la compra";m INPUT "Color de la bolita";b$ IF b$ = "BLANCA" THEN

d=O ELSE

IF b$=”VERDE"THEN d=m*0.1

ELSE IF b$= "AMARILLA" THEN

d=m*0.25 ELSE

IF b$= "AZUL" THEN d=m*0.5

ELSE d=m

END IF END IF

END IF END IF cp=m-d PRINT "Cantidad a pagar:";cp END

Paso 6. Pruebas y depuración:

Segunda fase:

Prueba 1: Monto de la compra? 500 Color de la bolita? BLANCA Cantidad a pagar: 500

Prueba 2: Monto de la compra? 200 Color de la bolita? AMARILLA Cantidad a pagar: 150

Prueba 3: Monto de la compra? 350 Color de la bolita? ROJA Cantidad a pagar: 0

Page 272: Computación metodología, lógica computa

CAPÍTULO 8. CONTROL DE EJECUCIÓN 257

PROBLEMA 10

Una empresa que comercializa cosméticos tiene organizados a sus vendedores en tres departamentos y ha implementado un programa de incentivos para incrementar la productividad de éstos. El gerente, al final del mes, pide el global de las ventas de los tres departamentos, y aquellos que excedan el 33% de las ventas totales se les paga una cantidad extra equivalente al 20% de su salario mensual. Si todos los vendedores ganan lo mismo, determinar cuánto recibirán los vendedores de los tres departamentos al finalizar el mes.

Paso 4. Diagrama de flujo (véase Fig. 8.14):

Paso 5. Codificación y edición del programa:

REM Incentivos para los departamentos de una empresa INPUT “Venta del departamento 1 ";v1 INPUT "Venta del departamento 2";v2 INPUT "Venta del departamento 3";v3 INPUT "Salario";s tv=v1+v2+v3 P=tv*0.33 IFv1>p THEN

cd1 =s+s*o.2 ELSE

cd1 =s END IF IF v2>p THEN

cd2=s+s*o.2 ELSE

cd2=s END IF IF v1 >p THEN

cd3=s+s*02 ELSE

cd3=s ENDIF PRINT "Cantidad a recibir para el departamento 1:";cd1 PRINT "Cantidad a recibir para el departamento 2:";cd2 PRINT "Cantidad a recibir para el departamento 3:";cd3 END

Paso 6. Pruebas y depuración:

Segunda fase:

Prueba: Venta del departamento 1? 32 000

Page 273: Computación metodología, lógica computa

258 PARTE III. PROGRAMACIÓN

Venta del departamento 2? 38 000 Venta del departamento 3? 30 000 Salario? 1500

Figura 8.14

Page 274: Computación metodología, lógica computa

CAPÍTULO 8. CONTROL DE EJECUCIÓN 259

Cantidad a recibir para el departamento 1: 1500 Cantidad a recibir para el departamento 2: 1800 Cantidad a recibir para el departamento 3: 1500

PROBLEMA 11

El IMSS requiere hacer una clasificación de las personas que se jubilan en 1992. Existen tres tipos de jubilaciones: por edad, por antigüedad joven y por antigüedad adulta.

Las personas que entran al tipo de 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 que entran al tipo de jubilación por antigüedad joven deben tener menos de 60 años y una antigüedad en su empleo de 25 años o más.

Las personas que entran al tipo de jubilación por antigü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 entraría una persona.

Paso 4. Diagrama de flujo (véase Fig. 8.15):

Paso 5. Codificación y edición del programa:

REM Jubilaciones INPUT "Edad";ed INPLJT "Antigüedad";ant IF ed>=6O AND ant<25 THEN

PRINT "La jubilación es por edad" ELSE

IF ed>=60 AND ant>25 THEN PRINT "La jubilación es por antigüedad adulta"

ELSE IF ed<6O AND ant>25 THEN

PRINT "La jubilación es por antigüedad joven" ELSE

PRINT "No tiene por qué jubilarse" END IF

END IF END IF END

Paso 6. Pruebas y depuración:

Segunda fase:

Prueba J: Edad? 65 Antigüedad? 30 La jubilación es por antigüedad adulta

Page 275: Computación metodología, lógica computa

260 PARTE III. PROGRAMACIÓN

Prueba 2: Edad? 55 Antigüedad? 20

Figura 8.15

"La jubilación espor antigüedad

adulta"

Page 276: Computación metodología, lógica computa

CAPÍTULO 8. CONTROL DE EJECUCIÓN 261

No tiene por qué jubilarse

Problemas propuestos

Terminar la metodología para la solución de problemas para la sección de problemas propuestos selectivos simples y compuestos del capítulo 4.

8b) CONTROL DE EJECUCIÓN INCONDICIONAL

Instrucción: GOTO

Función: Brincar incondicionalmente a otra parte del programa marcada con una etiqueta.

Equivalencias:

En algoritmo: IR al paso X

En bloque de diagrama de flujo:

Formato:

GOTO etiqueta

Esta instrucción sirve para continuar la secuencia de ejecución de un programa en otro punto del mismo, marcado con una etiqueta.

Para crear una etiqueta se deben seguir las mismas reglas empleadas para dar nombre a variables. En el punto de brinco la etiqueta debe tener el símbolo de dos puntos (:) al final.

Ejemplo:

1) INPUT x$ A: INPUT y$ GOTO A

En este punto se aprecia cómo la variable x$ es pedida una vez y la variable y$ es pedida más de una vez; de hecho en un número infinito de veces, debido al uso de la instrucción GOTO.

El uso de la instrucción GOTO va en contra de las técnicas de programación estructurada que hemos venido usando a lo largo del libro; por lo tanto no recomendamos usarla a menos que se use en combinación con la instrucción IF. . . THEN. . . ELSE para la codificación de ciclos como un número indeterminado de iteraciones, lo cual veremos a continuación.

Page 277: Computación metodología, lógica computa

262 PARTE III. PROGRAMACIÓN

8c) ESTRUCTURAS REPETITIVAS: COMBINACIÓN DE LAS INSTRUCCIONES IF... THEN... ELSE Y GOTO

Esta combinación es usada para codificar ciclos con un número indeterminado de iteraciones. Recordemos que estos ciclos tienen la siguiente estructura:

1. C 2. PEDIR mas$ 3. SI mas$="NO" ENTONCES

IR al paso 4 DE OTRA FORMA

IR al paso 1 4. X

En donde C es el cuerpo del ciclo.

El programa correspondiente puede quedar de la siguiente forma:

A: C INPUT "Más iteracciones (S/N)"; mas$ IF mas$="NO" THEN

GOTOB ELSE

GOTO A END IF B:

Puede observarse que en la parte falsa de la condición, que es cuando se quiere realizar otra iteración, con el GOTO A se brinca al punto en donde comienza el cuerpo del ciclo. En caso de que no se quieran más iteraciones se ejecuta el GOTO B y por lo tanto continúa con la instrucción siguiente al IF, por lo cual se da término al ciclo.

A continuación se resolverán los problemas repetitivos simples con un número indeterminado de iteraciones, para los cuales emplearemos la combinación IF... THEN... ELSE - GOTO.

Problemas resueltos

PROBLEMA 1

En una tienda de descuento las personas que van a pagar por el importe de su compra llegan a la caja y sacan una bolita de color que les dirá qué descuento tendrán sobre el total de su compra.

Determinar la cantidad que pagarán cada uno de los clientes desde que la tienda abre hasta que cierra.

Se sabe que si el color de la bolita es roja el cliente obtendrá un 40% de descuento. Si el color es amarillo obtendrá un 25% y si es blanca no obtendrá descuento.

Page 278: Computación metodología, lógica computa

CAPÍTULO 8. CONTROL DE EJECUCIÓN 263

Paso 4. Diagrama de flujo (véanse Figs. 8.16 y 8.17).

Paso 5. Codificación y edición del programa:

Dado que aún no hemos visto algunas instrucciones necesarias para poder tener un programa dividido en procesos, tendremos a continuación que integrar el proceso CLIENTE al programa principal. Observe que se ha remarcado el principio y fin de este proceso entre comentarios.

REM Descuentos a clientes durante un día según bolita que saquen A: REM Comienza proceso del CLIENTE INPUT "Color de la bolita";color$ INPUT "Total de la compra";tsd IF color$="ROJA" THEN

tcd=tsd*0.6 ELSE

IF color$="AMARILLA" THEN tcd=tsd*0.75

ELSE tcd=tsd

END IF ENDIF PRINT 'Total con descuento:";tcd REM Termina proceso del CLIENTE

INPUT "Otro cliente más (SI/NO)";mas$ IF mas$="NO" THEN

GOTO B ELSE

GOTO A END IF B: END

Paso 6. Pruebas y depuración:

Segunda fase:

Prueba: Color de la bolita? AMARILLA Total de la compra? 300 Total con descuento: 225 Otro cliente más (SI/NO)? SI Color de la bolita? ROJA Total de la compra? 200 Total con descuento: 120

Page 279: Computación metodología, lógica computa

264 PARTE III. PROGRAMACIÓN

Figura 8.16

Figura 8.17

Page 280: Computación metodología, lógica computa

CAPÍTULO 8. CONTROL DE EJECUCIÓN 265

Otro cliente más (SI/NO)? SI Color de la bolita? BLANCA Total de la compra? 150 Total con descuento: 150 Otro cliente más (SI/NO)? NO

PROBLEMA 2

En un supermercado un ama de casa que está de compras va metiendo en su carrito los artículos que toma de los estantes. La mujer quiere asegurarse de que el cajero le cobre bien lo que ella ha comprado, por lo que cada vez que compra un artículo distinto anota su precio, junto con la cantidad de artículos iguales que ha comprado y determina cuánto dinero se ha gastado en ese artículo y a esto le suma todo lo que se vaya gastando en los demás artículos hasta que decide que ya compró todo lo que necesitaba. Ayudarle a esta mujer a obtener el total de sus compras.

Paso 4. Diagrama de flujo (véanse Figs. 8.18 y 8.19).

Paso 5. Codificación y edición del programa:

Al igual que en el problema anterior integraremos el proceso ARTICULO al programa principal, dado que aún no hemos visto las instrucciones necesarias para tener un programa dividido en procesos.

REM Mujer de compras en un supermercado t=O A: REM Comienza proceso ARTICULO INPUT "Precio";p INPUT "Número de artículos";n sb=p*n t=t+sb REM Termina proceso ARTICULO

INPUT "Más artículos (S/N)";mas$ IF mas$ = "N" THEN

GOTO B ELSE

GOTO A END IF B: PRINT Total:";t END

Paso 6. Pruebas y depuración:

Segunda fase:

Page 281: Computación metodología, lógica computa

266 PARTE III. PROGRAMACIÓN

Figura 8.19

Figura 8.18

Prueba: Precio? 10 Número de artículos? 4 Más artículos (S/N)? S Precio? 22 Número de artículos? 5 Más artículos (S/N)? S Precio? 6.5 Número de artículos? 2 Más artículos (S/N)? N Total: 181

Page 282: Computación metodología, lógica computa

CAPÍTULO 8. CONTROL DE EJECUCIÓN 267

PROBLEMA 3

Un teatro efectúa descuentos según la edad del cliente. Determinar la cantidad de dinero que el teatro deja de percibir por cada una de las categorías. Tomar en cuenta que los niños menores de 5 años no pueden entrar al teatro y que existe un precio único en los asientos. Los descuentos se hacen tomando en cuenta la siguiente tabla:

edad descuentocategoría 1 5-14 35% categoría 2 15-19 25%categoría 3 20-45 10%categoría 4 46-65 25%categoría 5 66 - adelante 35%

Paso 4. Diagrama de flujo (véanse Figs. 8.20 y 8.21).

Paso 5. Codificación y edición del programa:

REM Descuentos en un teatro INPUT "Precio del boleto";p c1=O c2=O c3=O c4=O c5=O A: REM Proceso del CLIENTE ERROR: INPUT "Edad";e IF e<=THEN

PRINT "No pueden entrar niños menores de 5 años" GOTO ERROR END IF IF e<=14 OR e >=66 THEN

c=p*O.65 IF e<=14 THEN

c1=c1+c ELSE

c5=c5+c END IF

ELSE IF e<=19 OR e>=46 THEN

c=p*0.75 IF e<=19THEN

c2=c2+c

Page 283: Computación metodología, lógica computa

268 PARTE III. PROGRAMACIÓN

Figura 8.20

Page 284: Computación metodología, lógica computa

Figura 8.21 CAPÍTULO 8. CONTROL DE EJECUCIÓN 269

Page 285: Computación metodología, lógica computa

270 PARTE III. PROGRAMACIÓN

ELSE c4=c4+c

END IF ELSE

c=p*0.9 c3=c3+c

END IF END IF

REM Fin del proceso CLIENTE

INPUT "Más clientes (S/N)";mas$ IF mas$="N0" THEN

GOTOB ELSE

GOTO A END IF B: PRINT 'Total descontado en categoría 1 :";d PRINT 'Total descontado en categoría 2:";c2 PRINT 'Total descontado en categoría 3:";c3 PRINT "Total descontado en categoría 4:";c4 PRINT 'Total descontado en categoría 5:";c5 END

Paso 6. Pruebas y depuración:

Ejercicio: Introduzca el programa a la computadora y efectúe al menos 2 pruebas.

PROBLEMA 4

Una compañía de transportes terrestres de lujo tiene 2 tipos de camiones. Todos los camiones están divididos en 3 secciones: de Lujo, Fumar y No Fumar. Las reservaciones se hacen momentos antes de que el camión vaya a salir. Un camión puede salir cuando tenga el cupo lleno o cuando se decida que ya se esperó suficiente tiempo para llenarse. Lo que se necesita es que se haga un programa de computadora que avise cuándo un camión debe de salir.

Se proporciona una tabla con el número de asientos de lujo, fumar y no fumar de los dos tipos de camiones:

ipo Lujo Fumar No fumar1 10 16 20 2 18 20 24

Paso 4. Diagrama de flujo (véanse Figs. 8.22 y 8.23).

Page 286: Computación metodología, lógica computa

Figura 8.22

CAPÍTULO 8. CONTROL DE EJECUCIÓN 271

Page 287: Computación metodología, lógica computa
Page 288: Computación metodología, lógica computa

CAPÍTULO 8. CONTROL DE EJECUCIÓN 273

Paso 5. Codificación y edición del programa:

REM Control de una compañía de camiones INPUT 'Tipo de camión";t IF t=1 THEN

ald=1O afd=16 anfd=2O

ELSE ald=18 afd=20 anfd=24

END IF nalo=O nafo=O nanfo=O llenol$="NO" llenof$="NO" llenonf$="NO" A: REM Comienza proceso CLIENTE INPUT "Categoría";c$ IF c$="LUJO" THEN

IF llenol$="NO" THEN nalo=nalo+1 IF nalo=ald THEN

llenol$="SI" END IF

ELSE PRINT "Asientos de la sección de lujo agotados"

END IF ELSE

IF c$="FUMAR" THEN IF llenof$="NO" THEN nafo=nafo+1

IF nafo=afd THEN llenof$="SI"

END IF ELSE

PRINT "Asientos de la sección de fumar agotados" END IF

ELSE IF llenonf$="NO" THEN

nanfo=nanfo+1 IF nanfo=anfd THEN

llenonf$ = "SI"

Page 289: Computación metodología, lógica computa

274 PARTE III. PROGRAMACIÓN

END IF ELSE

PRINT "Asientos de la sección de no fumar agotados" END IF

END IF END IF REM Termina proceso CLIENTE IF llenol$="Sr AND llenof$="SI" AND llenonf$="SI" THEN

mas$= "NO" ELSE

INPUT "Espero más clientes (SI/NO)";mas$ ENDIF IF mas$="NO" THEN

GOTO B ELSE

GOTO A ENDIF B: PRINT "Ya puede salir el camión" END

Paso 6. Pruebas y depuración:

Ejercicio: Introduzca el programa a la computadora y efectúe al menos 2 pruebas.

Problemas propuestos

Terminar la metodología para la solución de problemas para la sección de problemas propuestos repetitivos simples con un número indeterminado de iteraciones del capítulo 4.

8d) ESTRUCTURAS REPETITIVAS: INSTRUCCIÓN FOR...NEXT

Instrucción: FOR...NEXT.

Función: Repetir un conjunto de instrucciones un número determinado de veces. Esta instrucción debe usarse para codificar ciclos que tengan un número determinado de iteraciones.

Equivalencias:

En algoritmo: Hasta ahora hemos visto un ciclo con un número determinado de iteraciones con la siguiente representación:

1. i← l 2. SI i > n ENTONCES

Page 290: Computación metodología, lógica computa

CAPÍTULO 8. CONTROL DE EJECUCIÓN 275

IR al paso 3 DE OTRA FORMA

C i← i + 1 IR al paso

2 3. X

En donde C es el cuerpo del ciclo y X la instrucción siguiente al ciclo. Se define que el valor inicial del contador i es 1 y se incrementa de 1 en 1 hasta llegar al valor de n, por lo que el número de iteraciones es n.

Sin embargo podemos emplear un formato más general en el cual el valor inicial del contador pueda ser diferente de 1, al igual que el valor de incremento en el contador, hasta que se llegue a un valor final. En la mayoría de los casos este formato se concretará al primer formato visto. Ésta sería su representación:

1. i←a 2. SI i > b ENTONCES

IR al paso 3 DE OTRA FORMA C i← i + s

IR al paso 2 3. X

En diagrama de flujo (véase Fig. 8.24).

Formato:

FOR i=a TO b (STEP s) C

NEXT i

Cuando la cláusula STEP es omitida se asume como STEP 1

En donde: i es una variable contador a es el valor inicial del contador b es el valor final del contador s es el valor en el cual el contador se incrementa en cada ciclo. Si s es un valor negativo el

contador se decrementará y la comparación de la condición cambiará de > a <, por lo que b deberá tener un valor menor a a.

C es el cuerpo del ciclo. Se recomienda ampliamente que el cuerpo del ciclo vaya indentado con respecto al FOR y al NEXT.

El FOR...NEXT ejecuta en ciclo el conjunto de acciones C delimitadas por el renglón del FOR y el renglón del NEXT siguiendo este algoritmo:

Page 291: Computación metodología, lógica computa

Figura 8.24

1 i ←a 2. SI i>b ENTONCES

IR al paso 3 DE OTRA FORMA

C i← i + s IR al paso 2

3. X

Cuando el valor del STEP sea negativo la condición del paso 2 cambiará a:

2. SI i< b ENTONCES

Ejemplos:

1. Diagrama de flujo (véase Fig. 8.25).

Programa:

2 7 6 PARTE III. PROGRAMACIÓN

Page 292: Computación metodología, lógica computa

Figura 8.25

REM Programa que imprime cinco veces "HOLA" empleando la instrucción FOR...NEXT PRINT "Comienza el ciclo" FOR i=1 T0 5

PRINT "HOLA" NEXT i PRINT "Fin del ciclo" END

Prueba: Comienza el ciclo HOLA HOLA HOLA

CAPÍTULO 8. CONTROL DE EJECUCIÓN 277

Page 293: Computación metodología, lógica computa

278 PARTE III. PROGRAMACIÓN

HOLA HOLA Fin del ciclo

Para entender mejor este ejemplo se escribirá el algoritmo que le corresponde a este programa:

1. DESPLEGAR "Comienza el ciclo" 2. i← 1 3. SI i>5 ENTONCES

IR al paso 4 DE OTRA FORMA DESPLEGAR "HOLA"

i← i + 1 IR al paso 3

4. DESPLEGAR "Fin del ciclo"

Como el FOR...NEXT no tiene STEP se asumió el valor de incremento en 1. Los pasos 2 y 3 de este algoritmo son los que corresponden al FOR...NEXT. La gran ventaja

al codificar el FOR...NEXT es que ya no tenemos que preocuparmos por asignar valor inicial al contador, ni por incrementarlo, ni por verificar la condición de fin del ciclo. Simplemente indicamos el valor inicial del contador, el valor final, el valor de incremento, las instrucciones del cuerpo del ciclo y el FOR...NEXT realizará las acciones necesarias para que el cuerpo del ciclo se ejecute.

2. Algoritmo:

1. i← l 2. SI i> 10 ENTONCES

IR al paso 3 DE OTRA FORMA DESPLEGAR i i← i + 1 IR al paso 2

3. X

Diagrama de flujo (véase Fig. 8.26).

Programa:

REM Programa que imprime del 1 al 1O F0R i=1 TO 10

PRINT i NEXT i END

Prueba: 1

Page 294: Computación metodología, lógica computa

2 3 4 5 6 7 8 9 10

3. Algoritmo:

1. i←3 2. SI i > 5 ENTONCES

IR al paso 3 DE OTRA FORMA

DESPLEGAR "Iteración” i ← i + s

Figura 8.26

CAPÍTULO 8. CONTROL DE EJECUCIÓN 279

Page 295: Computación metodología, lógica computa

280 PARTE III. PROGRAMACIÓN

IR al paso 2 3. FIN

Programa:

REM Programa que imprime tres veces la palabra "Iteración" FOR i=3 TO 5

PRINT "Iteración" NEXTi END

Prueba: Iteración Iteración Iteración

Si el FOR...NEXT lo reemplazamos por el siguiente FOR...NEXT haría exactamente lo mismo:

FORi=1 T0 3 PRINT "Iteración"

NEXTi

4. Algoritmo:

1. i←1 2. SI i> 11 ENTONCES

IR al paso 3 DE OTRA FORMA DESPLEGAR i i← i + 2 IR al paso 2

3. FIN

Programa:

REM Programa que imprime los seis primeros números impares FOR i = 1 TO 11 STEP 2

PRINT i NEXT i END

Esta vez el incremento es de 2 por que así lo indica la cláusula STEP. Prueba: 135

Page 296: Computación metodología, lógica computa

CAPÍTULO 8. CONTROL DE EJECUCIÓN 281

7 9 11

5. Algoritmo:

1. i← -5 2. SI i> 4 ENTONCES

IR al paso 3 DE OTRA FORMA

DESPLEGAR i i←i + 1

IR al paso 2 3. FIN

Programa:

REM Programa que imprime el rango de números (-5...4) FOR i= -5 TO 4

PRINT i NEXT i

END

Prueba: -5 -4 -3 -2 -1 0 1 2 3 4

6. Algoritmo:

1. i←6 2. SI i < -9 ENTONCES

IR al paso 3 DE OTRA FORMA DESPLEGAR i i ← i + (-3) IR al paso 2

Page 297: Computación metodología, lógica computa

282 PARTE III. PROGRAMACIÓN

3. X

Programa:

REM Programa que imprime el rango de números [B...-9] brincando de 3 en 3 FOR i=6 TO-9 STEP-3

PRINT i NEXT i END

Observe que como el contador va de un número mayor hacia un número menor, el STEP debe ir decrementando pues de lo contrario el contador jamás alcanzaría el valor final. También es de hacerse notar que cuando un FOR...NEXT contiene la cláusula STEP con un valor negativo la condición de fin de ciclo checa que el contador sea menor que el valor final, como se aprecia en el algoritmo.

Prueba: 6 3 0 -3 -6 -9

A continuación complementaremos la metodología para la solución de los problemas de tipos repetitivos simples con un número determinado de ciclos, empleando la instrucción FOR...NEXT.

Problemas resueltos

PROBLEMA 1

Calcular el promedio de calificaciones parciales de cada uno de los alumnos de un grupo de 5, sabiendo que existen tres periodos parciales.

Paso 4. Diagrama de flujo (véanse Figs. 8.27 y 8.28).

Paso 5. Codificación y edición del programa:

REM Obtener el promedio de 5 alumnos FOR i=1 T0 5

INPUT "Calificación parcial 1";c1 INPUT "Calificación parcial 2";c2 INPUT "Calificación parcial 3";c3 p = [ c 1 + c 2 + c 3 ] / 3 PRINT "El promedio es:";p

Page 298: Computación metodología, lógica computa

PRINT NEXT i END

Paso 6. Pruebas y depuración:

Segunda fase:

Prueba: Calificación parcial 1 ? 8 Calificación parcial 2? 9 Calificación parcial 3? 9 El promedio es: 8.66

Calificación parcial 1 ? 7 Calificación parcial 2? 5 Calificación parcial 3? 6 El promedio es: 6

Figura 8.27 CAPÍTULO 8. CONTROL DE EJECUCIÓN 283

Page 299: Computación metodología, lógica computa

284 PARTE III. PROGRAMACIÓN

Figura 8.28

Calificación parcial 1? 9 Calificación parcial 2? 10 Calificación parcial 3? 6 El promedio es: 8.33

Calificación parcial 1? 10 Calificación parcial 2? 9 Calificación parcial 3? 10 El promedio es: 9.66

Calificación parcial 1? 8 Calificación parcial 2? 7 Calificación parcial 3? 8 El promedio es: 7.66

PROBLEMA 2

Una compañía de seguros tiene contratados a n vendedores, cada uno de los cuales hace tres ventas a la semana. Su política de pagos es que un vendedor recibe un sueldo base, más un 10% extra por comisiones de sus ventas. El gerente de la compañía desea saber cuánto dinero obtendrá en la semana cada vendedor por concepto de comisiones por las tres ventas realizadas, y cuánto tomando en cuenta su sueldo base y sus comisiones.

Paso 4. Diagrama de flujo (véanse Figs. 8.29 y 8.30).

Page 300: Computación metodología, lógica computa

Figura 8.29

Paso 5. Codificación y edición del programa:

REM Pago a vendedores en una compañía de seguros INPUT "Número de vendedores";n PRINT FOR i=1 TO n

INPUT "Sueldo base";sb INPUT 'Venta 1 ";v1 INPUT 'Venta 2";v2 INPUT 'Venta 3";v3 tv=v1+v2+v3 c=tv*0.1 tr=sb+c

CAPÍTULO 8. CONTROL DE EJECUCIÓN 285

Page 301: Computación metodología, lógica computa

286 PARTE III. PROGRAMACIÓN

PRINT "Comisión:";c PRINT 'Total a recibir:";tr PRINT

NEXT i END

Paso 6. Pruebas y depuración:

Segunda fase:

Prueba: Número de vendedores? 3

Sueldo base? 3000 Venta 1? 10000 Venta 2? 20000 Venta 3? 17000 Comisión: 4700

Figura 8.30

Page 302: Computación metodología, lógica computa

CAPÍTULO 8. CONTROL DE EJECUCIÓN 287 Total a recibir: 7700

Sueldo base? 4000 Venta 17 45000 Venta 2? 32000 Venta 3? 33000 Comisión: 11000 Total a recibir: 15000 Sueldo base? 2500 Venta 1? 15000 Venta 2? 20000 Venta 3? 10000 Comisión: 4500 Total a recibir: 7000

PROBLEMA 3

En una empresa se requiere calcular el salario semanal de cada uno de los n obreros que laboran en ella. El salario se obtiene de la siguiente manera:

—Si el obrero trabaja 40 horas o menos se le paga $4 por hora. —Si el obrero trabaja más de 40 horas se le paga $4 por cada una de las primeras 40 horas y $6

por cada hora extra.

Paso 4. Diagrama de flujo (véanse Figs. 8.31 y 8.32).

Paso 5. Codificación y edición del programa:

REM Salario semanal de los obreros de una empresa INPUT "Número de obreros";n PRINT FOR i=1 ton

INPUT "Horas trabajadas";ht IF ht > 40 THEN

he=ht-40 s=40*4+he*6

ELSE s=ht*4

END IF PRINT "Salario:";s PRINT

NEXT i END

Paso 6. Pruebas y depuración:

Segunda fase:

Page 303: Computación metodología, lógica computa

288 PARTE III. PROGRAMACIÓN

Prueba: Número de obreros? 4

Horas trabajadas? 65 Salario: 310

Horas trabajadas? 40 Salario: 160

Horas trabajadas? 35 Salario: 140

Horas trabajadas? 80 Salario: 400

Figura 8.31

Page 304: Computación metodología, lógica computa

Figura 8.32

PROBLEMA 4

Determinar cuántos hombres y cuántas mujeres se encuentran en un grupo de n personas, suponiendo que los datos son extraídos alumno por alumno.

Paso 4. Diagrama de flujo (véanse Figs. 8.33 y 8.34).

Paso 5. Codificación y edición del programa:

REM Número de hombres y mujeres de un grupo INPUT "Número de personas en el grupo";n PRINT h=0 m=0

CAPÍTULO 8. CONTROL DE EJECUCIÓN 289

Page 305: Computación metodología, lógica computa

290 PARTE III. PROGRAMACIÓN

F0R i=1 TO n INPUT "Sexo";s$ IF s$ ="MASCULINO" THEN

h=h+1 ELSE m=m+1 END IF

NEXT i PRINT "Número de hombres:";h PRINT "Número de mujeres:";m END

Paso 6. Pruebas y depuración:

Figura 8.33

Page 306: Computación metodología, lógica computa

Figura 8.34

Segunda fase:

Prueba: Número de personas en el grupo? 6 Sexo? MASCULINO Sexo? MASCULINO Sexo? FEMENINO Sexo? FEMENINO Sexo? MASCULINO Sexo? MASCULINO Número de hombres: 4 Número de mujeres: 2

PROBLEMA 5

El Departamento de Seguridad Pública y Tránsito del D.F., desea saber: de n autos que entran a la

CAPÍTULO 8. CONTROL DE EJECUCIÓN 291

Page 307: Computación metodología, lógica computa

292 PARTE III. PROGRAMACIÓN

ciudad de México cuántos entran con calcomanía de cada color. Conociendo el último dígito de la placa de cada automóvil se puede determinar el color de la calcomanía utilizando la siguiente relación:

Dígito Color

1o2 amarilla3o4 rosa 5o6 roja 7o8 verde9oO azul

Paso 4. Diagrama de flujo (véanse Figs. 8.35 y 8.36).

Paso 5. Codificación y edición del programa:

REM Autos con colores de calcomanías distintas INPUT "Número de autos del muestreo";n PRINT am=O rs=O rj=O ve=O az=O FOR i=1 TO n

INPUT "Ultimo dígito de la placa";ud IF ud=1 0R ud=2 THEN

am=am+1 ELSE

IF ud=3 0R ud=4 THEN rs=rs+1

ELSE IF ud=5 0R ud=6 THEN rj=rj+1

ELSE IF ud=7 0Rud = 8 THEN

ve=ve+1 ELSE

IF ud=9 0R ud=0 THEN az=az+1

ELSE PRINT "Dígito erróneo" i ← i - 1 END IF END IF END IF END IF

Page 308: Computación metodología, lógica computa

CAPÍTULO 8. CONTROL DE EJECUCIÓN 293

END IF NEXT i PRINT PRINT "Autos con calcomanía amarilla:";am PRINT "Autos con calcomanía rosa:";rs PRINT "Autos con calcomanía roja:";rj PRINT "Autos con calcomanía verde:";ve PRINT "Autos con calcomanía azul:";az END

Paso 6. Pruebas y depuración: Figura 8.35

Page 309: Computación metodología, lógica computa

294 PARTE III. PROGRAMACIÓN Figura 8.36

Page 310: Computación metodología, lógica computa

CAPÍTULO 8. CONTROL DE EJECUCIÓN 295

Segunda fase:

Prueba: Número de autos del muestreo? 10

Último dígito de la placa? 3 Último dígito de la placa? 1 Último dígito de la placa? 4 Último dígito de la placa? 9 Último dígito de la placa? 8 Último dígito de la placa? 4 Último dígito de la placa? 0 Último dígito de la placa? 23 Último dígito erróneo Último dígito de la placa? 2 Último dígito de la placa? 3 Último dígito de la placa? 9

Autos con calcomanía amarilla: 2 Autos con calcomanía rosa: 4 Autos con calcomanía roja: 0 Autos con calcomanía verde: 1 Autos con calcomanía azul: 3

PROBLEMA 6

Obtener el promedio de calificaciones de un grupo de n alumnos.

Paso 4. Diagrama de flujo (véanse Figs. 8.37 y 8.38).

Paso 5. Codificación y edición del programa:

REM Obtener el promedio de calificaciones de un grupo INPUT "Número de alumnos";n PRINT s=O FOR i=1 TO n

INPUT "Calificación";c s=s+c

NEXT i p=s/n PRINT PRINT "Promedio del grupo:";p END

Page 311: Computación metodología, lógica computa

296 PARTE III . PROGRAMACIÓN

Paso 6. Pruebas y depuración:

Prueba:

Figura 8.37

Page 312: Computación metodología, lógica computa

Figura 8.38

Número de alumnos? 5

Calificación? 7 Calificación? 5 Calificación? 8 Calificación? 10 Calificación? 10

Promedio del grupo: 8

PROBLEMA 7

Una persona desea invertir su dinero en un banco, el cual le otorga un 2% de interés mensual sobre la cantidad invertida. ¿Cuál será la cantidad de dinero que tendrá luego de un año si la ganancia de cada mes es reinvertida?

Paso 4. Diagrama de flujo (véase Fig. 8.39).

Ejercicio: Realizar al menos dos pruebas a este diagrama de flujo para verificar su funcionali-dad.

Paso 5. Codificación y edición del programa:

REM Ganancia anual en un banco con reinversión mensual INPUT "Cantidad inicial";c F0R i=1 T0 12 c=c*1.02

CAPÍTULO 8. CONTROL DE EJECUCIÓN 297

Page 313: Computación metodología, lógica computa

298 PARTE III. PROGRAMACIÓN

NEXT i PRINT "Cantidad final";c END

Figura 8.39

Page 314: Computación metodología, lógica computa

CAPÍTULO 8. CONTROL DE EJECUCIÓN 299

Paso 6. Pruebas y depuración:

Ejercicio: Introduzca el programa a la computadora y efectúe al menos dos pruebas.

PROBLEMA 8

Calcular el promedio de edades de hombres, mujeres y de todo un grupo de n alumnos.

Paso 4. Diagrama de flujo (véanse Figs. 8.40 y 8.41).

Paso 5. Codificación y edición del programa:

REM Promedio de edades de un grupo de hombres y mujeres INPUT "Número de alumnos";n PRINT nh=O nm= O seh=O sem= O FOR i=1 TO n

INPUT "Edad";e INPUT "Sexo";s$ IF s$="MASCULINO" THEN

nh=nh+1 seh=seh+e ELSE

nm=nm + 1 sem=sem+e

END IF NEXT i peh=seh / nh pem=sem / nm pg= [seh+sem]/n PRINT PRINT "Promedio de edades de hombres:";peh PRINT "Promedio de edades de mujeres:";pem PRINT "Promedio de edades del grupo:";pg END

Paso 6. Pruebas y depuración:

Segunda fase:

Prueba: Número de alumnos? 5

Page 315: Computación metodología, lógica computa

300 PARTE III. PROGRAMACIÓN

Figura 8.40

Page 316: Computación metodología, lógica computa

CAPÍTULO 8. CONTROL DE EJECUCIÓN 301

Figura 8.41

Edad? Sexo? Edad? Sexo? Edad? Sexo? Edad? Sexo? Edad? Sexo?

18 FEMENINO 17 FEMENINO 20 MASCULINO 19 FEMENINO 24 MASCULINO

Promedio de edades de hombres: 22 Promedio de edades de mujeres: 18

Page 317: Computación metodología, lógica computa

302 PARTE III. PROGRAMACIÓN

Promedio de edades del grupo: 19.6

PROBLEMA 9

Una persona debe realizar un muestreo de 100 personas para determinar el promedio de peso de los niños, jóvenes, adultos y viejos que existen en su zona habitacional. Para ello, conforme va encon-trando a las personas, introduce los datos a su computadora, la cual, mediante un programa, las clasifica y despliega los cuatro promedios que la persona requiere. Se determinan las categorías con base en el siguiente cuadro:

Categoría Edad

Niños 0-12Jóvenes 13-29Adultos 30-59Viejos 60 - adelante

Paso 4. Diagrama de flujo (véanse Figs. 8.42 y 8.43).

Paso 5. Codificación y edición del programa:

REM Promedio de niños, jóvenes, adultos y viejos

nn=O nj=O na=O nv=O spn=O spj=O spa=O spv=O FOR i=1 TO 1OO

INPUT "Edad";e INPLJT "Peso";p

IF e< = 12 THEN nn=nn+1 spn=spn+p

ELSE IF e< = 29 THEN

nj=nj+1 spj=spj+p

ELSE IFe<=59THEN

na=na+1 spa=spa+p

ELSE nv=nv+1

Page 318: Computación metodología, lógica computa

Figura 8.42

CAPÍTULO 8. CONTROL DE EJECUCIÓN 303

Page 319: Computación metodología, lógica computa

304 PARTE III. PROGRAMACIÓN Figura 8.43

Page 320: Computación metodología, lógica computa

CAPÍTULO 8. CONTROL DE EJECUCIÓN 305

spv=spv+p END IF

END IF END IF

NEXT i ppn=spn/nn ppj=spj/nj ppa=spa/na ppv=spv/nv PRINT PRINT "Promedio de pesos de niños:";ppn PRINT "Promedio de pesos de jóvenes:";ppj PRINT "Promedio de pesos de adultos:";ppa PRINT "Promedio de pesos de viejos:";ppv END

Paso 6. Pruebas y depuración:

Ejercicio: Introduzca el programa a la computadora y efectúe una prueba.

PROBLEMA 10

Encontrar el menor valor de un conjunto de n números dados.

Paso 4. Diagrama de flujo (véanse Figs. 8.44 y 8.45). Paso 5.

Codificación y edición del programa:

REM Encontrar el menor número de n dados INPUT "Cuantos números";n PRINT INPUT "Número",r F0R i=2T0 n

INPUT "Número";num IF num<r THEN

r=num END IF

NEXT i PRINT PRINT "El menor es:";r END

Paso 6. Pruebas y depuración:

Segunda fase:

Page 321: Computación metodología, lógica computa

306 PARTE III. PROGRAMACIÓN

Prueba: Cuántos números? 5

Número? 4 Número? 17

Figura 8.44

Page 322: Computación metodología, lógica computa

Figura 8.45

Número? -15 Número? 8 Número? 8

El menor es: -15

PROBLEMA 11

Encontrar el mayor valor de un conjunto de n números dados.

Paso 4. Diagrama de flujo (véase Fig. 8.46).

Paso 5. Codificación y edición del programa:

REM Encontrar el mayor número de n dados INPUT "Cuantos números";i; PRINT

CAPÍTULO 8. CONTROL DE EJECUCIÓN 307

Page 323: Computación metodología, lógica computa

308 PARTE III. PROGRAMACIÓN

Figura 8.46

Page 324: Computación metodología, lógica computa

CAPÍTULO 8. CONTROL DE EJECUCIÓN 309

INPUT "Número";r FOR i=2 T0 n

INPUT "Número";num IF num>r THEN

r=num END IF

NEXT i PRINT PRINT "El mayor es:";r END

Paso 6. Pruebas y depuración:

Segunda fase:

Prueba: Cuántos números? 5

Número? 4 Número? 17 Número? -15 Número? 8 Número? 8

El mayores: 17

Problemas propuestos

Terminar la metodología para la solución de problemas para la sección de problemas propuestos repetitivos simples, con un número determinado de iteraciones del capítulo 4.

Page 325: Computación metodología, lógica computa

310 PARTE I I I . PROGRAMACIÓN

RESUMEN

Las instrucciones de control de ejecución se clasifican en:

a) Control de ejecución condicional

Instrucción IF... THEN... ELSE: permite la ejecución de un conjunto de instrucciones depen-diendo del resultado de la evaluación de una condición dada. Esta instrucción es necesaria para resolver problemas de tipo selectivo, tanto simples como compuestos.

b) Control de ejecución incondicional

Instrucción GOTO: brincar incondicionalmente a otra parte del programa marcada con una etiqueta. El uso de la instrucción GOTO no es recomendable a menos de que se use en combinación con la instrucción IF... THEN... ELSE para la codificación de ciclos como un número indeterminado de iteraciones.

c) Estructuras repetitivas

1) Combinación de las instrucciones IF...THEN...ELSE y GOTO: esta combinación es usada para codificar ciclos con un número indeterminado de iteraciones.

2) Instrucción FOR...NEXT: esta instrucción es usada para repetir un conjunto de instruccio- nes un número determinado de veces. Debe usarse para codificar ciclos que tengan un número determinado de iteraciones.

Page 326: Computación metodología, lógica computa

CAPITULO

9

FUNCIONES

OBJETIVOS

9.1 El alumno definirá qué es una función. 9.2 El alumno definirá los diferentes tipos de funciones.

a) Predefinidas — Numéricas — Alfanuméricas

b) Definidas por el usuario 9.2 El alumno aplicará los pasos de la metodología para resolver problemas con funciones predefi-

nidas y definidas por el usuario.

311

Page 327: Computación metodología, lógica computa

CAPITULO

9

FUNCIONES

La programación estructurada está basada, fundamentalmente, en la descomposición de un problema general, en subproblemas más fáciles de resolver. Uno de los recursos que Quick Basic provee para descomponer un problema en subproblemas son las funciones.

Una función es un proceso que puede ser utilizado en un programa como parte de una expresión. Una característica muy importante de las funciones es que después de ser ejecutadas regresan un

valor. El formato general de las funciones es:

Función (parámetro) donde: Función, es el nombre asignado a la función Parámetro, es el dato sobre el cual se va a aplicar la función.

Un ejemplo de función es la de obtener la raíz cuadrada de un número. Quick Basic cuenta con la función SQR, que ayuda a obtenerla. Si escribiéramos un programa que estuviera conformado por las líneas:

INPUT "Da un número"; a PRINT SQR a

Quick Basic primero aceptaría por teclado un dato que pasaría a ser el valor de la variable a. Después tendría que ejecutar la función SQR utilizando como parámetro la variable a y una vez hecho esto podría desplegar en pantalla el valor obtenido.

A diferencia de los procesos que hemos utilizado en los capítulos anteriores, en este ejemplo se puede visualizar cómo es que la función SQR es un proceso que regresa un valor después de ser ejecutado.

Existen dos tipos de funciones:

a) Predefinidas b) Definidas por el usuario

312

Page 328: Computación metodología, lógica computa

CAPÍTULO 9. FUNCIONES 313

Las primeras son funciones que Quick Basic incluye en su conjunto de instrucciones y las segundas son creadas por el usuario mismo.

La forma de utilizarlas es la misma, aunque en el caso de las definidas por el usuario será necesario aprender a crearlas.

9a) FUNCIONES PREDEFINIDAS

Las funciones predefinidas que incluye Quick Basic se clasifican en:

1) Numéricas 2) Alfanuméricas

1) Funciones numéricas

Son funciones que al ser ejecutadas trabajan con valores numéricos.

A continuación describiremos el formato y la función de las funciones numéricas más comunes:

Funciones trigonométricas

Función: SIN

Funcionamiento: obtiene el seno de un ángulo en radianes.

Formato: SIN (x)

donde: x Valor en radianes al cual se aplicará la función seno.

Ejemplo; a = SIN ( 1 ) PRINT "El seno de 1 es "; a

despliega: El seno de 1 es 0.017452406

Función: COS

Funcionamiento: obtiene el coseno de un ángulo en radianes.

Formato: C O S ( x )

donde:

Page 329: Computación metodología, lógica computa

314 PARTE III. PROGRAMACIÓN

x Valor en radianes al cual se aplicará la función coseno.

Ejemplo; a = COS [1] PRINT "El coseno de 1 es "; a

despliega: El coseno de 1 es 0.999847695

Función: TAN

Funcionamiento: obtiene la tangente de un ángulo en radianes.

Formato: TAN( x)

donde: x Valor en radianes al cual se aplicará la función tangente.

Ejemplo; a = TAN [1 ] PRINT "La tangente de 1 es "; a

despliega: La tangente de 1 es 0.017455064

Función: ARCTAN

Funcionamiento: obtiene el arcotangente de un ángulo en radianes.

Formato: ARCTAN(x)

donde: x Valor en radianes al cual se aplicará la función arcotangente.

Ejemplo; a = ARCTAN ( 1 ] PRINT "El arcotangente de 1 es "; a

despliega: El arcotangente de 1 es 45

Funciones aritméticas

Función: SQR

Page 330: Computación metodología, lógica computa

CAPÍTULO 9. FUNCIONES 315

Funcionamiento: obtiene la raíz cuadrada de un número.

Formato: SQR(x)

donde: x Expresión numérica sobre la cual se aplicará la función raíz cuadrada.

Ejemplo: 1) PRINT SOR [25 ]

despliega: 5

2) a = SQR[25 ]1 5 PRINT a

despliega: 10

Función: ABS

Funcionamiento: obtiene el valor absoluto de un número.

Formato: ABS(x)

donde: x Expresión numérica sobre la cual se aplicará la función de valor absoluto.

Ejemplo; 1) INPUT "Da un número"; a INPUT "Da otro número"; b dif = a - b PRINT "La diferencia es "; ABS [ dif ]

Prueba: Da un número? 10 Da otro número? 15 La diferencia es 5

Función: FIX

Funcionamiento: elimina los dígitos que se encuentran a la derecha del punto decimal de una expresión numérica.

Formato:

Page 331: Computación metodología, lógica computa

316 PARTE III. PROGRAMACIÓN

FIX ( X ) donde:

x Expresión numérica sobre la cual se aplicará la función.

Ejemplo; 1) a = FIX [ 99.99 ]

PRINT a

despliega: 99

2) a = FIX [ -99.99 ] PRINT a

despliega: -99

Función: INT

Funcionamiento: obtiene el valor entero más cercano. Si la parte decimal es de 0.5 o más aproxima al valor entero inmediato superior y en caso contrario aproxima al valor entero inmediato inferior.

Formato: INT (x)

donde: x Expresión numérica sobre la cual se aplicará la función.

Ejemplo; 1) a = INT [ 99.99 ]

PRINT a

despliega: 100

2) a = INT[ -99.99 ] • PRINT a

despliega: -98

3) a = INT[ 99.49 ] PRINT a

despliega: 99

Page 332: Computación metodología, lógica computa

CAPÍTULO 9. FUNCIONES 317

Problemas resueltos

PROBLEMA 1

La calificación de matemáticas de un alumno se obtiene sumando los porcentajes correspondientes a tareas y examen, y aproximando este valor al entero inmediato superior si la parte decimal es de 0.5 o más, o al entero inmediato inferior en caso contrario. El promedio de las calificaciones de cuatro tareas equivalen al 15% y el examen equivale al 85%. Obtener la calificación de un alumno.

Paso 1. Definición del problema: Igual a la redacción del problema

Paso 2. Planeación de la solución:

Será necesario obtener el promedio de las cuatro tareas del alumno, aplicando la fórmula:

promedio de tareas = (t1 + t2 + t3 + t4 ) / 4

Los porcentajes correspondientes a tareas y examen se obtienen aplicando las fórmulas:

porcentaje de tareas = promedio de tareas x 0.15

porcentaje de examen = examen X 0.85

El total de puntos estaría expresado por:

total = porcentaje de tareas + porcentaje de examen

Finalmente se deberá aproximar la calificación al entero inmediato superior o inferior; para esto utilizaremos la función INT, por lo que la fórmula quedaría:

calificación = INT (total)

SALIDAS: calificación ENTRADAS: calificación de cada tarea y de examen DATOS ADICIONALES: A partir de 0.5 la calificación sube al entero inmediato superior y en caso contrario baja al entero inmediato inferior.

Paso 3. Algoritmo:

1. PEDIR t1, t2, t3, t4, ex 2. promt ← (t1 + t2 + t3 + t4 ) / 4 3. pt ←promt * 0.15 4. pex ← ex * 0.85 5. tot ← pt + pex 6. cal ← INT (tot) 7. DESPLEGAR cal

Page 333: Computación metodología, lógica computa

318 PARTE III. PROGRAMACIÓN

Figura 9.1

Paso 4. Diagrama de flujo (véase Fig. 9.1).

Paso 5. Codificación y edición del programa:

REM Promedio de matemáticas INPUT "Calificación de la tarea 1"; t1 INPUT "Calificación de la tarea 2"; t2 INPUT "Calificación de la tarea 3"; t3

Page 334: Computación metodología, lógica computa

CAPÍTULO 9. FUNCIONES 319

INPUT "Calificación de la tarea 4"; t4 INPUT "Calificación del examen"; ex promt = [ t1 + t2 + t3 + t4 ] / 4 pt = promt * 0.15 pex = ex * 0.85 tot = pt + pex cal = INT (tot ] PRINT "La calificación es:";cal END

Paso 6. Pruebas y depuración:

Calificación de la tarea 1? 8 Calificación de la tarea 2? 9 Calificación de la tarea 3? 7 Calificación de la tarea 4? 9 Calificación del examen? 8.5 La calificación es: 8

PROBLEMA 2

Dado un número determinar si es primo o no.

Paso 1. Definición del problema: Igual a la redacción del problema

Paso 2. Planeación de la solución: Sabemos que un número n es primo si sólo es divisible entre sí mismo y la unidad, es decir, si la división es exacta solamente cuando se divide entre uno y n. Por lo tanto un número no es primo cuando es divisible entre cualquier número que esté entre 2 y el número anterior a n. Así, sólo basta con averiguar esto último para decir que el número no es primo, y en caso contrario será un número primo.

Por lo tanto se empleará un ciclo con un número determinado de iteraciones que empezará en la iteración 2 y terminará en la n-1, empleando el valor del contador para determinar si el número es divisible entre éste. En caso de que el número sea divisible entre cualquier valor de este rango ya no tendrá caso seguir con el ciclo y se forzará a que el contador tome el último valor del rango para que la condición de fin de ciclo sea verdadera.

Para saber si un número a es divisible entre otro b basta con saber si existe residuo en la división entre ambos. Esto se logra de la siguiente manera con la función FIX:

residuo = a / b - FIX(a / b)

Si el residuo es cero entonces a es divisible entre b.

SALIDAS: Letrero que indique si el número es primo o no

Page 335: Computación metodología, lógica computa

320 PARTE III. PROGRAMACIÓN

ENTRADAS: n DATOS ADICIONALES: Un número es primo cuando únicamente es divisible entre sí mismo y 1.

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

n a número a determinar si es primo o no i a contador de iteraciones primo$ a bandera que indica si el número es primo o no res a residuo

1. PEDIR n 2. primo$ ← "SI" 3. i←2 4. SI i > n-1 ENTONCES

IR al paso 5 DE OTRA FORMA

DIVISIBLE i←i + 1 IR al paso 4

5. SI primo$ = "SI" ENTONCES DESPLEGAR "Sí es primo"

DE OTRA FORMA DESPLEGAR "No es primo"

Proceso DIVISIBLE:

1. res ←n / i - FIX(n / i) 2. SI res = 0 ENTONCES

primo$ ← "NO" i←n - 1

Paso 4. Diagrama de flujo (véanse Figs. 9.2 y 9.3).

Paso 5. Codificación y edición del programa:

REM Programa que determina si un número es primo o no INPUT "Da un número mayor que cero"; n primo$="SI" F0R i = 2 T0 n-1

res = n / i - FIX(n / i) IF res = O THEN primo$ = "NO" i = n -- 1 END IF

Page 336: Computación metodología, lógica computa

NEXT i IF primo$ = "SI" THEN

PRINT "Sí es primo"

Figura 9.2

CAPÍTULO 9. FUNCIONES 321

Page 337: Computación metodología, lógica computa

Figura 9.3

ELSE PRINT "No es primo"

END IF END

NOTA: Observe que los números 1 y 2, que son primos, se imprime que lo son pues no entran al ciclo, y el valor de la bandera indica que son primos.

Problemas propuestos

1) Pedir n números con decimales e imprimir cada uno de ellos eliminando la parte decimal. 2) Pedir n números, convertir cada uno a positivo e imprimir su raíz cuadrada, 3) Dados dos números, obtener el cociente y el residuo de dividir el primero entre el segundo. 4) Determinar si un número es múltiplo de otro. Se sabe que un número es múltiplo de otro cuando

la división del segundo entre el primero es exacta. 5) Dado un número, determinar todos sus múltiplos empezando por 2. 6) Dado un ángulo en radiantes, obtener su cosecante, si se sabe que la cosecante de un ángulo es

el inverso del seno, es decir:

cosecante(x) = 1/ seno(x)

322 PARTE 111. PROGRAMACIÓN

Page 338: Computación metodología, lógica computa

CAPÍTULO 9. FUNCIONES 323

2) FUNCIONES ALFANUMÉRICAS

Son funciones que al ser ejecutadas trabajan con valores alfanuméricos. A continuación describiremos las funciones alfanuméricas más comunes en términos de su formato

y funcionamiento.

Función: LEFT$

Funcionamiento: obtiene determinado número de caracteres empezando por el extremo izquierdo.

Formato: LEFT$ ( expresión alfanumérica, cantidad )

donde: expresión alfanumérica Es la expresión sobre la cual se aplicará la función.

cantidad Es una expresión numérica que indica el número de caracteres que se desean obtener del lado izquierdo de la expresión alfanumérica.

Ejemplos; 1) a$ = "María Morales"

PRINT LEFT$( a$.5 )

despliega: María

2) a$ = "María Morales" PRINT LEFT$[ a$,7 ]

despliega: María M

Nótese que al contar los siete caracteres que se encuentran del lado izquierdo, el espacio queda incluido entre ellos debido a que el espacio también es un carácter.

Función: RIGHT$

Funcionamiento: obtiene determinado número de caracteres empezando por el extremo derecho.

Formato: RIGHT$ ( expresión alfanumérica, cantidad )

donde: expresión alfanumérica Es la expresión sobre la cual se aplicará la función.

cantidad Es una expresión numérica que indica el número de caracteres que se desean obtener del lado derecho de la expresión alfanumérica.

Page 339: Computación metodología, lógica computa

324 PARTE III. PROGRAMACIÓN

Ejemplos; 1) a$ = "María Morales"

PRINT RIGHT$(a$,5 )

despliega: rales

2) a$ = "María Morales" PRINT RIGHT$( a$,9 )

despliega: a Morales

Nótese que esta función obtiene los caracteres a partir del extremo derecho, pero conserva el orden original.

Función: MID$

Funcionamiento: obtiene determinado número de caracteres empezando en determinada posición.

Formato: MID$ ( expresión alfanumérica, posición inicial, cantidad )

donde: expresión alfanumérica: Es la expresión sobre la cual se aplicará la función.

posición inicial Es la posición donde se encuentra el primer carácter a obtener.

cantidad Es una expresión numérica que indica el número de caracteres a obtener a partir de la posición inicial.

Ejemplos; 1) a$ = "María Morales"

PRINT MID$( a$,2,3 )

despliega: arí

Nótese que a partir de la posición 2 del string, que es la letra a de María, se tomaron 3 caracteres que son la propia a, la r y la í.

Función: LEN

Funcionamiento: obtiene el número de caracteres que posee un dato alfanumérico.

Formato:

Page 340: Computación metodología, lógica computa

CAPÍTULO 9. FUNCIONES 325

LEN ( expresión alfanumérica ) donde:

expresión alfanumérica Es la expresión sobre la cual se aplicará la función.

Ejemplos: 1) a$ = "María Morales"

PRINT LEN( a$ )

despliega: 13

Función: SPACE$

Funcionamiento: obtiene una cantidad determinada de espacios.

Formato: SPACE$ ( expresión numérica )

donde: expresión numérica Cantidad de espacios que se desean obtener.

Ejemplos;

1) PRINT "hola"; SPACE$(5); "Buenos"; SPACE$(5); "días-

despliega: hola buenos días

Concatenación de expresiones alfanuméricas

La operación de concatenar dos o más expresiones alfanuméricas consiste en unirlas por medio del operador +.

Cuando en una expresión el operador utilizado es el operador + y los operandos son de tipo alfanumérico, la operación que Quick Basic realiza es la de concatenación, y si los operandos son de tipo numérico, se lleva a cabo la operación suma.

Los espacios en blanco se representan poniendo entre comillas cuantos espacios en blanco se deseen. Por ejemplo, la expresión " "'es un espacio en blanco. También se le conoce como carácter nulo al hecho de abrir y cerrar comillas sin poner nada entre ellas, de la siguiente manera " ".

Ejemplos; 1) a$ = "Buenos días"

INPUT "Cuál es tu nombre?"; nom$ PRINT a$ + nom$

prueba: Cuál es tu nombre? María

Page 341: Computación metodología, lógica computa

3 2 6 PARTE III. PROGRAMACIÓN

Buenos díasMaría

Nótese cómo el operador + une los dos datos alfanuméricos y de hecho quedan juntos; si se deseara que quedaran separados tendría que interponerse un espacio entre ellos.

2) a$ = "Buenos días" b$ = "" INPUT "Cuál es tu nombre? "; nom$ PRINT a$ + b$ + nom$

o bien

2) a$ = "Buenos días " INPUT "Cuál es tu nombre?"; nom$ PRINT a$ + nom$

prueba: Cuál es tu nombre? María Buenos días María

Un programa equivalente al anterior sería hacer uso de la función SPACE$ y quedaría así:

3) a$ = "Buenos días" b$ = SPACE$(1) INPUT "Cuál es tu nombre?"; nom$ PRINT a$ + b$ + nom$

prueba: Cuál es tu nombre? María Buenos días María

Problemas resueltos

PROBLEMA 1

Dada una frase obtener el número de palabras que contiene. Paso J. Definición del problema: Igual a la redacción del problema Paso 2. Planeación de la solución: Sabemos que para encontrar el número de palabras que contiene una frase, podemos contar el número de espacios que contiene y sumarle uno.

Para contar el número de espacios que contiene la frase necesitaremos utilizar un ciclo con determinado número de iteraciones que contendrá un proceso que se repetirá una vez por cada carácter que contenga la frase y dejará de repetirse cuando se llegue al último carácter.

Page 342: Computación metodología, lógica computa

CAPÍTULO 9. FUNCIONES 327

Para saber el límite del ciclo haremos uso de la función LEN, la que nos regresará el número de caracteres que tiene la frase. Así el ciclo quedaría:

1. PEDIR frase 2. contador de espacios = 0 3. contador de letras = 1 4. Obtener longitud de la frase 5. SI contador de letras > longitud ENTONCES

IR al paso 6 DE OTRA FORMA ANALIZA

contador de letras = contador de letras + 1 IR al paso 5

6. número de palabras = contador de espacios + 1 7. DESPLEGAR número de palabras

El proceso que está dentro del ciclo estará compuesto de las siguientes acciones:

ANALIZA:

1. Tomar un carácter 2. SI carácter tomado = espacio ENTONCES

incrementar contador de espacios en uno

Los datos del problema son:

SALIDAS: Número de palabras que tiene una frase ENTRADAS: frase DATOS ADICIONALES: Ninguno

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

f$ a frase ce a contador de espacios cl a contador de letras 1 a longitud de la frase c$ a un carácter de la np a número de palabras A a proceso ANALIZA

1. PEDIR f$

2. c ←0 3. cl ← 1 4. I ←LEN(f$)

Page 343: Computación metodología, lógica computa

328 PARTE III. PROGRAMACIÓN

5. SI cl > 1 ENTONCES IR al paso 6 DE OTRA FORMA A

cl ← cl + 1 IR al paso 5

6. np ← ce + 1 7. DESPLEGAR "la frase tiene", np, " palabras"

A: 1. c$ ←MID$( f$, cl, 1) 2. SI c$ = SPACE$(1) ENTONCES

ce ← ce + 1

3. FINP

Paso 4. Diagrama de flujo (véase Fig. 9.4).

Paso 5. Codificación y edición del programa:

REM Programa que obtiene el número de palabras de una frase INPUT "Da la frase";f$ ce=O I = LEN( f$ ) FOR cl=1 TO I

c$= MID$ (f$, cl, 1 ) IF c$=SPACE$[1] THEN

ce=ce + 1 END IF

NEXT cl np= ce +1 PRINT "La frase tiene"; np; "palabras" END

Paso 6. Pruebas y depuración del programa:

Se llevará a cabo la primera fase de pruebas:

f$ ←Buenos días México ce ←0 1 ←18 cl← 1 Ejecuta proceso A por primera vez. c$←B

cl←2 Ejecuta proceso A por segunda vez.

Page 344: Computación metodología, lógica computa

Figura 9.4

CAPÍTULO 9. FUNCIONES 329

Page 345: Computación metodología, lógica computa

330 PARTE III. PROGRAMACIÓN

c$←u cl←3 Ejecuta proceso A por tercera vez. c$←e cl←4 Ejecuta proceso A por cuarta vez. c$←n cl←5 Ejecuta proceso A por quinta vez. C$ ←0 cl ←6 Ejecuta proceso A por sexta vez. c$←s

cl ←7 Ejecuta proceso A por séptima vez. c$← ce ← 1

cl←8 Ejecuta proceso A por octava vez. c$←d

cl←9 Ejecuta proceso A por novena vez. c$←í c$ ←10 Ejecuta proceso A por décima vez. c$←a

cl← 11 Ejecuta proceso A por undécima vez. c$ ←s Cl←12 Ejecuta proceso A por duodécima vez. c$← ce ← 2

cl← 13 Ejecuta proceso A por decimotercera vez.

Page 346: Computación metodología, lógica computa

CAPÍTULO 9. FUNCIONES 331

c$←M

cl← 14 Ejecuta proceso A por decimocuarta yez. c$←é

cl ←15 Ejecuta proceso A por decimoquinta vez. c$←x

cl ←16 Ejecuta proceso A por decimosexta vez. c$←i

cl← 17 Ejecuta proceso A por decimoséptima vez. c$←c

cl ←18 Ejecuta proceso A por decimoctava vez. c$ ← o

cl← 19 Debido a que el valor de el es mayor que el de 1, se sale del ciclo.

np ←3 Despliega: La frase tiene 3 palabras

En la segunda fase de pruebas se observará en la pantalla lo siguiente:

Da la frase? Buenos días México La frase tiene 3 palabras

Ejercicio: Introducir el programa en la computadora y realizar la segunda fase de pruebas con al menos tres frases.

PROBLEMA 2

Obtener el Registro Federal de Causantes (RFC) de una persona. Se sabe que éste se obtiene incluyendo la inicial del primer apellido, la primera vocal a partir de la segunda letra del primer apellido, la inicial del segundo apellido y la inicial del primer nombre. Además se le agrega la fecha de nacimiento en el formato año-mes-día utilizando dos dígitos para cada uno.

Paso 1. Definición del problema: Igual a la redacción del problema

Page 347: Computación metodología, lógica computa

332 PARTE III. PROGRAMACIÓN

Paso 2. Planeación de la solución: Una vez pedidos como entrada los datos de: nombre, primer apellido, segundo apellido y fecha de nacimiento, procederemos a obtener el RFC.

Para obtener las iniciales de nombre y apellidos, se podrá utilizar cualquiera de las dos funciones siguientes:

inicial$ = MID$ [expresión alfanumérica,1,1] o

inicial$ = LEFT$ [expresión alfanumérica.1]

Donde la expresión alfanumérica podrá ser nombre, primero o segundo apellido. Posteriormente se procederá a buscar la primera vocal del primer apellido, para lo que tendremos

que utilizar un ciclo con un número determinado de iteraciones, en donde un proceso se repetirá a partir de la segunda letra tantas veces como letras tenga el apellido, o hasta que se encuentre alguna vocal.

El proceso estará formado por las siguientes acciones:

1. Tomar una letra 2. SI letra tomada="a" o letra tomada = "A"

o letra tomada="e" o letra tomada = "E" o letra tomada="i" o letra tomada = "I" o letra tomada="o" o letra tomada = "O" o letra tomada= "u" o letra tomada = "U" ENTONCES

primera vocal del primer apellido < - letra tomada contador de letras < - número de letras

Finalmente para obtener el RFC se concatenarán los datos obtenidos.

SALIDAS: RFC ENTRADAS: nombre, primer apellido, segundo apellido, fecha de nacimiento DATOS ADICIONALES: El RFC se obtiene poniendo la inicial del primer apellido, seguido de la primera vocal a partir de la segunda letra del primer apellido, seguido de la inicial del segundo apellido, de la inicial del primer nombre y de la fecha de nacimiento en el formato año-mes-día.

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

nom$ a nombre de la persona pa$ a primer apellido sa$ a segundo apellido fn$ a fecha de nacimiento inom$ a inicial del nombre ipa$ a inicial del primer apellido isa$ a inicial del segundo apellido cl a contador de letras

Page 348: Computación metodología, lógica computa

CAPÍTULO 9. FUNCIONES 333

c$ a carácter tomado 1 a longitud del primer apellido vpa$ a primera vocal del primer apellido rfc$ a registro federal de causantes P a proceso de buscar la vocal

1. PEDIR nom$,pa$,sa$,fn$ 2. inom$←LEFT$(nom$,l) 3. ¡pa$ ←LEFT$(pa$, 1) 4. isa$ ← LEFT$(sa$, 1) 5. 1 ← LEN(pa$) 6. cl ← 2 7. SI cl>l ENTONCES

IR al paso 8 DE OTRA FORMA P

cl ←cl + 1 IR al paso 7

8. rfc$ ←ipa$ + vpa$ + isa$ + inom$ + fn$ 9. DESPLEGAR rfc$

P: 1. c$←MID$(pa$,cl,l) 2. SI c$="a" OR c$="A" OR c$="e" OR c$="E" OR c$="i" OR c$="I" OR c$="o" OR

c$ = "O" OR c$ = "u" OR c$="U" ENTONCES vpa$ ← c$

cl← l 3. FINP

Paso 4. Diagrama de flujo (véanse Figs. 9.5 y 9.6).

Paso 5. Codificación y edición del programa:

REM Registro Federal de Causantes INPUT "Da tu nombre"; nom$ INPUT "Da tu primer apellido"; pa$ INPUT "Da tu segundo apellido"; sa$ INPUT "Da tu fecha de nacimiento en el formato [AAMMDD]"; fn$ inom$ = LEFT$[nom$.1] ipa$ = LEFT$[pa$,1] isa$ = LEFT$[sa$,1] I = LEN[pa$] F0Rcl=2 T0 l

c$ = MID$[pa$.cl,1] IF c$="a" OR c$="A" OR c$="e" OR c$="E" OR c$="i" OR

Page 349: Computación metodología, lógica computa

334 PARTE III. PROGRAMACIÓN

Figura 9.5

Page 350: Computación metodología, lógica computa

Figura 9.6

c$="l" OR c$="o" OR c$="O" OR c$="u" OR c$="U" THEN vpa$= c$

cl = I END IF

NEXT cl rfc$ =ipa$ + vpa$ + isa$ + inom$ + fn$ PRINT “Tu registro federal de causantes es"; rfc$ END

Ejercicio: Efectuar el paso de pruebas del programa incluyendo las dos fases.

CAPÍTULO 9. FUNCIONES 335

Page 351: Computación metodología, lógica computa

336 PARTE III. PROGRAMACIÓN

PROBLEMA 3 Pedir el nombre completo de una persona en una misma variable y obtener sus iniciales.

Paso 1. Definición del problema: Igual a la redacción del problema

Paso 2. Planeación de la solución: Obtener la inicial del nombre es sencillo, pues.es el primer carácter del nombre completo. Para obtener las demás iniciales tendremos que emplear un ciclo con un número determinado de iteraciones desde el segundo hasta el penúltimo carácter del nombre completo. Por cada espacio que encontremos significará que el carácter siguiente es una inicial, por lo que lo concatenaremos a una variable que irá acumulando las iniciales.

SALIDAS: iniciales ENTRADAS: nombre completo

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

nc$ a nombrecompleto in$ a iniciales 1 a longitud del nombre completo c a contador

1. PEDIR nc$ 2. 1 ←LEN(nc$) 3. in$←LEFTS(nc$,l) 4. c←2 5. SI c> l-1 ENTONCES

IR al paso 6 DE OTRA FORMA P

c ← c + 1 IR al paso 5

6. DESPLEGAR in$

P: 1. c$ ←MID$(nc$,c, 1) 2. SI c$ = SPACE$( 1) ENTONCES

in$=in$ + MID$(nc$,c+l,l)

Paso 4. Diagrama de flujo [véanse Figs. 9.7 y 9.8).

Paso 5. Codificación y edición del programa: REM

Obtener las iniciales de un nombre completo

Page 352: Computación metodología, lógica computa

Figura 9.7

CAPÍTULO 9. FUNCIONES 337

Page 353: Computación metodología, lógica computa

338 PARTE III. PROGRAMACIÓN

Figura 9.8

INPUT "Nombre completo"; nc$ I = LEN[nc$] in$ = LEFT$[nc$, 1] FOR c=2 TO l-1

c$= MID$[nc$,c,1] IFc$=SPACE$[1] THEN

in$=in$ + MID$[nc$,c+1,1] END IF

NEXT c PRINT "Las iniciales son:"; in$ END

Ejercicio: Efectuar el paso de pruebas del programa incluyendo las dos fases.

Podemos encontrar otra solución más a este problema, para lo cual únicamente desarrollaremos los pasos 2 y 5 de la metodología.

Paso 2. Planeación de la solución: Bajo la misma idea de que encontrando un espacio el siguiente carácter es una inicial, podemos agregar antes del ciclo un espacio al nombre completo y de esta manera detectar la primera inicial dentro del ciclo, para lo cual la variable que concatena las iniciales debe comenzar esta vez con el carácter nulo.

in$ ← in$ + MID$(nc$,c+ 1 , 1 )

Page 354: Computación metodología, lógica computa

CAPÍTULO 9. FUNCIONES 339

Paso 5. Codificación y edición del programa:

REM Obtener las iniciales de un nombre completo INPUT "Nombre completo"; nc$ nc$ = SPACE$[1] + nc$ I = LEN[nc$] in$ = " " FOR c=1 TO l-1

c$=MID$[nc$,c,1] IF c$=SPACE$[1] THEN

in$=in$ + MID$[nc$,c + 1,1] END IF

NEXT c PRINT "Las iniciales son:"; in$ END

Ejercicio: Efectuar el paso de prueba del programa incluyendo las dos fases.

Problemas propuestos

1. Dada una frase contar el número de veces que se repite algún carácter. 2. Dada una frase escribirla al revés. 3. Dada una frase obtener cuántas vocales y cuántas consonantes tiene. 4. Dado un texto escribirlo en escalera de la siguiente manera:

t te tex text texto

5. Dado un texto sustituir todas las letras a por *. 6. Dado el nombre completo de una persona, obtener su primer apellido. Por ejemplo, si el nombre

es Juan Rodríguez Gómez, deberá obtener la palabra Rodríguez. 7. Decir si una palabra dada es un palíndromo o no. 8. Dada una frase convertirla a tipo telegrama eliminando las siguientes palabras: y, de, el, la, lo,

los, las, un, una, unos, unas, te, le, que. Por ejemplo, si la frase es: Te envío lo siguiente para que lo revises.

Debe imprimir: envío siguiente para revises

9b) FUNCIONES DEFINIDAS POR EL USUARIO

Este tipo de funciones se clasifican en:

1) Funciones de una sola línea 2) Funciones multilíneas

Page 355: Computación metodología, lógica computa

340 PARTE III. PROGRAMACIÓN

1) Funciones de una sola línea

Son funciones que el usuario-programador-define y están conformadas por una línea de instruc-ciones.

El formato para crear este tipo de funciones es el siguiente:

DEF FNnombre [(lista de parámetros)] = expresión

donde: nombre Es el nombre que el programador asigna a la función. Para asignar este

nombre deberán seguirse las reglas usadas para dar nombres a las variables.

lista de parámetros Es una lista de variables separadas por comas a las que se les asignará un valor cuando se llame a la función.

expresión Es el valor que regresará la función.

Una función se puede definir en cualquier parte del programa.

Ejemplo:

INPUT "Da tu nombre"; a$ INPUT "Da tu apellido paterno"; b$ INPUT "Da tu apellido materno"; c$ PRINT FNinicial$Ca$,b$,c$) DEF FNinicial$(a$,b$,c$) = LEFT$(a$, 1) + SPACE$(1) + LEFT$(b$, 1] + SPACE$(1) +

LEFT$(c$, 1)

Prueba: Da tu nombre? Roberto Da tu apellido paterno? Pérez Da tu apellido materno? Salazar RPS

2) Funciones multilínca

Son funciones que el usuario define y están conformadas por más de una línea. El formato para crearlas es el siguiente:

DEF FNnombre [(lista de parámetros)] : :instrucciones : [EXIT DEF] [FNnombre = expresión]

END DEF

Page 356: Computación metodología, lógica computa

CAPÍTULO 9. FUNCIONES 341

donde: nombre Es el nombre que el usuario asigna a la función. Para asignar este nombre

deberán seguirse las reglas usadas para dar nombre a las variables.

lista de parámetros Es una lista de variables separadas por comas, a las que se les asignará un valor cuando se llame a la función.

EXIT DEF Se utiliza cuando se necesita regresar a la línea que se encuentra después de donde se hizo la llamada, antes de que la función termine.

END DEF Es el fin de la función multilínea.

Problemas resueltos

PROBLEMA 1

Escribir una función que devuelva el factorial de un número. El factorial de un número se define como el producto de todos los enteros menores que él, empezando por 1 e incluyéndolo a él mismo. Por ejemplo, el factorial de 4 es: 4X3X2X1=24

Paso 1. Definición del problema: Igual a la redacción del problema

Paso 2. Planeación de la solución: La función FACT se definirá como un procedimiento con la diferencia de que la última instrucción será FIN FACT.

Necesitaremos hacer uso de un ciclo con un número determinado de iteraciones en donde cada iteración consistirá de multiplicar el contador de iteraciones por el último producto obtenido.

El proceso principal, que es donde se mandará llamar a la función FACT, quedará de la siguiente manera:

1. PEDIR número 2. DESPLEGAR FACT (número) 3. FIN

La función FACT quedará de la siguiente manera:

FACT: 1. factorial ← 1 2. contador ← 1 3. SI contador > número ENTONCES

IR al paso 4 DE OTRA FORMA M

Page 357: Computación metodología, lógica computa

342 PARTE I I I . PROGRAMACIÓN

contador ← contador + 1 IR al paso 3

4. FIN FACT

M: 1. factorial ← factorial X contador 2. FINP

SALIDAS: Factorial de un número ENTRADAS: Número

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

f a factorial c a contador n a número M a proceso que se repite como parte de FACT a función que obtiene el factorial

1. PEDIR n 2. DESPLEGAR FACT(n) 3. FIN

FACT: 1. 2.

f← 1 c←1

3. SIc> n ENTONCES IR al paso 4 DE OTRA FORMA M c ←1 c + 1 IR al paso 3 4. FIN FACT

M:

1. f ← f * c 2. FINP

Paso 4. Diagrama de flujo (véanse Figs. 9.9 y 9.10).

Paso 5. Codifícación y edición del programa:

REM Factorial de un número INPUT "Da un número"; n

Page 358: Computación metodología, lógica computa

CAPÍTULO 9. FUNCIONES 343

Figura 9.9

PRINT "El factorial del número es"; FNfact[n] END DEF FNfact[n]

f=1 FOR c=1 TO n

f=f*c NEXTc FNfact = f

END DEF

Ejercicio: Efectuar el paso de pruebas del programa incluyendo las dos fases.

Problemas propuestos

1. Escribir una función que obtenga el resultado de elevar un número a cualquier potencia, sin hacer uso del operador A.

2. Escribir una función que obtenga la hipotenusa de un triángulo rectángulo para cualesquiera di-mensiones.

3. Escribir una función que regrese el resultado de sumar los primeros n números naturales. 4. Escribir una función que obtenga el número de vocales que contiene una frase.

Page 359: Computación metodología, lógica computa

344 PARTE III. PROGRAMACIÓN

Figura 9.10

Page 360: Computación metodología, lógica computa

CAPÍTULO 9. FUNCIONES 345

RESUMEN

Función: una función es un proceso que puede ser utilizado en un programa como parte de una expresión. Una característica importante de las funciones es que después de ser ejecutadas regresan un valor. Se clasifican en:

a) Funciones predefinidas: son funciones que Quick Basic incluye en su conjunto de instrucciones y a su vez se clasifican en:

1) Funciones numéricas: son funciones que al ser ejecutadas trabajan con valores numéricos.

Funciones trigonométricas

Función SIN: obtiene el seno de un ángulo en radianes. Función COS: obtiene el coseno de un ángulo en radianes. Función TAN: obtiene la tangente de un ángulo en radianes. Función ARCTAN: obtiene el arcotangente de un ángulo en radianes.

Funciones aritméticas

Función SQR: obtiene la raíz cuadrada de un número. Función ABS: obtiene el valor absoluto de un número. Función FIX: elimina los dígitos que se encuentran a la derecha del punto decimal de una

expresión numérica. Función INT: obtiene el valor entero más cercano.

2) Funciones alfanuméricas: son funciones que al ser ejecutadas trabajan con valores alfanu- méricos.

Función LEFT$: obtiene determinado número de caracteres empezando por el extremo izquierdo.

Función RIGHT$: obtiene determinado número de caracteres empezando por el extremo derecho.

Función MID$: obtiene determinado número de caracteres empezando en determinada posición.

Función LEN: obtiene el número de caracteres que tiene un dato alfanumérico. Función SPACE$: obtiene una cantidad determinada de espacios.

b) Funciones definidas por el usuario: son funciones creadas por el programador mismo mediante la instrucción DEF FN y se clasifican en:

1) Funciones de una sola línea 2) Funciones multilíneas

Page 361: Computación metodología, lógica computa

CAPÍTULO

10

PROCESOS MODULARES

OBJETIVOS

10.1 El alumno definirá qué es un proceso modular o módulo. 10.2 El alumno identificará los diferentes tipos de los procesos modulares, así como sus caracterís-

ticas particulares:

a) Funciones b) Subrutinas c) Procedimientos d) Subprogramas é) Programas

10.3 El alumno aplicará los procesos modulares para la solución de problemas repetitivos compues-tos.

346

Page 362: Computación metodología, lógica computa

CAPÍTULO

10

PROCESOS MODULARES

Se le llama módulo a una sección separada del cuerpo principal de un proceso pero que es ejecutada desde algún punto de éste. Un módulo tiene un nombre y misión específica.

Por ejemplo, el siguiente algoritmo procesa un número indeterminado de clientes para producir un total.

1 t=0 2. CLIENTE 3. PEDIR mas$ 4. SI mas$ = "NO" ENTONCES

IR al paso 5 DE OTRA FORMA IR al paso 2

5. DESPLEGAR t

El proceso CLIENTE es un módulo, pues es mandado ejecutar por un proceso principal; tiene un nombre y una misión específica, que es procesar a un solo cliente.

El concepto de módulo nace de la idea de que un problema sea separado en problemas más pequeños para facilitar su solución. Por ejemplo, considere el siguiente problema:

Una persona desea vender un terreno rectangular de gran valor, para lo cual deberá revisar sus escrituras y saber cuántos metros cuadrados va a vender; además piensa realizar un sondeo con cinco vecinos suyos para obtener un promedio del precio del metro cuadrado en su zona. Finalmente someterá a subasta su terreno con un precio inicial de $500 más sobre el 90% del valor del terreno calculado por él y dando incrementos de $500 en cada nueva oferta hasta que sea vendido. Si nadie acepta la oferta inicial se rematará en el 90% de su valor. Obtener el precio final por concepto de la venta del terreno.

347

Page 363: Computación metodología, lógica computa

348 PARTE I I I . PROGRAMACIÓN

Paso 1. Definición del problema: Dada en la redacción del problema. Paso 2. Planeación de la solución:

El problema se divide en tres partes, a saber:

1) Investigar las medidas del terreno para conocer su superficie. 2) Tomar cinco muestras del precio del metro cuadrado para calcular promedio del precio del metro

cuadrado. 3) Realizar la subasta para desplegar el precio final

Podemos resumir estos pasos de la siguiente manera:

1) SUPERFICIE-TERRENO 2) PRECIO-METRO2 3) SUBASTA

Cada uno debe contener los siguientes pasos:

Proceso modular SUPERFICIE-TERRENO:

1) PEDIR largo 2) PEDIR ancho

3) superficie = largo * ancho

Proceso modular PRECIO-METRO2:

1) PEDIR precio 1 2) PEDIR precio2 3) PEDIR precio3 4) PEDIR precio4 5) PEDIR precio5 6) precio = (precio 1 + precio2 + precio3 + precio4 + precio5) / 5

Proceso modular SUBASTA:

1) precio-total = superficie * precio 2) precio-final = precio-total * 0.9 3) precio-final = precio-final + 500 4) PEDIR mas$ 5) SI mas$ = "NO" ENTONCES

IR al paso 6 DE OTRA FORMA IR al paso 3

6) precio-final = precio-final - 500 7) DESPLEGAR precio-final

Page 364: Computación metodología, lógica computa

CAPÍTULO 10. PROCESOS MODULARES 349

Lo que se hizo en este paso 2 de la metodología fue partir el problema en sus tres partes principales y se les dio un nombre a cada una. A continuación se atacó cada una de las partes llegando a una solución para lo que de cada una de ellas se necesitaba, haciendo de esta manera más sencilla la solución integral del problema.

A esta técnica de solucionar un problema dividiéndolo en sus partes principales se le llama modularización, llamándosele a cada parte, proceso modular o módulo.

Ejercicio: Se deja al alumno terminar los pasos de la metodología para este ejemplo.

Existen varios conceptos relacionados con modularización:

1) Función 2) Subrutina 3) Procedimiento 4) Subprograma 5) Programa

A continuación los definimos.

1) Función

Es una instrucción que recibe uno o varios valores llamados parámetros y dependiendo de éstos se produce un resultado.

Una función puede estar en el vocabulario Quick Basic o puede ser definida por el programador mediante la instrucción DEF FN.

Ejemplos:

Funciones numéricas: INT, SIN, COS. Funciones alfanuméricas: LEN, LEFT$, RIGHT$

2) Subrutina

Es una parte del programa que no pertenece al cuerpo del programa principal pero que es mandado ejecutar desde éste mediante la instrucción GOSUB.

La subrutina debe tener un nombre o etiqueta al principio de ella, seguida de dos puntos (:) y terminar con la instrucción RETURN.

Cuando desde el programa principal se manda ejecutar la subrutina con GOSUB se transfiere el control del programa a la instrucción siguiente a la etiqueta, hasta que se encuentre la instrucción RETURN, con lo cual se devuelve el control al cuerpo principal del programa en la instrucción siguiente al GOSUB.

Se recomienda indentar las instrucciones de la subrutina con respecto a la etiqueta y al RETURN. Con respecto al algoritmo y diagrama de flujo, una subrutina equivale a un proceso en donde su

último bloque o instrucción, que es FINP, equivale en Quick Basic a la instrucción RETURN.

Page 365: Computación metodología, lógica computa

350 PARTE 111. PROGRAMACIÓN

Ejemplo:

REM Ejemplo de subrutina CLS PRINT "Todavía no se ejecuta la subrutina" PRINT GOSUB MODULO PRINT PRINT 'Ya terminó de ejecutarse la subrutina" END

MODULO: PRINT "Este mensaje es parte de la subrutina"

RETURN

Ejecución:

Todavía no se ejecuta la subrutina

Este mensaje es parte de la subrutina

Ya terminó de ejecutarse la subrutina

3) Procedimiento

Es una combinación de subrutina y función, pues es un conjunto de instrucciones fuera del cuerpo del programa principal que es mandado ejecutar desde éste, como subrutina, pero también puede recibir parámetros como las funciones.

Los procedimientos deben comenzar con la línea:

SUB nombre-del-procedimiento ( parámetros ) y

deben terminar con: END SUB

Desde el cuerpo principal del programa se manda ejecutar un procedimiento mediante la instruc-ción:

CALL nombre-del-procedimiento ( parámetros )

4) Subprogramas

Son programas que son mandados a ejecutar por otros programas mediante la instrucción CHAIN.

Page 366: Computación metodología, lógica computa

CAPÍTULO 10. PROCESOS MODULARES 351

5) Programas

Es un conjunto de instrucciones bajo un mismo nombre de archivo. Un programa complejo puede estar modularizado y comprender funciones, subrutinas, procedimientos e inclusive subprogramas. Los programas en Quick Basic terminan con la instrucción .BAS.

A continuación se terminará con la metodología para los problemas repetitivos compuestos del capítulo 4, utilizando el concepto de subrutinas.

Problemas resueltos

PROBLEMA 1

En un supermercado un cajero captura los precios de los artículos que los clientes compran e indica a cada cliente cuál es el monto de lo que deben pagar. Al final del día le indica a su supervisor cuánto fue lo que cobró en total a todos los clientes que pasaron por su caja.

Paso 4. Diagrama de flujo (véanse Figs. 10.1 y 10.2).

Paso 5. Codificación y edición del programa:

REM Cajero en un supermercado tcaj=O X : GOSUB C tcaj=tcaj + tcl INPUT "Más clientes (SI/N0)";mas$ IFmas$="NO"THEN

GOTO Y ELSE

GOTO X END IF Y: PRINT 'Total del cajero:"; tcaj END

REM Subrutina del cliente C:

tcl=O A1: GOSUB A tcl=tcl + ta INPUT "Más artículos (SI/N0)";mas1$ IFmas1$="N0"THEN

GOTO B ELSE

Page 367: Computación metodología, lógica computa

352 PARTE III. PROGRAMACIÓN

GOTO A1 ENDIF B:

PRINT 'Total del cliente:"; tcl PRINT RETURN

REM Subrutina del artículo

Figura 10.1

Page 368: Computación metodología, lógica computa

Figura 10.2

CAPÍTULO 10. PROCESOS MODULARES 353

Page 369: Computación metodología, lógica computa

3 5 4 PARTE III. PROGRAMACIÓN

A: INPUT "Precio";p INPUT "Cantidad";c ta=p*c

RETURN

Paso 6. Pruebas y depuración:

Ejercicio: Se deja al alumno la tarea de editar el programa y realizar esta fase de pruebas de la metodología. Se sugiere que estas pruebas sean las mismas que las del diagrama de flujo del ejercicio correspondiente en el capítulo 4.

PROBLEMA 2

Cinco miembros de un club de obesidad desean saber cuánto han bajado o subido de peso desde la última vez que se reunieron. Para ello realizan un ritual de pesaje en donde cada uno se pesa en diez básculas distintas para así tener un promedio más exacto de su peso. Si existe diferencia positiva entre este promedio de peso y el peso de la última vez que se reunieron, significa que subieron de peso. Pero si la diferencia es negativa, significa que bajaron. Lo que el problema requiere es que por cada persona se imprima un letrero que diga "SUBIÓ" o "BAJO" y la cantidad de kilos que subió o bajó de peso.

Paso 4. Diagrama de flujo (véanse Figs. 10.3, 10.4 y 10.5).

Paso 5. Codificación y edición del programa:

REM Control de peso en un club F0Rc=1 T0 5

GOSUB M NEXT c END

REM Subrutina Miembro M:

INPUT "Promedio de peso anterior";pant sp=O F0R cb=1 TO 10 GOSUB B NEXT cb pa=sp/1O

dif=pa-pant IFdif <OTHEN

PRINT "Bajó de peso" ELSE

PRINT "Subió de peso"

Page 370: Computación metodología, lógica computa

Figura 10.3

END IF PRINT

RETURN REM Subrutina Báscula B:

INPUT "Peso";pe sp=sp+pe

RETURN

Paso 6. Pruebas y depuración:

Ejercicio: Se deja al alumno la tarea de editar el programa y realizar esta fase de pruebas de la metodología. Se sugiere que estas pruebas sean las mismas que las del diagrama de flujo del ejercicio correspondiente en el capítulo 4.

CAPÍTULO 10. PROCESOS MODULARES 355

Page 371: Computación metodología, lógica computa

356 PARTE III. PROGRAMACIÓN

Figura 10.4

Page 372: Computación metodología, lógica computa

Figura 10.5

PROBLEMA 3

Simular el comportamiento de un reloj digital imprimiendo la hora, minuto y segundo en cada segundo de un día desde las 0:00:00 horas hasta las 23:59:59 horas.

Paso 4. Diagrama de flujo (véanse Figs. 10.6, 10.7 y 10.8).

Paso 5. Codificación y edición del programa.

REM Reloj F0Rh=OT0 59

GOSUB M NEXT h END

REM Subrutina Minutos M:

F0R m=0T0 59 GOSUB S

NEXT m RETURN

REM Subrutina Segundos S:

CAPÍTULO 10. PROCESOS MODULARES 357

Page 373: Computación metodología, lógica computa

Figura 10.6

FOR s=O TO 59 GOSUB D

NEXTs RETURN

REM Subrutina DISPLAY D: PRINT h;":"; m ;":"; s

RETURN

Paso 6. Pruebas y depuración:

Ejercicio: Se deja al alumno la tarea de editar el programa y realizar esta fase de pruebas de la metodología. Se sugiere que estas pruebas sean las mismas que las del diagrama de flujo del ejercicio correspondiente en el capítulo 4.

358 PARTE 111. PROGRAMACIÓN

Page 374: Computación metodología, lógica computa

Figura 10.7

Figura 10.8

CAPÍTULO 10. PROCESOS MODULARES 359

Page 375: Computación metodología, lógica computa

360 PARTE III. PROGRAMACIÓN

PROBLEMA 4

Se desea obtener el promedio de g grupos que están en un mismo año escolar, considerando que cada grupo puede tener n alumnos, que cada alumno puede llevar m materias y que en todas las materias se promedian tres calificaciones para obtener el promedio de la materia. Lo que se desea desplegar es el promedio de los grupos, el promedio de cada grupo y el promedio de cada alumno.

Paso 4. Diagrama de flujo (véanse Figs. 10.9, 10.10, 10.11 y 10.12). Paso

5. Codificación y edición del programa:

REM Promedios de grupos INPUT "Número de grupos";g stg=O FORcg=1 TO g

GOSUB G NEXT cg ptg=stg / g PRINT "Promedio de todos los grupos:";ptg END

REM Subrutina Grupo G:

INPUT "Número de alumnos del grupo";na sg=O FOR ca=1 TO na

GOSUB A NEXT ca pg=sg / na PRINT "Promedio del grupo";pg PRINT stg=stg+pg

RETURN

REM Subrutina Alumno A:

INPUT "Número de materias del alumno";nm sa=O FOR cm=1 TO nm

GOSUB M NEXTcm pa=sa / nm PRINT "Promedio del alumno";pa

Page 376: Computación metodología, lógica computa

Figura 10.9

CAPÍTULO 10. PROCESOS MODULARES 361

Page 377: Computación metodología, lógica computa

362 PARTE III. PROGRAMACIÓN

Figura 10.10

Page 378: Computación metodología, lógica computa

Figura 10.11

CAPÍTULO 10. PROCESOS MODULARES 363

Page 379: Computación metodología, lógica computa

364 PARTE III. PROGRAMACIÓN

Figura 10.12

PRINT sg=sg+pa RETURN

REM Subrutina Materia M:

INPUT "Calificación 1 ";c1 INPUT "Calificación 2";c2 INPUT "Calificación 3";c3 PRINT pm= [c1+c2+c3]/3 sa=sa+pm

RETURN

Paso 6. Pruebas y depuración:

Ejercicio: Se deja al alumno la tarea de editar el programa y realizar esta fase de pruebas de la metodología. Se sugiere que estas pruebas sean las mismas que las del diagrama de flujo del ejercicio correspondiente en el capítulo 4.

Page 380: Computación metodología, lógica computa

CAPÍTULO 10. PROCESOS MODULARES 365

Problemas propuestos

Realizar los pasos restantes de la metodología para los problemas repetitivos compuestos propuestos en el capítulo 4, empleando subrutinas.

Page 381: Computación metodología, lógica computa

366 PARTE I I I . PROGRAMACIÓN

RESUMEN

Módulo: es una sección separada del cuerpo principal de un proceso pero que es ejecutada desde algún punto de éste. Un módulo tiene un nombre y misión específica. El concepto de módulo nace de la idea de que un problema debe dividirse en problemas más pequeños para facilitar su solución.

Modularización: técnica para solucionar un problema dividiéndolo en sus partes principales, llamándosele a cada una de estas partes proceso modular o módulo.

Conceptos relacionados con modularización:

Función: es una instrucción que recibe uno o varios valores llamados parámetros y dependiendo de éstos se produce un resultado. Una función puede estar en el vocabulario de Quick Basic o puede ser definida por el programador mediante la instrucción DEF FN.

Subrutina: es una parte del programa que no pertenece al cuerpo del programa principal pero que es mandado ejecutar desde éste mediante la instrucción GOSUB. La subrutina debe tener un nombre o etiqueta al principio de ella seguida de dos puntos (:) y terminar con la instrucción RETURN.

Procedimiento: es una combinación de subrutina y función, ya que es un conjunto de instrucciones fuera del cuerpo del programa principal que es mandado ejecutar desde éste, como subrutina, pero también puede recibir parámetros como las funciones.

Subprogramas: son programas que son mandados a ejecutar por otros programas.

Programas: es un conjunto de instrucciones bajo un mismo nombre de archivo. Un programa complejo puede estar modularizado y comprender funciones, subrutinas, procedimientos e inclusive subprogramas.

Page 382: Computación metodología, lógica computa

CAPÍTULO

11

ESTRUCTURAS DE DATOS

OBJETIVOS

11.1 El alumno definirá qué es una estructura de datos. 11.2 El alumno explicará los tipos de estructura de datos, sus características y su manejo:

a) Arreglos b) Matrices c) Archivos

—Secuenciales —Aleatorios

11.3 El alumno utilizará la metodología para solucionar problemas empleando arreglos. 11.4 El alumno utilizará la metodología para solucionar problemas empleando matrices. 11.5 El alumno utilizará la metodología para solucionar problemas empleando archivos aleatorios.

11.5.1 El alumno explicará las operaciones que pueden realizarse con los archivos aleatorios: a) Altas b) Bajas c) Consultas d) Cambios e) Reporte general f) Reportes específicos

11.5.2 El alumno definirá las instrucciones que proporciona el lenguaje Quick Basic para el tratamiento de archivos aleatorios

11.5.3 El alumno será capaz de resolver un problema empleando las operaciones vistas con los archivos aleatorios.

367

Page 383: Computación metodología, lógica computa

CAPÍTULO

ESTRUCTURAS DE DATOS

Frecuentemente en la vida diaria mencionamos conceptos relacionados con una colección de datos. Por ejemplo, si vemos un conjunto de personas menores de 13 años de edad les llamamos "niños" y no importa no mencionar el nombre de todos y cada uno para referirnos a ellos.

Hasta el momento hemos considerado los datos como valores individuales, por ejemplo, el valor 5 se asigna a la variable n o el dato 12 se multiplica por algún otro, etc. Sin embargo, los datos pueden organizarse en estructuras, de tal manera que podemos tener un conjunto de datos numéricos llamados edades o un conjunto de datos alfanuméricos llamados nombre$, etc. Se le llama estructura de datos a la organización que reciben los datos para tratar a un conjunto de ellos como una unidad.

Existen varias estructuras de datos, dependiendo de la forma de organización de éstos, de las cuales estudiaremos a tres:

1) Arreglos 2) Matrices 3) Archivos de datos

Las dos primeras están relacionadas con el tratamiento de datos en memoria principal, mientras que los archivos de datos lo están con la memoria secundaria. A continuación estudiaremos cada una de estas estructuras de datos.

1) Arreglos

La estructura de datos que organiza sus datos de manera lineal se denomina arreglos. Éstos emplean un índice entre paréntesis para referenciar los elementos de que consta.

Por ejemplo, si deseáramos tener en el arreglo nombres$ los nombres de 5 personas tendríamos que ejecutar las siguientes instrucciones:

368

Page 384: Computación metodología, lógica computa

CAPÍTULO 11. ESTRUCTURAS DE DATOS 369

nombres$(l) = "ALFREDO" nombres$(2) = "RAÚL" nombres$(3) = "JOSÉ" nombres$(4) = "JUAN" nombres$(5) = "CARLOS"

Lo cual significa que al elemento 1 del arreglo nombres$ se le asignó el dato "ALFREDO" y que a los demás elementos del arreglo se les asignó el dato respectivo. Para recuperar un dato del arreglo, por ejemplo para imprimirlo, sólo basta con el nombre del arreglo y el número de elemento-índice-en que está guardado:

PRINT nombres$(3)

desplegará en pantalla: JOSÉ

a$ = nombres$(4) + SPACE$(1) + nombres$(5) PRINT a$

desplegará: JUAN CARLOS

Si en vez de asignar este arreglo lo tuviéramos que pedir como dato de entrada, tendríamos que usar las siguientes instrucciones:

INPUT nombre$(l) INPUT nombre$(2) INPUT nombre$(3) INPUT nombre$(4) INPUT nombre$(5)

Como en este conjunto de instrucciones lo único que varía son los índices del arreglo, podemos emplear la instrucción FOR...NEXT para hacerlo más sencillo.

FORi=l TO5 INPUT nombre$(i)

NEXT i

Antes de usarlo, un arreglo debe ser declarado con la instrucción DIM:

DIM nombre-del-arreglo ( expresión numérica) donde:

el nombre del arreglo puede ser un identificador numérico o alfanumérico

el resultado de la expresión numérica debe ser el índice máximo que esperamos alcanzar con nuestro arreglo

Page 385: Computación metodología, lógica computa

370 PARTE III. PROGRAMACIÓN

un mismo DIM puede contener varias declaraciones, separando las variables con comas

Si la instrucción DIM no se emplea para declarar un arreglo se asume que su rango de índices es de 0 a 10, por tanto, es un error efectuar un acceso con índices que no estén en este rango.

Para nuestro arreglo nombres$, dado que su índice máximo es 5, su declaración deberá quedar de la siguiente manera:

DIM nombres$(5)

Con esta declaración Quick Basic reservará los índices 0,1, 2, 3, 4 y 5 para nuestro arreglo. Como el índice 0 no lo ocupamos, puede emplearse la instrucción OPTION BASE para indicarle a Quick Basic que el primer índice de nuestro arreglo comenzará en 1 y no en 0:

OPTION BASE 1

El formato general de la instrucción es:

OPTION BASE n

en donde n es el primer índice que emplearemos para los arreglos que declaremos después de la instrucción. Si la instrucción no aparece en el programa se asume que n es igual a 0.

En un arreglo todos los elementos deben ser del mismo tipo, ya sea numéricos o alfanuméricos. Así pues, el conjunto de instrucciones para pedir un arreglo de nombres y luego desplegarlo sería:

REM Pedir 5 nombres en un arreglo y desplegarlos OPTION BASE 1 DIM nombres$(5) PRINT "Teclea 5 nombres:" FOR i=1 T0 5

INPUT nombres$[¡) NEXT PRINT "Los nombres tecleados son:" FORi=1 T0 5

PRINT nombres$(i) NEXT END

Prueba;

Teclea 5 nombres: ? RAMIRO ? NORMA ? ENRIQUE ? ALEJANDRO ? JULIO Los nombres tecleados son: RAMIRO

Page 386: Computación metodología, lógica computa

CAPÍTULO I I . ESTRUCTURAS DE DATOS 371

NORMA ENRIQUE ALEJANDRO JULIO

A continuación resolveremos algunos problemas con arreglos.

Problemas resueltos

PROBLEMA 1

Pedir un conjunto de n números e imprimir cuál es el menor de ellos.

Paso 1. Definición del problema: Dado en la redacción del problema. Paso 2. Planeación de la solución: La solución de este problema se inicia pidiendo n números dentro de un arreglo, para lo cual emplearemos un ciclo con un número determinado de n iteraciones.

Posteriormente, asumiremos que el primer elemento del arreglo es el número menor y lo compa-raremos con los demás elementos. Si alguno de los elementos es menor al número menor hasta el momento, entonces será el nuevo número menor. Esto lo haremos usando un ciclo con un número determinado de iteraciones, desde la iteración 2 hasta la n.

Finalmente se desplegará el número menor obtenido.

SALIDAS: número menor ENTRADAS: arreglo de números DATOS ADICIONALES: ninguno

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

i a contador de iteraciones n a número de datos a a arreglo de números menor a número menor

1. PEDIR n2. i← 1 3. SI i > n ENTONCES IR al paso 4 DE OTRA FORMA PEDIR i←i + 1 IR al paso 3 4. menor ←a(l)

Page 387: Computación metodología, lógica computa

372 PARTE III. PROGRAMACIÓN

5. i←2 6. SI i > n ENTONCES

IR al paso 7 DE OTRA FORMA ANALIZAR

i← i + 1 IR al paso 6

7. DESPLEGAR menor

PEDIR: 1. PEDIR a(i) 2. FINP

ANALIZAR: 1. SI a(¡) < menor ENTONCES

menor ←a(i)

2. FINP

Paso 4. Diagrama de flujo (véanse Figs. 11.1 y 11.2)

Paso 5. Codificación y edición del programa:

Para usar el arreglo primero deberemos dimensionarlo, para ello emplearemos una combinación de las instrucciones OPTION BASE y DIM.

REM Programa que encuentra el menor número de n dados INPUT "Cuántos números";n OPTION BASE 1 DIM a[n] FOR i = 1TOn

INPUT a[ i ] NEXT i

menor = a[1] FOR i = 2 TO n

IF a[¡]<menorTHEN menor = a[¡]

END IF NEXT i PRINT "El menor es:"; menor END

Paso 6. Pruebas y depuración:

Cuántos números? 6 ?8 ? 13

Page 388: Computación metodología, lógica computa

Figura 11.1

CAPÍTULO II. ESTRUCTURAS DE DATOS 373

Page 389: Computación metodología, lógica computa

374 PARTE III. PROGRAMACIÓN

Figura 11.2

?2 ?5 ?37 ?20 El menor es: 2

PROBLEMA 2

Ordenar un arreglo de números en orden ascendente, esto es, que el primer elemento del arreglo quede como el menor número de todos, y así sucesivamente hasta que el último sea el mayor de todos.

Paso 1. Definición del problema: Dado en la redacción del problema.

Paso 2. Planeación de la solución: Para resolver este problema emplearemos una popular técnica de ordenamiento de arreglos llamada Sort Burbuja.

Page 390: Computación metodología, lógica computa

CAPÍTULO 11. ESTRUCTURAS DE DATOS 375

El Sort Burbuja toma el primero de los elementos del arreglo y lo compara con los demás y en caso de que alguno de éstos sea menor, intercambia los valores, de manera tal que el primer elemento se queda con el menor valor de todos. A continuación se toma el segundo elemento para compararlo con los siguientes y se repite el proceso. Esto se repite para los primeros n-1 números del arreglo y al final el elemento n-1 se compara con el elemento n para dejar el valor más grande de todos en el último elemento.

A esta técnica se le llama Sort porque este término inglés indica ordenamiento; se le llama Burbuja porque los primeros elementos que son ordenados conforme avanza el proceso parecen burbujas que salen antes que las otras.

SALIDAS: arreglo ordenado ascendentemente ENTRADAS: arreglo de números DATOS ADICIONALES: ninguno

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

i a contador de iteraciones j a contador de iteraciones de COMPARA n a número de datos a a arreglo de números

1. i←12. SI i > n ENTONCES IR al paso 3 DE OTRA FORMA PEDIR i ←i + 1 IR al paso 2 3. i← 1 4. SI i > n-1 ENTONCES IR al paso 5 DE OTRA FORMA COMPARA i ←i + 1 IR al paso 4 5. i← 1 6. SI i > n ENTONCES IR al paso 7 DE OTRA FORMA DESPLIEGA i←i + 1 IR al paso 6 7. FIN

Page 391: Computación metodología, lógica computa

376 PARTE III. PROGRAMACIÓN

PEDIR: 1. PEDIR a(i) 2. FINP

COMPARA: 1. j←i + 1 2. SIj>nENTONCES

IR al paso 3 DE OTRA FORMA INTERCAMBIA

j← j + 1 IR al paso 2

3. FINP

DESPLIEGA: 1. DESPLEGAR a(i) 2. FINP

INTERCAMBIA: 1. SI a(j) ← a(i) ENTONCES

aux ←a(i) a(i) ← a(J) a(j)← aux

2. FINP

Paso 4. Diagrama de flujo (véanse Figs. 11.3,11.4 y 11.5).

Paso 5. Codificación y edición del programa:

REM Ordenamiento de números en orden ascendente INPUT "Cuántos números";n OPTION BASE 1 DIM a[n] REM Pedir arreglo FOR i=1 TO n INPUT a[¡] NEXT i REM Ordenar arreglo FOR i=1 TO n-1 FORi=i+1 TOn IF a[j] < a[¡]THEN aux = a[i] a[i] = a[j] a[j] = aux END IF NEXT j

Page 392: Computación metodología, lógica computa

Figura 11.3

CAPÍTULO II. ESTRUCTURAS DE DATOS 377

Page 393: Computación metodología, lógica computa

378 PARTE III. PROGRAMACIÓN

Figura 11.4

Page 394: Computación metodología, lógica computa

CAPÍTULO I I . ESTRUCTURAS DE DATOS 379

Figura 11.5

NEXT i REM Desplegar arreglo PRINT "El arreglo ordenado ascendentemente es." FOR i = 1 TO n PRINT a [ i ] NEXT i END

Paso 6. Pruebas y depuración:

Cuántos números? 6 ?8 ? 13 ?2 ?5 ?37 ?20 El arreglo ordenado ascendentemente es: 2 5 8 13 20

Page 395: Computación metodología, lógica computa

380 PARTE III. PROGRAMACIÓN

37

PROBLEMA 3

Ordenar un arreglo de datos alfanuméricos en orden ascendente, es decir, que el primer elemento del arreglo quede como el primero en orden alfabético de todos y así sucesivamente hasta que el último sea el mayor en orden alfabético.

Paso 1. Definición del problema: Dado en la redacción del problema.

Paso 2. Planeación de la solución: La solución es igual a la del problema anterior, sólo que ocupando un arreglo alfanumérico, ya que con una comparación de dos strings se sabe cuál de ellos es el menor en orden alfabético. Por lo tanto, sólo se aplicarán los pasos 5 y 6 de la metodología.

Paso 5. Codificación y edición del programa:

REM Ordenamiento de strings pon orden alfabético INPUT "Cuántos strings";n OPTION BASE 1 DIM a$[n] REM Pedir arreglo FOR i=1 TO n INPUT a$[ i ] NEXT i REM Ordenar arreglo FORi=1 T0n-1 F0Rj=¡+1 TOn IF a$[j] < a$[¡]THEN

aux$ = a$[¡] a$[i] = a$[j] a$[¡] = aux$

END IF NEXT j NEXT i REM Desplegar arreglo PRINT "El arreglo ordenado alfabéticamente es:" FOR i = 1 TO n PRINT a$[¡] NEXT i END

Paso 6. Pruebas y depuración:

Cuántos strings? 5

Page 396: Computación metodología, lógica computa

CAPÍTULO I I . ESTRUCTURAS DE DATOS 381

?MESA ? ÁRBOL ?MASA ? SILLA ? LIBRO El arreglo ordenado alfabéticamente es: ÁRBOL LIBRO MASA MESA SILLA

Problemas propuestos

1. Meter los n primeros pares a un arreglo e imprimirlo. 2. Pedir un conjunto de n números e imprimir el mayor de ellos. 3. Ordenar un arreglo de números en orden descendente, de mayor a menor, de tal manera que el

primer elemento del arreglo quede como el mayor y el último sea el menor. 4. Se le llama serie Fibbonacci a la que comienza con dos números iniciales que son 1 y 1 y va

obteniendo el siguiente elemento a partir de la suma de los dos últimos elementos. Para el primer caso, al sumar 1 y 1 obtenemos 2, por lo tanto los dos últimos elementos de la serie serían el segundo 1 y el 2, por lo que el siguiente elemento sería 1 +2=3, el siguiente elemento 2+3=5, etc. Una serie Fibbonacci de 10 elementos sería: 1, 1, 2, 3, 5, 8, 13, 21, 34 y 55. Elaborar un programa que meta los n primeros números de la serie Fibbonacci a un arreglo y lo imprima.

2) MATRICES

Las matrices son aquellas estructuras de datos que organizan sus datos en forma de tabla, para ello emplean dos índices: uno para indicar el renglón y otro la columna, y así referenciar sus datos. A las matrices también se les llama tablas o arreglos de dos dimensiones.

Por ejemplo, si desean registrarse las 3 calificaciones de 2 alumnos podríamos emplear una matriz de 2 renglones por 3 columnas representarlo gráficamente como lo muestra la figura 11.6.

El primer renglón es para el primer alumno, quien obtuvo calificaciones de 7, 8 y 9. El segundo alumno obtuvo calificaciones de 10, 7 y 8.

Para meter la primera calificación del primer alumno a la matriz, tendríamos que referirnos a la primera columna y al primer renglón de la siguiente manera:

Calificación 1 Calificación 2 Calificación 3

Alumno 1

Alumno 2

7 8 910 7 8

Figura 11.6

Page 397: Computación metodología, lógica computa

382 PARTE III. PROGRAMACIÓN

calif(l,1) = 7

lo que significa que para el primer alumno su primera calificación es de 7.

calif(l,2) = 8

significa que para el primer alumno su segunda calificación es de 8.

la tercera calificación del primer alumno se asignaría:

califa ,3) = 9

Para el segundo alumno:

calif(2,l) = 10 calif(2,2) = 7 calif(2,3) = 8

Por tanto, el significado del renglón es el de un alumno y el de la columna es de una calificación. En este caso estamos hablando de una matriz de 2 renglones por 3 columnas o, más abreviado, de una matriz de 2 X 3.

Al igual que los arreglos, las matrices también se dimensionan, esto se hace indicando el número de renglones y columnas de la siguiente manera:

DIM nombre-de-la-matriz (expresión numérica 1, expresión numérica 2)

donde:

la expresión numérica 1 es el número máximo de renglones de la matriz la expresión numérica 2 es el número máximo de columnas que se usarán en la matriz

Para el ejemplo de la matriz de las calificaciones su DIM es:

DIM calif(2,3)

Si antes de un DIM aparece una instrucción OPTION BASE x, x afectará tanto a los renglones como a las columnas.

Problemas resueltos

PROBLEMA 1

Pedir en una matriz las 4 calificaciones de 5 alumnos y de la misma matriz obtener el promedio de los alumnos.

Paso 1. Definición del problema:

Page 398: Computación metodología, lógica computa

CAPÍTULO I I . ESTRUCTURAS DE DATOS 383

Dado en la redacción del problema.

Paso 2. Planeación de la solución: Este es un problema repetitivo compuesto, ya que vamos a emplear un ciclo de 5 iteraciones para procesar a los 5 alumnos, y para cada uno emplearemos otro ciclo de 4 iteraciones para procesar sus 4 calificaciones. Recordemos que cuando un ciclo está dentro de otro se trata de un problema repetitivo compuesto.

Si suponemos que los renglones son los alumnos y las columnas las calificaciones, entonces emplearemos una matriz de 5 X 4 para solucionar el problema.

El problema se divide en dos partes: pedir la matriz y obtener de la matriz los promedios. Para pedir la matriz, que llamaremos calif, usaremos las siguientes acciones:

1. alumno ←1 2. SI alumno > 5 ENTONCES

IR al paso 3 DE OTRA FORMA CALIFICACIONES alumno ←alumno + 1 IR al paso 2

3. FIN

Proceso CALIFICACIONES:

1. calificación ←1 2. SI calificación > 4 ENTONCES

IR al paso 3 DE OTRA FORMA CALIFICACIÓN calificación ←calificación + 1 IR al paso 2

3. FIN

Proceso CALIFICACIÓN:

1. PEDIR calif(alumno, calificación)

Para obtener los promedios se ejecutarán las siguientes acciones:

1. alumno ←1 2. SI alumno > 5 ENTONCES

IR al paso 3 DE OTRA FORMA CALIFICACIONES2 alumno ←alumno + 1 IR al paso 2

3. FIN

Page 399: Computación metodología, lógica computa

384 PARTE III. PROGRAMACIÓN

Proceso CALIFICACIONES2:

1. suma <—0 2. calificación ←1 3. SI calificación > 4 ENTONCES

IR al paso 4 DE OTRA FORMA CALIFICACION2 calificación ←calificación + 1 IR al paso 3

4. promedio = suma / 4 5. DESPLEGAR promedio

Proceso CALIFICACION2:

1. suma = suma + calif(alumno, calificación)

La definición de los datos de entrada y salida queda:

SALIDAS: promedio de los 5 alumnos ENTRADAS: calificaciones de los 5 alumnos DATOS ADICIONALES: ninguno

Paso 3 Algoritmo:

De ahora en adelante llamaremos:

a a alumno c a calificación s a suma P a promedio CS a proceso

c a proceso CALIFICACIÓN CS2 a proceso CALIFICACIONES

C2 a proceso CALIFICACION2

1. a← 1 2. SI a > 5 ENTONCES IR al paso 3 DE OTRA FORMA CS a ←a + 1 IR al paso 2 3. a← 1 4. SI a > 5 ENTONCES IR al paso 5

Page 400: Computación metodología, lógica computa

DE OTRA FORMA CS2

a ←a + 1 IR al paso 4 5. FIN

CS:

1 c← 12 SI c > 4 ENTONCES IR al paso 3 DE OTRA FORMA C c ← c + 1 IR al paso 2 3. FINP

C:

1. PEDIR calif(a, c) 2. FINP

CS2:

1. s←0 2. c ← 1 3. SI c> 4 ENTONCES

IR al paso 4 DE OTRA FORMA C2

c ←c + 1 IR al paso 3

4. p ←s /4 5. DESPLEGAR p 6. FINP

C2:

1. s←s + calif(a, c)

2. FINP

Paso 4. Diagrama de flujo (véanse Figs. 11.7, 11.8 y 11.9).

Paso 5. Codificación y edición del programa:

REM Promedio de calificaciones empleando una matriz

CAPÍTULO II. ESTRUCTURAS DE DATOS 385

Page 401: Computación metodología, lógica computa

Figura 11.7

OPTION BASE 1 DIM calif[5,4] FOR a = 1 TO 5 FOR c = 1 T0 4

PRINT "Teclea la calificación ";c;" del alumno"; a INPUT calif(a.c)

NEXT c

386 PARTE III. PROGRAMACIÓN

Page 402: Computación metodología, lógica computa

CAPÍTULO II. ESTRUCTURAS DE DATOS 387

Figura 11.8

NEXT a FOR a = 1 T0 5

s=O FOR c = 1 T0 4

s=s+calif(a,c) NEXT c p=s /4 PRINT "Promedio alumno "; a;"

NEXT a END

=";p

Page 403: Computación metodología, lógica computa

388 PARTE III. PROGRAMACIÓN

Figura 11.9

Ejercicio: Efectuar el paso de pruebas del programa incluyendo las dos fases.

PROBLEMA 2

Page 404: Computación metodología, lógica computa

CAPÍTULO II. ESTRUCTURAS DE DATOS 389

Pedir 2 matrices de m renglones por n columnas y obtener una tercera matriz que sea la suma de ambas. La suma de una matriz con otra consiste en sumar cada uno de los elementos de una matriz con cada uno de los elementos de la otra:

c(l,1)=a(l,1)+b(l,1) c(l,2)=a(l,2)+b(l,2) : : c(m,n)=a(m,n)+b(m,n)

Paso 1. Definición del problema: Dado en la redacción del problema.

Paso 2. Planeación de la solución: Para solucionar este problema primero pediremos las dos matrices a y b. A continuación ejecutaremos un ciclo para sumar todos los renglones y otro ciclo interno para sumar todos los elementos en las columnas. Al final desplegaremos la matriz resultante. Nos saltaremos directamente al paso 5 de la metodología:

Paso 5. Codificación y edición del programa:

REM Suma de matrices OPTION BASE 1 DIM a[m,n], b[m,n], c[m,n] PRINT "Teclea los elementos de la matriz a:" FORi=1 10 5

FORj = 1 T0 4 INPUT a[,j]

NEXT j NEXTi PRINT "Teclea los elementos de la matriz b:" FOR i = 1 T0 5

FOR j = 1 T0 4 INPUT b[i,j]

NEXT j NEXT i FOR i = 1 T0 5 FOR j=1 T0 4

c[¡,j]=a[¡,j] + b[i,j] NEXT j

NEXT i PRINT "La matriz resultante es:" FOR i=1 T0 5

FOR j = 1 T0 4 PRINT c[i,j];" "

NEXT j

Page 405: Computación metodología, lógica computa

390 PARTE III. PROGRAMACIÓN

PRINT NEXT i END

Observe que cuando se despliega la matriz resultante al final del ciclo interno la instrucción PRINT está sin parámetros y que el PRINT interno termina en punto y coma. Esto es para imprimir en forma gráfica nuestra matriz, es decir, que cada renglón de nuestra matriz se vea como un renglón en la pantalla.

PROBLEMA 3

Un campo de golf consta de 18 hoyos; en ellos debe introducirse, sucesivamente, una pelota a base de golpes con un bastón. En una tarjeta van anotándose el número de golpes requeridos para llegar a cada uno de los hoyos. En una misma tarjeta pueden anotarse los golpes de varios jugadores, ya que ésta tiene la forma de una tabla; en ésta los renglones corresponden a los jugadores y las columnas a cada hoyo del campo. Por ejemplo, si en un juego participaran 4 jugadores la tarjeta tendría la forma que se muestra en la figura 11.10.

Lo cual quiere decir que el jugador 1 necesitó 4 golpes para llegar al hoyo 1, 4 para avanzar del hoyo 1 al 2, 6 para avanzar del hoyo 2 al 3, etcétera.

En resumen, gana el juego el jugador que llegue al hoyo 18 con el menor número de golpes. Suponga que un partido de golf recién terminó y ya se tiene la tarjeta que registra todos los golpes:

a) elabore un programa que pregunte cuántos jugadores participan y capture en una matriz los golpes de los 18 hoyos para los n jugadores, como si la matriz fuera la tarjeta del partido

b) que el programa pida un arreglo con los nombres de los n jugadores c) que el programa imprima el nombre de la persona que ocupó el primer lugar, el segundo, etc.,

hasta el enésimo lugar

Paso 1. Definición del problema: Dado en la redacción del problema.

Paso 2. Planeación de la solución: En primer lugar, se trata de pedir una matriz de dimensiones n X 18, a la que llamaremos g, y un

Hoyo

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1/ 18

Jugador 1 4 4 6 7 2 4 5 4 3 3 5 5 6 3 4 4 2 4 Jugador 2 5 4 5 7 3 5 4 3 2 2 5 5 6 4 3 3 2 3 Jugador 3 6 6 7 5 4 3 4 5 4 3 6 5 5 3 4 4 3 4 Jugador 4 7 5 7 7 4 5 5 6 4 4 4 5 5 4 5 5 3 5

Figura 11.10

Page 406: Computación metodología, lógica computa

CAPÍTULO II. ESTRUCTURAS DE DATOS 391

arreglo de nombres de dimensión n, al que llamaremos n$. Asimismo, tendremos que crear un arreglo numérico con la suma de los golpes de los n jugadores para después hacer un sort ascendente con él y saber en qué lugares quedaron los jugadores, a este arreglo le llamaremos s.

La creación de los dos arreglos y la matriz las efectuaremos en un mismo ciclo anidado, a continuación realizaremos el sort y finalmente se desplegarán los resultados.

Nos saltaremos directamente al paso 5 de la metodología.

Paso 5. Codificación y edición del programa:

REM Programa de golf INPUT "Número de jugadores"; n OPTION BASE 1 DIM g[n,18], s[n], n$[n] FOR i=1 TO n

PRINT "Nombre del jugador ";¡; INPUT n$[¡] PRINT "Favor de capturar los golpes del jugador";i s[i]=0

FOR j = 1 TO 18 INPUT g[i,j] s[i]= s[i]+ g[i,j] NEXT j NEXT i REM Sort FOR i=1 to n-1 FOR j=i+1 TO n IF s[j] < s[¡] THEN aux = s[¡] s[¡] = s[j] s[j] = aux aux$=n$[¡] n$[i]=n$[j] n$[j]=aux$ END IF NEXT j NEXT i REM Desplegar resultados FOR i =1 TO n

PRINT "Lugar";i;":";n$(¡) NEXT i END

Problemas propuestos

1) Efectuar la resta de dos matrices de dimensión m X n, sabiendo que esta operación es la resta de los elementos de una matriz con cada uno de los elementos de la otra.

Page 407: Computación metodología, lógica computa

392 PARTE III. PROGRAMACIÓN

2) Pedir una matriz de dimensiones m X n y obtener su matriz traspuesta. Una matriz b es traspuesta de otra a cuando, para todos los elementos de a:

b(j,i) = a(i.j)

3) Investigar cómo se obtiene el resultado de multiplicar una matriz por otra y hacer el programa que lo realice.

4) En un pequeño torneo de fútbol participaron 5 equipos jugando todos contra todos. Se registraron los resultados de los marcadores en una tabla, donde el contenido de cada celda corresponde al número de goles que el equipo del renglón i le anotó al equipo de la columna j. Por ejemplo, si la tabla fuera:

Elemento (1,2) = 1 Elemento (2,1) = 3

Significa que el equipo 2 le ganó al equipo 1 por marcador de 3-1

a) elaborar un programa que permita pedir estos resultados en una matriz. También pedir en un arreglo los nombres de los 5 equipos.

Sabiendo que con un empate ambos equipos ganan un punto y que si alguno gana obtiene dos puntos y el otro cero:

b) agregue al programa las instrucciones necesarias para que se cree un arreglo con los puntos que lograron cada uno de los equipos.

c) agregue al programa las instrucciones necesarias para que se imprima el nombre del equipo que ganó el torneo (es decir, el que logró más puntos).

d) agregue al programa las instrucciones necesarias para que se cree un arreglo con los goles que anotó cada equipo

e) ¿cuál fue el campeón goleador?

3) ARCHIVOS DE DATOS

Los archivos de datos son estructuras de datos que sirven para almacenar información en memoria secundaria.

Page 408: Computación metodología, lógica computa

CAPÍTULO I I . ESTRUCTURAS DE DATOS 393

Como vimos en el capítulo 6, existen tres tipos de archivos:

1) archivos tipo programa 2) archivos de datos 3) archivos tipo texto

Los archivos con los que trataremos en este capítulo son los archivos de datos. A diferencia de los datos manejados hasta el momento, que se almacenaban en zonas de la memoria

principal, estos datos se podrán guardar en memoria secundaria, lo cual nos permitirá almacenarlos en forma permanente y luego volver a utilizarlos, ya sea para modificarlos, borrarlos o simplemente para consultarlos.

El principal objetivo de esta sección es aprender a guardar datos nuevos en un archivo, así como consultar, modificar y borrar datos previamente almacenados, pero primero debemos entender la función y estructura de este tipo de archivos.

Para entender la función de los archivos de datos supongamos que tiene un negocio y desea obtener un registro de sus clientes, para poder consultar cualquier información en el momento en que lo desee. Los datos que necesita por cada cliente son: nombre, calle y número, colonia, ciudad, estado, código postal, teléfono y fecha de ingreso.

Además usted no cuenta con una computadora. Una forma de obtener esta información organizada podría ser abrir una tarjeta para cada cliente,

en donde se anotarán estos datos; y así en el momento de necesitar información de alguno de ellos, lo que debe hacer es buscar la tarjeta correspondiente y ver la información. El conjunto de tarjetas podría quedar como lo muestra la figura 11.11.

Si deseara modificar algún dato, lo que debe hacer es: buscar la tarjeta, cambiar el dato antiguo por el nuevo, y volver a guardarla.

Las operaciones que se podrían hacer con la información de los clientes serían: agregar la tarjeta de un cliente nuevo, eliminar la de algún cliente que se muda de ciudad, modificar, o simplemente consultar los datos.

Figura 11.11

Page 409: Computación metodología, lógica computa

Figura 11.12 Representación gráfica de un archivo de datos

Dichas operaciones no serían tan fáciles si el número de clientes fuera muy grande o si lo que deseáramos saber fuera algo más complicado, como por ejemplo obtener una lista de clientes que viven en determinada colonia, o una lista de los que ingresaron como clientes del negocio entre el 01/ENE/92 y 01/MAY/92.

Los archivos de datos surgieron para satisfacer necesidades como las mencionadas, pero con ayuda de la computadora. Los datos contenidos en este tipo de archivos tendrán una organización similar a la que se llevaría sin ayuda de la computadora, pero con otra terminología.

A lo que sería al equivalente de la tarjeta de un cliente lo llamaremos registro, y a cada uno de los datos de cada cliente, campo.

Un archivo de datos para manejar a nuestros clientes se representa gráficamente como un cuadro (véase Fig. 11.12), en donde cada renglón contiene un registro con los datos de un cliente y habrá tantos registros como clientes haya. Cada columna incluye un dato del cliente.

En este caso los nombres de los campos son: nombre, calle y número, colonia, ciudad, estado, código postal, teléfono y fecha ingreso, que son los mismos para todos los registros y el contenido de los campos serán los datos específicos de cada cliente.

Definamos ahora formalmente los conceptos nuevos:

Archivo de datos: colección de datos organizada por registros y campos, que es almacenada en dispositivos de memoria secundaria.

Registro: información referente a una entidad, formado por un conjunto de campos. Campo: característica de una entidad.

Siempre que se desee trabajar con un archivo de datos será muy importante diseñar primero la estructura de éste, es decir, determinar qué campos se necesitarán utilizar.

392 PARTE III. PROGRAMACIÓN

Page 410: Computación metodología, lógica computa

CAPÍTULO II. ESTRUCTURAS DE DATOS 395

Organización de los archivos de datos

Es el método en que se dispone el acceso a los registros. Existen básicamente dos métodos:

1) Secuencial 2) Aleatorio o directo

1) Secuenciales

Son archivos en que para conseguir un registro en particular se deben recorrer todos los anteriores y sus registros pueden ser de longitud variable.

2) Aleatorios o directos

Permiten tener acceso a cualquier registro sin tener que recorrer los que se encuentren almacenados antes. En este tipo de archivos cada registro tiene un número que lo identifica, para así poder localizar alguno en cualquier momento con sólo indicar su número. Todos sus registros tienen la misma longitud.

Dada la versatilidad de los archivos aleatorios serán éstos los que estudiaremos en este libro.

Archivos de datos aleatorios

Son archivos organizados de tal manera que permiten el acceso a un registro específico, para leer o modificar la información almacenada en él.

Cada registro se identifica por un número que indica su posición en el archivo.

Proceso para accesar un archivo de datos aleatorio

Como se había visto, un sistema computacional cuenta con dos tipos de memorias: la memoria principal y la memoria secundaria.

Para el manejo de archivos en Quick Basic se utiliza una tercera memoria, que le llama memoria intermedia o buffer, la cual se encuentra en alguna zona de la memoria principal y el objetivo es ser intermediaria entre la memoria principal y la memoria secundaria durante el manejo de los archivos de datos.

Como hemos mencionado, las operaciones que se pueden realizar sobre un archivo de datos son:

agregar registros consultar registros borrar registros modificar registros

las cuales se reducen a operaciones de lectura o escritura sobre el archivo de datos. La interacción entre los diferentes tipos de memoria y las operaciones de lectura y escritura se

pueden representar gráficamente como se muestra en la figura 11.13:

Page 411: Computación metodología, lógica computa

Figura 11.13

Lo que significa que cuando sea necesario escribir información en un archivo de datos se tendrán que realizar dos pasos:

1) pasar los datos de la memoria principal a la memoria intermedia

2) pasar los datos de la memoria intermedia a la memoria secundaria

Y cuando sea necesario leer información de un archivo de datos sólo será necesario:

1) pasar los datos de memoria secundaria a memoria intermedia

La memoria intermedia tiene como característica que sólo puede almacenar datos de tipo alfanu-mérico, por lo que para el manejo de datos de tipo numérico será necesario convertirlos a alfanumé-ricos cuando se escriba información o convertirlos a numéricos nuevamente cuando se lea información que previamente haya sido convertida a alfanumérica. Esto se realizará mediante funciones especiales que Quick Basic tiene para este fin.

Concepción del archivo de datos

En la planeación de la solución del problema se debe diseñar la estructura de los registros, que es especificar el nombre y longitud —número de caracteres— de los campos. Esto depende de los requerimientos encontrados en la definición del problema.

Por ejemplo, para almacenar los datos de un directorio telefónico en un archivo de datos, su estructura podría ser:

Campo Longitud

nombre 30 dirección 30 teléfono 10

396 PARTE III. PROGRAMACIÓN

Page 412: Computación metodología, lógica computa

CAPÍTULO II. ESTRUCTURAS DE DATOS 397

La longitud de cada campo se determina calculando la longitud que podría ocupar un dato común; por ejemplo, la longitud del campo nombre es de 30, porque no son comunes nombres más largos.

La longitud del registro se obtiene sumando las longitudes calculadas para todos los campos; así para la estructura del archivo que acabamos de definir, la longitud del registro es de 70.

Con frecuencia se puede encontrar un campo muy importante dado que el contenido en cada registro lo diferencia de los demás. Por ejemplo, el campo nombre en este caso es importante pues para localizar los datos de una persona necesitamos buscarla por el nombre. A este tipo de campos se les llama campos clave.

También es conveniente dar nombre a las variables de memoria principal que se emplearán para manejar los datos que se enviarán a la memoria intermedia y al disco duro en operaciones de escritura. Estas variables pueden ser numéricas o alfanuméricas, dependiendo de lo que se necesite. Para el caso del ejemplo serían:

nombre$ direc$ telef$

Asimismo debemos dar nombre a las variables de memoria intermedia que serán empleadas en las operaciones de lectura y escritura de registros. Recomendamos emplear los mismos nombres que se hayan manejado para la memoria principal, pero anteponiendo la letra i —de intermedia— para diferenciarlas. No olvide que estas variables deben ser alfanuméricas. Para el caso del ejemplo serían:

inombre$ idirec$ itelef$

Si ponemos en una tabla estos datos que definimos quedarían:

Campo Longitud Nombre en Nombre en Mem. Men, principal intermedia

nombre 30 nombre$ inombre$ dirección 30 direc$ idirec$ teléfono 10 telef$ itelef$

Operaciones con los archivos aleatorios

Aunque básicamente las operaciones con los archivos son de lectura y escritura de registros, en un programa típico de manejo de archivos de datos, podemos encontrar las siguientes opciones:

1) Altas 2) Bajas 3) Consultas 4) Cambios 5) Reporte general 6) Reportes específicos

Page 413: Computación metodología, lógica computa

398 PARTE II I . PROGRAMACIÓN

1) ALTAS

Se refiere a la inclusión de los datos de un nuevo registro en el archivo de datos. Los pasos generales a seguir son:

1) Abrir el archivo 2) Especificar la estructura asignando espacio para los campos en memoria intermedia 3) Buscar el primer número de registro que esté inactivo para hacer ahí la alta; de no haber se tiene

que crear un nuevo registro al final del archivo 4) Pedir los datos de la entidad en variables de memoria principal 5) Pasar los datos de memoria principal a memoria intermedia 6) Escribir los datos de memoria intermedia a memoria secundaria en el número de registro

encontrado en el paso 3 7) Cerrar el archivo

2) BAJAS

Se refiere a la exclusión de un registro como parte activa del archivo de datos. Para lograr esto lo que haremos será escribir espacios en el campo clave del registro que se quiera dar de baja, y cuando se haga una lectura a este registro se verificará que no tenga solamente espacios porque significará que el registro está inactivo. A este tipo de baja se le llama baja lógica pues aunque algunos datos aun permanecen, están inhabilitados. Otra forma de dar baja lógica es agregar un campo más a la estructura del archivo que indique si está activo o inactivo. Nosotros emplearemos la primera forma mencionada. Los pasos generales a seguir son: •

1) Abrir el archivo 2) Especificar la estructura asignando espacio para los campos en memoria intermedia 3) Leer el registro 4) Escribir espacios en el campo clave de memoria intermedia 5) Escribir el registro 6) Cerrar el archivo

3) CONSULTAS

Se refiere al acceso y despliegue de los datos de un registro activo por medio de su campo clave. Los pasos generales a seguir son:

1) Abrir el archivo 2) Especificar la estructura asignando espacio para los campos en memoria intermedia 3) Leer el registro 4) Desplegar los campos de memoria intermedia 5) Cerrar el archivo

Page 414: Computación metodología, lógica computa

CAPÍTULO I I . ESTRUCTURAS DE DATOS 399

4) CAMBIOS

Se refiere al cambio en algún dato de los campos de un registro activo. Los pasos generales a seguir son:

1) Abrir el archivo 2) Especificar la estructura asignando espacio para los campos en memoria intermedia 3) Leer registro 4) Pedir el nuevo dato en variable de memoria principal 5) Pasar el dato de la variable de memoria principal a la de memoria intermedia 6) Escribir el registro 7) Cerrar el archivo

5) REPORTE GENERAL

Es el despliegue de los campos de todos los registros activos de un archivo. Los pasos generales a seguir son:

1) Abrir el archivo 2) Especificar la estructura asignando espacio para los campos en memoria intermedia 3) Verificar el número de registros existentes 4) i←1 5) SI i > número de registros existentes ENTONCES

IR al paso 6 DE OTRA FORMA LEER REGISTRO i SI el registro está activo ENTONCES

Desplegar variables de memoria intermedia i←i + 1 IR al paso 5

6) Cerrar el archivo

6) REPORTES ESPECÍFICOS

Es el despliegue de los campos de todos los registros que cumplan con una condición específica y estén activos en un archivo.

Los pasos generales a seguir son:

1) Abrir el archivo 2) Especificar la estructura asignando espacio para los campos en memoria intermedia 3) Verificar el número de registros existentes 4) i← 1 5) SI i > número de registros existentes ENTONCES

IR al paso 6

Page 415: Computación metodología, lógica computa

40it PARTE III. PROGRAMACIÓN

DE OTRA FORMA LEER REGISTRO i

SI el registro está activo y cumple con la condición del reporte específico ENTONCES Desplegar variables de memoria intermedia i← i + 1 IR al paso 5 6) Cerrar el archivo

Pueden existir muchas otras opciones en un programa que maneje archivos de datos, dependiendo de los requerimientos del problema.

Instrucciones y funciones para el manejo de archivos de datos aleatorios

INSTRUCCIÓN: OPEN

Funcionamiento: permite abrir un archivo de datos, ya sea para escribir o para leer datos en él. Formato: OPEN "R", número de archivo, "nombre", longitud

donde: "R": es un parámetro que siempre usaremos para indicar que los archivos son aleatorios

(random en inglés) número de archivo: es un número entre 1 y 15 que se asocia al archivo, para referirse a éste

mediante el número en vez de su nombre nombre: nombre del archivo, el cual es asignado según las reglas del sistema operativo DOS;

recomendamos usar la extensión .DAT para indicar que se trata de un archivo de datos longitud: es la longitud de cada registro, la cual es calculada en el momento de diseñar la

estructura de los registros.

Acción equivalente en algoritmo: ABRIR ARCHIVO "nombre"

Bloque equivalente en diagrama de flujo:

ABRIR ARCHIVO nombre

se usa el símbolo de proceso para indicar que es una orden y la raya interna para indicar que es una operación de archivos

Ejemplo: OPEN "R", 1, "DIRTEL.DAT", 70

Page 416: Computación metodología, lógica computa

CAPÍTULO II. ESTRUCTURAS DE DATOS 401

INSTRUCCIÓN: FIELD #

Funcionamiento: asigna espacio en la memoria intermedia para los campos que componen los registros. Formato: FIELD # número de archivo, longitud 1 AS variable de memoria intermedia1... , longitudN AS variable de memoria intermediaN

donde: número de archivo: es un número entre 1 y 15 que se asocia al archivo, para referirse a éste

mediante el número en vez de su nombre longitud i: especifica el número de caracteres que debe tener cada campo. El total de

caracteres de todos los campos debe ser igual a la indicada en la instrucción OPEN. variable de memoria intermedia i: nombre asignado a la variable de memoria intermedia

No tiene acción en algoritmo ni bloque en diagrama de flujo equivalentes; sin embargo, en un programa debe ir enseguida de la instrucción OPEN.

Ejemplo: FIELD #1, 30 AS inombre$, 30 AS idirec$, 10 AS itelef$

INSTRUCCIÓN: LSET

Funcionamiento: mueve un dato de memoria principal a memoria intermedia acomodando el dato que se mueve, justificado a la izquierda. Debe haber tantos LSETs como variables de memoria principal se quieran pasar a memoria intermedia. Formato: LSET variable de memoria intermedia = expresión alfanumérica Acción equivalente en algoritmo: MOVER IZQUIERDA variable de memoria intermedia ← expresión alfanumérica

Bloque equivalente en diagrama de flujo:

variable de memoria intermedia ← expresión alfanumérica

se usa el símbolo de proceso para indicar que es una asignación y la raya interna para indicar que es una operación de archivos

Ejemplos: LSET inombre$ = nombre$ LSET idirec$ = direcS LSET itelef$ = telef$

Page 417: Computación metodología, lógica computa

402 PARTE III. PROGRAMACIÓN

INSTRUCCIÓN: RSET

Funcionamiento: mueve un dato de memoria principal a memoria intermedia acomodando el dato que se mueve justificado a la derecha. Debe haber tantos RSETs como variables de memoria principal se quieran pasar a memoria intermedia. Formato: RSET variable de memoria intermedia = expresión alfanumérica Acción equivalente en algoritmo: MOVER DERECHA variable de memoria intermedia ← expresión alfanumérica

Bloque equivalente en diagrama de flujo:

variable de memoria intermedia ← expresión alfanumérica

se usa el símbolo de proceso para indicar que es una asignación y la raya interna para indicar que es una operación de archivos

Ejemplo: RSET inombre$ = nombreS RSET idirec$ = direcS RSET itelef$ = telef$

Veamos un ejemplo para diferenciar las instrucciones LSET y RSET. Supongamos que deseamos pasar la expresión alfanumérica "María" a la variable de memoria intermedia inombre$; la instruc-ción para hacerlo podría ser cualquiera de las siguientes: LSET inombre$ = "María" ó RSET inombre$ = "María"

La diferencia se nota en la forma en que Quick Basic acomoda la expresión en el espacio reservado por el FIELD para esa variable de memoria intermedia. Como el campo tiene una longitud de 30 caracteres, el LSET haría lo siguiente:

que es justificar a la izquierda la expresión; en cambio el RSET haría lo siguiente:

Page 418: Computación metodología, lógica computa

CAPÍTULO II. ESTRUCTURAS DE DATOS 403

que es justificar a la derecha la expresión

INSTRUCCIÓN: PUT #

Funcionamiento: graba en memoria secundaria un registro con el contenido de la memoria intermedia. Formato: PUT # número de archivo, número de registro

donde: número de archivo: es un número entre 1 y 15 que se asocia al archivo, para referirse a éste

mediante el número en vez de por su nombre número de registro: número de registro en donde se desea almacenar los datos

Acción equivalente en algoritmo: ESCRIBIR REGISTRO número de registro

Bloque equivalente en diagrama de flujo:

se usa el símbolo de salida de datos para indicar que están saliendo datos hacia la memoria secundaria y la raya interna para indicar que se trata de una operación de archivos.

Ejemplo: PUT#1, 1

INSTRUCCIÓN: GET #

Funcionamiento: pasa el registro especificado de memoria secundaria o memoria intermedia. Formato: GET # número de archivo, número de registro

donde: número de archivo: es un número entre 1 y 15 que se asocia al archivo, para referirse a éste

mediante el número en vez de su nombre número de registro: número de registro de donde se desea extraer los datos

Acción equivalente en algoritmo: LEER REGISTRO número de registro

Page 419: Computación metodología, lógica computa

se usa el símbolo de entrada ya que están entrando datos provenientes de memoria secundaria, y la raya interna para indicar que se trata de una operación de archivos

Ejemplo: GET#1, 1

INSTRUCCIÓN: CLOSE #

Funcionamiento: cierra un archivo de datos. Formato: CLOSE # número de archivo

donde: número de archivo: es un número entre 1 y 15 que se asocia al archivo, para referirse a éste

mediante el número en vez de su nombre

Acción equivalente en algoritmo: CERRAR ARCHIVO nombre

Bloque equivalente en diagrama de flujo:

CERRAR ARCHIVO nombre

se usa el símbolo de proceso para indicar que es una orden y la raya interna para indicar que es una operación de archivos

Ejemplo: CLOSE #1

FUNCIÓN: LOF

Funcionamiento: regresa el número de caracteres que tiene un archivo Formato:

404 PARTE III. PROGRAMACIÓN

Bloque equivalente en diagrama de flujo:

Page 420: Computación metodología, lógica computa

CAPÍTULO II. ESTRUCTURAS DE DATOS 405

LOF(número de archivo) Dado que en un archivo aleatorio todos los registros tienen la misma longitud, la instrucción LOF

nos puede ayudar a obtener el número de registros que tiene un archivo aplicándola como parte de la siguiente fórmula:

número de registros = LOF (número de archivo) / longitud de cada registro

donde: longitud de cada registro es la longitud especificada en la instrucción OPEN

Ejemplo: n = LOF[1] / 70

FUNCIÓN: MKS$

Funcionamiento: convierte datos tipo numérico que sean reales a tipo alfanumérico, siempre y cuando el número de dígitos que la compongan no sea más de 7.

Se usa en conjunto con LSET o RSET. La longitud del campo de memoria intermedia especificado en la instrucción FIELD debe ser de

4. Formato: LSET variable de memoria intermedia = MKS$ (expresión numérica real con 7 o menos dígitos) RSET variable de memoria intermedia = MKS$ (expresión numérica real con 7 o menos dígitos)

FUNCIÓN: MKD$

Funcionamiento: convierte datos tipo numérico que sean reales a tipo alfanumérico cuando el número de dígitos que la compongan sea más de 7.

Se usa en conjunto con LSET o RSET. La longitud del campo de memoria intermedia especificado en la instrucción FIELD debe ser de

8. Formato: LSET variable de memoria intermedia = MKD$ (expresión numérica real con más de 7 dígitos) RSET variable de memoria intermedia = MKD$ (expresión numérica real con más de 7 dígitos)

FUNCIÓN: MKI$

Funcionamiento: convierte datos tipo numérico que sean enteros a tipo alfanumérico, siempre y cuando estén entre -32768 y 32767.

Se usa en conjunto con LSET o RSET. La longitud del campo de memoria intermedia especificado en la instrucción FIELD debe ser de

2. Formato: LSET variable de memoria intermedia = MKI$ (expresión numérica entera)

Page 421: Computación metodología, lógica computa

406 PARTE III. PROGRAMACIÓN

RSET variable de memoria intermedia = MKI$ (expresión numérica entera)

FUNCIÓN: MKL$

Funcionamiento: convierte datos tipo numérico que sean enteros a tipo alfanumérico, siempre y cuando estén entre -2147483648 y 2147483647.

Se usa en conjunto con LSET o RSET. La longitud del campo de memoria intermedia especificado en la instrucción FIELD debe ser de

4. Formato: LSET variable de memoria intermedia = MKL$ (expresión numérica entera larga) RSET variable de memoria intermedia = MKL$ (expresión numérica entera larga)

FUNCIÓN: CVS

Funcionamiento: convierte un dato que fue convertido previamente a alfanumérico con la instrucción MKS$, a tipo numérico. Formato: variable numérica = CVS (variable de memoria intermedia)

FUNCIÓN: CVD

Funcionamiento: convierte un dato que fue convertido previamente a alfanumérico con la instrucción MKD$, a tipo numérico. Formato: variable numérica = CVD (variable de memoria intermedia)

FUNCIÓN: CVI

Funcionamiento: convierte un dato que fue convertido previamente a alfanumérico con la instrucción MKI$, a tipo numérico. Formato: variable numérica = CVI (variable de memoria intermedia)

FUNCIÓN: CVL

Funcionamiento: convierte un dato que fue convertido previamente a alfanumérico con la instrucción MKL$, a tipo numérico. Formato: variable numérica = CVL (variable de memoria intermedia)

Page 422: Computación metodología, lógica computa

CAPÍTULO I I . ESTRUCTURAS DE DATOS 407

Instrucciones para dar presentación a un programa

El par de instrucciones que veremos a continuación pueden ser usadas en cualquier programa para darle presentación a los datos que pedimos y desplegamos en la pantalla.

INSTRUCCIÓN: CLS

Funcionamiento: limpia la pantalla y sitúa el cursor en la esquina superior izquierda. Formato: CLS

INSTRUCCIÓN: LÓCATE

Funcionamiento: sitúa el cursor en cualquier parte de la pantalla que se desee. La pantalla de texto sobre la que trabajamos tiene 24 renglones por 80 columnas. Formato: LOCATE renglón, columna

Ejemplo: LOCATE 5,35 sitúa el cursor en el renglón 5 y en la columna 35

Problemas resueltos

PROBLEMA 1

En una ferretería se desea tener un programa que les permita llevar un control sobre las existencias de los productos que venden. Los datos que manejan son: nombre del artículo, costo unitario, precio de venta y cantidad que tienen en almacén. Las operaciones que se desean realizar son:

1) Agregar nuevos artículos al archivo 2) Borrar algún artículo que ya no se venderá más 3) Consultar los datos de determinado artículo 4) Modificar datos de algún artículo 5) Obtener un reporte de todos los artículos 6) Poder aumentar las existencias de un artículo cuando se compre al proveedor 7) Poder descontar de las existencias de un artículo cuando se venda al cliente

Paso 1. Definición del problema: Dado en la redacción del problema.

Paso 2. Planeación de la solución: Lo primero que debemos hacer es diseñar la estructura de los registros, que es especificar nombre y

Page 423: Computación metodología, lógica computa

408 PARTE III. PROGRAMACIÓN

longitud de los campos, así como dar nombre a las variables de memoria principal e intermedia, que serán usadas para manejar los datos del archivo:

Campo

nombre del artículo costo precio cantidad

Longitud

25 4 4 4

Nombre en Mem. principal

articul$ costo precio cant

Nombre en Mem. intermedia

iarticul$ icosto$ iprecio$ icant$

La longitud de los campos costo, precio y cantidad es de 4, pues los estamos considerando como números reales de 7 o menos dígitos y éstos ocupan en el archivo sólo 4 caracteres después de haber sido convertidos a alfanuméricos, con la instrucción MKS$.

La longitud de cada registro se calcula sumando las longitudes de los campos y en este caso será de 37.

El campo clave que emplearemos para localizar los registros es el campo nombre del artículo. Para presentar en pantalla las distintas operaciones al usuario utilizaremos un menú con las

siguientes opciones:

1) Altas 2) Bajas 3) Consultas 4) Cambios 5) Reporte general 6) Compras 7) Ventas 8) Salir

El menú estará desplegándose continuamente y ejecutando la opción deseada hasta que se mande ejecutar la opción 8 del menú, con la cual se dará término al programa.

Dependiendo de la opción que se haya seleccionado, se ejecutarán las siguientes acciones:

1) ALTAS

1) Abrir el archivo 2) Especificar la estructura asignando espacio para los campos en memoria intermedia 3) Buscar el primer número de registro que esté inactivo para hacer ahí la alta; de no haber se

tiene que crear un nuevo registro al final del archivo 4) Pedir los datos de la entidad en variables de memoria principal 5) Pasar los datos de memoria principal a memoria intermedia 6) Escribir los datos de memoria intermedia a memoria secundaria en el número de registro

encontrado en el paso 3 7) Cerrar el archivo

2) BAJAS

1) Abrir el archivo

Page 424: Computación metodología, lógica computa

CAPÍTULO II. ESTRUCTURAS DE DATOS 409

2) Especificar la estructura asignando espacio para los campos en memoria intermedia 3) Leer el registro 4) Escribir espacios en el campo clave de memoria intermedia 5) Escribir el registro 6) Cerrar el archivo

3) CONSULTAS 1) Abrir el archivo 2) Especificar la estructura asignando espacio para los campos en memoria intermedia 3) Leer el registro 4) Desplegar los campos de memoria intermedia 5) Cerrar el archivo

4) CAMBIOS 1) Abrir el archivo 2) Especificar la estructura asignando espacio para los campos en memoria intermedia 3) Leer registro 4) Pedir el nuevo dato en variable de memoria principal 5) Pasar el dato de la variable de memoria principal a la de memoria intermedia 6) Escribir el registro 7) Cerrar el archivo

5) REPORTE GENERAL 1) Abrir el archivo 2) Especificar la estructura asignando espacio para los campos en memoria intermedia 3) Verificar el número de registros existentes 4) i← 1 5) SI i > número de registros existentes ENTONCES

IR al paso 6 DE OTRA FORMA

LEER REGISTRO i SI el registro está activo ENTONCES

Desplegar variables de memoria intermedia i← i + 1 IR al paso 5

6) Cerrar el archivo

6) COMPRAS 1) Abrir el archivo 2) Especificar la estructura asignando espacio para los campos en memoria intermedia 3) Leer registro 4) Pedir la cantidad de artículos comprada 5) Sumar este dato con la cantidad de artículos que se tiene en la memoria intermedia y reasignar

la suma a esta misma variable 6) Escribir el registro 7) Cerrar archivo

Page 425: Computación metodología, lógica computa

410 PARTE III. PROGRAMACIÓN

7) VENTAS 1) Abrir el archivo 2) Especificar la estructura asignando espacio para los campos en memoria intermedia 3) Leer registro 4) Pedir la cantidad de artículos vendida 5) Restar este dato a la cantidad de artículos que se tiene en la memoria intermedia y reasignar

la resta a esta misma variable 6) Escribir el registro 7) Cerrar archivo

Paso 3. Algoritmo: De ahora en adelante llamaremos:

articul$ a nombre del artículo (M. Principal) costo a costo (M. Principal) precio a precio (M. Principal) cant a cantidad (M. Principal) iarticul$ a nombre del artículo (M. Intermedia) icosto$ a' costo (M. Intermedia) iprecio$ a precio (M. Intermedia) icant$ a cantidad (M. Intermedia) op a opción seleccionada sn$ a variable que toma un valor de 'S' o' N' para

confirmar la baja de un registro c a número de campo que se desea cambiar cantcomp a cantidad de artículos comprados cantvend a cantidad de artículos vendidos total a cantidad de artículos después de la compra o venta n a número de registros del archivo i a contador de registros del archivo r a número de registro encontrado

Dado que se necesita en varios de los procesos, se ha creado otro proceso más, llamado ENCUEN-TRA, que sirve para localizar un registro según el campo clave. Observe cómo en este proceso se tienen que agregar espacios al valor que se pretende localizar, pues la longitud del campo nombre del artículo es de 25 y en la alta el LSET se encargó de guardar el dato con un relleno de espacios a la derecha del dato.

1. DESPLEGAR "MENÚ:" 2. DESPLEGAR "1) Altas" 3. DESPLEGAR "2) Bajas" 4. DESPLEGAR "3) Consultas" 5. DESPLEGAR "4) Cambios" 6. DESPLEGAR "5) Reporte general" 7. DESPLEGAR "6) Compras" 8. DESPLEGAR "7) Ventas"

Page 426: Computación metodología, lógica computa

CAPÍTULO II. ESTRUCTURAS DE DATOS 411

9. DESPLEGAR "8) Salir" 10. PEDIR op 11. SI op=l ENTONCES

ALTAS DE OTRA FORMA SI op=2 ENTONCES

BAJAS DE OTRA FORMA SI op = 3 ENTONCES

CONSULTAS DE OTRA FORMA

SI op=4 ENTONCES CAMBIOS DE OTRA FORMA SI op=5 ENTONCES REPORTEG DE OTRA FORMA SI op=6 ENTONCES COMPRAS DE OTRA FORMA SI op = 7 ENTONCES VENTAS

12. SI op=8 ENTONCES IR al paso 13 DE OTRA FORMA IR al paso 1

13. FIN

ALTAS:

1. 2. 3. 4. 5.

6. 7. 8.

ABRIR ARCHIVO "FERRET" n←LOF(l)/37 r←n+1 i←1 SI i > n ENTONCES

IR al paso 6 DE OTRA FORMA

LEER REGISTRO i SI iarticul$=SPACE$(25) ENTONCES

r ← i i←n i ← i + 1 IR al paso 5

PEDIR articul$ PEDIR costo PEDIR precio

Page 427: Computación metodología, lógica computa

412 PARTE II I . PROGRAMACIÓN

9. cant←0 10. MOVER IZQUIERDA iarticul$ ← iarticul$ 11. MOVER IZQUIERDA icosto$ ← MKS$(costo) 12. MOVER IZQUIERDA iprecio$ ← MKS$(precio) 13. MOVER IZQUIERDA icant$ ←MKS$(cant) 14. ESCRIBIR REGISTRO r 15. CERRAR ARCHIVO "FERRET" 16. FINP

BAJAS:

1. ABRIR ARCHIVO "FERRET" 2. ENCUENTRA 3. SI r=0 ENTONCES

DESPLEGAR "Ese artículo no se encuentra" DE OTRA FORMA SI CVS(icant$) > 0 ENTONCES

DESPLEGAR "Ese artículo todavía tiene existencias" DE OTRA FORMA

DESPLEGAR iarticul$, CVS(icosto$), CVS(iprecio$), CVS(icant$) PEDIR sn$ SI sn$="S" ENTONCES

MOVER IZQUIERDA iarticul$ ← SPACE$(25) ESCRIBIR REGISTRO r

4. CERRAR ARCHIVO "FERRET" 5. FINP

CONSULTAS:

1. ABRIR ARCHIVO "FERRET" 2. ENCUENTRA 3. SI r=0 ENTONCES

DESPLEGAR "Ese artículo no se encuentra" DE OTRA FORMA DESPLEGAR iarticul$, CVS(icosto$), CVS(iprecio$), CVS(icant$)

4. CERRAR ARCHIVO "FERRET" 5. FINP

CAMBIOS:

1. ABRIR ARCHIVO "FERRET" 2. ENCUENTRA 3. SI r=0 ENTONCES

DESPLEGAR "Ese artículo no se encuentra" DE OTRA FORMA

Page 428: Computación metodología, lógica computa

CAPÍTULO II. ESTRUCTURAS DE DATOS 413

DESPLEGAR "0) NINGUNO" DESPLEGAR "1) Artículo" DESPLEGAR "2) Costo" DESPLEGAR "3) Precio" DESPLEGAR "4) Cantidad" PEDIR c SI c > 0 ENTONCES SI c= l ENTONCES PEDIR articul$

MOVER IZQUIERDA iarticul$ ← articul$ DE OTRA FORMA SI c = 2 ENTONCES

PEDIR costo MOVER IZQUIERDA icosto$ ← MKS$(costo)

DE OTRA FORMA SI c = 3 ENTONCES

PEDIR precio MOVER IZQUIERDA iprecio$ ← MKS$(precio) DE OTRA FORMA PEDIR cant

MOVER IZQUIERDA icant$ ← MKS$(cant) ESCRIBIR REGISTRO r

4. CERRAR ARCHIVO "FERRET" 5. FINP

REPORTEG:

1. ABRIR ARCHIVO "FERRET" 2. n← LOF(l)/37 3. i← 1 4. SI i > n ENTONCES

IR al paso 5 DE OTRA FORMA LEER REGISTRO i SI iarticul$ < > SPACE$(25) ENTONCES

DESPLEGAR iarticul$, CVS(icosto$), CVS(iprecio$), CVS(icant$) i← i + 1 IR al paso 4

5. CIERRA ARCHIVO "FERRET" 6. FINP

COMPRAS:

1. ABRIR ARCHIVO "FERRET" 2. ENCUENTRA 3. SI r=0 ENTONCES

Page 429: Computación metodología, lógica computa

414 PARTE III. PROGRAMACIÓN

DESPLEGAR "Ese artículo no se encuentra" DE OTRA FORMA PEDIR cantcomp total ←CVS(icant$) + cantcomp MOVER IZQUIERDA icant$ ← MKS$(total) ESCRIBIR REGISTRO r

4. CERRAR ARCHIVO "FERRET" 5. FINP

VENTAS:

1. ABRIR ARCHIVO "FERRET" 2. ENCUENTRA 3. SI r=0 ENTONCES

DESPLEGAR "Ese artículo no se encuentra" DE OTRA FORMA PEDIR cantvend total ← CVS(icant$) - cantvend MOVER IZQUIERDA icant$ ← MKS$(total) ESCRIBIR REGISTRO r

4. CERRAR ARCHIVO "FERRET" 5. FINP

ENCUENTRA:

1. PEDIR articul$ 2. articul$ ← articul$ + SPACE$(25-LEN(articul$)) 3. n ← LOF(l)/37 4. r←0 5. i← l 6. SI i > n ENTONCES

IR al paso 7 DE OTRA FORMA LEER REGISTRO i SI articul$ = iarticul$ ENTONCES

r← i i←n i← i + 1

IR al paso 6 7. FINP

Paso 4. Diagrama de flujo (véanse Figs. 11.14 a 11.22).

Paso 5. Codificación y edición del programa: REM

FERRET.BAS

Page 430: Computación metodología, lógica computa

CAPÍTULO II. ESTRUCTURAS DE DATOS 415

Figura 11.14

Page 431: Computación metodología, lógica computa

416 PARTE III. PROGRAMACIÓN

Figura 11.15

Page 432: Computación metodología, lógica computa

CAPÍTULO II. ESTRUCTURAS DE DATOS 417

ABRIR ARCHIVO "FERRET"

Figura 11 .16

Page 433: Computación metodología, lógica computa

REM Programa de control de existencias

MENÚ: CLS LOCATE 1,30: PRINT " F E R R E T E R Í A " LOCATE 5,34: PRINT "M E N U" LOCATE 6,34: PRINT "…."

Figura 11.17

418 PARTE III. PROGRAMACIÓN

Page 434: Computación metodología, lógica computa

Figura 11.18

CAPÍTULO II. ESTRUCTURAS DE DATOS 419

Page 435: Computación metodología, lógica computa

420 PARTE III. PROGRAMACIÓN

Figura 11 .19

Page 436: Computación metodología, lógica computa

Figura 11.20

CAPÍTULO I I . ESTRUCTURAS DE DATOS 421

Page 437: Computación metodología, lógica computa

422 PARTE III. PROGRAMACIÓN

Figura 11.21

Page 438: Computación metodología, lógica computa

Figura 11.22

CAPÍTULO I I . ESTRUCTURAS DE DATOS 423

Page 439: Computación metodología, lógica computa

424 PARTE III. PROGRAMACIÓN

LOCATE 10,31: PRINT "1) Altas" LOCATE 11,31: PRINT "2] Bajas" LOCATE 12,31: PRINT "3) Consultas" LOCATE 13,31: PRINT "4) Cambios" LOCATE 14,31: PRINT "5) Reporte general" LOCATE 15,31: PRINT "6) Compras" LOCATE 16,31: PRINT "7) Ventas" LOCATE 17,31: PRINT "8) Salir" LOCATE 21,34: INPUT "OPCIÓN -=>",op IF op = 1 THEN

GOSUB ALTAS ELSE

IF op = 2 THEN GOSUB BAJAS

ELSE IF op=3THEN

GOSUB CONSULTAS ELSE

IF op=4 THEN GOSUB CAMBIOS

ELSE IF op = 5THEN

GOSUB REPORTEG ELSE

IF op = B THEN GOSUB COMPRAS

ELSE IF op=7THEN

GOSUB VENTAS END IF END IF END IF END IF END IF END IF ENDIF IF op = 8THEN GOTO FIN

ELSE GOTO MENÚ

END IF FIN: END

ALTAS: OPEN "R", 1, "FERRET.DAT". 37

Page 440: Computación metodología, lógica computa

CAPÍTULO II. ESTRUCTURAS DE DATOS 425

FIELD #1, 25 AS iarticul$, 4 AS icostoS, 4 AS iprecio$, 4 AS icant$

REM Localizar el registro en el que se va a dar la alta REM que es el primero dado de baja o el siguiente al último

n=L0F[1]/37 r=n + 1 FOR i=1 TO n GET#1,i IF iarticul$=SPACE$(25) THEN r=i i = n END IF NEXT i

CLS PRINT "ALTAS" PRINT PRINT "Favor de teclear los siguientes datos:" PRINT

REM Pedir los datos en variables de memoria principal

INPUT "Articulo: ",articul$ INPUT "Costo: ",costo INPUT "Precio: ",precio cant = O

REM Pasar los datos a memoria intermedia

LSET iarticul$ = articuIS LSET icosto$ = MKS$(costo) LSET iprecio$ = MKS$(precio) LSET icant$ = MKSS(cant)

REM Escribir los datos a disco

PUT#1,r

CLOSE #1 PRINT INPUT "Alta realizada. Oprima <enter>...", enter$

RETURN

BAJAS: OPEN "R". 1, "FERRET.DAT", 37

Page 441: Computación metodología, lógica computa

426 PARTE III. PROGRAMACIÓN

FIELD #1, 25 AS iarticulS, 4 AS icostoS, 4 AS iprecioS, 4 AS icantS CLS PRINT "BAJAS"

PRINT

REM Localizar el registro

GOSUB ENCUENTRA

PRINT IF r=O THEN

INPUT "Ese artículo no se encuentra. Oprima <ENTER>...",enter$ ELSE

IF CVS[icant$] >O THEN INPUT "Ese artículo todavía tiene existencias. Oprima <ENTER> ...",enter$

ELSE REM Desplegar registro para confirmar baja

PRINT "Artículo: ",iarticul$ PRINT "Costo: ",CVS[icosto$] PRINT "Precio: ",CVS[iprecio$] PRINT "Cantidad: ",CVS[icant$] PRINT

INPUT "Es éste el artículo (S/N)";sn$ IF sn$="S"THEN

REM Borrar lógicamente el registro

LSET iarticul$=SPACE$(25) PUT #1,r

PRINT INPUT "Baja realizada. Oprima <ENTER> ...",enter$ END IF END IF END IF CLOSE #1

RETURN

CONSULTAS: OPEN "R". 1, "FERRET.DAT", 37 FIELD #1, 25 AS iarticul$. 4 AS icosto$, 4 AS iprecio$. 4 AS icant$ CLS PRINT "CONSULTAS" PRINT

Page 442: Computación metodología, lógica computa

CAPÍTULO II. ESTRUCTURAS DE DATOS 427

REM Localizar el registro

GOSUB ENCUENTRA

PRINT IF r=OTHEN

INPUT "Ese artículo no se encuentra. Oprima <ENTER> ...",enter$ ELSE

REM Desplegar datos

PRINT "Artículo: ",iarticul$ PRINT "Costo: ",CVS(icosto$) PRINT "Precio: ",CVS(iprecio$) PRINT "Cantidad: ",CVS(icant$) PRINT

INPUT "Oprima <ENTER> ...",enter$ END IF CLOSE #1

RETURN

CAMBIOS: OPEN "R", 1, "FERRET.DAT", 37 FIELD #1, 25 AS iarticul$, 4 AS icostoS, 4 AS iprecio$, 4 AS icant$ CLS PRINT "CAMBIOS" PRINT

REM Localizar el registro

GOSUB ENCUENTRA

PRINT IF r=O THEN

INPUT "Ese artículo no se encuentra. Oprima <ENTER> ...",enter$ ELSE

REM Desplegar menú de campos

PRINT "O) NINGUNO" PRINT "1] Articulo" PRINT "2] Costo" PRINT "3) Precio" PRINT "4] Cantidad" PRINT

PEDIRC: INPUT "Número de campo que desea cambiar";c

Page 443: Computación metodología, lógica computa

428 PARTE III. PROGRAMACIÓN

PRINT IF c>0 THEN

REM Hacer cambio en variable de memoria intermedia

IF c=1 THEN INPUT "Articulo: ",articul$ LSET iarticul$ = articul$ ELSE

IF c=2 THEN INPUT "Costo: ",costo LSET icosto$ = MKS$(costo)

ELSE IF c = 3THEN INPUT "Precio: ",precio LSET iprecio$ = MKS$[precio] ELSE

IFc=4THEN INPUT "Cantidad: ",cant LSET icantS = MKS$(cant] ELSE

GOTO PEDIRC END IF END IF END IF END IF

REM Escribir cambio en el disco

PUT#1,r

PRINT INPUT "Cambio realizado. Oprima <ENTER> ...",enter$ END IF END IF CLOSE #1

RETURN

REPORTEG: OPEN "R". 1, "FERRET.DAT", 37 FIELD #1, 25 AS iarticul$, 4 AS icosto$, 4 AS iprecio$, 4 AS icant$ CLS PRINT “REPORTE GENERAL" PRINT n = L0F[1]/37

FOR i=1 TO n GET#1,i

Page 444: Computación metodología, lógica computa

CAPÍTULO II. ESTRUCTURAS DE DATOS 429

REM Desplegar sólo aquellos que no están dados de baja

IF iarticul$< >SPACE$(25) THEN PRINT "Artículo: ",iarticul$

PRINT "Costo: ",CVS(icosto$) PRINT "Precio: ",CVS(iprec¡o$) PRINT "Cantidad: ",CVS(icant$) PRINT

END IF NEXT i CLOSE #1 INPUT "Fin del archivo. Oprima <ENTER> ...",enter$ RETURN

COMPRAS: OPEN "R", 1, "FERRET.DAT", 37 FIELD #1, 25 AS iarticul$, 4 AS icosto$, 4 AS ¡precio$, 4 AS icant$ CLS PRINT "COMPRAS"

PRINT

REM Localizar el registro

GOSUB ENCUENTRA

PRINT IF r=OTHEN

INPUT "Ese artículo no se encuentra. Oprima <ENTER> ...",enter$ ELSE

INPUT "Cuantos artículos se compraron";cantcomp total = CVS[icant$] + cantcomp

REM Pasar nuevo total a memoria intermedia

LSET icant$ = MKS$[total]

REM Escribir actualización en disco

PUT#1,r PRINT

INPUT "Actualización efectuada. Oprima <ENTER> ...",enter$ END IF CLOSE #1

RETURN

VENTAS:

Page 445: Computación metodología, lógica computa

430 PARTE III. PROGRAMACIÓN

OPEN "R", 1, "FERRET.DAT", 37 FIELD #1, 25 AS iarticul$, 4 AS icosto$, 4 AS iprecio$, 4 AS icant$ CLS PRINT "VENTAS"

PRINT

REM Localizar el registro

GOSUB ENCUENTRA

PRINT IF r=O THEN

INPUT "Ese artículo no se encuentra. Oprima <ENTER> ,..",enter$ ELSE

INPUT "Cuantos artículos se vendieron";cantvend total = CVS(icant$) - cantvend

REM Pasar nuevo total a memoria intermedia

LSET icant$ = MKS$[total)

REM Escribir actualización en disco

PUT#1,r PRINT

INPUT "Actualización efectuada. Oprima <ENTER> ...",enter$ END IF CLOSE #1

RETURN

ENCUENTRA:

REM Pedir el nombre del artículo que se va a buscar en el archivo

INPUT "Teclea el nombre del artículo: ",articul$ articul$=articul$+SPACE$[25-LEN[articul$]]

n=L0F[1]/37

REM Regresar en r el número de registro o O si no existe

r=0 FOR i=1 TO n

GET#1,i IF articul$=iarticul$ THEN

r=i

Page 446: Computación metodología, lógica computa

CAPÍTULO II. ESTRUCTURAS DE DATOS 431

i=n END IF NEXT i RETURN

Ejercicio: Efectuar el paso de pruebas del programa

PROBLEMA 2

Se pretende llevar un control de un grupo de alumnos por computadora, teniendo las siguientes opciones:

1) Agregar alumnos nuevos 2) Dar de baja alumnos 3) Consultar los datos de algún alumno 4) Modificar los datos de algún alumno 5) Obtener un reporte de la información de todos los alumnos 6) Obtener un reporte de la información de los alumnos aprobados (con calificación mayor o igual

a 7)

Los datos que se quiere tener de todos y cada uno de los alumnos son: matrícula, nombre, teléfono, dirección y calificación.

Paso 1. Definición del problema: Dado en la redacción del problema. Paso 2. Planeación de la solución: La estructura de los registros y nombre de variables correspondientes de memoria principal e intermedia son:

Longitud

matrícula 7 nombre 30 teléfono 10 dirección 50 calificación 4

Nombre en Nombre enMcm. principal Mem. intermedia

mat$ imat$ nom$ inom$tel$ itel$dir$ idir$ calif icalif$

Longitud del registro: 101

Aunque también el campo matrícula puede ser usado como campo clave, emplearemos el campo nombre como campo clave.

El menú del programa quedará configurado con las siguientes opciones:

1) ALTAS

Campo

Page 447: Computación metodología, lógica computa

432 PARTE III. PROGRAMACIÓN

2) BAJAS 3) CONSULTAS Y CAMBIOS 4) REPORTE GENERAL 5) REPORTE DE ALUMNOS APROBADOS 6) SALIR

Las novedades de este programa con respecto al anterior son: 1) Las opciones de consultas y cambios se manejarán conjuntamente en una opción del menú 2) Aparece un reporte específico que es el de aquellos alumnos que han aprobado la materia

Las acciones generales a seguir para cada una de las opciones del menú son:

1) ALTAS 1) Abrir el archivo 2) Especificar la estructura asignando espacio para los campos en memoria intermedia 3) Buscar el primer número de registro que esté inactivo para hacer allí la alta y si no hay se

tiene que crear un nuevo registro al final del archivo 4) Pedir los datos de la entidad en variables de memoria principal 5) Pasar los datos de memoria principal a memoria intermedia 6) Escribir los datos de memoria intermedia a memoria secundaria en el número de registro

encontrado en el paso 3 7) Cerrar el archivo

2) BAJAS 1) Abrir el archivo 2) Especificar la estructura asignando espacio para los campos en memoria intermedia 3) Leer el registro 4) Escribir espacios en el campo clave de memoria intermedia 5) Escribir el registro 6) Cerrar el archivo

3) CONSULTAS Y CAMBIOS 1) Abrir el archivo 2) Especificar la estructura asignando espacio para los campos en memoria intermedia 3) Leer registro 4) Desplegar datos de memoria intermedia 5) SI se desea modificar datos ENTONCES Pedir el nuevo dato en variable de memoria principal Pasar el dato de la variable de memoria principal a la de memoria intermedia Escribir el registro 5) Cerrar el archivo

4) REPORTE GENERAL 1) Abrir el archivo 2) Especificar la estructura asignando espacio para los campos en memoria intermedia 3) Verificar el número de registros existentes

Page 448: Computación metodología, lógica computa

CAPÍTULO I I . ESTRUCTURAS DE DATOS 433

4) Í←1 5) SI i > número de registros existentes ENTONCES

IR al paso 6 DE OTRA FORMA

LEER REGISTRO i SI el registro está activo ENTONCES

Desplegar variables de memoria intermedia i← i + 1 IR al paso 5

6) Cerrar el archivo

5) REPORTE DE ALUMNOS APROBADOS

1) Abrir el archivo 2) Especificar la estructura asignando espacio para los campos en memoria intermedia 3) Verificar el número de registros existentes 4) i← 1 5) SI i > número de registros existentes ENTONCES

IR al paso 6 DE OTRA FORMA LEER REGISTRO i SI el registro está activo y la calificación es mayor o igual a 7 ENTONCES

Desplegar variables de memoria intermedia i ←i + 1 IR al paso 5

6) Cerrar el archivo

Paso 3. Algoritmo:

De ahora en adelante llamaremos:

matrícula (M. Principal) nombre (M. Principal) teléfono (M. Principal) dirección (M. Principal) calificación (M. Principal) matrícula (M. Intermedia) nombre (M. Intermedia) teléfono (M. Intermedia) dirección (M. Intermedia) calificación (M. Intermedia) opción seleccionada variable que toma un valor de 'S' o 'N' para confirmar la baja de un registro número de campo que se desea cambiar número de registros del archivo contador de registros del archivo número de registro encontrado

mat$ a nom$ a tel$ a dir$ a calif a imat$ a inom$ a itel$ a idir$ a ¡calif$ a op a sn$ a c a n a i a r a

Page 449: Computación metodología, lógica computa

434 PARTE III. PROGRAMACIÓN

1. DESPLEGAR "MENÚ:" 2. DESPLEGAR "1) Altas" 3. DESPLEGAR "2) Bajas" 4. DESPLEGAR "3) Consultas y cambios" 5. DESPLEGAR "4) Reporte general" 6. DESPLEGAR "5) Reporte de alumnos aprobados" 7. DESPLEGAR "6) Salir" 8. PEDIR op 9. SI op=l ENTONCES

ALTAS DE OTRA FORMA SI op = 2 ENTONCES

BAJAS DE OTRA FORMA SI op = 3 ENTONCES

CONSCAMB DE OTRA FORMA SI op=4 ENTONCES

REPORTEG DE OTRA FORMA SI op=5 ENTONCES REPORTEA

10. SI op = 6 ENTONCES IR al paso 11 DE OTRA FORMA IR al paso 1

11. FIN

ALTAS:

1 ABRIR ARCHIVO "ALUMNOS"2 n←LOF(l)/101 3 r ←n+l 4 i← 1 5 SI i > n ENTONCES IR al paso 6 DE OTRA FORMA LEER REGISTRO i SI inom$ = SPACE$(30) ENTONCES r ← i i ← n ¡← i + 1 IR al paso 5 6 PEDIR mat$ 7 PEDIR nom$ 8 PEDIR tel$

Page 450: Computación metodología, lógica computa

CAPÍTULO I I . ESTRUCTURAS DE DATOS 435

9. PEDIR dir$ 10. PEDIR calif 11. MOVER IZQUIERDA imat$ ← mat$ 12. MOVER IZQUIERDA inom$ ← nom$ 13. MOVER IZQUIERDA itel$ ←tel$ 14. MOVER IZQUIERDA idir$ ←dir$ 15. MOVER IZQUIERDA icalif$ ←MKS$(calif) 16. ESCRIBIR REGISTRO r 17. CERRAR ARCHIVO "ALUMNOS" 18. FINP

BAJAS:

1. ABRIR ARCHIVO "ALUMNOS" 2. ENCUENTRA 3. SI r=0 ENTONCES

DESPLEGAR "Ese alumno no se encuentra" DE OTRA FORMA

DESPLEGAR imat$, inom$, itel$, idir$, CVS(icalif$) PEDIR sn$ SI sn$="S" ENTONCES

MOVER IZQUIERDA inom$ ← SPACE$(30) ESCRIBIR REGISTRO r

4. CERRAR ARCHIVO "ALUMNOS" 5. FINP

CONSCAMB:

1. ABRIR ARCHIVO "ALUMNOS" 2. ENCUENTRA 3. SI r=0 ENTONCES

DESPLEGAR "Ese alumno no se encuentra" DE OTRA FORMA DESPLEGAR "0) SALIR" DESPLEGAR "1) Matrícula:", imat$ DESPLEGAR "2) Nombre:", inom$ DESPLEGAR "3) Teléfono:", itel$ DESPLEGAR "4) Dirección:", idir$ DESPLEGAR "5) Calificación:", CVS(icalif$) PEDIR c

SI c > 0 ENTONCES SI c=l ENTONCES

PEDIR mat$ MOVER IZQUIERDA imat$ ← mat$

DE OTRA FORMA SI c=2 ENTONCES

Page 451: Computación metodología, lógica computa

436 PARTE III. PROGRAMACIÓN

PEDIR nom$ MOVER IZQUIERDA inom$ ← nom$ DE OTRA FORMA SI c=3 ENTONCES PEDIR tel$

MOVER IZQUIERDA itel$ ← tel$ DE OTRA FORMA SI c=4 ENTONCES PEDIR dir$

MOVER IZQUIERDA idir$ ← dir$ DE OTRA FORMA PEDIR calif

MOVER IZQUIERDA icalf$ ← MKS$(calif) ESCRIBIR REGISTRO r

4. CERRAR ARCHIVO "ALUMNOS" 5. FINP

REPORTEG:

1. ABRIR ARCHIVO ' 'ALUMNOS'' 2. n←LOF(l)/101 3. i← 1 4. SI i > n ENTONCES

IR al paso 5 DE OTRA FORMA LEER REGISTRO i SI inom$ O SPACE$(30) ENTONCES

DESPLEGAR imat$, inom$, itel$, idir$, CVS(icalif$) i←i + 1 IR al paso 4

5. CIERRA ARCHIVO "ALUMNOS" 6. FINP

REPORTEA:

1. ABRIR ARCHIVO "ALUMNOS" 2. n ← LOF(1)/101 3. i← 1 4. SI i > n ENTONCES

IR al paso 5 DE OTRA FORMA LEER REGISTRO i SI c inom$ <> SPACE$(30) AND CVS(icalif$)> = 7 ENTONCES

DESPLEGAR imat$, inom$, itel$, idir$, CVS(icalif$) i←i + 1 IR al paso 4

Page 452: Computación metodología, lógica computa

CAPÍTULO II. ESTRUCTURAS DE DATOS 437

5. CIERRA ARCHIVO "ALUMNOS" 6. FINP

ENCUENTRA:

1. PEDIR nom$ 2. nom$ ← nom$ + SPACE$(30-LEN(nom$)) 3. n←LOF(l)/101 4. r←0 5. i← 1 6. SI i > n ENTONCES

IR al paso 7 DE OTRA FORMA LEER REGISTRO i SI nom$ = inom$ ENTONCES r ← i i ← n i ←i + 1 IR al paso 6

7. FINP

Paso 4. Diagrama de flujo (véanse Figs. 11.23 a 11.29):

Paso 5, Codificación y edición del programa:

REM ALUMNOS.BAS REM Programa de control de alumnos

MENÚ: CLS LOCATE 1,31: PRINT "CONTROL DE ALUMNOS" LOCATE 5,34: PRINT "M E N U" LOCATE 6,34: PRINT " - - - -“ LOCATE 9,31: PRINT "1) Altas" LOCATE 11,31: PRINT "2) Bajas" LOCATE 13,31: PRINT "3) Consultas y cambios" LOCATE 15,31: PRINT "4) Reporte general" LOCATE 17,31: PRINT "5) Reporte de alumnos aprobados" LOCATE 19,31: PRINT "6) Salir" LOCATE 22,34: INPUT "OPCIÓN -=> ",op IF op = 1 THEN

GOSUB ALTAS ELSE

IF op = 2 THEN GOSUB BAJAS

ELSE

Page 453: Computación metodología, lógica computa

438 PARTE 111. PROGRAMACIÓN

Figura 11.23

Page 454: Computación metodología, lógica computa

Figura 11.24

CAPÍTULO II. ESTRUCTURAS DE DATOS 439

Page 455: Computación metodología, lógica computa

440 PARTE III. PROGRAMACIÓN

Figura 11.25

ABRIR ARCHIVO "ALUMNOS

"Ese alumno no se encuentra" imas$, inom$, itel,

idir$, CVS(icalif$)

CERRAR ARCHIVO "ALUMNOS

Page 456: Computación metodología, lógica computa

Figura 11.26

CAPÍTULO I I . ESTRUCTURAS DE DATOS 441

Page 457: Computación metodología, lógica computa

442 PARTE III. PROGRAMACIÓN

Figura 11.27

Page 458: Computación metodología, lógica computa

Figura 11.28

CAPÍTULO II. ESTRUCTURAS DE DATOS 443

Page 459: Computación metodología, lógica computa

444 PARTE III. PROGRAMACIÓN

Figura 11.29

Page 460: Computación metodología, lógica computa

CAPÍTULO 11. ESTRUCTURAS DE DATOS 445

IF op = 3 THEN GOSUB CONSCAMB

ELSE IF op = 4 THEN

GOSUB REPORTEG ELSE

IF op = 5 THEN GOSUB REPORTEA END IF END IF END IF END IF END IF IF op = 6 THEN GOTO FIN

ELSE GOTO MENU

END IF FIN: END

ALTAS: OPEN "R", 1, "ALUMNOS.DAT", 101 FIELD #1, 7 AS imat$, 30 AS inom$, 10 AS itel$, 50 AS idir$, 4 AS icalif$

REM Localizar el registro en el que se va a dar la alta REM que es el primero dado de baja o el siguiente al último

n = L0F[1]/1O1 r=n + 1 F0R i=1 TO n GET#1,i IF inom$=SPACE$(3O) THEN r=i i=n END IF NEXT i

CLS PRINT "ALTAS" PRINT PRINT "Favor de teclear los siguientes datos:" PRINT

REM Pedir los datos en variables de memoria principal INPUT

"Matrícula: ",mat$

Page 461: Computación metodología, lógica computa

446 PARTE III. PROGRAMACIÓN

INPUT "Nombre: ",nom$ INPUT 'Teléfono: ",tel$ INPLJT "Dirección: ",dir$ INPUT "Calificación: ",calif

REM Pasar los datos a memoria intermedia

LSET imat$ = mat$ LSET inom$ = nom$ LSET itel$ = tel$ LSET idir$ = dir$ LSET icalifS = MKS$(calif)

REM Escribir los datos a disco

PUT#1,r

CLOSE #1 PRINT INPUT "Alta realizada. Oprima <ENTER> ,..",enter$

RETURN

BAJAS: OPEN "R", 1, "ALUMNOS.DAT", 101 FIELD #1, 7 AS imat$, 30 AS inom$, 10 AS itel$, 50 AS idir$, 4 AS icalifS CLS PRINT "BAJAS" PRINT

REM Localizar el registro

GOSUB ENCUENTRA

PRINT IF r=O THEN

INPUT "Ese alumno no se encuentra. Oprima <ENTER> ...", enter$ ELSE

REM Desplegar registro para confirmar baja PRINT "Matrícula: ",imat$ PRINT "Nombre: ",inom$ PRINT 'Teléfono: ",itel$ PRINT "Dirección: ",idir$ PRINT "Calificación: ",CVS(icalif$) PRINT

INPUT "Es éste el alumno (S/N)";sn$

Page 462: Computación metodología, lógica computa

CAPÍTULO II. ESTRUCTURAS DE DATOS 447

IFsn$="S"THEN REM Borrar lógicamente el registro

LSET inom$=SPACE$[3O] PUT#1,r

PRINT INPUT "Baja realizada. Oprima <ENTER>...",enter$ END IF END IF CLOSE #1

RETURN

CONSCAMB: OPEN "R", 1, "ALUMNOS.DAT", 101 FIELD #1, 7 AS imat$, 30 AS inom$. 10 AS itel$, 50 AS idir$, 4 AS icalif$ CLS PRINT "CONSULTAS Y CAMBIOS"

PRINT

REM Localizar el registro

GOSUB ENCUENTRA

PRINT IF r=0 THEN

INPUT "Ese alumno no se encuentra. Oprima <ENTER>...", enter$ ELSE

REM Desplegar menú de campos

PRINT "O] SALIR" PRINT "1] Matrícula: ",imat$ PRINT "2]Nombre: ",inom$ PRINT "3] Teléfono: ",itel$ PRINT "4] Dirección: ",idir$ PRINT "5]Calificación: ",CVS(icalif$) PRINT

PEDIRC: INPUT "Número de campo que desea cambiar";c PRINT IF c>0 THEN

REM Hacer cambio en variable de memoria intermedia

IF c=1 THEN INPUT "Matrícula: ",mat$

Page 463: Computación metodología, lógica computa

448 PARTE III. PROGRAMACIÓN

LSET imat$ = mat$ ELSE

IF c=2 THEN INPUT "Nombre: ",nom$ LSET inom$ = nom$ ELSE

IFc=3THEN INPUT 'Teléfono: ",tel$ LSET itel$ = tel$ ELSE

IF c=4 THEN INPUT "Dirección: ",dir$ LSET idir$ = dir$ ELSE

IF c=5 THEN INPUT "Calificación: ",calif LSET icalif$ = MKS$(calif) ELSE

GOTO PEDIRC END IF END IF END IF END IF END IF

REM Escribir cambio en el disco

PUT#1,r

PRINT INPUT "Cambio realizado. Oprima <ENTER>...",enter$ END IF END IF CLOSE #1

RETURN

REPORTEG: OPEN "R", 1, "ALUMNOS.DAT", 101 FIELD #1, 7 AS imat$, 30 AS inom$, 10 AS itel$, 50 AS idir$, 4 AS icalif$ CLS PRINT "REPORTE GENERAL" PRINT n = L0F[1]/101 F0R i=1 TO n GET#1,i

REM Desplegar sólo aquellos que no estén dados de baja

Page 464: Computación metodología, lógica computa

CAPÍTULO 11. ESTRUCTURAS DE DATOS 449

IF inom$< >SPACE$[30] THEN PRINT "Matrícula: ",imat$ PRINT "Nombre: ",inom$ PRINT 'Teléfono: ",itel$ PRINT "Dirección: ",idir$ PRINT "Calificación: ",CVS(icalif$] PRINT

ENDIF NEXT i CLOSE #1 INPUT "Fin del archivo. Oprima <ENTER>...",enter$

RETURN

REPORTEA: OPEN "R", 1, "ALUMNOS.DAT", 101 FIELD #1, 7 AS imat$, 30 AS inom$, 10 AS itel$, 50 AS idir$, 4 AS icalif$ CLS PRINT "REPORTE DE ALUMNOS APROBADOS" PRINT n = L0F[1]/101 FOR i = 1 TO n GET#1,i

REM Desplegar aquellos que no estén dados de baja REM y que su calificación es aprobatoria

IF inom$<>SPACE$[3O] AND CVS(icalif$)>=7 THEN PRINT "Matrícula: ",imat$

PRINT "Nombre: ",¡nom$ PRINT 'Teléfono: ",itel$ PRINT "Dirección: ",idir$ PRINT "Calificación: ",CVS(icalif$)

PRINT END IF NEXT i CLOSE # i INPUT "Fin del archivo. Oprima <ENTER>...",enter$

RETURN

ENCUENTRA:

REM Pedir el nombre que se va a buscar en el archivo

INPUT "Teclea el nombre: ",nom$ nom$=nom$+SPACE$(3O-LEN(nom$]]

n=L0F[1]/1O1

Page 465: Computación metodología, lógica computa

450 PARTE III. PROGRAMACIÓN

REM Regresar en r el número de registro o O si no existe

r=O FOR i=1 TO n

GET#1,i IFnom$=inom$ THEN r=i i=n END IF NEXT i RETURN

Ejercicio: Efectuar el paso de pruebas del programa

Problemas propuestos

1. En un centro de video se requiere llevar un control de las películas que se rentan. Por cada película se necesita almacenar los siguientes datos:

Clave de la película Título Clasificación Precio de renta Número de copias

El programa debe manejar las siguientes opciones: 1) Introducir los datos de una película. 2) Reporte de todos los títulos de películas con determinada clasificación. 3) Reporte de todos los títulos de las películas cuyo precio de renta esté entre 3000 y 5000. 4) Dar de baja los datos de una película, dada su clave.

2. En una biblioteca se necesita un programa para almacenamiento y consulta de información de libros. La información que se maneja por libro es:

Folio Título Autor Materia Estatus Lugar

El estatus puede ser:

R Reserva P Prestado D Disponible

Page 466: Computación metodología, lógica computa

CAPÍTULO II. ESTRUCTURAS DE DATOS 451

El programa debe manejar las siguientes opciones:

1) Introducir los datos de un nuevo libro. 2) Generar un reporte de todos los libros que se encuentran en reserva. 3) Generar un reporte de todos los libros que se encuentran en determinado lugar y cuyo folio está

entre determinado rango. 4) Dar de baja los datos de un libro dado su folio.

3. El departamento de material de apoyo académico necesita un programa que le ayude a manejar la información referente al control de los préstamos de equipo que se hace a profesores de una escuela. Los datos que comúnmente manejan son:

Nombre del aparato Nombre del profesor Fecha del préstamo Fecha de regreso del equipo

El programa debe manejar las siguientes opciones: 1) Introducir los datos de un nuevo préstamo de equipo. 2) Borrar los datos de un préstamo cuando éste haya sido devuelto. 3) Generar un reporte de todos los préstamos existentes. 4) Generar un reporte de todos los profesores a los que se les prestó determinado tipo de aparato.

4. En el Centro de Cómputo de cierta escuela se desea llevar un control por computadora de los discos de programas que se prestan a los alumnos.

Para esto, el encargado pide que se haga un programa con un archivo que contenga los siguientes campos:

Número del paquete (consecutivo) Nombre del programa o paquete Área a la que pertenece (sistema operativo, hoja de cálculo, etc.) Tipo de computadora en que corre Total de discos que lo componen

Las claves para las áreas y para el tipo de computadora que se pueden usar son:

Clave Área

SO Sistema operativo PP Procesador de palabras HEC Hoja electrónica de cálculo BD Base de datos

Clave Tipo de computadora

MAC Macintosh PS IBM PS/2

Page 467: Computación metodología, lógica computa

452 PARTE III. PROGRAMACIÓN

Además te pide que el programa muestre un menú con las opciones de:

1) Dar de alta un nuevo paquete. 2) Obtener un reporte general de todo el archivo. 3) Obtener reporte:

a) por área b) por tipo de computadora

4) Dar de baja un paquete por su número.

5. El administrador de una empresa pide que se realice un programa que calcule el salario real de todos y cada uno de sus empleados.

Para esto se necesita un archivo que contenga los siguientes datos:

Clave del empleado (secuencial) Nombre del empleado Dirección y teléfono Salario nominal (máximo $15 000) Rango Antigüedad

Las claves del rango que se pueden utilizar son:

Clave Rango

A Gerente B Director C Supervisor D Otro

El programa debe realizar un reporte que muestre los siguientes datos:

Nombre del empleado Rango Salario real

Donde el salario real se calcula a partir del salario nominal considerando lo siguiente: a) se descuentan los impuestos y la cuota del IMSS según los porcentajes de la siguiente tabla:

Clave de rango Impuestos IMA 15% 10%B 10% 8% C 5% 6%D 3% 2%

b) se aumenta un 15% a todos por concepto de la caja de ahorros.

Además el administrador pide un reporte de todos los empleados que ganan entre 0 y 3499 y que tienen 3 años o menos de antigüedad, que contenga los siguientes datos:

Page 468: Computación metodología, lógica computa

CAPÍTULO II. ESTRUCTURAS DE DATOS 453

Clave Nombre del empleado Antigüedad Salario

Deberás incluir un menú con las siguientes opciones: 1) Dar de alta empleados. 2) Obtener reporte de salarios reales. 3) Obtener reporte de los que ganan menos de 3500 y tienen 3 o menos años de antigüedad. 4) Dar de baja un empleado dando su nombre.

6. El gerente de mercadotecnia de la empresa "Escaleras y Aluminios S.A. de C.V." requiere un programa que le permita llevar un control de la venta de escaleras sencillas del modelo ES-001, y del modelo ES-002, que son escaleras de tijera. Para lo anterior se propone que la estructura del archivo tenga los siguientes datos:

Fecha Nombre del vendedor Número de escaleras ES-001 vendidas Número de escaleras ES-002 vendidas Precio de la ES-001 Precio de la ES-002

Las opciones que necesita el gerente deben ser las siguientes: 1) Introducir los datos antes descritos. 2) Reporte de las ventas y el total de las ventas de un vendedor en una fecha determinada. 3) Dar de baja todos los registros de una fecha específica. 4) Reporte de las ventas y el total de ventas en un mes determinado.

7. En una empresa de transportación de carga se requiere contar con un programa que permita tener un control de los envíos que se realizan. Esta empresa cuenta con 50 camiones, los cuales se encargan de entregar las mercancías en diferentes lugares de la república. El gerente necesita almacenar:

Número del camión (secuencial = número de registro) Nombre del chofer Fecha de salida Fecha de regreso Ciudad a donde se va a entregar la mercancía Cantidad que se le cobra al cliente por el servicio Cantidad de viáticos que se requieren para realizar el viaje

Los datos anteriores le permitirán tomar decisiones con respecto a los servicios que se solicitan, así como la disponibilidad de sus unidades. El gerente requiere lo siguiente:

1) Introducir los datos mencionados cada vez que un camión salga. 2) Hacer consultas por número de camión. 3) Reporte de los camiones que han viajado a una ciudad en específico y el total de dinero neto

obtenido por los viajes a esa ciudad.

Page 469: Computación metodología, lógica computa

454 PARTE III. PROGRAMACIÓN

4) Dar de baja los datos en el momento en que el camión regrese por medio de la fecha de regreso.

8. Una fábrica produce diferentes tipos de computadoras; lo que implica que debe manejar mucha información de su producción como la siguiente:

Número de serie Modelo de máquina Tipo de monitor Procesador Costo unitario Precio unitario Línea en la que se produce

Para manejar esta información se requiere realizar un programa que maneje las siguientes opciones:

1) Introducir los datos. 2) Reporte de todos los modelos de máquinas con sus respectivos precios unitarios. 3) Consulta de alguna máquina por medio del número de serie. 4) Dar de baja los datos correspondientes a un número de serie de máquina.

9. En una relojería se venden básicamente tres tipos de joyas: relojes, anillos y aretes. Éstos se manejan por un número consecutivo que el dueño de la relojería les asigna según vayan llegando las joyas.

El dueño te ha contratado para que elabores un sistema que le permita hacer lo siguiente: 1) Emitir un reporte de cuántos relojes, anillos o pares de aretes tiene en existencia. 2) Cuánto dinero tiene invertido en joyas, por cada categoría (relojes, anillos y aretes). 3) Cuando llegue alguna joya nueva se pueda registrar y se le asigne automáticamente el número

que le corresponde. 4) En caso de vender alguna de las joyas, se dé de baja por la clave de la misma.

El archivo debe manejar los siguientes datos:

Clave de la joya (secuencial) Tipo o categoría Descripción de la joya Valor monetario

10. En un hospital hay tres tipos de internado: sala general, habitación normal y habitación de lujo. El director del hospital te pide elabores un programa que le permita realizar lo siguiente:

1) Registro de nuevos pacientes. 2) Emitir un reporte de los pacientes que están en habitación de lujo. 3) Consulta por el número de cama de determinado paciente. 4) Dar de baja los datos de un paciente cuando salga del hospital por medio del número de cama.

Page 470: Computación metodología, lógica computa

CAPÍTULO II. ESTRUCTURAS DE DATOS 455

Para lograr lo anterior se requiere que se tengan almacenados los siguientes datos:

Clave del paciente Nombre Número de cama Tipo de habitación Costo por día

11. Un ortodoncista, para manejar las actividades en su consultorio, maneja la siguiente información:

Nombre del paciente Fecha de la cita Hora de la cita

El doctor requiere controlar sus citas por medio de una computadora que le permita:

1) Registrar nuevas citas 2) Dado el nombre de un paciente poder ver los datos correspondientes a su cita. 3) Tener un reporte de todas las personas que debe atender en una fecha determinada con su horario

correspondiente. 4) Dar de baja los datos de los pacientes en una fecha determinada.

12. Se requiere llevar un control de los discos y cassettes que se tienen en una casa disquera. La información que se requiere tener de cada disco o cassette es:

Nombre del intérprete Nombre del disco Tipo:

1) Compact 2)LP 3) Cassette

El programa debe ser capaz de realizar lo siguiente:

1) Introducir nuevos datos. 2) Reportar la información de los discos o cassettes de determinado intérprete. 3) Reportar la información de las existencias por tipo de disco. 4) Eliminar los datos dando el nombre del disco y tipo de disco.

13. A menudo las amas de casa llegan al supermercado a comprar su despensa y no saben lo que les hace falta; para colmo, días antes lo recordaron y no es sino hasta al llegar a su casa después de la compra, que se dan de topes contra la pared por no haberlo anotado.

Una ama de casa moderna a la que no le gustan los "chipotes", ha decidido encargarle a usted un programa que:

1) Registre los productos que le hacen falta (con su cantidad correspondiente) conforme se le ocurran.

2) Emita un reporte de estos productos pendientes, incluyendo su número de registro en el archivo.

Page 471: Computación metodología, lógica computa

456 PARTE III . PROGRAMACIÓN

3) Elimine los productos adquiridos para que ya no salgan en la lista de pendientes, por medio del número de registro.

4) Despliegue el total de dinero aproximado que requerirá para comprar todos los productos pendientes.

Se sugiere que el archivo tenga los siguientes campos:

Nombre del artículo Cantidad Precio aproximado

14. Una persona sumamente olvidadiza desea tener almacenadas en la computadora las fechas de nacimiento de sus amigos y familiares, para felicitarlos oportunamente. Lo que desea es un programa con las siguientes opciones:

1) Una opción en donde al teclear la fecha, despliegue la(s) persona(s) que cumple(n) años en ese día.

2) Otra opción en donde pueda agregar nombres nuevos con su fecha de cumpleaños y teléfono, para saber a quién llamar y felicitarlos.

3) Otra opción en donde pueda eliminar a los conocidos con los que ya no trate y a los fallecidos. 4) Una opción en donde pueda consultar individualmente los datos de una persona, por su nombre.

Los datos que debe manejar el archivo son:

Nombre de la persona Fecha de nacimiento Teléfono

15. El centro de cómputo de una escuela requiere de un programa que le permita tener un control de las personas que ocupan las computadoras. Para esto requiere almacenar la información de los alumnos que llegan o ocupar máquinas. La información es:

Matrícula Nombre del alumno Carrera Semestre Tipo de computadora Número de computadora Fecha Hora

El programa debe contener lo siguiente: 1) Registrar al alumno al momento en que entre. 2) Proporcionar los datos de todos los alumnos que ocuparon una computadora en fecha y compu-

tadora determinadas. 3) Proporcionar un reporte de todos los alumnos que trabajaron en una fecha específica. 4) Dar de baja a algún alumno que se arrepintió y decidió no hacer uso de la computadora.

Page 472: Computación metodología, lógica computa

CAPÍTULO I I . ESTRUCTURAS DE DATOS 457

RESUMEN

Estructura de datos: se le llama así a la organización que reciben los datos para poder tratar a un conjunto de ellos como una unidad. Como ejemplo tenemos a los arreglos, matrices y archivos de datos, de los cuales los dos primeros están relacionados con el tratamiento de datos en memoria principal, mientras los archivos de datos están relacionados con la memoria secundaria.

Arreglo: se le llama así a la estructura de datos que organiza sus datos de manera lineal. Los arreglos emplean un índice entre paréntesis para referenciar a los elementos de que consta.

Matriz: es aquella estructura de datos que organiza sus datos en forma de tabla, para lo cual emplea dos índices: uno para indicar el renglón y otro la columna, para referenciar sus datos. A las matrices se les llama también tablas o arreglos de dos dimensiones.

Instrucción DIM: es usada para declarar arreglos y matrices. Instrucción OPTION BASE: define el rango inferior de los índices para los arreglos y matrices. Archivo de datos: estructura de datos que sirve para almacenar información en memoria secun-

daria, organizada en registros y campos. Registro: información referente a una entidad, formado por un conjunto de campos. Campo: característica de una entidad.

Tipos de archivos de datos

1) Secuenciales: son archivos que para accesar un registro en particular se deben recorrer todos los anteriores y sus registros pueden ser de longitud variable. 2) Aleatorios o directos: permiten tener acceso a cualquier registro sin tener que recorrer los que se encuentren almacenados antes que él. En este tipo de archivos cada registro tiene un número que lo identifica para así poder localizar cualquier registro en cualquier momento con sólo referenciar su número. Todos sus registros tienen la misma longitud.

Archivos de datos aleatorios

Memoria intermedia o Buffer: parte de la memoria principal que emplea Quick Basic para ser intermediaria entre la memoria principal y la memoria secundaria durante el manejo de los archivos de datos. Campo clave: campo cuyo contenido en cada registro lo diferencia de los demás.

Operaciones con los archivos aleatorios

1) Altas: se refiere a la inclusión de los datos de un nuevo registro en el archivo de datos. 2) Bajas: se refiere a la exclusión de un registro como parte activa del archivo de datos. 3) Consultas: se refiere al acceso y despliegue de los datos de un registro activo por medio de su

campo clave. 4) Cambios: se refiere al cambio en algún dato de los campos de un registro activo. 5) Reporte general: es el despliegue de los campos de todos los registros activos de un archivo. 6) Reportes específicos: es el despliegue de los campos de todos los registros que cumplan con una

condición específica y estén activos en un archivo.

Page 473: Computación metodología, lógica computa

458 PARTE III . PROGRAMACIÓN

Instrucciones y funciones para el manejo de archivos de datos aleatorios

Instrucción OPEN: permite abrir un archivo de datos, ya sea para escribir o leer datos en él. Instrucción FIELD #: asigna espacio en la memoria intermedia para los campos que componen

los registros. Instrucción LSET: mueve un dato de memoria principal a memoria intermedia acomodando el

dato que se mueve justificado a la izquierda. Instrucción RSET: mueve un dato de memoria principal a memoria intermedia acomodando el

dato que se mueve justificado a la derecha. Instrucción PUT #: graba en memoria secundaria un registro con el contenido de la memoria

intermedia. Instrucción GET #: pasa el registro especificado de memoria secundaria o memoria intermedia. Instrucción CLOSE #: cierra un archivo de datos. Función LOF: regresa el número de caracteres que tiene un archivo. Funciones MKS$, MKD$, MKI$, MKL$: sirven para convertir datos de tipo numérico a

alfanumérico, ya sean reales de simple precisión, reales de doble precisión, enteros o enteros largos. Funciones CVS, CVD, CVI, CVL: se usan para convertir datos alfanuméricos en numéricos, ya

sean reales de simple precisión, reales de doble precisión, enteros o enteros largos.

Instrucciones para dar presentación a un programa

Instrucción CLS: limpia la pantalla y sitúa el cursor en la esquina superior izquierda. Instrucción LOCATE: sitúa el cursor en cualquier parte de la pantalla que se desee.

Page 474: Computación metodología, lógica computa

ÍNDICE ANALÍTICO

A acumulador, 128, 205 algoritmo, 11, 13, 17-19 archivo, 217, 221, 393 de datos, 392, 394 secuencial, 395, 457 aleatorio, 395, 457 operaciones, 398, 457 alta, 398, 457 baja, 398, 457 cambio, 398, 457 consulta, 398, 457 reporte específico, 398, 457 reporte general, 398, 457 arreglo, 368, 457

B bandera, 175, 205 BASIC, 17, 24, 210, 215 bloques, 15

terminales, 15 de entrada/salida, 15 de entrada, 15, 16 de salida, 16 de proceso, 16 de decisión, 16 condicionales, 16, 17, 54, 55 de conexión, 16, 17 anidados, 78

buffer, 395, 457

C campo, 394, 457 ciclo, 98, 99, 205

con número determinado de iteraciones, 99,101,275

con número indeterminado de iteraciones, 102, 262

cinta, 7 codificación, 11, 17-19 componentes físicos, 4, 8 componentes lógicos, 4, 8 computadora, 4, 5, 6, 8, 10, 11, 13, 14, 19, 24 concatenación, 325 condición, 14, 17, 53, 54 condicional, 55 constante, 25, 26, 32, 212, 215 contador, 100, 128, 205 contenido de la variable, 25, 211 CPV, 6, 8 crear un programa, 217, 221 cuerpo del ciclo, 98, 99, 205

D datos 4, 6, 18, 24, 32 definición del problema, 11, 12, 19 depuración, 11, 18, 19 desplegar datos, 13 diagrama de flujo, 11, 15, 17, 19, 55 disco duro, 7, 8 disco flexible, 7, 8 disco óptico, 7 diskette, 7 dispositivos

de almacenamiento permanente, 5, 6, 8 de entrada, 5, 6, 8 de entrada/salida, 5, 6, 8 de procesamiento, 5, 8 de salida, 5, 6, 8 periféricos, 6

documentación, 11, 18, 19

E edición, 11, 17, 19 editor de textos, 17 ejecutar operaciones, 13, 14

Page 475: Computación metodología, lógica computa

460 ÍNDICE ANALÍTICO

entrada, 12, 15, 225 estructura cíclica, 98, 99, 205 estructura de datos, 368, 457 evaluar condiciones, 13, 14 expresión, 26, 27, 32, 212, 215

alfanumérica, 14 aritmética, 26-28 elementos de, 26, 212 lógica, 26, 28

numérica, 14 relacional, 26

F fórmula, 3, 8 función, 312, 345, 349, 365 función predefinida, 314, 345 numéricas, 313, 345

ABS, 315, 345 ARCTAN, 314, 345 COS, 313, 345 FIX, 315, 345 INT, 316, 345 SIN, 313, 345 SQR, 315, 345 TAN, 314, 345

alfanuméricas, 323, 345 LEFT$, 323, 345

LEN, 324, 345 MID$, 324, 345 RIGHT$, 323, 345 SPACE$, 325, 345

función definida por el usuario, 339, 345 de una línea, 340 multilíneas, 340 funciones

CLS, 407, 458 CVD, 405, 458 CVI, 405, 458 CVL, 405, 458 CVS, 405, 458

G guardar un programa, 219, 221

H hardware, 4, 5, 7, 8

I identificador, 211 impresora, 6, 7, 8, 13 imprimir un programa, 220, 221 información, 4, 5, 6, 8, 11, 12 instrucción, 4, 17

cali, 350 chain, 350 CLOSE#, 404, 458 de interacción usuario-programa, 223, 236

de control de ejecución, 238 condicional, 238, 310 incondicional, 261, 310 DIM, 369, 457 END, 229 FIELD#, 401, 458 FOR...NEXT, 275-282, 310 GET#, 403, 458 GOSUB...RETURN, 349 GOTO, 261,310 IF...ELSE...ENDIF, 239, 240, 310 INPUT 225, 226, 236 LET 223, 224, 236 LOCATE, 407, 458 LOF función, 404, 458 LSET, 401, 458 MKD$ función, 405, 458 MKI$ función, 405, 458 MKL$ función, 405, 458 MK$ función, 405, 458 OPEN, 400, 458 OPTION BASE, 370, 457 PRINT, 226, 227, 236 PUT#, 403, 458 REM, 227, 228, 236 RSET, 402, 458 SUB...ENDSUB, 350

L lápiz óptico, 5, 8 lenguaje, 7, 8, 11, 17 bajo nivel, 7 alto nivel, 7

M mantenimiento, 11, 18, 19

Page 476: Computación metodología, lógica computa

ÍNDICE ANALÍTICO 461

matriz, 381,457 memoria intermedia, 395, 457 memoria principal, 6, 8, 25 memoria secundaria, 6, 8 metodología, 11, 18, 24 modularización, 349, 365 módulo, 347, 365 monitor, 6 mouse, 5, 8

N nombre de la variable, 25, 211 números, 13, 14

O operación, 15 operaciones aritméticas, 6, 14, 24, 27 lógicas, 6 operador, 26, 28, 32

aritmético, 26, 27, 32, 213 asociativo, 26, 27, 32, 213 lógico, 26, 28, 32, 213 relacional, 26, 28, 32, 213

P palabras, 13, 14 palabras reservadas, 214, 215 pantalla, 6, 8, 13 problemas

repetitivos, 34, 98, 205 simples, 34, 103 compuestos, 34, 176, 205 múltiples, 34 secuenciales, 34, 205 selectivos, 34, 205

simples, 34, 53, 54, 205 compuestos, 34, 53, 72, 205

procedimiento, 350, 365 procesamiento de información, 4,5,8,10,19,24,

26,32 proceso, 5, 98, 205 programa, 10, 13, 17, 18, 351, 365 programación estructurada, 312 programador, 10, 11, 13, 18, 19

Q Quick Basic, 210, 217

R ratón, 5, 8 recuperar un programa, 219, 221 registro, 394, 457

S salida, 12, 15, 226 sintaxis, 17 sistema computacional, 4, 8 sistema operativo, 7, 8 software, 4, 7, 8

de aplicación, 7, 8 del sistema, 7, 8

sort burbuja, 375 subprograma, 350, 365 subrutina, 349, 365 sujeto de acción, 10, 11, 19

T teclado, 5, 8

V variable, 13, 14, 25, 26, 32, 212, 215

Z zonas de memoria, 13, 25, 26, 32, 211, 215

Page 477: Computación metodología, lógica computa
Page 478: Computación metodología, lógica computa
Page 479: Computación metodología, lógica computa
Page 480: Computación metodología, lógica computa