SlideShare una empresa de Scribd logo
1 de 5
TEORIA SOBRE ALGORITMOS

Introducción

La computadora no solamente es una máquina que puede realizar procesos para darnos resultados, sin que
tengamos la noción exacta de las operaciones que realiza para llegar a esos resultados. Con la computadora
también podemos diseñar soluciones a la medida, de problemas específicos que se nos presenten. Más aún, si
estos involucran operaciones matemáticas complejas y/o repetitivas, o requieren del manejo de un volumen
muy grande de datos. A las soluciones creadas por computadora se les conoce como programas y no son más
que una serie de operaciones que realiza la computadora para llegar a un resultado, con un grupo de datos
específicos. Podríamos decir que un programa es el conjunto de instrucciones escritas de algún lenguaje de
programación y que ejecutadas secuencialmente resuelven un problema específico. Para poder realizar
programas, además de conocer la metodología para solucionar problemas, también debemos conocer, de
manera específica las funciones que puede realizar la computadora y las formas en que se pueden manejar
los elementos que hay en la misma.          El procesamiento de información en la computadora puede
representarse así:


         Datos de entrada               Proceso               Datos de salida

Metodología para la solución de problemas por medio de computadora:
 Definición del Problema: Esta fase está dada por el enunciado del problema, el cual requiere una
  definición clara y precisa. Es importante que se conozca lo que se desea que realice la computadora;
  mientras esto no se conozca del todo, no tiene mucho caso continuar con la siguiente etapa.
 Análisis del Problema: Una vez que se ha comprendido lo que se desea de la PC, es necesario definir:
   Los datos de entrada.
   La información que se desea producir (salida)
   Los métodos y fórmulas que se necesitan para procesar los datos.
  Una recomendación muy practica es el que nos pongamos en el lugar de la computadora y analicemos que es
  lo que necesitamos que nos ordenen y en qué secuencia, para producir los resultados esperados.
 Diseño del Algoritmo: Consiste en diseñar la serie de pasos organizados que describe el proceso que se
  debe seguir, para dar solución al problema especifico. Las características de un buen algoritmo son:
   Debe tener un punto particular de inicio.
   Debe ser definido, no debe permitir dobles interpretaciones.
   Debe ser general, soportar las variantes que se puedan presentar en la definición del problema.
   Debe ser finito en tamaño y tiempo de ejecución.
 Codificación: Es la operación de escribir la solución del problema (de acuerdo a la lógica del diagrama de
  flujo o pseudocódigo), en una serie de instrucciones detalladas (código fuente), en un lenguaje reconocible
  por la computadora (lenguaje de programación de alto nivel).
 Prueba y Depuración: Los errores humanos dentro de la programación de computadoras son muchos y
  aumentan considerablemente con la complejidad del problema. El proceso de identificar y eliminar
  errores, para dar paso a una solución sin errores se le llama depuración.
 Documentación: Es la guía o comunicación escrita en sus variadas formas, ya sea en enunciados,
  procedimientos, dibujos o diagramas. A menudo un programa escrito por una persona, es usado por otra.
  Por ello la documentación sirve para ayudar a comprender o usar un programa o para facilitar futuras
  modificaciones (mantenimiento).
 Mantenimiento: Se lleva a cabo después de terminado el programa, cuando se detecta que es necesario
  hacer algún cambio, ajuste o complementación al programa para que siga trabajando de manera correcta.
  Para poder realizarlo se requiere que el programa este correctamente documentado.
Lenguaje de Programación: Es un conjunto de símbolos, caracteres y reglas que le permiten a las personas
comunicarse con la computadora. Los lenguajes de programación tienen un conjunto de instrucciones que nos
permiten realizar operaciones de entrada/salida, cálculo, manipulación de textos, lógica/comparación y
almacenamiento/recuperación. Los lenguajes de programación se clasifican en:
 Lenguaje de Máquina: Sus instrucciones son directamente entendibles por la computadora y no necesitan
  traducción para que la CPU pueda comprenderlas y ejecutarlas. Las instrucciones se expresan en
  términos de la unidad de memoria más pequeña: el bit (dígito binario 0 o 1).
 Lenguaje de Bajo Nivel: Ensamblador. Las instrucciones se escriben en códigos alfabéticos conocidos como
  mnemotécnicos para las operaciones y direcciones simbólicas.
 Lenguaje de Alto Nivel: Visual Basic, C++, Cobol, etc. Las instrucciones son escritas con palabras similares
  a los lenguajes humanos (en general en inglés), lo que facilita la escritura y comprensión del programa.


. Programas y algoritmos:

Programa: Un programa de computadora es un conjunto de instrucciones (órdenes dadas a la máquina) que
producirán la ejecución de una determinada tarea. En esencia, un programa es un medio para conseguir un
fin. El fin será definido como la información necesaria para solucionar un problema.


