You are on page 1of 34

DISEO DE ALGORITMOS. TECNICAS DESCRIPTIVAS 1.

- INTRODUCCION Para resolver un problema por medio de un ordenador se pueden sealar 2 fases: Fase de resolucin del problema Fase de Implementacin en un lenguaje de `programacin 1.1.- Fase de resolucin del problema: Incluye Analisis del Problema: Trata de encontrar la solucin al problema, para ello debe examinarse cuidadosamente el problema, determinar los datos de entrada y resultados que deben obtenerse

Diseo del Algoritmo: Definicion: Es el conjunto de acciones ordenadas que deben realizarse para la resolucin del problema, facilitando as su posterior traduccin al lenguaje de programacin. El diseo de un algoritmo debe comenzar por identificar las tareas ms importantes para resolver el problema y disponerlas en el orden en el que han de ser ejecutadas

En un algoritmo se deben considerar 3 partes - Entrada.- Informacin dada al algoritmo - Proceso.- Operaciones o clculos necesarios para encontrar la solucin delproblema - Salida.- Respuestas dadas por el algoritmo o resultados finales de los calculos Verificacin del Algoritmo: Una vez terminado el algoritmoes necesario comprobar que realiza las tareas para las que se ha diseado y da el resultado correcto. Para ello debe realizarse una ejecucin manual usando datos que abarquen todo el rango de valores y anotando las modificaciones que se producen en las diferentes etapas para la obtencin de los resultados.

1.2.- Fase de implementacin: Despus de diseado y verificado el algoritmo se pasa a la fase de codificacin (traduccin del algoritmo a un lenguaje de programacin) que debe completarse con la ejecucin y comprobacin del programa en el ordenador La diferencia entre algoritmo y programa es que este ltimo es el conjunto de instrucciones en un lenguaje determinado que define un algoritmo

2.- CARACTERSTICAS DE LOS ALGORITMOS


Conciso y Detallado.- debe reflejar con el mximo detalle el orden de ejecucin de cada accin u operacin que se vaya a realizar Finito o Limitado.- todo algoritmo debe tener un comienzo y un final Exacto o preciso.- si se aplican <n> veces los mismos datos de entrada deben obtenerse los mismos resultados o datos de salida. Flexible.- debe adaptarse con facilidad a cualquier lenguaje de programacin pero independiente de cualquier lenguaje de programacin Amigable y entendible.- debe facilitar que se entienda as como su traduccin y las futuras modificaciones o actualizaciones que sobre l sean necesarios realizar.

El diseo de algoritmos se realiza en sucesivas etapas de refinamiento sucesivo. Yendo de lo general a loparticular, lo que se denomina metodo descendente (top-down)

3.- COMPONENTES: 3.1.- DATOS: Son los objetos con los cuales opera el algoritmo p.ej. Nombre, Apellido, Edad etc.. Se caracterizan porque llevan asociados:

Identificador.- Nombre que sirve para referenciarlos Tipo.- rango de valores en funcin de una clasificacin y que determina el espacio de memoria que hay que reservar, es decir a que clase pertenece el dato Valor.- un elemento determinado dentro del rango de valores segn el tipo y que estar en MP

Un Identificador es el nombre que se da a los datos (constantes, variables) y que utiliza el programador para referenciarlos Reglas para construirlos: - Su nombre debe estar relacionado con la informacin que contiene - No debe coincidir con palabras reservadas del lenguaje algoritmico - Debe comenzar con un carcter alfabetico, lo siguiente puede ser letra o digito o simbolo de subrayado - Puede estar en maysculas o minsculas - No debe contener espacios en blanco

TIPOS DE DATOS: SIMPLES

Numrico: sirve para contener magnitudes sobre los que se pueden realizar operaciones aritmticas como sumas, productos, etc., se pueden representar de 2 formas Entero: subconjunto finito de n enteros cuyo rango depender del lenguaje en que posteriormente se codifique el algiritmo. Ej. -2, -1000, 0, 1, 2, 3 normalmente 1 entero ==> 2bytes ; -32768 al 32767 (216=65536 represtaciones) Real: subconjunto de los n reales limitado en cuanto al tamao y la precisin. Se puede expresar en punto decimal o en notacin cientifica o exponencial. Ej.: 1, 3.141516, -12.45 ...... Lgico: Conjunto formado por los valores Verdadero (V) o Falso (F). Ej.: SOLTERO => {V, F} {1,0}
Carcter: Conjunto finito y ordenado de los caracteres que el ordenador reconoce segn un determinado cdigo (ej: ASCII , que se clasifican en tres grupos: caracteres alfabticos ('A'...'Z'; 'a'...'z' 'b'); dgitos numricos ('0'...'9') caracteres especiales:('+' '-' '*' '.' ';' '<' '>' ,....) Ej.: VOCAL = `a`)

Cadena (string): Serie finita de caracteres que se encuentran delimitados por unas comillas dobles, para diferenciarlas de los nombres de las variables y constantes. Ej.: "HOLA MUNDO", "22 de octubre de 2001" La longitud de una cadena de caracteres viene determinada por el nmero de caracteres que hay comprendidos entre los dos smbolos de comillas incluidos los espacios en blanco. Ej.: "Hola, que tal" -> longitud del string 13. Mi mama me mima mucho -> longitud del string 21. "12345.73" -> longitud del string 8. Estos tipos estn predefinidos en la mayora de los lenguajes de programacin. El programador puede definir sus propios tipos ESTRUCTURADOS Los tipos de datos compuestos o estructurados los iremos viendo a medida que vayamos avanzando. Se trata de datos complejos que se forman por composicin de otros datos simples. Podemos citar inicialmente: conjuntos, arrays (vectores y tablas), registros, listas, pilas, colas, etc.

OBJETOS DE UN PROGRAMA / ALGORITMO CONSTANTES: Son datos cuyo valor se establece al inicio y no cambia durante todo el desarrollo del algoritmo. Puede ser de cualquier tipo VARIABLES: Son datos cuyo valor puede cambiar durante la ejecucin del algoritmo. Se define por su identificador y un tipo de dato.

Contadores: Variable cuyo valor se incrementa o decrementa en una cantidad constante cada vez que se produce un determinado suceso o accin. Ej: en estructura repetitiva Acumuladores: Variable cuyo valor se incrementa o decrementa en una cantidad variable, necesita inicializarse Interruptores, o switch: Variable que toma los valores verdadero o falso

3.2.- OPERADORES: Son smbolos que sirven para conectar los datos haciendo diversas clases de operaciones TIPOS DE OPERADORES: a) Parentesis: ( ) b) Operadores aritmticos: Los operadores aritmticos que se utilizan son: ^ ** (potencia) Ej.: 3^4=81 * (producto) Ej.: 67*2=134 / (divisin) Ej.: 6/3=4 (En C,/ es para R y Z div ( divisin entera) Ej.: 5div3=1 Z/Z => div) mod (resto de una divisin) Ej.: 5mod3=2 (En C : %) + (suma ) Ej.: 12+4=16 (resta). Ej.: 1-2= -1 b) Operador alfanumrico: &+ Operador de concatenacin (unin): -Concatena eliminando blancos: Ej.: String C, D, E ; C = "Hola y " D = "Adis" E = C & D (El valor de E = "Hola y adis") c) Operadores relacionales y lgicos: i)Los operadores lgicos son: not and or A V F no, negacin y lgico o interseccin o lgico o unin !A F V (En C es ! ) (En C es &&) (En C es || )

Siendo A una expresin booleana.

A F F V V

B F V F V

A and B F F F V

Siendo A y B expresiones booleanas.

ii)Los operadores relacionales

son :

A F F V V > >= < <= = <>

B A or B F F V V F V V V mayor mayor o igual menor menor o igual igual distinto

Siendo A y B expresiones booleanas.

Ej.: X=7 Ej.: 6mod3<>0

(En C es = =) (En C es !=)

permiten realizar comparaciones de valores asociados a los tipos numricos, de tipo carcter, de tipo string y de tipo booleano. El resultado que se obtiene al aplicar un operador de relacin, es verdadero o falso. En el caso de valores numricos , el orden que se tiene en cuenta a la hora de evaluar un operador relacional es el de los propios valores, as: 3<-2 es falso, 5.6 <7.9 es verdadero, 4=9 es falso, 4.67=4.67 es verdadero, etc. En el caso de los caracteres , el orden que se tiene en cuenta a la hora de evaluar un operador relacional es el que proporciona el propio cdigo ASCII, en el que: 1.) Los nmeros del cero al nueve tienen su orden natural. '0' < '1' < '2' ... < '8' < '9' 2.) Las letras maysculas de la 'A' a la 'Z' en orden alfabtico. '9' < 'A' < 'B' < 'C' ... < 'Y' < 'Z' 3.) Las letras minsculas de la 'a' a la 'z' en orden descendente. 'Z' < 'a' < 'b' < 'c' ... < 'y' < 'z' '1'<'2' es verdadero, 'A'<'B' es verdadero, 'a'<'g' es verdadero, etc. En el caso de valores booleanos, el orden que se tiene en cuenta a la hora de evaluar un operador relacional es considerar que falso < verdadero as si tenemos: Boolean A, B A=verdadero B=falso A< B es falso

B<A es verdadero. Funciones Internas Adems de utilizar los operadores para realizar operaciones sobre los datos de un algoritmo, en numerosas ocasiones, es necesario utilizar unos operadores especiales, llamados funciones internas, y que se pueden utilizar sin necesidad de definirlos. Entre estas funciones internas predefinidas estn por ejemplo: abs(x) => valor absoluto sen(x) => seno, cos(x) => coseno, ... (En C: sin(x),....) raiz2(x) => raz cuadrada (En C : sqr(x)) exp(x) => e elevado a x ent(x) => parte entera ln(x) => logaritmo neperiano etc. 3.3.- EXPRESIONES: Son un conjunto de datos (operandos) y operadores con unaa reglas especificas de construccin. Los operandos pueden ser valores retornados por funciones, constantes, varibles, otras expresiones. En la obtencin del resultado se debe tener en cuenta el orden de prioridad de los operandos Una expresin es el clculo necesario para la obtencin de un resultado. Una expresin se puede definir de alguna de las siguientes maneras: i) Un valor es una expresin: Ej.: 12, 1.23, "Antonio", 'd', verdadero ii) Una variable o una constante es una expresin: Ej.: Dia_Semana, A, pi iii) Una funcin interna es una expresin: Ej.: sen(pi) iv) Cualquier combinacin vlida de operadores, constantes, variables y/o funciones internas, as por ejemplo sern expresiones las siguientes: Ej.: cos(pi*x)+9 'f'<'d' "Juan y Pedro" Cada expresin toma un valor que se determina evaluando cada una de las constantes, variables y funciones internas implicadas y realizando las operaciones indicadas, en la misma. Segn el tipo al que pertenece el resultado obtenido tras evaluar una expresin, stas se pueden clasificar en: Numricas Son las que producen un resultado numrico y se construyen mediante los operadores aritmticos y operando numericos. Ej.: (3+4)^3/5 Alfanumricas: Son las que producen un resultado de tipo alfanumrico y se construyen mediante el operador alfanumrico operandos alfanumericos. Ej.: Blanco & y & Negro

Booleanas: Son las que producen un resultado Booleano (verdadero o falso) y se construyen mediante los operadores relacionales y lgicos, los operndos deben ser del mismo tipo . Ej.: (3=6/2) and (respuesta=s) Como en una expresin puede aparecer ms de un operador, para calcular el valor de la misma es necesario establecer unas reglas de prioridad que permitan decidir qu operador se aplica primero. Estas reglas son las siguientes : 1.- Las expresiones encerradas entre parntesis se evalan primero. Si existen varios parntesis anidados los internos se evalan primero. 2.- El operador - unitario (que cambia de signo) 3.- Potencia 4.- Productos y divisiones 5.- Sumas y restas 6.- Concatenacin. 7.- Relacionales. 8.- Negacin not 9.- Conjuncin (operador &&) and 10.- Disyuncin (operador ||) or La evaluacin de operadores de igual prioridad en orden siempre se realiza de izquierda a derecha. Un parntesis, siempre nos sirve para dar prioridad a una operacin. Por tanto siempre que dudemos, es conveniente usar parntesis, ya que stos siempre servirn para asegurarnos ante la duda, de que se realiza una operacin antes que otra, segn nuestras necesidades. Ejemplo: ((3+2)^2-15)/2*5= (5^2-15)/2*5 = (25-15)/2*5 = 10/2*5 = 5*5 = 25 Evaluar a.) 3+6*14, Solucin: b.) (-4*7)+2^3/4-5 c.)8/8*2 c.) 1.)8/8=1 2.)1*2=2 no hacer: 1.)8*2=16 2.)1/16=00625

a.) 1.) 6*14=84 2.) 3+84=87

b.) 1.) -4*7= -28 2.) 2^3=8 3..) 8/4=2 4.) -28+2= -26 5.) -26-5= -31

3.1.1.1.1

INSTRUCCIONES

Una Instruccin puede ser considerada como un hecho que genera unos cambios previstos en la ejecucin de un programa.

Toda instruccin se caracteriza por tener una duracin limitada, donde el inicio y final de la misma viene delimitada por el final de la anterior y el comienzo de la siguiente. Segn la funcin que desempean dentro de un programa las instrucciones se clasifican en:

Instrucciones de Declaraccin.- Consiste en indicar la utilizacin de un objeto al que se har referencia mediante un nombre o identificador y que ser del tipo indicado, a travs del cual se informa al procesador de las caractersticas y espacio que deber reservar en memoria. Ej: Nombre : char[20]

Instrucciones Primitivas.- Son las que ejecuta el procesador de modo inmediato Instruccin de ENTRADA: son las que se encargan de recoger uno o varios datos de los dispositivos de entrada ( ej: teclado) y almacenarlos en MP en los objetos (varibles) cuyo identificados aparece en la instruccin. Si estos objetos tuvieran algn valor previo se perderia Ej: Leer Nombre Instruccin de ASIGNACIN.- Consiste en almacenar en un objeto el valor de otro objeto o el resultado de evaluar una expresin. Teniendo en cuenta que el objeto al que se le realiza la asignacin deber ser del mismo tipo que el valor que se obtiene en la parte derecha de la instruccin o que haya la posibilidad de convertirlo. Hay compiladores que esta conversin la realizan automaticamente. Se representa con el smbolo = o . Al igual que las instrucciones de entrada y de salida, las instrucciones de asignacin se realizan de forma secuencial. El formato general es: nombre de variable = expresin o tambin nombre de variable expresin A = 5 A5 (el valor de la variable A es 5) La accin de asignar es destructiva, ya que el valor que tuviera la variable antes de la asignacin se pierde y se reemplaza por el nuevo valor: 1.) A = 5 2.) A = 7 3.) A = 33 el ltimo valor que tomar A es 33, ya que los valores 5 y 7 se perdern.

En caso de asignar a una variable una expresin compleja, se evala en primer lugar la expresin y ese valor es el asignado a la variable en cuestin: A = 8/4+1...... A vale3. Es posible utilizar el mismo nombre de variable a ambos lados de la asignacin, as, acciones como: N = N+1, tienen sentido, y el valor que tomara N despus de la asignacin es una unidad mayor al que tena antes de la asignacin.(no se trata de una ecuacin matemtica: N nunca podra ser igual a N+1, sino de una asignacin N vale lo que vala antes ms uno).

Ejemplo: 1.) A = 12 2.) A = A/2 (A toma el valor 6) Una asignacin puede ser aritmtica (A = 3), lgica (PAR= F), carcter (vocal =`e`) o cadena (nombre="Pedro"). A una variable no se le pueden asignar valores de distinto tipo del que fue definida dicha variable, ya que en ese caso estamos cometiendo un error de tipo. Ej.: entero x, y, z z=x/y //No siempre el cociente de dos enteros es entero Instruccin de SALIDA.- Consiste en enviar datos a un dispositivo externo (ej: pantalla) desde los objetos depositados en MP o resultado de la evaluacin de expresiones Ej: Escribir Nombre

Instrucciones de Control.- Evalan expresiones, generalmente lgicas, con el objetivo de controlar la ejecucin de otras instrucciones o alterar el orden de ejecucin normal de las instrucciones de un programa. Existen dos grandes grupos de instrucciones de control: Instrucciones alternativas o decisiones Son aquellas que controlan la realizacin de uno o varios bloques de instrucciones, dependiendo del cumplimiento o no de alguna condicin o del valor final de una expresin. Una decisin permite por tanto romper la secuencia del algoritmo. ALTERNATIVA SIMPLE: controla si se ejecuta un conjunto de instrucciones o no dependiendo de si se cumple una condicin ALTERNATIVA DOBLE: ALTERNATIVA MULTIPLE:

Instrucciones repetitivas Son las que controlan la ejecucin de un conjunto o bloque de instrucciones mediante la evaluacin de una condicin que se realiza cada nueva repeticin.

MIENTRAS (WHILE) REPETIRHASTA (REPEAT-UNTIL) PARA (FOR) Instrucciones de ruptura de secuenca Rompen la secuencia normal del programa perdiendo la posibilidad de volver al punto de llamada DE SALTO INCONDICIONAL: salta a una etiqueta ej: GOTO ETIQUETA DE SALTO CONDICIONAL: salta a una etiqueta si se cumple una condicin ej: GOTO ETIQUETA

Instrucciones Compuestas.- Son aquellas instrucciones que no pueden ser ejecutadas directamente por el procesador y estn constituidas por un bloque de instrucciones agrupadas en subrutinas, subprogramas, funciones o mdulos SUBPROGRMAS O MODULOS Una subrutina es un fragmento del programa que realiza una tarea concreta y recibe un nombre por el que puede ser llamada o activada desde otra parte del algoritmo. Una subrutina puede tener una serie de variables de comunicacin denominados parametros, que permiten el paso de informacin entre el algoritmo y la subrutina. El uso de subrutinas: -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 de forma que: - Cada una de ellas es ms fcil de describir que el algoritmo completo - Cada una de ellas de forma individual realiza una funcin concreta y todas juntas resuelven el problema planteado inicialmente. Podemos indicar que existen dos tipos de subrutinas: los procedimientos y las funciones. stas se diferencian esencialmente de aquellos, en que retornan algn resultado o valor de salida.

Comentarios.- Frases que se incluyen en los programas para aclarar lo que hacen las instrucciones.

4 .- TECNICAS DESCRICTIVAS: para el diseo de algoritmos se utilizan varias tcnicas de representacin ( Diagramas de Flujo y Pseudocodigo)

DIAGRAMAS DE FLUJO: (Organigramas, Ordinogramas)

CARACTERISITCAS del diseo de algoritmos Independiente del lenguaje de programacin elegido para su posterior codificacin Normalizado para facilitar el intercambio de documentacin entre el personal informatico (programadores, analistas) exisaten normas dictadas por algunas organizaciones como la ISO y ANSI Debe ser Intuitivo es decir lo mas claro y sencillo posible para facilitar su comprensin No debe ser rgido sino flesible permitiendo futuras modificaciones o actualizaciones

TIPOS
i. ii.

Organigramas o Diagramas de flujo del sistema Ordinogramas o Diagramas de flujo de proceso

Organigramas. Representan el flujo de datos entre los soportes externos (E/S) y el programa. Normas para representar organigramas: En la parte superior del diseo deben figurar los soportes de entrada, donde est la informacin antes de procesar En el centro estar el proceso sin desarrollar. En la parte inferior debajo del proceso estarn los soportes de salida donde estara la informacin despues del proceso A la izquierda y derecha del proceso figuraran los soportes de E/S

Smbolos: SOPORTE

ENTRADA Teclado SALIDA Pantalla Impresora

E/S Disco mag. Disco flex.

PROCESO Proceso LINEAS DE FLUJO DE DATOS Flujo

Ej.: Los alumnos de un centro han de distribuirse en grupos y se introducen por teclado, cada grupo formado se guardar en un disco flexible. Se sacar un listado de los alumnos de 4 curso por pantalla y los de 3 por impresora.

Entrada datos

Proceso ordenaci n
Alumnos 3

Alum nos 4

Alumnos

Ordinogramas. Son representaciones graficas del algoritmo que muestran la secuencia lgica y detallada de las operaciones que se van a realizar en la ejecucin de un programa

El diseo de un ordinograma debe ser totalmente independiente del lenguaje de programacin utilizado en la codificacin del algoritmo Un ordinograma est compuesto por una serie de smbolos unidos por flechas. Los smbolos, representan acciones y las flechas el orden de realizacin de las acciones. Cada smbolo por tanto tendr al menos una flecha que conduzca a l y otra que parta de l. Los principales smbolos que se utilizan en un ordinograma se pueden agrupar en las siguientes categoras a) Smbolos de proceso b) Smbolos de decisin c) Lneas de flujo d) Smbolos de conexin e) Smbolos de comentarios a) Smbolos de proceso SIMBOLOS
INICIO

FUNCIN Terminal o terminador: Representa el "INICIO" y el "FIN" de un algoritmo.

FIN

LEER

ESCRIBIR

Operacin de entrada /salida Utilizada para mostrar la INTRODUCCIN o LECTURA de datos desde un perifrico a la memoria del ordenador y la salida, VISUALIZACIN o ESCRITURA de resultados desde la memoria del ordenador a un perifrico. proceso: Utilizado para mostrar una operacin que pueda originar cambio de valor, operaciones aritmticas, etc. Subprograma o subrutina: Se utiliza para representar la llamada a una funcin o procedimiento que va a llevar a cabo una tarea determinada y una vez terminada sta, regresar el control de ejecucin al programa principal.

X = X+1

b) Smbolos de decisin

SIMBOLOS SI
X >0

NO

FUNCIN Decisin : Representa operaciones lgicas o de comparaciones entre datos y en funcin del resultado de la misma , determina cual de los distintos caminos alternativos del algoritmo se debe seguir. Normalmente tiene dos salidas SI y NO, Decisin Mltiple: Utilizada para representar una decisin con 3 o ms salidas. Indica el camino que se pueden seguir entre varias posibilidades segn el resultado de la operacin lgica o comparacin Bucle: definido, empleado para modificar una instruccin o bloque de instrucciones que a su vez producen una modificacin en el programa

c) Lneas de flujo SIMBOLOS FUNCIN Lneas de flujo o conectoras: Indican el sentido de la ejecucin de las operaciones. Sirven de unin entre dos smbolos.

d) Smbolos de conexin SIMBOLOS FUNCIN

Conector de reagrupamiento : Utilizado para el reagrupamiento de lneas de flujo


pa g N pag

Conector de una misma pgina: Sirve para conectar dos puntos o partes del ordinograma en la misma pgina. Conector de distintas pginas: Sirve para conectar dos puntos del ordinograma en pginas diferentes.

e) Smbolos de comentarios SIMBOLOS FUNCIN Permite escribir comentarios a lo largo del diseo realizado

En los ordinogramas slo queda representado grficamente el bloque de instrucciones, siendo necesario especificar explcitamente el entorno del algoritmo.

El diseo de un ordinograma debe tener:


Un principio que marca el comienzo de la ejecucin del programa y que viene determinado por la palabra "INICIO" Secuencia de operaciones lo mas detalladas posibles y siguiendo siempre el orden en el que se van a ejecutar (de arriba- abajo) y de (Izquierda a derecha) Un fin que marca la finalizacin de ejecucin del programa y que viene determinado por la palabra FIN

Normas a seguir en la confeccion de ordinogramas: Todos los simbolos deben estar conectados por medio de lineas de conexin o lineas de flujo de datos El diseo debe realizarse con la mxima claridad de arriba-abajo y de IzquierdaDerecha Queda terminantemente prohibido el cruce de lineas de conexin, ya que ello indica que esta mal diseado

A un smbolo de proceso pueden llegarle varias lineas de conexin o flujo pero de l solo pueden salir una A un simbolo de decisin pueden llegarle varias lneas de conexin o flujo de datos pero de l solo pueden salir una linea de entre las dos posibilidades existentes (V o F) A un simbolo de Inicio de proceso no llega ninguna linea de conexin y de l solo pueden partir una linea de conexin A un simbolo de final de proceso pueden llegar varias lineas de conexin pero de l no pueden partir ninguna

Ejemplo 1: Ordinograma del algoritmo que calcula el permetro y el rea de un rectngulo: Algoritmo REC_AREA_PERIMETRO Entorno Entero BASE, ALTURA, PERIMETRO, AREA fin_entorno
INICIO

ESCRIBIR "Introduce la BASE del rectngulo" LEER BASE

ESCRIBIR Introduce la ALTURA rectngulo"

LEER ALTURA

PERMETRO = 2*BASE+2*ALTURA AREA = BASE * ALTURA

VISUALIZAR AREA, PERIMETRO

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

Entorno Real A, B Fin_entorno


INICIO

INTRODUCI R A, B

NO
A>B
ESCRIBIR El mayor es, B

SI

ESCRIBIR El mayor es, A

FIN

Ejemplo 3:Introducir un nmero por teclado, si no se adivina el nmero oculto, borrar pantalla, indicar si el n es superior o inferior. Repetir la operacin hasta acertar. Entorno Entero NUM Constante OCULTO=19 Fin_entorno
INICIO

INTRODUCI R NUM

NUM<>OCULT O

NO

FIN

SI SI
NUM>OCULTO

NO

ESCRIBIR Te pasas

ESCRIBIR No llegas

PSEUDOCODIGO

Se puede definir como el lenguaje intermedio entre el lenguaje humano y el lenguaje de programacin seleccionado. Est sujeto a determinadas reglas que permiten y facilitan el diseo de algoritmos y el posterior paso al lenguaje de programacion elegido Cararteristicas de los pseudocodigos: No puede ser ejecutado directamente por un ordenador Permite el diseo y desarrollo de algoritmos totalmente independientes del lenguaje de programacin que despues se utilice Es sencillo de aprender y utilizar Facilita al programador el paso del algoritmo al correspondiente lenguaje de programcin que utiliza Permite una gran flexibilidad en el diseo del algoritmo a la hora de expresar acciones concretas Permite con facilidad futuras correcciones o actualizaciones ya que no es un sistema de representacin rgido Se debe utilizar identacin o sangria del texto en el margen izquierso Permite obtener la soluccin de un problema mediante aproximaciones suceivas, lo que se conoce como top-down que consiste en la descomposicin sucesiva del problema en niveles o subprogramas mas pequeos lo que nos permite la simplificacin delproblema general Hace que en la fase de diseo, los programadores se centren en la lgica y estructuras de control del algoritmo (descripcin de la secuencias de pasos que hay que llevar a cabo) y se olviden de las reglas y restricciones sintcticas (como hay que escribir dicha secuencia) que le impone un determinado lenguaje de programacin. Todo pseudocodigo debe permitir la descripcin de Instrucciones primitivas (E, S y Asignacin) Instrucciones de proceso o calculo Instrucciones de control Instrucciones compuestas La descripcion de estructuras de datos y elementos de trabajo que se vayan a manipular en el programa (variables, constantes, tablas, ficheros, etc.)

Partes de un pseudocodigo: Cabecera: Es el rea o bloque informativo donde quedar reflejado el nombre del algoritmo (modulo) y el nombre del programa al que pertenece dicho diseo. Incluir adems un comentario que nos de una idea de lo que se pretende que resuelva el algoritmo. Los comentarios en un pseudocdigo queda representado mediante : // , si el comentario ocupa una sola lnea. /*.....*/ o {.....}, si el comentario ocupa varias lneas, en este caso el comentario ira entre estos dos caracteres. Cuerpo: se divide en Bloque de datos o entorno.- es donde se describen todos los elementos de trabajo necesarios en la ejecucin del programa Bloque de acciones. Se describen todas las acciones que el ordenador debe realizar durante la ejecucin del programa cuando estas sean convertidas en instrucciones ejecutables Ejemplo: Programa DESCUENTO Modulo PRINCIPAL /* Este algoritmo calcula el tanto por ciento de descuento que han hecho al realizar una determinada compra*/ Inicio Datos o Entorno /* En este bloque ir la declaracin de los distintos elementos u objetos que vamos a utilizar en un algoritmo: tipos definidos por el usuario parametros, variables , constantes, funciones y procedimientos, etc.*/ Entero IMPORTE_COMPRA, PRECIO_FINAL............ Real TANTO_POR_CIENTO, .......... .......................................... fin_datos Algoritmo /* En este bloque se representarn las distintas instruccines que formen parte del bloque de instruccines del algoritmos que estamos describiendo .*/ Escribir Indicar el importe de la compra Leer IMPORTE_COMPRA ................................................................. fin-algoritmo Fin

La representacin del entorno de un algoritmo mediante pseudocdigo se realiza de forma anloga a como se haca en los ordinogramas: Entorno //Declaracin de variables tipo1 NombreVariable11,....NombreVariable1n; tipo2 NombreVariable21,...,NombreVariable2n; ... tipom NombreVariablem1,...,NombreVariablemn; //Declaracin de constantes Constante tipo1 NombreConstante11,...., Constante NombreConstante1n; Constante tipo2 NombreConstante21,..., Constante NombreConstante2n; ............................. Constante tipon NombreConstantem1,...,Constante NombreConstantemn; La representacin mediante un algoritmo de las distintas instrucciones que pueden aparecer dentro del bloque de instrucciones de un algoritmo, se puede hacer del siguiente modo:

SECUENCIALES Categora de Instruccin Representacin ordinograma en un Representacin pseudocdigo leer variable; Instruccines de Entrada
LEER variable

en

un

Instruccines de Salida
ESCRIBIR "texto", var

escribir "texto"; escribir "texto",var,"texto"; escribir "texto",var; Nombre_Var = Expresin

Instruccin de asignacin

Nombre_Var = Expresin

I1

Bloque secuencial de instrucciones (I1, I2,...In) Siendo Ij instrucciones pertenecientes a las categoras anteriores

I2

I1 I2
.....

In

In

ALTERNATIVAS Categora de Instruccin Representacin ordinograma NO Alternativa Simple en un Representacin en un pseudocdigo SI


I

Expresin

Si condicin entonces I ..... fin_si

Alternativa Doble

NO
J

Expresin I

SI

Si condicin entonces I ..... si_no J...... fin_si

Segn Expresion hacer Alternativa Mltiple


Expresin

I1

.......IN

IN+1

ValorConstante1:I1 ..... ... ValorConstante2:I2 .... ... ............................... ValorConstanten:IN .... ... fin_segun

REPETITIVAS Categora de Instruccin Instruccin Mientras:


Expresin

Representacin ordinograma

en

un Representacin pseudocdigo NO

en

un

Mientras Expresion hacer I........... fin_mientras

SI
I

Instruccin Repetir
I

Repetir I............. hasta Expresion

Expresin

NO SI

Instruccin Para

Variable=valor_inicial

Variable< = valor_final

Para variable=valor_inicial hasta valor_final [ConIncremento | NO ConDecremento ] I................. fin_para

SI
Variable=variable+1 I

Instrucciones Alternativas. Existen tres modelos tpicos de instrucciones alternativas: Alternativa simple: si se cumple una condicin(/es) se realiza una accin(/es). Ej.: Si llueve entonces cojer un paraguas fin_si Alternativa doble: si se cumple una condicin(es) se realiza una accin(/es), si no se realiza otra accin(/es). Ej.: Si llueve entonces cojer un paraguas sino saldr a pasear fin_si; Alternativa mltiple: segn el valor de una condicin o expresin se realizar una accin dentro de las mltiples posibles, asociadas al valor de la condicin. Ej.: Segun dia hacer I1, I2,.... instrucciones. lunes: I1 martes: I2 ......... fin_segun; Ejemplos: 1. Dado un nmero por teclado, decidir si es par o impar. Programa PAR_IMPAR //Determina si un nmero introducido es par Datos Entero A fin_datos Algoritmo Escribir Introduce un nmero: Leer A Si (Amod2=0) entonces Escribir el nmero,A,es par sino Escribir A,es un nmero impar fin_si fin algoritmo

2. Dados dos nmeros por teclado, decir si un nmero es mltiplo de otro: Programa MULTIPLO //Determina si un nmero es mltiplo de otro Datos Entero A,B fin_datos Algoritmo Escribir Introduzca dos nmeros: Leer A,B Si ((A>B)and((AmodB)=0)) entonces Escribir B,es mltiplo de,A sino Si ((B>A)and((BmodA)=0)) entonces Escribir A,es mltiplo de,B sino Si (A=B) entonces Escribir son iguales sino Escribir no son mltiplos fin_si fin_si fin_si fin algoritmo

Instrucciones Repetitivas: Son instrucciones que repiten una secuencia de instrucciones un nmero determinado de veces, tambin se las llama bucles. Existen bsicamente tres tipos de instrucciones repetitivas o bucles que son: la instruccin mientras, la instruccin repetir y instruccin para: * Instruccin mientras.- La instruccin repetitiva mientras es aquella en que el cuerpo del bucle se repite mientras se cumple una determinada condicin, es decir, realiza una iteracin cada vez que la condicin resulta ser cierta. Las palabras clave que indican una instruccin mientras en pseudocdigo son: Mientras CONDICION ACCION 1 ACCION 2 ACCION 3 ....... fin_mientras Ejemplo: Factorial de un n Algoritmo FACTORIAL // Algoritmo que calcula el factorial de un nmero natural Entorno Entero NUM, INI, FAC fin_entorno Inicio FAC =1 Escribir Introduce un nmero mayor que 1 Leer NUM I=NUM Mientras I > 1 FAC = FAC *I I=I-1 fin_mientras Escribir El factorial de, NUM , es , FAC. Fin Lo primero que se hace al entrar en una instruccin mientras es la evaluacin de la condicin y si resulta ser falsa el cuerpo del bucle nunca se ejecutar. Si la condicin es cierta se ejecuta una iteracin y despus se vuelve a evaluar la condicin. * Instruccin repetir.- La instruccin repetitiva repetir es aquella en que el cuerpo del bucle se ejecuta hasta que se cumple una determinada condicin, es decir, realiza una iteracin mientras no se cumpla la condicion . Las palabras clave que indican una instruccin repetir en pseudocdigo son: Repetir ACCIN 1 ACCIN 2 ... hasta CONDICION

Ejemplo: Factorial de un n Programa FACTORIAL // Algoritmo que calcula el factorial de un nmero natural Entorno Entero NUM, FAC Fin_entorno

Algoritmo FAC = 1 escribir Introduce un nmero mayor que 1 leer NUM Repetir FAC = FAC * NUM NUM = NUM - 1 hasta NUM < = 1 escribir NUM fin algoritmo

La principal diferencia con la instruccin mientras es que lo primero que se ejecuta en la instruccin, es el bucle y despus se evala la condicin, si resulta ser falsa se ejecutar de nuevo. volviendo a evaluar al final la condicin hasta que resulte ser verdadera . En la instruccin repetir el bucle se ejecutar una vez al menos, es decir, realiza como mnimo una iteracin.

Ejemplo: Realiza la suma, resta, cociente o divisin de dos nmeros:

Programa CALCULADORA //Calcula el resultado de la operacin aritmtica elegida sobre dos operandos elegidos. Entorno Real X,Y Caracter OPCION Booleana SALIR fin_entorno

Algoritmo Escribir Introduce el primer operando: Leer X Escribir Introduce el segundo operando: Leer Y SALIR=f Repetir Mientras (OPCION<a or OPCION>d) Escribir Elija opcin a, b, c, d: Escribir a) SUMA. Escribir b) RESTA. Escribir c) COCIENTE. Escribir d) DIVISIN. Escribir e) SALIR. Leer OPCION fin_ mientras

Segun OPCION hacer a: Escribir La suma , X, + , Y, = , X + Y b: Escribir La resta , X, - , Y, = , X - Y c: Escribir El cociente , X, / , Y, = , X / Y d: Escribir El producto , X, * , Y, = , X * Y e: SALIR=v fin_segun hasta SALIR=v fin algoritmo

* Instruccin para: En muchas ocasiones se conoce de antemano el nmero de veces que se desea ejecutar las instrucciones del bucle. En estos casos en que el nmero de iteraciones es fija, se debe usar la instruccin para . La instruccin para se ejecutar un nmero determinado de veces y de modo automtico controlar el nmero de iteraciones del cuerpo del bucle. Sus palabras clave en pseudocdigo son: Para VARIABLE = VALOR-INI. hasta VALOR-FIN. [ incr. INC. | decr. DEC.] ACCION 1 ACCION 2 .......... fin_para La instruccin para comienza con un valor inicial, las acciones especficas se ejecutan a menos que el valor inicial sea mayor (o menor si se decrementa) que el valor final. La variable se incrementa en INC. o decrementa en DEC., si este nuevo valor no supera el final se ejecutarn de nuevo las acciones. El incremento de la variable ser siempre de 1 a no ser que se especifique lo contrario. Ejemplo: Factorial de un n (slo especificamos el bloque de instrucciones) Inicio Escribir Dame un n: Leer NUM FAC = NUM Para I = NUM-1 hasta 2 decremento 1 FAC = FAC * I fin_para Escribir El factorial de , NUM, es : ,FAC fin Podemos realizar el mismo algoritmo con inremento: Inicio Escribir Dame un n: Leer NUM FAC = 1 Para I = 2 hasta NUM incremento 1 FAC = FAC * I fin_para Escribir El factorial de , NUM, es : ,FAC fin

Las instrucciones alternativas y/o repetitivas pueden anidarse unas con otras tantas veces como sea necesario, aunque, por claridad en el pseudocdigo, no es recomendable anidar ms de tres instrucciones repetitivas, en caso de necesitar ms anidaciones dividiremos el problema inicial en mdulos para facilitar la labor de programacin. Las anidaciones deben hacerse de forma correcta, esto es, el inicio y fin del bucle ms interno no deben superar los del ms externo. Bien Mal

Ejemplo: Sumar los nmeros impares menores que 1000. Programa SUMIMPAR //Suma los impares menores de 1000 Entorno Entero I, SUMA fin_entorno algoritmo SUMA = 0 Para I = 1 hasta 999 incremento 2 SUMA = SUMA+I fin_para Escribir La suma de los impares menores de 1000 es : , SUMA fin

4 VARIABLES AUXILIARES DE UN ALGORITMO O PROGRAMA Son objetos que utiliza un algoritmo y que por la frecuencia con la que se utilizan y por la funcin que realizan dentro del mismo, toman un nombre especial: contadores, acumuladores e interruptores o switches. 5.1 Contadores Un contador es una variable destinada a almacenar un valor que se ir incrementando o decrementando en una cantidad constante. Es una variable que se utiliza para contar cualquier evento que pueda ocurrir dentro del algoritmo o programa. Se suelen utilizar mucho en procesos repetitivos, 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 inicial (0, 1...) Ej.: CONTADOR = Valor_Inicial Incremento Cada vez que aparezca el evento a contar se ha de incrementar o decrementar en una cantidad fija (I, D respectivamente ) el valor del contador. CONTADOR = CONTADOR + I CONTADOR = CONTADOR D Ejemplo: Cuenta el n de A's que un usuario introduce hasta finalizar con la pulsacin de un * Algoritmo VOCAL_A // Este algorimo calcula el nmero de As introducidas por el usuario Entorno Entero CONT Caracter LETRA fin_entorno Inicio CONT =0 Mientras (LETRA <> *) hacer Escribir "Introduce una A o un *" Leer LETRA Si LETRA = A entonces CONT =CONT + 1 fin_si fin_mientras Escribir CONT fin

Observaciones: Cuando se utiliza un contador con una instruccin Repetir o Mientras la operacin de inicializacin se realiza fuera del cuerpo del bucle y la de incrementacin o disminucin se realiza dentro. La variables de control del bucle Para, son un ejemplo de variable contador en las que la inicializacin y el incremento se realizan de forma automtica 5.2 Acumuladores Un acumulador o totalizador es una variable cuya misin es acumular cantidades sucesivas obtenidas al realizar la misma operacin. Realiza la misma funcin que un contador con la diferencia de que 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 los contadores, para poder utilizar un acumulador hay que realizar sobre ellos dos operaciones bsicas: Inicializacin: Todo acumulador necesita ser inicializado con el valor neutro de la operacin que va a acumular, que en el caso de la suma es el 0 y en el caso del producto es el 1. SumaTotal=0; ProductoFinal=1; Acumulacin: Una vez obtenido y almacenado en una variable la cantidad a acumular, le aadimos a la variable acumulador dicha cantidad, y le reasignamos el resultado. SumaTotal = SumaTotal + cantidad; ProductoFinal = ProductoFinal * cantidad; Ejemplo: Suma una serie de nmeros introducidos por teclado hasta que se introduce un 0. Inicio. TOT = 0; Repetir Escribir Introducir sumando Leer NUM Si (NUM <> 0) entonces TOT = TOT + NUM fin_si mientras (NUM<>0) Visualizar TOT fin

5.3 Interruptores, conmutadores o switches Un interruptor, conmutador o switch es una variable que puede tomar dos posibles valores a 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 suceso: Ejemplo: Algoritmo que lee una secuencia de notas (hasta que se introduzca el valor -1) y nos dice si hubo o no una nota con valor diez: Programa CONMUTADOR1 Entorno Real NOTA Booleano ES_SOBRESALIENTE fin_entorno Inicio ES_SOBRESALIENTE = falso Repetir Escribir " Introduce una nota" Leer NOTA Si (nota =10) ES_SOBRESALIENTE = verdadero fin_si mientras (nota != -1) Si (ES_SOBRESALIENTE = verdadero) entonces Escribir " Al menos hay una nota que es un 10" sino Escribir " Ninguna nota ha sido un10" fin_si fin

b) Realizar de forma alternativa e independiente dos procesos alternativos Ejemplo: Sumar por un lado los nmeros pares comprendidos entre 1 y 100 y por otro los impares: Algoritmo CONMUTADOR2 Entorno Entero SUMAPARES, SUMAIMPARES, I Booleano ES_PAR fin_entorno

Inicio SUMAPARES = 0 SUMAIMPARES = 0 ES_PAR = falso Para I = 1 hasta 100 incremento 1 Si (ES_PAR = falso ) entonces SUMAIMPARES=SUMAIMPARES + I ES_PAR = verdadero sino SUMAPARES = SUMAPARES + I ES_PAR = falso fin_si fin_para Escribir " La suma de los primeros 100 impares es:", SUMAIMPARES Escribir " Y la de los primeros 100 pares es:",SUMAPARES fin

OJO! PUEDEN EXISTIR ERRARTAS, as que si tenis alguna duda preguntar

You might also like