Ejercicio final de señaleros resuelto con pseudocódigo. Organización previa de variables. Diagramas de flujo. (CU00171A)

Documentos relacionados
Ejercicio resuelto: variante para ordenar una serie de números. Pseudocódigo y diagrama de flujo. (CU00262A)

Ejercicios ejemplos resueltos con Desde-Siguiente (For-next) y arrays en pseudocódigo y diagramas de flujo. (CU00154A)

Ejercicios ejemplo: verificación de algoritmos del valor suma de una sucesión matemática. (CU00238A)

EJERCICIOS DE PROGRAMACIÓN EN C. DIBUJAR UN ROMBO O DIAMANTE. CALCULAR SUMATORIOS. (CU00542F)

Operadores lógicos y de comparación en programación. Not, and, or Ejemplos. (CU00132A)

Ejercicios resueltos con pseudocódigo y diagramas de flujo. Bucles for-next y while-do. (CU00161A)

Ejercicio ejemplo resuelto: verificar el algoritmo de resolución de una ecuación de segundo grado. (CU00237A)

Ejercicio resuelto con tabla de decisión. Tarjetas. Pseudocódigo y diagramas de flujo. (CU00258A)

Ejercicio ejemplo resuelto de uso de arrays (arreglos) dinámicos en pseudocódigo I (CU00214A)

Instrucciones Si... Entonces y Si... Entonces SiNo (if then else) en pseudocódigo (CU00142A)

Arrays unidimensionales. Dim.Option Base. Erase. Ejemplos en Visual Basic (CU00311A)

Ejercicios resueltos Visual Basic y.net con arrays (arreglos), Do While, For, mod, ficheros, Ubound. Cálculo serie numérica (CU00344A)

Parte I: Ejemplos de problemas que se resuelven usando una tabla de decisión en programación (CU00113A)

COMUNICACIÓN ENTRE EL CLIENTE Y SERVIDOR SIN PHP Y CON PHP. INTÉRPRETE PHP Y GESTOR DE BASES DE DATOS (CU00804B)

Manejo de módulos y recursión en programación. Pseudocódigo. (CU00204A)

PSEUDOCÓDIGO. En este documento se recopilan los elementos conceptuales esenciales acerca PSEUDOCÓDIGO en la programación.

PASO DE PARÁMETROS O ARGUMENTOS EN C. POR DEFECTO, POR VALOR O POR REFERENCIA. SIZEOF MEMORIA (CU00550F)

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Distinguir las diferentes estructuras de repetición utilizadas en problemas con bucles: mientras, repetir mientras, para.

Uso de centinelas para la toma de decisiones. Esquemas y diagramas de flujo. Ejemplos resueltos. (CU00167A)

Ejercicios resueltos con acumuladores. Pseudocódigo y diagramas de flujo. Bucle desdesiguiente (for-next). (CU00160A)

Arrays dinámicos y arrays estáticos con Visual Basic y.net. Redim, Redim Preserve, Erase. Ejemplos (CU00342A)

Problema de tiro parabólico. Ejercicio resuelto. Planteamiento y pseudocódigo. (CU00252A)

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

Algoritmos, pseudocódigo y diagramas de flujo: una introducción (CU00123A)

Problemas en programación que se resuelven recurriendo a una tabla de decisión y su algoritmia (CU00112A)

Fundamentos de Programación Visual Basic

Fundamentos de programación JAVA

Actividad colaborativa Ejercicios de programación Programación básica C++

BOLETÍN 5: Algoritmos II

Estructuras de control

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Diseño Estructurado de Algoritmos

[ GUÍA DIDÁCTICA: DESARROLLO DE ALGORITMOS PSEINT] 11 de julio de 2013

Fundamentos de programación y Bases de Datos

FUNCIONES PHP: DECLARACIÓN Y LLAMADAS. PARÁMETROS, RETURN. EJERCICIOS EJEMPLOS RESUELTOS. (CU00827B)

Editor de código Visual Basic. Lista de miembros automática, sugerencias de sintaxis, autocompletado y otras opciones. (CU00313A)

TUTORIAL PSEINT. Ing. Ronald Rentería Ayquipa. Fundamentos de Programación

Guía práctica de estudio 03: Algoritmos

Visual Basic: procedimientos Sub y funciones Function. Tipos de parámetros y tipos de retorno. Ejemplos (CU00340A)

Laboratorio 02: Ejercicios de programación en C

Instrucción IrA (GoTo). Saltos no naturales en el flujo normal de un programa. Pseudocódigo y diagramas de flujo. (CU00182A)

