Lógica Computacional

59
1 Lógica Computacional Lógica Computacional M.C. Juan Carlos Olivares Rojas

description

Lógica Computacional. M.C. Juan Carlos Olivares Rojas. Introducción a la programación. La principal razón para que las personas aprendan lenguajes de programación es utilizar la computadora como una herramienta para la resolución de problemas. Construyendo Sistemas de Información. - PowerPoint PPT Presentation

Transcript of Lógica Computacional

Page 1: Lógica Computacional

11

Lógica ComputacionalLógica Computacional

M.C. Juan Carlos Olivares Rojas

Page 2: Lógica Computacional

22

Introducción a la programaciónIntroducción a la programación

La principal razón para que las personas

aprendan lenguajes de programación es

utilizar la computadora como

una herramienta para la resolución de

problemas.

Page 3: Lógica Computacional

33

Construyendo Sistemas de InformaciónConstruyendo Sistemas de Información

• Las fases del desarrollo de un S.I.- Análisis del Sistema- Diseño del Sistema- Programación- Pruebas- Conversión- Producción y Mantenimiento

Page 4: Lógica Computacional

44

¿Qué es un algoritmo?¿Qué es un algoritmo?

La creación de algoritmos se realiza durante la fase de análisis del sistema. Un algoritmo es la secuencia ordenada de pasos que conducen a la solución de un problema dado, y puede ser expresado en lenguaje natural, por ejemplo el castellano

Page 5: Lógica Computacional

55

AlgoritmoAlgoritmo• Conjunto finito de reglas que dan una

secuencia de operaciones para resolver todos los problemas de un tipo dado. De forma más sencilla, podemos decir que un algoritmo es un conjunto de pasos que nos permite obtener un dato.

• Algoritmo es el procedimiento o protocolo- paso por paso- que ideamos o escribimos para que se realice una tarea o para lograr objetivos o propósitos; es como un plan (ordenado, estructurado, específico, claro).

Page 6: Lógica Computacional

66

AlgoritmoAlgoritmo

• Algoritmo se define como una sucesión o serie de instrucciones, por pasos, que deben realizarse y que explica cómo deben procesarse los datos para producir sus resultados; los algoritmos deben escribirse en español o inglés, independientes de los lenguajes para programación (no mezclarlos).

Page 7: Lógica Computacional

77

Características de un AlgoritmoCaracterísticas de un Algoritmo

• Bien definido• No ambiguo• Finito (siempre termina)• Efectivo• Claridad: programación estructurada• Correctitud: satisfacer especificación• Cero o más entradas y una o más

salidas

Page 8: Lógica Computacional

88

Características de un algoritmoCaracterísticas de un algoritmo• Preciso. Indicar el orden de realización

de cada paso.

• Definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez.

• Finito. Debe terminar el algún momento

Page 9: Lógica Computacional

99

Ejemplo de Ejemplo de algoritmoalgoritmo

Page 10: Lógica Computacional

1010

Algoritmo para hacer una taza de Algoritmo para hacer una taza de tété

InicioTomar la teteraLlenarla de aguaEncender el fuegoMientras no hierva el agua

Esperar

Introducir una bolsa de té en la teteraVaciar el té en la taza

Fin

Page 11: Lógica Computacional

1111

EjemploEjemplo• Construya un algoritmo para preparar “Pechugas de pollo

en salsa de elote y chile poblano”:

– Ingredientes (para 6 personas)– 3 Pechugas deshuesadas, sin piel y partidas a la mitad.– 1 diente de ajo– 4 gramos de pimienta negra. Sal.– 6 cucharadas de aceite– 5 chiles poblanos asados y limpios.– ½ Taza de leche.– ¼ Taza de crema ligera.– 1 lata de crema de elote.

Page 12: Lógica Computacional

1212

EjemploEjemplo• Algoritmo (Preparación):

– Muela el ajo, la pimienta y un poco de sal y únteselo a las pechugas.

– Caliente el aceite y dore las pechugas.– Licue los chiles con la leche y la crema, y

mézclelos con la crema de elote.– En una fuente coloque las pechugas y báñelas

con la mezcla anterior.– Cubra el platón con papel aluminio y hornee a

200 °C, durante 15 minutos.

Page 13: Lógica Computacional

1313

Otros ejemplos de algoritmosOtros ejemplos de algoritmos

• Las instrucciones o serie de pasos que sigues para grabar un número telefónico en tu celular.

• Las instrucciones que te dan para resolver un examen.

• Los pasos que sigues para prender el carbón para una carne asada

• El procedimiento que sigues para inscribirte

• EL procedimiento para obtener tu pasaporte

• La receta que sigues para preparar un pastel

