Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

Diseño descendente, Apuntes de Ingeniería Industrial

Asignatura: Fundamentos de informática, Profesor: Pedro Latorre, Carrera: Ingeniería de Tecnologías Industriales, Universidad: UniZar

Tipo: Apuntes

2012/2013

Subido el 23/01/2013

avavrm
avavrm 🇪🇸

4

(250)

58 documentos

1 / 60

Documentos relacionados


Vista previa parcial del texto

¡Descarga Diseño descendente y más Apuntes en PDF de Ingeniería Industrial solo en Docsity! Fundamentos de Informática Ingeniería en Tecnologías Industriales Curso 2010-11 Grado en Ingeniería en Tecnologías Industriales Lección T6.1: Diseño descendente I: Procedimientos Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T6.1: Diseño descendente I: Procedimientos Diseño descendente I: Procedimientos • Índice: 1. Necesidad del diseño descendente 2. Aplicación a la resolución de problemas 3. Ámbito de un objeto informático 4. Aplicación a la resolución de problemas Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos • Diseño descendente: se parte de una solución general del problema planteado, en la cual se obvian una buena parte de los detalles concretos, para abordar en fases sucesivas el diseño, también descendente, de la solución de cada uno de los detalles pendientes. 1. Necesidad del diseño descendente Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos • Diseño descendente: se parte de una solución general del problema planteado, en la cual se obvian una buena parte de los detalles concretos, para abordar en fases sucesivas el diseño, también descendente, de la solución de cada uno de los detalles pendientes. 1. Necesidad del diseño descendente Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos • Diseño descendente: se parte de una solución general del problema planteado, en la cual se obvian una buena parte de los detalles concretos, para abordar en fases sucesivas el diseño, también descendente, de la solución de cada uno de los detalles pendientes. 1. Necesidad del diseño descendente Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos 1. Necesidad del diseño descendente Gestión de libros Gestión de usuarios Gestión de trabajadores Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos 1. Necesidad del diseño descendente Dar de alta un libro Dar de baja un libro Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos • Divide y vencerás – Descomposición del problema – Composición de soluciones • Ventajas: – Diseño “más sencillo” – Legibilidad, fiabilidad, reusabilidad… 1. Necesidad del diseño descendente  procedimientos  funciones acciones virtuales datos virtuales La formalización de la transmisión de datos será vista en la lección siguiente Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos • Operaciones abstractas (o virtuales): – Visión abstracta que permite usar dicha operación sin más que conocer qué hace – Visión detallada que define cómo lo hace Especificación o interfaz Implementación 1. Necesidad del diseño descendente Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos • Conociendo únicamente la especificación o interfaz podemos invocar al procedimiento o función, aunque no sepamos al detalle cómo se realiza 1. Necesidad del diseño descendente Algoritmo ejemploSimple; { Este algoritmo obtiene un natural y visualiza su cuadrado } Variable n : entero; Principio saludar; leerEntero(teclado, n); escribirEntero(n * n); despedirse Fin Algoritmo saludar; Principio mostrarMsg("Hola . . .") mostrarMsg("Autor: ...") Fin Algoritmo despedirse; Principio mostrarMsg(“Adiós . . .") mostrarMsg(“Encantado . . .") Fin Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos • Problema a resolver: diseño de un algoritmo que escriba por pantalla un rectángulo utilizando un juego de caracteres restringido a ‘-’, ‘+’, ‘ ’ y ‘|’ y cuyas dimensiones, expresadas en número de caracteres, sean definidas interactivamente por el operador mediante el siguiente tipo de diálogo: 2. Aplicación a la resolución de problemas Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos • Primer análisis: – Interacción: readln, writeln – Dibujo del rectángulo: mucho más complicado! 2. Aplicación a la resolución de problemas • Aplicando el método de diseño descendente obtenemos un primer algoritmo: algoritmo rectángulo { Pre: --- Post: Aparece escrito en pantalla un rectángulo cuyas dimensiones son fijadas interactivamente por el operador } variables anchura,altura: entero; principio escribirCadena(pantalla,“Anchura del rectángulo : ”); leerEntero(teclado,anchura); escribirCadena(pantalla,“Altura del rectángulo : ”); leerEntero(teclado,altura); acabarLínea(pantalla); escribirRectangulo(altura,anchura); fin Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos • Segunda fase del diseño: escribirRectángulo • Línea a línea, un rectángulo consta de: – Una primera línea compuesta por dos caracteres ‘+’ (el primero y el último) entre los cuales hay caracteres ‘-’, tantos como la anchura del rectángulo menos dos. – Una última línea igual a la primera. – Tantas líneas intermedias como la altura del rectángulo menos dos, compuestas todas ellas por dos caracteres ‘|’ (el primero y el último) entre los cuales hay caracteres ‘ ’, tantos como la anchura del rectángulo menos dos. 2. Aplicación a la resolución de problemas Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos • Tercera fase del diseño: escribirUnaLínea 2. Aplicación a la resolución de problemas algoritmo escribirUnaLínea (E c1,c2: caracter; E ancho:entero) { Pre: ancho≥2 Post: Aparece escrita en pantalla una línea del rectángulo cuya anchura es “ancho”, utilizando los caracteres “c1”, para los extremos, y “c2” para el interior } variables numCaracteres: entero; { Número de carácteres escritos en la línea en curso } principio escribirCaracter(pantalla,c1); numCaracteres:= 1; mientrasQue (numCaracteres<=(ancho-2)) hacer escribirCaracter(pantalla,c2); numCaracteres:= numCaracteres+1; finMQ escribirCaracter(pantalla,c1); acabarLínea(pantalla); fin • Y FINALMENTE, el problema completo: composición de soluciones Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos algoritmo rectángulo algoritmo escribirRectángulo(E alto,ancho: entero) algoritmo escribirUnaLínea (E c1,c2: caracter; E ancho:entero) variables numCaracteres: entero; { Número de caracteres escritos en la línea en curso } principio { de escribirUnaLínea } escribirCaracter(pantalla,c1); numCaracteres:= 1; mientrasQue (numCaracteres<=(ancho-2)) hacer escribirCaracter(pantalla,c2); numCaracteres:= numCaracteres+1; finMQ escribirCaracter(pantalla,c1); acabarLínea(pantalla); fin { de escribirUnaLínea } variables { de escribirRectángulo } numLíneas: entero; { Número de líneas ya escritas } principio {de escribirRectangulo} escribirUnaLínea(‘+’,‘-’,ancho); numLíneas:= 1; mientrasQue (numLíneas<=(alto-2)) hacer escribirUnaLínea(‘|’,‘ ’,ancho); numLíneas:= numLíneas+1; finMQ escribirUnaLínea(‘+’,‘-’,ancho); fin { de escribirRectángulo } variables anchura,altura: entero; principio { de rectángulo } escribirCadena(pantalla, “Anchura del rectángulo : ”); leerEntero(teclado,anchura); escribirCadena(pantalla,“Anchura del rectángulo : ”); leerEntero(teclado,altura); acabarLínea(pantalla); escribirRectangulo(altura,anchura); fin { de rectángulo } Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos • Ventajas de este diseño: – El método aplicado facilita el análisis de los diferentes problemas que se han planteado en el proceso y el diseño sus correspondientes soluciones algorítmicas por tratarse todos y cada uno de ellos de problemas de complejidad limitada. – El código obtenido es fácilmente legible gracias al reducido número de líneas de cada algoritmo y a sus nombres. Con ello se logra además minimizar el riesgo de introducir errores en el código de cada uno de ellos, facilitando su localización en caso de que sean cometidos. – El código obtenido se presta a una fácil reutilización en otros programas 2. Aplicación a la resolución de problemas Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos algoritmo cuadrado algoritmo escribirRectángulo(E alto,ancho: entero) algoritmo escribirUnaLínea (E c1,c2: caracter; E ancho:entero) variables numCaracteres: entero; { Número de caracteres escritos en la línea en curso } principio { de escribirUnaLínea } escribirCaracter(pantalla,c1); numCaracteres:= 1; mientrasQue ¬(numCaracteres=(ancho-1)) hacer escribirCaracter(pantalla,c2); numCaracteres:= numCaracteres+1; finMQ escribirCaracter(pantalla,c1); acabarLínea(pantalla); fin { de escribirUnaLínea } variables { de escribirRectángulo } numLíneas: entero; { Número de líneas ya escritas } principio {de escribirRectangulo} escribirUnaLínea(‘+’,‘-’,ancho); numLíneas:= 1; mientrasQue ¬(numLíneas=(alto-1)) hacer escribirUnaLínea(‘|’,‘ ’,ancho); numLíneas:= numLíneas+1; finMQ escribirUnaLínea(‘+’,‘-’,ancho); fin { de escribirRectángulo } variables lado: entero; principio { de cuadrado } escribirCadena(pantalla, “Lado del cuadrado : ”); leerEntero(teclado,lado); acabarLínea(pantalla); escribirRectangulo(lado, lado); fin { de cuadrado } Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos • Problema a resolver: diseñar un algoritmo que permita la traducción de un número entero (0..3999) definido por el operador a número romano. 2. Aplicación a la resolución de problemas Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos • Diseño descendente I: La dificultad del problema radica en saber, en primer lugar, cómo escribir números romanos y, en segundo lugar, en expresar el correspondiente método de escritura de números romanos en forma algorítmica. • Diseño descendente II: la escritura de un número romano (por ejemplo del entero 2704) puede descomponerse en cuatro problemas diferentes: escritura en romanos de la cifra que representa los millares (2→MM), a continuación la escritura en romanos de las centenas (7→DCC), a continuación las decenas (0→nada) y, finalmente, las unidades (4→IV). 2. Aplicación a la resolución de problemas Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos • En el diseño del algoritmo escribirRomano que se muestra a continuación se ha optado por identificar el problema de traducir una cifra comprendida entre el 0 y el 9 a números romanos y resolverlo independientemente de que la cifra represente millares, centenas, decenas o unidades. • El algoritmo (procedimiento) traducirCifra constituye la solución propuesta. Sus cuatro parámetros de entrada son las herramientas que permiten lograr un diseño general y válido para los cuatro problemas que debe resolver. 2. Aplicación a la resolución de problemas Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos algoritmo escribirRomano { Pre: --- Post: Traduce a números romanos un número proporcionado por el usuario (0-3999) } algoritmo traducirCifra (E cifra:entero; E uno,cinco,diez:carácter) variables numero:integer; principio { de escribirRomano } escribirCadena(pantalla,“Escriba un numero (0-3999) : ”); leerEntero(teclado,numero); escribirCadena(“Su numero es el ”); traducirCifra(numero div 1000,‘M’, ‘ ’, ‘ ’); traducirCifra(numero div 100 mod 10, ‘C’, ‘D’, ‘M’); traducirCifra(numero div 10 mod 10, ‘X’, ‘L’, ‘C’); traducirCifra(numero mod 10, ‘I’, ‘V’, ‘X’); acabarLínea(pantalla); fin { de escribirRomano } 2. Aplicación a la resolución de problemas Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos algoritmo traducirCifra (E cifra:entero; E uno,cinco,diez:carácter) { Pre: cifra entre 0 y 9 Post: aparece escrita en pantalla la secuencia de letras romanas que representa “cifra” } Variables veces:entero; principio { de traducirCifra } selección caso cifra = 0..3 veces:=0; mientrasQue veces<>cifra) hacer veces:= veces+1; escribirCaracter(pantalla,uno) finMQ caso cifra=4 escribirCaracter(pantalla,uno); escribirCaracter(pantalla,cinco); caso (cifra≥5) Y (cifra≤8) escribirCaracter(pantalla,cinco); veces:=0; mientrasQue veces<>cifra-5 hacer veces:= veces+1; escribirCaracter(pantalla,uno) finMQ caso cifra=9 escribirCaracter(pantalla,uno); escribirCaracter(pantalla,diez); finSelección fin { de traducirCifra } 2. Aplicación a la resolución de problemas Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos algoritmo rectángulo algoritmo escribirRectángulo(E alto,ancho: entero) algoritmo escribirUnaLínea (E c1,c2: caracter; E ancho:entero) variables numCaracteres: entero; { Número de caracteres escritos en la línea en curso } principio { de escribirUnaLínea } escribirCaracter(pantalla,c1); numCaracteres:= 1; mientrasQue ¬(numCaracteres=(ancho-1)) hacer escribirCaracter(pantalla,c2); numCaracteres:= numCaracteres+1; finMQ escribirCaracter(pantalla,c1); acabarLínea(pantalla); fin { de escribirUnaLínea } variables { de escribirRectángulo } numLíneas: entero; { Número de líneas ya escritas } principio {de escribirRectangulo} escribirUnaLínea(‘+’,‘-’,ancho); numLíneas:= 1; mientrasQue ¬(numLíneas=(alto-1)) hacer escribirUnaLínea(‘|’,‘ ’,ancho); numLíneas:= numLíneas+1; finMQ escribirUnaLínea(‘+’,‘-’,ancho); fin { de escribirRectángulo } variables anchura,altura: entero; principio { de rectángulo } escribirCadena(pantalla, “Anchura del rectángulo : ”); leerEntero(teclado,anchura); escribirCadena(pantalla,“Anchura del rectángulo : ”); leerEntero(teclado,altura); acabarLínea(pantalla); escribirRectangulo(altura,anchura); fin { de rectángulo } Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos • Ambito de un objeto informático: – el ámbito de un objeto informático (constante, tipo de dato, variable, biblioteca, procedimiento, función, etc.) es el dominio en el que el objeto es visible (conocido) y, por tanto utilizable – El ámbito es un atributo del objeto – las reglas de ámbito dependen de los lenguajes; definen la localidad o globalidad de los objetos En PASCAL el ámbito de un objeto informático abarca desde su declaración hasta el final del algoritmo en que se ha declarado el objeto. 3. Ámbito de un objeto informático Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos 3. Ámbito de un objeto informático ALGORITMO A Definición del objeto X Principio { de A } …… Fin. { de A } Ambito del objeto X La regla anterior debe ser compatibilizada con la relativa al carácter local de los objetos definidos dentro de un algoritmo. Esta idea queda ilustrada en el esquema que se muestra a continuación: Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos 3. Ámbito de un objeto informático Algoritmo A Definición de los objetos X, Y, Z Principio { de A } …… Fin. { de A } Algoritmo B Definición de los objetos Y, V Principio { de B } …… Fin. { de B } B YbUb Xa Ya Za A Un objeto definido en un algoritmo es, en principio, visible dentro de todos los objetos locales del algoritmo. Tal es el caso de los objetos X y Z definidos en el algoritmo A. Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos 3. Ámbito de un objeto informático Algoritmo A Definición de los objetos X, Y, Z Principio { de A } …… Fin. { de A } Algoritmo B Definición de los objetos Y, V Principio { de B } …… Fin. { de B } B YbUb Xa Ya Za A Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos 3. Ámbito de un objeto informático Algoritmo A Definición de los objetos X, Y, Z Principio { de A } …… Fin. { de A } Algoritmo B Definición de los objetos Y, V Principio { de B } …… Fin. { de B } B YbUb Xa Ya Za A Un objeto definido en un algoritmo local (por ejemplo, el objeto Y del procedimient B) puede ocultar un objeto del algoritmo dentro del cual está definido (objeto Y del algoritmo A) si ambos nombres (identificadores) coinciden. Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos 3. Ámbito de un objeto informático Algoritmo A Definición de los objetos X, Y, Z Principio { de A } …… Fin. { de A } Algoritmo B Definición de los objetos Y, V Principio { de B } …… Fin. { de B } B YbUb Xa Ya Za A Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos 3. Ámbito de un objeto informático Algoritmo A Definición de los objetos X, Y, Z Principio { de A } …… Fin. { de A } Algoritmo B Definición de los objetos Y, V Principio { de B } …… Fin. { de B } B YbUb Xa Ya Za A Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos • En nuestro contexto, es aconsejable evitar la ocultación de variables mediante la redifinición de elementos • Ojo con los efectos secundarios: al definir la interfaz de un subprograma debemos definir los únicos elementos que se pueden (deben) modificar desde dentro del subprograma 3. Ámbito de un objeto informático Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos • Apliquemos de nuevo la técnica de diseño descendente: – El análisis realizado en el problema anterior sobre la composición de un número romano continúa siendo plenamente válido. – El problema de traducir una cifra en una secuencia de caracteres romanos ahora se transforma en reconocer el valor descrito por una secuencia de caracteres que definen los milares (MM), las centenas (DCC), las decenas (-) o las unidades del número (IV). – Se identifica la necesidad de contar con un algoritmo (procedimiento) específico, al que se le ha dado el nombre obtenerLetra, que proporcione el siguiente carácter leído del número romano y que, en caso de que se haya agotado la línea suministrada por el operador, proporcione un carácter que no corresponda a los que pueden aparecer en un número romano (por ejemplo, el carácter ‘*’). 4. Aplicación a la resolución de problemas Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos 4. Aplicación a la resolución de problemas Grado en Ingeniería de Tecnologías Industriales Fundamentos de Informática Lección T4.1: Diseño descendente I: Procedimientos 4. Aplicación a la resolución de problemas M C C M D C D 0 : 3 0 : 3 0 : 2 X X C L X L 0 : 3 0 : 2 I I X V I V 0 : 3 0 : 2 grafo sintáctico de un número romano
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved