Está en la página 1de 15

ACTIVIDAD 3.

2
INTRODUCCIÓN:
Los algoritmos son conjuntos de instrucciones paso a paso diseñados para
resolver un problema o realizar una tarea específica. Son utilizados en
diversas disciplinas, como la informática, las matemáticas, la ingeniería y
muchas otras áreas. Los algoritmos son fundamentales en la programación,
ya que proporcionan una forma estructurada de abordar un problema y
lograr una solución eficiente.
Un diagrama de flujo es una representación gráfica de un algoritmo. Utiliza
símbolos y líneas para mostrar la secuencia de pasos o instrucciones
necesarios para resolver un problema. Los símbolos representan diferentes
acciones, como entrada de datos, operaciones matemáticas, toma de
decisiones y salida de resultados. Las líneas conectan los símbolos y muestran
la dirección del flujo, indicando el orden en que se deben seguir las
instrucciones.
Los diagramas de flujo son herramientas visuales que permiten comprender y
comunicar de manera clara y concisa el funcionamiento de un algoritmo. Son
especialmente útiles para planificar, analizar y depurar programas, ya que
brindan una visión general de cómo se ejecuta el proceso. Además, los
diagramas de flujo facilitan la identificación de posibles errores y mejoras en
el algoritmo, antes de implementarlo en un lenguaje de programación
específico.
Los algoritmos son conjuntos de instrucciones paso a paso, mientras que los
diagramas de flujo son representaciones visuales de esos algoritmos. Ambas
herramientas son fundamentales en el desarrollo de software y la resolución
de problemas en diversas disciplinas.
2. Para solucionar un problema se deben de seguir una serie de
requerimientos o pasos que son:
1. Análisis del problema.

2. Identificar las entradas, procesos y salidas del


problema y sus variables
3. Diseño del algoritmo: Describe la secuencia
ordenada de los pasos, sin ambigüedad, es decir, siendo
preciso y veraz en la búsqueda de la solución al
problema.

4.Codificación del Algoritmo: Es la
expresión en un lenguaje de programación de los
pasos definidos en el algoritmo.

5.- Ejecución y validación del programa


por el computador.

3. CARACTERISTICAS DE LOS ALGORITMOS:


a)  Un algoritmo debe ser preciso e indicar el orden de
realización de cada paso.
b) Un algoritmo debe estar bien definido, es decir, si
se sigue la ejecución dos veces del mismo se debe obtener
la misma secuencia lógica. El algoritmo debe definirse de
forma precisa para cada paso, es decir, hay que evitar toda
ambigüedad al definir cada paso. Puesto que el lenguaje
humano es impreciso, los algoritmos se expresan mediante un
lenguaje más formal, ya sea matemático o de
programación para un computador.

c) Un algoritmo debe ser "FINITO", Si se


sigue un algoritmo se debe terminar en algún momento; o
sea, debe tener un numero finito de pasos.

d) Entrada: El algoritmo
tendrá cero o más entradas, es decir, cantidades
dadas antes de empezar el algoritmo. Estas cantidades pertenecen
además a conjuntos especificados de objetos. Por ejemplo,
pueden ser cadenas de caracteres, enteros, naturales,
fraccionarios, etc. Se trata siempre de cantidades
representativas del mundo real expresadas de tal forma que sean
aptas para su interpretación por el computador.

e) Salida: El algoritmo tiene


una o más salidas, en relación con las
entradas.
4. CLASIFICACIÓN DE ALGORITMOS
Directos: Son aquellos que permiten encontrar la
solución al problema de manera instántanea o
directa, en un número determinado de pasos.

Ejemplo: 23 = 2*2*2 = 8

Indirecto:

 a) Se ignora el número de


pasos.
 b) Son aquellos donde se desconocen el
número de pasos para lograr la solución de un
problema.

Estos a su vez, se clasifican en:

Finito: El número de pasos a realizar son


conocidos así como la factibilidad  de solución al
problema planteado, o sea, que va a ver una respuesta al
proceso.

Ejemplo:

Medir distancia