Vistas de categorías (formato lista, formato blog) con Joomla. Opciones de configuración. (CU00429A)

Tema 2 Introducción a la Programación en C.

Unidad 1. Análisis de algoritmos.

6.1.- Introducción a las estructuras de datos Tipos de datos Arrays unidimensionales: los vectores Operaciones con vectores.

DIAGRAMAS DE FLUJOS. Qué son Los Diagramas de Flujo y Para qué se Usan?

Indice del curso básico programación desde cero Visual Basic Nivel I (CU00302A)

Declaración de variables (integer, single, double, boolean, etc.) en Visual Basic. Dim. Ejemplos. (CU00309A)

PROGRAMACIÓN. UNIDAD II. ALGORITMO PROFA : HAU MOY

INSTITUTO POLITECNICO NACIONAL CENTRO DE ESTUDIOS CIENTIFICOS Y TECNOLOGICOS " GONZALO VAZQUEZ VELA "

ESTRUCTURAS ALGORITMICAS

Visual Basic y.net: Procedimientos Sub y funciones Function. Parámetros. Organizar programas en módulos. (CU00338A)

Programación Estructurada

INDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación

Buttons (Command Buttons) en Visual Basic. Propiedades y ejemplos. Código asociado a eventos. (CU00321A)

1. Computadores y programación

UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO

Guía Pedagógica y de Evaluación del Módulo: Elaboración y mantenimiento de sistemas de información

CURSO DE EXCEL -INTERMEDIO

Estructura Selectiva Múltiple

NOTAS TÉCNICAS SOBRE EL SIT: Comisiones Comerciales

Estructuras Secuénciales

INSTITUCION EDUCATIVA MANUEL ANGEL ANACHURY AREA: TECNOLOGIA E INFORMATICA

ESTRUCTURAS REPETITIVAS

Estructuras de Control

6.2 Interfaz del Programa de Diseño de una Guía Circular.

Guía práctica de estudio 03: Algoritmos

Teoría de Números. Divisibilidad. Olimpiada de Matemáticas en Tamaulipas

AMBITO DE VARIABLES EN C. GLOBALES Y LOCALES. UNDECLARED (FIRST USE IN THIS FUNCTION). EJEMPLOS (CU00548F)

media = ( temp0 + temp1 + temp2 + temp3 + temp temp23 ) / 24; printf( "\nla temperatura media es %f\n", media );

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos

Estructuras de control

Manual de usuario Clientes. ExpandIT Internet Shop

Tema: Funciones en Excel (III) Funciones de fecha y hora Las fechas son a menudo una parte crítica de análisis de datos

Herramientas de Programación. M.C. Juan Carlos Olivares Rojas

GRUPO DE ORACIÓN MARIA AUXILIADORA. Ministerio de Matrimonios. PC BUEN SAMARITANO. Guía para hacer un buen Curriculum (CV). 1

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

GENERALIDADES DEL LENGUAJE C

LENGUAJE DE PROGRAMACION UNO.

fundamentos de programación (unidad 4) programación estructurada en Java

Bloque temático I. Planear el proyecto de animación en 2D a partir de los requeriemientos del cliente

CONTENIDO 1 Diagrama de flujo 2 Pseudocodigo 3 Diagrama estructurado (nassi-schneiderman)

TEMA 2 METODOLOGÍA DE LA PROGRAMACIÓN

Ejercicio de algoritmia resuelto con Visual Basic: ordenar series de series de números. (CU00356A)

Preguntas frecuentes en la plataforma RECyT

Hoja de ejercicios del Tema 3

Aproximaciones Sucesivas.

Informática I ACI-191. Taller de Informática

LEER Y ESCRIBIR ARCHIVOS DE TEXTO CON PHP. FUNCIONES FOPEN (MODOS), FGETS, FPUTS, FCLOSE Y FEOF. EJEMPLOS (CU00836B)

EJERCICIOS BÁSICOS DE PROGRAMACIÓN EN C RESUELTOS. VARIABLES, PRINTF, SCANF, CÁLCULOS. (CU00527F)

3.1. Administración de la medición y de la información estratégica:

5. PROCEDIMIENTO DE GESTIÓN DE OFERTAS Y CONTRATOS

QUÉ ES UNA CLASE JAVA? ATRIBUTOS (PROPIEDADES O CAMPOS), CONSTRUCTOR Y MÉTODOS. (CU00623B)

Resolución de problemas mediante algoritmos

Tema 3. Aplicaciones de Tipo Consola

Nombre de la asignatura: Programación Básica. Créditos: Objetivo de aprendizaje

Nombre de la asignatura: Algoritmos y Lenguajes de programación.

Tipos de variables en Visual Basic (integer, single, double, string, object, etc.). Ejemplos. (CU00308A)

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Transcripción:

aprenderaprogramar.com Ejercicio final de señaleros resuelto con pseudocódigo. Organización previa de variables. Diagramas de flujo. (CU00171A) Sección: Cursos Categoría: Curso Bases de la programación Nivel I Fecha revisión: 2024 Autor: Mario R. Rancel Resumen: Entrega nº 70 del Curso Bases de la programación Nivel I 24

EJERCICIO RESUELTO Una librería dispone de un archivo donde se guarda información relativa a un lote de libros estructurada de la siguiente manera: Dato(1) = [Número de ISBN, 10 dígitos] Dato(2) = [Precio de venta al público, en euros] Dato(3) = [Señalero, 33 Libro de menos de un año de antigüedad 66 Libro de uno a tres años de antigüedad 99 Libro de más de tres años de antigüedad] Dato(4) = [Número de ISBN]... Dato(n 1) = [Señalero 33, 66, 99] Dato(n) = [Señalero 500, Fin del lote] Se desea desarrollar un programa que permita: a) Consultar el precio de un libro dado su ISBN. b) Conocer el precio del lote de libros en conjunto. Teniendo en cuenta lo siguiente: si el libro tiene menos de un año de antigüedad su precio coincide con el registrado. Si tiene entre uno y tres años deberá aplicarse un descuento del 15%. Si tiene más de tres años deberá aplicarse una rebaja del 25%. SOLUCIÓN Organización previa de variables: Variable Descripción - Uso E i Dato(i) ISBN Precio Señalero para la toma de decisiones según el usuario elija conocer precio de un libro o del lote Contador para extracción de datos Array de variables que contiene los datos Almacena el valor de ISBN actual Almacena el valor del precio actual Encontrado Valorlote Interruptor que informa si el ISBN pedido por el usuario fue encontrado o no (booleana) Acumulador donde se realiza el sumatorio de precios de libros del lote

Pseudocódigo: 1. Inicio [Pseudocódigo http://www.aprenderaprogramar.com] 2. Mostrar Elija una opción. 1 = Precio de un libro. 2 = Precio del lote 3. Pedir E 4. i = 1 : Leer Dato(i) 5. Si E = 1 Entonces 5.1 Mostrar Cuál es el ISBN? : Pedir ISBN 5.2 Mientras Dato(i) <> 500 Hacer Si Dato(i) = ISBN Entonces Leer Dato(i + 1) : Leer Dato(i + 2) Precio = Dato(i +1) Si Dato(i + 2) = 66 Entonces Precio = 0,85 * Precio Si Dato(i + 2) = 99 Entonces Precio = 0,75 * Precio Mostrar El precio del libro con ISBN, ISBN, es de, Precio Encontrado = Verdadero i = i +3 : Leer Dato(i) Repetir 5.3 Si Encontrado = Falso Entonces Mostrar se ha encontrado el ISBN deseado 6. Si E = 2 Entonces 6.1 Mientras Dato(i) <> 500 Hacer Leer Dato(i + 1) Leer Dato(i + 2) Precio = Dato(i + 1) Si Dato(i + 2) = 66 Entonces Precio = 0,85 * Precio Si Dato(i + 2) = 99 Entonces Precio = 0,75 * Precio Valorlote = Valorlote + Precio i = i + 3 : Leer Dato(i) Repetir 6.2 Mostrar El precio del lote es, Valorlote 7. Fin

Diagrama de flujo: Inicio Mostrar 1 = Precio de un libro. 2 = Precio del lote Pedir E i = 1 Leer Dato(i) E = 1 1 Pedir ISBN Mientras Dato(i) <> 500 Dato(i) = ISBN Leer Dato(i+1) : Leer Dato(i+2) Precio = Dato(i+2) Dato(i+2) = 66 Precio = 0,85 * Precio 3 4 5 6

3 4 5 6 Dato(i+2) = 99 Precio = 0,75 * Precio Mostrar El precio del libro es, Precio Encontrado = Verdadero i = i + 3 Leer Dato(i) Encontrado = Falso 1 Mostrar se ha encontrado el ISBN deseado 7

7 E = 2 Mientras Dato(i) <> 500 Leer Dato(i+1) : Leer Dato(i+2) Precio = Dato(i+1) Dato(i+2) = 66 Precio = 0,85 * Precio Dato(i+2) = 99 Precio = 0,75 * Precio Valorlote = Valorlote + Precio i = i + 3 Leer Dato(i) Mostrar El precio del lote es, Valorlote Fin

Para un caso supuesto con los siguientes datos: Dato Contenido Dato Contenido 1 55 6 66 2 10 7 88 3 99 8 12 4 35 9 33 5 7 10 500 El programa daría lugar a estas soluciones: Opción 1 (Precio de un libro), según ISBN introducido. El precio del libro con ISBN 55 es de 7,5 El precio del libro con ISBN 35 es de 5,95 El precio del libro con ISBN 88 es de 12 Opción 2 (Precio del lote). El precio del lote es 25,45 Comentarios: A medida que los programas se hacen más complejos, la posibilidad de variantes va aumentando hasta ser inabarcable. Empecemos por cuestionar asuntos relacionados con el algoritmo. a) Por qué poner dos bucles similares y no sólo uno? Pues depende de los criterios del programador y de la información de que se disponga. A falta de conocimientos específicos, programamos para un caso general. Y en este caso, se ha valorado que el archivo puede tener tanto 10 datos como 10000. Para el caso de que el usuario quiera mirar el precio de un libro se ha previsto el bucle que no lee todos los datos: extrae únicamente datos de ISBN hasta que encuentra el deseado. Así los datos que se leen son 1, 1 + 3, 1 + 3 + 3,..., es decir, 1, 4, 7, 10, 13, 16, 19, En definitiva si en el fichero hay n datos estamos extrayendo y leyendo ((n 1) / 3) + 1 datos. En cambio, para calcular el valor del lote hemos de extraer y leer todos los datos porque contienen información que nos es necesaria: el ISBN para saber si se han terminado los datos, el precio para saber el precio base y el señalero para saber el descuento. Ahora supongamos que en extraer / leer un dato se tardan 0,05 segundos Cómo afectaría usar un tipo de bucle u otro?

