Introducción a la Lógica de ProgramaciónFernando de la Cruz Naranjo Grisales
Qué es Lógica?
Concepto de LógicaLa lógica es una ciencia formal y una rama de la filosofía que estudia los principios de la demostración e inferencia válida. La palabra deriva del griego antiguo λογική (logike), que significa "dotado de razón, intelectual, dialéctico, argumentativo", que a su vez viene de λόγος (logos), "palabra, pensamiento, idea, argumento, razón o principio".Wikipedia
La que conocimos:Lógica ProposicionalLa lógica proposicional es una rama de la lógica clásica que estudia las proposiciones o sentencias lógicas, sus posibles evaluaciones de verdad y en el caso ideal, su nivel absoluto de verdad.WikipediaNegaciónDisyunción (o)Conjunción (y)CondicionalBicondicionalDisyunción exclusiva
Algoritmos
AlgoritmoPalabra extrañaDe designación desconocidaTodo el tiempo hacemos uso de algoritmos
AlgoritmoEtimología: Proviene del nombre del matemático persa Mohammed Al-khowanzmi, cuyo apellido traducido al latín es Algorismus
Problema Es un asunto o un conjunto de cuestiones que se plantean para ser resueltas.La naturaleza de los problemas varía con el ámbito o el contexto: problemas matemáticos, químicos, filosóficos, etc.Es importante que al abordar un problema se tenga una descripción simple y precisa del mismo, de lo contrario resultaría complejo modular, simular, o programar su solución en un ordenador.
Algoritmo de la llantaEjemplo tradicional de un algoritmo: Cambiar la llanta pinchada de un automóvilBuscar herramientas, rueda de repuesto y el triángulo rojo de señalizaciónUbicar el triángulo en el lugar adecuadoIr al lugar de la rueda averiadaSacar las tuercasColocar el gatoLevantar el carroSacar la rueda malaColocar la rueda de repuestoColocar las tuercasApretar tuercasGuardar las herramientas
Algoritmo para compra de un libroInicioSaber cual es el libro adquirirDesplazarnos hacia una libreríaPreguntar si tienen el librosi lo tienenadquirirlo y parar allísi no lo tienenir al paso 3Fin
Definiciones de Algoritmo en Programación“Es un conjunto finito de reglas que proveen una secuencia de operaciones para resolver un problema específico. La noción de algoritmo es básica para toda la programación de computadores” – KNUTH Profesor de la Universidad de Stanford“Es una secuencia ordenada y no ambigua de pasos que llevan a la solución de un problema dado” – TREMBLAY“Un concepto central de la programación y de la ciencia de la computación es el concepto de algoritmo” – WIRTH Profesor de la Universidad de Zurich y co-responsable de la creación de lenguajes de programación como ALGOL, PASCAL y MODULA2
Algoritmo en ProgramaciónConjunto de acciones que especifican la secuencia de operaciones  realizar, en orden, para resolver un problemaLos algoritmos son independientes tanto del lenguaje de programación como del computador que los ejecuta.
Problemas de Programación Un programador es una persona que resuelve problemas, y para llegar a ser un programador eficaz se necesita aprender a resolver problemas de un modo riguroso y sistemáticoDefiniciónFormas de soluciónSoluciónDiseño AlgoritmoEjecuciónProblemaAnálisisProgramarEstudioLenguaje
Solución de un Problema en ProgramaciónAlgunos de los pasos para solucionar un problema son: Análisis: consiste en el estudio detallado del problema. Se debe identificar los datos de entrada, de salida y la descripción del problema.
Diseño del algoritmo, que describe la secuencia ordenada de pasos que conduce a la solución de un problema dado.
Expresar el algoritmo como un programa en un lenguaje de programación adecuado (Fase de Codificación)
Ejecución y validación del programa por el computadorCaracterística de un Algoritmoun algoritmo siempre debe terminar después de un número finito de pasos y debe generar una información de salida Finito:si se sigue un algoritmo dos veces se debe obtener el mismo resultado Definido:
 Preciso:indicar exactamente el orden de realización de las instrucciones
