Metodologìa de la Programaciòn II

download Metodologìa de la Programaciòn II

of 33

Transcript of Metodologìa de la Programaciòn II

  • 8/6/2019 Metodologa de la Programacin II

    1/33

    Unidad 2: Metodologa de la Programacin 1

    Unidad 2METODOLOGA DE LA PROGRAMACINDesarrollo de la unidad : 27 h

    Prcticas y Ejercicios :Disear con el Word ordinogramas y organigramasProblemas con pseudocdigo, seguimientos, ElaboracinEjercicios con tablas de verdad

    Conceptos:Diagramas de flujo, Organigramas, Ordinogramas, pseudocdigo, tablas de decisinInstrucciones simples, compuestas, Estructuras de control: secuencial, alternativa, repetitiva, variables

    auxiliares

    Metodologa: Mtodos, normas, herramientas utilizados para la elaboracin de programas

    Herramientas de Diseo:

    Herramientas grficas o visuales

    Diagramas de FlujoConjunto de smbolos normalizados, conectados mediante lneas de flujo que muestran la

    secuencia de pasos de un programa, las acciones que realiza o el origen y destino de los datos

    Tipos:Organigramas (Visin externa del programa)Ordinogramas (Visin interna, detallada del programa)

    Diagramas de transicin de estados.

    Herramientas textualesPseudocdigo: Lenguaje de intermedio entre el lenguaje natural y el lenguaje de

    programacin.

  • 8/6/2019 Metodologa de la Programacin II

    2/33

    Unidad 2: Metodologa de la Programacin 2

    ORGANIGRAMAS

    - Tambin llamados diagrama de flujo del sistema (Externo)

    - Representacin grfica de los ficheros y dispositivos fsicos que interviene en un proceso.- Visin general del programa, E/S del programa, dispositivos utilizados

    Normas

    1. Arriba dispositivos de entrada2. A Izda/dcha Dispositivos de salida3. Abajo dispositivos de salida4. Centro el nombre del proceso, tarea, programa

    Elementos

    Smbolos de soporte E/S

    Cinta Disco Teclado Impresora Pantalla Almacenamiento interno

    Smbolos de proceso

    Lneas de conexin

    Salida o Entrada Salida o entra por una lnea de comunicacin Mdem, dispositivode conexin

    Ejemplos y ejercicios

    1. Proceso de consulta de un usuario de una agencia de viajes sobre vuelos almacenados enun ordenador central

    2. Modificacin de la bases de datos de clientes en una aplicacin comercial

    3. Seleccin y impresin de informes de contabilidad4. Consulta de una pagina web (conectado o no conectado)5. Emisin de facturas6. Anotar pedidos y enviarlos a la central

  • 8/6/2019 Metodologa de la Programacin II

    3/33

    Unidad 2: Metodologa de la Programacin 3

    ORDINOGRAMAS

    Diagrama de flujo de programa (Interno )

    Secuencia lgica detallada de las operaciones que realiza el programa

    Normas- Debe existir un principio y un final.- La secuencia detallada de operaciones se realizan de arriba a abajo.- Todos los elementos estn conectados por lneas de flujo de datossin que las lneas se crucen entre s.- El ordinograma en conjunto debe guardar una cierta simetra.

    Esquema bsico :Inicio Entrada de datos Proceso Salida de Resultados Fin

    Elementos Bsicos

    - Smbolos de operacin o proceso

    - Smbolos de decisin

    Alternativa simple Alternativa mltiple

    Elementos de interconexin:

    SIMBOLOS FUNCINConector de reagrupamiento : Utilizadopara el reagrupamiento de lneas de flujo

    Conector de una misma pgina: Sirve paraconectar dos puntos o partes delordinograma en la misma pgina.

    Conector de distintas pginas: Sirve paraconectar dos puntos del ordinograma enpginas diferentes.

    Los ordinogramas son bastante fcil de entender y seguir pero laborioso de realizar y modificar, senecesita mucho espacio para representar un programa completo. Hoy estn en desuso, slo se utiliza en

    casos muy sencillos como en la descripcin de funcionamiento en una guas para usuario, de

    instalacin, etc, pero no es habitual en programacin donde se utiliza mayoritariamente lospseudocdigos.

    INICIO

    FIN

    Entrada

    Salida

    Proceso

    Clculo Inicio / FinSubprograma

    Condicin

    Expresin

    N

    N

  • 8/6/2019 Metodologa de la Programacin II

    4/33

    Unidad 2: Metodologa de la Programacin 4

    Ejemplo 1: Ordinograma del algoritmo que calcula el permetro y el rea de un rectngulo:

    Algoritmo REC_AREA_PERIMETROEntorno

    Entero BASE, ALTURA, PERIMETRO, AREAfin_entorno

    ESCRIBIR"Introduce la BASE

    LEERBASE

    ESCRIBIRIntroduce la ALTURA

    PERMETRO = 2*BASE+2*ALTURAAREA = BASE * ALTURA

    LEERALTURA

    VISUALIZARAREA, PERIMETRO

    INICIO

    FIN

  • 8/6/2019 Metodologa de la Programacin II

    5/33

    Unidad 2: Metodologa de la Programacin 5

    Ejemplo 2: Introducir dos nmeros y visualizar el mayor.Entorno

    Real A, B

    Fin_entorno

    NO SI

    Ejemplo 3:Introducir un nmero por teclado, si no se adivina el nmero oculto, borrar pantalla, indicarsi el n es superior o inferior. Repetir la operacin hasta acertar.Entorno

    Entero NUMConstante OCULTO=19

    Fin_entorno

    NO

    SI

    SI NO

    INTRODUCIRA, B

    A>B

    ESCRIBIREl mayor es, B

    ESCRIBIREl mayor es, A

    INTRODUCIRNUM

    NUM>OCULTO

    ESCRIBIRTe pasas

    ESCRIBIRNo llegas

    NUMOCULTO

    INICIO

    INICIO

    FIN

    FIN

  • 8/6/2019 Metodologa de la Programacin II

    6/33

  • 8/6/2019 Metodologa de la Programacin II

    7/33

    Unidad 2: Metodologa de la Programacin 7

    PSEUDOCDIGO

    - Lenguaje intermedio entre natural y de programacin

    - Es ms libre que un lenguaje de programacin concreto pero mantiene las reglas de programacinestructurada- Independiente del lenguaje de programacin- Permite un diseo Top-Down (Niveles de abstracin)

    General a lo concreto, Divide y vencers.- Fcil de entender, corregir y modificar

    El pseudocdigo es una tcnica de representacin de algoritmos no grfica que nos permitedescribirlos mediante un lenguaje intermedio entre el lenguaje natural que normalmente utilizamos en

    nuestra comunicacin escrita (el espaol) y el lenguaje de programacin que posteriormente vamos autilizar (C, C++, Java, etc).

    Esta caracterstica permite escribir la solucin de un problema utilizando palabras y frases enlenguaje natural sujetas a unas determinadas reglas que luego facilitan la traduccin del algoritmo a unprograma escrito en el lenguaje de programacin determinado.

    Ventajas del pseudocdigo:

    - Permite que durante la fase de diseo, los programadores se centren en la lgica y estructuras decontrol del algoritmo (descripcin de la secuencias de pasos que hay que llevar a cabo) y seolviden de las reglas y restricciones sintcticas (como hay que escribir dicha secuencia) que

    impone un determinado lenguaje de programacin.- La descripcin o representacin de los algoritmos que obtenemos es ms fcil de crear y de

    entender, pues est realizada en el lenguaje que utilizamos habitualmente, no siendo necesariopor tanto el conocimiento de un lenguaje de programacin.

    - La descripcin o representacin de los algoritmos que obtenemos es totalmente independiente delenguaje de programacin que posteriormente vayamos a utilizar.

    - Facilita la realizacin de futuras correcciones o actualizaciones gracias a que no es un sistema derepresentacin rgido.

    La descripcin del algoritmo que obtenemos mediante pseudocdigo, que no es ejecutable por unordenador, se considera como un primer borrador del programa que vamos a desarrollar en la fase de

    codificacin, ya que como ya hemos dicho, la descripcin obtenida en pseudocdigo es fcilmentetraducible a un programa.

    Estructura o partes de un algoritmo:Cabecera o IdentificacinCuerpo

    - Entorno: Definicin de datos- Proceso: Definicin de instrucciones

  • 8/6/2019 Metodologa de la Programacin II

    8/33

    Unidad 2: Metodologa de la Programacin 8

    EJEMPLO:

    ALGORITMO: Descuento en compra

    /* Este algoritmo calcula el tanto por ciento de descuento que han hecho al realizar unadeterminada compra */ENTORNO:/* En este bloque irn la declaracin de los distintos elementos u objetos que vamos a utilizar enun algoritmo: tipos definidos por el usuario variables , constantes, funciones y procedimientos,etc.*/PROCESO:INICIO/* En este bloque se representarn las distintas instrucciones que formen parte del bloque de

    instrucciones del algoritmos que estamos describiendo .*/FIN

    ENTORNO DEL ALGORITMO:

    Se definen todas la variables y constantes que vamos ha utilizar en el programa.Cada variable y constante debe tener un nombre y pertenecer a un tipo de dato.

    ConstantesConstante tipo1 NombreConstante11,...., Constante NombreConstante1n;Constante tipo2 NombreConstante21,..., Constante NombreConstante2n;

    ...Constante tipom NombreConstantem1,...,Constante NombreConstantemn;Variables

    tipo1 NombreVariable11,....NombreVariable1n;tipo2 NombreVariable21,...,NombreVariable2n;

    ...tipom NombreVariablem1,...,NombreVariablemn;

    Ejemplo:

    Constantes

    Real Pi = 3.1416;Entero Numelementos = 10;

    VariablesReal Radio, Superficie;Entero contador;Carcter letra1;

  • 8/6/2019 Metodologa de la Programacin II

    9/33

    Unidad 2: Metodologa de la Programacin 9

    PROCESO DE UN ALGORITMO:

    - Descripcin detallada de la secuencia de instrucciones que realiza el algoritmo

    Tipos de instrucciones:

    Bsicas:

    - Entrada- Salida- Asignacin

    Instrucciones de control / Estructuras de Control

    - Estructura Secuencial- Estructuras alternativas / condicional

    SimpleDobleMltiple

    - Estructuras repetitivas / iterativasMientrasHastaPara

    Categora de Instruccin Representacin en unordinograma

    Representacin en unpseudocdigo

    Instruccin de EntradaLEER variable;

    Instruccines de Salida ESCRIBIR "texto";ESCRIBIR "texto", variableESCRIBIR "texto", variable;

    "texto";

    LEERvariable

    ESCRIBIR"texto"

  • 8/6/2019 Metodologa de la Programacin II

    10/33

    Unidad 2: Metodologa de la Programacin 10

    Tipo de Instruccin Representacin en unordinograma

    Representacin en unpseudocdigo

    Instruccin de asignacinNombreVariable =Expresin

    Secuencia de instrucciones Ins. A

    Ins. B

    Alternativa Simple

    NO SISI Condicin

    ENTONCESI;

    FIN-SI

    Alternativa Doble NO SISI Condicin

    ENTONCES

    I;SINO

    J;FIN-SI

    Alternativa Mltiple

    .......

    SEGN Expresin

    Valor1:I1 ;

    Valor2:I2 ;

    ....................ValorN:

    IN ;[En otro Caso:

    IN+1 ;]FIN-SEGUN

    NombreVariable =Expresin

    I

    IJ

    I1 IN IN+1

    Ins. A.

    Ins. B

    Expresin

    Condicin

    Condicin

  • 8/6/2019 Metodologa de la Programacin II

    11/33

    Unidad 2: Metodologa de la Programacin 11

    EJEMPLOS BSICOS I.

    1. Leer dos nmeros, sumarlos y escribir su resultado

    PROGRAMA Ejemplo1/* Lee dos nmero los suma y me muestra el resultado */ENTORNOVariables

    Entero A,B, SumaINICIO

    Leer ALeer BSuma = A + BMostar Suma

    FIN

    2. Leer dos nmeros e indicar cual es el mayor

    PROGRAMA Ejemplo2/* Leer dos nmero e indicar cual es el mayor */ENTORNOVariables

    Entero A, BINICIO

    Leer ALeer BSI ( A > B)

    ENTONCESMostrar A

    SINOMostrar B

    FIN-SIINICIO

    3. Leer dos nmeros y una operacin (+ - * / ) y mostrar el resultado

    PROGRAMA Calculadora/* Lee dos nmero, un carcter operacin y realiza el clculo indicado */ENTORNOVariables

    Carcter OperadorEntero A, BEntero Resultado

    INICIOLeer ALeer BLeer OperadorSEGN Operador

    +: Resultado = A + B- : Resultado = A - B*: Resultado = A * B/ : Resultado = A / B

    FIN-SEGN

    Mostrar ResultadoFIN

  • 8/6/2019 Metodologa de la Programacin II

    12/33

    Unidad 2: Metodologa de la Programacin 12

    ESTRUCTURAS REPETITIVAS:

    Tipo de Instruccin Representacin en unordinograma

    Representacin en unpseudocdigo

    Instruccin Mientras:NO

    SI

    MIENTRAS (Condicin )Instrucciones......

    FIN-MIENTRAS

    Instruccin Repetir

    No

    SI

    Si

    REPETIRInstrucciones......

    HASTA ( Condicin )

    Instruccin Para

    No

    si

    PARA Cont desde Vo HASTA VfCon [Incremento | Decremento] X

    InstruccionesFIN-PARA

    Llamada a Subrutina,realizar un subprograma

    Nombre ( Paramtros)

    Datos Entrada :E1,E2..Datos Salida :S1, S2..

    condicin

    Ins

    condicin

    Ins.

    Cont = Vo

    Cont Vf

    Instrucciones

    Cont = Cont X

    Nombre delSubprograma

  • 8/6/2019 Metodologa de la Programacin II

    13/33

    Unidad 2: Metodologa de la Programacin 13

    EJEMPLOS BSICOS II1. Muestre el mensaje procesando datos... desea continuar (s/n), si el usuario introduce S, se

    repite el mensaje y si dice N muestra el mensaje adis y termina.

    PROGRAMA MensajeSN/* Pide confirmacin para continuar */ENTORNOVariables

    Carcter letraINICIO

    REPETIRMostrar Procesando datos...desea continuar (s/n):Leer letra

    HASTA (letra = N)Mostar Adis

    FIN

    2. Un programa que lea nmeros, los sume y termine cuando que el usuario introduzca el nmero 0,mostrando la suma y la media.PROGRAMA Sumador-Mientras/* Suma una serie de nmero enteros hasta leer el nmero cero */ENTORNOVariables

    Entero Nmero, Contador, Suma, MediaINICIO

    Contador = 0Suma = 0Leer Nmero

    MIENTRAS ( Nmero

    0 )Suma = Suma + NmeroContador = Contador + 1Leer Nmero

    FIN-MIENTRASMedia = Suma / ContadorMostrar SumaMostrar Media

    FIN

    3. Un programa que lea un valor N, que indica cuantos nmeros va a leer, y calcule la suma y lamedia.

    PROGRAMA Sumador-Para/* Suma una serie de nmero determinados */ENTORNOVariables

    Entero N, Nmero, Contador, Suma, MediaINICIO

    Suma = 0Leer NPARA Contador = 1 HASTA N HACER

    Leer NmeroSuma = Suma + Nmero

    FIN-PARAMedia = Suma / Contador

    Mostrar SumaMostrar MediaFIN

  • 8/6/2019 Metodologa de la Programacin II

    14/33

    Unidad 2: Metodologa de la Programacin 14

    Ms ejemplos:

    1. Dado un nmero por teclado, decidir si es par o impar.

    Algoritmo PAR_IMPAR//Determina si un nmero introducido es par

    EntornoEntero A

    fin_entornoInicio

    Escribir Introduce un nmero:Leer ASi (A % 2=0) entonces

    Escribir el nmero,A,es par

    sinoEscribir A,es un nmero impar

    fin_sifin

    2. Dados dos nmeros por teclado, decir si un nmero es mltiplo de otro:

    Algoritmo MULTIPLO//Determina si un nmero es mltiplo de otro

    EntornoEntero A,B

    fin_entorno

    InicioEscribir Introduzca dos nmeros:Leer A,BSi ( (A>B) and ( (A % B) = 0))

    entoncesEscribir B,es mltiplo de,A

    sinoSi ( (B>A) and ( (B %A) = 0))

    entonces

    Escribir A,es mltiplo de,Bsino

    Si (A=B)entonces

    Escribir son igualessino

    Escribir no son mltiplosfin_si

    fin_sifin_si

    fin

  • 8/6/2019 Metodologa de la Programacin II

    15/33

    Unidad 2: Metodologa de la Programacin 15

    3. Dado el da, mes y ao de nacimiento de una persona y dado tambin el d, m, a actual, nos diga suedad:

    Algoritmo EDAD

    //Determina la edad de una persona conocida la fecha de nacimientoEntorno

    Entero D, M, A, DIA, MES, AO /*datos actuales: D, M, A y

    de nacimiento: DIA, MES, AO */Entero X // Edad

    fin_entorno

    InicioEscribir Introduce la fecha actual da mes ao: Leer D, M, AEscribir Introduce tu fecha de nacimiento da mes ao: Leer DIA, MES, AOX=A-AOSi (M>MES)

    entoncesEscribir Tienes , X , aos.

    sinoSi (M=DIA))

    entoncesEscribir Tienes , X , aos.

    sinoEscribir Tienes , X-1 , aos

    fin_sifin_si

    fin_sifin

    Este programa podra realizarse de forma ms simple agrupando condiciones:

    Si ((M>MES) or ((M=MES)and(D>=DIA)))entonces

    Escribir Tienes , X , aos.sino

    Escribir Tienes , X-1 ,aos.fin_si

  • 8/6/2019 Metodologa de la Programacin II

    16/33

    Unidad 2: Metodologa de la Programacin 16

    Clculo del factorial de un nmero realizado con los tres tipos de ciclos: Mientras, repetir y para:

    N! = N * (N-1) * (N-2)*....* 1.

    Algoritmo FACTORIAL// Algoritmo que calcula el factorial de un nmero natural

    EntornoEntero NUM, INI, FAC

    fin_entornoInicio

    FAC =1Escribir Introduce un nmero mayor que 1Leer NUMINI=NUM

    Mientras NUM > 1FAC = FAC * NUMNUM = NUM - 1

    Fin_mientrasEscribir El factorial de, INI , es , FAC.

    Fin

    Algoritmo FACTORIAL// Algoritmo que calcula el factorial de un nmero naturalEntorno

    Entero NUM, FAC

    Fin_entornoInicioFAC = 1Escribir Introduce un nmero mayor que 1Leer NUMRepetir

    FAC = FAC * NUMNUM = NUM - 1

    Hasta NUM = 1visualizar NUM

    fin

    InicioEscribir Dame un n: Leer NUMFAC = 1Para I = 1 hasta NUM incremento 1

    FAC = FAC * IFin_paraEscribir El factorial es : ,FAC

    Fin

    InicioEscribir Dame un n: Leer NUMFAC = NUMPara I = NUM-1 hasta 1 decremento 1

    FAC = FAC * IFin_paraEscribir El factorial es: ,FAC

    Fin

  • 8/6/2019 Metodologa de la Programacin II

    17/33

    Unidad 2: Metodologa de la Programacin 17

    VARIABLES AUXILIARES DE UN ALGORITMO O PROGRAMA

    Son objetos que utiliza un algoritmo y que por la frecuencia con la que se utilizan dentro de unalgoritmo y por la funcin que realizan dentro del mismo toman un nombre especial: Contadores,acumuladores e interruptores

    Contadores.

    Un contador es una variable destinada a almacenar un valor que se ir incrementando odecrementando en una cantidad constante.

    Se suelen utilizar mucho en procesos repetitivos, para contabilizar el nmero de veces que serepite un conjunto de acciones o eventos, es decir en los cuerpos de las instrucciones repetitivas.Sobre un contador se realizan dos operaciones bsicas:

    Inicializacin:Todo contador se debe inicializar con un valor inicia (0, 1...)contador = Valor_Inicial

    IncrementoCada vez que aparezca el evento a contar se ha de incrementar o decrementar enuna cantidad fija (I, D respectivamente ) el valor del contador.contador = contador+ I;contador = contador- D;

    Ejemplo: Cuenta el nmeros de A's que un usuario introduce hasta finalizar con la pulsacin de un *

    INICIOcontadorAs = 0Escribir "Introduce un caracter"Leer letraMIENTRAS (letra "*") HACER

    SI letra = "A"entonces

    contadorAs = contadorAs + 1FIN SIEscribir "Introduce un caracter"leer letra

    FIN MIENTRASEscribir contadorAs

    Fin.

    Acumuladores

    Un acumulador o totalizador es una variable cuya misin es acumular cantidades sucesivasobtenidas al realizar la misma operacin. Realiza la misma funcin que un contador con la diferencia deque el incremento o decremento es variable en lugar de constante como en el caso del contador.

    El uso ms habitual de un acumulador es obtener sumas y productos. Al igual que con loscontadores, para poder utilizar un acumulador hay que realizar sobre ellos dos operaciones bsicas:Inicializacin: SumaTotal=0; ProductoFinal=1;

    Acumulacin:Una vez obtenido y almacenado en una variable la cantidad a acumular la aadimos a la variableacumulador :

  • 8/6/2019 Metodologa de la Programacin II

    18/33

    Unidad 2: Metodologa de la Programacin 18

    SumaTotal = SumaTotal + cantidad;ProductoFinal = ProductoFinal * cantidad;

    Ejemplo:

    Leer nmeros y muestra su suma hasta que el usuario pulse S para terminar

    INICIOSuma = 0Leer NmeroREPETIR

    Suma = Suma + NmeroMostrar Desea continuar (s/n):Leer Continuar

    HASTA ( Continuar = S)Mostrar El total es : Suma

    FIN

    Interruptores , conmutadores bandera o switches, flag, indicadores

    Un interruptor, conmutador, bandera o switch es una variable que puede tomar dos posiblesa lo largo de la ejecucin del programa. Los valores que toma son normalmente 1 o s (encendido/abierto)y 0 o no (apagado/cerrado) (de ah su nombre de interruptor). Se utilizan principalmente para:a) Recordar en un determinado lugar del programa la ocurrencia o no de un un suceso:

    Ejemplo: Algoritmo que lee una secuencia de notas (hasta que se introduzca el valor -1) , nos calcula lamedia y nos dice si hubo o no una nota con valor diez:Programa: Ejemplo de Conmutador 2

    ENTORNOReal notaLgico HaySobresaliente;

    INICIOHaySobresaliente = falso;REPETIR

    Escribir " Introduce una nota"Leer notaSI (nota = = 10)

    HaySobresaliente = verdaderoFIN SI

    HASTA (nota = -1)SI ( HAySobresaliente = verdadero)Entonces

    Escribir " Al menos hay una nota que es un 10" ;Sino

    Escribir " Ninguna nota ha sido un10";FINSI

    FIN

    b) Realizar de forma alternativa e independiente dos procesos alternativosEjemplo: Sumar por un lado los nmeros pares comprendidos entre 1 y100 y por otro los impares:

    Programa: Ejemplo de Conmutador 2ENTORNO

  • 8/6/2019 Metodologa de la Programacin II

    19/33

    Unidad 2: Metodologa de la Programacin 19

    Entero SumaPares SumaImpares, IBooleano Es_Par;

    INICIOSumaPares=0;

    SumaImpares=0;Es_Par=falso;PARA I=1 hasta 100 incremento 1

    SI (Es_Par = = falso )Entonces

    SumaImpares=SumaImpares+ I;Es_Par=verdadero

    FIN_SISI (Es_Par = = verdadero)Entonces

    SumaPares=SumaPares+ I;

    Es_Par=falso;FIN_SIFIN_PARAEscribir " La suma de los primeros 100 nmeros impares es:" SumaImparesEscribir " Y la de los primeros 100 nmeros ares es:" SumaImpares

    Fin

  • 8/6/2019 Metodologa de la Programacin II

    20/33

    Unidad 2: Metodologa de la Programacin 20

    DIAGRAMAS DE TRANSICIN DE ESTADOS

    Permiten definir los distintos estados por los que pasa un sistema en funcin de una serie de

    eventos, as como las operaciones que realiza.Elementos: Estados, Eventos, Operacin

    Estados:-Inicial-Intermedios-Final

    PROGRAMA : Autmata1Reconocer la secuencia AAA y termina

    ENTORNOTipoEstados = (INICIO,A1,A2,FIN)Carcter LetraTipoEstados Estado

    INICIOEstado = INICIOREPETIR

    Leer LetraSI (Letra = A)

    ENTONCESSEGUN EstadoINICIO : estado

  • 8/6/2019 Metodologa de la Programacin II

    21/33

    Unidad 2: Metodologa de la Programacin 21

    PROGRAMACIN CONVENCIONAL

    No est limitada por ninguna estructura de control, puede utilizar libremente la instruccin de

    salto. Implica poca claridad de los programas, difcil de entender y corregir, sin metodologa, losprogramas son obras de artesana, no de ingeniera.

    PROGRAMACIN ESTRUCTURADA

    Desarrollada a partir de los trabajos de E.W.Dijkstra:

    se puede realizar cualquier algoritmo con un conjunto limitado de estructuras de control y seconsidera la instruccin goto o salto incondicional perjudicial para la compresin de los programas.

    Los autores Bohm y Jacopini demostraros que cualquier programa propio se puede escribir empleando

    slo con tres tipos de estructuras bsicas de control.- La secuencia de instrucciones- La sentencia condicional- La sentencia repetitiva

    Para poder entender bien este teorema, vamos a introducir previamente dos conceptos queintervienen en su enunciado de una forma directa o indirecta.

    1) Denominamos programa propio, a aquel programa que cumple las siguientes condiciones:- Posee un solo principio y un solo fin.- Todo elemento del programa es accesible, es decir, existe al menos un camino desde

    el inicio al fin que pasa a travs de l.- El programa no posee bucles infinitos.2) Decimos que dos programas son equivalentes si realizan, ante cualquier situacin de datos, el mimotrabajo pero de distinta forma.

    Teniendo en cuenta estos dos conceptos, el Teorema de Bsico de la Programacin Estructura dice:

    Todo programa propio, realice el trabajo que realice, tiene siempre al menos un programa propioequivalente que slo utiliza las estructuras bsicas de control: Secuencial, Alternativa y Repetitiva, pararepresentar las distintas acciones que deben llevarse a cabo cuando se ejecute el programa.

    En definitiva, el teorema de estructura nos viene a decir que diseando programas con instrucciones

    primitivas (lectura, escritura y asignacin) y las estructuras de control bsicas anteriores, no slo podremos hacer cualquier trabajo sino que adems conseguiremos mejorar la creacin, lectura,comprensin y mantenimiento de los programas.

    Un programa estructurado se puede leer directamente de principio a fin, va tener un slo inicio yuna sola terminacin, utilizando exclusivamente los tres tipos de instrucciones de control.

  • 8/6/2019 Metodologa de la Programacin II

    22/33

    Unidad 2: Metodologa de la Programacin 22

    Diagramas Nassi-Shneiderman (Chapin) son una herramienta grfica que obliga a la programacinestructurada:

    Secuencia Mientras Hasta Si

    Segn Para

    Ejemplos. Elaborar el ordinogramas, Pseudocdigo y Diagramas N-S de los siguiente programas:

    1. Leer nmeros hasta que se introduzca el valor 0 calculando la media de los valores positivos

    2. Leer Letras hasta que se introduzca el valor * y calcular cuantas vocales se han introducido.

    PROGRAMA Media Positivos (1)ENTORNO

    Entero Suma, ContadorINICIO

    Suma

  • 8/6/2019 Metodologa de la Programacin II

    23/33

  • 8/6/2019 Metodologa de la Programacin II

    24/33

  • 8/6/2019 Metodologa de la Programacin II

    25/33

    Unidad 2: Metodologa de la Programacin 25

    ESTRUCTURA DE SUBPROGRAMA

    Un subprograma es un fragmento un programa que realiza una tarea concreta y que recibe unnombre por el que puede ser llamada o activada desde otra parte del programa. Son herramientas bsicasque hacen posible la programacin modular y siendo prcticamente indispensables en la programacinprofesional. Al concepto de subprograma se le denomina tambin subrutina, funcin, procedimiento omtodo.

    Ventajas del uso de subprogramas:

    - Evita la duplicacin de grupos de instrucciones en diferentes partes del algoritmo.- Facilita la construccin y compresin de los algoritmos, ya que dividimos el algoritmo en varias

    partes lo que permite la programacin modular

    - Cada subprograma es ms fcil de describir que el algoritmo completo- Facilita la reutilizacin de cdigo, la portabilidad y el trabajo en grupo.

    Una subprograma no suele utilizar las misma variables que el programa principal sino que define las sussuyas propias. Para comunicarse con el programa principal se utilizan una serie de variables decomunicacin denominadas argumentos o parmetros, que permiten el paso de informacin entre elprograma principal y el subprograma.

    SUBPROGRAMANombre ( TipoVariable Variable1 (Uso), Tipo Variable Variable2 (Uso) )CONSTANTES

    Tipo Constante Nombre = valor

    ......VARIABLES:Tipo Variable Nombre,......

    INICIO.......

    FIN-SUBPROGRAMA

    Entorno de un subprograma

    - Parmetros o argumentos del subprogramaTipos:- Entrada: Cuando el valor de la variable no se modifica durante la ejecucin del subprograma- Salida: Cuando el valor de la variable se modifica sin utilizar su valor inicial.- Entrada/ Salida: Cuando se utiliza el valor inicial de la variable y asignando un nuevo valor.

    - Variables y constantes propias del subprograma : A parte de los parmetros un procedimiento puedetener su propias variables (variables locales) distintas de las del programa principal.

    En algunos casos, aunque generalmente no es un buen mtodo de programacin, un subprograma

    puede acceder a las variables del programa principal (variables globales) para realizar algn tipo de

    tarea, sin embargo casi siempre es preferible acceder a dichos valores mediante el paso de parmetros.

  • 8/6/2019 Metodologa de la Programacin II

    26/33

    Unidad 2: Metodologa de la Programacin 26

    Invocacin o llamada de un subprograma.Para que un subprograma se ejecute debe ser llamado por el programa principal o por otro

    subprograma, esto se realiza como otra instruccin cualquiera, indicando que valores o variablesqueremos incluir en su parmetros.

    INICIO...NombreSubprograma ( Parmetros )..FIN

    Ejemplo:SUBPROGRAMA CalcularSuma (Entero ValorUno (E) ,Entero ValorDos (E) ,Entero Resultado (S) )INICIO

    Resultado = ValorUno + ValorDosFIN-SUBPROGRAMA

    PROGRAMA HacerAlgoVariables

    Entero Dato, Valorfinal....

    INICIO...CalcularSuma ( Dato, 123, Valorfinal);....FIN

    PARMETROS DE UN SUBPROGRAMA

    Parmetros formales: Son los parmetros tal como se declaran en la definicin del subprograma:(Entero ValorUno (E) ,Entero ValorDos ,Entero Resultado (S) )

    Parmetros reales: Son los parmetros tal como se rellenan en la llamada al subprograma:( Dato, 123, Valorfinal);

    Para que una llamada a un subprograma sea correcta, deben coincidir el tipo y el nmero de losparmetros reales con el tipo y nmero de los parmetros formales.Ej.- Tres parmetros de tipo entero.

    Cuando un parmetro formal es de entrada, el parmetro real puede ser una variable, un valor oexpresin del mismo tipo que el definido en el parmetro formal. Cuando una parmetro formal es desalida o entrada-salida, el parmetro real forzosamente tiene que ser una variable del mismo tipo que el parmetros formal, donde el subprograma pueda dejar los resultados. Ej.- El primer y segundoparmetros pueden ser variables (Dato) o valores(123) pero el tercer parmetro al ser de salida, debeser forzosamente una variable definida en el programa principal(Valorfinal).

    La realizacin de llamada a un subprograma se realiza gracias una estructura de control del procesadordenominada pila de ejecucin, donde se guarda la direccin de retorno al programa principal y losparmetros reales de la funcin. El paso de los parmetros entre el programa principal y el subprogramatambin se realiza mediante esta pila. Cuando pasamos el valor de una variable o expresin se dice quees un parmetro por valor o copia. Cuando pasamos la direccin de una variable se dice que es unparmetro por referencia. Cuando trabajamos con parmetros de salida o entrada y salida el pasosiempre debe ser por referencia. Para poder modificar el valor de la variable del programa principal.

  • 8/6/2019 Metodologa de la Programacin II

    27/33

    Unidad 2: Metodologa de la Programacin 27Tipos de subprogramas:

    - Un procedimiento es un subprograma que realiza operaciones sobre los parmetros que pueden serde entrada, de salida o de entrada-salida.

    - Una funcin es un subprograma que devuelve un nico valor del resultado a partir de operacionescon los parmetros que en principio sern exclusivamente de entrada. Una funcin incluye unainstruccin especial denominada RETURN ( Retorno) donde se devuelve al programa principal elvalor calculado por la funcin.

    FUNCION CalcularSuma ( Entero ValorUno(E), Entero ValorDos(E) ) RESULTADO EnteroVariables

    Entero ResultadosumaInicio

    Resultadosuma = ValorUno + ValorDosRETURN Resultadosuma

    Fin

    ...Valorfinal = CalcularSuma ( Dato, 123 )

    ....

    FUNCION CalcularProducto ( Entero N1 (E), Entero N2 (E) ) RESULTADO EnteroVariables

    Entero Contador, AcumuladorInicio

    Contador = 0Acumulador = 0

    PARA Contador = 1 HASTA N2 INCREMENTO 1Acumulador = Acumulador + N1

    FINPARARETURN Acumulador

    Fin

    Ejemplo de definicin de funciones:

    PROCEDIMIENTO VerTablaDeMultiplicar ( Entero Numero(E) )FUNCION CalcularProducto ( Entero N1 (E), Entero N2 (E) ) RESULTADO EnteroFUNCION PrimerDivisor ( Entero N1 (E) ) RESULTADO EnteroPROCEDIMIENTO ConvertirAMayusculas ( Carcter Letra (E/S) )

    FUNCION HayMasDatos ( TipoAlmacen AlmacenPrincipal ) RESULTADO Lgico

    En el lenguaje C, no hay grandes diferencias entre funciones y procedimientos, es el programador

    quien determina como va a comportarse el subprograma.

  • 8/6/2019 Metodologa de la Programacin II

    28/33

    Unidad 2: Metodologa de la Programacin 28EJEMPLO DE PROGRAMACIN MODULAR:Elaborar un programa que calcule el total de una factura segn las siguientes reglas

    - Primero se leern el precio de tres artculos : Precio A, Precio B, Precio C, Si alguno precio esmenor o igual a cero se solicitar de nuevo al usuario.

    - Se leern las unidades compradas de cada uno de los artculos: unidades A, unidades B,unidades C, las unidades deben ser mayor o igual a cero.- Se Muestra el importe de unidades x precio salvo sin las unidades son igual a 0- Se Muestra el importe Bruto- Se aplica un descuento mximo del 10% si importe bruto supera las 10.000 o si adquiere como

    mnimo un artculo de cada tipo .- Se Muestra el importe del descuento si existe- Se Muestra el importe de la factura- Se Muestra el importe final de la factura aplicando un 14% de IVA

    Ejemplo de Ejecucin:

    Precio A: 1200Precio B: 0Precio B: 500Precio C: 1000Unidades de A: 2Unidades de B: 0Unidades de C:10

    FACTURA.Unidades de A 2 x 1200 ............ 2.400Unidades de C 10 x 1000 .............10.000Importe Bruto 12.400

    Descuento 10% 1.240Importe Total 11.160IVA 14 % 1.562IMPORTE TOTAL FACTURA 12.722 Pts

    RESOLUCIN:-------- PRIMERA APROXIMACIN ----------Con recursos abstractos

    PROGRAMA Calcular facturaENTORNO

    Lista de PreciosLista de ArtculosImportes

    INICIOLeerPreciosLeerUnidadesMostrar Precios x Unidades()Mostrar Importes Descuentos y Iva

    FIN

    -------- PROGRAMA PRINCIPAL -------------PROGRAMA Mostrar la facturaENTORNOEntero UnidadesA, UnidadesB, UnidadesCEntero PrecioA, PrecioB, PrecioC

    Entero Importe, Descuento, IVA

    INICIOLeerPrecio(PrecioA,'A');LeerPrecio(PrecioB,'B');LeerPrecio(PrecioC,'C');LeerUnidades(UnidadesA,'A');LeerUnidades(UnidadesB,'B');LeerUnidades(UnidadesC,'C');MostrarPxU(PrecioA,UnidadesA,'A');MostrarPxU(PrecioB,UnidadesB,'B');

    MostrarPxU(PrecioC,UnidadesC,'C');CalcularMostrarImportes()FIN-PROGRAMA

  • 8/6/2019 Metodologa de la Programacin II

    29/33

    Unidad 2: Metodologa de la Programacin 29

    -------- SUBPROGRAMAS ---------------------

    PROCEDIMIENTO LeerPrecio (Entero Precio (S) , carcter Tipo (E))INICIO

    Mostrar "Introduzca el precio para el articulo ",TipoLeer PrecioMIENTRAS (Precio 0 )ENTONCES

    Mostrar "Unidades de", Tipo,Unidades,'X',Precio, '....', Unidades * PrecioFINSIFIN-MostarUxP

    PROCEDIMIENTO CalcularMostrarImportes ( )INICIO

    Importe = (PrecioA*UnidadesA)+ (PrecioB*UnidadesB) + (PrecioC*UnidadesC)Mostrar "Importe Bruto ", ImporteSI ( Importe >= 10000) OR

    ( (UnidadesA >0 ) AND (UnidadesB > 0) AND (UnidadesC > 0) )ENTONCES

    Descuento = Importe * 0.10Mostar " Descuento 10 % ", DescuentoImporte = Importe - DescuentoMostar " Importe Total ", Importe

    FIN-SIIVA = Importe * 0.14Mostrar " IVA 14 % ", IVAImporte = Importe + IVAMostrar " IMPORTE TOTAL FACTURA ", Importe

    FIN-CalcularMostrarImportes

  • 8/6/2019 Metodologa de la Programacin II

    30/33

    Unidad 2: Metodologa de la Programacin 30

    Ejercicios de modularidad:

    1.- Escribir un programa con diseo modular que utilice un procedimiento que intercambia los valores en memoria de dos

    variables numricas reales.2.- Escribir un programa con diseo modular que introduce por teclado dos nmeros y presenta una serie de opcionescorrespondientes a operaciones aritmticas a realizar con los mismos (suma, resta, multiplicacin, divisin y divisin ). Enfuncin a la opcin elegida se llama a la funcin correspondiente que retorna el resultado de dicha operacin para que lavisualice el programa principal. Una vez realizada la primera operacin se le pregunta al usuario si quiere seguir realizandomas operaciones. En caso afirmativo se le volver a visualizar el men con las operaciones y en caso negativo se finalizar el

    programa.

    3.- Escribir una funcin booleana llamada Digito que determine si un carcter es uno de los dgitos del 0 al 9.

    4.-Escribir una funcin que calcule y retorne el nmero de das que faltan hasta final de ao, a partir de una determinadafecha (dia mes ao) y teniendo en cuenta si el ao es bisiesto.(NOTA: un ao es bisiesto, si es mltiplo de 4, excepto aquellos que sindolo, sean mltiplos de 100 pero no de 400. Ej.2000 es bisiesto, 1900 no lo es, ya que aunque es mltiplo de 4, lo es de 100 pero no de 400)

    5.- Disear un programa modular que determine los nmeros menores que N, que sean primos y se puedan expresar comosuma de otros dos nmeros primos inferiores.

    6.- Dos nmeros son amigos si cada uno de ellos es igual a la suma de los divisores del otro ( no consideramos divisor elpropio nmero). Como por ejemplo el 220 y el 284 (que son amigos):284 => divisores 1 + 2 + 4 + 71 + 142 = 220220 => divisores 1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284Se introduce un n por teclado. Obtener los nmeros amigos inferiores a l.

    Recursividad

    Cuando un procedimiento o funcin se llama o se invoca a si mismo para la realizacin de algunatarea se dice que es recursivo. La recursividad es muy til para tratar con estructura recursivas (Ej-rboles) o con determinados problemas como aquellos que necesitan aplicar tcnicas de backtracking(vuelta a tras).

    En todo subprograma recursivo debe existir una condicin que provoque la terminacin de la mismapara que no exista una recursividad infinita.

    Ejemplos:

    1.- Clculo del factorial mediante una funcin recursiva

    N! = N * N-1 * N-2 . 1En forma recursiva:

    N! = N * (N-1)!Si N = 0 el factorial es 1

    FUNCION Factorial ( Entero Numero (E) ) RESULTADO EnteroINICIO

    SI ( Numero = 0 )RETURN 1

    SI NORETURN Numero * Factorial ( Numero 1)

    FINSIFIN

  • 8/6/2019 Metodologa de la Programacin II

    31/33

    Unidad 2: Metodologa de la Programacin 31

    2.- Clculo del producto mediante sumas utilizando la recursividad

    FUNCION Producto ( Entero N1 (E), Entero N2 ) RESULTADO EnteroINICIO

    SI ( N2 = 0 )RETURN 0

    SINORETURN N1 + Producto ( N1, N2 1 )

    FINSIFIN

    Las funciones recursivas consumen memoria del ordenador (Pila) cada vez que se llaman a si mismas,siendo generalmente ms lentas de ejecucin que una versin iterativa, sin embargo, algunas vecesofrecen la solucin ms sencilla y rpida a un problema.Existen lenguajes que slo trabajan con recursividad para realizar los ciclos: Lenguajes de Inteligenciaartificial como Lisp o PROLOG.

    Ejercicios:

    1.- Elaborar una funcin recursiva que datos nmeros N y M, ambos enteros, me calcule la potencia deN elevado a M.

    FUNCION Potencia ( Entero N, Entero N ) Devuelve EnteroINICIO

    SI ( M = 0)RETURN 1

    SINORETURN N * Potencia (N, M-1)

    FIN-SIFIN-FUNCION

    2.- Programa una funcin recursiva que permita calcular el elemento N de la serie de Fibonacci:Valores de la serie:

    1, 1 ,2 ,3 ,5 ,8 ,13 ,21 ,34 ,

    Fib(n) = Fib(n-1) + Fib(n-2). El elemento n es la suma de los dos anteriores:Fib(1) = 0 y Fib(0) = 1 Los dos primeros elementos de la serie tienen el valor 1.

    FUNCION Fibonacci ( Entero N) Devuelve EnteroINICIO

    SI (( N = 0) OR ( N = 1 ))RETURN 1

    SINORETURN Fibonacci(N-1) + Fibonacci(N-2)

    FIN-SIFIN-FUNCION

  • 8/6/2019 Metodologa de la Programacin II

    32/33

    Unidad 2: Metodologa de la Programacin 32

    Ejemplo de algoritmo de vuelta a tras.

    Teseo, el hroe griego, acaba de vencer al minotauro. Para salir del laberinto tiene que aplicar algnalgoritmo que le permita buscar la salida. Gracias a Ariadna, hija del rey Minos y enamorada de nuestro

    hroe, Teseo dispone de un hilo que le sirve para marcar los lugares que ha visitado. Esto le evitarperderse.

    El laberinto es una tabla de N x N posiciones con los siguientes valores: Muro: Lugar donde no podemos avanzar. Libre: Lugar donde podemos movernos Salida: La salida del laberinto Visitado: Lugar libre que ya hemos visitado

    FUNCION HaySalida ( Entero x, Entero y ) Devuelve LgicoINICIO

    SI ( Laberinto [x , y ] = Salida )Return CIERTO

    SINOSI ( Laberinto [ x, y ] = Muro ) OR ( Laberinto[ x, y ] = Visitado )

    Return FalsoSINO

    Laberinto [ x, y ] = VisitadoReturn Haysalida ( x +1, y ) OR Haysalida ( x -1, y )

    Haysalida ( x, y +1 ) OR Haysalida (x, y -1 )FIN-SI

    FIN-SI

    FIN-FUNCION

    Explicacin:Si estoy en la salida devuelvo verdadero, si me encuentro con un muro o una posicin que ya he

    visitado devuelvo falso, sino, estoy en una posicin libre, la marco como visitada y busco si hay salida

    al norte, sur, este y oeste de la posicin actual.

  • 8/6/2019 Metodologa de la Programacin II

    33/33

    Unidad 2: Metodologa de la Programacin 33

    TABLAS DE DECISIN

    Las tablas de decisin son una herramienta de diseo que permite expresar de forma detallada

    como a partir de un conjunto complejo de condiciones se toman las distintas acciones. Aunque es unaherramienta relativamente antigua, ya que surge a inicios de la dcada de los sesenta, mantiene suutilidad siendo un mtodo muy eficaz a la hora de solucionar determinados problemas.

    Estructura

    Matriz de condiciones, Entrada de condicionesMatriz de acciones, Entrada de acciones

    Condicin 1 S S S S N N N NCondicin 2 S S N N S S N N

    Condicin 3 S N S N S N S NAccin 1 xAccin 2 xAccin 3 x x x x xAccin N x x

    Una vez construida la tabla de verdad completa, existen una serie de mtodos para simplificarla queconsisten en eliminar aquellas condiciones que son indiferentes a la hora de realizar una accin. Los msutilizados son la llamada regla del paraguas y los mapas de Karnaugh.

    Una vez simplificada, podemos construir el programa en base a una serie de sentencias condicionalesencadenadas. Para obtener el algoritmo ms eficaz, se comenzar a evaluar por la condicin que tienemenos indifencias, es decir que es ms determinante a la hora de elegir las acciones a realizar.

    Consultar ejemplos y ejercicios.