• Los pasos para invitar a alguien al cine

Page 14: Lógica Computacional

1414

Herramientas para hacer un algoritmoHerramientas para hacer un algoritmo

Las distintas representaciones de un algoritmo son el Pseudocódigo, el Diagrama N-S, el Diagrama de Flujo

Page 15: Lógica Computacional

1515

PseudocódigoPseudocódigo• Es un lenguaje de especificación de algoritmos y

no puede ser ejecutado por una computadora, la ventaja del pseudocódigo es que el programador se puede concentrar en la lógica y en las estructuras de control y no preocuparse de las reglas de un lenguaje específico.

• Es fácil de modificar y puede ser rápidamente traducido a un lenguaje de programación.

• Representa acciones sucesivas en un lenguaje similar al humano.

Page 16: Lógica Computacional

1616

Ejemplo: Algoritmo para dividir 2 números

algoritmo Divisiónvariables real: dividendo, divisor, resultado_división inicio Leer (dividendo, divisor) si divisor <> 0 entonces resultado_división= dividendo / divisor escribir (resultado_división) si_no escribir (‘El resultado es infinito’) fin_sifin

Page 17: Lógica Computacional

1717

Diagramas de FlujoDiagramas de Flujo

Es una representación gráfica de las actividades, operaciones y decisiones lógicas que deben ser realizadas, su orden o secuencia en que se realizan. Utiliza símbolos unidos por flechas. Dentro de cada símbolo o caja se indican las operaciones que deben ser realizadas.

Page 18: Lógica Computacional

1818

Diagrama de flujo para calcular una Diagrama de flujo para calcular una divisióndivisión

Page 19: Lógica Computacional

1919

Diagramas Nassi-ScneidermanDiagramas Nassi-Scneiderman

• Conocidos como Diagramas N-S o Diagramas de Chapin. Las acciones se escriben dentro de cajas sucesivas.

Page 20: Lógica Computacional

2020

EjercicioEjercicio• Realizar el siguiente algoritmo

REGISTRO DE VENDEDORES.• Una tienda emplea un cierto número de vendedores. La

mayoría de estos empleados obtienen sus ingresos de comisiones sobre los artículos que venden, pero existen algunos empleados que obtienen su salario fijo, sin importar el tipo o cantidad de artículos que venden, más una comisión por sobre ciertos artículos.

• La tienda ofrece distintos tipos de mercancías, algunas de las cuales se clasifican como artículos estándar por que son de uso común y no requieren de técnicas creativas de venta; además, hay artículos que son altamente remunerados pero difíciles de vender.

Page 21: Lógica Computacional

2121

EjercicioEjercicio

• Los compradores también se clasifican. Algunos se conocen como compradores regulares, pues hacen transacciones tan a menudo que no se requiere de hacerles venta creativa. Sin embargo, la mayoría de los clientes hacen pocas transacciones dentro de la tienda, y es probable que entren, compren algo y no vuelvan a ser vistos.

Page 22: Lógica Computacional

2222

EjercicioEjercicio

• Si un empleado vende cualquier tipo de artículo a un cliente regular, no se da comisión alguna.

• Si un empleado asalariado vende un artículo extra, recibe una comisión del 10% a menos que el artículo tenga un precio mayor de $10,000, en cuyo caso recibe una comisión del 15%.

Page 23: Lógica Computacional

2323

EjercicioEjercicio

• Si un empleado no asalariado vende un artículo extra a alguien que no sea un comprador regular, recibe un 15% de comisión a menos que el artículo tenga un precio mayor a $10,000 en cuyo caso recibe una comisión del 20%. Si un empleado asalariado vende un artículo estándar recibe un 3% de comisión, en caso de ser un empleado no asalariado recibe un 7%.

Page 24: Lógica Computacional

2424

Pse

udocó

dig

oPse

udocó

dig

o

Page 25: Lógica Computacional

2525

Diagrama de Flujo“Cálculo de comisión”

Page 26: Lógica Computacional

2626

Ejercicio resueltoEjercicio resuelto

Page 27: Lógica Computacional

2727

Ejercicio resueltoEjercicio resuelto

Page 28: Lógica Computacional

2828

• Al diagrama de flujo también se le conoce como ordinograma o flujograma

• Diagrama de Sistema: Diagrama que representa gráficamente los dispositivos de entrada-salida que usa un programa de un sistema.

Diagrama de flujoDiagrama de flujo

Page 29: Lógica Computacional

2929

EjemploEjemplo

Flujo General Diagrama de Sistema

Levantarse

Arreglarse

Irse

Disco Magnético Lectura de

Tarjeta

S/370

Computador

Impresora