Elementos de los AlgoritmosDatos
Información
Constantes, Variables y OperadoresDato La palabra proviene del latín datum, forma del verbo dare “dar”, que significa “Lo que es dado” Representación de una información de manera adecuada para su tratamiento por un ordenador
Dato Son representaciones simbólicas de objetos, hechos, instituciones, conocimientos. Ejemplos   15   25º C   25 m   31-10-2005   Febrero   María Pérez
Información Los datos organizados o procesados adquieren significado y proporcionan conocimiento o desencadenan un comportamiento sobre los hechos u objetos que lo originaron La información se resume en:                 Datos + significado
InformaciónUn grupo de datos es informaciónDatos: 19- Marzo – Maria – 20 ptos.
Información: El 19 de marzo se publicó en acta la  calificación de 20 ptos para María El principal objetivo de la información consiste en aumentar el conocimiento o reducir la incertidumbre.
InformaciónEjemplos   Juan tiene 15 años18º C  fue la temperatura de esta mañana   El edificio de la Andina mide 15 m de altura   La fecha de hoy es 25/04/2009Febrero tiene 28 días y 29 si el año es bisiesto		(Qué meses tienen 28 días?)María Jaramillo es un nombre muy común			(no es japonés)
Constantes, Variables y Operadores de un Algoritmo VARIABLE: Campo de memoria que se  le puede cambiar su contenidoVARIABLE ENTEROS: Almacenan tipos de datos Enteros sin puntos ni comasVARIABLE REAL: Almacena tipos de datos o números decimalesVARIABLES CARÁCTER: Almacena datos como letras
Cómo se carga una variableCon el signo =   		 ejemploA=8         B=A            C=A+BSe debe tener en cuenta:Al lado izquierdo del igual solo puede haber una variableAl lado derecho del igual puede haber una constante, una variable o una expresiónEl computador siempre resuelve lo que esta a la derecha del igual y su resultado lo almacena en la variable que este a la izquierda del igualCada vez que se le entra un nuevo valor a una variable , el valor anterior se pierde
EjemploEntero  A, B, CA=10    B=15C=20A=A+BB=B+8C=C+AA=A+5 B=B+3C=C+2A=A-BB=A-BC=A-BIdentificar los nuevosvalores de A,B,C
OperadoresSon signos que nos permiten expresar relaciones entre variables y/o constantes, por ejemplo:^   (Potenciación), *   (Multiplicación), /   (División)Hay operadores matemáticos (+,-,/,*,^), lógicos (and, or, xor, not), de concatenación (&, (), ””), relacionales (>, <, =, <>, >=, <=)x= a+b/c+d  como interpreta esto el PC?a+b/c+d:  resuelve primero b/c luego resuelve a+ el resultado de b/c y por último resuelve el resultado anterior con la suma de + d
Ejemplo(a+b/c-d)/(a+b/(c^d+d/(a-b/c*d)))Realice el anterior ejercicio explicando comorealizaría el computador las operaciones
Formas de Representación de los AlgoritmosDescripción narrativa
Flujograma
Lengua algorítmica o pseudo-códigoDescripción NarrativaHace uso del idioma, en este caso el nuestro, el paisa-castizo, con el objeto de describir los pasos principales de una soluciónVentajasEl castellano es bastante conocido por nosotrosDesventajas-Es impreciso-Es extenso (escribe mucho, dice poco)
FlujogramaVentajas-Es una de las herramientas más conocidas-Las figuras dicen más que las palabras-Parámetros universalesDesventajas-Poca atención a los datos, pues no ofrece recursos para describirlos o representarlos-Se complica a medida que el algoritmo creceHace uso de gráficos parametrizados para representar algoritmos
Elementos para un flujograma
Ejemplo de flujogramaInicioDesarrollar un programa que permita  leer un numero entero positivo y  determinar si es parNN<0VEl numero debe ser positivoFEntero(N/2)*2=NFVEl numero es parEl numero es imparfin
Pseudo-códigoHace uso de una pseudo-lengua de programación cuyos comandos son en paisa-castizo para representar los algoritmosVentajas-Usa el castellano como base-Se pueden definir cómo los datos van a ser estructurados-El algoritmo generado casi se puede trasladar a cualquier lenguaje de programaciónDesventajas-Exige la definición y uso de un lenguaje que no es real para el trabajo-No es parametrizado
Pseudo-códigosRepresentación textual de un algoritmo, esto facilita su posterior transcripción a un lenguaje de programaciónNORMASColocarle un nombre al algoritmoDeclarar variables  con las cuales vamos a trabajarTodo algoritmo debe ir encerrado entre las palabras inicio y finPlantear las posibles operaciones Utilizar la orden escriba y colocarla entre comillas cuando se quiera ver un resultado
Ejemplo de pseudo-códigoAlgoritmo Número_parVariables Entero: NIniciolea  Nsi N< 0Escriba “El numero debe ser positivo”sinosi  Entero(N/2)*2=NEscriba “el numero leído es par”sinoEscriba ”El numero leído es impar”FinDesarrollar un programa que permita  leer un numero entero positivo y  determinar si es par
Esquema de acciones de un algoritmoEjemplo a través de un flujogramaDeclaración de VariablesAcciones: Operaciones, Ciclos, BuclesResultados
Fases de Desarrollo de un AlgoritmoFaseProductoPlaneaciónEsquemaAnálisisEspecificaciónDiseñoAlgoritmoCodificaciónProgramaCompilaciónInterpretaciónProg. EjecutablePruebasAplicación
AlgoritmoFase de Planeación: consiste en hacer una aproximación a los elementos del problema y sus posibles soluciones con el fin de obtener un esquema tipo para proceder a su exhaustivo análisis.Esquema paraEstudio detalladoPlaneación
AlgoritmoFase de Análisis: consiste en el estudio detallado del problema con el fin de obtener una serie de documentos (especificación) en los cuales quedan totalmente definido el proceso a seguir en la automatizaciónDocumentos de EspecificaciónEstudio detallado
AlgoritmoDiseño: consiste en la realización del algoritmo que resuelve el problema de acuerdo a la especificación dada en la fase anterior. El algoritmo se representa mediante pseudocódigo.Algoritmo PRUEBAInicioVariables   A,B,C: entero	Leer(A,B)	CA+B	Escribir (C)FinDocumentos deEspecificación
AlgoritmoCodificación: consiste en la traducción del algoritmo a un programa escrito en un lenguaje de programación Algoritmo SumarInicioVariables   A,B,C: entero	Leer(A,B)	CA+B	Escribir (C)FinPrograma escritoen un Lenguaje de Programación
AlgoritmoCompilación/Interpretación: consiste en obtener el programa ejecutableobjeto a partir del programa fuente.Programa EjecutablePrograma fuente
AlgoritmoPrueba: consiste en determinar si el programa funciona correctamente y realiza las operaciones que esperamos de él.AplicaciónPrograma Ejecutable
Lenguajes de programación Lenguaje: conjunto de reglas y convenciones que se utilizan para comunicar información. Lenguaje de Programación: es un lenguaje que permite la traducción de un algoritmo para que sea entendible por el computador. Son los lenguajes utilizados para escribir programas de ordenadores.Tipos de Lenguaje de Programación: Lenguaje de Máquina
 Lenguaje de Bajo Nivel (Ensamblador)
 Lenguaje de Alto NivelLenguaje de máquina Son aquellos que están escritos en lenguaje directamente inteligibles por la máquina, ya que sus instrucciones son cadenas binarias (0’s ,1’s) que especifican una operación.  Las instrucciones en lenguaje máquina dependen del Hardware de la computadora, difiere de una PC a otra. La ventaja de los lenguajes máquina es que ofrecen mayor velocidad de ejecución. Existen algunas desventajas: dificultad y lentitud en la codificación, poca fiabilidad, los programas no son portables.
