SlideShare uma empresa Scribd logo
1 de 120
ALGORITMICA
Por : VADILLO SANDOVAL ALEXANDER MIGUEL
V Ciclo – Computación e Informática - UNFV
ALGORITMO
Es un conjunto finito de instrucciones que
especifican una secuencia de operaciones a realizar
en orden para resolver un problema específico. En
otras palabras, un algoritmo es un método para la
solución de problemas.
La palabra algoritmo se deriva de la traduccion al
latin de la palabra arabe alkhowarismi , nombre de
un matematico y astronomo arabe que escribio un
tratado sobre la manipulacion de numeros y
ecuaciones en el siglo ix
Se define como una serie de pasos organizados que
describen el proceso que se debe seguir, para dar
solucion a un problema especifico
Un algoritmo es una serie de pasos secuenciados
para la solucion de algun problema. un ejemplo
seria:
Hacer un algoritmo que muestre del 1 al 100 y quue los
vaya sumando e imprima la suma de los numeros.
Un algoritmo es un conjunto de reglas que
determinan la secuencia de las operaciones a seguir
para resolver un problema especifico .
CARACTERISTICAS
Todo algoritmo debe tener las siguientes
características:
Debe ser preciso, es decir, cada instrucción debe
indicar de forma inequívoca que se tiene que hacer.
Debe ser finito, es decir, debe producir los mismos
resultados para las mismas condiciones de entrada.
Todo algoritmo puede ser descompuesto en tres
partes:
Entrada de datos,
Proceso y
Salida de resultados
Preciso.- Definirse de manera rigurosa, sin dar lugar
a ambigüedades.
Definido.- Si se sigue un algoritmo 2 veces, se
obtendrá el mismo resultado.
Finito.- Debe terminar en algún momento.
Puede tener cero o mas elementos de entrada.
Debe producir un resultado. Los datos de salida
serán los resultados de efectuar las instrucciones
Debe tener un punto particular de inicio.
Debe ser completamente definido y no debe permitir
dobles interpretaciones.
Debe ser general, es decir, soportar la mayoría de las
variantes que se puedan presentar en la definición
del problema.
Debe ser finito en tamaño y tiempo de ejecución.
Debe ser legible, claro y fácil de interpretar y
entender.
1) Finitud: Un algoritmo debe terminar después de
ejecutar un número finito de pasos.
2) Definición: Cada paso en un algoritmo debe estar
definido con precisión, esto es, la acción a seguir no
debe ser ambigua, sino rigurosamente especificada.
UN algoritmo descrito en un lenguaje como inglés o
español, en el cual una misma palabra puede
significar varias cosas, puede no cumplir con este
punto. Es por eso que se han definido los lenguajes
de programación o lenguajes de computación para
especificar algoritmos, ya que en ellos el significado
de cada palabra es uno y sólo uno.
3) Entrada: Se considera como entrada el conjunto
de datos o información requerida para resolver un
problema dado. No cualquier grupo de datos se
puede considerar como entrada en el procedimiento
señalado.
4) Salida: La salida es un conjunto de resultados que
se obtienen al aplicar el algoritmo al conjunto de
datos de entrada.
5) Efectividad: Un algoritmo debe llevar a la solución
del problema planteado, en otras palabras, se puede
decir que todas las operaciones que efectúa el
algoritmo, deben ser lo suficientemente simples para
que en principio, se puedan ejecutar con papel y
lápiz y al final obtener el resultado deseado.
Se concluye que un algoritmo debe ser suficiente
para resolver el problema.
Entre 2 algoritmos que lleven a un mismo objetivo,
siempre será preferible el mas corto ( se deberá
analizar la optimización de tiempos y/o recursos).
TIPOS DE ALGORITMO
CUALITATIVOS :
Son aquellos en los que se describen los pasos
utilizando palabras.
Son todos aquellos pasos o instrucciones descritos por
medio de palabras que sirven para llegar a la
obtención de una respuesta o solución de un
problema cualquiera.
CUANTITATIVOS :
Son aquellos en los que se utilizan cálculos numéricos
para definir los pasos del proceso.
Son aquellos pasos o instrucciones que involucran
cálculos numéricos para llegar a un resultado
satisfactorio.
Tipos de algoritmos de razonamiento:
Algoritmos Estáticos: Son los que funcionan
siempre igual, independientemente del tipo de
problema tratado.
Algoritmos Adaptativos: Algoritmos con cierta
capacidad de aprendizaje.
Algoritmos Probabilísticos: Son algoritmos que
no utilizan valores de verdad booleanos sino
continuos. Existen varios tipos de algoritmos
probabilísticos dependiendo de su funcionamiento,
pudiéndose distinguir:
§ Algoritmos numéricos: Que proporcionan una
solución aproximada del problema.
§ Algoritmos de Montecarlo: Que pueden dar la
respuesta correcta o respuesta erróneas (con
probabilidad baja).
§ Algoritmos de Las Vegas: Que nunca dan una
respuesta incorrecta: o bien dan la respuesta correcta
o informan del fallo.
Algoritmo Cotidiano: Es la serie de pasos que
realizamos en nuestra vida diaria para realizar las
diferentes tareas y actividades comunes, desde los
pasos al levantarnos, así como ir de compras, etc.
Algoritmo Voraz: Un algoritmo voraz es aquel
que, para resolver un determinado problema, sigue
una meta heurística consistente en elegir la opción
óptima en cada paso local con la esperanza de llegar
a una solución general óptima.
Algoritmo Determinista: Es un algoritmo que, en
términos informales, es completamente predictivo si
se conocen sus entradas.
Algoritmo Heurístico: Es un algoritmo que
abandona uno o ambos objetivos; por ejemplo,
normalmente encuentran buenas soluciones, aunque
no hay pruebas de que la solución no pueda ser
arbitrariamente errónea en algunos casos; o se
ejecuta razonablemente rápido, aunque no existe
tampoco prueba de que siempre será así.
Algoritmo de escalada: la idea básica consiste en
comenzar con una mala solución a un determinado
problema y, repetidamente, aplicar optimizaciones a
la misma hasta que esta sea óptima o satisfaga algún
otro requisito.
Ciencias en que se apoya la algoritmia para
producir soluciones ingeniosas!
· Ciencias de la Computación.
· Matemáticas.
· Ciencias Sociales.
· Ciencias Políticas.
¿Cómo podemos determinar la complejidad de un
algoritmo?
No existe receta que siempre funcione para calcular la
complejidad de un algoritmo, si es posible tratar
sistemáticamente una gran cantidad de ellos, basándonos en que
suelen estar bien estructurados y siguen pautas uniformes.
Loa algoritmos bien estructurados combinan las sentencias de
alguna de las siguientes formas:
· Sentencias sencillas
· Secuencia (;)
· Decisión (if)
· Bucles
Llamadas a procedimiento.
PROPIEDADES DE UN ALGORITMO
Secuencialidad
Ausencia de Ambigüedades
Generalidad
Limitaciones
SECUENCIALIDAD
Se debe especificar sin lugar a dudas la secuencia a
utilizar.
Un algoritmo debe tener una instrucción inicial
única y un sucesor único en cada secuencia.
Las instrucciones son llevadas a cabo de arriba
hacia abajo a menos que las mismas especifiquen
lo contrario.
Las entradas son las partidas de datos presentadas
al algoritmo.
Las salidas son partidas de datos procesados que
son el resultado de la ejecución un programa
basado en el algoritmo.
AUSENCIA DE AMBIGÜEDAD
En algoritmo debe ser defino, claro, preciso y no ambiguo.
La representación de cada paso de un algoritmo debe dar
lugar a una sola interpretación posible.
Esta condición significa que cada vez que se presente para
su ejecución u algoritmo con los mismos datos de entrada,
se obtendrán los mismos resultados.
Las instrucciones de un algoritmo debe ordenar a la
computadora que solo lleve a cabo tareas que sea capaz de
hacer. Una computadora no puede efectuar una instrucción
si tiene información insuficiente o si el comando no está
definido.
GENERALIDAD
Un algoritmo se puede realizar para varios
problemas que se relacionan entre sí.
Un algoritmo se aplica a un problema o clase de
problemas específicos; el rango de las entradas o
dominios se tiene que definir previamente, ya que
está determinado el alcance o la generalidad del
algoritmo.
LIMITACIÓN
Un algoritmo es finito en tamaño y tiempo.
La ejecución de un algoritmo programado debe
finalizar después de que se haya llevado a cabo una
cantidad finita de operaciones.
LEXICO DE UN PROGRAMADOR
El Lenguaje de Programación es el medio de comunicación
entre un programador y una computadora; es mediante el
lenguaje de programación que el programador "le dice" a la
computadora qué acciones debe ejecutar, para resolver un
problema computacional.
El Lenguaje de Programación es unidireccional; las órdenes
son emitidas por el programador y recepcionadas por la
computadora, la cual se limita a ejecutar dichas órdenes. En
realidad, en un Lenguaje de Programación intervienen dos
Lenguajes: el Lenguaje Fuente que es el lenguaje que el
programador entiende y el Lenguaje - Objeto que es el
lenguaje de la máquina que puede ser ejecutada por una
computadora.
El Lenguaje -Fuente tiene tres niveles:
Los Lenguajes -Fuente de Alto Nivel están más
próximos al programador; es decir, que con órdenes
expresadas "casi" de forma natural, el programador
puede resolver problemas computacionales.
Los Lenguajes-Fuente de Nivel Intermedio son más
concisos y rígidos en su sintaxis; eso los hace menos
amigables para programar.
Los Lenguajes -Fuente de Bajo Nivel son tan
cercanos al lenguaje de máquina que se requiere de
una mayor especialización por parte del
programador.
EL TRADUCTOR
Tomando en consideración lo que se ha dicho, surge la
pregunta:
¿Cómo es posible la comunicación entre el programador y la
computadora, si entienden distintos lenguajes?
La respuesta es: "Mediante un Traductor". Un Traductor es un
programa que traduce el Lenguaje -Fuente al Lenguaje -
Objeto. Para realizar el análisis y diseño del Traductor, se
acude a la computabilidad y los lenguajes formales que
proponen la Teoría de los Lenguajes Formales.
La Teoría de Lenguajes está dedicada al estudio formal de las
partes de un lenguaje; para el efecto, propone mecanismos
formales encargadas del estudio del Léxico, Sintaxis y
Semántica.
GLOSARIO DE TERMINOS
TECNICAS PARA DESARROLLAR UN
ALGORITMO
Técnicas de diseño
Top down
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.
Bottom Up
 El diseño ascendente se refiere a la identificación de