Perforadora

Page 30: Lógica Computacional

3030

Símbolos del diagrama de FlujoSímbolos del diagrama de Flujo

Page 31: Lógica Computacional

3131

Símbolos del diagrama de FlujoSímbolos del diagrama de Flujo

Page 32: Lógica Computacional

3232

Símbolos del diagrama de FlujoSímbolos del diagrama de Flujo

Page 33: Lógica Computacional

3333

Símbolos del diagrama de FlujoSímbolos del diagrama de Flujo

Page 34: Lógica Computacional

3434

Símbolos del diagrama de FlujoSímbolos del diagrama de Flujo

Page 35: Lógica Computacional

3535

Símbolos del diagrama de FlujoSímbolos del diagrama de Flujo

Page 36: Lógica Computacional

3636

SENTENCIAS DE CONTROL SENTENCIAS DE CONTROL

Page 37: Lógica Computacional

3737

Lenguaje EstructuradoLenguaje Estructurado

• Español Estructurado• Para describir los procesos se utiliza el

lenguaje natural. Este incluye estructuras de control como:

• Si• Mientras• Repetir-Hasta_que• Según_sea- hacer

Page 38: Lógica Computacional

3838

Español EstructuradoEspañol EstructuradoEstructura selectivaEstructura selectiva

Una estructura selectiva es aquella en que se ejecutan unas acciones u otras según se cumpla o no una determinada condición. La selección puede ser simple, doble o múltiple

Page 39: Lógica Computacional

3939

Estructura Selectiva SimpleEstructura Selectiva Simple

• Se evalúa la condición y si ésta da como resultado verdad se ejecuta una determinada acción o grupo de acciones; en caso contrario se saltan dicho grupo de acciones

Page 40: Lógica Computacional

4040

Español EstructuradoEspañol EstructuradoEstructura selectivaEstructura selectiva

Diagrama de Flujo

Diagrama N-S

Pseudocódigo

si <condición> entonces acción 1fin_si

Page 41: Lógica Computacional

4141

Español EstructuradoEspañol EstructuradoEstructura selectivaEstructura selectiva

Estructura Selectiva Doble

• Cuando el resultado de evaluar la condición es verdad se ejecutará una determinada acción o grupo de acciones y si el resultado es falso otra acción o grupo de acciones diferentes.

Page 42: Lógica Computacional

4242

Español EstructuradoEspañol EstructuradoEstructura selectivaEstructura selectiva

Diagrama de Flujo

Diagrama N-S

Pseudocódigo

si <condición> entonces acción 1si_no acción 2fin_si

Page 43: Lógica Computacional

4343

Español EstructuradoEspañol EstructuradoEstructura selectivaEstructura selectiva

Estructura Selectiva Múltiple

• Se ejecutarán unas acciones u otras según el resultado que se obtenga al evaluar una expresión.

Page 44: Lógica Computacional

4444

Español EstructuradoEspañol EstructuradoEstructura selectivaEstructura selectiva

Diagrama de Flujo

Diagrama N-S

Page 45: Lógica Computacional

4545

Español EstructuradoEspañol EstructuradoEstructura selectivaEstructura selectiva

Estructura Selectiva Múltiple

Pseudocódigo

según_sea <expresión> hacer <lista 1> : acción 1 <lista 2> : acción 2 . . . [si_no acción n]fin_según

Page 46: Lógica Computacional

4646

Español EstructuradoEspañol EstructuradoEstructura repetitivaEstructura repetitiva

mientras

• Lo que caracteriza este tipo de estructura es que las acciones del cuerpo del bucle se realizan cuando la condición es cierta. Además, se pregunta por la condición al principio, de donde se deduce que dichas acciones se podrán ejecutar de 0 a n veces.

Page 47: Lógica Computacional

4747

Español EstructuradoEspañol EstructuradoEstructura repetitivaEstructura repetitiva

Diagrama de Flujo Diagrama N-S

Pseudocódigo mientras <expresión lógica> hacer acción fin_mientras

Page 48: Lógica Computacional

4848

Español EstructuradoEspañol EstructuradoEstructura repetitivaEstructura repetitiva

repetir-hasta_que

• El bucle repetir-Hasta_que es análogo al bucle mientras desde el punto de vista de que el cuerpo del bucle (acción) se ejecuta una y otra vez mientras la condición (expresión lógica) es verdadera. La diferencia entre ellos consiste en que en el bucle repetir-hasta_que, las sentencias del cuerpo se ejecutan, al menos una vez, antes de que se evalúe la expresión lógica. En otras palabras, el cuerpo del bucle siempre se ejecuta, al menos una vez, incluso aunque la expresión lógica sea falsa.