Es factible que algún día pueda saber la


distancia entre la Sede antigua del IUTEPAL (Av.
Constitución ) y la Sede Nueva del IUTEPAL (Urb.
Caña de Azúcar ).

Infinito:

Se desconoce el número de pasos a realizar,


así como la imposibilidad de encontrar la solución
al problema planteado.

Cuando realmente es imposible lograr la solución,


por más vueltas que le demos al problema.

Ejemplo:
5 EJEMPLO DE ALGORITMO
Algoritmo: Cálculo del área de un triángulo
1. Inicio
2.Pedir al usuario que ingrese la base del triángulo (base) y la altura del
triángulo (altura).
3. Calcular el área del triángulo utilizando la fórmula: área = (base * altura)
/ 2.
4. Mostrar el resultado del cálculo del área.
5. Fin
Este algoritmo es muy simple y consta de unos pocos pasos. Primero, se
solicita al usuario que ingrese la base y la altura del triángulo. Luego, se
realiza el cálculo del área utilizando la fórmula del área del triángulo (base *
altura / 2). Finalmente, se muestra el resultado del cálculo del área en la
pantalla.
Este algoritmo se puede implementar en cualquier lenguaje de programación
para obtener el área de un triángulo en función de los valores de base y
altura proporcionados por el usuario. Es solo un ejemplo básico, pero los
algoritmos pueden ser mucho más complejos dependiendo de la tarea que se
esté resolviendo.
6. MARCO HISTORICO
Un algoritmo es un conjunto de operaciones y procedimientos  que deben
seguirse para resolver un problema. La palabra algoritmo se deriva del
nombre latinizado del gran Matemático Árabe Mohamed Ibn Al Kow Rizmi, el
cual escribió sobre los años 800 y 825 su obra Quitad Al Mugabala, donde se
recogía el sistema de numeración hindú y el concepto del cero. Fue Fibinacci,
el que tradujo la obra al latín y el inicio con la palabra: Algoritmi Dicit.
El lenguaje algorítmico es aquel por medio al cual se realiza un análisis previo
del problema a resolver y encontrar un método que permita resolverlo. El
conjunto de todas las operaciones a realizar y e orden en que se
deben efectuarse, se le denomina algoritmo.
CLASIFICACIÓN DE ALGORITMOS
 * Algoritmo determinista: en cada paso del algoritmo se determina de forma
única el siguiente paso.

  * Algoritmo no determinista: deben decidir en cada paso de la ejecución entre


varias alternativas y agotarlas todas antes de encontrar la solución.

Todo algoritmo tiene una serie de características, entre otras que requiere una
serie de recursos , algo que es fundamental considerar a la hora de
implementarlos en una máquina.

Estos recursos son principalmente:

 · El tiempo : período transcurrido entre el inicio y la finalización del algoritmo.·


La memoria : la cantidad (la medida varía según la máquina) que necesita el
algoritmo para su ejecución.

Obviamente, la capacidad y el diseño de la máquina pueden afectar al diseño del


algoritmo.

En general, la mayoría de los problemas tienen un parámetro de entrada que es el


número de datos que hay que tratar, esto es, N. La cantidad de recursos del
algoritmo es tratada como una función  de N. De esta manera puede establecerse
un tiempo de ejecución del algoritmo que suele ser proporcional a una de las
siguientes funciones :

 1 : Tiempo de ejecución constante.


Significa que la mayoría de las instrucciones se ejecutan una vez o muy
pocas.
 logN : Tiempo de ejecución
logarítmico. Se puede considerar como una gran
constante. La base del logaritmo (en informática la
más común es la base 2) cambia la constante,
pero no demasiado. El programa es más lento cuanto
más crezca N, pero es inapreciable, pues logN no se
duplica hasta que N llegue a N2.
 N : Tiempo de ejecución lineal. Un
caso en el que N valga 40, tardará el doble que otro
en que N valga 20. Un ejemplo sería un algoritmo que
lee N números enteros y devuelve la media
aritmética.

 N·logN : El tiempo de ejecución


