SlideShare una empresa de Scribd logo
UNIVERSIDAD PEDAGOGICA NACIONAL  ALGORITMOS P R E U F O D
Algoritmos Es un conjunto de pasos lógicos  ordenados,  secuencial mente  y finita, escritos  de tal forma que  permiten  visualizar la solución de un problema determinado   en un momento  específico .
ALGORITMO: Nombre El nombre en latín de  algoritmo  proviene de la traducción que realizó  Fibonacci ,  de la obra del matemático árabe  Al'Khwarizmi  llamada  ,  Algoritmi de Numero Indorum .
ALGORITMO: Caracteríticas FINITO CONCRETO LEGIBLE DEFINIDO   PRECISO NO  AMBIGUO EFICIENTE Debe ser... Debe tener terminar en algún momento Debe realizar las funciones u operaciones para las que fue creado. Debe estar bien estructurado para su fácil entendimiento. Debe realizar las operaciones con un mínimo de utilización de recursos. Debe estar libre de errores. (Validado) Debe indicar un orden de realización de cada paso.  Debe generar el mismo resultado siempre que se siga.
ALGORITMO : Estructura Datos Procesos Estructuras de Control Corresponden a los datos requeridos para realizar el algoritmo (datos de entrada) y los datos que son generados (datos de salida) Conforma el grupo de instrucciones que realizan las operaciones con los datos. Determinan la organización de las instrucciones que deben ser realizadas.
ALGORITMO : Elementos Definición de variables  y constantes Proceso Estructuras de control Entrada Salida Es necesario identificar que datos se necesitan ingresar, cuales sirven de forma auxiliar y cuales se van a generar. Las instrucciones que se van a realizar deben estar bien estructuradas y tener un orden lógico, con el fin de evitar inconsistencias en el resultado. Cuerpo del algoritmo
ALGORITMO :  Quienes pueden hacer un algoritmo? Toda persona, implícitamente y diariamente diseña y realiza algoritmos, para dar solución a situaciones cotidianas de forma natural. Sin embargo el programador, diseña el algoritmo conciente de que al realizar cada paso obtendrá la solución de un problema específico.
ALGORITMO :  Cómo se hace? El no programador haría lo siguiente: Supongamos que deseamos ir al cine la película The Matrix, ¿cómo procedemos? Buscar la página de cines en el diario local y mirar si ve la película anunciada. Si la ve anunciada mira en qué cine la hacen y se va a verla. Si no la ve anunciada, espera a los estrenos de la semana que viene.
ALGORITMO :  Cómo se hace? El programador sin embargo, lo haría de este otro modo: Buscar la página de cines en el diario local, con fecha de hoy Revisar la cartelera de arriba abajo y de izquierda a derecha, buscando entre los títulos existentes. Si se encuentra el título The Matrix, no seguir buscando. Apuntar el nombre del cine, su dirección y los horarios Si no se encuentra el título en la cartelera, esperar una semana y  volver a empezar el proceso a partir del punto 1 de esta lista. 1 2 3 4
1.  Poner la llave. 2.  Asegurarse que el cambio esté en neutro. 3.  Pisar el el acelerador. 4.  Girar la llave hasta la posición “arranque”. 5.  Si el motor arranca antes de 6 seg, dejar la llave en la posición “encendido”. 6.  Si el motor no arranca antes de 6 seg, volver al paso 3 (como máximo 5 veces). 7.  Si el auto no arranca, llamar a la grúa. ALGORITMO :  Otro ejemplo Encender un automóvil
ALGORITMO :  Requisitos Los algoritmos se crean para resolver problemas.  Es importante que junto al algoritmo,  describamos claramente el problema que éste nos permite resolver. No debemos omitir el contexto de nuestros algoritmos.  Es necesario establecer lo que se n ecesita  y dónde  se  debe  comenzar. Seguir los pasos del algoritmo debe  llevarnos a la resolución del problema. Siempre que sea posible seguiremos  personalmente los pasos de nuestro  algoritmo para comprobar que son efectivamente  correctos y conducen efectivamente a la solución esperada.   Por ejemplo:  Si se requiere hallar la velocidad de un automóvil, es necesario, definir si la distancia debe ser en metros, kilómetros, etc y  el tiempo estará dado en segundos u horas, ya que la velocidad puede representarse en Km /h ó mts/seg . Debe Definirse  del problema Debe estar dentro de contexto Debe resolver el problema Debe evitar la ambigüedad
ALGORITMO :  Técnicas de Diseño   Es una técnica de diseño descendente donde se realiza un refinamiento sucesivo, que permite darle una organización a las instrucciones, en forma de módulos o bloques.  Está técnica permite dividir el problema en pequeñas partes, a las cuales se les da solución por separado, luego se integran las soluciones para resolver el problema principal. Top Down Divide y vencerás
ALGORITMO :  Técnicas de Representación   Es una técnica que permite representar gráficamente las operaciones  y estructuras que se van a realizar, mediante una simbología estándar, con un único punto de inicio y uno de finalización.  Está técnica permite representar el algoritmo mediante un lenguaje más estructurado, facilitando su posterior codificación.  Diagrama de Flujo Pseudocódigo Inicio Instrucción 1 Instrucción 2 Si condición entonces Instrucción 3 . . . Instrucción n Fin
PSEUDOCÓDIGO:Cómo se Hace? Cada instrucción que se va a realizar debe comenzar por un  verbo , ejemplo: Muestre, Haga, Lea, etc. Se debe mantener una  identación  o sangría sobre el margen izquierdo para identificar fácilmente el comienzo y final de las estructuras  La representación de las  estructuras  son similares u homónimas de los lenguajes de programación, ejemplo: inicio, fin, mientras que, repita_hasta, si_entonces_sino, etc. 1 2 3
PSEUDOCÓDIGO:Cómo se Hace? Inicio  : Denota el punto de inicio del algoritmo.   Leer  : Denota la acción de introducir datos  o  variables desde un dispositivo estándar de entrada . Calcular  : Denota la realización de cualquier operación aritmética que genere valores para ser  almacenados en una variable. Imprimir  : Representa  la acción de enviar datos desde  variables a un dispositivo estándar de salida. Fin : Denota el punto de finalización del algoritmo.
DIAGRAMA DE FLUJO: Simbología Se utiliza para indicar el punto de  inicio y finalización  del diagrama Permite indicar la  Entrada de datos desde  un dispositivo estándar   Inicio  Fin Lectura  Captura Permite indicar la realización de un proceso matemático,  o una operación de asignación Proceso
DIAGRAMA DE FLUJO: Simbología Indica la realización de operaciones de salida a un  dispositivo estándar  (el monitor o  impresor.) Permite establecer una condición relacional ó lógica que puede tomar un valor de verdadero o falso, de este símbolo se deducen 2 flujos alternativos de ejecución. Impresión Decisión Permiten dar continuidad al diagrama si la página o área de trabajo esta llena,  el círculo se utiliza como un conector dentro de la misma página, el otro símbolo se define como un conector a otra página. Conectores Permiten enlazar los símbolos de un sentido único pueden ser horizontales o verticales. Estas no pueden entrecruzarse y cada una de ellas debe tener un único  símbolo de partida y un único símbolo de destino. Flujo
DIAGRAMA DE FLUJO: Simbología Estructuras de Decisión (Condición) Si  condición  entonces Instrucciones Si  condición  entonces Instrucciones si no Instrucciones Decisión Simple Decisión Compuesta Decisión Anidada Si  condición  entonces Si  condición  entonces Instrucciones si no Si  condición  entonces Instrucciones si no Instrucciones Caso  condición Val1: Instrucciones Val2: Instrucciones Val3: Instrucciones Otros: Instrucciones Fin Caso Decisión Múltiple Condición Si No Condición Si No Condición Si No Condición No Condición Si No Condición Si No Condición Val3 Val1 Val2 Otro
DIAGRAMA DE FLUJO: Simbología Estructuras de Ciclo . . . Mientras que  condición Instrucciones Fin Mientras . . . . . . Repita Instrucciones Hasta que  condición . . . Ciclo Mientras Ciclo Hasta Ciclo Para . . . Para   v=valini, v=valfinal, inc   Instrucciones Fin Para . . . v: variable valini: valor inicial valfinal: valor final inc: incremento Condición Si No Instrucciones Condición Si No Instrucciones Instrucciones v=valini,v=valfinal, incremento
ALGORITMO: Fases de Diseño Análisis del problema  Definición del problema Selección de la mejor alternativa  Diagramación Prueba de escritorio  Algoritmo
ALGORITMO : Definición del Problema Está dada por el enunciado del problema, el cuál debe ser claro y completo  Es importante que conozcamos exactamente que se desea. Mientras qué esto no se comprenda, no tiene caso pasar a la siguiente etapa.
ALGORITMO : Análisis del Problema Entendido el problema  para  resolverlo es preciso analizar   Los datos de salida o  resultados  que se esperan Los datos de entrada  que nos suministran   Área de Trabajo   Fórmulas  Recursos   Proceso
ALGORITMO : Selección de Alternativa Analizado el problema Posiblemente  tengamos varias formas de resolverlo Lo importante es determinar cuál es la mejor alternativa   La que produce los resultados Esperados  en el menor tiempo  y al menor costo   Se debe tener en cuenta el principio de que las cosas siempre se podrán hacer de una mejor forma. Solución  ..1 Solución  ..2 Solución  ..3 Solución  ..5
ALGORITMO : Diagramación Una vez que  sabemos  cómo resolver el  problema Dibujar gráficamente  la lógica de la alternativa  seleccionada   Plasmar la  solucion mediante el Pseudocódigo
ALGORITMO : Prueba de Escritorio Se utiliza para corroborar que el algoritmo plasmado en cualquier herramienta presenta la solución al problema inicial Al realizar lo anterior se puede comprobar si el algoritmo es correcto o si hay necesidad  de hacer ajustes (volver al paso anterior)   Es Recomendable  Dar diferentes datos de entrada y considerar todos  los posibles casos, aún los de excepción o no esperados, para asegurar que el programa no produzca errores en ejecución cuando  se presenten estos casos.   Esta prueba consiste en: Dar diferentes datos de entrada al programa  seguir la secuencia indicada   hasta  obtener los resultados
ALGORITMO : Conceptos Minima parte de la información. Se refiere a los elementos que se utilizan en los algoritmos para realizar alguna operación sobre estos. Corresponde al tipo de valor que puede almacenarse en un espacio de memoria definido y a la cantidad de espacio que requiere para almacenar un valor. Dato Tipo de Dato Corresponde a un espacio de memoria que almacena un dato que dentro del programa en ejecución cambia o varía su contenido (valor).. Variable Corresponde a un espacio de memoria que almacena un dato que dentro del programa en ejecución mantiene siempre su contenido (valor). Constante
ALGORITMO : Tipos de Datos Caracter Real Entero Boleano cadena Numéricos Lógicos Carácter Tipos de Datos
ALGORITMO : Operadores Aritméticos Lógicos Relacionales + -  >  < = No Y && O || /  ^ % >= <= != <>
Clasificación de los tipos de datos según su estructura: - Simples: - Estándar (entero, real, carácter, booleano) No estándar (enumeración, subrango) -  Estructurados: - Estáticos (arrays, cadena, registros, ficheros, conjuntos - Dinámicos (punteros, listas enlazadas, árboles, grafos INTRODUCCIÓN A LAS ESTRUCTURAS DE DATOS Pilas Colas Los tipos simples son cuando cada dato representa un único elemento: - Estándar: Están definidos por defecto por el lenguaje. - No estándar: Tipos simples definidos por el usuario. Los tipos de datos estructurados, son cuándo un dato es una estructura que se construyen a partir de otros complementos. Estáticos:  Ocupan un tamaño de memoria fijo, que tengo que definir antes de declararlo . Dinámicos:  La estructura no ocupa un tamaño fijo de memoria, sino que ocupa la memoria que ocupa en cada momento. Se van a manejar a través del tipo de dato puntero.
ARRAYS UNIDIMENSIONALES: VECTORES. Un array unidimensional, o lineal, o vector, es un conjunto finito y ordenado de  elementos homogéneos. Es finit o porque tiene un número determinado de elementos. Homogéneo porque todos los elementos almacenados van a ser del mismo tipo. Ordenado  porque vamos a poder acceder a cada elemento del array de manera independiente porque va a haber una forma de referenciar cada elemento.  Los arrays se almacenan siempre en posiciones consecutivas de memoria y podemos acceder a cada elemento del array de manera independiente a través de los índices. Un índice no tiene porque ser un valor constante, sino que puede ser también una variable o una expresión que al ser evaluada devuelva ese índice. A la hora de definir un array siempre habrá que dar el nombre del array, el rango de sus índices y el tipo de los datos que contiene, y para hacer esa declaración, se utiliza la siguiente nomenclatura. <nom_array>: array [LI .. LS] de <tipo> sueldo: array [1 .. 8] de real sueldo: array [1990 .. 1997] de real sueldo [1992]    100000 I: entero I    1992 Sueldo [I] Sueldo [I+2]
OPERACIONES CON ARRAYS UNIDIMENSIONALES O VECTORES 1.-  Asignación de un dato a una posición concreta del array : <nom_array>[indice]    valor Ventas [3]    800000 leer <nom_array>[indice] escribir <nom_array>[indice] desde  i=1 hasta 12 escribir “Introduce las ventas del mes”i leer ventas [i] fin desde desde  i=1 hasta 12 escribir “Ventas del mes”i”=”ventas [i] fin desde   2 .-  Lectura y escritura de datos: Utilizando diferente Ciclos   Hacer para  I =1 hasta 12 leer ventas [ I ] F in para Hacer mientras I < = 12 Leer ventas [ I ] Fin mientras I =1 Repetir  Leer vec[ i ]  I = I + 1 Hasta que   1 2 3 4 5 6 7 8 9 10 11 12
3 . Recorrido o acceso secuencial de un array: - Consiste en pasar por todas las posiciones del array para procesar su información. Desde  i=1 hasta 12   Ventas [i]    ventas [i] + 1000000 Fin desde 4. Actualización de un array: 1º)  Añadir datos : Es un caso especial de la operación de inserción de un elemento en un array, pero el  elemento lo ingresamos después de la última posición que contiene información válida en el array. Para que esto se pueda hacer es necesario que si actualmente el array tiene K posiciones  de información válida, tenga un tamaño de al menos K+1 para que pueda añadir otro elemento a continuación de K. <nom_array>[K+1]    valor
2º)  Inserción de datos: Consiste en introducir un elemento en el interior de un array para lo cual será necesario desplazar todos los elementos situados a la derecha del que vamos a insertar una posición a la derecha  con el fin de conservar el orden relativo entre ellos. Para que se pueda insertar un nuevo elemento en el array si ya existen N elementos con  información en el array, el array tendrá que tener un tamaño de cómo mínimo N+1 para poder  insertar el elemento. “ G” Siendo K la posición en la que tengo que insertar el nuevo elemento y N el número de elementos válidos en el array en el momento de la inserción y siempre suponiendo de N+1, el algoritmo de inserción será: Desde  i=N hasta K   A[I+1]    A[I] Fin desde A[K]    valor C E F J M O
3º)  Borrar datos: Para eliminar un elemento de un array si ese elemento está posicionado al final del array, no hay ningún problema, simplemente si el tamaño del array era N, ahora hay que considerar que el tamaño del array es N-1. Si el elemento a borrar ocupa cualquier otra posición entonces tendré que desplazar todos los elementos situados a la derecha del que quiero borrar una posición hacia la izquierda para que el array quede organizado. Borrar J. Suponiendo que el número de elementos validos actualmente es N y   que quiero borrar el elemento de la posición K.   Desde  i=K hasta N-1 A[I]    A[I+1] Fin desde Para indicar que el número de elementos validos es N, podríamos indicarlo como N    N-1. C E F J M O
ARRAYS BIDIMENSIONALES O MATRICES En un array unidimensional o vector cada elemento se referencia por un índice, en un array bidimensional cada elemento se va a referenciar por 2 índices, y ahora la representación lógica ya no va a ser un vector, sino una matriz. Un array bidimensional de M*N elementos es un conjunto de M*N elementos todos del mismo tipo, cada uno de los cuales se referencia a través de 2 subíndices.  El primer subíndice podrá variar entre 1 y M si hemos empezado a numerar los índices por 1, y el segundo índice variará entre 1 y N, si hemos empezado a numerar  los índices por el 1. Y más en general podemos definir un array de 2 dimensiones de la siguiente manera. <nom_array>: array [LI1..LS2,LI2..LS2] de <tipo> <var_array>[I , J] LI1 <= I <= LS1 LI2 <= J <= LS2 El tamaño del array será (LS1-LI1 +1)*(LS2-LI2 +1) Ventas de cada mes de 1990 a 1995: Ventas: array [1990..1995,1..12] de real 6*12=72
La representación lógica de un array bidimensional es una matriz de dimensiones M*N donde M es el número de filas de la matriz y N es el número de columnas, es decir, la 1ª dimensión indicaría las filas y la 2ª dimensión indicaría las columnas, es decir, al intentar acceder a un  elemento I,J estaríamos accediendo al elemento que ocupa la fila I y la columna J. En memoria, sin embargo todos los elementos del array se almacenan en posiciones  contiguas pero nosotros lo vemos como una matriz. Ventas [1993,3] En memoria estaría almacenado todo seguido: 1990 1991 1992 1993 X 1994 1995
REPRESENTACION GRAFICA DE UNA MATRIZ RENGLONES (R) COLUMNAS ( C ) MATRIZ [R,C) Llenando una matriz: Por renglones: Hacer para R= 1 a 3 Hacer para C= 1 a 3 leer Mat (R,C) Fin para Fin para Por columnas Hacer para C = 1 a 3 Hacer para R= 1 a 3  leer Mat (R,C) Fin para Fin para 1,1 1,2 1,3 1,4 2,1 2,2 2,3 2,4 3,1 3,2 3,3 3,4