Algoritmo: La palabra algoritmo se deriva de la traducción al latín de la palabra árabe alkhowarizmi, nombre
de un matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en
el siglo IX. Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para
dar solución a un problema especifico. Los algoritmos pueden ser de dos tipos:
 Cualitativos: Se describen los pasos utilizando palabras.
 Cuantitativos: Se utilizan cálculos numéricos para definir los pasos del proceso.

Lenguajes Algorítmicos: están conformados por una serie de símbolos y reglas usadas para describir los
procesos.

Los lenguajes algorítmicos pueden ser:                                                INICIO
                                                                                        LEA N
 No gráficos: Pseudocódigo. Representan en forma descriptiva los pasos que
  debe realizar un algoritmo para solucionar el problema. El pseudocódigo es            SI N>5 ENTONCES
  una mezcla de lenguaje de programación y español (o cualquier otro idioma) que            ESCRIBA “MAYOR”
  se emplea, en programación estructurada, para realizar el pre-diseño de un            FSI
  programa. El pseudocódigo usa palabras que indican cada paso del proceso a          FIN
  realizar.

 Gráficos: Diagrama de flujo. Representan gráficamente los pasos que debe              INICIO
  realizar un algoritmo para solucionar el problema. Esta representación
  gráfica se da cuando varios símbolos (que indican diferentes procesos en la           LEA N
  computadora), se relacionan entre sí mediante líneas que indican el orden en
  que se deben ejecutar los procesos. Los símbolos que se pueden utilizar han                     V   ESCRIBA
  sido normalizados por el ANSI - Instituto Norteamericano de                               N>5
                                                                                                      “MAYOR”
  Normalización.                                                                            F

                                                                                            FIN
Ventajas de utilizar pseudocódigo en lugar de diagrama de flujo:
 Ocupa menos espacio en una hoja de papel
 Permite representar en forma fácil operaciones repetitivas complejas
 Es muy fácil pasar pseudocódigo a un programa en algún lenguaje de programación.
 Se pueden observar claramente los niveles que tiene cada operación.
Expresiones:

Las expresiones son combinaciones de operandos (datos), operadores (signos de operaciones) y símbolos de
agrupación (paréntesis). Ejemplo: a + (b + 3) / c. Cada expresión toma un valor que se determina tomando
los valores de los datos implicados y ejecutando sobre ellos las operaciones indicadas, de acuerdo con los
símbolos de agrupación y la prioridad que las operaciones tengan entre sí. Según el tipo de operadores que
contienen, las expresiones se clasifican en: aritméticas, lógicas y relacionales.

Operandos: Los datos pueden ser clasificados según la clase de valor que tengan o según la estabilidad de
su valor en el tiempo:

 Según la clase de valor: Todos los datos tienen un tipo asociado con ellos, de acuerdo con su valor.    Un
  dato puede ser un simple carácter, tal como „b‟ o un valor entero tal como 35. Su clasificación es:

                                   Numéricos (enteros y reales)
                 Simples           Lógicos
                                   Alfanuméricos (carácter y cadenas)

      Tipos de                     Arreglos (vectores y matrices)
       Datos     Estructurados     Apuntadores
                                   Registros
                                   Archivos

                 De. Por el usuario (enumerados)


     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: 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 representa encerrados entre comillas.
      Ejemplo: “1997”

 Según la estabilidad de su valor en el tiempo: Un dato puede conservar su valor o pueden ir adquiriendo
  valores diferentes a lo largo del tiempo. Según esto, los datos pueden ser:

                 Constantes                        Numéricas
                               Por su Contenido    Lógicas
      Tipos de                                     Alfanuméricas
       Datos     Variables                         De Trabajo
                               Por su Uso          Contadores
                                                   Acumuladores

     Constante: dato que no cambia su valor durante la ejecución del programa. Ejemplo: a = 3.14
     Variable: espacio en la memoria del computador que permite almacenar un dato; su contenido puede
      cambiar durante la ejecución del programa. Para identificar una variable en memoria, es necesario darle
      un nombre con el cual podamos mencionarla en un algoritmo.
      Ejemplo: área = pi * radio ^ 2 (variables: radio y área, constante: pi)
     Variable Numérica: almacena valores numéricos, positivos o negativos. Ejemplo: a=0.15
     Variable Lógica: solo puede tener dos valores (cierto o falso). Ejemplo: sw=”F”, res=”V”
     Variable Alfanumérica: contiene caracteres alfanuméricos (letras, números y caracteres especiales).
      Ejemplo: letra=‟a‟, apellido=‟López‟, dirección=‟Av. Libertad #190‟
     Variable de Trabajo: recibe el resultado de una operación matemática. Ejemplo: suma=a+b
   Variable Contador: controla el número de ocasiones en que se realiza una operación o se cumple una
      condición; se incrementa generalmente de uno en uno. Ejemplo: cuenta=cuenta+1
     Variable Acumulador: sirve para llevar la suma acumulativa de una serie de valores que se van leyendo o
      calculando progresivamente. Ejemplo: suma=suma+c

