Issuu on Google+

Datos Personales Nombre: Erika de los Milagros Apellidos: Chunga Bernal Curso: Educación por el Trabajo Tema: Trabajando con Algoritmos Profesora: Lic. Nerita Tarrillo Dávila Grado y Sección:

4° “B”


Índice: Dedicatoria

3

Algoritmos

4

Constantes y Variables

7

Clasificación de Variables

13

Características de Variables

14

Tipo de Datos

15

Operadores y Operando

17

Prioridad de los Operadores

23

Pseudocódigos

24

Diagrama de Flujo de Datos

46

Conclusión

62

2


Dedicatoria: A Dios por guiarme en mi labor de estudiante y por permitirme estar un día más con vida; a mi madre por su apoyo económico y moral durante la realización del presente manual y a mi profesora por su dedicación y enseñanza.

3


Los Algoritmos ¿Qué es un algoritmo? La habilidad para manejar algoritmos tiene un valor estratégico en el uso de la computadora como herramienta para resolver un problema, después de que se ha dicho cómo resolverlo. Un algoritmo se define como un conjunto de instrucciones para resolver un problema. En otros términos, un algoritmo es una sola prescripción determinante de un proceso de cálculo que, partiendo de diversos datos iniciales, conduce en todos los casos al resultado que le corresponde. ¿Cómo se transforma un algoritmo? Un algoritmo se trasforma en una herramienta de computadora cuando se han preparado instrucciones adecuadas para que la computadora puede llevarlos a cabo. Estas un instrucciones deberán comunicarse a la computadora en un lenguaje que pueda “entenderse“, tal lenguaje se conoce como lenguaje de programación. Propiedades de un Algoritmo: Las propiedades de un algoritmo son puntos guía a seguir para su elaboración, ya que estos llevan un mejor desarrollo del problema del computador. Sus propiedades son: Enunciado del problema: El enunciado del problema debe ser claro y completo. Es importante que conozcamos exactamente que se desea del computador. Mientras esto no se comprenda, no tiene caso pasar a la siguiente etapa. Análisis de la solución general: Entendido del problema el problema, para resolver es preciso analizar: Los datos o resultados que se esperan. Los datos de entrada que nos suministran. El proceso al que se requiere someter esos datos a fin de obtener los resultados esperados.

4


Áreas de trabajo, fórmulas y otros recursos necesarios. Una recomendación muy práctica es el que nos pongamos en el lugar del computador, y analicemos que necesito que me ordenen y en que secuencias, para poder producir los resultados esperados. Diferencias alternativas de solución: Analizando el problema, posiblemente tengamos varias formas de resolverlo. Lo importante es determinar cuál es la mejor alternativa: la que produce los resultados esperados en el menor tiempo o al menor costo. Elaboración de algoritmos: Los conocimientos adquiridos anteriormente son las herramientas necesarias para llevar a cabo la elaboración de un algoritmo a través de un problema. Se recomienda tomar en cuenta cada una de las propiedades de un algoritmo, ya que de ahí se inicia el proceso de elaboración. A continuación se mostrará el desarrollo de un problema con su respectivo algoritmo como solución. Supongamos que se necesita calcular e imprimir el área de un triángulo cuya base y altura se suministraran de un disco. Procedimiento: Escribir correctamente el enunciado del problema. “Calcular e imprimir el área de un triángulo cuya base y altura se suministraran de un disco” Análisis: 1. ¿Qué se quiere?, ¿Cómo se quiere?, ¿Qué se deseó obtener? - ¿Qué se quiere?: quiero calcular el área de un triángulo. - ¿Cómo se quiere? Lo quiero calcular a través de una formula. Área del triángulo = Base x altura /2 - ¿Qué deseo obtener? Imprimir el área del triángulo y subministrar los resultados en un disco. 2. Solución: Variables utilizadas en esta solución:

5


De lectura

Para almacenar

Base

-

El valor correspondiente a la base del triángulo.

Altura

-

El valor correspondiente a la altura del triángulo.

Buscar diferentes alternativas de solución al resultado del problema. Ejemplo: El problema pide imprimir el área del triángulo como resultado, en un disco. Algoritmo: Programa para calcular el área de un triángulo. Inicio Lea base, altura Área Calcule área = (base*altura) / 2 Imprima “Resultado=”, Área Fin

6


CONSTANTES Y VARIABLES Constantes: Una constante es un dato numérico o alfanumérico que no cambia durante todo el desarrollo del algoritmo o durante la ejecución del programa. Es un objeto de valor invariable. Para expresar una constante se escribe explícitamente su valor. Tienen un valor fijo que se le da cuando se define la constante y que ya no puede ser modificado durante la ejecución. Tipos de Constantes: 

Constantes Numéricas (Enteras y Reales)

Constantes Alfanuméricas

Constantes Lógicas (Boolenas) Las constantes pueden ser: Constantes sin nombre: Es una expresión numérica donde se puede utilizar directamente el valor. Constantes con nombre: Se hace una reserva de memoria en la cual se guarda el valor que será utilizado como constante. Ejemplo: a) PI = 3.1416 b) E = 2.718228 c) Iva = 0.13 Se puede definir una constante como un nombre significativo que contiene un valor, numérico, texto o de cualquier tipo, y que una vez definida, no cambia. Las constantes puede ser intrínsecas, es decir con nombres y valores preestablecidos en VBScript, como por ejemplo vbCrLf cuyo valor es equivalente a Chr(13) & Chr(10), o lo que es lo mismo, retorno de carro y avance de línea. También tenemos las constantes definidas por el usuario, que son aquellas que reciben el nombre y valor que el usuario decida. Por supuesto, no puedes crear una constante con el mismo nombre de una intrínseca, ni dos cualesquiera con el mismo nombre, aunque sí con el mismo valor. Por ejemplo: <% Const xxMiConstante = "Esto es un string constante" Const xxDia = 28 Const xxFecha = #02-28-2000# %>

7


Y para ver sus contenidos: <% Response.Write( xxMiConstante & "<BR>") Response.Write( xxDia & "<BR>") Response.Write( xxFecha & "<BR>") %> Y este sería el resultado: Esto es un string constante 28 02-28-2000 Fíjate que para crear estas constantes definidas por el usuario, primero hay que escribir la instrucción Const. Si simplemente escribimos xxDia = 28 acabamos de crear una variable, que viene a ser lo mismo, pero cuyo contenido, como su nombre indica, puede variarse en cualquier momento. También habrás visto que a todas ellas se les ha antepuesto xx delante del nombre. En efecto, el nombre de las constantes definidas por el usuario es libre, pero es buena idea acostrumbrarse a utilizar una forma de nombre que permita distinguir después, a simple vista, qué es una constante y qué una variable. Todas las constantes intrínsecas, por ejemplo, comienzan con vb. Recuerda que tanto a la hora de definir constantes como variables, sus valores, si son textos, deben ir entre comillas dobles ("..."), las fechas y horas entre (#...#) y los números sin nada. No olvides tampoco que el formato de fecha en VBScript es mm/dd/aaaa, formato americano, en lugar del europeo dd/mm/aaaa. Las constantes pueden llevar asociados un nombre o no, si no lo llevan, se llaman literales. Su valor hay que darlo al definir la constante y ya no puede cambiar a lo largo de la ejecución, y en cuanto al tipo, dependiendo de los lenguajes en algunos hay que ponerlo, y en otros no. En este caso toma el tipo del dato que se le asigna. Const PI=3,1416. Hay que inicializar todas las variables. La ventaja de usar constantes con nombre es que en cualquier lugar donde quiera que vaya la constante, basta con poner su nombre y luego el compilador lo sustituirá por su valor. Cuando una cadena es de tipo carácter, se encierra entre comillas.

8


Variables: Son zonas de memoria cuyo contenido cambia durante la fase de procesamiento de información. Como ya has visto, al definir una constante, junto con el nombre se le asigna un valor, lo que implica que la constante tiene un tipo de datos invariable. No sucede lo mismo con las variables, que por defecto tienen el tipo de datos Variant propio de Visual Basic, lo que les permite recibir cualquier tipo de dato durante el proceso sin necesidad de redefiniciones adicionales. Aunque puede omitirse, es conveniente utilizar la instrucciónDim para definir variables. Por ejemplo: <% Dim MiVariable MiVariable = "Esto es un string constante" MiVariable = 28 MiVariable = #02-28-2000# %> Puede definirse más de una variable en una misma línea con Dim. Así: <% Dim Variable1, Variable2, Variable3 %> Si a cualquiera de estos tipos de datos le anteponemos vb, por ejemplo vbArray, obtendremos los nombres de las constantes intrínsecas devueltas por la función VarType(MiVariable), que se utiliza para saber qué tipo de datos contiene una variable en un momento determinado, aunque lo que devuelve la función es el valor numérico de la constante (el número que aparece entre paréntesis junto a cada nombre de tipo). También puede utilizarse la función TypeName(MiVariable) para obtener el nombre del tipo. En el momento de crearlas, y antes de darles valor, es decir, cuando se inicializan, las variables numéricas se inicializan con 0 y una de cadena (string) se inicializa con una cadena de longitud cero ("" tipo de dato 0) que no hay que confundir con el valor Null (tipo de dato 1) de las bases de datos, ni con un espacio en blanco (tipo de dato 8). Para controlar si una variable está vacía o no, existe la función IsEmpty(MiVariable), que devuelve True o False según el contenido de la variable. Otra cosa importante de las constantes y variables es su radio de acción o alcance. El alcance de una constante o una variable se refiere a desde donde será posible invocarla una vez definida. Para definir el alcance, se utilizan dos instrucciones: Private (por defecto

9


para las variables) y Public (por defecto para las constantes). La primera limita la variable o constante a la secuencia de comandos donde es definida, y la segunda permite utilizarlas desde cualquier secuencia de comandos. Como nivel de secuencia de comandos, se entiende cualquier código que esté fuera de un procedimiento Function o Sub. Las variables definidas dentro de un procedimiento tienen su alcance limitado a ese procedimiento. He aquí un ejemplo de definición de variable: <% Public Dim MiVariable MiVariable = 28 %> Hasta aquí hemos visto variables que contienen un solo valor (variables escalares), pero pueden definirse de forma que almacenen 2 o más valores. Este tipo de variables se denominan variables matriciales o dinámicas, y se definen igual que las escalares, pero escribiendo un par de paréntesis delante del nombre. Si dentro de los paréntesis escribimos un número, éste indicará cuantos valores puede almacenar la variable. Si no se escribie ningun número, la variable queda definida sin dimensionar, y se puede establecer sus dimensiones más tarde con la instrucción ReDim. Por ejemplo: <% Dim MiVariable() ... ... ReDim MiVariable(5) %> Una variable dinámica se puede redimensionar cuantas veces sea necesario, pero solamente se puede cambiar el número de elementos, no su estructura. En el ejemplo anterior se ha definido una matriz de una dimensión y 5 elementos, lo que significa que puede almacenar 5 valores. Para ello solo hay que asignar un valor a cada entrada del índice comenzando por el cero: <% Dim MiVariable() ... ... ReDim MiVariable(4) Mivariable(0) = 10 Mivariable(1) = 20 Mivariable(2) = 30 Mivariable(3) = 40