es N·logN. Es común encontrarlo en algoritmos
como Quick Sort y otros del estilo divide y vencerás. Si N se duplica, el
tiempo de ejecución es ligeramente
mayor del doble.
 N2 : Tiempo de ejecución
cuadrático. Suele ser habitual cuando se tratan pares
de elementos de datos, como por ejemplo un bucle anidado
doble. Si N se duplica, el tiempo de ejecución aumenta
cuatro veces. El peor caso de entrada del algoritmo Quick
Sort se ejecuta en este tiempo.
 N3 : Tiempo de ejecución
cúbico. Como ejemplo se puede dar el de un bucle
anidado triple. Si N se duplica, el tiempo de
ejecución se multiplica por ocho.
 2N : Tiempo de ejecución exponencial.
No suelen ser muy útiles en la práctica por el
elevadísimo tiempo de ejecución. El problema de
la mochila resuelto por un algoritmo de fuerza bruta -simple
vuelta atrás- es un ejemplo. Si N se duplica, el
tiempo de ejecución se eleva al cuadrado.

  * Algoritmos polinomiales: aquellos que son proporcionales a Nk. Son en general
factibles.

  * Algoritmos exponenciales: aquellos que son proporcionales a kN. En general


son infactibles salvo un tamaño de entrada muy reducido.

– Notación O-grande

En general, el tiempo de ejecución esproporcional, esto es, multiplica por una


constante a alguno de los tiempos de ejecución anteriormente propuestos,
además de la suma de algunos términos más pequeños. Así, un algoritmo cuyo
tiempo de ejecución sea T = 3N2 + 6N se puede considerar proporcional a N2. En
este caso se diría que el algoritmo es del orden de N2, y se escribe O(N2).
Los grafos  definidos por matriz  de adyacencia ocupan un espacio O(N2), siendo N
el número de vértices de éste.

La notación O-grande ignora los factores constantes, es decir, ignora si se hace


una mejor o peor implementación del algoritmo, además de ser independiente de
los datos de entrada del algoritmo. Es decir, la utilidad de aplicar esta notación a
un algoritmo es encontrar un límite superior del tiempo de
ejecución, es decir, el peor caso.

A veces ocurre que no hay que prestar demasiada atención  a esto. Conviene


diferenciar entre el peor caso y el esperado. Por ejemplo, el tiempo de
ejecución del algoritmo Quick Sort es de O(N2). Sin embargo, en la práctica este
caso no se da casi nunca y la mayoría de los casos son proporcionales a N·logN.
Es por ello que se utiliza esta última expresión para este método de ordenación.

CLASIFICACIÓN DE PROBLEMAS

Los problemas matemáticos se pueden dividir en


primera instancia en dos grupos:

  * Problemas indecidibles: aquellos que no se pueden resolver mediante un


algoritmo.

  * Problemas decidibles: aquellos que cuentan


al menos con un algoritmo para su cómputo. Sin embargo, que un problema sea
decidible no implica que se pueda encontrar su solución, pues muchos problemas
que disponen de algoritmos para su resolución son inabordables para un
computador por el elevado número de operaciones que hay que realizar para
resolverlos. Esto permite separar los problemas decidibles en dos:

  * intratables: aquellos para los que no es factible obtener su solución.

  * tratables: aquellos para los que existe al menos un algoritmo capaz de
resolverlo en un tiempo razonable.

Los problemas pueden clasificarse también atendiendo a su complejidad.


Aquellos problemas para los que se conoce un algoritmo polinómico que los
resuelve se denominan clase P. Los algoritmos que los resuelven son
deterministas. Para otros problemas, sus mejores algoritmos conocidos son no
deterministas. Esta clase de problemas se denomina clase NP. Por tanto, los
problemas de la clase P son un subconjunto de los de la clase NP, pues
sólo cuentan con una alternativa en cada paso.
¿QUE ES UN DIAGRAMA DE FLUJO?

Un diagrama de flujo es una representación gráfica que utiliza símbolos y