5.2. Operadores: son elementos que relacionan de forma diferente los valores de uno o más operandos
(variables y/o constantes). Es decir, los operadores nos permiten manipular valores. Los operadores deben
resolverse o evaluarse siguiendo un orden, precedencia o prioridad. Los tipos de operadores que existen
son: aritméticos, lógicos y relacionales.

5.2.1. Operadores Aritméticos: +, - , *, /, ^ (exponenciación), mod (módulo, residuo de división entera) y
div (cociente de división entera). Los operadores aritméticos permiten la realización de operaciones
matemáticas sobre los operandos. 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.   La prioridad de los
operadores aritméticos es:

                                                      ( )
                                                       Λ
                                                *, /, mod, div
                                                      +, -

Los paréntesis anidados se evalúan de dentro a fuera, el más interno se evalúa primero. Los operadores con
igual nivel de prioridad se evalúan de izquierda a derecha en el orden en que aparecen en la expresión .

Ejemplos:
   4 + 2 * 5 = 14
   23 * 2 / 5 = 9.2
   3 + 5 * (10 - (2 + 4)) = 23
   3 + 5 * (10 - 6) = 3 + 5 * 4 = 3 + 20 = 23
   (1.5 + 3.0 * 4.1) = 28.98

Operadores Lógicos: Λ (y, and, conjunción), V (o, or, disjunción), ~ (¬, no, not, negación). Establecen
relaciones entre valores lógicos, que pueden ser resultado de una expresión relacional. La prioridad de los
operadores lógicos es:

                                            ~ (¬, no, not, negación)
                                            Λ (y, and, conjunción)
                                             V (o, or, disjunción)
Las expresiones con operadores lógicos (proposiciones) se evalúan usando tablas de verdad, que muestran
los valores de verdad que puede tener una proposición y las condiciones que los determinan. Una proposición
tiene valor verdadero (V) o falso (F), pero no ambos a la vez:

             p q pq             p q pq                p p          p q pq     p q pq
             V   V   V           V   V     V            V F           V   V   V   V   V   V
             V   F   F           V   F     V            F V           V   F   F   V   F   F
             F   V   F           F   V     V                          F   V   V   F   V   F
             F   F   F           F   F     F                          F   F   V   F   F   V
Ejemplos para a = “V”, b = “V” y c = “F”:
   aVc        Verdadero
   aΛ~b       Falso

5.2.3. Operadores Relacionales: >, <, >=, <=, =, < > (diferente). Los operadores relacionales se utilizan
para establecer una relación entre dos valores del mismo tipo, comparándolos entre sí para producir un
resultado de certeza o falsedad. Los operadores relacionales tienen el mismo nivel de prioridad en su
evaluación y tienen menor prioridad que los aritméticos.

Ejemplos para a = 10, b = 20 y c = 30:

    a+b>c        Falso
    a-b<c        Verdadero
    a-b=c        Falso
    a*b<>c       Verdadero

Evaluación de operadores de tipos diferentes: La prioridad a usar es la siguiente:

                                                               ()
                                                 Λ
                                                      (exponenciación)
                                                 ~ (¬, no, not, negación)
                                         *, /, mod, div, Λ (y, and, conjunción)
                                                +, -, V (o, or, disjunción)
                                                     >, <, > =, < =, < >, =

Ejemplos para a = 10, b = 12, c = 13 y d =10:

   1) ((a > b) or (a < c)) and ((a = c) or (a > = b))
          F        V             F           F
               V                        F
                            F

   2) ((a > = b) or (a < d)) and (( a > = d) and (c > d))
           F            F              V            V
                  F                           V
                               F

   3) not (a = c) and (c > b)
             F           V
       V
                   V

Más contenido relacionado

La actualidad más candente

Fundamentos de programacion
Fundamentos de programacionFundamentos de programacion
Fundamentos de programacionJesus Chaux
 
Introducción a la Programación
Introducción a la Programación Introducción a la Programación
Introducción a la Programación henser
 
estructuras algoritmicas ciclicas mientras
estructuras algoritmicas ciclicas mientrasestructuras algoritmicas ciclicas mientras
estructuras algoritmicas ciclicas mientrasJohan Velandia
 
