Lógica de programación

Post on 10-Jul-2015

619 views 0 download

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