Diagramas de Flujo
Diagramas de Flujo
Diagramas de Flujo
Un diagrama de flujo (flowchar) es una de las tcnicas de representacin de algoritmo ms antigua y a la vez ms utilizada, aunque su empleo ha disminuido considerablemente, sobre todo desde la aparicin de lenguajes de programacin estructurados. Un diagrama de flujo es un diagrama que utiliza los smbolos (cajas) estndar mostrados, y que tiene los pasos de algoritmo escrito en esas cajas unidas por flechas, denominadas lneas de flujo, que indican la secuencia en que se debe ejecutar. Smbolos de diagramas de flujos Caja smbolos visto anteriormente indica el tipo de operacin y el diagrama de flujo ilustra grficamente la secuencia en la que se ejecuta las operaciones. Smbolos principales Funcin Termina (representa el comienzo, inicio, y el final, fin de un programa. Puede representar tambin una parada o interrupcin programada que sea necesario realizar en un programa. Entrada/Salida (cualquier tipo de introduccin de datos en la memoria desde los perifricos, entrada. O registro de la informacin procesada en un perifrico salida. Proceso (cualquier tipo de operacin que queda originar cambio de valor, formato o posicin de la informacin almacenada en memoria, operaciones aritmticas, de transferencia etc.) Decisin (indica operaciones lgica o de comparacin entre datos normalmente dos y en funcin del resultado de la misma determina cul de los distintos caminos alternativos del programa se debe seguir; normalmente tiene dos salidas respuesta SI o NO pero puede tener tres o ms, segn los casos). Decisin mltiple (en funcin del resultado de la comparacin se seguir uno de los diferentes caminos de acuerdo con dicho resultado).
NO SI
Conector (sirve para enlazar dos partes cualquiera de un ordinograma a travs de un conector en la salida y otro conector en la entrada. Se refiere a la conexin en la misma pgina del diagrama. Indicador de direccin o lnea de flujo (indica el sentido de ejecucin de las operaciones). Lnea conectora (sirve de unin entre dos smbolos).
Conector (conexin entre dos puntos del organigrama situado en pgina diferentes). Llamada subrutina o a un proceso predeterminado (una subrutina en un mdulo independiente del programa principal, que recibe una entrada procedente de dicho programa, realiza una tarea determinada y regresa, al terminar, al programa principal. Pantalla (se utiliza en ocasiones en lugar del smbolo de E/S).
Comentarios (se utiliza para aadir comentarios clasificadores a otros smbolos del diagrama de flujo. Se pueden dibujar a cualquier lado del smbolo)
INICIO
fin
Terminal
NO
Subprograma
SI
El finamiento del algoritmo conduce a los pasos sucesivos necesarios para realizar las operaciones de lectura, verificacin del ltimo dato, suma y media de los datos.
Si el primer dato ledo es 0, la divisin S/C producira un error si se ejecutara el algoritmo en una computadora, ya que no est permitida en ella divisin por cero.
inicio
C0 S0
Leer datos
Datos <> 0
NO
CC+1 S S + dato
Media s/c
Si el primer dato ledo es 0 la divisin S/C producir un error si se ejecutara el algoritmo en una computadora, ya que no esta permitida en ella la divisin por cero
Imprimir media
fin
Ejemplo
inicio
SUMA 2 NUMERO 4
NUMERO NUMERO + 2
SI
Escribe suma
fin
Ejemplo
Se desea realizar el algoritmo que resuelve el siguiente problema: Clculo de los salarios mensuales de los empleados de una empresa sabiendo que stos se calculan en base a las horas semanales trabajadas y de acuerdo a un precio especificado por horas. Si se pasan de cuarenta horas semanales, las horas extraordinarias se pagarn a razn de 1,5 veces la hora ordinaria.
1. Leer datos del archivo de la empresa, hasta que se encuentre la ficha final del archivo HORAS, PRECIO-HORA, HOMBRE?. 2. Si HORAS <= 40, entonces SALARIO es el producto de horas por PRECIO-HORA. 3. Si HORAS > 40, entonces SALARIO es la suma de 40 veces PRECIO-HORA mas 1,5 veces PRECIO-HORA por (HORAS 40)
inicio
Escribe suma
SI
Hora = < 40
NO
Escribe SALARIO
MAS DATOS
NO
fin
inicio
MAS DATOS
SI
Hora = < 40
NO
Escribe SALARIO
fin
EJEMPLO:
La escritura de algoritmos para realizar operaciones sencillas de conteo es una de las primeras cosas que un ordenador puede aprender. Supongamos que se proporciona una secuencia de nmeros, tales como
5302440023602
El algoritmo es muy sencillo, ya que slo basta leer los nmeros de izquierda a derecha, mientras se cuentan los ceros. Utiliza como variable la palabra NUMERO para nmeros que se examinan y TOTAL para el nmero de ceros encontrados. Los pasos a seguir son:
1. 2. 3. 4. 5. 6. 7. 8. 9.
Establecer TOTAL a cero Quedan ms nmeros a examinar? Si no quedan nmeros imprir el valor de total y fin: Si existen mas nmeros, ejecutar los pasos 5 a 8. Leer el siguiente numero y dar su valor a la variable numero. Si numero= o, incrementar total en 1. Si numero > o, no modificar total. Retornar al paso. El diagrama del flujo correspondiente es:2
INICIO
TOTAL 0
MS
NMEROS?
NO
SI
SI
TOTAL TOTAL + 1
ESCRIBIR TOTAL
fin
Ejemplo
Dados tres nmeros, determinar si la suma de cualquier pareja de ellos es igual al tercer nmero. Si se cumple esta condicin, escribir>> igual>> y, en caso contrario, escribir, distintas. En el caso de que los nmeros sean: 3 9 6, la respuesta es iguales, ya que 3 + 6 =9. Sin embargo, si los nmeros fueran: 2 3 4, el resultado sera Distintas.
Para resolver este problema, se puede comparar la suma de cada pareja al tercer nmero. Con tres nmeros solamente existen tres parejas distintas y el algoritmo de resolucin del problema ser fcil. 1. 2. 3. 4. 5. Leer los tres valores, A, B y C Si A + B = C escribir Iguales y parar Si A + C = B escribir Iguales y parar Si A + C = A escribir Iguales y parar Escribir Distintas y parar
INICIO
A+B=C
no
A+B=C
si
no
B+C=A
si
no
ESCRIBIR distinta
ESCRIBIR iguales
fin
PSEUDOCDIGO El pseudocdigo es un lenguaje de especificacin (descripcin) de algoritmo. El uso de tal lenguaje hace el paso de codificacin final (esto es, la traduccin a un lenguaje de programacin) relativamente fcil. Los lenguaje APL Pascal y Ada se utilizan a veces como lenguajes de especificacin de algoritmos. El pseudocdigo naci como un lenguaje similar al ingls y era medio de representar bsicamente las estructuras de control de programacin estructurada que se vern en captulos posteriores. Se considera un primer borrador, dado que el pseudocdigo tiene que traducirse posteriormente a un lenguaje de programacin. El pseudocdigo no puede ser ejecutado por una computadora. La ventaja del pseudocdigo es que en su uso, en la planificacin de un programa, el programador se puede concentrar en la lgica y en las estructuras de control y no preocuparse de las reglas de un lenguaje especfico. Es tambin fcil modificar el pseudocdigo si se descubren errores o anomalas en la lgica del programa, mientras que en muchas ocasiones suele ser difcil el cambio en la lgica, una vez que est codificado en un lenguaje estructurado como Pascal. La representacin pseudocdigo del diagrama de flujo es:
Start //clculo de impuesto y salarios read nombre, horas, precio_hora salario_bruto horas * precio_hora tasas 0,25 * salario_bruto salario_neto salario_bruto tasas write nombre, salario_bruto, tasas, salario_neto end
El algoritmo comienza con la palabra start y finaliza con la palabra end, en ingls (en espaol) inicio o fin. Entre estas palabras, slo se escribe una instruccin o accin por lnea.
La lnea precedida por // se denomina comentario. Es una informacin al lector del programa y no realiza ninguna instruccin ejecutable, slo tiene efecto de documentacin interna del programa. Algunos autores suelen utilizar corhetes o llaves.
No es recomendable el uso de apstrofos o simples comillas como representan en BASIC de Microsoft los comentarios, ya que este carcter es representativo de apertura o cierre de cadena de caracteres en lenguajes como Pascal o FORTRAN, y dara lugar a confusin. Otro ejemplo aclaratorio en el uso del pseudocdigo podra ser un sencillo algoritmo del arranque matinal de un coche.
Inicio //arranque matinal de un coche introducir la llave de contacto tirar del estrangulador del aire girar la llave de contacto pisar el acelerador oir el ruido del motor pisar de nuevo el acelerador esperar unos instantes a que se calienta el motor llevar el estrangulador de aire a su posicin fin
El diagrama N-S de Nassi-Schneiderman tambin conocido como diagrama de Chapin es como un diagrama de flujo en el que se omiten las flechas de unin y las cajas son contiguas. Las acciones sucesivas se escriben en cajas sucesivas y, como en los diagramas de flujos, se pueden escribir diferentes acciones en una caja.
Un algoritmo se representa como un rectngulo en el que cada banda es una accin a realizar:
calcular impuestos 2.25 * salario calcular neto salario impuestos escribir nombre, salario, impuestos, neto
<accin 1>
..
Fin
a) si
condicin?
no
Accin 1
Accin 2
b)
condicin?
Si
no
<acciones>
<acciones>
Actividades de Programacin Resueltas Desarrolle los algoritmos que resuelven los siguientes problemas 1. Ir al cine Anlisis del problema Datos de Salida: Datos de entrada: Datos auxiliares: Ver la pelcula nombre de la pelcula, direccin de la sala, hora de proyeccin. entrada, nmero de asiento.
Para solucionar el problema se debe seleccionar una pelcula de la cartelera del peridico, ir a la sala y comparar entrada para, finalmente, poder ver la pelcula. Diseo del algoritmo inicio
<seleccionar la pelcula> tomar el peridico mientras no lleguemos a la cartelera pasar la hoja mientras no se acabe la cartelera leer la pelcula si no gusta, recordarla fin mientras
elegir una de las pelculas seleccionada leer la direccin de la sala y la hora de proyeccin <comprar la entrada> trasladarse a la sala si no hay entradas, ir a fin si hay cola entonces ponerse el ltimo mientras no lleguemos a la taquilla avanzar si no hay entradas, ir a fin fin mientras compra la entrada < ver la pelcula > leer el nmero de asiento de la entrada buscar el asiento sentarse ver la pelcula fin
2. Comprar una entrada para ir a los toros Anlisis del problema Datos de Salida: Datos de entrada: Datos auxiliares: la entrada tipo de entrada (sol, sombra, tendido, andanada) entrada, nmero de asiento.
Hay que ir a la taquilla y elegir la entrada deseada. Si hay entradas se compra (en taquilla o a los reventas). Si no la hay, se puede seleccionar otro tipo de entrada o desistir, repitiendo esta accin hasta que se ha conseguido la entrada o el posible comprador ha desistido. Diseo del algoritmo Inicio Ia a la taquilla Si no hay entradas en taquilla Si nos interesa comprarla en la reventa Ir a comprar la entrada Si no ir a fin < comprar la entrada > Seleccionar sol o sombra Seleccionar barrera, tendido, andanada o palco Seleccionar nmero de asiento Solicitar la entrada Si la tienen disponible entonces Adquirir la entrada
Si no Si queremos otro tipo de entrada entonces Ir a comprar la entrada Fin 3. Averiguar si una palabra es un palndromo. Un palndromo es una palabra que se lee igual de izquierda a derecha que de derecha a izquierda, como por ejemplo, radar Anlisis del problema
: el mensaje que nos dice si es o no un palndromo : palabra : cada caracteres de la palabra al revs.
Para comprobar si una palabra es un palndromo, se puede ir formando una palabra con los caracteres invertidos con respecto a la original y comprobar si la palabra al revs es igual a la original. Para obtener esa palabra al revs, se leern en sentido inverso los caracteres de la palabra inicial y se irn juntando sucesivamente hasta llegar al primer carcter.
inicio
Leer palabra
si
,ms carcter?
,palabras iguales?
No es Un palndromo
Es Un palndromo
fin
4. Realizar un algoritmo que calcule la suma de los enteros enre 1 y 10, es decir, 1 + 2+ 3+. + 10 Anlisis del problema Datos de Salid : suma (contiene la suma requerida) Datos Auxiliares nm (ser una variable que vaya tomando valores entre 1 y 10 y se acumular en suma). Hay que ejecutar un bucle que se realice diez veces. En l se ir incrementando en 1 la variable nm, y se acumular su valor en la variable suma. Una vez salgamos del bucle se visualizar el valor de la variable suma. Diseo del algoritmo Tabla de variables Entero: suma, nm
Inicio
Suma 0 nm 0
no
Escribir suma
si
Escribir suma
fin
5. Realizar un algoritmo que calcule y visualice los potencias de 2 entre 0 y 10 Diseo del algoritmo Tabla de variables Entero: nm.
inicio
Nm 0
Escribir 2^nm
Nm nm + 1
no
Nm > 10
si
fin
6. Se desea obtener el salario neto de un trabajador conociendo el nmero de horas trabajadas, el salario hora y la tasa de impuestos que se ha de aplicar como deducciones. Las entradas del algoritmo son: horas trabajas, salario_hora, tasas Las salida del algoritmo son: Paga bruta, total de impuestos y paga neta El algoritmo general es: 1. Obtener valores de horas trabajadas, salario_hora y tasas. 2. Calcular salario_bruto, total de impuestos y salario_neto 3. Visualizar salario_bruto, total de impuestos y salario_neto
El refinamiento del algoritmo en pasos de nivel inferior es: 1. Obtener valores de horas trabajadas, salario bruto y tasas 2. Calcular salario bruto, total de impuestos y paga neta. 2.1. Calcular salario bruto multiplicando las horas trabajadas por el salario hora. 2.2. Calcular el total de impuestos multiplicando salario bruto por tasa (tanto por ciento de impuestos) 2.3. Calcular el salario neto restando el total de impuestos de la paga bruta. 3. Visualizar salario bruto, total de impuestos, salario neto.
Inicio
fin
7. Definir el algoritmo necesario para intercambiar los valores de dos variables numricas.
Anlisis del problema Para realizar este anlisis se utiliza variables denominada auxiliar que de modo temporal toma uno de los valores dados. Variables: A B AUX El mtodo consiste en asignar una de las variables a la variable auxiliar: AUX A A continuacin se asina el valor de la otra variable B a la primera: AB Por ltimo, se asigna el valor de la variable auxiliar a la segunda variable A: B AUX Variables: A B AUX
Diseo del algoritmo Inicio Leer (A, B) AUX A AB B AUX Escribir (A, B) Fin Diagrama de flujo
Inicio
Leer A, B
AUX A AB B AUX
Escribir A, B
fin
EL concepto de programas como un conjunto de instrucciones y sus tipos constituye la parte fundamental del captulo. La descripcin de los elementos bsicos de programacin, que se encontrarn en casi todos los programas: interruptores, contadores, totalizadores, etc. Junto con las normas elementales para la escritura de algoritmos y programas, conforman el resto de captulo.
En el captulo se examinan los importantes conceptos de datos, constantes y variables, expresiones, operaciones de asignacin y la manipulacin de las entradas y salida de informacin, as como la realizacin de las funciones internas como elemento clave en el manejo de datos. Por ltimo se describen reglas de escritura y de estilo para la realizacin de algoritmos y su posterior conversin en programas.
CONCEPTO DE PROGRAMA
Un programa de computadora es un conjunto de instrucciones rdenes dadas a la maquina que producirn la ejecucin de una determinada tarea. En esencia, un programa es un medio para conseguir un fin. El fin ser probablemente definido como la informacin necesaria para solucionar un problema.
1. Definicin y anlisis del problema 2. Diseo de algoritmos: Diagrama de flujo Diagrama N-S pseudocdigo
3. 4. 5. 6.
D O C U M E N T A C I O N
M A N T E N I M I E N T O
Tras la decisin de desarrollar un programa, el programador debe establecer el conjunto de especificaciones que debe contener el programa: entrada, salida y algoritmos de resolucin, que incluirn las tcnicas para obtener las salida a partir de las entradas.
Conceptualmente un programa puede ser considerado como una caja negra. La caja negra o el algoritmo de resolucin, en realidad, es el conjunto de cdigos que transforman las entradas del programa (datos) en salidas (resultados).
El programador debe establecer de donde provienen las entradas al programa. Las entradas, en cualquier caso, procedern de un dispositivo de entrada teclado, disco ..- EL proceso de introducir la informacin de entrada datos en la memoria de la computadora se denomina entrada de datos, operacin de lectura o accin de leer.
La salidas de datos se deben presentar en dispositivos perifricos de salida: pantalla, impresoras, discos, etc. La operacin de salida de datos se conoce tambin como escritura o accin de escribir.
El proceso de diseo del algoritmo o posteriormente de codificacin del programa consiste en definir las acciones o instrucciones que resolver el programa.
Las acciones o instrucciones se deben escribir y posteriormente almacenar en memoria en el mismo orden en que han de ejecutarse, es decir, en secuencia.
Un programa puede ser lineal o no lineal. Un programa es lineal si las instrucciones se ejecutan secuencialmente, sin bifurcaciones, decisin ni comparaciones.
En el caso del algoritmo las instrucciones se suelen conocer como acciones, y se tendr:
1. 2. 3. 4. 5.
Instrucciones de inicio/fin Instrucciones de asignacin Instruccin de lectura Instruccin de escritura Instruccin de bifurcacin.
INSTRUCCIONES DE ASIGNACION
a) A 80 la variable A toma el valor de 80 b) Cul ser el valor que tomar la variable C tras la ejecucin de las siguientes instrucciones: A 12 BA CB A contiene 12, B contiene 12 y C contiene 12.
Nota:
Antes de la ejecucin de las tres instrucciones, el valor de A, B y C, es indeterminado. Si se desea darles un valor inicial, habr que hacerlo explcitamente, incluso cuando este valor sea 0, es decir, habr que definir e inicializar las instrucciones.
A0 B0 C0
c)
N N+5
Se realiza el clculo de la expresin N + 5 y su resultado 2 + 5 = 7 se asigna a la variable situada a la izquierda, es decir, N tomar un nuevo valor 7.
Se debe pensar en la variable como en una posicin de memoria, cuyo contenido puede variar mediante instrucciones de asignacin (un smil suele ser un buzn de correos, donde el nmero de cartas depositadas en l variar segn el movimiento diario del cartero de introduccin de cartas o del dueo del buzn de extraccin de dichas cartas).
Esta instruccin lee datos de un dispositivo de entrada. Cul ser el significado de las instrucciones siguientes?
a) Leer (nmero, horas,. Tasa) Leer del terminal los valores nmero, horas y tasas, archivndolos en la memoria; si los tres nmero se teclean en respuesta a la instruccin son 12345, 32 1200, significara que se han asignado a las variables esos valores y equivaldra a la ejecucin de las instrucciones. Nmero 12345 Horas 32 Tasa 1200
b) Leer (a, b , c) Si se leen del terminal 100, 200, 300, se asignaran a las variables los siguientes valores: A B C = = = 100 200 300
Estas instrucciones se escriben en dispositivo de salida. Explicar el resultado de la ejecucin de la siguientes instrucciones.
A B C
= = =
Escribir (A, B, C )
Se visualizaran en la pantalla o imprimiran en la impresora los valores 100, 200 y 300 que contienen las variables A, B y C.
INSTRUCCIONES DE BIFURCACIN
El desarrollo lineal de un programa se interrumpe cuando se ejecuta una bifurcacin. Las bifurcaciones pueden ser, segn el punto del programa a donde se bifurca, hacan adelante o hacia atrs.
Las bifurcacin en el flujo de un programa se realizarn de modo condicional en funcin del resultado de la evaluacin de la condicin.
Bifurcacin incondicional: la bifurcacin se realiza siempre que el flujo del programa pase por la instruccin sin necesidad del cumplimiento de ninguna condicin.
Bifurcacin condicional: la bifurcacin depende del cumplimiento de una determinada condicin. Si se cumple la condicin, el flujo sigue ejecutando la accin F. si no se cumple, se ejecuta la accin F1.
En programacin se debe separar la diferencia entre el diseo del algoritmo y su implementacin en un lenguaje especfico. Por ello, se debe distinguir claramente entre los conceptos de programacin y el medio en que ellos se implementan en un lenguaje especfico. Sin embargo, una vez que se comprendan los concepto de programacin cmo utilizarlos, la enseanza de un nuevo lenguaje es relativamente fcil.
Palabras reservadas (inicio, fin si entonces etc) Identificadores (nombres de variables esencialmente, procedimientos, funciones, nombres del programa etc) Caracteres especiales (coma, apstrofo, etc.) Constantes, Variables Expresiones Instrucciones.
Computadora
Programa fuente
Compilador
si
Programa
montador
Adems de estos elementos bsicos, existen otros elementos que forman parte de los programas, cuyas comprensin y funcionamiento ser vital para el correcto diseo de un algoritmo y naturalmente la codificacin del programa. Estos elementos son:
El amplio conocimiento de todos los elementos de programacin y el modo de su integracin en los programas constituyen las tcnicas de programacin que todo buen programador debe conocer.
El primer objetivo de toda computadora es el manejo de la informacin de datos. Estos datos pueden ser las cifras de ventas de su supermercado o las calificaciones de una clase. Un dato es la expresin general que describe los objetos con los cuales opera una computadora. La mayora de las computadoras pueden trabajar con varios tipos (modos) de datos. Los algoritmos y los programas correspondientes operan sobre esos tipos de datos.
En el proceso de resolucin de problemas el diseo de la estructura de datos tan importante como el diseo del algoritmo y del programa que se basa en el mismo.
Existen dos tipos de datos: simples (sin estructura) y compuesto (estructurados). Los datos estructurados se estudian a partir del Captulo 6 y son conjuntos de partidas de datos simples con relaciones definidas entre ellos.
Existen algunos, lenguajes de programacin FORTRAN esencialmente que admiten otros tipos de datos; complejos, que permiten tratar los nmeros complejos, y otros lenguajes Pascal que tambin permiten declarar y definir sus propios tipos de datos: enumerados (enumerated) y subrango (subrange)
DATOS NUMRICOS
El tipo numrico es el conjunto de los valores numricos. Estos pueden representarse en dos formas distintas:
Enteros: el tipo entero es un subconjunto finito de los nmeros enteros. Los enteros son nmeros completos, no tienen componentes fraccionarios o decimales y pueden ser negativos o positivos. Ejemplos de nmeros enteros son:
5 -15 20 1340
6 4 17 26
Los enteros se denominan en ocasiones nmeros de punto o coma fija. Los nmeros enteros mximos y mnimos de una computadora suelen ser 32768 a + 32767 Los nmeros enteros fuera de este rango no se suelen representar como entero, sino como reales, aunque existen excepciones entero largos: FORTRAN, Turbo BASIC, etc.
Reales: el tipo real consistente en un subconjunto de los nmeros reales. Los nmeros reales siempre tienen un punto decimal y pueden ser positivos o negativos. Un nmero real consta de un entero y una parte decimal. Los siguientes son nmeros reales:
Este lmite provocar problemas para representar y almacenar nmeros muy grandes o muy pequeos como son los ya citado o los siguientes:
4867213432 0 00000000387
Existen un tipo de representacin denominado notacin exponencial o cientfica y que se utiliza para nmeros muy grandes o muy pequeos As.
3675201000000000000
367
520
100
000
000
000
000
3 . 675201 x 10
Y de modo similar
.0000000000302579
Se representa como
3.2579
x 10
El tipo lgico tambin denominado booleano es aquel dato que slo tomar uno de dos valores:
Este tipo de datos se utiliza para representar las alternativas (si/no) a determinadas condiciones tipo carcter contiene un solo carcter. Los caracteres que reconocen las diferentes computadoras no son estndar, sin embargo, la mayora reconoce los siguientes caracteres alfabticos y numricos:
Una cadena (string) de caracteres es una sucesin de caracteres que se encuentran delimitados por una comilla (Apstrofo) o dobles comillas, segn el tipo de lenguaje de programacin. La longitud de una cadena de caracteres es el nmero de ellos comprendidos entre los separadores o limitadores. Algunos lenguajes tiene datos tipos cadena.
CONSTANTES Y VARIABLES
Los programas de computadora contiene cierto valores que ejecucin del programa. Tales valores se llaman constantes. valores que cambiarn durante la ejecucin del programa; variables. Una constante es una partida de datos (objetos) durante todo el desarrollo del algoritmo o durante la ejecucin
no deben cambiar durante la De igual forma, existen otros a estos valores se les llama que permanecen sin cambios del programa.
La mayora de los lenguajes de programacin permiten diferentes tipos de constantes: enteras, reales, caracteres y boolean o lgicas, y representan datos de esos tipos.
Una variable es un objeto o partida de datos cuyo valor puede cambiar durante el desarrollo del algoritmo o ejecucin del programa. Dependiendo del lenguaje, hay diferentes tipos de variables, tales como enteras, reales, carcter, lgicas y de cadena.
Una variable que es de un cierto tipo puede tomar nicamente valores de ese tipo. Una variable de carcter por ejemplo, puede tomar como valor slo caracteres, mientras que una variable entera puede tomar slo valores enteros.
Los nombres de las variables, a veces conocidos como identificadores, suelen constar varios caracteres alfanumricos, de los cuales el primero normalmente es una letra. No deben utilizar aunque lo permitan el lenguaje, caso de FORTRAN como nombre identificadores palabras reservadas del lenguaje de programacin. Nombres vlidos variables son.
de se de de
Los nombres de las variables elegidas para el algoritmo o el programa deben ser significativos y tener relacin con el objeto que representan, como pueden ser los casos siguientes:
NOMBRES PRECIOS
para representar nombres de personas para representar los precios de diferentes artculos
EXPRESIONES
Las expresiones son combinaciones de constantes, variables, smbolos de operacin, parntesis y nombres de funciones especiales. Las mismas ideas son utilizadas en notacin matemtica tradicional; por ejemplo,
A + (b + 3) + c
Aqu los parntesis indican el orden de clculo y representa la funcin raz cuadrada. Cada expresin toma un valor que se determina tomando los valores de las variables y constantes implicadas y la ejecucin de las operaciones indicadas. Una expresin consta de operando y operadores. Segn sea el tipo de objetos que manipulan, las expresiones se clasifican en.
El resultado de la expresin aritmtica es de tipo numrico; el resultado de la expresin relacional y de una expresin lgica es de tipo lgico; el resultado de una expresin carcter es de tipo carcter.
EXPRESIONES ARITMTICAS
Las expresiones aritmticas son anlogas a las formulas matemticas, las variables y constantes son numricas (real o entera) y las operaciones son las aritmticas
Los smbolos +, -, * ,^( 0 **) y las palabras clave div y mod se conocen como operadores aritmticos. En la expresin. 5+3 Los valores 5 y 3 se denomina operando. El valor de la expresin 5 + 3 se conoce resultado de la expresin. Los operadores se utilizan de igual forma que en matemticas. Por consiguiente, A . BV se escribe en un algoritmo como A * B y . C como C/4. Al igual que en matemticas el signo menos juega un doble papel, como resta en A B y como negacin en A. Todos los operadores aritmticos no existen en todos los lenguaje de programacin; por ejemplo, en FORTRAN no existe div y mod. El operador exponenciacin es diferente segn el tipo de lenguaje de programacin elegido (^, en BASIC, ** en FORTRAN)
Los clculos que implican tipos de datos reales y enteros suelen dar normalmente resultados del mismo tipo si los operandos lo son tambin. Por ejemplo, el producto de operando reales produce un real. OPERADORES DIV Y MOD El smbolo / se utiliza para la divisin real y el operador div en algunos lenguajes, por ejemplo BASIC se suele utilizar el smbolo representa la divisin entera. El operador mod representa el resto de la divisin entera, aunque hay lenguaje que utiliza otros smbolos como %. A div B Slo se puede utilizar si A y B son expresiones enteras y obtiene la parte de A/B. por consiguientes. 19 div 6 Toma el valor 3. Otro ejemplo puede ser la divisin 15/6 15 3 Resto /6 2 cociente
En forma de operadores resultar la operacin anterior 15 div 6 = 3 Otros ejemplos son: 19 div 3 19 mod 6 equivale a 6 equivale a 1 15 mod 6 = 3
REGLAS DE PRIORIDAD
Las expresiones que tienen dos o ms operandos requieren una reglas matemticas que permitan determinar el orden de las operaciones se denomina reglas de prioridad o precedencia y son:
1. Las operaciones que estn encerradas entre parntesis se evalan primero. Si existen diferentes parntesis anidados (interiores uno a otros), las expresiones ms internas se evalan primero. 2. Las operaciones aritmticas dentro de una expresin suelen seguir el siguientes orden de prioridad: Operador exponencial (^, Operadores *, /, Operadores div y mod Operadores +, -. o bien **)
En caso de coincidir varios operadores de igual prioridad en una expresin o subexpresin encerrada entre parntesis, el orden de prioridad en este caso es de izquierda a derecha.
Ejemplo
A * (B + 3)
la constante 3 se suma primero al valor de B, despus este resultado se multiplica por el valor de A.
(A * B) + 3
A + (B + C) + D
A * b/c * d
equivale A ( (A * B) / C) * D y no a (A * B) / (C * D)
Un segundo tipo de expresiones es la expresin lgica o booleana, cuya valor es siempre verdadero o falso. Recuerde que existen dos constantes lgicas, verdadera (true) y falsa (false) y que las variables lgicas pueden tomar slo estos dos valores.
En esencia, una expresin lgica es una expresin que slo puede tomar estos dos valores, verdadero y falso. Se denominan tambin expresiones booleanas en honor del matemtico britnico George Boole, que desarroll lgebra lgica del Boole.
Las expresiones lgicas se forman combinando constantes lgicas, variables lgicas y otras expresiones lgicas, utilizando los operadores lgicas not, and y por y los operadores relaconales (de relacin o comparacin) =, <, >, <=, >=, <>.
Operadores de relacin
Los operadores relacionales o de relacin permiten realizar comparaciones de valores de tipo numricos o carcter. Los operadores de relacin sirven para expresar las condiciones en los
algoritmos. El formato general para las comparaciones y el resultado de la operacin ser verdadero o falso. As por ejemplo, si A = 4 y B = 3, entonces
A>B
es verdadero
Mientras que
(A 2) < (B 4)
es falso
Los operadores de relacin se pueden aplicar a cualquier de los cuatro tipo de datos estndar enteros, real, lgico, carcter. La aplicacin a valores numricos es evidente. Los ejemplos siguientes son significativos:
N1
N2
Expresin lgica
Resultado
3<6
verdadero
0>1
falso
4=2
falso
8 <= 5
falso
9 >= 9
verdadero
5 <> 5
falso
Para realizar comparaciones de datos tipo carcter se requiere una secuencia de ordenadores de los caracteres similar al orden creciente o decreciente. Esta ordenacin suele ser alfabtica, tanto maysculas como minsculas, y numrica, considerndolas de modo independiente.
Pero si se consideran caracteres mixtos, se debe recurrir a un cdigo normalizado como es el ASCII. Aunque no todas las computadoras siguen el cdigo normalizado en su juego completo de caracteres, si son prcticamente estndar los cdigos de los caracteres alfanumricos ms usuales.
Cuando se utiliza los operadores de relacin, con valores lgicos, la constante flase (falso) es menor que la constante true (verdadero)
False
<
true
True
>
false
OPERADORES LGICOS
Los operadores lgicos o booleanos bsicos son not (no), and (y) y or (0).
Operador lgico
Expresin lgica
significado
No (not)
no p (not p)
negacin de p
Y (and)
p y q (p and q)
conjuncin de p u q
O (o)
p o q (p o q)
disyuncin de p y q
Las definiciones de las operaciones no, y, o se resumen en unas tablas conocidas como tablas de verdad:
no a
Verdadero
falso
Falso
verdadero
ayb
Verdadero
verdadero
verdadero
a y b es verdadero solo
Verdadero
falso
falso
si a y b son verdadero
Falso
verdadero
falso
Falso
falso
falso
Los operadores aritmticos seguan un orden especficos de prioridad cuando exista ms de un operador en las expresiones. De modo similar, los operadores lgicos y relaciones tienen un orden de prioridad.
Al igual que en las expresiones aritmticas, los parntesis se pueden utilizar y tendrn prioridad sobre cualquier operacin.
Ejemplo.
No 4 > 6
no (4 > 14)
FUNCIONES INTERNAS
Las operaciones que se requieren en los programas exigen en numerosas ocasiones, adems de las operaciones de la operaciones aritmticas bsicas, ya tratadas, un nmero determinado de operadores especiales que se denominan funciones internas, incorporadas o estndar.
Por ejemplo, la funcin ln se puede utilizar para determinar el logaritmo neperanio de un nmero y la funcin raz 2 (sqrt) calcula la raz cuadrada de un nmero positivo. Existen otras funciones que se utilizan para determinar las funciones trigonomtricas.
Funcin
Descripcin
Tipos de argumento
Resultado
valor absoluto de x
entero o real
igual
Arctan(x)
arco tangente de x
entero o real
real
Cos(x)
coseno de x
entero o real
real
Exp (x)
exponencial de x
entero o real
real
Ln(x)
real
Log10(x)
logaritmo decimal x
entero real
real
redondeo de x
entero real
entero
seno de x
entero o real
real
cuadrado de x
entero o real
raz cuadrada de x
entero o real
real
Trunc(x)
truncamiento de x
real
entero
LA OPERACIN DE ASIGNACIN
La operacin de asignacin es el modo de almacenar valores a una variable. La operacin de asignacin se representa con el smbolo u operado La operacin de asignacin se conoce como instruccin o sentencia de asignacin cuando se refiere a un lenguaje de programacin. El formato general de una operacin de asignacin es:
La flecha (operador de asignacin) se sustituye en otros lenguajes por = (Visual basic, FORTRAN) := (Pascal) 0 == (Java, C++,C). sin embargo, es preferido el uso de la flecha en la redaccin del algoritmo para evitar ambigedades, dejando el uso del smbolo = exclusivamente para el operador de igualdad.
La operacin de asignacin:
A5
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. As, en la secuencia de operaciones.
A A A
25 134 5
Cuando stas se ejecutan, el valor ltimo que toma A ser 5 (los valores 25 y 134 han desaparecido).
La computadora ejecuta la sentencia de asignacin en dos pasos. En el primero de ellos, el valor de la expresin al lado derecho del operador se calcula, obtenindose un valor de un tipo especfico.
En el segundo caso, este valor se almacena en la variable cuyo nombre aparece a la izquierda del operador de asignacin, sustituyendo al valor que tena anteriormente.
Es posible utilizar el mismo nombre de variable en ambos lados del operador de asignacin. Por ello, acciones como
Tiene sentido; se determina el valor actual de la variable N se incrementa en 1 y a continuacin el resultado se asigna a la misma variable N. sin embargo, desde el punto de vista matemtico no tiene sentido N N + 1.
Las acciones de asignacin se clasifican segn sea el tipo de expresiones en: aritmticas, lgicas y de caracteres.
ASIGNACIN ARITMTICA
AMN 3 + 14 + 8
se evala la expresin 3 + 14 + 8 y se asigna la variable AMN. Es decir, 25 ser el valor que toma AMN
TER1 14.5 + 8
COCIENTE TER1/TER2
Se evalan las expresiones 14.5 + 8 y 0.75 * 3.4 y en la tercera accin se dividen los resultados de cada expresin y se asigna a la variable COCIENTE, es decir, las tres operaciones equivalen COCIENTE (14.5 + 8) / (0.75 * 34).
Otro ejemplo donde se pueden comprender las modificaciones de los valores almacenados en una variable es el siguientes:
A 0
N 0
A N
El ejemplo anterior se puede modificar para considerar la misma variable en ambos lados del operador de asignacin.
N 2
N N + 1
En la primera accin N toma el valor 2 y en la segunda se evala la expresin N + 1, que tomar el valor 2 + 1= 3 y se asignar nuevamente a N, que tomar el valor 3.
ASIGNACIN LGICA
La expresin que se evala en la operacin de asignacin es lgica. Supngase que M, N y P son variables de tipo lgico.
M8<5
N M o (7 <= 12)
P7>6
Tras evaluar las operaciones, las variables M, N y P tomarn los valores flaso, verdadero, verdadero.
X 12 de octubre de 1942
La accin de asignacin anterior asigna la cadena de caracteres 12 de octubre de 1942a la variable tipo cadena x.
CONVERSIN DE TIPO
En las asignaciones no se pueden asignar valores a una variable de un tipo diferente del suyo. Se presentar un error si se trata de asignar valores de tipo carcter a una variable numrica o un valore numrico a una variable tipo carcter.
Ejemplo:
A 3 B 4
C A+2*B C C+B B C + A A B * C
C A+2 *B C 11
La siguiente accin
C C + B
Producir un valor de 11 + 4 = 15
C B *C
A B * C
A TOMAR EL VALOR B * C es decir, 12 * 15 = 180; por consiguiente, el ltimo valor que toma A ser 180.
Ejemplo:
X 2
X cuadrado (2 + 2)
X raiz2(16 + raiz2(16) + 5)
En esta expresin se evala raiz2(16), que produce 4, por ltimo, raiz2 (16+4+5) proporciona raiz2(25), es decir, 5 los resultados de las expresiones sucesivas anteriores son:
X 2 X 16 X 5
Los clculos que realizan las computadoras requieren para ser tiles la entrada de los datos necesarios para ejecutar las operaciones que posteriormente se convertirn, es decir, salida.
Las operaciones de entrada permiten leer determinados valores y asignarlos a determinadas variables. Esta entrada se conoce como operacin de lectura (read). Los datos de entrada se introducen al procesador mediante dispositivos de entrada: Teclado Tarjetas perforadas Unidades de disco, etc.
Leer (A, B, C)
nota 1
Si se utilizaran las palabras reservadas en ingls, como suele ocurrir en los lenguajes de programacin, se deber sustituir.
Leer Por
escribir
Read
nota 2
Si no se especifica el tipo de dispositivo del cual se leen o escriben datos, los dispositivos de E/S por defecto son el teclado y la pantalla.
ESCRITURA DE ALGORITMOS/PROGRAMAS
La escritura de una algoritmo mediante una herramienta de programacin debe ser lo ms clara posible y estructurada, de modo que su lectura facilite considerablemente el entendimiento del algoritmo y su posterior codificacin en un lenguaje de programacin.
Los algoritmo deben ser escritos en lenguaje similares a los programas. En nuestro libro utilizaremos esencialmente el lenguaje algortmico, basado en pseudocdigo, y la estructura del algoritmo requerir la lgica de los programa escrito en el lenguaje de programacin estructurado; por ejemplo, Pascal
Las declaraciones definen o declaran las variables y constantes que tengan nombres. Las acciones ejecutables son las acciones que posteriormente deber realizar la computacin cuando el algoritmo convertido en programa se ejecute.
Todos los algoritmos y programas deben comenzar con una cabecera en la que se exprese el identificador o nombre correspondiente con la palabra reservada que seale el lenguaje. En
los lenguajes de programacin, la palabra reservada suele ser programa. En algortmica se denomina algoritmo.
Algoritmo DEMO1
DECLARACIN DE VARIABLES
En esta seccin se declaro o describen todas las variables utilizadas en el algoritmo, listndose sus nombres y especificando sus tipos. Esta seccin comienza con la palabra reservada var (abreviatura de variable) y tiene el formato.
Var Tipo-1 : lista de variable-1 Tipo-2 : lista de variables 2 .. .. Tipo-n : lista de variable-n
Donde cada lista de variables es una variable simple o una lista de variables separadas por comas y cada tipo es uno de los tipos de datos bsico (entero, real, char o boolean), por ejemplo, la seccin de declaracin de variables.
O de modo de equivalente
Declara que slo las tres variables hora, impuesto y salario son de tipo real.
Es una buena prctica e programacin utilizar nombres de variables significativos que surgieran lo que ellas representan, ya que eso har ms fcil y legible el programa.
Tambin es buena prctica incluir breves comentarios que indique cmo se utiliza la variable.
Var Entera : Real : numero_empleado horas Impuesto, Salario // nmero de empleado // horas trabajadas // impuesto a pagar // cantidad ganada
Es esta seccin se declaran todas las constantes que tengan nombres. Su formato es:
Las constantes de carcter simple y cadenas de caracteres pueden ser declaradas en la seccin del programa const, al igual que las constantes numricas.
1. Almacenar un solo carcter Var carcter : nombre, inicial, nota, letra Se declaran nombres, inicial, nota y letra. Que almacenarn slo un carcter.
2. Almacenar mltiples caracteres (cadena). El almacenamiento de caracteres mltiples depender del lenguaje de programacin. As, en los lenguajes
VB 6.0/VB .NET
El mtodo que seguiremos normalmente a lo largo del libro para escribir algoritmo ser el descrito al comienzo del Apartado 3.11.
cabecera
Var tipo de datos : lista de identificadores Const lista de identificadores = valor Inicio <sentencia S1) <sentencia S2) . <sentencia Sn) cuerpo del algoritmo
Nota:
1. En ocasiones, la declaracin de constantes y variables las omitiremos o se describirn en una tabla de variables que hace sus misma funciones. 2. Las cadenas de caracteres se encerrarn entre comillas simples. 3. Utilizar siempre sangras en los bucles o en aquellas instrucciones que proporcionen legibilidad al programa, como inicio y fin.
Algortimo races // resuelve una ecuacin de 2. grado Var Real : a, b, c Inicio Leer (a, b, c) D b ^2 * 4 * a * c Si d 0 entonces Escribir (raices comlejas)
Si_no Si d = 0 entonces Escribir (-b / (2 * a) Si/no Escribir ( ( -b raiz2(d) ) / (2 * a) Escribir ( (-b + raiz2(d) ) / (2 * a) Fin_si Fin_si fin
1. Disear un algoritmo para cambiar una rueda de un coche Solucin: Algoritmo pinchazo Inicio Si gato del coche est averiado Entonces llamar a la estacin de servicios Si_no levantar el coche con el gato Repetir Aflojar y sacar los tornillos de la ruedas Hasta_que todos los tornillos estn flojos y quitados Quitar la rueda Poner la rueda de repuesto Repetir Poner los tornillos y apretarlos Hasta_que estn puestos todos los tornillos Bajar el gato Fin_si Fin
2. Encontrar el valor de la variable VALOR despus de la ejecucin de las siguientes operaciones: (A) VALOR 4.0 * 5 (B) X 3.0 Y 2.0
Solucin
(A) VALOR = 20.0 (B) X = 3.0 Y = 2.0 VALOR = 3 ^2 2 = 9 2 = 7 (C) VALOR = 5 X=3 VALOR = VALOR * X = 5 * 3 = 15
VALOR = 7
VALOR = 15
3. Deducir el resultado que se produce con las siguientes instrucciones: Var entero : X, Y X 1 Y 5 ESCRIBIR (X, Y)
Solucin
X e Y toman los valores 1 y 5. La instruccin de salida (escribir) presentar en el dispositivo de salida 1 y 5, con los formatos especficos del lenguaje de programacin; por ejemplo,
4. Se tienen tres variables A, B y C. escribir las instrucciones necesarias para intercambiar entre si sus valores del modo siguiente: B toma el valor de A C toma el valor de B A toma el valor de C
Solucin
AUX A C B
A C B AUX
Instruccin
AUX
Observaciones
15
5 --5 15 15 5
-10 -10 10 10 10
--15 15 15 10 5
---5 5 5
Obsrvese que al igual que en el ejercicio de intercambio de valores entre dos variables, la variable AUX no modifica su valor.
5. Deducir el valor que toma la variable tras la ejecucin de las instrucciones. A 4 B A B A+3 Solucin
Mediante una tabla se da un mtodo eficaz para obtener los sucesivos valores: A 4 4 4 B -4 7
Despus de la instruccin la variable A contiene el valor de 4 La variable B no ha tomado todava ningn valor y se representa esa situacin con un guin. La instruccin (2) asigna el valor actual de A (4) a la variable B. la instruccin (3) efecta el clculo de la expresin A + 3 lo que produce un resultado de 7 (4 + 3) y este valor se asigna a la variable B, cuyos ltimo valor (4) se destruye. Por consiguiente, los valores finales que tienen las variables A y B son: A = 4 b=7
6. Qu se obtiene en las variables A y B, despus de la ejecucin de las siguientes instruccin) A B A B 5 A+6 A+1 A5
Instruccin
Observaciones
5 5 6 11 11
(4) B A 5
-B no toma ningn valor Se evala A + 6(5 +6) y se asigna B Se evala A + 1(5 + 1) y se asigna A, borrndose el valor que tena (5) y tomando el nuevo valor (6). Se evala A 5(6 1) y se asigna a B
(4) B
(5) A B C 0
23
23
B y C no toma ningn valor C sigue sin valor Se evala A + B(20 + 3) y se asigna a C 23 Se evala A + B(20 + 3) y se asigna a B; destruye el valor antiguo (20). Se evala B C(23 23) y se asigna a A.
8. Qu se obtiene e A y B tras la ejecucin de A 10 B 5 A B B A SOLUCIN Instruccin (6) (7) (8) (9) A B A B 10 5 B A 10 10 5 5 5 A -B Observaciones
B no toma valor 5 B recibe el valor inicial 5 5 A toma el valor de B (5) B toma el valor actual de A (5)
Los valores finales de A y B son %. En este caso se podra decir que la instruccin (4) B A es redundante respeto a la anteriores, ya que su ejecucin no afecta al valor de las variables. 9. Determinar el mayor de tres nmeros enteros Solucin Los pasos a seguir son: a. Comparar el primero y el segundo entero, deduciendo cul es el mayor. b. Comparar el mayor anterior con el tercero y deducir cul es el mayor. Este ser el resultado
Los pasos anteriores se pueden descomponer en otros pasos ms simples en lo que se denomina refinamiento del algoritmo:
1. 2. 3. 4. 5. 6. 7.
Obtener el primer nmero (entrada), denominarlo NM1 Obtener el segundo nmero (entrada), denominado NUM2 Comparar NUM1 con NUM2 y seleccionar el mayor, si los dos enteros son iguales, seleccionar NUM1. Llamar a este nmero MAYOR Obtener el tercer nmero (entrada) y denominado NUM3 Comparar MAYOR con NUM3 y seleccionar el mayor; si los dos son iguales, seleccionar el MAYOR. Determinar a este nmero MAYOR. Presentar el valor de MAYOR (salida) Fin
10. Determinar la cantidad total a pagar por una llamada telefnica, teniendo en cuanta lo siguiente: Toda llamada que dure menos de tres minutos (cinco pasos) tiene un coste de 10 cntimos. Cada minuto adicionales a partir de los tres primeros es un paso de contador y cuesta 5 cntimos.
Solucin
1. 2. 3.
4.
Inicio Leer el nmero se pasos (npasos) hablados por telfono Comprobar que el nmero de pasos es mayor que cero, ya que realmente se ha realizado la llamada si el nmero de pasos es distinto de cero (positivo). Si el nmero de pasos es menor a cero, se producir un error. Calcular el precio de la conferencia de acuerdo con los siguientes conceptos: Si el nmero de pasos es menor que 5, el precio es de 10 cntimos Si el numero de pasos es mayor que 5, es preciso calcular los pasos que exceden de 5, ya que stos importan 5 cntimos casa uno; al producto de los pasos sobrantes por cinco cntimos de le suma 10 peseras y se obtendr el precio total.
Variables: NPASOS N FACT Nmeros de pasos de la llamadas Nmero de pasos que exceden 5 Importe o precio de la llamada.
Diagrama d eflujo
inicio
Leer NPASOS
NPASOS <= 0
si
Escribir error
1
Hacer FACT 10 N NPASOS-5
N>0
si
no
fin
11. Calcular la suma de los cincuenta primero nmero enteros: SOLUCIN Anlisis El algoritmo expresado en lenguaje natural o en secuencia de pasos es el siguiente: 1. 2. 3. 4. 5. 6. Inicio Hacer el primer nmero 1 igual a una variable X que actuar de contador de 1 a 50 y 5 igual a 0 Hacer S = S + X para realizar las sumas parciales. Hacer X = X+1 para generar los nmeros enteros Repetir los pasos 3 y 4 hasta que x = 50,l en cuyo caso se debe visualizar la suma Fin
inicio
X1
S0
X <= 50
Escribir S
fin
SS+X
XX + 1
12. Escribir aun algoritmo que calcule el producto de los n primeros nmeros naturales Solucin El problema puede calcular el producto N * (N 1 * (n 2) * . * 3 *2 * 1, que en trmino matemticos se le conoce con el nombre de FACTORIAL de N. el algoritmo que resuelve el problema ser el siguiente: 1. 2. 3. 4. 5. Leer N Caso de que N = 0 visualizar Factorial de 0 igual 1 Comprobar que N > 0 (los nmeros negativos no se consideran). Hacer la variable P que va a contener el productor igual a 1. Realizar el producto P = P * N Disminuir en una unidad sucesivamente hasta llegar a N = 1, y de modo simultneo los productos P * N Visualizar P. fin
6. 7.