Ejemplo Lenguaje Máquina11001010 00010111 11110101 0010101100010111 11110101 00101011 0010101111001010 00010111 11110101 0010101100010111 11110101 00101011 0010101111001010 11110101 00101011 0010101111001010 11001010 11110101 0010101111001010 11110101 00101011 0010101111001010 00010111 11110101 0010101100010111 11110101 00101011 0010101111001010 11110101 00101011 00101011
Lenguaje de bajo nivel Son lenguajes que permiten escribir programas con instrucciones similares al lenguaje humano.  Son más fáciles de utilizar que los lenguajes de máquina, pero éstos también dependen de la máquina en particular. El mejor ejemplo es el lenguaje ensamblador Un programa escrito en lenguaje ensamblador requiere una fase de traducción.Entre las desventajas tenemos: que este lenguaje depende de la máquina y demanda una mayor exigencia para los programadores, ya que deben conocer tanto las técnicas de programación así como el interior de la máquina
Ejemplo Lenguaje Ensamblador; HOLA.ASMSTACK     SEGMENT STACK                ; Segmento de pila                    DW     64 DUP (?)             ; Define espacio en la pilaSTACK     ENDS DATA      SEGMENT                             ; Segmento de datosSALUDO      DB    "Hola mundo!!",13,10,"$" ; CadenaDATA      ENDSINICIO:                                                  ; Punto de entrada al programa          MOV  AX,DATA                         ; Pone dirección en AX          MOV  DS,AX                              ; Pone la dirección en los registros          MOV  DX,OFFSET SALUDO      ; Obtiene dirección del mensaje          MOV  AH,09H                            ; Función: Visualizar cadena          INT     21H                                  ; Servicio: Funciones alto nivel DOSMOV  AH,4CH                            ; Función: Terminar          INT     21HCODE      ENDSEND  INICIO                               ; Marca fin y define INICIO
Lenguaje de alto nivel Son los más utilizados por los programadores  Son independientes de la máquina Los programas escritos en estos lenguajes son portablesAumento de la ocupación de la memoriaLas estructuras de los programas se basan en reglas sintácticasEjemplos: C, C++, Pascal, Ada, Prolog, Smalltalk, Visual Basic, Delphi, Phyton, PHP, Ruby, Java,...
Ejemplo Lenguaje alto nivel#include <stdio.h> intmain(void) { printf("Hola, Mundo\n");}
Traductores de LenguajeTraductores de Lenguajes: son programas que traducen a su vez los programas fuentes escritos en lenguajes de alto nivel a código máquina. Estos se dividen en intérpretes y compiladores.
IntérpreteIntérprete: es un traductor que toma un programa fuente, lo traduce y a continuación lo ejecuta. (Basic, Smalltalk)
CompilaciónCompilador: es el proceso de traducción de programas fuentes a programas objetos. En este proceso se debe utilizar como paso intermedio un programa llamado enlazador (linker) el cual da como resultado un programa en lenguaje máquina directamente ejecutable.
Ciclo de Vidadel Software
Etapas de programaciónErrores léxicosTiempo de compilaciónCódigo FuenteAPLICACIÓNBUENA PROGRAMACIÓNModificación del programa fuenteCompiladorSIExistenErroresSISINoCódigo objetoErrores lógicosTiempo de pruebasLinkado/InterpretaciónNOExistenErroresPrograma EjecutableErrores de ejecuciónTiempo de ejecuciónNoExistenErroresPruebas
Ciclo de Vidadel SoftwareEl ciclo de vida de un sistema de información, o un instrumento de software, normalmente maneja las etapas de Planeación, Análisis, Diseño, Implementación y Mantenimiento. Más adelante veremos su aplicación a través de modelos de evolución.
Modelo ClásicoEn el modelo clásico, cada proyecto atraviesa por algún tipo de análisis, diseño e implantación. El uso de la implantación ascendente es una de las grandes debilidades del ciclo de vida de los proyectos clásicos. La segunda debilidad más importante del ciclo de vida de un proyecto clásico es su insistencia en que las fases se sucedan secuencialmente.
Modelo Semi yEstructuradoDentro del modelo semiestructurado y estructurado encontramos otros detalles tales como, la implementación descendente que significa que se pondrán en ejecución paralelamente parte de la codificación y de las pruebas.
Modelo en EspiralEl modelo espiral ha sido ideado para cubrir las mejores características tanto del ciclo de vida clásico, como de la creación de prototipos, añadiendo al mismo tiempo un nuevo elemento: el análisis de riesgo.El paradigma del modelo en espiral es actualmente el enfoque más realista para el desarrollo de software y de sistemas a gran escala.
Modelo PrototipoEs una alternativa que consiste en capturar un conjunto inicial de necesidades e implementarlas rápidamente con la intención declarada de expandirlas y refinarlas iterativamente al ir aumentando la compresión que del sistema tienen los usuarios y quien lo desarrolla.
Estructuras de Control
Tipos de Estructuras de ControlEstructura Secuencial
Estructuras Selectivas o de Decisión
Estructuras Repetitivas o BuclesEstructuraSecuencialEs aquella en la queunaacción (instrucción) sigue a otra en secuencia.Pseudocódigo:
EstructuraSecuencialDiagrama de Flujo:Diagrama de N - S:
EstructurasSelectivasSe utilizanparatomardecisioneslógicas, se evalúaunacondición y en función del resultado de la misma se realizaunaopción u otra.Las estructurasselectivas o alternativaspueden ser:Simples.Dobles.Múltiples.
EstructurasSelectivasAlternativaSimpleLa estructuraalternativa simple Si Entonces(en inglésIf Then) ejecutaunadeterminadaaccióncuando se cumpleunadeterminadacondición.Pseudocódigo:
EstructurasSelectivasAlternativaSimpleDiagrama de Flujo:
EstructurasSelectivasAlternativaDobleLa estructuraalternativadobleSi Entonces Sino (en inglésIf Then Else) permiteelegir entre dos opciones o alternativasposibles, en función del cumplimiento o no de determinadacondición.Pseudocódigo:
EstructurasSelectivasAlternativaDobleDiagrama de Flujo:Diagrama de N - S:
EstructurasSelectivasAlternativaMúltipleLa estructuraalternativamúltipleSegún sea, caso de (en inglésCase Of) evaluaráunaexpresiónquepodrátomarnvaloresdistintos.Pseudocódigo:
EstructurasSelectivasAlternativaMúltiplePseudocódigo:
EstructurasSelectivasAlternativaMúltipleDiagrama de Flujo:Diagrama de N - S:
EstructurasRepetitivaso BuclesLas estructurasquerepitenunasecuencia de instrucciones un númerodeterminado de veces se denominanbucles y se denominaiteración al hecho de repetir la ejecución de unasecuencia de acciones.
EstructurasRepetitivasEstructuraMientrasLa estructurarepetitivaMientras(en inglésWhile) esaquella en que el cuerpo del bucle se repitemientras se cumpleunadeterminadacondición.Pseudocódigo:
EstructurasRepetitivasEstructuraMientrasDiagrama de Flujo:Diagrama de N - S:
EstructurasRepetitivasEstructuraHastaLa estructurarepetitivaRepetirHastaque(en inglés Repeat Until), se ejecutahastaque se cumplaunacondicióndeterminadaque se comprueba al final del bucle.Pseudocódigo:
EstructurasRepetitivasEstructuraHastaDiagrama de Flujo:Diagrama de N - S:
EstructurasRepetitivasEstructuraDesde/ParaLa estructurarepetitivaDesdeo Para (en inglésFor), ejecutalasacciones del cuerpo del bucle un númeroespecificado de veces y de modoautomáticocontrola el número de iteraciones o pasos a través del cuerpo del bucle.
EstructurasRepetitivasEstructuraDesde/ParaPseudocódigo:
EstructurasRepetitivasEstructuraDesde/ParaDiagrama de Flujo:Diagrama de N - S:
Arreglos(Arrays)