Más contenido relacionado

PPT
Fundamentos de Programacion
PPTX
Fundamentos de programación.pptx
PPSX
Lógica de programación
PPT
Tutorial PSEINT
PPSX
Ppt algoritmo
PPT
Algoritmos
DOCX
Algoritmos y metodología para la solución de problemas
PDF
Clase de algoritmos
Fundamentos de Programacion
Fundamentos de programación.pptx
Lógica de programación
Tutorial PSEINT
Ppt algoritmo
Algoritmos
Algoritmos y metodología para la solución de problemas
Clase de algoritmos

La actualidad más candente (20)

PPTX
diapositivas algoritmos
PPTX
Tipos de datos en programacion
DOCX
Estándares para el Modelado de Procesos de Negocios
PDF
Tipos de Autómatas 
DOCX
Unidad 3 graficacion
PPT
algoritmos-.ppt
PPTX
Tipos de gramatica y arboles de derivacion
DOCX
1.1. historia del lenguaje de programacion
PPTX
Analizador Sintáctico
PDF
Tipos de datos abstractos
PPTX
Lenguajes de simulación
PPTX
Algoritmo
PPTX
GESTION DE PROCESOS Sistemas Operativos
DOCX
Caracteristicas de los primeros chipset
PPTX
Lenguajes de programacion tema 2_compiladores e interpretes
DOCX
Mapa conceptual de algoritmos
PPT
Ejercicios
PPTX
Paradigmas de programación
PPT
Estructuras condicionales
diapositivas algoritmos
Tipos de datos en programacion
Estándares para el Modelado de Procesos de Negocios
Tipos de Autómatas 
Unidad 3 graficacion
algoritmos-.ppt
Tipos de gramatica y arboles de derivacion
1.1. historia del lenguaje de programacion
Analizador Sintáctico
Tipos de datos abstractos
Lenguajes de simulación
Algoritmo
GESTION DE PROCESOS Sistemas Operativos
Caracteristicas de los primeros chipset
Lenguajes de programacion tema 2_compiladores e interpretes
Mapa conceptual de algoritmos
Ejercicios
Paradigmas de programación
Estructuras condicionales
Publicidad