10


Mivariable(4) = 50 %> La asignación de valores o la lectura de los mismos, también se puede hacer mediante un bucle típico For To Next. Como se ha dicho, una vez dimensionada, se puede cambiar el número de elementos, pero no sus dimensiones, es decir, que no se puede convertir a, por ejemplo, MiVariable(4, 4) que es una variable de 5 dimensiones y cinco elementos. Las matrices de dos dimensiones se pueden comparar con tablas de datos, donde el primer número, en este caso el 4, indica el número de filas y el segundo indicaría el número de columnas. Si no hay segundo número, por defecto se entiende que es cero, lo que indica una sola columna. Otra cosa que no se puede cambiar es el tipo de datos, que es único para todos los valores de la matriz, es decir, que si el primer valor asignado es numérico, todos los demás deberán ser del mismo tipo. Hay que tener en cuenta, que si hay valores cargados en una matriz y la redimensionamos, los valores se pierden. Para evitar esto, VBScript dispone de la palabra clave Preserve para conservar el contenido de la matriz cuando se produce el cambio de tamaño. No obstante, utilizando Preserve sólo se puede cambiar el tamaño de la última dimensión de la matriz y tampoco se puede cambiar el número de dimensiones. Por ejemplo, si la matriz sólo tiene una dimensión, se puede cambiar el tamaño de esa dimensiónn ya que es la última y única dimensión. Si la matriz tiene dos o más dimensiones, sólo se puede cambiar la dimensión de la última y todavía conservar el contenido de la matriz. Por ejemplo: <% ReDim MiVariable(4, 4, 4) .... .... ReDim MiVariable(4, 4, 5) %> Para liberar la memoria asignada a matrices dinámicas, se utiliza la instrucción Erase. Después de utilizar Erase, si se quiere hacer referencia de nuevo a la matriz, es necesario volver a declarar las dimensiones de las variables de la matriz con la instrucción ReDim. Hay que tener presente que Erase no recupera la memoria asignada a las matrices de tamaño fijo, solamente de las dinámicas. Si es fija, lo que hace es borrar los valores que contenga, cambiándolos por 0 si es numérica, por "" si es de texto y por Nothing si es una matriz de objetos. Una variable multidimensional puede tener hasta 60 dimensiones, cosa bastante complicada de utilizar. Hay que usar la redimensión de matrices con cuidado, ya que todo esto se hace en memoria. Si se escribe una aplicación con muchas matrices dinámicas, cuyos valores máximos no esten debidamente controlados, y hay muchos usuarios

11


utilizando la aplicación, el servidor puede quedarse sin recursos. No hay que olvidar tampoco que las matrices de datos no son el sustituto de una DB. Para asignar un objeto a una variable, hay que anteponer la instrucción Set. Al asignar una referencia de objeto a una variable, no se crea una copia del objeto, se crea una referencia al objeto. Se puede definir más de una variable con referencia al mismo objeto. Debido a que estas variables son referencias al objeto (y no copias de él), cualquier cambio ocurrido en el objeto se refleja en todas las variables que se refieren al mismo. Tipo de variable La propiedad del tipo de variable especifica los tipos de datos de cada variable. Por defecto se asume que todas las variables nuevas son numéricas. Los tipos de variable disponibles son los siguientes:  Numérico. Una variable cuyos valores son números, se muestran en formato numérico estándar.  Coma. Una variable numérica cuyos valores se muestran con comas que delimitan cada tres posiciones y con el punto como delimitador decimal.  Punto. Una variable numérica cuyos valores se muestran con puntos que delimitan cada tres posiciones y con la coma como delimitador decimal. Los valores no pueden contener puntos a la derecha del indicador decimal.  Notación científica. Una variable numérica cuyos valores se muestran con una E intercalada y un exponente con signo que representa una potencia de base diez. El Editor de datos acepta para estas variables valores numéricos con o sin el exponente.  Fecha. Una variable numérica cuyos valores se muestran en uno de los diferentes formatos de fecha-calendario u hora-reloj. Es necesario seleccionar un formato de la lista. Para introducir la fecha se pueden utilizar: barras, guiones, puntos, comas o espacios.  Dólar. Una variable numérica que se muestra con un signo dólar inicial ($), comas que delimitan cada tres posiciones y un punto como delimitador decimal. Se pueden introducir valores de datos con o sin el signo dólar inicial.  Moneda personalizada. Una variable numérica cuyos valores se muestran en uno de los formatos de moneda personalizados que se hayan definido previamente en la pestaña Moneda del cuadro de diálogo Opciones. Los caracteres definidos en la moneda personalizada no se pueden emplear en la introducción de datos pero sí

12


se mostrarán en el Editor de datos.  Cadena. Una variable cuyos valores no son numéricos y, por lo tanto, no se utilizan en los cálculos. Las mayúsculas y las minúsculas se consideran diferentes. Este tipo también se conoce como variable alfanumérica. Ejemplo: Una variable declarada como cadena solo puede tomar valores correspondientes a ese tipo. Nombre = "Manuel López"

Clasificación de Variables: Variable Independiente: Es aquella característica o propiedad que se supone ser la causa del fenómeno estudiado. En investigación experimental se llama así, a la variable que el investigador manipula. Variable Dependiente: Es la propiedad o característica que se trata de cambiar mediante la manipulación de la variable independiente, es el factor que es observado y medido para determinar el efecto de la variable independiente. Variable Interviniente: Son aquellas características o propiedades que de una manera u otra afectan el resultado que se espera y están vinculadas con las variables independientes y dependientes. Variable Moderadora: Representan un tipo especial de variable independiente, que es secundaria, y se selecciona con la finalidad de determinar si afecta la relación entre la variable independiente primaria y las variables dependientes. Variables Cualitativas: Son aquellas que se refieren a atributos o cualidades de un fenómeno. Son aquellas variables en las que características o propiedades pueden presentarse en diversos grados de intensidad, es decir, admiten una escala numérica de medición. Variables Continuas: Son aquellas que pueden adoptar entre dos números puntos de referencias intermedio. Las calificaciones académicas (10.5, 14.6, 18.7, etc.). Variables Discretas: Son aquellas que no admiten posiciones intermedias entre dos números. Ej., en Barinas la división de territorial la constituyen 11 municipios por no (10.5 u 11.5 municipios).

13


Variables de Control: Factores que son controlados por el investigador para eliminar o neutralizar cualquier efecto que podrían tener de otra manera en el fenómeno observado.

Características de Variables Vista de variables: La Vista de variables contiene descripciones de las propiedades de cada variable del archivo de datos. En la Vista de variables: 

Las filas son variables.

Las columnas son las características de las variables.

Además de la definición de propiedades de variables en la Vista de variables, existe la opción "Copiar propiedades de datos" que está disponible en el menú Datos en la ventana Editor de datos. Para visualizar o definir los atributos de las variables Desde la Vista de Variables, para definir variables nuevas, introduzca un nombre de variable en cualquier fila vacía y seleccione los atributos que desea definir o modificar. Nombres de variable Para los nombres de variable se aplican las siguientes normas: 

El nombre debe comenzar por una letra.

Los nombres de variable no pueden terminar en punto.

No se pueden utilizar espacios en blanco ni caracteres especiales.

Cada nombre de variable debe ser único; no se permiten duplicados.

Los nombres de variable se pueden definir combinando de cualquier manera caracteres en mayúsculas y en minúsculas, esta distinción entre mayúsculas y minúsculas se conserva en lo que se refiere a la presentación.

14