Algoritmos Conceptos Basicos - www.ingfiis.tk
Algoritmos Conceptos Basicos - www.ingfiis.tkAlgoritmos Conceptos Basicos - www.ingfiis.tk
Algoritmos Conceptos Basicos - www.ingfiis.tkLaurence HR
 
Video Primer Bimestre Metodologia Abierta
Video Primer Bimestre Metodologia AbiertaVideo Primer Bimestre Metodologia Abierta
Video Primer Bimestre Metodologia AbiertaDanilo Jaramillo
 
Generalidades algoritmos
Generalidades algoritmosGeneralidades algoritmos
Generalidades algoritmosMagda Fernandez
 
Algoritmos TECNICO EN DESARROLLO DE SOFTWARE
Algoritmos TECNICO EN DESARROLLO DE SOFTWAREAlgoritmos TECNICO EN DESARROLLO DE SOFTWARE
Algoritmos TECNICO EN DESARROLLO DE SOFTWAREPedro Alvarez
 
Diagrama de flujo y programacion
Diagrama de flujo y programacionDiagrama de flujo y programacion
Diagrama de flujo y programacionCriss Russo
 
Entidades primitivas para algoritmos
Entidades primitivas para algoritmosEntidades primitivas para algoritmos
Entidades primitivas para algoritmosluisce03
 
Tipos de datos en programacion
Tipos de datos en programacionTipos de datos en programacion
Tipos de datos en programacionAlfonso
 
Algoritmos, lenguajes de programación, datos, tipos de datos y datos primitivos.
Algoritmos, lenguajes de programación, datos, tipos de datos y datos primitivos.Algoritmos, lenguajes de programación, datos, tipos de datos y datos primitivos.
Algoritmos, lenguajes de programación, datos, tipos de datos y datos primitivos.yoly1parra1
 
Guia didactica programacion estructurada unidad 4
Guia didactica programacion estructurada unidad 4Guia didactica programacion estructurada unidad 4
Guia didactica programacion estructurada unidad 4Sol Hernández
 

La actualidad más candente (20)

Fundamentos de programacion
Fundamentos de programacionFundamentos de programacion
Fundamentos de programacion
 
Introducción a la Programación
Introducción a la Programación Introducción a la Programación
Introducción a la Programación
 
estructuras algoritmicas ciclicas mientras
estructuras algoritmicas ciclicas mientrasestructuras algoritmicas ciclicas mientras
estructuras algoritmicas ciclicas mientras
 
Algoritmos Conceptos Basicos - www.ingfiis.tk
Algoritmos Conceptos Basicos - www.ingfiis.tkAlgoritmos Conceptos Basicos - www.ingfiis.tk
Algoritmos Conceptos Basicos - www.ingfiis.tk
 
Video Primer Bimestre Metodologia Abierta
Video Primer Bimestre Metodologia AbiertaVideo Primer Bimestre Metodologia Abierta
Video Primer Bimestre Metodologia Abierta
 
Generalidades algoritmos
Generalidades algoritmosGeneralidades algoritmos
Generalidades algoritmos
 
Algoritmos TECNICO EN DESARROLLO DE SOFTWARE
Algoritmos TECNICO EN DESARROLLO DE SOFTWAREAlgoritmos TECNICO EN DESARROLLO DE SOFTWARE
Algoritmos TECNICO EN DESARROLLO DE SOFTWARE
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Introduccion a los algoritmos
Introduccion a los algoritmosIntroduccion a los algoritmos
Introduccion a los algoritmos
 
Tipos algoritmos
Tipos algoritmosTipos algoritmos
Tipos algoritmos
 
Diagrama de flujo y programacion
Diagrama de flujo y programacionDiagrama de flujo y programacion
Diagrama de flujo y programacion
 
Unidad 1.1 PROGRAMACION I
Unidad 1.1  PROGRAMACION IUnidad 1.1  PROGRAMACION I
Unidad 1.1 PROGRAMACION I
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Entidades primitivas para algoritmos
Entidades primitivas para algoritmosEntidades primitivas para algoritmos
Entidades primitivas para algoritmos
 
Tipos de datos en programacion
Tipos de datos en programacionTipos de datos en programacion
Tipos de datos en programacion
 
Algoritmos, lenguajes de programación, datos, tipos de datos y datos primitivos.
Algoritmos, lenguajes de programación, datos, tipos de datos y datos primitivos.Algoritmos, lenguajes de programación, datos, tipos de datos y datos primitivos.
Algoritmos, lenguajes de programación, datos, tipos de datos y datos primitivos.
 
Actividad 3.4
Actividad 3.4Actividad 3.4
Actividad 3.4
 
Guia didactica programacion estructurada unidad 4
Guia didactica programacion estructurada unidad 4Guia didactica programacion estructurada unidad 4
Guia didactica programacion estructurada unidad 4
 