flechas para ilustrar la secuencia de pasos o acciones de un proceso. Se utiliza
comúnmente en el campo de la programación, la ingeniería, la resolución de
problemas y otros campos para visualizar de manera clara y concisa el flujo
de ejecución de un algoritmo o proceso.
En un diagrama de flujo, cada paso o acción se representa mediante un
símbolo específico, y las flechas indican la dirección del flujo, es decir, el
orden en que se ejecutan los pasos. Los símbolos más comunes en un
diagrama de flujo son:
Inicio/Fin: Representa el inicio o fin del proceso. Se suele representar con un
óvalo.
Proceso: Representa una acción o tarea específica a realizar. Se representa
con un rectángulo.
Decisión: Representa una condición o una pregunta que debe ser evaluada.
Se suele representar con un rombo. Las flechas que salen del rombo indican
los posibles caminos a seguir en función de la respuesta a la pregunta.
Conector: Representa la conexión entre diferentes partes de un diagrama de
flujo que se encuentran en páginas distintas. Se representa con un círculo.
Entrada/Salida: Representa la entrada o salida de datos o información. Se
suele representar con un paralelogramo.
Un diagrama de flujo permite visualizar de manera clara la secuencia de
pasos de un proceso, identificar posibles errores o cuellos de botella, y
facilitar la comunicación y comprensión entre diferentes personas
involucradas en el proceso.
Es importante destacar que un diagrama de flujo es una representación visual
del proceso, y no está ligado a un lenguaje de programación específico.
Puede ser utilizado como una herramienta previa a la implementación del
algoritmo en un lenguaje de programación, ayudando a planificar y
estructurar la lógica de un algoritmo antes de ser codificado.
LA IMPORTANCIA DE LOS DIAGRAMAS DE FLUJO
Los diagramas de flujo son herramientas importantes en diversos campos y
desempeñan un papel fundamental por las siguientes razones:
Comunicación visual: Los diagramas de flujo proporcionan una
representación gráfica clara y concisa de un proceso o algoritmo. Al utilizar
símbolos y flechas, ayudan a transmitir información de manera visual y
facilitan la comunicación entre diferentes personas involucradas en un
proyecto. Esto es especialmente útil cuando se trabaja en equipo o cuando se
necesita explicar un proceso a alguien que no está familiarizado con los
detalles técnicos.
Comprensión y análisis: Los diagramas de flujo permiten comprender
rápidamente la lógica y secuencia de pasos de un proceso. Al visualizar el
flujo de ejecución, es más fácil identificar posibles problemas, errores o
ineficiencias en un algoritmo o proceso. También ayudan a realizar un análisis
más detallado y exhaustivo, permitiendo identificar cuellos de botella, puntos
de mejora y áreas de optimización.
Documentación y documentación técnica: Los diagramas de flujo son una
forma efectiva de documentar y preservar información sobre un proceso o
algoritmo. Proporcionan una representación visual clara y estructurada, que
puede ser utilizada como referencia en el futuro. Además, los diagramas de
flujo son ampliamente utilizados en la documentación técnica, manuales de
usuario y especificaciones de proyectos, facilitando la comprensión y el
seguimiento de los procesos.
Diseño y planificación: Los diagramas de flujo son útiles para el diseño y
planificación de proyectos. Permiten visualizar el flujo de trabajo, identificar
las etapas y acciones necesarias, y establecer una estructura lógica antes de
la implementación. Ayudan a identificar posibles desafíos, tomar decisiones
informadas y optimizar los recursos disponibles.
Depuración y resolución de problemas: Cuando se produce un error o un
problema en un proceso, los diagramas de flujo pueden ser una herramienta
valiosa para la depuración y resolución de problemas. Al seguir el flujo de
ejecución y analizar cada paso, es más fácil identificar dónde se produjo el
error y qué acciones deben tomarse para solucionarlo.
En resumen, los diagramas de flujo son herramientas poderosas que facilitan
la comunicación, comprensión, análisis, diseño y resolución de problemas en
diversos campos. Ayudan a visualizar los procesos, mejorar la eficiencia y
optimizar los resultados, siendo una parte integral de la planificación y
ejecución exitosa de proyectos.
Tipos de Diagramas:

Diagrama de Programa: Representa gráficamente un método propuesto para la


solución de un problema determinado.

Diagrama de Sistema: Representa la integración ; interacción  lógicas de los


elementos dentro de un sistema propuesto.

Diagrama de Procedimiento: Representa gráficamente una operación o flujo de


datos dentro de un sistema.

SIMBOLOGIA DE LOS ALGORITMOS


En los diagramas de flujo, se utilizan diferentes símbolos para representar
distintas acciones, decisiones y componentes del proceso. A continuación, se
describen los símbolos más comunes utilizados en los diagramas de flujo:
Símbolo de Inicio/Fin: Representa el inicio o fin del proceso. Se representa
con un óvalo o elíptica. Es el punto de partida y el punto de finalización del
diagrama de flujo.
Símbolo de Proceso: Representa una acción o tarea específica a realizar. Se
representa con un rectángulo con bordes redondeados. Aquí se incluyen las
operaciones o acciones que se llevan a cabo dentro del proceso.
Símbolo de Decisión: Representa una condición o una pregunta que debe ser
evaluada. Se representa con un rombo. Los caminos que se siguen en el
diagrama de flujo dependen de la respuesta a la pregunta o la condición
evaluada.
Símbolo de Conector: Representa la conexión entre diferentes partes del
diagrama de flujo que se encuentran en páginas distintas. Se representa con
un círculo o punto.
Símbolo de Entrada/Salida: Representa la entrada o salida de datos o
información en el proceso. Se representa con un paralelogramo. Aquí se
incluyen acciones como la lectura o escritura de datos, interacción con el
usuario o comunicación con otros sistemas.
Símbolo de Conector de Página: Representa la conexión entre diferentes
partes del diagrama de flujo en la misma página. Se representa con un círculo
o punto con un número o letra para indicar la conexión correspondiente.
Además de estos símbolos principales, también se pueden utilizar flechas
para indicar el flujo de ejecución entre los símbolos. Las flechas muestran la
secuencia de las acciones o decisiones en el proceso.
Es importante tener en cuenta que la apariencia exacta de los símbolos
puede variar dependiendo de la convención o estándar utilizado, pero estos
son los símbolos más comunes y ampliamente reconocidos en los diagramas
de flujo.
¿Qué ES UNA VARIABLE?
VARIABLE: Es un valor  no fijo que permanece almacenado en la memoria del
computador y que es identificado con un nombre único y irrepetible.

Podemos definirlo como cualquier cantidad o valor al cual hacemos referencia


asignándole un nombre, clave (casi siempre abreviada) y que tomará
diferentes valores  durante el proceso.

Ejemplo: Nombres y Apellidos, Sueldo, Número de Cédula de Identidad .

Físicamente, una variable es un espacio o dirección  en la memoria del


computador.

CARACTERISTICAS
 El nombre de una variable puede ir formado por una o más letras, números
o la combinación de ambas.
 Los nombres de las variables siempre deberán comenzar por una letra.
 Los nombres de las variables no deberán ir separados por espacios en
blanco.
 Debe ser memotécnica.

