L贸gica Computacional M.C. Juan Carlos Olivares Rojas
1
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. 2
Construyendo 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 3
¿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 4
Algoritmo • 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 protocolopaso 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).
5
Algoritmo • 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). 6
Caracterí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 7
Caracterí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 8
Ejemplo de algoritmo
9
Algoritmo para hacer una taza de tĂŠ Inicio Tomar la tetera Llenarla de agua Encender el fuego Mientras no hierva el agua Esperar
Introducir una bolsa de tĂŠ en la tetera Vaciar el tĂŠ en la taza
Fin 10
Ejemplo • 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.
11
• Algoritmo (Preparación):
Ejemplo
– 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 12 200 °C, durante 15 minutos.
Otros 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 13
Herramientas para hacer un algoritmo
Las distintas representaciones de un algoritmo son el Pseudoc贸digo, el Diagrama N-S, el Diagrama de Flujo
14
Pseudocó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. 15
Ejemplo: Algoritmo para dividir 2 números algoritmo División variables 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_si fin
16
Diagramas 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.
17
Diagrama de flujo para calcular una divisi贸n
18
Diagramas Nassi-Scneiderman â&#x20AC;˘ Conocidos como Diagramas N-S o Diagramas de Chapin. Las acciones se escriben dentro de cajas sucesivas.
19
Ejercicio • 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. 20
Ejercicio â&#x20AC;˘ 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. 21
Ejercicio • 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%.
22
Ejercicio • 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%. 23
Pseudoc贸digo
24
Diagrama de Flujo “Cálculo de comisión”
25
Ejercicio resuelto
26
Ejercicio resuelto
27
Diagrama de flujo • 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. 28
Ejemplo Diagrama de Sistema
Flujo General
Levantarse
Disco MagnĂŠtico
Lectura de Tarjeta
Arreglarse
S/370 Computador
Irse
Impresora Perforadora
29
SĂmbolos del diagrama de Flujo
30
SĂmbolos del diagrama de Flujo
31
SĂmbolos del diagrama de Flujo
32
SĂmbolos del diagrama de Flujo
33
SĂmbolos del diagrama de Flujo
34
SĂmbolos del diagrama de Flujo
35
SENTENCIAS DE CONTROL
36
Lenguaje 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 37
Español Estructurado Estructura 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
38
Estructura 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
39
Espa帽ol Estructurado Estructura selectiva Diagrama de Flujo
Diagrama N-S
Pseudoc贸digo si <condici贸n> entonces acci贸n 1 fin_si
40
Español Estructurado Estructura 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. 41
Español Estructurado Estructura selectiva
Diagrama de Flujo
Diagrama N-S
Pseudocódigo si <condición> entonces acción 1 si_no acción 2 fin_si
42
Español Estructurado Estructura selectiva Estructura Selectiva Múltiple • Se ejecutarán unas acciones u otras según el resultado que se obtenga al evaluar una expresión.
43
Espa単ol Estructurado Estructura selectiva Diagrama de Flujo
Diagrama N-S
44
Español Estructurado Estructura 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 45
Español Estructurado Estructura 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. 46
Español Estructurado Estructura repetitiva Diagrama de Flujo
Diagrama N-S
Pseudocódigo mientras <expresión lógica> hacer acción fin_mientras 47
repetir-hasta_que
Español Estructurado Estructura repetitiva
• 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. 48
Español Estructurado Estructura repetitiva Diagrama de Flujo
Diagrama N-S
Pseudocódigo repetir acción hasta_que <expresión lógica> 49
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_si fin_si
Español Estructurado Estructura anidada • Tanto las estructuras selectivas como las repetitivas pueden ser anidadas, e introducidas unas en el interior de las otras. 50
PROGRAMA • 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. 51
Variables • 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. 52
Variables Lenguaje Estructurado. â&#x20AC;˘ InicializaciĂłn de Variables Es conveniente inicializar las variables al inicio del algoritmo. Ejemplo: algoritmo calcula_total var entero: contador=0, total=0 inicio leer numero mientras contador < numero hacer contador=contador+1 total=total+contador fin_mientras fin
53
Ejemplo 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;
}
54
Los elementos de un programa en C son los siguientes:
Comentarios Inclusi贸n de archivos main() { variables locales flujo de sentencias } Definici贸n de funciones creadas por el programador utilizadas en main() 55
Ejemplo1 /*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; }
56
Diagrama 1. SIMPLE PROCESS (Secuencial)
Lenguaje estructurado
Estructura de un programa
C++: …Sentencia(s) …Sentencia(s)
•n = n + 1; instructions();
2. IF-THEN-ELSE (Condición) Condició n
C++: SI (condición) ENTONCES …sentencia(s) SINO …sentencia(s) FIN SI
•if (first < second) return first; else return second;
57
Lenguaje estructurado
Diagrama 3.
C++:
Estructura CASE (Selección) Variabl e
Estructura de un programa
SELECCION (variable) constante_1 : sentencia(s) constante_2 : sentencia(s) : : constante_n : sentencia(s)
•switch (conversion) { case ‘A’ : case ‘a”: result = FahrToCelsius(temp); break; case ‘B’ : case ‘b’: result = CelsiusToFahr(temp) break; …. } C++ (for, while, do):
4.
MIENTRAS (condicion) HACER sentencia(s) : : FIN MIENTRAS
WHILE-DO (iteración)
TES T
A HACER sentencia(s) : : MIENTRAS (condición)
•WHILE (expresión) { proposición 1 ; proposición 2 ; ............... proposición n ; } •DO { proposición 1 ; proposición 2 ; ...............} WHILE (expresión) ;
58
多Preguntas, dudas y comentarios?
59