Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Algoritmos y Diagramas de Flujo

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 14

República Bolivariana De Venezuela

Ministerio Del Poder Popular Para La Defensa


Universidad Nacional Experimental Politécnica De La Fuerza Armada Nacional
Bolivariana
Núcleo Bolívar - Puerto Ordaz
I Semestre De Análisis Y Diseño De Sistemas Sección 1

Asignatura: ALGORITMOS Y DIAGRAMAS DE FLUJO


Ingeniero: Víctor Velásquez

Bachiller(es):
López, Yurimar C.I.: 18.787.162
Lira, Yurima C.I: 21.339.614
Bravo, Josmarys C.I.: 32.255.794
Antony lobaton C.I.: 30.932.628

San Félix, 26 de mayo del 2024.


¿Qué es un algoritmo informático?
Un algoritmo informático es un conjunto de instrucciones definidas,
ordenadas y acotadas para resolver un problema, realizar un cálculo o
desarrollar una tarea. Es decir, un algoritmo es un procedimiento paso a paso
para conseguir un fin. A partir de un estado e información iniciales, se siguen una
serie de pasos ordenados para llegar a la solución de una situación.
En programación, un algoritmo supone el paso previo a ponerse a escribir
el código. Primero debemos encontrar la forma de obtener la solución al
problema (definir el algoritmo informático), para luego, a través del código, poder
indicarle a la máquina qué acciones queremos que lleve a cabo. De este modo,
un programa informático no sería más que un conjunto de algoritmos ordenados
y codificados en un lenguaje de programación para poder ser ejecutados en un
ordenador.
Características de los algoritmos informáticos:
Un algoritmo informático presenta una serie de características comunes,
estás son:
•Precisos: Son objetivos, no tienen ambigüedad.
•Ordenados: Presentan una secuencia clara para poder llegar a la
solución.
•Finitos: Contienen un número específico de pasos.
•Concretos: Ofrecen una solución determinada para la situación o
problema planteado.
•Definidos: El mismo algoritmo debe dar el mismo resultado al recibir la
misma entrada.
Tipos de algoritmos
1. Algoritmos cualitativos
Los algoritmos cualitativos son todos aquellos algoritmos en los que los
pasos que lo componen se describen de una forma narrada con un lenguaje
natural. Un algoritmo es una secuencia de pasos ordenados y lógicos que se
llevan a cabo con el objeto de resolver un problema determinado.
Así, si se tiene una entrada y un estado inicial, al seguir los pasos en el orden
indicado se llegará a un estado final, obteniéndose una solución.
Los algoritmos cualitativos se emplean con frecuencia en la vida cotidiana
para resolver problemas. Por ejemplo: las instrucciones de uso que traen los
equipos electrónicos, las instrucciones para el montaje de un equipo, las técnicas
de laboratorio para evaluar ácidos, etc.
2. Algoritmos cuantitativos
Los algoritmos cuantitativos son aquellos algoritmos que utilizan
operaciones algebraicas y cálculos numéricos específicos para definir un
proceso, obteniendo valores concretos. Por ejemplo, el resultado de una resta o
una multiplicación.
En las ciencias de la computación, en las matemáticas y otras disciplinas
afines, un algoritmo es un conjunto finito y ordenado de instrucciones que permite
efectuar una actividad por medio de pasos sucesivos que no generan dudas a
quien deba ejecutar estas acciones, llevando a la solución de un
Algunos ejemplos en matemáticas son el algoritmo de la división para
calcular el cociente de dos números, el algoritmo de multiplicación para calcular
un producto, el método de Gauss para solucionar un sistema de ecuaciones
lineales, o el algoritmo de Euclides para obtener el máximo común divisor de
Estructura de un algoritmo
 Sección de Encabezado
Es un archivo que contiene declaraciones de funciones, estructuras,
macros y otros elementos que serán utilizados en uno o varios programas.
 Declaraciones
Una declaración establece los nombres y características de los objetos de
datos utilizados en un programa. Una definición asigna almacenamiento para
objetos de datos y asocia un identificador con ese objeto. Cuando declara o
define un tipo, no se asigna ningún almacenamiento.
 Cuerpo del algoritmo