Tipos de datos Tipo de dato informático es un atributo de una parte de los datos que indica al ordenador (y/o al programador) algo sobre la clase de datos sobre los que se va a procesar. Esto incluye imponer restricciones en los datos, como qué valores pueden tomar y qué operaciones se pueden realizar. Tipos de datos comunes son: enteros, números de coma flotante (decimales), cadenas alfanuméricas, fechas, horas, colores, etc. Por ejemplo, por lo general el tipo "int" representa un conjunto de enteros de 32 bits cuyo rango va desde el -2.147.483.648 al 2.147.483.647, así como las operaciones que se pueden realizar con los enteros, como son la suma, la resta, y la multiplicación. Los colores, por su parte, se representan como tres bytes denotando la cantidad de rojo, verde y azul, y una cadena de caracteres representando el nombre del color; las operaciones permitidas en este caso incluyen la adición y la sustracción, pero no la multiplicación. Éste es un concepto propio de la informática, más específicamente de los lenguajes de programación, aunque también se encuentra relacionado con nociones similares de la matemática y lalógica. En un sentido amplio, un tipo de datos define un conjunto de valores y las operaciones sobre estos valores.1 Casi todos los lenguajes de programación explícitamente incluyen la notación del tipo de datos, aunque lenguajes diferentes pueden usar terminologías diferentes. La mayor parte de los lenguajes de programación permiten al programador definir tipos de datos adicionales, normalmente combinando múltiples elementos de otros tipos y definiendo las operaciones del nuevo tipo de dato. Por ejemplo, un programador puede crear un nuevo tipo de dato llamado "Persona" que especifica que el dato interpretado como Persona incluirá, por ejemplo, un nombre y una fecha de nacimiento. Un tipo de dato puede ser también visto como una limitación impuesta en la interpretación de los datos en un sistema de tipificación, describiendo la representación, la interpretación y la estructura de los valores u objetos almacenados en la memoria del ordenador. El sistema de tipificación usa información de los tipos de datos para comprobar la verificación de los programas que acceden o manipulan los datos.

15


Tipos de datos primitivos: Los tipos de datos hacen referencia al tipo de información que se trabaja, donde la unidad mínima de almacenamiento es el dato, también se puede considerar como el rango de valores que puede tomar una variable durante la ejecución del programa. DATOS PRIMITIVOS: CARÁCTERES El tipo de dato carácter es un dígito individual el cual se puede representar como numéricos (0 al 9), letras (a-z) y símbolo ($,_). NOTA: En lenguaje java la codificación Unicode permite trabajar con todos los caracteres de distintos idiomas.

Tipo de dato Rango Tamaño de bits char 0 a 65535 16 bits

NUMÉRICOS Este tipo de dato puede ser real o entero, dependiendo del tipo de dato que se vaya a utilizar. Enteros: son los valores que no tienen punto decimal, pueden ser positivos o negativos y el cero.

tipo de dato: byte tipo de dato: short tipo de dato: int tipo de dato: long

tamaño= 8 bits tamaño= 16 bits tamaño= 32 bits tamaño= 64 bits

Reales: estos caracteres almacenan numeros muy grandes que poseen parte entera y parte decimal.

tipo de dato: float= 32 bits tipo de dato: double= 64 bits

16


BOOLEANOS Este tipo de dato se emplea para valores lógicos, los podemos definir como datos comparativos dicha comparación devuelve resultados lógicos. tipo de dato: boolean

Rango= true - false

Operadores y Operando Operadores Son elementos que relacionan de forma diferente, los valores de una o mas variables y/o constantes. Es decir, los operadores nos permiten manipular valores.

Operadores Aritméticos Los operadores aritméticos permiten la realización de operaciones matemáticas con los valores (variables y constantes). Los operadores aritméticos pueden ser utilizados con tipos de datos enteros o reales. Si ambos son enteros, el resultado es entero; si alguno de ellos es real, el resultado es real.

Operadores Aritméticos: + Suma

17


- Resta * Multiplicación / División mod Modulo (residuo de la división entera) Ejemplos: Expresión 7/2 12 mod 7 4+2*5

Resultado 3.5 5 14

Prioridad de los Operadores Aritméticos Todas las expresiones entre paréntesis se evalúan primero. Las expresiones con paréntesis anidados se evalúan de dentro a fuera, el paréntesis más interno se evalúa primero. Dentro de una misma expresión los operadores se evalúan en el siguiente orden: ^ Exponenciación *, /, mod Multiplicación, división, modulo. +, - Suma y resta. Los operadores en una misma expresión con igual nivel de prioridad se evalúan de izquierda a derecha. Ejemplos: 4 + 2 * 5 = 14 3 + 5 * (10 - (2 + 4)) = 23

23 * 2 / 5 = 9.2 2.1 * (1.5 + 12.3) = 2.1 * 13.8 = 28.98

Operadores Relacionales Se utilizan para establecer una relación entre dos valores. Luego compara estos valores entre si y esta comparación produce un resultado de certeza o falsedad (verdadero o falso). Los operadores relacionales comparan valores del mismo tipo (numéricos o cadenas). Estos tienen el mismo nivel de prioridad en su evaluación. Los operadores relaciónales tiene menor prioridad que los aritméticos. Tipos de operadores Relacionales > Mayor que < Menor que

18


> = Mayor o igual que < = Menor o igual que < > Diferente = Igual Ejemplos: Si a = 10, b = 20, c = 30 a+b>c a-b<c a-b=c a*b<>c

Falso Verdadero Falso Verdadero

Ejemplos no lógicos: a<b<c 10 < 20 < 30 T > 5 < 30 (no es lógico porque tiene diferentes operandos) Operadores Lógicos Estos operadores se utilizan para establecer relaciones entre valores lógicos. Estos valores pueden ser resultado de una expresión relacional. Tipos de operadores Lógicos And Y Or O Not Negación Ejemplo: Para los siguientes ejemplos T significa verdadero y F falso.

Operador Not Operador Not

19


Operando T

Resultado F

F

T

Operador And Operador And Operando1 T

Operador AND

Operando2 T

Resultado T

T F

F T

F F

F

F

F

Operando2 T F T

Resultado T T T

F

F

Operador Or Operador Or Operando1 T T F

Operador Or

F

Prioridad de los Operadores L贸gicos Not And Or Prioridad de los Operadores en General () ^ *, /, Mod, Not +, -, And >, <, > =, < =, < >, =, Or Ejemplos: Sea: a = 10 b = 12 c = 13 d =10

20


Operadores La computadora tiene que tener la habilidad para saber cómo procesar datos. Esta tarea le toca a los operadores. Los operadores son datos conectores en una expresión y ecuación. Los operadores dicen a la computadora cómo procesar los datos. También informan a la computadora sobre el tipo de procesamiento (matemático, lógico u otro) que necesita ejecutar.. Los tipos de operadores (matemático, relacional y lógico) se utilizan para hacer cálculos y para resolver problemas. El concepto de operando y el de resultado están relacionados con el operador. Los operandos son datos que conecta y procesa el operador. El resultado es la respuesta que resulta cuando se completa la operación. Por ejemplo: la expresión 3 + 2, el + es el operador, el 3 y el 2 son los operandos, y el 12 es el resultado. Los operandos pueden ser constantes o variables. El tipo de dato de los operandos y el resultado dependen del operador. Clases de operadores Operadores matemáticos. Los operadores matemáticos menos conocidos son la división integral (\), cuyo resultado es el número entero en el cociente, y la

21


división modular (MOD), cuyo resultado es el número entero remanente. Estas dos operaciones se utilizan generalmente para buscar las horas y minutos o el número de días y semanas trabajadas. Por ejemplo, si Paola Marie trabajó 19 días durante un mes, asumiendo que son 5 los días de trabajo semanal, ella trabajó 19/5 = 3 semanas y 19 MOD 5 = 4 días. Por consiguiente, ella trabajó 3 semanas y 4 días. Operadores relacionales. Estos operadores se utilizan para controlar las instrucciones repetitivas (iterativas) llamadas loops. Un loop es un set de instrucciones para entrar datos de un cliente, que tiene que repetirse hasta que los datos sean entrados para todos los clientes. Operadores lógicos. Los operadores lógicos se usan para conectar expresiones relacionales (expresiones de toma de decisiones) y para ejecutar operaciones de datos lógicos. La universidad puede pedir para prestar libros en reserva la tarjeta de identidad o la licencia de conducir. La expresión se escribe LICENCIA OR TARJETA. La LICENCIA y la TARJETA son los operandos. Son datos lógicos y el valor de cada uno es TRUE o FALSE. El operador es OR. El resultado es TRUE o FALSE, dependiendo del valor de los operandos. Si uno de los opreandos es cierto, entonces el resultado es TRUE. Si los dos operandos son FALSE, entonces el resultado es FALSE. Operando: En matemáticas,

un operando es una

de

las

entradas (argumentos)

de

un operador. Por ejemplo, en

" " es el operador, " " y " " son los operandos. La cantidad de operandos de un operador es denominada aridad. Basándose en la aridad, los como unarios, binarios, ternarios etc.

operadores

22

son

clasificados


Prioridad de los Operadores El orden de prioridad es el orden en que la computadora ejecuta los operadores aritméticos cuando se le ordena ejecutar varios operadores en una sola línea de instrucción. Orden de Prioridad 1

% * /

2

+ -

Operadores