Destacado (20)

PPTX
Presentacion de algoritmos
PDF
Algoritmo en powerpoint
PPTX
Algoritmos
PPTX
Diapositivas algoritmos Pseudocodigo diagramas de flujo
PPTX
La diferencia entre función y procedimiento
PPTX
Elaboracion de algoritmos
PPTX
Diapositivas algoritmos
PPS
1 conceptos algoritmos
PPTX
Estructuras de control
PPT
Algoritmos
PPT
Tecnicas de diseño
PPTX
Características de un algoritmo
PDF
21 problemas de algoritmo resueltos
PDF
Simbolos diagrama de flujo
PDF
Tema 23: Técnicas de diseño descendente de algoritmos
PPTX
Ejemplos algoritmos (clase 1)
PPTX
Algoritmos taller 1 vanessa berrio, camilo rodriguez, yuranis bustamante, k...
PPTX
Algoritmos y programación ing civil
PPTX
Algoritmo
Presentacion de algoritmos
Algoritmo en powerpoint
Algoritmos
Diapositivas algoritmos Pseudocodigo diagramas de flujo
La diferencia entre función y procedimiento
Elaboracion de algoritmos
Diapositivas algoritmos
1 conceptos algoritmos
Estructuras de control
Algoritmos
Tecnicas de diseño
Características de un algoritmo
21 problemas de algoritmo resueltos
Simbolos diagrama de flujo
Tema 23: Técnicas de diseño descendente de algoritmos
Ejemplos algoritmos (clase 1)
Algoritmos taller 1 vanessa berrio, camilo rodriguez, yuranis bustamante, k...
Algoritmos y programación ing civil
Algoritmo
Publicidad