aquellos procesos que necesitan procesarse en el
momento en el que vayan apareciendo para
satisfacer el problema inmediato.
Técnicas para la formulación de algoritmos
Las dos herramientas utilizadas comúnmente para
diseñar algoritmos son:
• Diagrama de Flujo
• Pseudocódigo
DIAGRAMA DE FLUJO
Un diagrama de flujo es otra técnica de diseño de
algoritmos. Consiste en una serie de símbolos que
denotan acciones, decisiones o procedimientos que
se unen mediante flechas y conectores.
Esta representación nos ayudará a conocer la
información que tenemos, donde la tenemos, que
debemos hacer con ella y como presentarla.
Debe tener las cualidades de sencillez, claridad y
normalización en su diseño.
DIAGRAMA DE FLUJO
Es la representación detallada en forma gráfica de
cómo deben realizarse los pasos en la computadora
para obtener resultados.
PSEUDOCÓDIGO
Es la representación narrativa de los pasos que debe
seguir un algoritmo para dar solución a un problema
determinado. El pseudocódigo utiliza palabras que
indican el proceso a realizar
DOMINIO DE UN ALGORITMO
La clase o el conjunto de datos y condiciones para
las cuales un algoritmo trabaja concretamente se
llama dominio.
Cuando se trata de resolver cualquier problema es
necesario definir el dominio del algoritmo y
después verificar que trabaja para todos los casos
que se encuentran dentro del dominio.
Es necesario incluir en el dominio todas las
situaciones similares, pero los casos remotos o
poco probables se permiten omitir.
ERRORES EN LA CONTRUCCIÓN DEL
DOMINIO.
 Errores del dominio:
se presentan cuando se no han
especificado todas las situaciones que se pueden
presentar en la práctica o se han descuidado la
apreciación de su importancia.
A medida que se presenta el problema, se tiene que clasificar
y hay tres opciones:
1. Ignorarlo porque es improbable y quizás nunca ocurra.
2. Restringir el dominio del algoritmo para excluirlo.
3. Corregir el algoritmo.
ERRORES DE LÓGICA:
 Son aquellos errores que se detectan, después que se ha
definido en forma adecuada el dominio de un algoritmo,
en la etapa de prueba o verificación.
 se deben principalmente a las siguientes causas:
1. Etapas incorrectas.
2. Secuencia incorrecta de etapas
3. El criterio de elección de un algoritmo debe hacerse en
base a criterios tales como:
a) Que el algoritmo sea simple, es decir, fácil de entender y
de escribir.
b) Que el algoritmo sea eficiente.
MÉTODO HEURÍSTICO
La heurística proporciona un esquema o plan para
abordar los problemas poco conocidos, mejora la
capacidad de crear soluciones y asegura que el
método que se va a usar sea eficiente.
En la etapa de planificación es donde se tiene la
oportunidad de comparar métodos y seleccionar el
más adecuado.
Surge la pregunta:
¿ Cómo se pueden resolver los problemas para los
que no hay un método establecido o para los cuales
conocemos un algoritmo?.
DISEÑO DE UN ALGORITMO
Un método heurística para diseñar algoritmo es el
denominado DIVIDE AND CONQUER, el cual es
una técnica TOP-DOWN.
Este método permite implementar la
segmentación, descomposición de un problema
largo y complejo en problemas independientes más
pequeños y fáciles de resolver que el problema de
partida.
La técnica consiste en varias etapas.
DESCOMPOSICIÓN DEL PROBLEMA DE PARTIDA EN
SUBPROBLEMAS INDEPENDIENTES Y DETERMINACIÓN DE LAS
RELACIONES ENTRE ELLOS.
P
P1 P2 P3
RESOLUCIÓN DE CADA
SUBPROBLEMA
Si un sub-problema es
grande, por
descomposición y
continuando hasta que
resulten de la
descomposición sub
-problemas fácilmente
resolubles.
P1
P1.1 P1.2 P1.3
Composición de las soluciones de los sub-
problemas para lograr la solución final
El diseño del algoritmo que resuelve un problema,
realizado con esta técnica recibe el nombre de DISEÑO
DESCENDENTE y resulta en algoritmo muy legibles,
claros, fáciles de entender, seguir y corregir.
El diseño de un algoritmo no se hace de una sola vez, sino
que se va resolviendo en una secuencia de pasos ( llamados
PASOS DE REFINAMIENTO).
En cada paso el problema es refinado agregando detalles
significativos, por lo que el método se conoce como:
MÉTODO DE LOS REFINAMIENTOS SUCESIVOS.
UN INGENIERO ES CONVOCADO PARA
CONSTRUIR UN EDIFICIO
CONSTRUCCIÓN
DEL
EDIFICIO
CONFECCICÓN
DE LOS
PLANOS
CONTRATACIÓN
DEL
PERSONAL
COMPRA DE
MATERIALES
DIRECCIÓN
DE LA
OBRA
UN SUB- PROBLEMA
CONFECCIÓN
DE LOS
PLANOS
DISEÑO DEL
ANTEPROYECTO
APROBACIÓN
DEL
ANTEPROYECTO
ELABORACIÓN
DE LOS
PLANOS
APROBACIÓN
DE LOS
PLANOS
OTRO SUB- PROBLEMA
CONTRATACIÓN
DEL
PERSONAL
PEDIDO DE
CURRICULUM
VITAE
ANÁLISIS
DE LOS
CURRÍCULUM
VITAE
ENTREVISTAS
PERSONALES
REDACCIÓN
DE LOS
CONTRATOS
OTRO SUB- PROBLEMA
COMPRA
DE
MATERIALES
CÁLCULO
DE
MATERIALES
PEDIDO
DE
PRECIOS
SELECCIÓN
DE
PROVEEDORES
Al utilizar el refinamiento por pasos el diseñador
de un algoritmo debe saber donde detenerse, es
decir, debe saber cuando un paso específico del
algoritmo es lo suficientemente claro para no
necesitar más refinamiento.
Se necesita CONOCER LAS CAPACIDADES DE
UN PROCESADOR no sólo para terminar los
refinamientos, sino para dirigir la forma en que el
refinamiento avanza.
Una computadora puede interpretar cualquier cosa
expresadas de manera adecuada en un lenguaje de
programación. Así el diseñador de un algoritmo de
computadora puede orientar los pasos y la
terminación del refinamiento hacia el tipo de
lenguaje que se trate.
PROGRAMACION ESTRUCTURA
Los principios metodológicos básicos de la
programación estructurada son los de subdividir el
problema inicial o de partida en partes manejables
para su análisis y hacer de esta manera que se agilice
el proceso de entender el problema y la solución.
Básicamente, estas subdivisiones deseadas( llamadas
módulos) deben satisfacer los siguientes requisitos:
1. Los módulos deben estas jerarquizados.
2. Deben ser pequeños y sencillos.
3. Se deberán utilizar tantos módulos de menor jerarquía
como sea necesario para cumplir con la restricción de ser
pequeños y sencillos.
4. Se deberán usar las estructuras de control y datos
adecuadas para cumplir con el requisito de pequeños y
sencillos.
5. Los módulos deben ser legibles para cualquier persona
aunque tenga solamente conocimientos elementales de
progrmación.
LENGUAJE DE DISEÑO DE
PROGRAMAS
Como la meta es escribir algoritmos que sean
procesados en una computadora, se va a producir un
lenguaje de diseño adecuado.
Se llamará LENGUAJE DE DESCRIPCIÓN DE
PROGRAMAS a la herramienta que permitirá
diseñar programas de codificación.
Este pseudo- lenguaje tiene las siguientes características:
1. Permite expresar de manera informal las estructuras de
2. Permite expresar las ideas en frases del lenguaje propio o natural.
3. Es similar al lenguaje de programación pero no está ligado a
ninguna regla formal de sintaxis como aquellos.
4. No es un lenguaje compilable
5. Por convención se hace un sangrado en el texto que ayuda a la
percepción visual de la lógica del diseño.
6. Permite expresar diseños de fácil comprensión que podrá
convertirse sin dificultad a código en el lenguaje de implementación.
7. El pseudo- código generado es más fácil de cambiar y corregir que el
código del programa.
SOLUCION DE UN PROBLEMA
ANALISIS
 El Lenguaje Regular es el encargado del análisis del léxico de todo
lenguaje; se proponen tres mecanismos formales para su estudio: las
Expresiones Regulares, el Autómata de Estados Finitos y la Gramática
Regular. Se demuestra que existe una contradicción dialéctica entre
estos tres mecanismos formales, pues a pesar de ser diferentes en su
estructura generan el mismo lenguaje; esta equivalencia permite la
flexibilidad en el uso de cualquiera de estos mecanismos en el análisis
del léxico del Lenguaje -Fuente .
 El Lenguaje Libre de Contexto es el encargado de realizar el análisis de
la sintaxis de todo lenguaje; propone dos mecanismos formales: el
Autómata de Pila y la Gramática Libre de Contexto. Existe también una
contradicción dialéctica entre estos dos mecanismos; esto permite una
relación de equivalencia que no discrimina a ninguno de ellos para
realizar el análisis de la sintaxis del Lenguaje-Fuente.
 El Lenguaje Sensible al Contexto es el encargado de realizar el análisis
de la Semántica de todo lenguaje; sin embargo, no es posible utilizar la
Gramática Sensible al Contexto para este propósito, pues no existe una
gramática determinística que permita llevar este análisis a su diseño e
implementación; éste es el motivo por el que se ha adoptado una
Gramática Atribuida como mecanismo formal de análisis de la
Semántica del Lenguaje-Fuente.
 El Lenguaje Atribuido es propuesto por Knuth, quien dice que -sin
abandonar el determinismo que ofrece una gramática libre de contexto-
se puede simular el comportamiento de una Gramática Sensible al
Contexto; simplemente, se añade atributos a una Gramática Libre de
Contexto y se creará una gramática atribuida capaz de analizar la
Semántica del Lenguaje-Fuente[2]
.
 El Lenguaje Atribuido no sólo se encargara del análisis de la Semántica
del Lenguaje-Fuente sino que también se encargará de la fase de
generación del Lenguaje-Objeto, cumpliendo la función de síntesis del
Traductor.
DISEÑO
 Para el diseño del analizador lexicográfico, se utilizará una función
sistemática traductora ' T ' [3]
. Esta función recibe como entrada una
expresión regular que representa a un Token del léxico del Lenguaje
-Fuente; es a través de esta función sistemática traductora que se puede
generar el pseudocódigo del analizador lexicográfico, el cual podrá ser
implementado en cualquier Lenguaje de Programación.
 Para el diseño de analizador sintáctico, se utilizará el Método
Descendente Predictivo Recursivo, que permitirá transformar la
Gramática Libre de Contexto en un pseudocódigo del analizador
sintáctico, el cual podrá ser implementado en cualquier Lenguaje de
Programación.
Para el diseño del analizador semántico, se
incorpora parámetros por valor o por referencia al
pseudocódigo del analizador sintáctico, llevando al
diseño a una Gramática Atribuida.
El diseño del generador de código requiere de un
atributo sintetizado que tomará la contribución de
cada esquema de producción y generará el Código-
Objeto equivalente al Código-Fuente.
MEDIOS DE EXPRESION DE UN
ALGORITMO
Los algoritmos pueden ser expresados de muchas
maneras, incluyendo al lenguaje natural,
pseudocódigo, diagramas de flujo y lenguajes de
programación entre otros. Las descripciones en
lenguaje natural tienden a ser ambiguas y extensas.
El usar pseudocódigo y diagramas de flujo evita
muchas ambigüedades del lenguaje natural. Dichas
expresiones son formas más estructuradas para
representar algoritmos; no obstante, se mantienen
independientes de un lenguaje de programación
específico.
 La descripción de un algoritmo usualmente se hace en tres