El cuadro anterior indica que tiene mayor prioridad los operadores %, * y / en relación a los operadores + y -. Los operadores que tienen mayor prioridad se ejecutan primero y cuando existen otros que tienen la misma prioridad se ejecutan de izquierda a derecha. Ejemplo Nº 001 10 + 5 % 2 El resultado de esta opración es 11 porque el operador con mayor prioridad es% entonces la computadora primero ejecuta: 5 % 2 cuyo resultado es 1. Después de ejecutar el operador con mayor prioridad ejecuta el que tiene menor prioridad con el resultado de la operación anterior(1), entonces:10 + 1 = 11. Ejemplo Nº 002 10 / 5 % 2 El resultado de esta operación es 0(cero) porque los dos operadores tiene la misma prioridad, entonces se ejecutan de izquierda a derecha, es decir, primero 10 / 5 cuyo resultado con la siguiente operación: 2 % 2 cuyo resultado es: 0. Ejemplo Nº003 10 + 18 / 2 El resultado de esta operación es 19 porque el operador que tiene mayor pioridad es /, entonces primero se ejecuta 18 / 2 cuyo resultado es 9. Después de ejecutar la división ejecuta la suma porque es de menor prioridad, entonces ejecuta:10 + 9 cuyo resultado es 19. Cuando en una instrucción se usa más de un operador lógico, primero se evalúa NOT, luego AND y, finalmente, OR. Los operadores aritméticos y bit a bit se tratan antes que los operadores lógicos. En el siguiente ejemplo, la condición de color pertenece al modelo de producto 21 y no al modelo de producto 20 porque AND tiene prioridad sobre OR. USE AdventureWorks2008R2; GO SELECT ProductID, ProductModelID FROM AdventureWorks2008R2.Production.Product

23


WHERE ProductModelID = 20 OR ProductModelID = 21 AND Color = 'Red' Puede cambiar el significado de la consulta si agrega paréntesis para provocar que OR se evalúe primero. La siguiente consulta busca solamente los productos en los modelos 20 y 21 que sean rojos. SELECT ProductID, ProductModelID FROM AdventureWorks2008R2.Production.Product WHERE (ProductModelID = 20 OR ProductModelID = 21) AND Color = 'Red' El uso de paréntesis, incluso cuando no se necesitan, puede mejorar la comprensión de las consultas y reducir las posibilidades de cometer un error debido a la prioridad de los operadores. No hay ninguna reducción significativa del rendimiento que sea achacable al uso de paréntesis. El siguiente ejemplo se lee mejor que el ejemplo original, aunque ambos son sintácticamente iguales. SELECT ProductID, ProductModelID FROM AdventureWorks2008R2.Production.Product WHERE ProductModelID = 20 OR (ProductModelID = 21 AND Color = 'Red')

Pseudocódigos En ciencias de la computación, y análisis numérico el pseudocódigo (o falso lenguaje) es una descripción informal1 de alto nivel de un algoritmo informático de programación, compacto e informal, que utiliza las convenciones estructurales de un lenguaje de programación verdadero2 , pero que está diseñado para la lectura humana en lugar de la lectura mediante máquina, y con independencia de cualquier otro lenguaje de programación. Normalmente, el pseudocódigo omite detalles que no son esenciales para la comprensión humana del algoritmo, tales como declaraciones de variables, código específico del sistema y algunas subrutinas. El lenguaje de programación se complementa, donde sea conveniente, con descripciones detalladas en lenguaje natural, o con notación matemática compacta. Se utiliza pseudocódigo pues este es más fácil de entender para las personas que el código de lenguaje de programación convencional, ya que es una descripción eficiente y con un entorno independiente de los principios fundamentales de un algoritmo. Se utiliza comúnmente en los libros de texto y publicaciones científicas que se documentan varios algoritmos, y también en la planificación del desarrollo de programas informáticos, para esbozar la estructura del programa antes de realizar la efectiva codificación. No existe una sintaxis estándar para el pseudocódigo, aunque los ocho IDE's que manejan pseudocódigo tengan su sintaxis propia. Aunque sea parecido, el

24


pseudocódigo no debe confundirse con los programas esqueleto que incluyen código ficticio, que pueden ser compilados sin errores. Los diagramas de flujo y UML pueden ser considerados como una alternativa gráfica al pseudocódigo, aunque sean más amplios en papel. Mucho se habla del pseudo código en las carreras de Analista de Sistemas y Programación. Pero no existe mucha bibliografía al respecto. En este articulo voy a tratar de echar un poco de luz sobre algo de lo que siempre se habla, pero que muchos no saben a ciencia cierta que es y como se usa. Comencemos aclarando que no es una forma de programación. Se trata de una herramienta que los analistas de sistemas utilizan para comunicar a los programadores la estructura del programa que van a realizar, de forma de tener una idea bien clara de lo que se necesita programar. Digamos que el pseudo código es una forma de diagramar un algoritmo para resolver un determinado problema, sin atenerse a ningún lenguaje de programación en especial. Un algoritmo es un conjunto de procedimientos que permiten resolver un problema. En vez de escribir el programa directamente en un lenguaje de programación determinado (C, Basic, etc.), crearemos un borrador entendible para todos, para luego de tener bien en claro lo que se debe hacer, pasar a la programación propiamente dicha.

No hay que confundirlo con un diagrama de flujo. En el diagrama de flujo se representa el transcurso del programa, el momento donde se obtienen los datos, cuando se procesan y el momento de presentar los resultados. Si bien son dos herramientas que se utilizan en conjunto, cada una representa dos partes distintas en el diseño de un sistema. El pseudo código se refiere a crear un código para orientar a los programadores, pero sin la sintaxis ni la estructura propia de ningún lenguaje. Aplicación Muchas veces, en los libros de texto y publicaciones científicas relacionadas con la informática y la computación numérica, se utilizan pseudocódigo en la descripción de algoritmos, de manera que todos los programadores puedan entenderlo, aunque no todos conozcan el mismo lenguaje de programación. Geneneralmente, en los libros de texto, hay una explicación que acompaña la introducción que explica las convenciones

25


particulares en uso. El nivel de detalle del pseudocódigo puede, en algunos casos, acercarse a la de formalizar los idiomas de propósito general. Un programador que tiene que aplicar un algoritmo específico, sobre todo uno desfamiliarizado, generalmente comienza con una descripción en pseudocódigo, y luego "traduce" esa descripción en el lenguaje de programación meta y lo modifica para que interactúe correctamente con el resto del programa. Los programadores también pueden iniciar un proyecto describiendo la forma del código en pseudocódigo en el papel antes de escribirlo en su lenguaje de programación, como ocurre en la estructuración de un enfoque de Top-down y Bottom-up arriba hacia abajo. Sintaxis En la actualidad y por lo general, el pseudocódigo, como su nombre lo indica, no obedece a las reglas de sintaxis de ningún idioma en particular ni es de forma estándar sistemática, a pesar de que cualquier escritor en particular vaya a pedir prestado las estructuras de control general, la sintaxis y el estilo, por ejemplo, de algún lenguaje de programación convencional. Pero en caso de que se quiera ejecutar, se debe llevar a forma tipo, para que no genere mensajes de error. Las fuentes populares incluyen la sintaxis de Pascal, BASIC, C, C++, Java, Lisp, y ALGOL. Por lo general, se omiten las declaraciones de variables. A veces, las llamadas a funciones, los bloques de código y el código contenido dentro de un loop se remplazan por una sentencia de una línea en lenguaje natural. Dependiendo del escritor, el pseudocódigo puede variar mucho en su estilo, yendo desde en un extremo, una imitación casi exacta de un lenguaje de programación real, hasta al acercarse a una descripción en prosa de formato de pseudocódigo en el otro extremo. Este es un ejemplo de pseudocódigo (para el juego matemático bizz buzz): Pseudocódigo estilo Fortran: programa bizzbuzz hacer i = 1 hasta 100 establecer print_number a verdadero si i es divisible por 3 escribir "Bizz" establecer print_number a falso si i es divisible por 5 escribir "Buzz"

Pseudocódigo estilo Pascal:

Pseudocódigo estilo C:

procedimiento bizzbuzz para i := 1 hasta 100 hacer establecer print_number a verdadero; Si i es divisible por 3 entonces escribir "Bizz"; establecer print_number a falso; Si i es divisible por 5 entonces

subproceso funcion bizzbuzz para (i <- 1; i<=100; i++) { establecer print_number a verdadero; Si i es divisible por 3 escribir "Bizz"; establecer print_number a falso; Si i es divisible por 5 escribir "Buzz";

26


establecer print_number a falso si print_number, escribir i escribir una nueva línea fin del hacer

escribir "Buzz"; establecer print_number a falso; Si print_number, escribir i; escribir una nueva lína; fin

establecer print_number a falso; Si print_number, escribir i; escribir una nueva línea; }

Características y partes

Las principales características de este lenguaje son: 1. Se puede ejecutar en un ordenador (con un IDE como por ejemplo SLE, LPP, PilatoX, Maruga Script, Seudocódigo o PSeInt. Otros Ides de consideración son Inter-P y Algor) 2. Es una forma de representación sencilla de utilizar y de manipular. 3. Facilita el paso del programa al lenguaje de programación. 4. Es independiente del lenguaje de programación que se vaya a utilizar. 5. Es un método que facilita la programación y solución al algoritmo del programa. Todo documento en pseudocódigo debe permitir la descripción de: 1. Instrucciones primitivas. 2. Instrucciones de proceso.... 3. Instrucciones de control. 4. Instrucciones compuestas. 5. Instrucciones de descripción. Estructura a seguir en su realización: 1. Cabecera. 1. Programa. 2. Módulo. 3. Tipos de datos. 4. Constantes. 5. Variables. 2. Cuerpo. 1. Inicio.