Logica algoritmos
Logica algoritmosLogica algoritmos
Logica algoritmos
 
Tipos de datos variables expresiones
Tipos de datos variables expresionesTipos de datos variables expresiones
Tipos de datos variables expresiones
 

Similar a Guia no1 algoritmos

Glosario de conceptos de la creación de los programas
Glosario de conceptos de la creación de los programasGlosario de conceptos de la creación de los programas
Glosario de conceptos de la creación de los programasGabriel Méndez
 
Razonamiento algoritmico
Razonamiento algoritmicoRazonamiento algoritmico
Razonamiento algoritmicopaty_cursocompu
 
Etapas del desarrolo de un programa
Etapas del desarrolo de un programaEtapas del desarrolo de un programa
Etapas del desarrolo de un programazeta2015
 
Resolución de problemas y algoritmo
Resolución de problemas y algoritmoResolución de problemas y algoritmo
Resolución de problemas y algoritmoNombre Apellidos
 
Actividad26
Actividad26Actividad26
Actividad26grachika
 
Tecnicatura en programacion
Tecnicatura en programacionTecnicatura en programacion
Tecnicatura en programacionadrianfazio
 
Tecnicatura en programacion
Tecnicatura en programacionTecnicatura en programacion
Tecnicatura en programacionadrianfazio
 
Evaluacion de algoritmo
Evaluacion de algoritmoEvaluacion de algoritmo
Evaluacion de algoritmoSergioERondon
 
Algoritmo variables, constantes, tipos de datos y asignacion
Algoritmo variables, constantes, tipos de datos y asignacionAlgoritmo variables, constantes, tipos de datos y asignacion
Algoritmo variables, constantes, tipos de datos y asignacionBoris Salleg
 
Introduccion A La Programacion
Introduccion A La ProgramacionIntroduccion A La Programacion
Introduccion A La ProgramacionMary Sanchez
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmosnileyna
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmosnileyna
 
9º Algoritmos
9º Algoritmos9º Algoritmos
9º Algoritmosnileyna
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmosnileyna
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmosnileyna
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmosnileyna
 

Similar a Guia no1 algoritmos (20)

INTRODUCCION
INTRODUCCIONINTRODUCCION
INTRODUCCION
 
Act26
Act26Act26
Act26
 
Apartes De Algoritmos
Apartes De AlgoritmosApartes De Algoritmos
Apartes De Algoritmos
 
Glosario de conceptos de la creación de los programas
Glosario de conceptos de la creación de los programasGlosario de conceptos de la creación de los programas
Glosario de conceptos de la creación de los programas
 
Razonamiento algoritmico
Razonamiento algoritmicoRazonamiento algoritmico
Razonamiento algoritmico
 
Etapas del desarrolo de un programa
Etapas del desarrolo de un programaEtapas del desarrolo de un programa
Etapas del desarrolo de un programa
 
Resolución de problemas y algoritmo
Resolución de problemas y algoritmoResolución de problemas y algoritmo
Resolución de problemas y algoritmo
 
Actividad26
Actividad26Actividad26
Actividad26
 
Tecnicatura en programacion
Tecnicatura en programacionTecnicatura en programacion
Tecnicatura en programacion
 
Tecnicatura en programacion
Tecnicatura en programacionTecnicatura en programacion
Tecnicatura en programacion
 
Evaluacion de algoritmo
Evaluacion de algoritmoEvaluacion de algoritmo
Evaluacion de algoritmo
 
Algoritmo variables, constantes, tipos de datos y asignacion
Algoritmo variables, constantes, tipos de datos y asignacionAlgoritmo variables, constantes, tipos de datos y asignacion
Algoritmo variables, constantes, tipos de datos y asignacion
 
Introduccion A La Programacion
Introduccion A La ProgramacionIntroduccion A La Programacion
Introduccion A La Programacion
 
Examen Remedial
Examen RemedialExamen Remedial
Examen Remedial
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
9º Algoritmos
9º Algoritmos9º Algoritmos
9º Algoritmos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 

Más de Manuel Hormechea (20)

Guia n5 tam 2009 1
Guia n5 tam 2009 1Guia n5 tam 2009 1
Guia n5 tam 2009 1
 
Guia n4 tam 2009 1
Guia n4 tam 2009 1Guia n4 tam 2009 1
Guia n4 tam 2009 1
 
Guia n4 tam 2009 1
Guia n4 tam 2009 1Guia n4 tam 2009 1
Guia n4 tam 2009 1
 
Guia n2 tam 2009 1
Guia n2 tam 2009 1Guia n2 tam 2009 1
Guia n2 tam 2009 1
 
Práctica funciones
Práctica funcionesPráctica funciones
Práctica funciones
 