niveles:
1.Descripción de alto nivel. Se establece el problema, se selecciona un
modelo matemático y se explica el algoritmo de manera verbal,
posiblemente con ilustraciones y omitiendo detalles.
2.Descripción formal. Se usa pseudocódigo para describir la secuencia
de pasos que encuentran la solución.
3.Implementación. Se muestra el algoritmo expresado en un lenguaje
de programación específico o algún objeto capaz de llevar a cabo
instrucciones.
También es posible incluir un teorema que
demuestre que el algoritmo es correcto, un análisis
de complejidad o ambos.
 DIAGRAMA DE FLUJO
Diagrama de flujo que expresa un algoritmo para calcular la raíz
cuadrada de un número xArtículo principal: Diagrama de flujo
Los diagramas de flujo son descripciones gráficas de algoritmos; usan
símbolos conectados con flechas para indicar la secuencia de
instrucciones y están regidos por ISO.
Los diagramas de flujo son usados para representar algoritmos
pequeños, ya que abarcan mucho espacio y su construcción es
laboriosa. Por su facilidad de lectura son usados como introducción a
los algoritmos, descripción de un lenguaje y descripción de procesos a
personas ajenas a la computación.
 PSEUDOCÒDIGO
El pseudocódigo (falso lenguaje, el prefijo pseudo significa falso) es una
descripción de alto nivel de un algoritmo que emplea una mezcla de
lenguaje natural con algunas convenciones sintácticas propias de
lenguajes de programación, como asignaciones, ciclos y condicionales,
aunque no está regido por ningún estándar. Es utilizado para describir
algoritmos en libros y publicaciones científicas, y como producto
intermedio durante el desarrollo de un algoritmo, como los
diagramas de flujo, aunque presentan una ventaja importante sobre
estos, y es que los algoritmos descritos en pseudocódigo requieren
menos espacio para representar instrucciones complejas.
 El pseudocódigo está pensado para facilitar a las personas el
entendimiento de un algoritmo, y por lo tanto puede omitir detalles
irrelevantes que son necesarios en una implementación.
Programadores diferentes suelen utilizar convenciones distintas, que
pueden estar basadas en la sintaxis de lenguajes de programación
concretos. Sin embargo, el pseudocódigo en general es comprensible
sin necesidad de conocer o utilizar un entorno de programación
específico, y es a la vez suficientemente estructurado para que su
implementación se pueda hacer directamente a partir de él.
PROCESO DE LA PROGRAMACION
La programación es más que solamente escribir
código. El software tiene su ciclo de vida. Nace,
crece, madura y finalmente muere, solamente para
ser reemplazado por un producto nuevo. El
entendimiento del ciclo de vida de un programa es
importante, ya que, como programador, se pasará
solamente poco tiempo en escribir código. La
mayoría de las veces la mayor parte del tiempo se
invierte al modificar y revisar código existente. Un
código debe ser documentado, se le debe dar
mantenimiento, debe ser mejorado y vendido.
Los principales pasos que se deben seguir al elaborar un programa son:
Requerimientos: Los programas empiezan cuando alguien tiene la idea
de hacer algo y comienza a implementarlo. El documento con los
requerimientos del sistema describen, en términos generales, qué es lo
que se quiere hacer.
Especificación del programa: La especificación es una breve
descripción de qué es lo que el programa hace. En un principio, una
especificación preliminar describe qué es lo que va a hacer el programa.
Después, mientras el programa se va refinando, de la misma manera se va
refinando la especificación del mismo.
Diseño del código: El programador tiene que llevar a cabo un diseño
del código a implementar. En él se deben incluir los algoritmos
utilizados, las definiciones de los módulos a utilizar, archivos utilizados
y estructuras de datos usadas en el programa. Es aquí en donde se
desarrolla el pseudocódigo del programa. El uso de diagramas de flujo
también nos permitirá obtener una abstracción sobre el problema,
tanto en entradas, salidas, flujo y procesamiento de la información.
Codificación: El siguiente paso es empezar a escribir el programa. Este
primer paso involucra primero escribir un prototipo y después irlo
puliendo para crear el programa final.
Pruebas: El programador debe diseñar un plan de pruebas para
posteriormente utilizarlo para probar su programa. Cuando es posible,
debe existir un equipo de pruebas, diferente del equipo de
programadores.
Debugging: Desafortunadamente, pocos son los programas que
funcionan a la primera. Los programas deben ser corregidos y probados
nuevamente.
Release: El programa es empaquetado, documentado y mandado al
mundo a ser usado.
Mantenimiento: Los programas rara vez, o nunca son perfectos. Los
errores o bugs se encontrarán y necesitarán ser corregidos. Esta etapa
es la etapa de mantenimiento de la programación.
Revisión y mejora: Después de que un programa ha sido usado, los
usuarios querrán realizarle algún cambio al funcionamiento del
programa, tal como alguna nueva funcionalidad o un cambio en algún
algoritmo. En este punto se crea una nueva especificación y el proceso
comienza de nuevo.
Especificación
 Generalmente las especificaciones de un proyecto de programación son
vagas e incompletas. El programador tiene que redefinirlas en algo que
define exactamente el programa que se va a desarrollar. Por lo tanto, el
primer paso es escribir una especificación preliminar que describa qué
es lo que el programa va a hacer y cómo se debe utilizar. El documento
no describe la estructura interna del programa o el algoritmo que se
planea utilizar.
 La especificación preliminar tiene dos propósitos. Primero, enseñársela
al jefe o líder de proyecto para asegurarse de que la especificación
contiene todo lo que se necesita que haga el programa. Segundo, se
puede enseñar a los demás compañeros para ver si existen sugerencias
con respecto al programa.
Diseño del código
 Después de que la especificación preliminar ha sido aprobada, se puede
empezar a diseñar el código. En la fase de diseño de código, el
programador planea su trabajo. En proyectos de programación muy
grandes que involucran a mucha gente, el código puede ser dividido en
varios módulos, asignando un módulo a cada programador. En esta
etapa se deben planear las estructuras de datos, los archivos y los
algoritmos a utilizar. En esta etapa podemos ayudarnos de
pseudocódigo y diagramas de flujo.
Prototipo
 Después de que la etapa de diseño del código ha sido completada,
podemos empezar a escribir el programa. Sin embargo, en lugar de
empezar a escribir el programa completo para después empezar a
probarlo, podemos utilizar un método llamado prototipo rápido (fast
prototyping). Consiste en implementar una pequeña porción de la
especificación que haga alguna de las funciones requeridas. Una vez
que dicha parte del programa funciona, podemos implementar el resto
de las funciones sobre la porción estable de código construida
anteriormente. El prototipo también puede servir para darnos una idea
de cuál es la dirección que lleva el proyecto.
Makefile
Después de que el código fuente ha sido terminado,
necesitará ser compilado y encadenado. Si bien es cierto,
podemos correr el compilador de manera manual, el
proceso puede ser tedioso y complicado cuando estamos
desarrollando proyectos muy grandes. Para esto
podemos utilizar un makefile.
Pruebas
 Después de que el programa ha sido compilado sin errores, podemos
pasar a la etapa de pruebas. Ahora es tiempo de escribir un plan de
pruebas. Dicho documento no es más que una simple lista de los pasos
que debemos seguir para estar seguros de que el programa funciona
correctamente. Se debe escribir básicamente por dos razones:
 Si un error es encontrado, queremos poder reproducirlo.
 Si realizamos algún cambio en el programa, queremos volverlo a probar
para estar seguros que el cambio no afectó nada que haya estado
funcionando previamente.
Debugging
Primero debemos inspeccionar el programa para ver
si podemos detectar algún error. En programas
sencillos será muy fácil encontrar el error, sin
embargo no lo será en proyectos que involucran
código de más de 5,000 líneas. La mayoría de los
sistemas tiene debuggers de C, en nuestro caso
podemos utilizargdb.
Mantenimiento
Los buenos programadores someten a sus programas
a largos y rigurosos procesos de mantenimiento
antes de liberar su código. Cuando el usuario del
programa empieza a utilizarlo y encuentra algún
error, entramos a la etapa de mantenimiento, en
donde cualquier error que pudiera tener el programa
es corregido y el programa se vuelve a probar para
asegurarse de que el error no vuelva a aparecer, para
finalmente volver a liberar el programa.
TIPOS DE DATOS
 Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un
simple carácter, tal como ‘b’, un valor entero tal como 35. El tipo de
dato determina la naturaleza del conjunto de valores que puede tomar
una variable.
Numéricos
Simples Lógicos
Alfanuméricos (string)
Tipos de datos Arreglos (Vectores, Matrices)
Estructurados Registros
(Def. por el Archivos usuario) Apuntadores
 Datos Numéricos:
Permiten representar valores escalares de forma numérica, esto incluye
a los números enteros y los reales. Este tipo de datos permiten realizar
operaciones aritméticas comunes.
 Datos Lógicos: Son aquellos que solo pueden tener dos valores
(cierto o falso) ya que representan el resultado de una comparación
entre otros datos (numéricos o alfanuméricos).
 Datos Alfanuméricos (String): Es una secuencia de caracteres
alfanuméricos que permiten representar valores identificables de forma
descriptiva, esto incluye nombres de personas, direcciones, etc. Es
posible representar números como alfanuméricos, pero estos pierden
su propiedad matemática, es decir no es posible hacer operaciones con
ellos. Este tipo de datos se representan encerrados entre comillas.
EXPRESIONES
 Las expresiones son combinaciones de constantes, variables, símbolos
de operación, paréntesis y nombres de funciones especiales. Por
ejemplo:
 a + (b + 3) / c
 Cada expresión toma un valor que se determina tomando los valores de
las variables y constantes implicadas y la ejecución de las operaciones
indicadas.
 Una expresión consta de operadores y operandos. Según sea el tipo de
datos que manipulan, se clasifican las expresiones en:
 ü Aritméticas
 ü Relaciónales
 ü Lógicas
OPERADORES Y OPERANDOS
 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. Los Tipos de Operadores que existen son tres: los
relaciónales, los Aritméticos y por último los lógicos.
 ü 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
- Resta
* Multiplicación
/ División
mod Modulo (residuo de la división entera)
 Ejemplos:
Expresión Resultado
7 / 2 3.5
12 mod 7 5
4 + 2 * 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 mas interno se evalúa primero. Dentro de una misma
expresión los operadores se evalúan en el siguiente orden.
 1. ^ à Exponenciación
 2. *, /, mod à Multiplicación, división, modulo
 3. - +, - à Suma y resta.
 ü Los operadores en una misma expresión con igual nivel de prioridad
se evalúan de izquierda a derecha.
  Operadores Relaciónales: 
 Se utilizan para establecer una relación entre dos valores.
 Compara estos valores entre si y esta comparación produce un
resultado de certeza o falsedad (verdadero o falso).
 Los operadores relaciónales comparan valores del mismo tipo