27


2. Instrucciones. 3. Fin. Definición de datos del pseudocódigo

La definición de datos se da por supuesta, sobre todo en las variables sencillas, si se emplea formaciones: pilas, colas, vectores o registros, se pueden definir en la cabecera del algoritmo, y naturalmente cuando empleemos el pseudocódigo para definir estructuras de datos, esta parte la desarrollaremos adecuadamente. Funciones y operaciones

Cada autor usa su propio pseudocódigo con sus respectivas convenciones. Por ejemplo, la instrucción "reemplace el valor de la variable por el valor de la variable " puede ser representado como: 

asigne a

el valor de

Las operaciones aritméticas se representan de la forma usual en matemáticas.

Estructuras de control

En la redacción del pseudocódigo se utiliza tres tipos de estructuras de control: las secuenciales, las selectivas y las iterativas. Estructuras secuenciales Las instrucciones se siguen en una secuencia fija que normalmente viene dada por el número de renglón. Es decir que las instrucciones se ejecutan de arriba hacia abajo. Las instrucciones se ejecutan dependiendo de la condición dada dentro del algoritmo.

28


Estructuras selectivas Las instrucciones selectivas representan instrucciones que pueden o no ejecutarse, según el cumplimiento de una condición.

Diagrama de flujo que muestra el funcionamiento de la instrucción condicional.

La condición es una expresión booleana. Instrucciones es ejecutada sólo si la condición es verdadera. Selectiva doble (alternativa) La instrucción alternativa realiza una instrucción de dos posibles, según el cumplimiento de una condición.

29


Diagrama de flujo que muestra el funcionamiento de la instrucción condicional.

La condición es una variable booleana o una función reducible a booleana (lógica, Verdadero/Falso). Si esta condición es cierta se ejecuta Instrucciones1, si no es así, entonces se ejecuta Instrucciones2. Selectiva múltiple También es común el uso de una selección múltiple que equivaldría a anidar varias funciones de selección.

30


En este caso hay una serie de condiciones que tienen que ser mutuamente excluyentes, si una de ellas se cumple las demás tienen que ser falsas necesariamente, hay un caso si no que será cierto cuando las demás condiciones sean falsas. En esta estructura si Condición1 es cierta, entonces se ejecuta sólo Instrucciones1. En general, si Condicióni es verdadera, entonces sólo se ejecuta Instruccionesi Selectiva múltiple-Casos Una construcción similar a la anterior (equivalente en algunos casos) es la que se muestra a continuación.

En este caso hay un Indicador es una variable o una función cuyo valor es comparado en cada caso con los valores "Valori", si en algún caso coinciden ambos valores, entonces se ejecutarán las Instruccionesi correspondientes. La sección en otro caso es análoga a la sección si no del ejemplo anterior.

31


Estructuras iterativas Las instrucciones iterativas representan la ejecución de instrucciones en más de una vez. Bucle mientras El bucle se repite mientras la condición sea cierta, si al llegar por primera vez al bucle mientras la condición es falsa, el cuerpo del bucle no se ejecuta ninguna vez.

Diagrama de flujo que muestra el funcionamiento de la instrucción mientras

Bucle repetir Existen otras variantes que se derivan a partir de la anterior. La estructura de control repetir se utiliza cuando es necesario que el cuerpo del bucle se ejecuten al menos una vez y hasta que se cumpla la condición:

La estructura anterior equivaldría a escribir:

32


Bucle hacer El Bucle hacer se utiliza para repetir un bloque de código mientras se cumpla cierta condición.

Bucle para Una estructura de control muy común es el ciclo para, la cual se usa cuando se desea iterar un número conocido de veces, empleando como índice una variable que se incrementa (o decrementa): Plantilla:Definiciones la cual se define como:

Bucle para cada Por último, también es común usar la estructura de control para cada. Esta sentencia se usa cuando se tiene una lista o un conjunto elementos:

y se quiere iterar por cada uno de sus

33


Si asumimos que los elementos de equivaldría a:

son

, entonces esta sentencia

Que es lo mismo que:

Sin embargo, en la práctica existen mejores formas de implementar esta instrucción dependiendo del problema. Es importante recalcar que el pseudocódigo no es un lenguaje estandarizado. Eso significa que diferentes autores podrían dar otras estructuras de control o bien usar estas mismas estructuras, pero con una notación diferente. Sin embargo, las funciones matemáticas y lógicas toman el significado usual que tienen en matemática y lógica, con las mismas expresiones. El anidamiento Cualquier instrucción puede ser sustituida por una estructura de control. El siguiente ejemplo muestra el pseudocódigo del ordenamiento de burbuja, que tiene varias estructuras anidadas. Este algoritmo ordena de menor a mayor los elementos de una lista .

34


En general, las estructuras anidadas se muestran indentadas, para hacer más sencilla su identificación a simple vista. En el ejemplo, además de la indentación, se ha conectado con flechas los pares de delimitadores de cada nivel de anidamiento. Desarrollo de algoritmo

Con este pseudocódigo se puede desarrollar cualquier algoritmo que: 

Tenga un único punto de inicio.

Tenga un número finito de posibles puntos de término.

Haya un número finito de caminos, entre el punto de inicio y los posibles puntos de término.

Funciones y procedimientos

Muchas personas prefieren distinguir entre funciones y procedimientos. Una función, al igual que una función matemática, recibe uno o varios valores de entrada y regresa una salida mientras que un procedimiento recibe una entrada y no genera ninguna salida aunque en algún caso podría devolver resultados a través de sus parámetros de entrada si estos se han declarado por referencia (ver formas de pasar argumentos a una función o procedimiento). En ambos casos es necesario dejar en claro cuáles son las entradas para el algoritmo, esto se hace comúnmente colocando estos valores entre paréntesis al principio o bien

35


declarándolo explícitamente con un enunciado. En el caso de las funciones, es necesario colocar una palabra como regresar o devolver para indicar cuál es la salida generada por el algoritmo. Por ejemplo, el pseudocódigo de una función que permite calcular (un número

elevado a potencia ).

Un ejemplo de procedimiento seria el algoritmo de Ordenamiento de burbuja, por el que partiendo de una lista de valores estos se ordenan, nótese que en un procedimiento, no se calcula el valor de una función, sino que se realiza una acción, en este caso ordenar la lista.

36


Ventajas del pseudocódigo sobre los diagramas de flujo

Los pseudocódigos presentan los siguientes beneficios: 1. Ocupan mucho menos espacio en el desarrollo del problema. 2. Permite representar de forma fácil operaciones repetitivas complejas. 3. Es más sencilla la tarea de pasar de pseudocódigo a un lenguaje de programación formal. 4. Si se siguen las reglas de identación se puede observar claramente los niveles en la estructura del programa. 5. En los procesos de aprendizaje de los alumnos de programación, éstos están más cerca del paso siguiente (codificación en un lenguaje determinado, que los que se inician en esto con la modalidad Diagramas de Flujo). 6. Mejora la claridad de la solución de un problema. 7. Ejemplos de Pseudocódigo 8. 9. Ejemplo: Realizar el pseudocódigo de un programa que permita calcular el área de un rectángulo. Se debe introducir la base y la altura para poder realizar el cálculo.. 10. Programa; área 11. Entorno: BASE, ALTURA, AREA son número enteros 12. Algoritmo: 13. escribir “Introduzca la base y la altura” 14. leer BASE, ALTURA 15. calcular AREA = BASE * ALTURA 16. escribir “El área del rectángulo es “AREA 17. Finprograma 18. Ejemplo: Realizar el pseudocódigo que permita al usuario introducir por teclado dos notas, calculando la suma y el producto de las notas. 19. Programa: SumaProducto 20. Entorno: NOTA1,NOTA2,SUMA,PRODUCTO son números enteros 21. Algoritmo: 22. escribir “Introduzca las notas” 23. leer NOTA1,NOTA2

37


24. calcular SUMA = NOTA1 + NOTA2 25. calcular PRODUCTO = NOTA1 * NOTA2 26. escribir “La suma de las dos notas es:” SUMA 27. escribir “El producto de las dos notas es :”PRODUCTO 28. Finprograma 29. 30. Ejemplo: Realizar el pseudocódigo de un programa que permita saber si un número es mayor, menor o igual a cero. 31. Programa: ComparaNúmeros 32. Entorno: NUMERO es un número entero 33. Algoritmo: 34. Escribir “Introduzca un número “ 35. leer NUMERO 36. SI NUMERO>0 ENTONCES 37. escribir “El número introducido es positivo” 38. SI NO 39. SI NUMERO<0 ENTONCES 40. escribir “El número introducido es negativo” 41. SI NO 42. escribir “El número es cero” 43. FINSI 44. FINSI 45. Finprograma 46. 47. 48. Supongamos un algoritmo que lea las coordenadas de tres puntos y los mueva tres puntos en la coordenada x y escriba el resultado en algún dispositivo de salida: 49. 50. ALGORITMO lee_tres_vertices 51. ENTRADA: las coordenadas (x,y) de tres puntos 52. SALIDA: las coordenadas (x,y) de los tres puntos movidos 3 puntos hacia la derecha. 53. VARIABLES: i:entera 54. x,y: real 55. INICIO 56. PARA i=1 HASTA 3 CON INCREMENTO +1 57. ESCRIBE "Abscisa del punto número ", i 58. LEER x 59. ESCRIBE "Ordenada del punto número ", i 60. LEER Y 61. ESCRIBE "El punto es (" x+3","y")" 62. FIN_PARA