Similar a Presentacion algoritmos (20)

PDF
presentacionalgoritmos-111003021701-phpapp01.pdf
PPT
Presentacion algoritmos
PPTX
Algoritmos (DFD, Pseudocodigos).pptx
PPT
Introducción a la Informática - Los Algoritmos
PPTX
Desarrollo de lógica algorítmica_PARTE 1.PPTX
DOCX
Conceptos básicos de algorítmica
PDF
Diseno dealgoritmos
PDF
Resolución de problemas y algoritmo
PPSX
Fundamentos de Programacion
PDF
1. conceptos básicos sobre algoritmos adsi
PDF
Algoritmo
PDF
Algoritmo
PDF
Algoritmo
PPT
Clase2 algoritmos formas-representacionalgoritmicas1
PDF
PPT
algoritmos
PPT
Introduccion A La Programacion
PPTX
2. algoritmos
PPTX
Evaluacion de algoritmo
DOCX
Algoritmos y diagramas_de_flujo
presentacionalgoritmos-111003021701-phpapp01.pdf
Presentacion algoritmos
Algoritmos (DFD, Pseudocodigos).pptx
Introducción a la Informática - Los Algoritmos
Desarrollo de lógica algorítmica_PARTE 1.PPTX
Conceptos básicos de algorítmica
Diseno dealgoritmos
Resolución de problemas y algoritmo
Fundamentos de Programacion
1. conceptos básicos sobre algoritmos adsi
Algoritmo
Algoritmo
Algoritmo
Clase2 algoritmos formas-representacionalgoritmicas1
algoritmos
Introduccion A La Programacion
2. algoritmos
Evaluacion de algoritmo
Algoritmos y diagramas_de_flujo