(numéricos o cadenas)
 Tienen el mismo nivel de prioridad en su evaluación.
 Los operadores relaciónales tiene menor prioridad que los
aritméticos.
> Mayor que
< Menor que
> = Mayor o igual que
< = Menor o igual que
< > Diferente
= Igual
Ejemplos:
Si a = 10 b = 20 c = 30
a + b > c Falso
a - b < c Verdadero
a - b = c Falso
a * b < > c Verdadero
Ejemplos no lógicos:
a < b < c
10 < 20 < 30
T < 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.
Operadores Lógicos
And Y
Or O
Not Negación
 Operador And
Operando1 Operador Operando2 Resultado
T AND T T
T F F
F T F
F F F
 Operador Or
Operando1 Operador Operando2 Resultado
T OR T T
T F T
F T T
F F F
 Operador Not
Operando Resultado
T F
F T
Ejemplos:
(a < b) and (b < c)
(10<20) and (20<30)
IDENTIFICADORES
 Un identificador es un nombre que se le da a una constante, una
variable y a cualquier elemento de programa que necesite nombrarse.
 Existen reglas para construir identificadores, las cuales son las
siguientes:
 Debe comenzar con un caracter alfabético (A - Z, mayúscula o
minúscula)
 Los demás caracteres pueden ser letras, dígitos o el caracter especial de
subrayado (_)
 Las letras no deben ser tildadas.
 No se admiten espacios en blanco.
 No deberá coincidir con palabras reservadas del lenguaje algorítmico.
(Ejemplo: Var, Const, Entero, Real, etc.)
La longitud de los identificadores puede ser de
hasta 8 caracteres. Este valor dependerá del
lenguaje de programación que esté estudiando
Deben ser nombres significativos al programa que
se este realizando.
Indicar su tipo (Entero, Real, cadena, caracter o
booleano)
Ejemplos de Identificadores válidos:
CostoArticulo
Nuevo_sueldo
Direccion
Nombre
Horas_Trab
Ejemplo de identificadores no válidos:
Nombre1
#alumnos
profesión
2categoría
Sueldo Neto
Nombre-Apellido
Área2
En el mundo de la programación se usan valores
que no deben variar durante la ejecución de un
programa. A estos valores se les conoce
como constantes. También existen valores que
deben cambiar a lo largo de la ejecución del
programa; estos valores son conocidos como
variables.
Constantes
Una constante es una partida de datos que permanecen sin cambios en el
programa (durante el desarrollo y ejecución).
 Ejemplos:
3.1416 (valor de pi, este valor no debe variar)
2000 (año en que según Nostradamus se acabaría el mundo XD)
‘a’ (primera letra del alfabeto)
“ESPOL” (nombre de mi querida universidad)
Variables
 Una variable es una partida de datos cuyo valor puede cambiar en el
programa (durante el desarrollo y ejecución).
 Los diferentes tipos de variables dependen del lenguaje de
programación, por lo general estas suelen ser enteras, reales, carácter,
lógicas y de cadena.
 Tanto las variables como las constantes tienen un nombre o
identificador generalmente conformado por caracteres alfanuméricos
(ciertos lenguajes de programación admiten el carácter de subrayado
‘_’ como válido en los identificadores), y el primero de éstos debe ser
una letra.
 Ejemplos:
 variable1
 numerador
 primer_jugador
 Por estética y comodidad durante el desarrollo del algoritmo se suele
usar palabras en MAYUSCULAS para las constantes y
en minúsculas para las variables. Si se desea usar varias palabras como
nombre para una variable, éstas deben estar unidas, la primera palabra
en minúsculas y el primer carácter de la segunda en mayúscula
ESTRUCTURAS ALGORITMICAS
Son un grupo de formas de trabajo que permiten
mediante la manipulación de variables,realizar
ciertos procesos específicos que nos lleven a
la solución de problemas.
Se clasifican en :
SECUENCIALES
CONDICIONALES
CICLICAS
SECUENCIALES
Son aquellos en que una acción sigue a otra en secuencia.
sus componentes son:
Asignación: Es el paso de valores o resultados a una zona de la
memoria, esta zona sera reconocida con el nombre de la variable que
recibe el valor.
Entrada: Consiste en recibir un valor o un dato, por medio de algun
dispositivo de entrada.
Salida: Se manda el resultado o mensaje, por medio de algun dispositivo
de salida del computador.
CONDICIONALES
Son aquellos que permiten comparar una variable
contra otro valor, se utilizan para tomar
decisiones lógicas, existen tres tipos :
Simples: Se ejecuta una determinada acción cuando se
cumple determinada condición.
Ejemplo :
si (condición ) entonces
(acción )
fin si
Dobles: Son aquellos que permiten elegir entre dos
opciones o alternativas posibles.
Ejemplo:
Si < condición > entonces
< acción uno >
si_no
<acción dos>
fin_si
Múltiples: son aquellos que permiten elegir cuando hay
mas de dos elecciones o alternativas posibles.
Ejemplo:
si < condición > entonces
< instrucción >
sino
si < condición 2>entonces
< instrucción >
sino
.
.
fin si
CICLICAS
Son aquellos tipos de estructura que repiten una
secuencia de instrucciones un número determinado
de veces, para encontrar la solución a un problema,
estas son denominados como bucles, entre los cuales
encontramos:
Para: En esta se conoce el numero de iteraciones o
veces que se repite la acción, antes de iniciar
la ejecución del ciclo.
Mientras Que: Este se repite un numero
determinado de veces, para esto la instrucción se
acompaña de una condición, la cual debe cumplirse
para seguir la ejecución del ciclo, de lo contrario este
se termina.
Repita- Hasta: Este repite un proceso una
cantidad de veces, determinada por un condicional,
que lo ejecuta hasta que la condicional se cumpla.
una característica importante de esta estructura es
que permite realizar el proceso cuando menos una
vez, ya que la condición se evalúa al final del proceso.
BIBLIOGRAFIA
 HTTP://www.exa.unicen.edu.ar/catedras/prog1/introprog2/sites/default/files/Ap
untesDiagramaEstructura.pdf
 HTTP://blog.espol.edu.ec/programando/variables-y-constantes/
 HTTP://claseinfo.blogia.com/temas/identificadores.php
 HTTP://sistemasadsi.blogspot.com/2010/09/tipos-de-datos-en-un-algoritmo.html
 HTTP://algoritmosextremos.blogspot.com/2012/02/estructuras-algoritmicas.html
 HTTP://www.ie.uia.mx/acad/atortole/temas/proceso.html
 HTTP://www.mhe.es/universidad/informatica/8448136640/archivos/apendice_g
eneral_4.pdf

Mais conteúdo relacionado

Mais procurados

Características de un algoritmo
Características de un algoritmoCaracterísticas de un algoritmo
Características de un algoritmo
roxanaparra28
 
Algoritmos diagrama-de-flujo
Algoritmos diagrama-de-flujoAlgoritmos diagrama-de-flujo
Algoritmos diagrama-de-flujo
cognos_uie
 
Algoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacionAlgoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacion
Boris Salleg
 

Mais procurados (18)

Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Presentación de computación
Presentación de computaciónPresentación de computación
Presentación de computación
 
Los algoritmos
Los    algoritmosLos    algoritmos
Los algoritmos
 
Desarrollo de habilidades de pensamiento
Desarrollo de habilidades de pensamientoDesarrollo de habilidades de pensamiento
Desarrollo de habilidades de pensamiento
 
Características de un algoritmo
Características de un algoritmoCaracterísticas de un algoritmo
Características de un algoritmo
 
Introduccion a Algoritmos
Introduccion a AlgoritmosIntroduccion a Algoritmos
Introduccion a Algoritmos
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
1.3 Introduccion a los Algoritmos
1.3 Introduccion a los Algoritmos1.3 Introduccion a los Algoritmos
1.3 Introduccion a los Algoritmos
 
Unidad II Algoritmo y Metodoligia para resolver problemas utilizando el compu...
Unidad II Algoritmo y Metodoligia para resolver problemas utilizando el compu...Unidad II Algoritmo y Metodoligia para resolver problemas utilizando el compu...
Unidad II Algoritmo y Metodoligia para resolver problemas utilizando el compu...
 
Algoritmos diagrama-de-flujo
Algoritmos diagrama-de-flujoAlgoritmos diagrama-de-flujo
Algoritmos diagrama-de-flujo
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
diapositivas algoritmos
diapositivas algoritmos diapositivas algoritmos
diapositivas algoritmos
 
Logica algoritmos
Logica algoritmosLogica algoritmos
Logica algoritmos
 
Presentacion algoritmos
Presentacion algoritmosPresentacion algoritmos
Presentacion algoritmos
 
Algoritmos y seudocódigos (orangel rodriguez) (30.736.401)
Algoritmos y seudocódigos (orangel rodriguez) (30.736.401)Algoritmos y seudocódigos (orangel rodriguez) (30.736.401)
Algoritmos y seudocódigos (orangel rodriguez) (30.736.401)
 
Algoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacionAlgoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacion
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Alg diag
Alg diagAlg diag
Alg diag
 

Destaque

Oscilació..
Oscilació..Oscilació..
Oscilació..
andreszaz
 
Je vis dans_ma_caravanne_-pierre-2
Je vis dans_ma_caravanne_-pierre-2Je vis dans_ma_caravanne_-pierre-2
Je vis dans_ma_caravanne_-pierre-2
Patricia GALLET
 
Mashable Social Media Day - COCODY
Mashable Social Media Day - COCODYMashable Social Media Day - COCODY
Mashable Social Media Day - COCODY
Bacely YoroBi
 
El Hombre Que Quiso Ser Mujer 1198908978146219 3
El Hombre Que Quiso Ser Mujer 1198908978146219 3El Hombre Que Quiso Ser Mujer 1198908978146219 3
El Hombre Que Quiso Ser Mujer 1198908978146219 3
Adalberto
 
Pr%25c3%25a9sentation%2520finale
Pr%25c3%25a9sentation%2520finalePr%25c3%25a9sentation%2520finale
Pr%25c3%25a9sentation%2520finale
Romain Raràmuri
 
Enviar 24 marzo proyecto niños desaparecidos.doc segunda versión
Enviar 24 marzo proyecto niños desaparecidos.doc segunda versiónEnviar 24 marzo proyecto niños desaparecidos.doc segunda versión
Enviar 24 marzo proyecto niños desaparecidos.doc segunda versión
Adalberto
 
Presentacion Nazaret Palmeras
Presentacion Nazaret PalmerasPresentacion Nazaret Palmeras
Presentacion Nazaret Palmeras
anilatac
 
PresentacióN3
PresentacióN3PresentacióN3
PresentacióN3
yoel_rubio
 
3,2,1 Despegamos!!!
3,2,1 Despegamos!!!3,2,1 Despegamos!!!
3,2,1 Despegamos!!!
macaluna
 
N s entre_1935_et_1960_a
N s entre_1935_et_1960_aN s entre_1935_et_1960_a
N s entre_1935_et_1960_a
Patricia GALLET
 
Passe composé 3
Passe composé  3Passe composé  3
Passe composé 3
UNAMESIA
 