38


63. FIN 64. El programa equivalente a este algoritmo se muestra a continuación. Como podemos apreciar en un programa en Pascal es importantísimo no olvidar detalles de sintaxis. Por ejemplo cada sentencia termina en punto y coma. De cualquier forma es inmediato apreciar los simples cambios existentes. 65. 66. program lee_tres_vertices; 67. var x,y:real; 68. i:integer; 69. begin 70. for i:=1 to 3 do 71. begin 72. write ('Abscisa del punto número ',i); readln(x); 73. write ('Ordenada del punto número ',i); readln(y); 74. writeln (' El punto es (',x+3,',',y,')'); 75. end; 76. end; 77. 78. Problema: calcular y mostrar la suma de los diez primeros números entre 1 y 1000 que sean divisibles por uno dado. 79. 80. programa suma_divisibles 81. variables natural : divisor, suma, contador, número 82. 83. inicio programa 84. divisor leer ‘Introduce el divisor: ’ 85. suma 0 86. contador 0 87. para número desde 1 hasta 1000 hacer 88. si divisor divide a número entonces 89. suma suma + número 90. contador contador + 1 91. fin si 92. si contador = 10 entonces 93. interrumpir 94. fin si 95. fin para 96. 97. escribir ‘La suma es’, suma 98. 99. fin programa 100. Utilización en la práctica 101. Manejo de condiciones, entradas y salidas

39


102.

Ejemplos

Utilización en la práctica En el trabajo de un analista de sistemas, una de las partes más trabajosas es la de determinar que es lo que necesitan de un sistema los usuarios finales. Se dedican muchas horas a hacer un relevamiento de los datos que serán necesarios, los tipos de procesamientos, las salidas, etc. Y debe existir una realimentación entre el diseño y el usuario, para garantizar que el sistema cumpla con los requisitos del usuario.

Supongamos que tenemos un sistema para una empresa que utiliza una interfaz gráfica en Visual Basic, algunas aplicaciones específicas en C, y páginas PHP para trabajo vía Internet. Seguramente que crear un diagrama específico para cada lenguaje sería una tarea tediosa. Gracias a esta herramienta, podemos reunir a todos los programadores, dar las pautas de trabajo, y mediante el pseudo código, cada programador sabrá lo que hace el sistema, y podrá escribir el código correspondiente. Incluso dos programadores que dominen el mismo lenguaje pueden tener metodologías de trabajo distintas. Un problema puede ser resuelto de muchas maneras, cada una más o menos eficiente que la otra, pero todas cumplen con el objetivo.

40


El pseudo código elimina estas diferencias, dando libertad a los programadores para que puedan ajustarse a su metodología de trabajo. Generalmente, este código se escribe con la participación de todos los programadores. Esto representa la ventaja de que muchas opiniones ayudan a elegir la mejor entre todas, logrando una solución efectiva y eficaz al problema planteado. Manejo de condiciones, entradas y salidas Gran parte de la programación se basa en evaluación de variables, para luego mostrar un resultado, ya sea por pantalla o por impresora. Dos o más variables se comparan en base a un patrón predefinido, y en base a ello se ejecuta una u otra acción. A continuación voy a escribir pseudo código que puede utilizarse para representar sentencias condicionales. Ejemplos Vamos a realizar una pequeña práctica para aprender a utilizar esta sencilla pero eficaz herramienta en el análisis de sistemas. Crearemos dos programas distintos, utilizando C y Basic como ejemplos de codificación. Programa 1: Voy a detallar los procesos para que se entienda el mecanismo. En el segundo programa va a estar solo el pseudo código. Necesitamos un programa que en base a diez notas de distintos exámenes de un alumno, nos genere automáticamente el promedio. Y si el promedio es mayor o igual a 7, nos dará un mensaje de aprobación. En caso contrario, nos avisará que el alumno no aprobó. Inicio Luego, debemos ingresar los datos por teclado, en un bucle de 10 ingresos, y guardar en alguna variable las notas Desde 1 a 10 { leer dato suma_notas=suma_notas + dato

41


Una vez que tengamos todos los datos, debemos utilizar un procedimiento para calcular el promedio Promedio=suma_notas/10 Ahora debemos utilizar otro procedimiento para calcular si el alumno aprobó o no. Para ello se utilizará una condición. Si (promedio=>7) entonces { imprimir "El alumno aprobó" } Sino { imprimir "El alumno no aprobó" } Fin si Finalmente, debemos terminar el programa Fin De esta manera tenemos definida la estructura del programa. Como pueden observar, la estructura se comprende muy fácilmente, y en base a esto cualquier programador puede traducirlo al lenguaje que domine, para luego compilarlo. Si escribiésemos este programa, por ejemplo, en C, no sería tan fácil de comprender para aquellos programadores que trabajen con Basic, y viceversa. No solo por la sintaxis, sino por la estructuración propia del lenguaje. Vamos a ver este programa escrito en los dos lenguajes antes mencionados. A ver si notan las diferencias. Programa escrito en C #include <stdio.h> viod main() { int numero=0, i=0; double promedio=0.00; for(i==0;i<10;i++) { scanf("%d",&numero); promedio=promedio+numero; } promedio=promedio/10; if(promedio>=7) { printf("\nEl alumno aprobó"); } else { printf("\nEl alumno no aprobó");

42


} Programa escrito en Basic DIM numero, i AS INTEGER DIM promedio AS DOUBLE FOR i=0 TO 9 INPUT "", numero promedio=promedio+numero NEXT i promedio=promedio/10 IF (promedio>=7) THEN PRINT "El alumno aprobó" ELSE PRINT "El alumno no aprobó" ENDIF END Los dos programas realizan el mismo trabajo, pero con distinta estructura y sintaxis. El pseudo código, como podrán deducir, sirve para evitar confusiones entre el analista de sistemas y los programadores, o entre programadores. Programa 2: En este programa vamos a incluir el diseño de un diagrama de flujo, para ver la relación entre este y el pseudo código. Se solicita al operador que ingrese tres números enteros cualesquiera. En base a estos números, mostrar por pantalla cual es el mayor de todos. Este programa hace uso de condiciones al igual que el anterior. Primero diseñaremos el diagrama de flujo, para observar como funciona el programa.

43


Como podemos observar, con el diagrama de flujo podemos hacer un seguimiento de lo que har谩 el programa ante cada estado de las variables en uso. Seguidamente escribamos el pseudo c贸digo para tener una idea de c贸mo vamos a escribir el programa en el lenguaje que utilicemos. Inicio Variable1=0 Variable2=0 Imprimir "Ingrese tres n煤meros enteros cualesquiera" Desde 1 a 3

44


{ variable1=leer desde teclado si (variable1>variable 2) entonces { variable2=variable1 } sino { no hacer nada } fin si } imprimir "El mayor valor ingresado es " imprimir variable2 Fin Ahora veamos la codificaci贸n en C y Basic. Programa escrito en C #include <stdio.h> viod main() { int variable1=0, i=0, variable2=0; printf("\nIngrese tres n煤meros enteros cualesquiera "); for(i==0;i<3;i++) { scanf("%d",&variable1); if(variable1>variable2) { variable2=variable1; } else { } } printf("\nEl mayor valor ingresado es %d",&variable2); } Programa escrito en Basic DIM variable1, variable2 AS INTEGER variable1=0 variable2=0 FOR i=0 TO 2 INPUT "", variable 1 IF (variable1>variable2) THEN variable2=variable1 ELSE

45


ENDIF NEXT i PRINT "El mayor valor ingresado es " PRINT variable2 END Con este trabajo pretendo dar una idea clara sobre esta herramienta, para que puedan utilizarla en el trabajo diario, junto con tantas otras de las que dispone el análisis y diseño de sistemas. Cualquier corrección, duda o sugerencia pueden escribir a Espero que les sea de utilidad.

Componentes de un Diagrama de Flujo de Datos (DFD) según la notación de Yourdon y DeMarco. Un diagrama de flujo de datos (DFD sus siglas en español e inglés) es una representación gráfica del flujo de datos a través de un sistema de información. Un diagrama de flujo de datos también se puede utilizar para la visualización de procesamiento de datos (diseño estructurado). Es una práctica común para un diseñador dibujar un contexto a nivel de DFD que primero muestra la interacción entre el sistema y las entidades externas. Este contexto a nivel de DFD se "explotó" para mostrar más detalles del sistema que se está modelando.

46