Lógica de programación

  • 1.
    Introducción a laLógica de ProgramaciónFernando de la Cruz Naranjo Grisales
  • 2.
  • 3.
    Concepto de LógicaLalógica es una ciencia formal y una rama de la filosofía que estudia los principios de la demostración e inferencia válida. La palabra deriva del griego antiguo λογική (logike), que significa "dotado de razón, intelectual, dialéctico, argumentativo", que a su vez viene de λόγος (logos), "palabra, pensamiento, idea, argumento, razón o principio".Wikipedia
  • 4.
    La que conocimos:LógicaProposicionalLa lógica proposicional es una rama de la lógica clásica que estudia las proposiciones o sentencias lógicas, sus posibles evaluaciones de verdad y en el caso ideal, su nivel absoluto de verdad.WikipediaNegaciónDisyunción (o)Conjunción (y)CondicionalBicondicionalDisyunción exclusiva
  • 5.
  • 6.
    AlgoritmoPalabra extrañaDe designacióndesconocidaTodo el tiempo hacemos uso de algoritmos
  • 7.
    AlgoritmoEtimología: Proviene delnombre del matemático persa Mohammed Al-khowanzmi, cuyo apellido traducido al latín es Algorismus
  • 8.
    Problema Es unasunto o un conjunto de cuestiones que se plantean para ser resueltas.La naturaleza de los problemas varía con el ámbito o el contexto: problemas matemáticos, químicos, filosóficos, etc.Es importante que al abordar un problema se tenga una descripción simple y precisa del mismo, de lo contrario resultaría complejo modular, simular, o programar su solución en un ordenador.
  • 9.
    Algoritmo de lallantaEjemplo tradicional de un algoritmo: Cambiar la llanta pinchada de un automóvilBuscar herramientas, rueda de repuesto y el triángulo rojo de señalizaciónUbicar el triángulo en el lugar adecuadoIr al lugar de la rueda averiadaSacar las tuercasColocar el gatoLevantar el carroSacar la rueda malaColocar la rueda de repuestoColocar las tuercasApretar tuercasGuardar las herramientas
  • 10.
    Algoritmo para comprade un libroInicioSaber cual es el libro adquirirDesplazarnos hacia una libreríaPreguntar si tienen el librosi lo tienenadquirirlo y parar allísi no lo tienenir al paso 3Fin
  • 11.
    Definiciones de Algoritmoen Programación“Es un conjunto finito de reglas que proveen una secuencia de operaciones para resolver un problema específico. La noción de algoritmo es básica para toda la programación de computadores” – KNUTH Profesor de la Universidad de Stanford“Es una secuencia ordenada y no ambigua de pasos que llevan a la solución de un problema dado” – TREMBLAY“Un concepto central de la programación y de la ciencia de la computación es el concepto de algoritmo” – WIRTH Profesor de la Universidad de Zurich y co-responsable de la creación de lenguajes de programación como ALGOL, PASCAL y MODULA2
  • 12.
    Algoritmo en ProgramaciónConjuntode acciones que especifican la secuencia de operaciones realizar, en orden, para resolver un problemaLos algoritmos son independientes tanto del lenguaje de programación como del computador que los ejecuta.
  • 13.
    Problemas de ProgramaciónUn programador es una persona que resuelve problemas, y para llegar a ser un programador eficaz se necesita aprender a resolver problemas de un modo riguroso y sistemáticoDefiniciónFormas de soluciónSoluciónDiseño AlgoritmoEjecuciónProblemaAnálisisProgramarEstudioLenguaje
  • 14.
    Solución de unProblema en ProgramaciónAlgunos de los pasos para solucionar un problema son: Análisis: consiste en el estudio detallado del problema. Se debe identificar los datos de entrada, de salida y la descripción del problema.
  • 15.
    Diseño del algoritmo,que describe la secuencia ordenada de pasos que conduce a la solución de un problema dado.
  • 16.
    Expresar el algoritmocomo un programa en un lenguaje de programación adecuado (Fase de Codificación)
  • 17.
    Ejecución y validacióndel programa por el computadorCaracterística de un Algoritmoun algoritmo siempre debe terminar después de un número finito de pasos y debe generar una información de salida Finito:si se sigue un algoritmo dos veces se debe obtener el mismo resultado Definido:
  • 18.
    Preciso:indicar exactamenteel orden de realización de las instrucciones
  • 19.
    Elementos de losAlgoritmosDatos
  • 20.
  • 21.
    Constantes, Variables yOperadoresDato La palabra proviene del latín datum, forma del verbo dare “dar”, que significa “Lo que es dado” Representación de una información de manera adecuada para su tratamiento por un ordenador
  • 22.
    Dato Son representacionessimbólicas de objetos, hechos, instituciones, conocimientos. Ejemplos 15 25º C 25 m 31-10-2005 Febrero María Pérez
  • 23.
    Información Los datosorganizados o procesados adquieren significado y proporcionan conocimiento o desencadenan un comportamiento sobre los hechos u objetos que lo originaron La información se resume en: Datos + significado
  • 24.
    InformaciónUn grupo dedatos es informaciónDatos: 19- Marzo – Maria – 20 ptos.
  • 25.
    Información: El 19de marzo se publicó en acta la calificación de 20 ptos para María El principal objetivo de la información consiste en aumentar el conocimiento o reducir la incertidumbre.
  • 26.
    InformaciónEjemplos Juan tiene 15 años18º C fue la temperatura de esta mañana El edificio de la Andina mide 15 m de altura La fecha de hoy es 25/04/2009Febrero tiene 28 días y 29 si el año es bisiesto (Qué meses tienen 28 días?)María Jaramillo es un nombre muy común (no es japonés)
  • 27.
    Constantes, Variables yOperadores de un Algoritmo VARIABLE: Campo de memoria que se le puede cambiar su contenidoVARIABLE ENTEROS: Almacenan tipos de datos Enteros sin puntos ni comasVARIABLE REAL: Almacena tipos de datos o números decimalesVARIABLES CARÁCTER: Almacena datos como letras
  • 28.
    Cómo se cargauna variableCon el signo = ejemploA=8 B=A C=A+BSe debe tener en cuenta:Al lado izquierdo del igual solo puede haber una variableAl lado derecho del igual puede haber una constante, una variable o una expresiónEl computador siempre resuelve lo que esta a la derecha del igual y su resultado lo almacena en la variable que este a la izquierda del igualCada vez que se le entra un nuevo valor a una variable , el valor anterior se pierde
  • 29.
    EjemploEntero A,B, CA=10 B=15C=20A=A+BB=B+8C=C+AA=A+5 B=B+3C=C+2A=A-BB=A-BC=A-BIdentificar los nuevosvalores de A,B,C
  • 30.
    OperadoresSon signos quenos permiten expresar relaciones entre variables y/o constantes, por ejemplo:^ (Potenciación), * (Multiplicación), / (División)Hay operadores matemáticos (+,-,/,*,^), lógicos (and, or, xor, not), de concatenación (&, (), ””), relacionales (>, <, =, <>, >=, <=)x= a+b/c+d como interpreta esto el PC?a+b/c+d: resuelve primero b/c luego resuelve a+ el resultado de b/c y por último resuelve el resultado anterior con la suma de + d
  • 31.
    Ejemplo(a+b/c-d)/(a+b/(c^d+d/(a-b/c*d)))Realice el anteriorejercicio explicando comorealizaría el computador las operaciones
  • 32.
    Formas de Representaciónde los AlgoritmosDescripción narrativa
  • 33.
  • 34.
    Lengua algorítmica opseudo-códigoDescripción NarrativaHace uso del idioma, en este caso el nuestro, el paisa-castizo, con el objeto de describir los pasos principales de una soluciónVentajasEl castellano es bastante conocido por nosotrosDesventajas-Es impreciso-Es extenso (escribe mucho, dice poco)
  • 35.
    FlujogramaVentajas-Es una delas herramientas más conocidas-Las figuras dicen más que las palabras-Parámetros universalesDesventajas-Poca atención a los datos, pues no ofrece recursos para describirlos o representarlos-Se complica a medida que el algoritmo creceHace uso de gráficos parametrizados para representar algoritmos
  • 36.
  • 37.
    Ejemplo de flujogramaInicioDesarrollarun programa que permita leer un numero entero positivo y determinar si es parNN<0VEl numero debe ser positivoFEntero(N/2)*2=NFVEl numero es parEl numero es imparfin
  • 38.
    Pseudo-códigoHace uso deuna pseudo-lengua de programación cuyos comandos son en paisa-castizo para representar los algoritmosVentajas-Usa el castellano como base-Se pueden definir cómo los datos van a ser estructurados-El algoritmo generado casi se puede trasladar a cualquier lenguaje de programaciónDesventajas-Exige la definición y uso de un lenguaje que no es real para el trabajo-No es parametrizado
  • 39.
    Pseudo-códigosRepresentación textual deun algoritmo, esto facilita su posterior transcripción a un lenguaje de programaciónNORMASColocarle un nombre al algoritmoDeclarar variables con las cuales vamos a trabajarTodo algoritmo debe ir encerrado entre las palabras inicio y finPlantear las posibles operaciones Utilizar la orden escriba y colocarla entre comillas cuando se quiera ver un resultado
  • 40.
    Ejemplo de pseudo-códigoAlgoritmoNúmero_parVariables Entero: NIniciolea Nsi N< 0Escriba “El numero debe ser positivo”sinosi Entero(N/2)*2=NEscriba “el numero leído es par”sinoEscriba ”El numero leído es impar”FinDesarrollar un programa que permita leer un numero entero positivo y determinar si es par
  • 41.
    Esquema de accionesde un algoritmoEjemplo a través de un flujogramaDeclaración de VariablesAcciones: Operaciones, Ciclos, BuclesResultados
  • 42.
    Fases de Desarrollode un AlgoritmoFaseProductoPlaneaciónEsquemaAnálisisEspecificaciónDiseñoAlgoritmoCodificaciónProgramaCompilaciónInterpretaciónProg. EjecutablePruebasAplicación
  • 43.
    AlgoritmoFase de Planeación:consiste en hacer una aproximación a los elementos del problema y sus posibles soluciones con el fin de obtener un esquema tipo para proceder a su exhaustivo análisis.Esquema paraEstudio detalladoPlaneación
  • 44.
    AlgoritmoFase de Análisis:consiste en el estudio detallado del problema con el fin de obtener una serie de documentos (especificación) en los cuales quedan totalmente definido el proceso a seguir en la automatizaciónDocumentos de EspecificaciónEstudio detallado
  • 45.
    AlgoritmoDiseño: consiste enla realización del algoritmo que resuelve el problema de acuerdo a la especificación dada en la fase anterior. El algoritmo se representa mediante pseudocódigo.Algoritmo PRUEBAInicioVariables A,B,C: entero Leer(A,B) CA+B Escribir (C)FinDocumentos deEspecificación
  • 46.
    AlgoritmoCodificación: consiste enla traducción del algoritmo a un programa escrito en un lenguaje de programación Algoritmo SumarInicioVariables A,B,C: entero Leer(A,B) CA+B Escribir (C)FinPrograma escritoen un Lenguaje de Programación
  • 47.
    AlgoritmoCompilación/Interpretación: consiste enobtener el programa ejecutableobjeto a partir del programa fuente.Programa EjecutablePrograma fuente
  • 48.
    AlgoritmoPrueba: consiste endeterminar si el programa funciona correctamente y realiza las operaciones que esperamos de él.AplicaciónPrograma Ejecutable
  • 49.
    Lenguajes de programaciónLenguaje: conjunto de reglas y convenciones que se utilizan para comunicar información. Lenguaje de Programación: es un lenguaje que permite la traducción de un algoritmo para que sea entendible por el computador. Son los lenguajes utilizados para escribir programas de ordenadores.Tipos de Lenguaje de Programación: Lenguaje de Máquina
  • 50.
    Lenguaje deBajo Nivel (Ensamblador)
  • 51.
    Lenguaje deAlto NivelLenguaje de máquina Son aquellos que están escritos en lenguaje directamente inteligibles por la máquina, ya que sus instrucciones son cadenas binarias (0’s ,1’s) que especifican una operación. Las instrucciones en lenguaje máquina dependen del Hardware de la computadora, difiere de una PC a otra. La ventaja de los lenguajes máquina es que ofrecen mayor velocidad de ejecución. Existen algunas desventajas: dificultad y lentitud en la codificación, poca fiabilidad, los programas no son portables.
  • 52.
    Ejemplo Lenguaje Máquina1100101000010111 11110101 0010101100010111 11110101 00101011 0010101111001010 00010111 11110101 0010101100010111 11110101 00101011 0010101111001010 11110101 00101011 0010101111001010 11001010 11110101 0010101111001010 11110101 00101011 0010101111001010 00010111 11110101 0010101100010111 11110101 00101011 0010101111001010 11110101 00101011 00101011
  • 53.
    Lenguaje de bajonivel Son lenguajes que permiten escribir programas con instrucciones similares al lenguaje humano. Son más fáciles de utilizar que los lenguajes de máquina, pero éstos también dependen de la máquina en particular. El mejor ejemplo es el lenguaje ensamblador Un programa escrito en lenguaje ensamblador requiere una fase de traducción.Entre las desventajas tenemos: que este lenguaje depende de la máquina y demanda una mayor exigencia para los programadores, ya que deben conocer tanto las técnicas de programación así como el interior de la máquina
  • 54.
    Ejemplo Lenguaje Ensamblador;HOLA.ASMSTACK SEGMENT STACK ; Segmento de pila DW 64 DUP (?) ; Define espacio en la pilaSTACK ENDS DATA SEGMENT ; Segmento de datosSALUDO DB "Hola mundo!!",13,10,"$" ; CadenaDATA ENDSINICIO: ; Punto de entrada al programa MOV AX,DATA ; Pone dirección en AX MOV DS,AX ; Pone la dirección en los registros MOV DX,OFFSET SALUDO ; Obtiene dirección del mensaje MOV AH,09H ; Función: Visualizar cadena INT 21H ; Servicio: Funciones alto nivel DOSMOV AH,4CH ; Función: Terminar INT 21HCODE ENDSEND INICIO ; Marca fin y define INICIO
  • 55.
    Lenguaje de altonivel Son los más utilizados por los programadores Son independientes de la máquina Los programas escritos en estos lenguajes son portablesAumento de la ocupación de la memoriaLas estructuras de los programas se basan en reglas sintácticasEjemplos: C, C++, Pascal, Ada, Prolog, Smalltalk, Visual Basic, Delphi, Phyton, PHP, Ruby, Java,...
  • 56.
    Ejemplo Lenguaje altonivel#include <stdio.h> intmain(void) { printf("Hola, Mundo\n");}
  • 57.
    Traductores de LenguajeTraductoresde Lenguajes: son programas que traducen a su vez los programas fuentes escritos en lenguajes de alto nivel a código máquina. Estos se dividen en intérpretes y compiladores.
  • 58.
    IntérpreteIntérprete: es untraductor que toma un programa fuente, lo traduce y a continuación lo ejecuta. (Basic, Smalltalk)
  • 59.
    CompilaciónCompilador: es elproceso de traducción de programas fuentes a programas objetos. En este proceso se debe utilizar como paso intermedio un programa llamado enlazador (linker) el cual da como resultado un programa en lenguaje máquina directamente ejecutable.
  • 60.
  • 61.
    Etapas de programaciónErroresléxicosTiempo de compilaciónCódigo FuenteAPLICACIÓNBUENA PROGRAMACIÓNModificación del programa fuenteCompiladorSIExistenErroresSISINoCódigo objetoErrores lógicosTiempo de pruebasLinkado/InterpretaciónNOExistenErroresPrograma EjecutableErrores de ejecuciónTiempo de ejecuciónNoExistenErroresPruebas
  • 62.
    Ciclo de VidadelSoftwareEl ciclo de vida de un sistema de información, o un instrumento de software, normalmente maneja las etapas de Planeación, Análisis, Diseño, Implementación y Mantenimiento. Más adelante veremos su aplicación a través de modelos de evolución.
  • 63.
    Modelo ClásicoEn elmodelo clásico, cada proyecto atraviesa por algún tipo de análisis, diseño e implantación. El uso de la implantación ascendente es una de las grandes debilidades del ciclo de vida de los proyectos clásicos. La segunda debilidad más importante del ciclo de vida de un proyecto clásico es su insistencia en que las fases se sucedan secuencialmente.
  • 64.
    Modelo Semi yEstructuradoDentrodel modelo semiestructurado y estructurado encontramos otros detalles tales como, la implementación descendente que significa que se pondrán en ejecución paralelamente parte de la codificación y de las pruebas.
  • 65.
    Modelo en EspiralElmodelo espiral ha sido ideado para cubrir las mejores características tanto del ciclo de vida clásico, como de la creación de prototipos, añadiendo al mismo tiempo un nuevo elemento: el análisis de riesgo.El paradigma del modelo en espiral es actualmente el enfoque más realista para el desarrollo de software y de sistemas a gran escala.
  • 66.
    Modelo PrototipoEs unaalternativa que consiste en capturar un conjunto inicial de necesidades e implementarlas rápidamente con la intención declarada de expandirlas y refinarlas iterativamente al ir aumentando la compresión que del sistema tienen los usuarios y quien lo desarrolla.
  • 67.
  • 68.
    Tipos de Estructurasde ControlEstructura Secuencial
  • 69.
  • 70.
    Estructuras Repetitivas oBuclesEstructuraSecuencialEs aquella en la queunaacción (instrucción) sigue a otra en secuencia.Pseudocódigo:
  • 71.
  • 72.
    EstructurasSelectivasSe utilizanparatomardecisioneslógicas, seevalúaunacondición y en función del resultado de la misma se realizaunaopción u otra.Las estructurasselectivas o alternativaspueden ser:Simples.Dobles.Múltiples.
  • 73.
    EstructurasSelectivasAlternativaSimpleLa estructuraalternativa simpleSi Entonces(en inglésIf Then) ejecutaunadeterminadaaccióncuando se cumpleunadeterminadacondición.Pseudocódigo:
  • 74.
  • 75.
    EstructurasSelectivasAlternativaDobleLa estructuraalternativadobleSi EntoncesSino (en inglésIf Then Else) permiteelegir entre dos opciones o alternativasposibles, en función del cumplimiento o no de determinadacondición.Pseudocódigo:
  • 76.
  • 77.
    EstructurasSelectivasAlternativaMúltipleLa estructuraalternativamúltipleSegún sea,caso de (en inglésCase Of) evaluaráunaexpresiónquepodrátomarnvaloresdistintos.Pseudocódigo:
  • 78.
  • 79.
  • 80.
    EstructurasRepetitivaso BuclesLas estructurasquerepitenunasecuenciade instrucciones un númerodeterminado de veces se denominanbucles y se denominaiteración al hecho de repetir la ejecución de unasecuencia de acciones.
  • 81.
    EstructurasRepetitivasEstructuraMientrasLa estructurarepetitivaMientras(en inglésWhile)esaquella en que el cuerpo del bucle se repitemientras se cumpleunadeterminadacondición.Pseudocódigo:
  • 82.
  • 83.
    EstructurasRepetitivasEstructuraHastaLa estructurarepetitivaRepetirHastaque(en inglésRepeat Until), se ejecutahastaque se cumplaunacondicióndeterminadaque se comprueba al final del bucle.Pseudocódigo:
  • 84.
  • 85.
    EstructurasRepetitivasEstructuraDesde/ParaLa estructurarepetitivaDesdeo Para(en inglésFor), ejecutalasacciones del cuerpo del bucle un númeroespecificado de veces y de modoautomáticocontrola el número de iteraciones o pasos a través del cuerpo del bucle.
  • 86.
  • 87.
  • 88.