o Entradas
Las entradas son todos aquellos insumos que se requieren para el
adecuado procesamiento de los datos y que se definirán como variables,
teniendo en cuenta el tipo de dato que puede representar y ellos se detallan en
el siguiente capítulo con más énfasis.
o Procesos
Los procesos son los diversos métodos o instrucciones mediante las
cuales se realizan cambios a las entradas para convertirlas en un resultado; de
tal manera que las entradas pueden variar o simplemente jugar el papel de llevar
sus valores a otro dato para que este sea entregado ya sea a otro proceso o
como resultado final.
o Salidas
Son los valores o resultados que se generan después de una operación o
proceso, en el ejemplo anterior se puede ver que la salida, se compone de dos
partes, el mensaje final, que es la cadena: “el cuadrado del número es:” y el valor
de cuadrado que se visualiza para el usuario.
Expresión
Una expresión es una combinación de operadores y operandos. • A
continuación se describirán las:
Expresiones Aritméticas
Se refieren a las operaciones aritméticas simples entre dos operandos
(que pueden ser constantes o variables numéricas) mediante un operador
aritm&3acute;tico. Se pueden realizar expresiones aritméticas compuestas
uniendo operaciones aritméticas simples.
• En las expresiones aritméticas los operandos que intervienen son
numéricos y se construyen mediante los operadores aritméticos. Se pueden
considerar análogas a las formulas matemáticas.
• El orden en que se ejecutan las operaciones para escribir correctamente
la expresión aritmética debe seguir el orden de prioridad siguiente:

Expresiones Lógicas
Son aquellas que pueden tomar uno de dos valores, verdadero o falso.
Cuando el resultado de la evaluación de la expresión es un valor lógico
(cierto o falso). Se construye mediante
Operadores relacionales
Operan sobre operandos (constantes, variables, expresiones) de
diferentes tipos (numéricos, caracteres) y dan como resultado un valor de tipo
lógico (cierto o falso; 1 o 0).
Operadores lógicos
Operan sobre operandos (constantes, variables, expresiones) de tipo
lógico (cierto o falso) y evalúan a un valor de tipo lógico (cierto o falso). Los
operadores lógicos básicos son: AND, OR y NOT.

Instrucciones de Entrada y Salida