Los diagramas de flujo de datos fueron inventados por Larry Constantine, el desarrollador original del diseño estructurado, basado en el modelo de computación de Martin y Estrin: "flujo gráfico de datos" . Los diagramas de flujo de datos (DFD) son una de las tres perspectivas esenciales de Análisis de Sistemas Estructurados y Diseño por Método SSADM. El patrocinador de un proyecto y los usuarios finales tendrán que ser informados y consultados en todas las etapas de una evolución del sistema. Con un diagrama de flujo de datos, los usuarios van a poder visualizar la forma en que el sistema funcione, lo que el sistema va a lograr, y cómo el sistema se pondrá en práctica. El antiguo sistema de diagramas de flujo de datos puede ser elaborado y se comparó con el nuevo sistema de diagramas de flujo para establecer diferencias y mejoras a aplicar para desarrollar un sistema más eficiente. Los diagramas de flujo de datos pueden ser usados para proporcionar al usuario final una idea física de cómo resultarán los datos a última instancia, y cómo tienen un efecto sobre la estructura de todo el sistema. La manera en que cualquier sistema es desarrollado, puede determinarse a través de un diagrama de flujo de datos. modelo de datos. niveles, los cuales son: Nivel 0: Diagrama de contexto. Nivel 1: Diagrama de nivel superior. Nivel 2: Diagrama de detalle o expansión. Características de los niveles Diagrama de Contexto: Nivel 0 En el diagrama de contexto se caracterizan todas las interacciones que realiza un sistema con su entorno (entidades externas), estas pueden ser otros sistemas, sectores internos a la organización, o factores externos a la misma. Se dibuja un sólo proceso que representa al sistema en cuestión y se escribe su nombre en dicha burbuja como un sustantivo común más adjetivos. De él solamente parten los flujos de datos que denotan las interrelaciones entre el sistema y sus agentes externos, no admitiéndose otros procesos ni almacenamientos en el dibujo. Resulta de gran utilidad para los niveles posteriores de análisis como herramienta de balanceo. Y es conocido como el Diagrama de Flujo de Datos DFD de Nivel "0" Diagrama de Nivel Superior: Nivel 1

47


En el diagrama de nivel superior se plasman todos los procesos que describen al proceso principal. En este nivel los procesos no suelen interrelacionarse directamente, sino que entre ellos debe existir algún almacenamiento o entidad externa que los una. Esta regla de construcción sirve como ayuda al analista para contemplar que en un nivel tan elevado de abstracción (DFD Nivel 1) es altamente probable que la información que se maneja requiera ser almacenada en el sistema aunque no esté especificado por un Requisito funcional, siendo en realidad un requisito no-funcional. Diagrama de Detalle o Expansión: Nivel 2 En un diagrama de nivel 2 o mayor, comienzan a explotarse las excepciones a los caminos principales de la información dado que aumenta progresivamente el nivel de detalle. De aquí en adelante se permiten los flujos entre procesos. El DFD (Diagrama De Flujo De Datos) nivel 2 puede considerarse el máximo para ser validado en forma conjunta con el usuario dado que en los niveles posteriores el alto grado de complejidad del diagrama puede resultar de muy difícil lectura para personas ajenas al equipo de sistemas. También se recomienda el diagrama de nivel superior. DFD’s • Muestran en forma visual sólo el flujo de datos entre los distintos procesos, entidades externas y almacenes que conforman un sistema. • Cuando los analistas de sistemas indagan sobre los requerimientos de información de los usuarios, deben ser capaces de concebir la manera en que los datos fluyen a través del sistema u organización, los procesos que sufren estos datos y sus tipos de salidas. OBJETIVOS DE UN DIAGRAMA DE FLUJO a. Estructura la solución del problema independiente del lenguaje a utilizar.

48


b. Separar la solución lógica de programación de la parte de reglas y sintaxis de codificación con esta división del trabajo se obtiene mayor eficiencia. c. Dar una visión completa del problema al programador ya que pierde en un programa ya codificado. d. Permitir una compresión más rápida del programa a otros programadores. TIPOS DE DIAGRAMA DE FLUJOS Diagrama de flujo de sistemas: muestra en que forma se procesan los datos, entre as principales funciones o estaciones de trabajo .En este diagrama completo de computadora se presenta con un solo símbolo de procesamiento. Ejemplo de Diagrama de Flujo de sistema:

DIAGRAMA DE FLUJOS DE PROGRAMACIÓN Son las operaciones y decisiones en la secuencia en que las ejecutará una computadora de procesamiento de datos. Los símbolos representan esas operaciones e indican el orden en que se ejecutaran. Por lo tanto, un diagrama de flujo de programa proporciona una descripción grafica del programa. Ejemplo de Diagrama e Flujo de Programa:

49


SIMBOLOGÍA DE LOS DIAGRAMAS DE FLUJO Las diversas organizaciones usan distintos símbolos, pero el comité sobre computadoras y procesadores de información de la Asociación Norteamericana de Normas ha hecho un gran esfuerzo para normalizar los símbolos de los diagramas de flujo. Esa normalización permite comprender cualquier diagrama de flujo que use los símbolos recomendados. Cada símbolo normal de diagrama de flujo tiene un significado especial.

Expresa Inicio o Fin de un Programa.

50


Expresa operación algebraica o de asignación.

Expresa condiciones y asociaciones alternativas de una decisión lógica.

Expresa condición y acciones alternativas de una decisión numérica.

Entrada / Salida: Representa cualquier tipo de Fuente de entrada y salida

Entrada: Lectura de datos por tarjeta perforadas.

Conector dentro de página.

51


Representa resultado mediante un reporte impreso

Conector fuera de página.

Expresa operación cíclica repetitiva.

Expresa proceso de llamada a una subalterna.

Representa datos grabados en una cinta magnética.

Almacenamiento en línea Disco Magnético. REGLAS PARA ESTRUCTURAR UN DIAGRAMA DE FLUJO  

El sentido de un diagrama de flujo generalmente es de arriba hacia abajo. Es un símbolo solo puede entrar una flecha de flujo si varias líneas se dirigen al mismo símbolo, se deben unir en una sola flecha.

Las líneas de flujo no deben cruzarse, para evitar los cruces se utilizan los conectores.

52


 

De un símbolo excepto el de decisión, solo puede salir una línea de flujo. Los símbolos Terminal, Conector dentro de página y conector fuera de página solo pueden estar conectados al diagrama por una sola flecha, ya que por su naturaleza es imposible que tenga una entrada y una de salida. Los émbolos de decisión tendrán siempre una sola flecha de entrada y dos o tres flechas de salida según la cantidad de alternativas que se presentan. Un diagrama de flujo debe estar complemente cerrado, teniendo una continuidad de principio a fin, no pueden quedar flechas en el aire ni símbolos sin conexión al diagrama pues el flujo seria interrumpido. CONSIDERACIONES SOBRE DIAGRAMA DE FLUJO Un diagrama de flujo, puede tener tipos de errores diferentes: DE FORMA: Se genera por no seguir las reglas establecidas, puede hacer el diagrama difícil interpretación, confundir el diagrama y hasta convertirlo en errado en cuanto ser lógica. DE LÓGICA: Son errores de estructura del diagrama en cuanto al arden puede ser de distinta gravedad, desde dejar de mostrar el resultado. O falta un cálculo hasta un error que determine que un programa nunca llegue a su fin. DE OBJETIVO: Es cuando un diagrama de flujo esta correcto en cuanto a su estructura y forma pero no soluciona el problema propuesto sino otro. Una vez terminado e diagrama de flujo, es necesario asegurarse de que funcione correctamente cumpliendo el objetivo fundamental, las condiciones especificas y las excepciones del problema propuesto a esto se le llama generalmente "corrida en frió" prueba de escritorio. Para ellos e selecciona algunos datos (creadas por el programador para fines de la prueba) que cubran todos los casos posibles en todas las condiciones. Tomando estos datos se recorre el diagrama de flujo símbolo a símbolo siguiendo la orden de cada uno de ellos, todo esto se hará a un lado del diagrama o en una hoja aparte dándole valores a variables y ejecutando operación que se indique .Ejemplo:

53


¿QUÉ ES UN DIAGRAMA DE FLUJO DE DATOS?

   

Es una descripción grafica de un procedimiento para la resolución de un problema. Son frecuentemente usados para descubrir algoritmos y programas de computador. Los diagramas de flujos están compuestos por figuras conectadas con flechas. Para ejecutar un proceso comienza por el Inicio y se siguen las acciones indicadas por cada figura: El tipo de figura indica el tipo de paso que representa. Del Software, DFD es un software diseñado para contribuir y analizar algoritmos se puede crear diagramas de flujos de datos para la representación de algoritmos de programación estructurada a partir de las herramientas de edición que para este propósito suministra el programa .Después de hacer haber ingresado el representado por el diagrama, podrá, ejecutarlo analizarlo y depurarlo en un entorno interactivo diseñado para este fin. La interfaz grafica de DFD facilita en gran medida el trabajo con diagramas ya que simula la representación estándar de diagramas de flujo en hojas de papel. LOS COMPONENTES DE UN DIAGRAMA DE FLUJO SON: Proceso Flujo Almacén Terminador

54


PROCESO: El primer componente de diagrama de flujo de datos se conoce como Proceso. El proceso nuestra una parte del sistema que transforman Entradas y Salidas. Algunas analistas prefieren usar un ovalo o un rectángulo con esquinas redondeadas, otros prefieren usar un rectángulo. Las diferencias entre estas tres formas son puramente cosméticas, aunque obviamente es importante usar la misma forma de la manera consistente para representar todas las funciones de un sistema.