Guia n1 tam 2009 1
Guia n1 tam 2009 1Guia n1 tam 2009 1
Guia n1 tam 2009 1
 
Presentacion java 1
Presentacion java 1Presentacion java 1
Presentacion java 1
 
Presentación clase 5 sept
Presentación clase 5 septPresentación clase 5 sept
Presentación clase 5 sept
 
P6 net2005
P6 net2005P6 net2005
P6 net2005
 
Presentación clase 29 agosto
Presentación clase 29 agostoPresentación clase 29 agosto
Presentación clase 29 agosto
 
18 p tablas
18 p tablas18 p tablas
18 p tablas
 
Ejercicio tablas ii
Ejercicio tablas iiEjercicio tablas ii
Ejercicio tablas ii
 
Tutorial uml
Tutorial umlTutorial uml
Tutorial uml
 
Guia no4 ado.net
Guia no4 ado.netGuia no4 ado.net
Guia no4 ado.net
 
Explotación laboral en colombia
Explotación laboral en colombiaExplotación laboral en colombia
Explotación laboral en colombia
 
Proyectoixfestivalnacionaldelajuventud.docx prueba
Proyectoixfestivalnacionaldelajuventud.docx pruebaProyectoixfestivalnacionaldelajuventud.docx prueba
Proyectoixfestivalnacionaldelajuventud.docx prueba
 
Clase02 paradigmas
Clase02 paradigmasClase02 paradigmas
Clase02 paradigmas
 
Guia no3 ado.net
Guia no3 ado.netGuia no3 ado.net
Guia no3 ado.net
 
Guia no3 ado.net
Guia no3 ado.netGuia no3 ado.net
Guia no3 ado.net
 
Guia no2 ado.net
Guia no2 ado.netGuia no2 ado.net
Guia no2 ado.net
 

