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