Destaque (20)

6 Marzo Nadasucedeporcasualidad Lm
6 Marzo Nadasucedeporcasualidad Lm6 Marzo Nadasucedeporcasualidad Lm
6 Marzo Nadasucedeporcasualidad Lm
 
Bulletin me m avril 2015
Bulletin me m avril 2015Bulletin me m avril 2015
Bulletin me m avril 2015
 
Oscilació..
Oscilació..Oscilació..
Oscilació..
 
Je vis dans_ma_caravanne_-pierre-2
Je vis dans_ma_caravanne_-pierre-2Je vis dans_ma_caravanne_-pierre-2
Je vis dans_ma_caravanne_-pierre-2
 
Mashable Social Media Day - COCODY
Mashable Social Media Day - COCODYMashable Social Media Day - COCODY
Mashable Social Media Day - COCODY
 
Créer un cœur sur Illustrator
Créer un cœur sur IllustratorCréer un cœur sur Illustrator
Créer un cœur sur Illustrator
 
Pourquoi utiliser un masque des diapositives PowerPoint et comment le créer ?
Pourquoi utiliser un masque des diapositives PowerPoint et comment le créer ?Pourquoi utiliser un masque des diapositives PowerPoint et comment le créer ?
Pourquoi utiliser un masque des diapositives PowerPoint et comment le créer ?
 
El Hombre Que Quiso Ser Mujer 1198908978146219 3
El Hombre Que Quiso Ser Mujer 1198908978146219 3El Hombre Que Quiso Ser Mujer 1198908978146219 3
El Hombre Que Quiso Ser Mujer 1198908978146219 3
 
Pr%25c3%25a9sentation%2520finale
Pr%25c3%25a9sentation%2520finalePr%25c3%25a9sentation%2520finale
Pr%25c3%25a9sentation%2520finale
 
Enviar 24 marzo proyecto niños desaparecidos.doc segunda versión
Enviar 24 marzo proyecto niños desaparecidos.doc segunda versiónEnviar 24 marzo proyecto niños desaparecidos.doc segunda versión
Enviar 24 marzo proyecto niños desaparecidos.doc segunda versión
 
PresentacióN CrestomatíA Revista
PresentacióN CrestomatíA RevistaPresentacióN CrestomatíA Revista
PresentacióN CrestomatíA Revista
 
zoolomuzik
zoolomuzikzoolomuzik
zoolomuzik
 
los nazis
los nazislos nazis
los nazis
 
Location d´appartements pour longue durée à Barcelone
Location d´appartements pour longue durée à BarceloneLocation d´appartements pour longue durée à Barcelone
Location d´appartements pour longue durée à Barcelone
 
Presentacion Nazaret Palmeras
Presentacion Nazaret PalmerasPresentacion Nazaret Palmeras
Presentacion Nazaret Palmeras
 
PresentacióN3
PresentacióN3PresentacióN3
PresentacióN3
 
A lucia
A luciaA lucia
A lucia
 
3,2,1 Despegamos!!!
3,2,1 Despegamos!!!3,2,1 Despegamos!!!
3,2,1 Despegamos!!!
 
N s entre_1935_et_1960_a
N s entre_1935_et_1960_aN s entre_1935_et_1960_a
N s entre_1935_et_1960_a
 
Passe composé 3
Passe composé  3Passe composé  3
Passe composé 3
 

Semelhante a Algoritmica terminado

Unidad 02 metodología para solucionar un problema
Unidad 02   metodología para solucionar un problemaUnidad 02   metodología para solucionar un problema
Unidad 02 metodología para solucionar un problema
Lorenzo Alejo
 
Trabajo de informatica alejandra blanco
Trabajo de informatica alejandra blancoTrabajo de informatica alejandra blanco
Trabajo de informatica alejandra blanco
AleBlanco
 

Semelhante a Algoritmica terminado (20)

Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Introduccion a la computacion
Introduccion a la computacionIntroduccion a la computacion
Introduccion a la computacion
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Introduccion A La Programacion
Introduccion A La ProgramacionIntroduccion A La Programacion
Introduccion A La Programacion
 
Algoritmos (DFD, Pseudocodigos).pptx
Algoritmos (DFD, Pseudocodigos).pptxAlgoritmos (DFD, Pseudocodigos).pptx
Algoritmos (DFD, Pseudocodigos).pptx
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
ALGORITMOS bachillerato investigación y información
ALGORITMOS bachillerato investigación y informaciónALGORITMOS bachillerato investigación y información
ALGORITMOS bachillerato investigación y información
 
Diseño Estructurado de Algoritmos
Diseño Estructurado de AlgoritmosDiseño Estructurado de Algoritmos
Diseño Estructurado de Algoritmos
 
Introduccion a-la-programacion-1234039307400760-3
Introduccion a-la-programacion-1234039307400760-3Introduccion a-la-programacion-1234039307400760-3
Introduccion a-la-programacion-1234039307400760-3
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Tecnicatura en programacion
Tecnicatura en programacionTecnicatura en programacion
Tecnicatura en programacion
 
Unidad algoritmos y df
Unidad algoritmos y dfUnidad algoritmos y df
Unidad algoritmos y df
 
Unidad 02 metodología para solucionar un problema
Unidad 02   metodología para solucionar un problemaUnidad 02   metodología para solucionar un problema
Unidad 02 metodología para solucionar un problema
 
Presentación de slideshare
Presentación de slidesharePresentación de slideshare
Presentación de slideshare
 
Presentación de slideshare
Presentación de slidesharePresentación de slideshare
Presentación de slideshare
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
PROGRAMACION-copia.pptx
PROGRAMACION-copia.pptxPROGRAMACION-copia.pptx
PROGRAMACION-copia.pptx
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Trabajo de informatica alejandra blanco
Trabajo de informatica alejandra blancoTrabajo de informatica alejandra blanco
Trabajo de informatica alejandra blanco
 

Último

NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
UPTAIDELTACHIRA
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
El Fortí
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
EliaHernndez7
 

Último (20)

NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
Supuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docxSupuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docx
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIAFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonables
 