Presentacion algoritmos

  • 1. UNIVERSIDAD PEDAGOGICA NACIONAL ALGORITMOS P R E U F O D
  • 2. Algoritmos Es un conjunto de pasos lógicos ordenados, secuencial mente y finita, escritos de tal forma que permiten visualizar la solución de un problema determinado en un momento específico .
  • 3. ALGORITMO: Nombre El nombre en latín de algoritmo proviene de la traducción que realizó Fibonacci , de la obra del matemático árabe Al'Khwarizmi llamada , Algoritmi de Numero Indorum .
  • 4. ALGORITMO: Caracteríticas FINITO CONCRETO LEGIBLE DEFINIDO PRECISO NO AMBIGUO EFICIENTE Debe ser... Debe tener terminar en algún momento Debe realizar las funciones u operaciones para las que fue creado. Debe estar bien estructurado para su fácil entendimiento. Debe realizar las operaciones con un mínimo de utilización de recursos. Debe estar libre de errores. (Validado) Debe indicar un orden de realización de cada paso. Debe generar el mismo resultado siempre que se siga.
  • 5. ALGORITMO : Estructura Datos Procesos Estructuras de Control Corresponden a los datos requeridos para realizar el algoritmo (datos de entrada) y los datos que son generados (datos de salida) Conforma el grupo de instrucciones que realizan las operaciones con los datos. Determinan la organización de las instrucciones que deben ser realizadas.
  • 6. ALGORITMO : Elementos Definición de variables y constantes Proceso Estructuras de control Entrada Salida Es necesario identificar que datos se necesitan ingresar, cuales sirven de forma auxiliar y cuales se van a generar. Las instrucciones que se van a realizar deben estar bien estructuradas y tener un orden lógico, con el fin de evitar inconsistencias en el resultado. Cuerpo del algoritmo
  • 7. ALGORITMO : Quienes pueden hacer un algoritmo? Toda persona, implícitamente y diariamente diseña y realiza algoritmos, para dar solución a situaciones cotidianas de forma natural. Sin embargo el programador, diseña el algoritmo conciente de que al realizar cada paso obtendrá la solución de un problema específico.
  • 8. ALGORITMO : Cómo se hace? El no programador haría lo siguiente: Supongamos que deseamos ir al cine la película The Matrix, ¿cómo procedemos? Buscar la página de cines en el diario local y mirar si ve la película anunciada. Si la ve anunciada mira en qué cine la hacen y se va a verla. Si no la ve anunciada, espera a los estrenos de la semana que viene.
  • 9. ALGORITMO : Cómo se hace? El programador sin embargo, lo haría de este otro modo: Buscar la página de cines en el diario local, con fecha de hoy Revisar la cartelera de arriba abajo y de izquierda a derecha, buscando entre los títulos existentes. Si se encuentra el título The Matrix, no seguir buscando. Apuntar el nombre del cine, su dirección y los horarios Si no se encuentra el título en la cartelera, esperar una semana y volver a empezar el proceso a partir del punto 1 de esta lista. 1 2 3 4
  • 10. 1. Poner la llave. 2. Asegurarse que el cambio esté en neutro. 3. Pisar el el acelerador. 4. Girar la llave hasta la posición “arranque”. 5. Si el motor arranca antes de 6 seg, dejar la llave en la posición “encendido”. 6. Si el motor no arranca antes de 6 seg, volver al paso 3 (como máximo 5 veces). 7. Si el auto no arranca, llamar a la grúa. ALGORITMO : Otro ejemplo Encender un automóvil
  • 11. ALGORITMO : Requisitos Los algoritmos se crean para resolver problemas. Es importante que junto al algoritmo, describamos claramente el problema que éste nos permite resolver. No debemos omitir el contexto de nuestros algoritmos. Es necesario establecer lo que se n ecesita y dónde se debe comenzar. Seguir los pasos del algoritmo debe llevarnos a la resolución del problema. Siempre que sea posible seguiremos personalmente los pasos de nuestro algoritmo para comprobar que son efectivamente correctos y conducen efectivamente a la solución esperada. Por ejemplo: Si se requiere hallar la velocidad de un automóvil, es necesario, definir si la distancia debe ser en metros, kilómetros, etc y el tiempo estará dado en segundos u horas, ya que la velocidad puede representarse en Km /h ó mts/seg . Debe Definirse del problema Debe estar dentro de contexto Debe resolver el problema Debe evitar la ambigüedad
  • 12. ALGORITMO : Técnicas de Diseño Es una técnica de diseño descendente donde se realiza un refinamiento sucesivo, que permite darle una organización a las instrucciones, en forma de módulos o bloques. Está técnica permite dividir el problema en pequeñas partes, a las cuales se les da solución por separado, luego se integran las soluciones para resolver el problema principal. Top Down Divide y vencerás
  • 13. ALGORITMO : Técnicas de Representación Es una técnica que permite representar gráficamente las operaciones y estructuras que se van a realizar, mediante una simbología estándar, con un único punto de inicio y uno de finalización. Está técnica permite representar el algoritmo mediante un lenguaje más estructurado, facilitando su posterior codificación. Diagrama de Flujo Pseudocódigo Inicio Instrucción 1 Instrucción 2 Si condición entonces Instrucción 3 . . . Instrucción n Fin
  • 14. PSEUDOCÓDIGO:Cómo se Hace? Cada instrucción que se va a realizar debe comenzar por un verbo , ejemplo: Muestre, Haga, Lea, etc. Se debe mantener una identación o sangría sobre el margen izquierdo para identificar fácilmente el comienzo y final de las estructuras La representación de las estructuras son similares u homónimas de los lenguajes de programación, ejemplo: inicio, fin, mientras que, repita_hasta, si_entonces_sino, etc. 1 2 3
  • 15. PSEUDOCÓDIGO:Cómo se Hace? Inicio : Denota el punto de inicio del algoritmo. Leer : Denota la acción de introducir datos o variables desde un dispositivo estándar de entrada . Calcular : Denota la realización de cualquier operación aritmética que genere valores para ser almacenados en una variable. Imprimir : Representa la acción de enviar datos desde variables a un dispositivo estándar de salida. Fin : Denota el punto de finalización del algoritmo.
  • 16. DIAGRAMA DE FLUJO: Simbología Se utiliza para indicar el punto de inicio y finalización del diagrama Permite indicar la Entrada de datos desde un dispositivo estándar Inicio Fin Lectura Captura Permite indicar la realización de un proceso matemático, o una operación de asignación Proceso
  • 17. DIAGRAMA DE FLUJO: Simbología Indica la realización de operaciones de salida a un dispositivo estándar (el monitor o impresor.) Permite establecer una condición relacional ó lógica que puede tomar un valor de verdadero o falso, de este símbolo se deducen 2 flujos alternativos de ejecución. Impresión Decisión Permiten dar continuidad al diagrama si la página o área de trabajo esta llena, el círculo se utiliza como un conector dentro de la misma página, el otro símbolo se define como un conector a otra página. Conectores Permiten enlazar los símbolos de un sentido único pueden ser horizontales o verticales. Estas no pueden entrecruzarse y cada una de ellas debe tener un único símbolo de partida y un único símbolo de destino. Flujo
  • 18. DIAGRAMA DE FLUJO: Simbología Estructuras de Decisión (Condición) Si condición entonces Instrucciones Si condición entonces Instrucciones si no Instrucciones Decisión Simple Decisión Compuesta Decisión Anidada Si condición entonces Si condición entonces Instrucciones si no Si condición entonces Instrucciones si no Instrucciones Caso condición Val1: Instrucciones Val2: Instrucciones Val3: Instrucciones Otros: Instrucciones Fin Caso Decisión Múltiple Condición Si No Condición Si No Condición Si No Condición No Condición Si No Condición Si No Condición Val3 Val1 Val2 Otro
  • 19. DIAGRAMA DE FLUJO: Simbología Estructuras de Ciclo . . . Mientras que condición Instrucciones Fin Mientras . . . . . . Repita Instrucciones Hasta que condición . . . Ciclo Mientras Ciclo Hasta Ciclo Para . . . Para v=valini, v=valfinal, inc Instrucciones Fin Para . . . v: variable valini: valor inicial valfinal: valor final inc: incremento Condición Si No Instrucciones Condición Si No Instrucciones Instrucciones v=valini,v=valfinal, incremento
  • 20. ALGORITMO: Fases de Diseño Análisis del problema Definición del problema Selección de la mejor alternativa Diagramación Prueba de escritorio Algoritmo
  • 21. ALGORITMO : Definición del Problema Está dada por el enunciado del problema, el cuál debe ser claro y completo Es importante que conozcamos exactamente que se desea. Mientras qué esto no se comprenda, no tiene caso pasar a la siguiente etapa.
  • 22. ALGORITMO : Análisis del Problema Entendido el problema para resolverlo es preciso analizar Los datos de salida o resultados que se esperan Los datos de entrada que nos suministran Área de Trabajo Fórmulas Recursos Proceso
  • 23. ALGORITMO : Selección de Alternativa Analizado el problema Posiblemente tengamos varias formas de resolverlo Lo importante es determinar cuál es la mejor alternativa La que produce los resultados Esperados en el menor tiempo y al menor costo Se debe tener en cuenta el principio de que las cosas siempre se podrán hacer de una mejor forma. Solución ..1 Solución ..2 Solución ..3 Solución ..5
  • 24. ALGORITMO : Diagramación Una vez que sabemos cómo resolver el problema Dibujar gráficamente la lógica de la alternativa seleccionada Plasmar la solucion mediante el Pseudocódigo
  • 25. ALGORITMO : Prueba de Escritorio Se utiliza para corroborar que el algoritmo plasmado en cualquier herramienta presenta la solución al problema inicial Al realizar lo anterior se puede comprobar si el algoritmo es correcto o si hay necesidad de hacer ajustes (volver al paso anterior) Es Recomendable Dar diferentes datos de entrada y considerar todos los posibles casos, aún los de excepción o no esperados, para asegurar que el programa no produzca errores en ejecución cuando se presenten estos casos. Esta prueba consiste en: Dar diferentes datos de entrada al programa seguir la secuencia indicada hasta obtener los resultados
  • 26. ALGORITMO : Conceptos Minima parte de la información. Se refiere a los elementos que se utilizan en los algoritmos para realizar alguna operación sobre estos. Corresponde al tipo de valor que puede almacenarse en un espacio de memoria definido y a la cantidad de espacio que requiere para almacenar un valor. Dato Tipo de Dato Corresponde a un espacio de memoria que almacena un dato que dentro del programa en ejecución cambia o varía su contenido (valor).. Variable Corresponde a un espacio de memoria que almacena un dato que dentro del programa en ejecución mantiene siempre su contenido (valor). Constante
  • 27. ALGORITMO : Tipos de Datos Caracter Real Entero Boleano cadena Numéricos Lógicos Carácter Tipos de Datos
  • 28. ALGORITMO : Operadores Aritméticos Lógicos Relacionales + - > < = No Y && O || / ^ % >= <= != <>
  • 29. Clasificación de los tipos de datos según su estructura: - Simples: - Estándar (entero, real, carácter, booleano) No estándar (enumeración, subrango) - Estructurados: - Estáticos (arrays, cadena, registros, ficheros, conjuntos - Dinámicos (punteros, listas enlazadas, árboles, grafos INTRODUCCIÓN A LAS ESTRUCTURAS DE DATOS Pilas Colas Los tipos simples son cuando cada dato representa un único elemento: - Estándar: Están definidos por defecto por el lenguaje. - No estándar: Tipos simples definidos por el usuario. Los tipos de datos estructurados, son cuándo un dato es una estructura que se construyen a partir de otros complementos. Estáticos: Ocupan un tamaño de memoria fijo, que tengo que definir antes de declararlo . Dinámicos: La estructura no ocupa un tamaño fijo de memoria, sino que ocupa la memoria que ocupa en cada momento. Se van a manejar a través del tipo de dato puntero.
  • 30. ARRAYS UNIDIMENSIONALES: VECTORES. Un array unidimensional, o lineal, o vector, es un conjunto finito y ordenado de elementos homogéneos. Es finit o porque tiene un número determinado de elementos. Homogéneo porque todos los elementos almacenados van a ser del mismo tipo. Ordenado porque vamos a poder acceder a cada elemento del array de manera independiente porque va a haber una forma de referenciar cada elemento. Los arrays se almacenan siempre en posiciones consecutivas de memoria y podemos acceder a cada elemento del array de manera independiente a través de los índices. Un índice no tiene porque ser un valor constante, sino que puede ser también una variable o una expresión que al ser evaluada devuelva ese índice. A la hora de definir un array siempre habrá que dar el nombre del array, el rango de sus índices y el tipo de los datos que contiene, y para hacer esa declaración, se utiliza la siguiente nomenclatura. <nom_array>: array [LI .. LS] de <tipo> sueldo: array [1 .. 8] de real sueldo: array [1990 .. 1997] de real sueldo [1992]  100000 I: entero I  1992 Sueldo [I] Sueldo [I+2]
  • 31. OPERACIONES CON ARRAYS UNIDIMENSIONALES O VECTORES 1.- Asignación de un dato a una posición concreta del array : <nom_array>[indice]  valor Ventas [3]  800000 leer <nom_array>[indice] escribir <nom_array>[indice] desde i=1 hasta 12 escribir “Introduce las ventas del mes”i leer ventas [i] fin desde desde i=1 hasta 12 escribir “Ventas del mes”i”=”ventas [i] fin desde   2 .- Lectura y escritura de datos: Utilizando diferente Ciclos Hacer para I =1 hasta 12 leer ventas [ I ] F in para Hacer mientras I < = 12 Leer ventas [ I ] Fin mientras I =1 Repetir Leer vec[ i ] I = I + 1 Hasta que   1 2 3 4 5 6 7 8 9 10 11 12
  • 32. 3 . Recorrido o acceso secuencial de un array: - Consiste en pasar por todas las posiciones del array para procesar su información. Desde i=1 hasta 12 Ventas [i]  ventas [i] + 1000000 Fin desde 4. Actualización de un array: 1º) Añadir datos : Es un caso especial de la operación de inserción de un elemento en un array, pero el elemento lo ingresamos después de la última posición que contiene información válida en el array. Para que esto se pueda hacer es necesario que si actualmente el array tiene K posiciones de información válida, tenga un tamaño de al menos K+1 para que pueda añadir otro elemento a continuación de K. <nom_array>[K+1]  valor
  • 33. 2º) Inserción de datos: Consiste en introducir un elemento en el interior de un array para lo cual será necesario desplazar todos los elementos situados a la derecha del que vamos a insertar una posición a la derecha con el fin de conservar el orden relativo entre ellos. Para que se pueda insertar un nuevo elemento en el array si ya existen N elementos con información en el array, el array tendrá que tener un tamaño de cómo mínimo N+1 para poder insertar el elemento. “ G” Siendo K la posición en la que tengo que insertar el nuevo elemento y N el número de elementos válidos en el array en el momento de la inserción y siempre suponiendo de N+1, el algoritmo de inserción será: Desde i=N hasta K A[I+1]  A[I] Fin desde A[K]  valor C E F J M O
  • 34. 3º) Borrar datos: Para eliminar un elemento de un array si ese elemento está posicionado al final del array, no hay ningún problema, simplemente si el tamaño del array era N, ahora hay que considerar que el tamaño del array es N-1. Si el elemento a borrar ocupa cualquier otra posición entonces tendré que desplazar todos los elementos situados a la derecha del que quiero borrar una posición hacia la izquierda para que el array quede organizado. Borrar J. Suponiendo que el número de elementos validos actualmente es N y que quiero borrar el elemento de la posición K. Desde i=K hasta N-1 A[I]  A[I+1] Fin desde Para indicar que el número de elementos validos es N, podríamos indicarlo como N  N-1. C E F J M O
  • 35. ARRAYS BIDIMENSIONALES O MATRICES En un array unidimensional o vector cada elemento se referencia por un índice, en un array bidimensional cada elemento se va a referenciar por 2 índices, y ahora la representación lógica ya no va a ser un vector, sino una matriz. Un array bidimensional de M*N elementos es un conjunto de M*N elementos todos del mismo tipo, cada uno de los cuales se referencia a través de 2 subíndices. El primer subíndice podrá variar entre 1 y M si hemos empezado a numerar los índices por 1, y el segundo índice variará entre 1 y N, si hemos empezado a numerar los índices por el 1. Y más en general podemos definir un array de 2 dimensiones de la siguiente manera. <nom_array>: array [LI1..LS2,LI2..LS2] de <tipo> <var_array>[I , J] LI1 <= I <= LS1 LI2 <= J <= LS2 El tamaño del array será (LS1-LI1 +1)*(LS2-LI2 +1) Ventas de cada mes de 1990 a 1995: Ventas: array [1990..1995,1..12] de real 6*12=72
  • 36. La representación lógica de un array bidimensional es una matriz de dimensiones M*N donde M es el número de filas de la matriz y N es el número de columnas, es decir, la 1ª dimensión indicaría las filas y la 2ª dimensión indicaría las columnas, es decir, al intentar acceder a un elemento I,J estaríamos accediendo al elemento que ocupa la fila I y la columna J. En memoria, sin embargo todos los elementos del array se almacenan en posiciones contiguas pero nosotros lo vemos como una matriz. Ventas [1993,3] En memoria estaría almacenado todo seguido: 1990 1991 1992 1993 X 1994 1995
  • 37. REPRESENTACION GRAFICA DE UNA MATRIZ RENGLONES (R) COLUMNAS ( C ) MATRIZ [R,C) Llenando una matriz: Por renglones: Hacer para R= 1 a 3 Hacer para C= 1 a 3 leer Mat (R,C) Fin para Fin para Por columnas Hacer para C = 1 a 3 Hacer para R= 1 a 3 leer Mat (R,C) Fin para Fin para 1,1 1,2 1,3 1,4 2,1 2,2 2,3 2,4 3,1 3,2 3,3 3,4