TIPÓS DE VARIABLES
En programación y matemáticas, las variables son contenedores o espacios
de memoria utilizados para almacenar valores que pueden cambiar durante
la ejecución de un programa o en el contexto de una fórmula matemática. Las
variables pueden clasificarse en diferentes tipos según el tipo de datos que
pueden contener y las operaciones que se pueden realizar con ellas. Los tipos
de variables más comunes incluyen:
Variables numéricas:
Enteros (int): Representan números enteros sin parte decimal, como 1, -5,
1000, etc.
Números de punto flotante (float/double): Representan números con parte
decimal, como 3.14, -0.5, 2.71828, etc.
Variables de caracteres:
Caracter (char): Representa un solo carácter, como 'A', 'b', '1', etc.
Variables de cadena de caracteres (string):
Representan secuencias de caracteres, como "Hola", "Mundo", "123", etc.
Variables booleanas:
Booleano (bool): Representa un valor verdadero (true) o falso (false). Son
útiles para la toma de decisiones en estructuras de control como
condicionales y bucles.
Variables de fecha y hora:
Fecha (date): Representa una fecha, como "2023-07-04".
Hora (time): Representa una hora específica, como "12:30:00".
Variables de arreglo o lista:
Permiten almacenar múltiples valores del mismo tipo en una sola variable.
Pueden ser arreglos unidimensionales o multidimensionales.
Variables de objeto:
Representan una instancia de una clase en lenguajes de programación
orientados a objetos. Contienen datos y métodos relacionados.
Variables constantes:
Son valores que no cambian durante la ejecución del programa y se definen
con una asignación inicial que no puede modificarse posteriormente.
Es importante tener en cuenta que los diferentes lenguajes de programación
pueden tener variaciones en los tipos de variables que ofrecen y en cómo se
definen y utilizan. Además, algunos lenguajes de programación pueden
permitir la creación de tipos de datos personalizados para adaptarse a
necesidades específicas.
¿QUE ES UNA CONSTANTE?
Una constante es un valor fijo o inmutable que no cambia durante la
ejecución de un programa o en el contexto de una fórmula matemática. A
diferencia de las variables, cuyos valores pueden modificarse, las constantes
mantienen su valor constante a lo largo del programa y no se pueden alterar
una vez que se les ha asignado un valor inicial.
Las constantes se utilizan para representar valores fijos y conocidos que son
utilizados en cálculos o en la lógica del programa. Proporcionan una forma de
establecer y referirse a valores que no deben cambiar durante la ejecución
del programa y ayudan a hacer que el código sea más legible y mantenible.
En la mayoría de los lenguajes de programación, las constantes se definen
utilizando una sintaxis específica y suelen tener un nombre descriptivo en
mayúsculas para distinguirlas de las variables. Algunos ejemplos comunes de
constantes pueden incluir:
Constantes matemáticas como π (pi) o e (número de Euler).
Valores fijos como el número máximo de intentos de un juego o el número de
días en una semana.
Valores de configuración como la dirección de un servidor o una clave de API.
Valores predefinidos para parámetros específicos en una función.
Las constantes proporcionan una forma de establecer y utilizar valores que no
deben cambiar durante la ejecución del programa, lo que ayuda a evitar
errores y proporciona una mayor claridad y mantenibilidad al código
¿QUÉ ES UN ACUMULADOR?
Un acumulador es una variable utilizada en programación para acumular o
sumar valores a lo largo de un proceso o bucle. Sirve para mantener y
actualizar un resultado parcial o total a medida que se procesan iteraciones o
se lleva a cabo una serie de operaciones.
El propósito principal de un acumulador es realizar un seguimiento y
mantener un registro acumulativo de ciertos datos o cálculos. A medida que
se ejecuta un bucle o se realizan operaciones repetitivas, se actualiza el valor
del acumulador agregando o combinando el valor actual con el valor previo
almacenado en el acumulador.
El proceso de acumulación se puede realizar mediante la adición de valores,
concatenación de cadenas, acumulación de productos, entre otros, según el
contexto y los requisitos del problema específico que se está abordando.
Los acumuladores son especialmente útiles en situaciones en las que es
necesario rastrear y mantener un resumen o resultado parcial a medida que
se procesan datos o se realizan operaciones repetitivas. Al finalizar el proceso,
el valor acumulado en el acumulador representa el resultado final deseado.
Un ejemplo común de uso de un acumulador sería calcular la suma de una
serie de números. Durante cada iteración del bucle, se agregaría el número
actual al valor acumulado en el acumulador. Al final del bucle, el valor
acumulado sería la suma total de todos los números procesados.
En resumen, un acumulador es una variable utilizada para realizar un
seguimiento y mantener un registro acumulativo de valores o resultados a
medida que se procesan iteraciones o se llevan a cabo operaciones
repetitivas. Es una herramienta útil para realizar cálculos, resúmenes o
seguimiento de datos a lo largo de un proceso.

También podría gustarte