Guia no1 algoritmos

  • 1. TEORIA SOBRE ALGORITMOS Introducción La computadora no solamente es una máquina que puede realizar procesos para darnos resultados, sin que tengamos la noción exacta de las operaciones que realiza para llegar a esos resultados. Con la computadora también podemos diseñar soluciones a la medida, de problemas específicos que se nos presenten. Más aún, si estos involucran operaciones matemáticas complejas y/o repetitivas, o requieren del manejo de un volumen muy grande de datos. A las soluciones creadas por computadora se les conoce como programas y no son más que una serie de operaciones que realiza la computadora para llegar a un resultado, con un grupo de datos específicos. Podríamos decir que un programa es el conjunto de instrucciones escritas de algún lenguaje de programación y que ejecutadas secuencialmente resuelven un problema específico. Para poder realizar programas, además de conocer la metodología para solucionar problemas, también debemos conocer, de manera específica las funciones que puede realizar la computadora y las formas en que se pueden manejar los elementos que hay en la misma. El procesamiento de información en la computadora puede representarse así: Datos de entrada Proceso Datos de salida Metodología para la solución de problemas por medio de computadora:  Definición del Problema: Esta fase está dada por el enunciado del problema, el cual requiere una definición clara y precisa. Es importante que se conozca lo que se desea que realice la computadora; mientras esto no se conozca del todo, no tiene mucho caso continuar con la siguiente etapa.  Análisis del Problema: Una vez que se ha comprendido lo que se desea de la PC, es necesario definir:  Los datos de entrada.  La información que se desea producir (salida)  Los métodos y fórmulas que se necesitan para procesar los datos. Una recomendación muy practica es el que nos pongamos en el lugar de la computadora y analicemos que es lo que necesitamos que nos ordenen y en qué secuencia, para producir los resultados esperados.  Diseño del Algoritmo: Consiste en diseñar la serie de pasos organizados que describe el proceso que se debe seguir, para dar solución al problema especifico. Las características de un buen algoritmo son:  Debe tener un punto particular de inicio.  Debe ser definido, no debe permitir dobles interpretaciones.  Debe ser general, soportar las variantes que se puedan presentar en la definición del problema.  Debe ser finito en tamaño y tiempo de ejecución.  Codificación: Es la operación de escribir la solución del problema (de acuerdo a la lógica del diagrama de flujo o pseudocódigo), en una serie de instrucciones detalladas (código fuente), en un lenguaje reconocible por la computadora (lenguaje de programación de alto nivel).  Prueba y Depuración: Los errores humanos dentro de la programación de computadoras son muchos y aumentan considerablemente con la complejidad del problema. El proceso de identificar y eliminar errores, para dar paso a una solución sin errores se le llama depuración.  Documentación: Es la guía o comunicación escrita en sus variadas formas, ya sea en enunciados, procedimientos, dibujos o diagramas. A menudo un programa escrito por una persona, es usado por otra. Por ello la documentación sirve para ayudar a comprender o usar un programa o para facilitar futuras modificaciones (mantenimiento).  Mantenimiento: Se lleva a cabo después de terminado el programa, cuando se detecta que es necesario hacer algún cambio, ajuste o complementación al programa para que siga trabajando de manera correcta. Para poder realizarlo se requiere que el programa este correctamente documentado.
  • 2. Lenguaje de Programación: Es un conjunto de símbolos, caracteres y reglas que le permiten a las personas comunicarse con la computadora. Los lenguajes de programación tienen un conjunto de instrucciones que nos permiten realizar operaciones de entrada/salida, cálculo, manipulación de textos, lógica/comparación y almacenamiento/recuperación. Los lenguajes de programación se clasifican en:  Lenguaje de Máquina: Sus instrucciones son directamente entendibles por la computadora y no necesitan traducción para que la CPU pueda comprenderlas y ejecutarlas. Las instrucciones se expresan en términos de la unidad de memoria más pequeña: el bit (dígito binario 0 o 1).  Lenguaje de Bajo Nivel: Ensamblador. Las instrucciones se escriben en códigos alfabéticos conocidos como mnemotécnicos para las operaciones y direcciones simbólicas.  Lenguaje de Alto Nivel: Visual Basic, C++, Cobol, etc. Las instrucciones son escritas con palabras similares a los lenguajes humanos (en general en inglés), lo que facilita la escritura y comprensión del programa. . Programas y algoritmos: Programa: Un programa de computadora es un conjunto de instrucciones (órdenes dadas a la máquina) que producirán la ejecución de una determinada tarea. En esencia, un programa es un medio para conseguir un fin. El fin será definido como la información necesaria para solucionar un problema. Algoritmo: La palabra algoritmo se deriva de la traducción al latín de la palabra árabe alkhowarizmi, nombre de un matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX. Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar solución a un problema especifico. Los algoritmos pueden ser de dos tipos:  Cualitativos: Se describen los pasos utilizando palabras.  Cuantitativos: Se utilizan cálculos numéricos para definir los pasos del proceso. Lenguajes Algorítmicos: están conformados por una serie de símbolos y reglas usadas para describir los procesos. Los lenguajes algorítmicos pueden ser: INICIO LEA N  No gráficos: Pseudocódigo. Representan en forma descriptiva los pasos que debe realizar un algoritmo para solucionar el problema. El pseudocódigo es SI N>5 ENTONCES una mezcla de lenguaje de programación y español (o cualquier otro idioma) que ESCRIBA “MAYOR” se emplea, en programación estructurada, para realizar el pre-diseño de un FSI programa. El pseudocódigo usa palabras que indican cada paso del proceso a FIN realizar.  Gráficos: Diagrama de flujo. Representan gráficamente los pasos que debe INICIO realizar un algoritmo para solucionar el problema. Esta representación gráfica se da cuando varios símbolos (que indican diferentes procesos en la LEA N computadora), se relacionan entre sí mediante líneas que indican el orden en que se deben ejecutar los procesos. Los símbolos que se pueden utilizar han V ESCRIBA sido normalizados por el ANSI - Instituto Norteamericano de N>5 “MAYOR” Normalización. F FIN Ventajas de utilizar pseudocódigo en lugar de diagrama de flujo:  Ocupa menos espacio en una hoja de papel  Permite representar en forma fácil operaciones repetitivas complejas  Es muy fácil pasar pseudocódigo a un programa en algún lenguaje de programación.  Se pueden observar claramente los niveles que tiene cada operación.
  • 3. Expresiones: Las expresiones son combinaciones de operandos (datos), operadores (signos de operaciones) y símbolos de agrupación (paréntesis). Ejemplo: a + (b + 3) / c. Cada expresión toma un valor que se determina tomando los valores de los datos implicados y ejecutando sobre ellos las operaciones indicadas, de acuerdo con los símbolos de agrupación y la prioridad que las operaciones tengan entre sí. Según el tipo de operadores que contienen, las expresiones se clasifican en: aritméticas, lógicas y relacionales. Operandos: Los datos pueden ser clasificados según la clase de valor que tengan o según la estabilidad de su valor en el tiempo:  Según la clase de valor: Todos los datos tienen un tipo asociado con ellos, de acuerdo con su valor. Un dato puede ser un simple carácter, tal como „b‟ o un valor entero tal como 35. Su clasificación es: Numéricos (enteros y reales) Simples Lógicos Alfanuméricos (carácter y cadenas) Tipos de Arreglos (vectores y matrices) Datos Estructurados Apuntadores Registros Archivos De. Por el usuario (enumerados)  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: 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 representa encerrados entre comillas. Ejemplo: “1997”  Según la estabilidad de su valor en el tiempo: Un dato puede conservar su valor o pueden ir adquiriendo valores diferentes a lo largo del tiempo. Según esto, los datos pueden ser: Constantes Numéricas Por su Contenido Lógicas Tipos de Alfanuméricas Datos Variables De Trabajo Por su Uso Contadores Acumuladores  Constante: dato que no cambia su valor durante la ejecución del programa. Ejemplo: a = 3.14  Variable: espacio en la memoria del computador que permite almacenar un dato; su contenido puede cambiar durante la ejecución del programa. Para identificar una variable en memoria, es necesario darle un nombre con el cual podamos mencionarla en un algoritmo. Ejemplo: área = pi * radio ^ 2 (variables: radio y área, constante: pi)  Variable Numérica: almacena valores numéricos, positivos o negativos. Ejemplo: a=0.15  Variable Lógica: solo puede tener dos valores (cierto o falso). Ejemplo: sw=”F”, res=”V”  Variable Alfanumérica: contiene caracteres alfanuméricos (letras, números y caracteres especiales). Ejemplo: letra=‟a‟, apellido=‟López‟, dirección=‟Av. Libertad #190‟  Variable de Trabajo: recibe el resultado de una operación matemática. Ejemplo: suma=a+b
  • 4. Variable Contador: controla el número de ocasiones en que se realiza una operación o se cumple una condición; se incrementa generalmente de uno en uno. Ejemplo: cuenta=cuenta+1  Variable Acumulador: sirve para llevar la suma acumulativa de una serie de valores que se van leyendo o calculando progresivamente. Ejemplo: suma=suma+c 5.2. Operadores: son elementos que relacionan de forma diferente los valores de uno o más operandos (variables y/o constantes). Es decir, los operadores nos permiten manipular valores. Los operadores deben resolverse o evaluarse siguiendo un orden, precedencia o prioridad. Los tipos de operadores que existen son: aritméticos, lógicos y relacionales. 5.2.1. Operadores Aritméticos: +, - , *, /, ^ (exponenciación), mod (módulo, residuo de división entera) y div (cociente de división entera). Los operadores aritméticos permiten la realización de operaciones matemáticas sobre los operandos. 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. La prioridad de los operadores aritméticos es: ( ) Λ *, /, mod, div +, - Los paréntesis anidados se evalúan de dentro a fuera, el más interno se evalúa primero. Los operadores con igual nivel de prioridad se evalúan de izquierda a derecha en el orden en que aparecen en la expresión . Ejemplos: 4 + 2 * 5 = 14 23 * 2 / 5 = 9.2 3 + 5 * (10 - (2 + 4)) = 23 3 + 5 * (10 - 6) = 3 + 5 * 4 = 3 + 20 = 23 (1.5 + 3.0 * 4.1) = 28.98 Operadores Lógicos: Λ (y, and, conjunción), V (o, or, disjunción), ~ (¬, no, not, negación). Establecen relaciones entre valores lógicos, que pueden ser resultado de una expresión relacional. La prioridad de los operadores lógicos es: ~ (¬, no, not, negación) Λ (y, and, conjunción) V (o, or, disjunción)
  • 5. Las expresiones con operadores lógicos (proposiciones) se evalúan usando tablas de verdad, que muestran los valores de verdad que puede tener una proposición y las condiciones que los determinan. Una proposición tiene valor verdadero (V) o falso (F), pero no ambos a la vez: p q pq p q pq p p p q pq p q pq V V V V V V V F V V V V V V V F F V F V F V V F F V F F F V F F V V F V V F V F F F F F F F F F V F F V Ejemplos para a = “V”, b = “V” y c = “F”: aVc Verdadero aΛ~b Falso 5.2.3. Operadores Relacionales: >, <, >=, <=, =, < > (diferente). Los operadores relacionales se utilizan para establecer una relación entre dos valores del mismo tipo, comparándolos entre sí para producir un resultado de certeza o falsedad. Los operadores relacionales tienen el mismo nivel de prioridad en su evaluación y tienen menor prioridad que los aritméticos. Ejemplos para a = 10, b = 20 y c = 30: a+b>c Falso a-b<c Verdadero a-b=c Falso a*b<>c Verdadero Evaluación de operadores de tipos diferentes: La prioridad a usar es la siguiente: () Λ (exponenciación) ~ (¬, no, not, negación) *, /, mod, div, Λ (y, and, conjunción) +, -, V (o, or, disjunción) >, <, > =, < =, < >, = Ejemplos para a = 10, b = 12, c = 13 y d =10: 1) ((a > b) or (a < c)) and ((a = c) or (a > = b)) F V F F V F F 2) ((a > = b) or (a < d)) and (( a > = d) and (c > d)) F F V V F V F 3) not (a = c) and (c > b) F V V V