Datos en fichero Tiempo de proceso con bucle largo en segundos (leer n datos) Tiempo de proceso con bucle corto en segundos, leer ((n 1) / 3) + 1 datos 10 0,5 0,2 100 5 1,7 1000 50 16,7 10000 500 (8 min 20 s) 166,7 (2 min 47 s) La proporción entre el número de datos (y tiempo) a extraer en un caso y otro es de: n n = 3 n 1 + 1 n + 2 3 Para valores de n grandes, (n / (n +2)) tiende a 1 resultando que el número de datos a extraer y el tiempo empleado es de aproximadamente tres veces según se elija una vía u otra. Dado que el usuario puede querer calcular sólo el precio de un libro: Para que llevarlo por el camino largo pudiendo ir por el corto? En este caso no hemos trabajado con datos reales y por otro lado, por fortuna, los ordenadores son muy rápidos y disponemos de más herramientas para resolver problemas. Lo que sí nos parece interesante es quedarnos con el fondo del asunto. En ocasiones, lo que puede ser un ahorro de código se convierte en una pérdida de eficiencia. Y esto no interesa. Un conocido locutor de radio solía decir: Buscad la belleza. En nuestro caso, Busquemos la eficiencia. b) Por qué usar Si... Entonces en vez de Según... Caso para el flujo principal del programa? El uso de Según... Caso sería una alternativa válida, aunque recordemos que siempre es sustituible. Siendo así, nos interesa dominar plenamente el uso de Si... Entonces pudiendo considerar secundario el Según... Caso. c) es conveniente introducir una opción de salir en el menú que permita no ejecutar nada? Siempre será conveniente dar una opción a salir de un menú. Lo estudiaremos en el siguiente apartado relativo a Entradas controladas por el usuario. Por último haremos una breve reflexión relativa al contenido inicial de las variables. Venimos suponiendo que cuando el programa se inicia todas las variables valen cero o están vacías. Esto puede ser cierto o no. Es decir, podría darse el caso de trabajar con un sistema informático que guarde el contenido de las variables una vez termina el programa y las conserve cuando se inicia otra vez, o que no reconozca contenido alguno ni a la variable misma si no se le ha asignado contenido. Al respecto: hay que conocer los sistemas y lenguajes con los que se trabaja. Supongamos que cerramos este programa con un bucle de modo que una vez se llega al final se vuelve al principio y vuelve a pedir la elección de una opción (el programa no termina por sí solo). Qué ocurrirá? Que el programa parece que funciona pero realmente no lo hace bien por un problema con el contenido inicial de variables. Así podrían ocurrir cosas como que si tras calcular el precio de un lote obtenemos 750, si repetimos el cálculo nos devuelva 1500 porque el acumulador partía de su valor anterior y no fue establecido a cero. Próxima entrega: CU00172A Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la dirección siguiente: http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=28&itemid=59