Algoritmica terminado

  • 1. ALGORITMICA Por : VADILLO SANDOVAL ALEXANDER MIGUEL V Ciclo – Computación e Informática - UNFV
  • 2. ALGORITMO Es un conjunto finito de instrucciones que especifican una secuencia de operaciones a realizar en orden para resolver un problema específico. En otras palabras, un algoritmo es un método para la solución de problemas.
  • 3. La palabra algoritmo se deriva de la traduccion al latin de la palabra arabe alkhowarismi , nombre de un matematico y astronomo arabe que escribio un tratado sobre la manipulacion de numeros y ecuaciones en el siglo ix Se define como una serie de pasos organizados que describen el proceso que se debe seguir, para dar solucion a un problema especifico
  • 4. Un algoritmo es una serie de pasos secuenciados para la solucion de algun problema. un ejemplo seria: Hacer un algoritmo que muestre del 1 al 100 y quue los vaya sumando e imprima la suma de los numeros.
  • 5. Un algoritmo es un conjunto de reglas que determinan la secuencia de las operaciones a seguir para resolver un problema especifico .
  • 6. CARACTERISTICAS Todo algoritmo debe tener las siguientes características: Debe ser preciso, es decir, cada instrucción debe indicar de forma inequívoca que se tiene que hacer. Debe ser finito, es decir, debe producir los mismos resultados para las mismas condiciones de entrada. Todo algoritmo puede ser descompuesto en tres partes: Entrada de datos, Proceso y Salida de resultados
  • 7. Preciso.- Definirse de manera rigurosa, sin dar lugar a ambigüedades. Definido.- Si se sigue un algoritmo 2 veces, se obtendrá el mismo resultado. Finito.- Debe terminar en algún momento. Puede tener cero o mas elementos de entrada. Debe producir un resultado. Los datos de salida serán los resultados de efectuar las instrucciones
  • 8. Debe tener un punto particular de inicio. Debe ser completamente definido y no debe permitir dobles interpretaciones. Debe ser general, es decir, soportar la mayoría de las variantes que se puedan presentar en la definición del problema. Debe ser finito en tamaño y tiempo de ejecución. Debe ser legible, claro y fácil de interpretar y entender.
  • 9. 1) Finitud: Un algoritmo debe terminar después de ejecutar un número finito de pasos. 2) Definición: Cada paso en un algoritmo debe estar definido con precisión, esto es, la acción a seguir no debe ser ambigua, sino rigurosamente especificada. UN algoritmo descrito en un lenguaje como inglés o español, en el cual una misma palabra puede significar varias cosas, puede no cumplir con este punto. Es por eso que se han definido los lenguajes de programación o lenguajes de computación para especificar algoritmos, ya que en ellos el significado de cada palabra es uno y sólo uno.
  • 10. 3) Entrada: Se considera como entrada el conjunto de datos o información requerida para resolver un problema dado. No cualquier grupo de datos se puede considerar como entrada en el procedimiento señalado. 4) Salida: La salida es un conjunto de resultados que se obtienen al aplicar el algoritmo al conjunto de datos de entrada.
  • 11. 5) Efectividad: Un algoritmo debe llevar a la solución del problema planteado, en otras palabras, se puede decir que todas las operaciones que efectúa el algoritmo, deben ser lo suficientemente simples para que en principio, se puedan ejecutar con papel y lápiz y al final obtener el resultado deseado.
  • 12. Se concluye que un algoritmo debe ser suficiente para resolver el problema. Entre 2 algoritmos que lleven a un mismo objetivo, siempre será preferible el mas corto ( se deberá analizar la optimización de tiempos y/o recursos).
  • 13. TIPOS DE ALGORITMO CUALITATIVOS : Son aquellos en los que se describen los pasos utilizando palabras. Son todos aquellos pasos o instrucciones descritos por medio de palabras que sirven para llegar a la obtención de una respuesta o solución de un problema cualquiera.
  • 14. CUANTITATIVOS : Son aquellos en los que se utilizan cálculos numéricos para definir los pasos del proceso. Son aquellos pasos o instrucciones que involucran cálculos numéricos para llegar a un resultado satisfactorio.
  • 15. Tipos de algoritmos de razonamiento: Algoritmos Estáticos: Son los que funcionan siempre igual, independientemente del tipo de problema tratado. Algoritmos Adaptativos: Algoritmos con cierta capacidad de aprendizaje.
  • 16. Algoritmos Probabilísticos: Son algoritmos que no utilizan valores de verdad booleanos sino continuos. Existen varios tipos de algoritmos probabilísticos dependiendo de su funcionamiento, pudiéndose distinguir: § Algoritmos numéricos: Que proporcionan una solución aproximada del problema.
  • 17. § Algoritmos de Montecarlo: Que pueden dar la respuesta correcta o respuesta erróneas (con probabilidad baja). § Algoritmos de Las Vegas: Que nunca dan una respuesta incorrecta: o bien dan la respuesta correcta o informan del fallo.
  • 18. Algoritmo Cotidiano: Es la serie de pasos que realizamos en nuestra vida diaria para realizar las diferentes tareas y actividades comunes, desde los pasos al levantarnos, así como ir de compras, etc. Algoritmo Voraz: Un algoritmo voraz es aquel que, para resolver un determinado problema, sigue una meta heurística consistente en elegir la opción óptima en cada paso local con la esperanza de llegar a una solución general óptima.
  • 19. Algoritmo Determinista: Es un algoritmo que, en términos informales, es completamente predictivo si se conocen sus entradas. Algoritmo Heurístico: Es un algoritmo que abandona uno o ambos objetivos; por ejemplo, normalmente encuentran buenas soluciones, aunque no hay pruebas de que la solución no pueda ser arbitrariamente errónea en algunos casos; o se ejecuta razonablemente rápido, aunque no existe tampoco prueba de que siempre será así.
  • 20. Algoritmo de escalada: la idea básica consiste en comenzar con una mala solución a un determinado problema y, repetidamente, aplicar optimizaciones a la misma hasta que esta sea óptima o satisfaga algún otro requisito.
  • 21. Ciencias en que se apoya la algoritmia para producir soluciones ingeniosas! · Ciencias de la Computación. · Matemáticas. · Ciencias Sociales. · Ciencias Políticas.
  • 22. ¿Cómo podemos determinar la complejidad de un algoritmo? No existe receta que siempre funcione para calcular la complejidad de un algoritmo, si es posible tratar sistemáticamente una gran cantidad de ellos, basándonos en que suelen estar bien estructurados y siguen pautas uniformes. Loa algoritmos bien estructurados combinan las sentencias de alguna de las siguientes formas: · Sentencias sencillas · Secuencia (;) · Decisión (if) · Bucles Llamadas a procedimiento.
  • 23. PROPIEDADES DE UN ALGORITMO Secuencialidad Ausencia de Ambigüedades Generalidad Limitaciones
  • 24. SECUENCIALIDAD Se debe especificar sin lugar a dudas la secuencia a utilizar. Un algoritmo debe tener una instrucción inicial única y un sucesor único en cada secuencia. Las instrucciones son llevadas a cabo de arriba hacia abajo a menos que las mismas especifiquen lo contrario. Las entradas son las partidas de datos presentadas al algoritmo. Las salidas son partidas de datos procesados que son el resultado de la ejecución un programa basado en el algoritmo.
  • 25. AUSENCIA DE AMBIGÜEDAD En algoritmo debe ser defino, claro, preciso y no ambiguo. La representación de cada paso de un algoritmo debe dar lugar a una sola interpretación posible. Esta condición significa que cada vez que se presente para su ejecución u algoritmo con los mismos datos de entrada, se obtendrán los mismos resultados. Las instrucciones de un algoritmo debe ordenar a la computadora que solo lleve a cabo tareas que sea capaz de hacer. Una computadora no puede efectuar una instrucción si tiene información insuficiente o si el comando no está definido.
  • 26. GENERALIDAD Un algoritmo se puede realizar para varios problemas que se relacionan entre sí. Un algoritmo se aplica a un problema o clase de problemas específicos; el rango de las entradas o dominios se tiene que definir previamente, ya que está determinado el alcance o la generalidad del algoritmo.
  • 27. LIMITACIÓN Un algoritmo es finito en tamaño y tiempo. La ejecución de un algoritmo programado debe finalizar después de que se haya llevado a cabo una cantidad finita de operaciones.
  • 28. LEXICO DE UN PROGRAMADOR
  • 29. El Lenguaje de Programación es el medio de comunicación entre un programador y una computadora; es mediante el lenguaje de programación que el programador "le dice" a la computadora qué acciones debe ejecutar, para resolver un problema computacional. El Lenguaje de Programación es unidireccional; las órdenes son emitidas por el programador y recepcionadas por la computadora, la cual se limita a ejecutar dichas órdenes. En realidad, en un Lenguaje de Programación intervienen dos Lenguajes: el Lenguaje Fuente que es el lenguaje que el programador entiende y el Lenguaje - Objeto que es el lenguaje de la máquina que puede ser ejecutada por una computadora.
  • 30. El Lenguaje -Fuente tiene tres niveles: Los Lenguajes -Fuente de Alto Nivel están más próximos al programador; es decir, que con órdenes expresadas "casi" de forma natural, el programador puede resolver problemas computacionales. Los Lenguajes-Fuente de Nivel Intermedio son más concisos y rígidos en su sintaxis; eso los hace menos amigables para programar. Los Lenguajes -Fuente de Bajo Nivel son tan cercanos al lenguaje de máquina que se requiere de una mayor especialización por parte del programador.
  • 32. Tomando en consideración lo que se ha dicho, surge la pregunta: ¿Cómo es posible la comunicación entre el programador y la computadora, si entienden distintos lenguajes? La respuesta es: "Mediante un Traductor". Un Traductor es un programa que traduce el Lenguaje -Fuente al Lenguaje - Objeto. Para realizar el análisis y diseño del Traductor, se acude a la computabilidad y los lenguajes formales que proponen la Teoría de los Lenguajes Formales. La Teoría de Lenguajes está dedicada al estudio formal de las partes de un lenguaje; para el efecto, propone mecanismos formales encargadas del estudio del Léxico, Sintaxis y Semántica.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38. TECNICAS PARA DESARROLLAR UN ALGORITMO Técnicas de diseño Top down 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.
  • 39. Bottom Up  El diseño ascendente se refiere a la identificación de aquellos procesos que necesitan procesarse en el momento en el que vayan apareciendo para satisfacer el problema inmediato.
  • 40. Técnicas para la formulación de algoritmos Las dos herramientas utilizadas comúnmente para diseñar algoritmos son: • Diagrama de Flujo • Pseudocódigo
  • 41. DIAGRAMA DE FLUJO Un diagrama de flujo es otra técnica de diseño de algoritmos. Consiste en una serie de símbolos que denotan acciones, decisiones o procedimientos que se unen mediante flechas y conectores. Esta representación nos ayudará a conocer la información que tenemos, donde la tenemos, que debemos hacer con ella y como presentarla. Debe tener las cualidades de sencillez, claridad y normalización en su diseño.
  • 42. DIAGRAMA DE FLUJO Es la representación detallada en forma gráfica de cómo deben realizarse los pasos en la computadora para obtener resultados.
  • 43. PSEUDOCÓDIGO Es la representación narrativa de los pasos que debe seguir un algoritmo para dar solución a un problema determinado. El pseudocódigo utiliza palabras que indican el proceso a realizar
  • 44. DOMINIO DE UN ALGORITMO La clase o el conjunto de datos y condiciones para las cuales un algoritmo trabaja concretamente se llama dominio. Cuando se trata de resolver cualquier problema es necesario definir el dominio del algoritmo y después verificar que trabaja para todos los casos que se encuentran dentro del dominio. Es necesario incluir en el dominio todas las situaciones similares, pero los casos remotos o poco probables se permiten omitir.
  • 45. ERRORES EN LA CONTRUCCIÓN DEL DOMINIO.  Errores del dominio: se presentan cuando se no han especificado todas las situaciones que se pueden presentar en la práctica o se han descuidado la apreciación de su importancia. A medida que se presenta el problema, se tiene que clasificar y hay tres opciones: 1. Ignorarlo porque es improbable y quizás nunca ocurra. 2. Restringir el dominio del algoritmo para excluirlo. 3. Corregir el algoritmo.
  • 46. ERRORES DE LÓGICA:  Son aquellos errores que se detectan, después que se ha definido en forma adecuada el dominio de un algoritmo, en la etapa de prueba o verificación.  se deben principalmente a las siguientes causas: 1. Etapas incorrectas. 2. Secuencia incorrecta de etapas 3. El criterio de elección de un algoritmo debe hacerse en base a criterios tales como: a) Que el algoritmo sea simple, es decir, fácil de entender y de escribir. b) Que el algoritmo sea eficiente.
  • 47. MÉTODO HEURÍSTICO La heurística proporciona un esquema o plan para abordar los problemas poco conocidos, mejora la capacidad de crear soluciones y asegura que el método que se va a usar sea eficiente. En la etapa de planificación es donde se tiene la oportunidad de comparar métodos y seleccionar el más adecuado.
  • 48. Surge la pregunta: ¿ Cómo se pueden resolver los problemas para los que no hay un método establecido o para los cuales conocemos un algoritmo?.
  • 49. DISEÑO DE UN ALGORITMO Un método heurística para diseñar algoritmo es el denominado DIVIDE AND CONQUER, el cual es una técnica TOP-DOWN. Este método permite implementar la segmentación, descomposición de un problema largo y complejo en problemas independientes más pequeños y fáciles de resolver que el problema de partida. La técnica consiste en varias etapas.
  • 50. DESCOMPOSICIÓN DEL PROBLEMA DE PARTIDA EN SUBPROBLEMAS INDEPENDIENTES Y DETERMINACIÓN DE LAS RELACIONES ENTRE ELLOS. P P1 P2 P3
  • 51. RESOLUCIÓN DE CADA SUBPROBLEMA Si un sub-problema es grande, por descomposición y continuando hasta que resulten de la descomposición sub -problemas fácilmente resolubles. P1 P1.1 P1.2 P1.3
  • 52. Composición de las soluciones de los sub- problemas para lograr la solución final El diseño del algoritmo que resuelve un problema, realizado con esta técnica recibe el nombre de DISEÑO DESCENDENTE y resulta en algoritmo muy legibles, claros, fáciles de entender, seguir y corregir. El diseño de un algoritmo no se hace de una sola vez, sino que se va resolviendo en una secuencia de pasos ( llamados PASOS DE REFINAMIENTO). En cada paso el problema es refinado agregando detalles significativos, por lo que el método se conoce como: MÉTODO DE LOS REFINAMIENTOS SUCESIVOS.
  • 53. UN INGENIERO ES CONVOCADO PARA CONSTRUIR UN EDIFICIO CONSTRUCCIÓN DEL EDIFICIO CONFECCICÓN DE LOS PLANOS CONTRATACIÓN DEL PERSONAL COMPRA DE MATERIALES DIRECCIÓN DE LA OBRA
  • 54. UN SUB- PROBLEMA CONFECCIÓN DE LOS PLANOS DISEÑO DEL ANTEPROYECTO APROBACIÓN DEL ANTEPROYECTO ELABORACIÓN DE LOS PLANOS APROBACIÓN DE LOS PLANOS
  • 55. OTRO SUB- PROBLEMA CONTRATACIÓN DEL PERSONAL PEDIDO DE CURRICULUM VITAE ANÁLISIS DE LOS CURRÍCULUM VITAE ENTREVISTAS PERSONALES REDACCIÓN DE LOS CONTRATOS
  • 57. Al utilizar el refinamiento por pasos el diseñador de un algoritmo debe saber donde detenerse, es decir, debe saber cuando un paso específico del algoritmo es lo suficientemente claro para no necesitar más refinamiento. Se necesita CONOCER LAS CAPACIDADES DE UN PROCESADOR no sólo para terminar los refinamientos, sino para dirigir la forma en que el refinamiento avanza.
  • 58. Una computadora puede interpretar cualquier cosa expresadas de manera adecuada en un lenguaje de programación. Así el diseñador de un algoritmo de computadora puede orientar los pasos y la terminación del refinamiento hacia el tipo de lenguaje que se trate.
  • 59. PROGRAMACION ESTRUCTURA Los principios metodológicos básicos de la programación estructurada son los de subdividir el problema inicial o de partida en partes manejables para su análisis y hacer de esta manera que se agilice el proceso de entender el problema y la solución.
  • 60. Básicamente, estas subdivisiones deseadas( llamadas módulos) deben satisfacer los siguientes requisitos: 1. Los módulos deben estas jerarquizados. 2. Deben ser pequeños y sencillos. 3. Se deberán utilizar tantos módulos de menor jerarquía como sea necesario para cumplir con la restricción de ser pequeños y sencillos. 4. Se deberán usar las estructuras de control y datos adecuadas para cumplir con el requisito de pequeños y sencillos. 5. Los módulos deben ser legibles para cualquier persona aunque tenga solamente conocimientos elementales de progrmación.
  • 61. LENGUAJE DE DISEÑO DE PROGRAMAS Como la meta es escribir algoritmos que sean procesados en una computadora, se va a producir un lenguaje de diseño adecuado. Se llamará LENGUAJE DE DESCRIPCIÓN DE PROGRAMAS a la herramienta que permitirá diseñar programas de codificación.
  • 62. Este pseudo- lenguaje tiene las siguientes características: 1. Permite expresar de manera informal las estructuras de 2. Permite expresar las ideas en frases del lenguaje propio o natural. 3. Es similar al lenguaje de programación pero no está ligado a ninguna regla formal de sintaxis como aquellos. 4. No es un lenguaje compilable 5. Por convención se hace un sangrado en el texto que ayuda a la percepción visual de la lógica del diseño. 6. Permite expresar diseños de fácil comprensión que podrá convertirse sin dificultad a código en el lenguaje de implementación. 7. El pseudo- código generado es más fácil de cambiar y corregir que el código del programa.
  • 63. SOLUCION DE UN PROBLEMA ANALISIS  El Lenguaje Regular es el encargado del análisis del léxico de todo lenguaje; se proponen tres mecanismos formales para su estudio: las Expresiones Regulares, el Autómata de Estados Finitos y la Gramática Regular. Se demuestra que existe una contradicción dialéctica entre estos tres mecanismos formales, pues a pesar de ser diferentes en su estructura generan el mismo lenguaje; esta equivalencia permite la flexibilidad en el uso de cualquiera de estos mecanismos en el análisis del léxico del Lenguaje -Fuente .  El Lenguaje Libre de Contexto es el encargado de realizar el análisis de la sintaxis de todo lenguaje; propone dos mecanismos formales: el Autómata de Pila y la Gramática Libre de Contexto. Existe también una contradicción dialéctica entre estos dos mecanismos; esto permite una relación de equivalencia que no discrimina a ninguno de ellos para realizar el análisis de la sintaxis del Lenguaje-Fuente.
  • 64.  El Lenguaje Sensible al Contexto es el encargado de realizar el análisis de la Semántica de todo lenguaje; sin embargo, no es posible utilizar la Gramática Sensible al Contexto para este propósito, pues no existe una gramática determinística que permita llevar este análisis a su diseño e implementación; éste es el motivo por el que se ha adoptado una Gramática Atribuida como mecanismo formal de análisis de la Semántica del Lenguaje-Fuente.  El Lenguaje Atribuido es propuesto por Knuth, quien dice que -sin abandonar el determinismo que ofrece una gramática libre de contexto- se puede simular el comportamiento de una Gramática Sensible al Contexto; simplemente, se añade atributos a una Gramática Libre de Contexto y se creará una gramática atribuida capaz de analizar la Semántica del Lenguaje-Fuente[2] .  El Lenguaje Atribuido no sólo se encargara del análisis de la Semántica del Lenguaje-Fuente sino que también se encargará de la fase de generación del Lenguaje-Objeto, cumpliendo la función de síntesis del Traductor.
  • 65. DISEÑO  Para el diseño del analizador lexicográfico, se utilizará una función sistemática traductora ' T ' [3] . Esta función recibe como entrada una expresión regular que representa a un Token del léxico del Lenguaje -Fuente; es a través de esta función sistemática traductora que se puede generar el pseudocódigo del analizador lexicográfico, el cual podrá ser implementado en cualquier Lenguaje de Programación.  Para el diseño de analizador sintáctico, se utilizará el Método Descendente Predictivo Recursivo, que permitirá transformar la Gramática Libre de Contexto en un pseudocódigo del analizador sintáctico, el cual podrá ser implementado en cualquier Lenguaje de Programación.
  • 66. Para el diseño del analizador semántico, se incorpora parámetros por valor o por referencia al pseudocódigo del analizador sintáctico, llevando al diseño a una Gramática Atribuida. El diseño del generador de código requiere de un atributo sintetizado que tomará la contribución de cada esquema de producción y generará el Código- Objeto equivalente al Código-Fuente.
  • 67. MEDIOS DE EXPRESION DE UN ALGORITMO Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de programación entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje natural. Dichas expresiones son formas más estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programación específico.
  • 68.  La descripción de un algoritmo usualmente se hace en tres niveles: 1.Descripción de alto nivel. Se establece el problema, se selecciona un modelo matemático y se explica el algoritmo de manera verbal, posiblemente con ilustraciones y omitiendo detalles. 2.Descripción formal. Se usa pseudocódigo para describir la secuencia de pasos que encuentran la solución. 3.Implementación. Se muestra el algoritmo expresado en un lenguaje de programación específico o algún objeto capaz de llevar a cabo instrucciones.
  • 69. También es posible incluir un teorema que demuestre que el algoritmo es correcto, un análisis de complejidad o ambos.
  • 70.  DIAGRAMA DE FLUJO Diagrama de flujo que expresa un algoritmo para calcular la raíz cuadrada de un número xArtículo principal: Diagrama de flujo Los diagramas de flujo son descripciones gráficas de algoritmos; usan símbolos conectados con flechas para indicar la secuencia de instrucciones y están regidos por ISO. Los diagramas de flujo son usados para representar algoritmos pequeños, ya que abarcan mucho espacio y su construcción es laboriosa. Por su facilidad de lectura son usados como introducción a los algoritmos, descripción de un lenguaje y descripción de procesos a personas ajenas a la computación.
  • 71.  PSEUDOCÒDIGO El pseudocódigo (falso lenguaje, el prefijo pseudo significa falso) es una descripción de alto nivel de un algoritmo que emplea una mezcla de lenguaje natural con algunas convenciones sintácticas propias de lenguajes de programación, como asignaciones, ciclos y condicionales, aunque no está regido por ningún estándar. Es utilizado para describir algoritmos en libros y publicaciones científicas, y como producto intermedio durante el desarrollo de un algoritmo, como los diagramas de flujo, aunque presentan una ventaja importante sobre estos, y es que los algoritmos descritos en pseudocódigo requieren menos espacio para representar instrucciones complejas.
  • 72.  El pseudocódigo está pensado para facilitar a las personas el entendimiento de un algoritmo, y por lo tanto puede omitir detalles irrelevantes que son necesarios en una implementación. Programadores diferentes suelen utilizar convenciones distintas, que pueden estar basadas en la sintaxis de lenguajes de programación concretos. Sin embargo, el pseudocódigo en general es comprensible sin necesidad de conocer o utilizar un entorno de programación específico, y es a la vez suficientemente estructurado para que su implementación se pueda hacer directamente a partir de él.
  • 73. PROCESO DE LA PROGRAMACION La programación es más que solamente escribir código. El software tiene su ciclo de vida. Nace, crece, madura y finalmente muere, solamente para ser reemplazado por un producto nuevo. El entendimiento del ciclo de vida de un programa es importante, ya que, como programador, se pasará solamente poco tiempo en escribir código. La mayoría de las veces la mayor parte del tiempo se invierte al modificar y revisar código existente. Un código debe ser documentado, se le debe dar mantenimiento, debe ser mejorado y vendido.
  • 74. Los principales pasos que se deben seguir al elaborar un programa son: Requerimientos: Los programas empiezan cuando alguien tiene la idea de hacer algo y comienza a implementarlo. El documento con los requerimientos del sistema describen, en términos generales, qué es lo que se quiere hacer. Especificación del programa: La especificación es una breve descripción de qué es lo que el programa hace. En un principio, una especificación preliminar describe qué es lo que va a hacer el programa. Después, mientras el programa se va refinando, de la misma manera se va refinando la especificación del mismo.
  • 75. Diseño del código: El programador tiene que llevar a cabo un diseño del código a implementar. En él se deben incluir los algoritmos utilizados, las definiciones de los módulos a utilizar, archivos utilizados y estructuras de datos usadas en el programa. Es aquí en donde se desarrolla el pseudocódigo del programa. El uso de diagramas de flujo también nos permitirá obtener una abstracción sobre el problema, tanto en entradas, salidas, flujo y procesamiento de la información. Codificación: El siguiente paso es empezar a escribir el programa. Este primer paso involucra primero escribir un prototipo y después irlo puliendo para crear el programa final.
  • 76. Pruebas: El programador debe diseñar un plan de pruebas para posteriormente utilizarlo para probar su programa. Cuando es posible, debe existir un equipo de pruebas, diferente del equipo de programadores. Debugging: Desafortunadamente, pocos son los programas que funcionan a la primera. Los programas deben ser corregidos y probados nuevamente. Release: El programa es empaquetado, documentado y mandado al mundo a ser usado.
  • 77. Mantenimiento: Los programas rara vez, o nunca son perfectos. Los errores o bugs se encontrarán y necesitarán ser corregidos. Esta etapa es la etapa de mantenimiento de la programación. Revisión y mejora: Después de que un programa ha sido usado, los usuarios querrán realizarle algún cambio al funcionamiento del programa, tal como alguna nueva funcionalidad o un cambio en algún algoritmo. En este punto se crea una nueva especificación y el proceso comienza de nuevo.
  • 78. Especificación  Generalmente las especificaciones de un proyecto de programación son vagas e incompletas. El programador tiene que redefinirlas en algo que define exactamente el programa que se va a desarrollar. Por lo tanto, el primer paso es escribir una especificación preliminar que describa qué es lo que el programa va a hacer y cómo se debe utilizar. El documento no describe la estructura interna del programa o el algoritmo que se planea utilizar.  La especificación preliminar tiene dos propósitos. Primero, enseñársela al jefe o líder de proyecto para asegurarse de que la especificación contiene todo lo que se necesita que haga el programa. Segundo, se puede enseñar a los demás compañeros para ver si existen sugerencias con respecto al programa.
  • 79. Diseño del código  Después de que la especificación preliminar ha sido aprobada, se puede empezar a diseñar el código. En la fase de diseño de código, el programador planea su trabajo. En proyectos de programación muy grandes que involucran a mucha gente, el código puede ser dividido en varios módulos, asignando un módulo a cada programador. En esta etapa se deben planear las estructuras de datos, los archivos y los algoritmos a utilizar. En esta etapa podemos ayudarnos de pseudocódigo y diagramas de flujo.
  • 80. Prototipo  Después de que la etapa de diseño del código ha sido completada, podemos empezar a escribir el programa. Sin embargo, en lugar de empezar a escribir el programa completo para después empezar a probarlo, podemos utilizar un método llamado prototipo rápido (fast prototyping). Consiste en implementar una pequeña porción de la especificación que haga alguna de las funciones requeridas. Una vez que dicha parte del programa funciona, podemos implementar el resto de las funciones sobre la porción estable de código construida anteriormente. El prototipo también puede servir para darnos una idea de cuál es la dirección que lleva el proyecto.
  • 81. Makefile Después de que el código fuente ha sido terminado, necesitará ser compilado y encadenado. Si bien es cierto, podemos correr el compilador de manera manual, el proceso puede ser tedioso y complicado cuando estamos desarrollando proyectos muy grandes. Para esto podemos utilizar un makefile.
  • 82. Pruebas  Después de que el programa ha sido compilado sin errores, podemos pasar a la etapa de pruebas. Ahora es tiempo de escribir un plan de pruebas. Dicho documento no es más que una simple lista de los pasos que debemos seguir para estar seguros de que el programa funciona correctamente. Se debe escribir básicamente por dos razones:  Si un error es encontrado, queremos poder reproducirlo.  Si realizamos algún cambio en el programa, queremos volverlo a probar para estar seguros que el cambio no afectó nada que haya estado funcionando previamente.
  • 83. Debugging Primero debemos inspeccionar el programa para ver si podemos detectar algún error. En programas sencillos será muy fácil encontrar el error, sin embargo no lo será en proyectos que involucran código de más de 5,000 líneas. La mayoría de los sistemas tiene debuggers de C, en nuestro caso podemos utilizargdb.
  • 84. Mantenimiento Los buenos programadores someten a sus programas a largos y rigurosos procesos de mantenimiento antes de liberar su código. Cuando el usuario del programa empieza a utilizarlo y encuentra algún error, entramos a la etapa de mantenimiento, en donde cualquier error que pudiera tener el programa es corregido y el programa se vuelve a probar para asegurarse de que el error no vuelva a aparecer, para finalmente volver a liberar el programa.
  • 85. TIPOS DE DATOS  Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple carácter, tal como ‘b’, un valor entero tal como 35. El tipo de dato determina la naturaleza del conjunto de valores que puede tomar una variable. Numéricos Simples Lógicos Alfanuméricos (string) Tipos de datos Arreglos (Vectores, Matrices) Estructurados Registros (Def. por el Archivos usuario) Apuntadores
  • 86.  Datos Numéricos: Permiten representar valores escalares de forma numérica, esto incluye a los números enteros y los reales. Este tipo de datos permiten realizar operaciones aritméticas comunes.  Datos Lógicos: Son aquellos que solo pueden tener dos valores (cierto o falso) ya que representan el resultado de una comparación entre otros datos (numéricos o alfanuméricos).  Datos Alfanuméricos (String): Es una secuencia de caracteres alfanuméricos que permiten representar valores identificables de forma descriptiva, esto incluye nombres de personas, direcciones, etc. Es posible representar números como alfanuméricos, pero estos pierden su propiedad matemática, es decir no es posible hacer operaciones con ellos. Este tipo de datos se representan encerrados entre comillas.
  • 87. EXPRESIONES  Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales. Por ejemplo:  a + (b + 3) / c  Cada expresión toma un valor que se determina tomando los valores de las variables y constantes implicadas y la ejecución de las operaciones indicadas.  Una expresión consta de operadores y operandos. Según sea el tipo de datos que manipulan, se clasifican las expresiones en:  ü Aritméticas  ü Relaciónales  ü Lógicas
  • 88. OPERADORES Y OPERANDOS  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. Los Tipos de Operadores que existen son tres: los relaciónales, los Aritméticos y por último los lógicos.  ü 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.
  • 89.  Operadores Aritméticos + Suma - Resta * Multiplicación / División mod Modulo (residuo de la división entera)  Ejemplos: Expresión Resultado 7 / 2 3.5 12 mod 7 5 4 + 2 * 5 14
  • 90.  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 mas interno se evalúa primero. Dentro de una misma expresión los operadores se evalúan en el siguiente orden.  1. ^ à Exponenciación  2. *, /, mod à Multiplicación, división, modulo  3. - +, - à Suma y resta.  ü Los operadores en una misma expresión con igual nivel de prioridad se evalúan de izquierda a derecha.
  • 91.   Operadores Relaciónales:   Se utilizan para establecer una relación entre dos valores.  Compara estos valores entre si y esta comparación produce un resultado de certeza o falsedad (verdadero o falso).  Los operadores relaciónales comparan valores del mismo tipo (numéricos o cadenas)  Tienen el mismo nivel de prioridad en su evaluación.  Los operadores relaciónales tiene menor prioridad que los aritméticos.
  • 92. > Mayor que < Menor que > = Mayor o igual que < = Menor o igual que < > Diferente = Igual
  • 93. Ejemplos: Si a = 10 b = 20 c = 30 a + b > c Falso a - b < c Verdadero a - b = c Falso a * b < > c Verdadero
  • 94. Ejemplos no lógicos: a < b < c 10 < 20 < 30 T < 30 (no es lógico porque tiene diferentes operandos)
  • 95.  Operadores Lógicos:   Estos operadores se utilizan para establecer relaciones entre valores lógicos.  Estos valores pueden ser resultado de una expresión relacional.
  • 97.  Operador And Operando1 Operador Operando2 Resultado T AND T T T F F F T F F F F
  • 98.  Operador Or Operando1 Operador Operando2 Resultado T OR T T T F T F T T F F F
  • 99.  Operador Not Operando Resultado T F F T Ejemplos: (a < b) and (b < c) (10<20) and (20<30)
  • 100. IDENTIFICADORES  Un identificador es un nombre que se le da a una constante, una variable y a cualquier elemento de programa que necesite nombrarse.  Existen reglas para construir identificadores, las cuales son las siguientes:  Debe comenzar con un caracter alfabético (A - Z, mayúscula o minúscula)  Los demás caracteres pueden ser letras, dígitos o el caracter especial de subrayado (_)  Las letras no deben ser tildadas.  No se admiten espacios en blanco.  No deberá coincidir con palabras reservadas del lenguaje algorítmico. (Ejemplo: Var, Const, Entero, Real, etc.)
  • 101. La longitud de los identificadores puede ser de hasta 8 caracteres. Este valor dependerá del lenguaje de programación que esté estudiando Deben ser nombres significativos al programa que se este realizando. Indicar su tipo (Entero, Real, cadena, caracter o booleano)
  • 104. En el mundo de la programación se usan valores que no deben variar durante la ejecución de un programa. A estos valores se les conoce como constantes. También existen valores que deben cambiar a lo largo de la ejecución del programa; estos valores son conocidos como variables.
  • 105. Constantes Una constante es una partida de datos que permanecen sin cambios en el programa (durante el desarrollo y ejecución).  Ejemplos: 3.1416 (valor de pi, este valor no debe variar) 2000 (año en que según Nostradamus se acabaría el mundo XD) ‘a’ (primera letra del alfabeto) “ESPOL” (nombre de mi querida universidad)
  • 106. Variables  Una variable es una partida de datos cuyo valor puede cambiar en el programa (durante el desarrollo y ejecución).  Los diferentes tipos de variables dependen del lenguaje de programación, por lo general estas suelen ser enteras, reales, carácter, lógicas y de cadena.  Tanto las variables como las constantes tienen un nombre o identificador generalmente conformado por caracteres alfanuméricos (ciertos lenguajes de programación admiten el carácter de subrayado ‘_’ como válido en los identificadores), y el primero de éstos debe ser una letra.
  • 107.  Ejemplos:  variable1  numerador  primer_jugador  Por estética y comodidad durante el desarrollo del algoritmo se suele usar palabras en MAYUSCULAS para las constantes y en minúsculas para las variables. Si se desea usar varias palabras como nombre para una variable, éstas deben estar unidas, la primera palabra en minúsculas y el primer carácter de la segunda en mayúscula
  • 108. ESTRUCTURAS ALGORITMICAS Son un grupo de formas de trabajo que permiten mediante la manipulación de variables,realizar ciertos procesos específicos que nos lleven a la solución de problemas. Se clasifican en : SECUENCIALES CONDICIONALES CICLICAS
  • 109. SECUENCIALES Son aquellos en que una acción sigue a otra en secuencia. sus componentes son: Asignación: Es el paso de valores o resultados a una zona de la memoria, esta zona sera reconocida con el nombre de la variable que recibe el valor. Entrada: Consiste en recibir un valor o un dato, por medio de algun dispositivo de entrada. Salida: Se manda el resultado o mensaje, por medio de algun dispositivo de salida del computador.
  • 110.
  • 111. CONDICIONALES Son aquellos que permiten comparar una variable contra otro valor, se utilizan para tomar decisiones lógicas, existen tres tipos : Simples: Se ejecuta una determinada acción cuando se cumple determinada condición. Ejemplo : si (condición ) entonces (acción ) fin si
  • 112. Dobles: Son aquellos que permiten elegir entre dos opciones o alternativas posibles. Ejemplo: Si < condición > entonces < acción uno > si_no <acción dos> fin_si
  • 113. Múltiples: son aquellos que permiten elegir cuando hay mas de dos elecciones o alternativas posibles. Ejemplo: si < condición > entonces < instrucción > sino si < condición 2>entonces < instrucción > sino . . fin si
  • 114. CICLICAS Son aquellos tipos de estructura que repiten una secuencia de instrucciones un número determinado de veces, para encontrar la solución a un problema, estas son denominados como bucles, entre los cuales encontramos: Para: En esta se conoce el numero de iteraciones o veces que se repite la acción, antes de iniciar la ejecución del ciclo.
  • 115.
  • 116. Mientras Que: Este se repite un numero determinado de veces, para esto la instrucción se acompaña de una condición, la cual debe cumplirse para seguir la ejecución del ciclo, de lo contrario este se termina.
  • 117.
  • 118. Repita- Hasta: Este repite un proceso una cantidad de veces, determinada por un condicional, que lo ejecuta hasta que la condicional se cumpla. una característica importante de esta estructura es que permite realizar el proceso cuando menos una vez, ya que la condición se evalúa al final del proceso.
  • 119.
  • 120. BIBLIOGRAFIA  HTTP://www.exa.unicen.edu.ar/catedras/prog1/introprog2/sites/default/files/Ap untesDiagramaEstructura.pdf  HTTP://blog.espol.edu.ec/programando/variables-y-constantes/  HTTP://claseinfo.blogia.com/temas/identificadores.php  HTTP://sistemasadsi.blogspot.com/2010/09/tipos-de-datos-en-un-algoritmo.html  HTTP://algoritmosextremos.blogspot.com/2012/02/estructuras-algoritmicas.html  HTTP://www.ie.uia.mx/acad/atortole/temas/proceso.html  HTTP://www.mhe.es/universidad/informatica/8448136640/archivos/apendice_g eneral_4.pdf