Page 49: Lógica Computacional

4949

Español EstructuradoEspañol EstructuradoEstructura repetitivaEstructura repetitiva

Diagrama de Flujo Diagrama N-S

Pseudocódigo repetir acción hasta_que <expresión lógica>

Page 50: Lógica Computacional

5050

Español EstructuradoEspañol EstructuradoEstructura anidadaEstructura anidada

• Tanto las estructuras selectivas como las repetitivas pueden ser anidadas, e introducidas unas en el interior de las otras.

Pseudocódigo

si <condición1> entonces <acciónes1>si_no si <condición2> entonces <acciones2> si_no si <condición3> entonces <acciones3> si_no <accionesX> fin_si fin_sifin_si

Page 51: Lógica Computacional

5151

PROGRAMAPROGRAMA

• Es más que una secuencia ordenada de instrucciones que hacen algo con sentido. Las instrucciones tienen que ser las precisas y estar ordenadas de tal forma que, cuando el ordenador las ejecute, se consigan los efectos deseados.

• Las instrucciones que tendremos disponibles para escribir un programa y su sintaxis van a depender del lenguaje que vayamos a usar; en nuestro caso, el C.

Page 52: Lógica Computacional

5252

VariablesVariables

• Una variable, en realidad, no es más que un nombre para identificar una (o varias) posiciones de memoria donde el programa guarda los distintos valores de una misma entidad.

• Un programa debe DEFINIR a todas las

variables que utilizará, antes de comenzar a usarlas, a fin de indicarle al compilador de que tipo serán, y por lo tanto cuanta memoria debe destinar para albergar a cada una de ellas.

Page 53: Lógica Computacional

5353

VariablesVariables

Lenguaje Estructurado. • Inicialización de Variables

Es conveniente inicializar las variables al inicio del algoritmo. Ejemplo:

algoritmo calcula_totalvar

entero: contador=0, total=0inicio

leer numeromientras contador < numero

hacer contador=contador+1

total=total+contadorfin_mientras

fin

Page 54: Lógica Computacional

5454

Ejemplo de programa en Lenguaje CEjemplo de programa en Lenguaje C

#include <stdio.h> main() {

/* defino multiplicador como un entero */ int multiplicador;

/* defino multiplicando como un entero */int multiplicando;

/* defino resultado como un entero */ int resultado;

/* les asigno valores */ multiplicador = 1000 ; multiplicando = 2 ; resultado = multiplicando * multiplicador ;

/* muestro el resultado */ printf("Resultado = %d\n", resultado);

return 0; }

Page 55: Lógica Computacional

5555

Los elementos de un programa en C son Los elementos de un programa en C son los siguientes:los siguientes:

Comentarios Inclusión de archivos main() {

variables locales flujo de sentencias

} Definición de funciones creadas por

el programador utilizadas en main()

Page 56: Lógica Computacional

5656

Ejemplo1Ejemplo1

/*Programa que despliega un mensaje de bienvenida en la pantalla*/

#include<stdio.h> #include<conio.h> void main() {

clrscr(); gotoxy(20,10); printf("BIENVENIDO AL CURSO DE C ESTANDAR \n"); delay(2500); return 0;

}

Page 57: Lógica Computacional

5757

Condición

1. SIMPLE PROCESS (Secuencial)

C++:

•n = n + 1;instructions();

C++:

•if (first < second) return first;else return second;

2. IF-THEN-ELSE (Condición)

DiagramaEstructura de un programa

Lenguaje estructurado

SI (condición) ENTONCES …sentencia(s)SINO …sentencia(s)FIN SI

…Sentencia(s)…Sentencia(s)

Page 58: Lógica Computacional

5858

C++:

•switch (conversion) { case ‘A’ : case ‘a”: result = FahrToCelsius(temp); break; case ‘B’ : case ‘b’: result = CelsiusToFahr(temp) break; ….}C++ (for, while, do):

•WHILE (expresión) { proposición 1 ; proposición 2 ; ............... proposición n ;}

•DO {  proposición 1 ;  proposición 2 ;  ...............} WHILE (expresión) ;

Diagrama Estructura de un programa

Lenguaje estructurado

3. Estructura CASE (Selección)

4. WHILE-DO (iteración)

Variable

TEST

A

SELECCION (variable) constante_1 : sentencia(s) constante_2 : sentencia(s) : : constante_n : sentencia(s)

MIENTRAS (condicion) HACER sentencia(s) : :FIN MIENTRAS

HACER sentencia(s) : :MIENTRAS (condición)

Page 59: Lógica Computacional

5959

¿Preguntas, dudas y ¿Preguntas, dudas y comentarios?comentarios?