FLUJO: Un flujo se representa gráficamente por medio de una flecha que entra y sale de proceso; el flujo se usa para describir el movimiento, de bloques o paquetes de información de una parte del sistema a otra. Los flujos realmente representan Datos, es decir, Bits caracteres, mensajes, números, de puntos, flotante y los diversos tipos de información con los que las computadoras pueden tratar. Los flujos también muestran la dirección: Una cabeza de flecha en cualquier extremo(o posiblemente ambos) del flujo indica si los datos (o el material) se esta moviendo hacia adentro a hacia fuera por ejemplo indica claramente que el numero se esta mandando hacia el proceso denominado validar numero telefónicos, y el flujo denominado honorarios de entrega de chóferes. Los datos que se mueven a dicho flujo viajaran ya sea de un proceso a otro. Ejemplo:

55


 

ALMACÉN: Se utiliza para modelar una colección de paquetes de datos en reposo. Se denota por dos líneas paralelas, de modo característico el nombre que se utiliza para identificar para los paquetes que entran y salen del almacén por medios de flujo. PEDIDOS: Para el analista con conocimiento de proceso de datos es tentador referirse a los almacenes como archivos o bases de datos; pro un almacén también pudiera consistir en datos almacenados también pudiera consistir en datos almacenados en tarjetas perforadas, microfilm, microfichas, discos ópticos, etc. y un almacén también puede ser en conjunto de fichas de papel en una caja de cartón , nombres de fichas de papel en un directorio, diversos archivos en un archivero, o varias formas no computarizadas. Los almacenes se conectan por flujos a los procesos. Así el contexto en el que se muestra en un DFD (Diagrama de Flujo de Datos) es uno de los siguientes: Un flujo desde un almacén. UN flujo hacia un almacén. TERMINADOR: Se representa como un rectángulo como los terminadores ser representa en entidades externas con las cuales el sistema se comunica, continuamente, puede ser una persona, o un grupo. Por ejemplo: una organización externa n o una agencia gubernamental, o un grupo o departamento que este dentro de la misma compañía u organización, pero fuera del control del sistema que se esta modelando. En algunos casos, un terminador puede ser otro sistema, como algún otro sistema computacional con el cual se comunica este.

56


  

Existen tres cosas importantes que debemos recordar acerca de los terminadores. Son externos al sistema que se esta modelando. Es evidente que ni el analista ni el diseñador del sistema están en posibilidades de cambiar los contenidos de un terminador o la manera en que esta trabaja. Las relaciones que existen entre lo terminadores no se muestran en el modelo DFD (Diagrama de Flujo de Datos). REGLAS PARA LA CREACIÓN DE DIAGRAMAS 1. Los diagramas de flujo deben escribirse de arriba hacia abajo y/o de Izquierda a derecha. 2. Los símbolos se unen con líneas, las cuales tienen en la punta una flecha que indica su dirección que fluye la información procesos, se deben utilizar solamente líneas de flujo horizontal o vertical (nunca diagonales). 3. Se debe evitar el cruce de líneas, para lo cual se quisiera separar el flujo del diagrama a un sitio distinto, se pudiera realizar utilizando los conectores, se debe tener en cuenta que solo se van a utilizar conectores cuando sean estrictamente necesario. 4. No deben quedar líneas de flujo sin conectar. 5. Todo texto escrito dentro de un símbolo debe ser legible, preciso, evitando el uso de muchas palabras. 6. Todos los símbolos pueden tener mas de una línea de entrada, a excepto del símbolo final. 7. Solo los símbolos de decisión pueden y deben tener mas de una línea de flujo de salida. Ejemplo de Diagrama de Flujo: Diagrama de flujo que encuentra la suma de los primeros 50 números naturales.

57


ď&#x201A;ˇ

El quinto bloque es un sĂ­mbolo de suma de decisiones y ramificaciones lo q hay dentro del bloque es una pregunta que se le hace a las valores que actualmente incluyen en el proceso.

58


¿Es N=50?, obviamente la respuesta es No, ya que N todavía es 1.Por lo que el flujo de nuestro programa se dirigirá hacia la parte en donde se observa la palabra No. Tercer bloque, este le sumara1 (N=N+1) y vuelve a llegar a este bloque, donde preguntará ¿es N=50? No todavía es 2 ha pues regresa al tercer bloque y vuelve hacer lo mismo así la suma los primeros 50 números naturales. Por ultimo indicaciones que le resultado será mostrado en la impresora.

EXPLICACIÓN DEL DIAGRAMA DE FLUJO 

El primer bloque indica el inicio del diagrama de flujo.

El segundo bloque, es un símbolo de procesos.

59


En este bloque se asume que las variables suman y N ha sido declarada previamente y las inicializa en o para comenzar al conteo y la suma de valores. Tercer bloque, es también un símbolo de procesos.

En este paso se incrementa en 1 la variable N(N=N+1), por lo que en la primera pasada esta valdrá 1, ya que estaba inicializada en 0. Cuarto bloque, es exactamente lo mismo que el anterior.

Pero en este, ya se agrega el valor de N a la variable que contendrá la suma (en el primer caso contendrá 1, ya que N=1). VENTAJAS DEL ENFOQUE DE FLUJOS DE DATOS El enfoque de flujo de datos tiene cuatro ventajas principales sobre la explicación narrativa de la forma en que se mueven los datos a trabes del sistema .Las ventajas son. 1. Libertad para realizar en forma muy temprana la implementación de técnicas de sistema. 2. Una mayor comprensión de las interrelaciones de los sistemas y subsistemas. 3. Comunicación del conocimiento del sistema actual a los usuarios por medio de diagramas de flujo de datos. 4. Análisis de un sistema propuesto para determinar si han sido definidas los datos y procesos necesarios. SÍMBOLOS USADOS EN EL DIAGRAMA DE FLUJO DE DATOS

60


SIGNIFICADO DE LOS SÍMBOLOS DE FLUJO El cuadrado doble es representado y usado para una actividad externa (otro departamento, un negocio, una persona, o una maquina) que puedan enviar datos y recibirlas del sistema. La entidad externa es llamada una fuente de destino de datos y es considerada externa al estudio, cada entidad externa es etiquetada con un nombre adecuado. La flecha muestra el movimiento de datos de un punto a otro , esta señalada hacia suceden simultáneamente pueden ser representadas simplemente mediante el uso de flechas paralelas, debido a que una flecha representada datos acerca de una persona lugar o casa, también :Debe ser descrita con un nombre. Un rectángulo con esquinas redondeadas es usado para mostrar la aparición de un proceso de transformación. Los procesos siempre denotan un cambio o transformación de los datos. USO DE DIAGRAMAS DE FLUJO DE DATOS

   

Los diagramas de flujo de datos son útiles a lo largo del proceso de análisis y diseños, .Existen compromisos para decidir que tanto deben ser explotados de los flujos de datos. Se desperdiciara tiempo y se sacrificara complusibilidad si los diagramas de flujo de datos son exclusivamente complejos. Por otro lado, si los diagramas de flujo de datos están muy poco explotados, pueden ocurrir errores u omisiones que pueden eventualmente afectar el sistema que esta en desarrollo. Por ultimo, recuerde que los diagramas del sistema de flujo pueden ser usados para documentar niveles altos o bajos del análisis y para ayudar a sustentar la lógica subyacente en los flujos de datos de la organización. CARACTERÍSTICAS DE LOS DIAGRAMAS DE FLUJO DE DATOS Muestran que debe hacer el sistema sin referencias. Son diagramas explícitos y comprensibles. Dan la posibilidad de representan el sistema a diferentes niveles de complejidad, desde lo mas global a lo mas detallado solo requieren de 4 símbolos. Son fácil de mantenimiento, pues los cambios afectan solo algunos de sus elementos y no al todo.

61


  

  

¿CUÁLES SO LAS VENTAJAS DE LOS DIAGRAMAS DE FLUJO DE DATOS? Fácil lectura, con esto se constituye en un instrumento de mucha versatilidad. Facilitan la interacción Usuario-Analista.

¿CUÁLES SON LAS LIMITACIONES DE LOS DIAGRAMAS DE FLUJO DE DATOS? No permite recoger el comportamiento de sistema que deben responder a eventos en tiempos acotados. Para ello se usa el diagrama de transición de Estados. No permite dar cuenta de la de las relaciones entre los datos que se precisan almacenar .Para ello se usan el diagrama Entidad-Relación. No permite reflejar situaciones en las cuales es preciso dejar de manifiesto la necesaria concurrencia de dos o más flujo de datos para un subproceso pueda iniciar efectivamente su tarea. Para ello se utiliza la especificación de procesos. No permite recoger el contenido de los flujos de datos ni el contenido de los archivos .Para ello se utiliza el diccionario de datos.

CONCLUSIÓN: Muchas personas consideran a un algoritmo y a un diagrama de flujo de datos como herramienta de gran importancia para la programación de computadora y están en lo cierto para la resolución de problemas mediante algoritmos y diagramas de flujo se ha convertido hoy en día en un instrumento efectivo para el desarrollo de habilidades y destrezas lógicas de y creativas del pensamiento humano. Hoy diferentes formas de resolver un problema, esto es debido a la forma de razonar del ser humano, al igual que cada algoritmo, o diagrama de flujo de datos elaborado. El término lógica define la exposición de leyes, modos y formas aplicadas al razonamiento. El ser humano aplica la lógica para la resolución de problemas de diferentes tipos. Algunos instructores del área de computación no hace mucho hincapié sobre el desarrollo de algoritmo y diagramas de flujo de datos

62


Trabajo de computación