Lógica de programación
-
Upload
fernando-naranjo -
Category
Education
-
view
619 -
download
0
Transcript of Lógica de programación
Introducción a
la Lógica de
Programación
Fernando de la Cruz Naranjo Grisales
Qué es Lógica?
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
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
Algoritmos
Algoritmo
Palabra extrañaDe designación desconocidaTodo el tiempo hacemos uso de algoritmos
Algoritmo
Etimología:Proviene del nombre del matemático persa Mohammed Al-khowanzmi, cuyo apellido traducido al latín es Algorismus
Es un asunto o un conjunto de cuestiones quese 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 setenga una descripción simple y precisa delmismo, de lo contrario resultaría complejomodular, simular, o programar su solución enun ordenador.
Problema
1. Buscar herramientas, rueda de repuesto yel triángulo rojo de señalización
2. Ubicar el triángulo en el lugar adecuado3. Ir al lugar de la rueda averiada4. Sacar las tuercas5. Colocar el gato6. Levantar el carro7. Sacar la rueda mala8. Colocar la rueda de repuesto9. Colocar las tuercas10.Apretar tuercas11.Guardar las herramientas
Algoritmo de la llanta
Ejemplo tradicional de un algoritmo:Cambiar la llanta pinchada de un automóvil
Algoritmo para
compra de un libro
1. Inicio
2. Saber cual es el libro adquirir
3. Desplazarnos hacia una librería
4. Preguntar si tienen el libro
5. si lo tienen
6. adquirirlo y parar allí
7. si no lo tienen
8. ir al paso 3
9. Fin
“Es un conjunto finito de reglas que proveen unasecuencia de operaciones para resolver un problemaespecífico. La noción de algoritmo es básica para todala programación de computadores” – KNUTH Profesorde 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 dealgoritmo” – WIRTH Profesor de la Universidad deZurich y co-responsable de la creación de lenguajesde programación como ALGOL, PASCAL y MODULA2
Definiciones de Algoritmo
en Programación
Conjunto de acciones que especifican lasecuencia de operaciones realizar, enorden, para resolver un problema
Algoritmo en
Programación
Los algoritmos son independientes tantodel lenguaje de programación como delcomputador que los ejecuta.
Un programador es una persona que resuelveproblemas, y para llegar a ser un programadoreficaz se necesita aprender a resolver problemasde un modo riguroso y sistemático
Problema Diseño Algoritmo
Programar
Problemas de Programación
Análisis
Definición
Ejecución
Estudio
Formas de solución
Lenguaje
Solución
Algunos de los pasos para solucionar un problema son:
Análisis: consiste en el estudio detallado delproblema. Se debe identificar los datos deentrada, de salida y la descripción delproblema.Diseño del algoritmo, que describe lasecuencia ordenada de pasos que conduce a lasolución de un problema dado.Expresar el algoritmo como un programa enun lenguaje de programación adecuado (Fasede Codificación)Ejecución y validación del programa por elcomputador
Solución de un
Problema en Programación
Finito:
Definido:
Preciso:
un algoritmo siempre debe terminar después de un número finito de pasos y debe generar una información de salida
si se sigue un algoritmo dos veces se debe obtener el mismo resultado
indicar exactamente el orden de realización de las instrucciones
Característica de
un Algoritmo
Datos
Información
Constantes, Variables y Operadores
Elementos de los
Algoritmos
La palabra proviene del latín datum, formadel verbo dare “dar”, que significa “Lo quees dado”
Representación de una información demanera adecuada para su tratamiento porun ordenador
Dato
Ejemplos1525º C25 m31-10-2005FebreroMaría Pérez
Son representaciones simbólicasde objetos, hechos, instituciones,conocimientos.
Dato
Los datos organizados o procesadosadquieren significado y proporcionanconocimiento o desencadenan uncomportamiento sobre los hechos uobjetos que lo originaron
La información se resume en:Datos + significado
Información
Un grupo de datos es información
• Datos: 19- Marzo – Maria – 20 ptos.
• Información: El 19 de marzo se publicó enacta la calificación de 20 ptos para María
El principal objetivo de la informaciónconsiste en aumentar el conocimiento oreducir la incertidumbre.
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)
Información
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
Cómo se carga
una variable
Con el signo = ejemplo
A=8 B=A C=A+B
Se debe tener en cuenta:a. Al lado izquierdo del igual solo puede haber una variableb. Al lado derecho del igual puede haber una constante, una
variable o una expresiónc. 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
d. Cada vez que se le entra un nuevo valor a una variable , el valor anterior se pierde
Ejemplo
Entero A, B, CA=10 B=15C=20
A=A+BB=B+8C=C+AA=A+5
B=B+3C=C+2A=A-BB=A-BC=A-B
Identificar los nuevos
valores de A,B,C
Son signos que nos permiten expresar relacionesentre 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 elresultado anterior con la suma de + d
Operadores
Ejemplo
(a+b/c-d)/(a+b/(c^d+d/(a-b/c*d)))
Realice el anterior ejercicio explicando como
realizaría el computador las operaciones
Descripción narrativa
Flujograma
Lengua algorítmica o pseudo-código
Formas de Representación
de los Algoritmos
Hace uso del idioma, en este caso el nuestro, el paisa-castizo, con el objeto de describir los pasos principales de una solución
Descripción Narrativa
VentajasEl castellano es bastante conocido por nosotros
Desventajas-Es impreciso-Es extenso (escribe mucho, dice poco)
Hace uso de gráficos parametrizadospara representar algoritmos
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
Elementos para un flujograma
Ejemplo de flujograma
Desarrollar un programa que
permita leer un numero
entero positivo y
determinar si es par
Inicio
fin
N
N<0
El numero debe ser positivo
Entero(N/2)*2=N
El numero es par
V
V
F
El numero es impar
F
Hace uso de una pseudo-lengua de programación cuyos comandos son en paisa-castizo para representar los algoritmos
Pseudo-código
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
Pseudo-códigos
Representación textual de un algoritmo, esto facilita su posterior transcripción a un lenguaje de programación
NORMAS
1. Colocarle un nombre al algoritmo2. Declarar variables con las cuales vamos a trabajar3. Todo algoritmo debe ir encerrado entre las palabras
inicio y fin4. Plantear las posibles operaciones 5. Utilizar la orden escriba y colocarla entre comillas
cuando se quiera ver un resultado
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
Esquema de acciones
de un algoritmo
Ejemplo a través de un flujograma
Declaración de Variables
Acciones: Operaciones, Ciclos,
Bucles
Resultados
Análisis
Diseño
Codificación
Compilación
Interpretación
Pruebas
Especificación
Algoritmo
Programa
Prog. Ejecutable
Aplicación
Fases de Desarrollo
de un Algoritmo
Fase Producto
Planeación Esquema
Fase de Planeación: consiste en hacer unaaproximación a los elementos del problema y sus posiblessoluciones con el fin de obtener un esquema tipo paraproceder a su exhaustivo análisis.
Algoritmo
Planeación Esquema para
Estudio detallado
Fase de Análisis: consiste en el estudio detallado delproblema con el fin de obtener una serie de documentos(especificación) en los cuales quedan totalmente definidoel proceso a seguir en la automatización
Algoritmo
Estudio detallado Documentos de Especificación
Diseño: consiste en la realización del algoritmo queresuelve el problema de acuerdo a la especificación dadaen la fase anterior. El algoritmo se representa mediantepseudocódigo.
Algoritmo
Algoritmo PRUEBA
Inicio
Variables
A,B,C: entero
Leer(A,B)
CA+B
Escribir (C)
FinDocumentos de
Especificación
Codificación: consiste en la traducción del algoritmo aun programa escrito en un lenguaje de programación
Algoritmo
Algoritmo Sumar
Inicio
Variables
A,B,C: entero
Leer(A,B)
CA+B
Escribir (C)
Fin Programa escrito
en un Lenguaje de Programación
Compilación/Interpretación: consiste en obtener elprograma ejecutableobjeto a partir del programa fuente.
Algoritmo
Programa fuente
Programa Ejecutable
Prueba: consiste en determinar si el programa funcionacorrectamente y realiza las operaciones que esperamosde él.
Algoritmo
Programa Ejecutable Aplicación
Lenguaje: conjunto de reglas y convenciones que se utilizanpara comunicar información.
Lenguaje de Programación: es un lenguaje que permite latraducción de un algoritmo para que sea entendible por elcomputador. Son los lenguajes utilizados para escribirprogramas de ordenadores.
Tipos de Lenguaje de Programación:
Lenguaje de Máquina
Lenguaje de Bajo Nivel (Ensamblador)
Lenguaje de Alto Nivel
Lenguajes de programación
Son aquellos que están escritos en lenguajedirectamente inteligibles por la máquina, ya que susinstrucciones son cadenas binarias (0’s ,1’s) queespecifican una operación.
Las instrucciones en lenguaje máquina dependen delHardware de la computadora, difiere de una PC a otra.
La ventaja de los lenguajes máquina es que ofrecenmayor velocidad de ejecución.
Existen algunas desventajas: dificultad y lentitud en lacodificación, poca fiabilidad, los programas no sonportables.
Lenguaje de máquina
11001010 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
Ejemplo Lenguaje Máquina
Son lenguajes que permiten escribir programas coninstrucciones similares al lenguaje humano.
Son más fáciles de utilizar que los lenguajes demáquina, pero éstos también dependen de la máquina enparticular.
El mejor ejemplo es el lenguaje ensamblador
Un programa escrito en lenguaje ensamblador requiereuna fase de traducción.
Entre las desventajas tenemos: que este lenguajedepende de la máquina y demanda una mayor exigenciapara los programadores, ya que deben conocer tanto lastécnicas de programación así como el interior de lamáquina
Lenguaje de bajo nivel
; 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 ENDS
INICIO: ; Punto de entrada al programaMOV AX,DATA ; Pone dirección en AXMOV DS,AX ; Pone la dirección en los registrosMOV DX,OFFSET SALUDO ; Obtiene dirección del mensajeMOV AH,09H ; Función: Visualizar cadenaINT 21H ; Servicio: Funciones alto nivel DOSMOV AH,4CH ; Función: TerminarINT 21H
CODE ENDSEND INICIO ; Marca fin y define INICIO
Ejemplo Lenguaje Ensamblador
Son los más utilizados por los programadores
Son independientes de la máquina
Los programas escritos en estos lenguajes sonportables
Aumento de la ocupación de la memoria
Las estructuras de los programas se basan en reglassintácticas
Ejemplos: C, C++, Pascal, Ada, Prolog, Smalltalk, VisualBasic, Delphi, Phyton, PHP, Ruby, Java,...
Lenguaje de alto nivel
#include <stdio.h>
int main(void)
{
printf("Hola, Mundo\n");
}
Ejemplo Lenguaje alto nivel
Traductores de Lenguajes: son programas que traducena su vez los programas fuentes escritos en lenguajes dealto nivel a código máquina. Estos se dividen enintérpretes y compiladores.
Traductores de Lenguaje
Intérprete: es un traductor que toma un programa fuente, lotraduce y a continuación lo ejecuta. (Basic, Smalltalk)
Intérprete
Compilación
Compilador: es elproceso de traducción deprogramas fuentes aprogramas objetos. Eneste proceso se debeutilizar como pasointermedio un programallamado enlazador (linker)el cual da como resultadoun programa en lenguajemáquina directamenteejecutable.
Ciclo de Vida
del Software
Etapas de programación
Código Fuente
Compilador
Modificación del programa fuente
ExistenErrores Código objeto
Linkado/Interpretación
Programa Ejecutable
ExistenErrores
PruebasExistenErrores
No
No
Errores léxicosTiempo de
compilación
Errores de ejecuciónTiempo de ejecución
Errores lógicosTiempo de
pruebas
APLICACIÓN
BUENA PROGRAMACIÓN
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.
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.
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.
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.
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.
Estructuras
de Control
Estructura Secuencial
Estructuras Selectivas o de Decisión
Estructuras Repetitivas o Bucles
Tipos de Estructuras
de Control
Estructura Secuencial
• Es aquella en la queuna acción(instrucción) sigue aotra en secuencia.
• Pseudocódigo:
Estructura Secuencial
• Diagrama de Flujo:
• Diagrama de N - S:
Estructuras Selectivas
• Se utilizan para tomar decisiones lógicas, se evalúauna condición y en función del resultado de lamisma se realiza una opción u otra.
• Las estructuras selectivas o alternativas puedenser:
1. Simples.
2. Dobles.
3. Múltiples.
Estructuras Selectivas
Alternativa Simple
• La estructuraalternativa simple Si
Entonces (eninglés If Then)ejecuta unadeterminada accióncuando se cumpleuna determinadacondición.
• Pseudocódigo:
Estructuras Selectivas
Alternativa Simple
• Diagrama de Flujo:
Estructuras Selectivas
Alternativa Doble
• La estructuraalternativa doble Si
Entonces Sino
(en inglés If Then
Else) permite elegirentre dos opciones oalternativas posibles,en función delcumplimiento o node determinadacondición.
• Pseudocódigo:
Estructuras Selectivas
Alternativa Doble
• Diagrama de Flujo:
• Diagrama de N - S:
Estructuras Selectivas
Alternativa Múltiple
• La estructuraalternativa múltipleSegún sea,
caso de (en inglésCase Of) evaluaráuna expresión quepodrá tomar nvalores distintos.
• Pseudocódigo:
Estructuras Selectivas
Alternativa Múltiple
• Pseudocódigo:
Estructuras Selectivas
Alternativa Múltiple
• Diagrama de Flujo:
• Diagrama de N - S:
Estructuras Repetitivas
o Bucles
• Las estructuras querepiten una secuencia deinstrucciones un númerodeterminado de veces sedenominan bucles y sedenomina iteración alhecho de repetir laejecución de unasecuencia de acciones.
Estructuras Repetitivas
Estructura Mientras
• La estructura repetitivaMientras (en inglésWhile) es aquella en queel cuerpo del bucle serepite mientras se cumpleuna determinadacondición.
• Pseudocódigo:
Estructuras Repetitivas
Estructura Mientras
• Diagrama de Flujo:
• Diagrama de N - S:
Estructuras Repetitivas
Estructura Hasta
• La estructura repetitivaRepetir Hasta
que (en inglésRepeat Until), seejecuta hasta que secumpla una condicióndeterminada que secomprueba al final delbucle.
• Pseudocódigo:
Estructuras Repetitivas
Estructura Hasta
• Diagrama de Flujo:
• Diagrama de N - S:
Estructuras Repetitivas
Estructura Desde/Para
• La estructura repetitiva Desde o Para (eninglés For), ejecuta las acciones del cuerpo delbucle un número especificado de veces y de modoautomático controla el número de iteraciones opasos a través del cuerpo del bucle.
Estructuras Repetitivas
Estructura Desde/Para
• Pseudocódigo:
Estructuras Repetitivas
Estructura Desde/Para
• Diagrama de Flujo:
• Diagrama de N - S:
Arreglos
(Arrays)
Arreglos (Arrays)
Conjunto de variables en donde cada una deellas puede ser referenciada, utilizando suposición relativa es decir su ubicación.
Vectores: es un arreglo en donde la ubicaciónexacta de cada uno de sus elementosnecesite solamente la utilización de unsubíndice
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ónDimensión: se debe definir cuantos elementos se
van a utilizar en el vector Tamaño: cantidad total de campos de memoriaDestinació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
Arreglos (Arrays)
Leer 10 números enteros y determinar su promedioPrograma_ejemplo_vectorVariable
entero: vector(10),indice,promedioInicio
Escriba” Digite 10 números enteros”para indice=1 hasta 10
lea vector(indice)Fin_parapromedio=0Para indice=1 hasta 10
promedio=promedio+vector(indice)Fin_para
promedio= promedio/10Escriba ”el promedio entero es” promedio
Fin
Ejemplo de pseudo-código
con Arreglos (Arrays)
Matriz: conjunto de datos organizados en formade filas y columnas en donde para referenciarcada datos, necesitaremos establecerclaramente en que fila y en que columna seencuentran.
Nombre: Debe ser un nombre que hagareferencia a su contenido
Tipo: Tipo de datos almacenar en ellaDimensión: Cantidad de filas y ColumnasTamaño: Resultado de multiplicar las filas por las
columnasDestinación: Saber porque se necesita una
matriz
Arreglos (Arrays)
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
Ejemplo de pseudo-código
con Arreglos (Arrays) – p1
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
Ejemplo de pseudo-código
con Arreglos (Arrays) – p2
Introducción a
la Lógica de
Programación
Fernando de la Cruz Naranjo Grisales