3. Concepto de Lógica La 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
4. La que conocimos: Lógica Proposicional La 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. Wikipedia Negación Disyunción (o) Conjunción (y) Condicional Bicondicional Disyunción exclusiva
7. Algoritmo Etimología: Proviene del nombre del matemático persa Mohammed Al-khowanzmi, cuyo apellido traducido al latín es Algorismus
8. 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.
9. Algoritmo de la llanta Ejemplo tradicional de un algoritmo: Cambiar la llanta pinchada de un automóvil Buscar herramientas, rueda de repuesto y el triángulo rojo de señalización Ubicar el triángulo en el lugar adecuado Ir al lugar de la rueda averiada Sacar las tuercas Colocar el gato Levantar el carro Sacar la rueda mala Colocar la rueda de repuesto Colocar las tuercas Apretar tuercas Guardar las herramientas
10. Algoritmo para compra de un libro Inicio Saber cual es el libro adquirir Desplazarnos hacia una librería Preguntar si tienen el libro si lo tienen adquirirlo y parar allí si no lo tienen ir al paso 3 Fin
11. 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
12. Algoritmo en Programación Conjunto de acciones que especifican la secuencia de operaciones realizar, en orden, para resolver un problema Los algoritmos son independientes tanto del lenguaje de programación como del computador que los ejecuta.
13. 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ático Definición Formas de solución Solución Diseño Algoritmo Ejecución Problema Análisis Programar Estudio Lenguaje
14.
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 algoritmo como un programa en un lenguaje de programación adecuado (Fase de Codificación)
22. Dato Son representaciones simbólicas de objetos, hechos, instituciones, conocimientos. Ejemplos 15 25º C 25 m 31-10-2005 Febrero María Pérez
23. 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
24.
25. 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.
26. Información Ejemplos Juan tiene 15 años 18º 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/2009 Febrero 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 y Operadores de un Algoritmo VARIABLE: Campo de memoria que se le puede cambiar su contenido VARIABLE ENTEROS: Almacenan tipos de datos Enteros sin puntos ni comas VARIABLE REAL: Almacena tipos de datos o números decimales VARIABLES CARÁCTER: Almacena datos como letras
28. Cómo se carga una variable Con el signo = ejemplo A=8 B=A C=A+B Se debe tener en cuenta: Al lado izquierdo del igual solo puede haber una variable Al lado derecho del igual puede haber una constante, una variable o una expresión El 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 igual Cada vez que se le entra un nuevo valor a una variable , el valor anterior se pierde
29. Ejemplo Entero A, B, C A=10 B=15 C=20 A=A+B B=B+8 C=C+A A=A+5 B=B+3 C=C+2 A=A-B B=A-B C=A-B Identificar los nuevos valores de A,B,C
30. Operadores Son 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
35. Flujograma Ventajas-Es una de las herramientas más conocidas-Las figuras dicen más que las palabras-Parámetros universales Desventajas-Poca atención a los datos, pues no ofrece recursos para describirlos o representarlos-Se complica a medida que el algoritmo crece Hace uso de gráficos parametrizados para representar algoritmos
37. Ejemplo de flujograma Inicio Desarrollar un programa que permita leer un numero entero positivo y determinar si es par N N<0 V El numero debe ser positivo F Entero(N/2)*2=N F V El numero es par El numero es impar fin
38. Pseudo-código Hace uso de una pseudo-lengua de programación cuyos comandos son en paisa-castizo para representar los algoritmos Ventajas-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ón Desventajas-Exige la definición y uso de un lenguaje que no es real para el trabajo-No es parametrizado
39. Pseudo-códigos Representación textual de un algoritmo, esto facilita su posterior transcripción a un lenguaje de programación NORMAS Colocarle un nombre al algoritmo Declarar variables con las cuales vamos a trabajar Todo algoritmo debe ir encerrado entre las palabras inicio y fin Plantear las posibles operaciones Utilizar la orden escriba y colocarla entre comillas cuando se quiera ver un resultado
40. Ejemplo de pseudo-código Algoritmo Número_par Variables 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”Fin Desarrollar un programa que permita leer un numero entero positivo y determinar si es par
41. Esquema de acciones de un algoritmoEjemplo a través de un flujograma Declaración de Variables Acciones: Operaciones, Ciclos, Bucles Resultados
42. Fases de Desarrollo de un Algoritmo Fase Producto Planeación Esquema Análisis Especificación Diseño Algoritmo Codificación Programa Compilación Interpretación Prog. Ejecutable Pruebas Aplicación
43. Algoritmo Fase 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 para Estudio detallado Planeación
44. Algoritmo Fase 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ón Documentos de Especificación Estudio detallado
45. Algoritmo Diseñ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 PRUEBA Inicio Variables A,B,C: entero Leer(A,B) CA+B Escribir (C) Fin Documentos de Especificación
46. Algoritmo Codificación: consiste en la traducción del algoritmo a un programa escrito en un lenguaje de programación Algoritmo Sumar Inicio Variables A,B,C: entero Leer(A,B) CA+B Escribir (C) Fin Programa escrito en un Lenguaje de Programación
48. Algoritmo Prueba: consiste en determinar si el programa funciona correctamente y realiza las operaciones que esperamos de él. Aplicación Programa Ejecutable
53. 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
54. Ejemplo Lenguaje Ensamblador ; HOLA.ASM STACK SEGMENT STACK ; Segmento de pila DW 64 DUP (?) ; Define espacio en la pila STACK ENDS DATA SEGMENT ; Segmento de datos SALUDO DB "Hola mundo!!",13,10,"$" ; Cadena DATA ENDS INICIO: ; 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 DOS MOV AH,4CH ; Función: Terminar INT 21H CODE ENDS END INICIO ; Marca fin y define INICIO
55. 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 portables Aumento de la ocupación de la memoria Las estructuras de los programas se basan en reglas sintácticas Ejemplos: C, C++, Pascal, Ada, Prolog, Smalltalk, Visual Basic, Delphi, Phyton, PHP, Ruby, Java,...
57. Traductores de Lenguaje Traductores 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.
58. Intérprete Intérprete: es un traductor que toma un programa fuente, lo traduce y a continuación lo ejecuta. (Basic, Smalltalk)
59. Compilación Compilador: 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.
61. Etapas de programación Errores léxicos Tiempo de compilación Código Fuente APLICACIÓN BUENA PROGRAMACIÓN Modificación del programa fuente Compilador SI Existen Errores SI SI No Código objeto Errores lógicos Tiempo de pruebas Linkado/ Interpretación NO Existen Errores Programa Ejecutable Errores de ejecución Tiempo de ejecución No Existen Errores Pruebas
62. Ciclo de Vida del Software El 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ásico En 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.
64. Modelo Semi y Estructurado Dentro 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.
65. Modelo en Espiral El 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.
66. Modelo Prototipo Es 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.
80. EstructurasRepetitivaso Bucles Las 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.
89. Arreglos (Arrays) Conjunto de variables en donde cada una de ellas puede ser referenciada, utilizando su posición relativa es decir su ubicación. Vectores: es un arreglo en donde la ubicación exacta de cada uno de sus elementos necesite solamente la utilización de un subíndice
91. Arreglos (Arrays) Tipo: los datos almacenados serán del mismo tipo Nombre: debe tener un nombre relacionado con su contenido ya que estos tendrán relación Dimensión: se debe definir cuantos elementos se van a utilizar en el vector Tamaño: cantidad total de campos de memoria Destinación:tener claro la utilización del vector Índice:es una variable de tipo entero que se utiliza como subíndice para almacenar cada una de las posiciones
92. Ejemplo de pseudo-código con Arreglos (Arrays) Leer 10 números enteros y determinar su promedio Programa_ejemplo_vector Variable entero: vector(10),indice,promedio Inicio Escriba” Digite 10 números enteros” para indice=1 hasta 10 lea vector(indice) Fin_para promedio=0 Para indice=1 hasta 10 promedio=promedio+vector(indice) Fin_para promedio= promedio/10 Escriba ”el promedio entero es” promedio Fin
93. Arreglos (Arrays) Matriz: conjunto de datos organizados en forma de filas y columnas en donde para referenciar cada datos, necesitaremos establecer claramente en que fila y en que columna se encuentran. Nombre: Debe ser un nombre que haga referencia a su contenido Tipo: Tipo de datos almacenar en ella Dimensión: Cantidad de filas y Columnas Tamaño: Resultado de multiplicar las filas por las columnas Destinación: Saber porque se necesita una matriz
94. Ejemplo de pseudo-código con Arreglos (Arrays) – p1 Leer una matriz 3*4 y determinar en que posición esta el mayor numero par Algoritmo_ejemplo_matriz Variable entero: m(3*4),fil,col,mayor_par, col_mayor_par,fil_mayor_par Inicio Escriba” Digite 12 números enteros” para fil=1 hasta 3 para col=1 hasta 4 lea m(fil,col) Fin_para Fin_para mayor_par=-3000 para fil=1 hasta 3 para col= 1 hasta 4 si m(fil,col)/2*2=m(fil,col) y m(fil,col)>mayor_par
95. Ejemplo de pseudo-código con Arreglos (Arrays) – p2 mayor_par= m(fil;col) col_mayor_par= col fil_mayor_par= fil fin_si fin_para fin_para si mayor_par= -3000 Escriba”No existen numeros pares en la matriz” sino Escriba”el mayor es” mayor_par “y esta en la fila” fil “columna” col fin_si Fin
96. Introducción a la Lógica de Programación Fernando de la Cruz Naranjo Grisales