La instrucción de asignación nos permite obtener nuevos valores a partir
de otros ya conocidos, pero no nos permite comunicar esos valores hacia y
desde el mundo externo. Esta función es realizada por las Instrucciones de
entrada/salida.
Estructura de datos
Las estructuras de datos son un modo de representar información en una
computadora, aunque además, cuentan con un comportamiento interno. ¿Qué
significa? Que se rige por determinadas reglas/restricciones que han sido dadas
por la forma en que está construida internamente.
Variables
Una variable refiere, en una primer instancia, a cosas que son
susceptibles de ser modificadas (de variar), de cambiar en función de algún
motivo determinado o indeterminado.
Constantes
Son datos que su valor no va a cambiar durante todo el desarrollo del
algoritmo, las constantes pueden tener o no un identificador, pues estos valores
pueden escribirse directamente al usar las operaciones o bien asignarle un
identificador, las constantes también tienen un tipo de dato.
Matrices
Las matrices son un conjunto bidimensional de números o símbolos
distribuidos de forma rectangular, en líneas verticales y horizontales, de manera
que sus elementos se organizan en filas y columnas. Sirven para describir
sistemas de ecuaciones lineales o diferenciales, así como para representar una
aplicación lineal.
Arreglo
Un arreglo es un objeto contenedor que contiene un numero fijo de valores
de un solo tipo. La longitud se establece cuando se crear el arreglo. Después de
la creación, su longitud es fija.
Registro
Un registro es una estructura de datos que permite almacenar un conjunto
de elementos no necesariamente del mismo tipo. Un registro normalmente
almacena un conjunto de datos que están relacionados entre si.
Archivos
Un archivo es un fichero (dato) almacenado en algún recurso de memoria,
generalmente en Disco Duro, pero dependiendo del uso (en ciertos casos) son
almacenados en RAM.
Un Fichero tiene muchas funciones, en programación, estos almacenan
códigos o parte de ellos (en ocasiones se divide el código en varios archivos).
También es posible que se necesita almacenar datos que el usuario introduce
("Como sus datos, nombre de usuario y contraseña, etc.), estos se empaquetan
en un archivo y podrán ser usados luego por el programa, por ejemplo, cuando
el usuario desee loguearse de nuevo.
Estructuras de control
Las estructuras de control son el conjunto de reglas que permiten controlar
el flujo de ejecución de las instrucciones de un algoritmo o de un programa.
La mayoría de los lenguajes de programación actuales soportan o utilizan
las mismas estructuras de control o, al menos, son muy parecidas. Lo que varía
entre uno y otro es la sintaxis con la que se escriben y, por lo tanto, con la que
los compiladores o intérpretes lo traducen a lenguaje de máquina.
Tipos de estructuras de control en programación
Secuenciales o de secuencia
Esta es la estructura básica, ya que nos permite asegurar que una
instrucción se ejecuta después de la otra siguiendo el orden en que fueron
escritas. Es la base de la programación estructurada. De ahí que el comando
GOTO sea desestimado como una buena práctica: un programa bien pensado,
diseñado e implementado no necesitará esta sentencia.
Selectivas, de selección o condicionales
Este tipo de estructuras de control nos sirven cuando necesitamos que se
evalúe el valor de alguna variable o de alguna condición para decidir qué
instrucciones ejecutar a continuación.

 Selectivas simples
Evalúan un valor o una condición y determinan las instrucciones a ejecutar
en caso de cumplirse la condición.

 Selectivas dobles
Evalúan un valor o una condición. Determinan las instrucciones a ejecutar
en caso de cumplirse la condición y también las instrucciones a ejecutar en caso
de no cumplirse.
 Selectivas múltiples o anidadas
Permiten combinar selectivas simples y dobles para crear estructuras y
condiciones más complejas cuando el algoritmo en cuestión lo necesite.

Iterativas, de iteración, de repetición o repetitivas


Este tipo de estructuras de control nos sirven cuando necesitamos que se
ejecute un conjunto específico de instrucciones en diversas ocasiones. La
cantidad de veces que se repite dicho bloque de acciones puede ser estático o
puede depender del valor de alguna variable o de alguna condición.

Iterativas con cantidad fija de iteraciones


Se utilizan cuando a priori se conoce la cantidad de ocasiones que debe
repetirse un bloque de instrucciones. Normalmente, usan una variable de
iteración o índice para contar la cantidad de repeticiones que se han realizado.

El valor inicial <valor1> de la <variable> irá aumentando o disminuyendo


según el paso <valor3> hasta llegar al valor <valor2>. Si no se especifica el valor
de paso, se sobrentiende que el aumento es de uno en uno.
Iterativas con cantidad variable de iteraciones
Se utilizan cuando la cantidad de ocasiones que debe repetirse un bloque
de instrucciones está determinada por una condición. Por lo regular, existen dos
variantes: repetir un bloque de instrucciones mientras se cumpla una condición
o repartirlo hasta que se cumpla una condición.

técnicas de diseño de Algoritmo


El proceso de diseño comprende al desarrollo de una visión conceptual
del sistema, el establecimiento de una estructura, la identificación de las cadenas
de datos y su almacenamiento, la descomposición de funciones de alto nivel en
susubsunciones, el establecimiento de las relaciones e interconexiones entre
componentes, el desarrollo de la representación de datos en forma concreta y la
especificación de los detalles de los algoritmos. Las técnicas de diseño
comúnmente están basadas en las estrategias de las jerarquías de ‘’hacia abajo’’
y de ‘’hacia arriba’’ . Por medio del enfoque de arriba a abajo, se pone atención
inicialmente en los aspectos globales de todo el sistema ; conforme el diseño
progresa, el sistema se descompone en subsistema, poniéndosele el mayor
consideración a los detalles específicos. El encadenamiento hacia atrás resulta
fundamental en este tipo de diseño. Con el fin de reducir este encadenamiento
hacia atrás, muchos diseñadores proponen el uso de una estrategia mezclada,
la cual es predominantemente hacia abajo, pero que primero requiere de la
especificación de los módulos inferiores. La ventaja primordial de esta estrategia
es que se dedica a la atención a las necesidades del cliente, a las interfaces con
el usuario y a la naturaleza global del problema a resolver.
Top Down
Top Down El diseño descendente es una técnica que permite diseñar la
solución de un problema con base en la modularización o segmentación dándole
un enfoque de arriba hacia abajo (Top Down Design). Esta solución se divide en
módulos que se estructuran e integran jerárquicamente, como si fuera el
organigrama de una empresa.
Ejemplo: ALGORITMO ALGO MODULO MODULO MODULO UNO DOS
TRES En el diagrama anterior se muestra la estructura del algoritmo ALGO, que
se auxilia de tres módulos subordinados, cada uno de los cuales ejecuta una
tarea específica. En su momento el modulo principal ALGO invocara o llamara a
los módulos subordinados, es decir, dirigirá su funcionamiento.
También conocida como de arriba-abajo y consiste en establecer una
serie de niveles de mayor a menor complejidad (arriba-abajo) que den solución
al problema. Consiste en efectuar una relación entre las etapas de la
estructuración de forma que una etapa jerárquica y su inmediato inferior se
relacionen mediante entradas y salidas de información. Este diseño consiste en
una serie de descomposiciones sucesivas del problema inicial, que recibe el
refinamiento progresivo del repertorio de instrucciones que van a formar parte
del programa.
La utilización de la técnica de diseño Top-Down tiene los siguientes
objetivos básicos:
Simplificación del problema y de los subprogramas de cada descomposición.
Las diferentes partes del problema pueden ser programadas de modo
independiente e incluso por diferentes personas.
El programa final queda estructurado en forma de bloque o módulos lo
que hace mas sencilla su lectura y mantenimiento.
DESCOMPOSICIÓN MODULAR
La descomposición modular es un método de diseño proporciona un
mecanismo sistemático para descomponer el problema en sub problemas,
reducirá la complejidad de todo el problema consiguiendo de esta manera una
solución modular efectiva.
El diseño modular propone dividir el sistema en partes diferenciadas y
definir sus interfaces. Sus ventajas: Claridad, reducción de costos y reutilización
Todas las técnicas de diseño están de acuerdo en la necesidad de realizar
una descomposición modular del sistema como actividad fundamental del diseño
y para lograrlo es necesario concretar los siguientes aspectos:
• Identificar los módulos
• Describir cada módulo
• Describir las relaciones entre módulos
La diferencia fundamental entre las distintas técnicas de diseño es
precisamente lo que se entiende por módulo en cada una de ellas y los criterios
que se deben emplear para su identificación. Con carácter muy general, se
puede decir que un módulo es un fragmento de un sistema software que se
puede elaborar con relativa independencia de los demás. La idea básica es
precisamente que la elabora
Los tipos de módulos son innumerables, algunos de ellos pueden ser los
siguientes:
 Descomposición Modular: Independiente Funcional
Al final de los documentos ADD y DDD debe haber una matriz
REQUISITOS/COMPONETES. En principio, cada función será realizada en un
módulo distinto. Si las funciones son independientes los módulos tendrán
independencia funcional.
Cada módulo debe realizar una función concreta o un conjunto de
funciones afines. Es recomendable reducir las relaciones entre módulos al
mínimo.
Para medir la independencia funcional hay dos criterios: acoplamiento y
cohesión.
 Descomposición Modular: Acoplamiento
El grado de acoplamiento entre módulos es una medida de la interrelación
que existe entre ellos: tipo de conexión y complejidad de la interfase. Para medir
de una forma cualitativa el grado de acoplamiento entre módulos se utiliza la
siguiente escala:

El objetivo que se persigue es que durante el diseño, el acoplamiento sea


mínimo por lo que habrá que buscar descomposiciones con acoplamiento débil
o como mucho moderado.

El grado de acoplamiento mide la interrelación entre dos módulos, según


el tipo de conexión y la complejidad de la interface:
•FUERTE POR CONTENIDO, cuando desde un módulo se pueden
cambiar datos locales de otro COMÚN, se emplea una zona común de datos a
la que tienen acceso varios módulos.
•MODERADO DE CONTROL, la zona común es un dispositivo externo al
que están ligados los módulos, esto implica que un cambio en el formato de datos
afecta a todos estos módulos.
•POR ETIQUETA, en intercambio de datos se realiza mediante una
referencia a la estructura completa de datos (vector, pila, árbol, grafo, …).
•DÉBIL DE DATOS, viene dado por los datos que intercambian los
módulos. Es el mejor posible.
•SIN ACOPLAMIENTO DIRECTO, es el acoplamiento que no existe.
 Descomposición Modular: Cohesión
El criterio de cohesión es complementario al de acoplamiento. Además de
buscar un acoplamiento débil entre módulos es necesario lograr que el contenido
de cada módulo tenga coherencia. Cuando se descompone un sistema se debe
buscar un objetivo específico para cada módulo. A continuación, se tratará de
agrupar en el mismo módulo todos aquellos elementos afines o que estén
relacionados con el objetivo fijado para dicho módulo. Como escala para medir
de forma cualitativa la cohesión de un módulo se utiliza la siguiente

Es necesario lograr que el contenido de cada módulo tenga la máxima


coherencia. Para que el nº de módulos no sea demasiado elevado y complique
el diseño se tratan de agrupar elementos afines y relacionados en un mismo
módulo.
•ALTA COHESIÓN ABSTRACCIONAL, se logra cuando se diseña el
módulo como tipo abstracto de datos o como una clase de objetos.
•COHESIÓN FUNCIONAL, el módulo realiza una función concreta y
específica.
•MEDIA COHESIÓN SECUENCIAL, los elementos del módulo trabajan
de forma secuencial.
•COHESIÓN DE COMUNICACIÓN, elementos que operan con el mismo
conjunto de datos de entrada o de salida.
•COHESIÓN TEMPORAL, se agrupan elementos que se ejecutan en el
mismo momento. Ej. Arrancar o parar dispositivos.
•BAJA COHESIÓN LÓGICA, se agrupan elementos que realizan
funciones similares. Ej.: módulos de E/S o de tratamiento de errores.
•COHESIÓN COINCIDENTAL, es la peor y se produce cuando los
elementos de un módulo no guardan relación alguna.
La descripción del comportamiento de un módulo permite establecer el
grado de cohesión:
•Si es una frase compuesta y contiene más de un verbo la cohesión será
MEDIA.
•Si contiene expresiones secuenciales (primero, entonces, cuando…),
será temporal o secuencial.
•Si la descripción no se refiere a algo específico (Ej. Todos los errores),
cohesión lógica.
•Si aparece “inicializar”, “preparar”, “configurar”, probablemente sea
temporal.
 Descomposición Modular: Comprensibilidad.
Para facilitar los cambios, el mantenimiento y la reutilización de módulos
es necesario que cada uno sea comprensible de forma aislada. Para ello es
bueno que posea independencia funcional, pero además es deseable:
•IDENTIFICACIÓN, el nombre debe ser adecuado y descriptivo.
•DOCUMENTACIÓN, debe aclarar todos los detalles de diseño e
implementación que no queden de manifiesto en el propio código.
•SIMPLICIDAD, las soluciones sencillas son siempre las mejores.

 Descomposición Modular: Adaptabilidad.


La adaptación de un sistema resulta más difícil cuando no hay
independencia funcional, es decir, con alto acoplamiento y baja cohesión, y
cuando el diseño es poco comprensible. Otros factores para facilitar la
adaptabilidad:
•PREVISIÓN, es necesario prever que aspectos del sistema pueden ser
susceptibles de cambios en el futuro, y poner estos elementos en módulos
independientes, de manera que su modificación afecte al menor número de
módulos posible.
•ACCESIBILIDAD, debe resultar sencillo el acceso a los documentos de
especificación, diseño, e implementación para obtener un conocimiento
suficiente del sistema antes de proceder a su adaptación.
•CONSISTENCIA, después de cualquier adaptación se debe mantener la
consistencia del sistema, incluidos los documentos afectados.
• CÓDIGO FUENTE. Contiene texto fuente escrito en el lenguaje de
programación elegido. Es el tipo de módulo que se usa con mayor frecuencia.
Su formato y organización dependen mucho de la técnica y el lenguaje
empleado.
• TABLA DE DATOS. Se utiliza para tabular ciertos daos de inicialización,
experimentales o simplemente de difícil obtención. • Configuración.- Un sistema
se puede concebir para trabajar con entornos diversos según las necesidades
de cada cliente. En estos casos, interesa agrupar en un mismo módulo toda
aquella información que permite configurar el entorno concreto de trabajo.
• OTROS. En general, un módulo puede servir para agrupar ciertos
elementos del sistema relacionados entre sí y que se puedan tratar de forma
separada del resto. También se elaboran por separado los ficheros de ayuda en
línea, los manuales de usuario, etc.
En resumen, la descomposición modular con una mayor independencia
funcional se logra con un acoplamiento DÉBIL entre sus módulos y una cohesión
ALTA dentro de cada uno de ellos.

También podría gustarte