Download - Apuntes Logica Comp

Transcript

Clase 1: Generalidades de la programacin de computadoras. 01/07/08Objetivos de la clase: Al final de la clase los alumnos y alumnas sern capaces de: Comprender y aplicar los conceptos generales de la programacin Aplicar el concepto de procesamiento de datos. Identificar la diferencia entre lenguajes de alto y bajo nivel. Definir y aplicar los conceptos de compiladores e intrpretes Estructura de la clase: Conceptos bsicos de programacin. Los lenguajes de programacin. Conceptos bsicos de programacin: PROGRAMACION: Se llama programacin a la creacin de un programa de computadora PROGRAMA: Es un conjunto concreto de instrucciones que la computadora debe seguir para procesar datos y convertirlos en informacin. CARACTERISTICAS DE UN PROGRAMA: Debe ser confiable y funcional Advertir errores de entrada obvios y comunes Documentado adecuadamente Ser comprensible Codificado en el lenguaje apropiado Conceptos bsicos de programacin: COMPUTADORA: Maquina electrnica que funciona casi a la velocidad de la luz y es capaz de procesar datos para convertirlos en informacin til al ser humano.

Fig. 1 Procesamiento de datos. Lenguajes de programacin: Un lenguaje de programacin es un lenguaje que puede ser utilizado para controlar el comportamiento de una mquina, particularmente una computadora. Consiste en un conjunto de reglas sintcticas y semnticas que definen su estructura y el significado de sus elementos, respectivamente. Un lenguaje de programacin permite a un programador especificar de manera precisa: sobre qu datos una computadora debe operar, cmo deben ser estos almacenados y transmitidos y qu acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a travs de un lenguaje que intenta estar relativamente prximo al lenguaje humano o natural, tal como sucede con el lenguaje Lexico. Lenguajes de alto y bajo nivel: lenguaje de bajo nivel Es el tipo de lenguaje que cualquier computadora es capaz de entender. Se dice que los programas escritos en forma de ceros y unos estn en lenguaje de mquina, porque esa es la versin del programa que la computadora realmente lee y sigue.

lenguajes de alto nivel Son lenguajes de programacin que se asemejan a las lenguas humanas usando palabras y frases fciles de entender. En un lenguaje de bajo nivel cada instruccin corresponde a una accin ejecutable por el ordenador, mientras que en los lenguajes de alto nivel una instruccin suele corresponder a varias acciones. Ejemplo de Lenguaje de bajo nivel:

Ejemplo de lenguaje de alto nivel:

Interpretes y compiladores: Los compiladores, los intrpretes y los ensambladores se encargan de traducir lo que haya escrito en lenguaje de alto nivel (cdigo fuente) y lo convierten a cdigo objeto (casi ejecutable).

Tarea: Investigar sobre las generaciones de los lenguajes de programacin.

PRACTICA 1 : LOS ALGORITMOSProfesor: Lic. Salomn Aquino Objetivos: Al final de la clase los alumnos y alumnas sern capaces de: Comprender y aplicar el concepto de algoritmos.. Elaborar algoritmos narrados y en pseudocodigo. Algoritmo: es una serie de operaciones detalladas a ejecutar paso a paso, que conducen a la resolucin de problemas. Es un conjunto de reglas para resolver determinado problema describiendo de forma lgica su solucin. Cada una de las acciones de que consta un algoritmo es denominada sentencia y stas deben ser escritas en trminos de cierto lenguaje comprensible para el computador, que es el lenguaje de programacin. Para disear un algoritmo se debe comenzar por identificar las tareas ms importantes para resolver el problema y disponerlas en el orden en que han de ser ejecutadas. Criterios que debe satisfacer un algoritmo (caractersticas): 1. Entrada. Son cero o ms cantidades las cuales son externamente sustituidas. 2. Salida. Al menos una cantidad es producida. 3. Exactitud/precisin. Cada instruccin debe ser clara y sin ambigedad. 4. Finito. Terminar despus de un nmero finito de pasos. 5. Eficiente. Cada instruccin puede ser verificada por una persona con una prueba manual que satisfaga los requerimientos planteados por el problema. Tipos De algoritmos: a) Algoritmos Narrados. b) Algoritmos enPseudocdigo

Algoritmos narrados: Este algoritmo es caracterizado porque sigue un proceso de ejecucin comn y lgico, describiendo textualmente paso a paso cada una de las actividades a realizar dentro de una actividad determinada. Ejemplo 1 Algoritmo para asistir a clases: 1. Levantarse 2. Baarse 3. Vestirse 4. Desayunar 5. Cepillarse los dientes 6. Salir de casa 7. Tomar el autobs 8. Llegar a la universidad. 9. Buscar el aula 10. Ubicarse en un asiento Ejemplo 2 Receta para hacer huevos picados 1. Se coloca aceite o margarina en la cacerola 2. Se pica cebolla, chile y tomate 3. Se ponen a frer, con un poco de sal

4. Cuando ya estn fritos, se echan los huevos 5. Se bate y se deja cocer 6. Se sirve caliente en un plato Ejercicios: Elabore un algoritmo narrado para los casos siguientes: 1. Cambiar un vidrio roto de una ventana 2. Preparar una taza de te 1. Hacer palomitas de maz 4. Poner la mesa para la comida 5. Ir al cine Algoritmos en Pseudocdigo Pseudo = falso. El pseudo cdigo no es realmente un cdigo sino una imitacin y una versin abreviada de instrucciones reales para las computadoras. Es una tcnica para diseo de programas que permite definir las estructuras de datos, las operaciones que se aplicarn a los datos y la lgica que tendr el programa de computadora para solucionar un determinado problema. Utiliza un pseudolenguaje muy parecido a nuestro idioma, pero que respeta las directrices y los elementos de los lenguajes de programacin. Se concibi para superar las dos principales desventajas de los flujogramas: lento de crear y difcil de modificar sin un nuevo redibujo. Ejemplo 1 Disear un algoritmo que lea cuatro variables y calcule e imprima su producto, suma y media aritmtica. inicio leer (a, b, c, d) producto 30 + 2 Paso III. 10 > 32 Respuesta FALSO

Operadores Lgicos. Se utilizan para evaluar dos o ms relaciones, estos operadores son AND, OR y NOT, siempre devuelven como resultado un 0 (falso) o 1 (verdadero). Se evalan primero las relaciones y luego se evalan las operaciones entre s tomando en cuenta los operadores lgicos. El Operador AND. Se evalan primero las expresiones aritmticas, luego las relacionales y lgicas. Con el operador and, para que la respuesta sea verdadera, ambas relaciones deben ser verdaderas, de lo contrario, con una que sea falsa, el resultado de la evaluacin es falso. En C se utiliza && para representar el operador AND. Ejemplo 1: 3 > 5 and 3 < 10; en Lenguaje C se representa por 3 > 5 && 3 < 10;

Para este ejemplo, la primera relacin da como resultado FALSO (pues 3 no es mayor que 5) mientras que la segunda relacin da como resultado VERDADERO (3 es menor que 10). El siguiente paso es evaluar los resultados con el operador lgico, en otras palabras FALSO and VERDADERO esta evaluacin da como resultado FALSO. Si el resultado de las dos evaluaciones diera como resultado VERDADERO, entonces el resultado seria VERDADERO. Ejemplo 2: 5 > 2 and 10 9; en Lenguaje C se representa por 5 > 2 && 10 >= 9; En esta expresin las dos evaluaciones dan como resultado un valor VERDADERO, por lo que al evaluar VERDADERO and VERDADERO da como resultado VERDADERO.

El Operador OR. En este caso, al evaluar las expresiones aritmticas y luego las relacionales y lgicas; para que la respuesta sea verdadera, una de las relaciones debe ser VERDADERA, si todas las evaluaciones son FALSAS, el resultado de la evaluacin es falso. En C se utiliza || para representar el operador OR.

El Operador NOT. Este operador tiene la funcin de cambiar el valor de verdad al penltimo resultado obtenido de evaluar la expresin. Si al final se obtiene not (verdadero), el resultado ser FALSO; y si es not (falso), el resultado ser VERDADERO. En C se utiliza ! para representar dicho operador.

Ejemplo 1: Not(99 >= 50 or 10 > = 75); en Lenguaje C se representa !( 99 >= 50 || 10 >= 75) Al evaluar esta expresin, notamos que en la primera parte nos da un verdadero y en la segunda nos da un falso. De verdadero or falso obtenemos verdadero y finalmente not de verdadero nos da como resultado un FALSO. Jerarqua general de operadores en Lenguaje C.

ASOCIATIVIDAD En una expresin tal como 3 * 4 + 5 el compilador realiza primero la multiplicacin por tener el operador * prioridad ms alta - y luego la suma, por tanto, produce 17. Para forzar un orden en las operaciones se deben utilizar parntesis. 3 * (4 + 5) produce 27, ya que 4 + 5 se realiza en primer lugar. La asociatividad determina el orden en que se agrupan los operadores de igual prioridad; es decir, de izquierda a derecha o de derecha a izquierda. Por ejemplo, X y + z se agrupa como ( x y ) + z Ya que y +, con igual prioridad, tienen asociatividad de izquierda a derecha. Sin embargo, x = y = z se agrupa como x = ( y = z ) dado que su asociatividad es de derecha a izquierda.

Uso de Parntesis Los parntesis se pueden utilizar para cambiar el orden usual de evaluacin de una expresin determinada por su prioridad y asociatividad. Las subexpresiones entre parntesis se evalan en primer lugar segn el modo estndar y los resultados se combinan para evaluar la expresin completa. Si los parntesis estn anidados, es decir, un conjunto de parntesis contenido en otro, se ejecutan en primer lugar los parntesis ms internos. Por ejemplo, considrese la expresin ( 7 * (10 5) % 3 ) * 4 + 9 La subexpresin (10 5) se evala primero, produciendo (7 * 5 % 3) * 4 + 9 A continuacin se evala de izquierda a derecha la subexpresin (7 * 5 % 3) y obtenemos (35 % 3) * 4 + 9 luego 2 * 4 + 9 donde se realiza la multiplicacin y obtenemos 8 + 9 lo que produce un resultado final de 17. Ejercicio 1.

A continuacin se muestran expresiones algebraicas en base a las cuales usted deber formular expresiones en C, utilizando los operadores aritmticos y tomando en cuenta la precedencia de operadores aritmticos. 1.) db+acx+y 3.) d mod c (b + a) 5.) ax 2.) x+y ( m) n 4.) x + y + z ( w a) 6.) (x + y) dn

Ejercicio 2: Si x=10, y=5 y z=1 encontrar el resultado de las siguientes expresiones: a) x = y ______ b) z y ______ c) x y ________ Ejercicio 3: Si x=2, y=1, c=4 y d=6 evale la expresin y diga el resultado. A) x = y _____________ B) c d __________ Ejercicio 4. Evale las expresiones siguientes; use los mismos valores del ejemplo anterior: A) ( y + 2 ) * c > = ( d + 1 ) * c R/ ______________ B) ( ( 2 / c ) * ( d / 2 ) ) + 5 < 10 R/ ______________

OPERADOR DE ASIGNACIN: El operador = asigna el valor de la expresin derecha a la variable situada a su izquierda. Ej. Pi = 3.1416 Raiz2 = 1.4142 Este operador es asociativo por la derecha, lo que permite realizar asignaciones mltiples. As a = b = c = 45; equivale a a= (b = (c = 45)); en otras palabras, a, b y c toman el valor de 45. Esta propiedad permite inicializar varias variables con una sola sentencia. Int a, b, c; A = b = c = 5; TABLA DE OPERADORES DE ASIGNACIN:

Operadores de Incrementacin y Decrementacin De las caractersticas que incorpora C, una de las ms tiles son los operadores de incremento ++ y decremento -- . Los operadores ++ y --, denominados de incrementacin y decrementacin, suman o restan 1 a su argumento, respectivamente, cada vez que se aplican a una variable. Entonces a++ equivale a a = a + 1 Estos operadores tienen la propiedad de que pueden utilizarse como sufijo o prefijo, el resultado de la expresin puede ser distinto, dependiendo del contexto. Las sentencias ++n; y n++; tienen el mismo efecto; as como --n; y n--; Sin embargo, cuando se utilizan como expresiones tales como m = n++; printf( n = %d, n--) ; el resultado es distinto si se utilizan como prefijo. ++n produce un valor que es mayor en uno que el de n++, y --n produce un valor que es menor en uno que el valor de n--. Supongamos que n = 8; m = ++n; /* incrementa n en 1, dando 9, y lo asigna a m */ n = 9; printf( n = %d, --n); /*decrementa n en 1, dando 8 y lo pasa a printf( ) */ En este otro ejemplo: int a = 1 , b; b = a++; /* b vale 1 y a vale 2 */

int a = 1, b; b = ++a; /* b vale 2 y a vale 2 */ Entonces, si los operadores ++ y -- estn de prefijos, la operacin de incremento o decremento se efecta antes que la operacin de asignacin; si los operadores estn de sufijos, la asignacin se efecta en primer lugar y la incrementacin o decrementacin a continuacin.

Clase 3: Diagramas de Flujo.Materia: Lgica Computacional Profesor: Lic. Salomn Aquino. Fecha: 16/07/07 Objetivos de la clase: Al final de la clase los alumnos y alumnas sern capaces de: 1. Comprender y aplicar el concepto de diagrama de flujos. 2. Comprender y aplicar las reglas de construccin de los diagramas de flujos. 3. Elaborar diagramas de flujo. Los Diagramas de Flujo: Son la representacin grfica de la solucin algortmica de un problema. Para disearlos se utilizan determinados smbolos o figuras que representan una accin dentro del procedimiento. Utilizan unos smbolos normalizados, con los pasos del algoritmo escritos en el smbolo adecuado y los smbolos unidos con flechas, denominadas lneas de flujo, que indican el orden en que los pasos deben ser ejecutados. Para su elaboracin se siguen ciertas reglas: Se escribe de arriba hacia abajo y de izquierda a derecha Siempre se usan flechas verticales u horizontales, jams curvas Se debe evitar cruce de flujos En cada paso se debe expresar una accin concreta Secuencia de flujo normal en una solucin de problema Tiene un inicio Una lectura o entrada de datos El proceso de datos Una salida de informacin Un final Simbologa para disear flujogramas.

VENTAJAS DE USAR DIAGRAMAS DE FLUJO Rpida comprensin de las relaciones Anlisis efectivo de las diferentes secciones del programa Pueden usarse como modelos de trabajo en el diseo de nuevos programas o sistemas Comunicacin con el usuario Documentacin adecuada de los programas Codificacin eficaz de los programas Depuracin y pruebas ordenadas de programas DESVENTAJAS DE LOS DIAGRAMAS DE FLUJO Diagramas complejos y detallados suelen ser laboriosos en su planteamiento y diseo Acciones a seguir tras la salida de un smbolo de decisin, pueden ser difciles de seguir si existen diferentes caminos No existen normas fijas para la elaboracin de los diagramas de flujo que permitan incluir todos los detalles que el usuario desee introducir. Ejemplo de diagrama de flujo:

Ejercicio: Indica cules de los siguientes diseos son vlidos segn las reglas de construccin de flujogramas:

Practica 3: ejercicios de diagramas de flujoMateria: Lgica Computacional Profesor: Lic. Salomn Aquino Objetivos: Al final de la clase los alumnos sern capaces de: 1. Comprender las estructuras secuenciales y resolver problemas usando dichas estructuras. 2. Elaborar algoritmos, y flujogramas para estructuras secuenciales. ESTRUCTURAS BSICAS. Un problema se puede dividir en acciones elementales o instrucciones, usando un nmero limitado de estructuras de control (bsicas) y sus combinaciones que pueden servir para resolver dicho problema. Las Estructuras Bsicas pueden ser: Secuenciales: cuando una instruccin del programa sigue a otra. Seleccin o decisin: acciones en las que la ejecucin de alguna depender de que se cumplan una o varias condiciones. Repeticin, Iteracin: cuando un proceso se repite en tanto cierta condicin sea establecida para finalizar ese proceso.

Estructura Secuencial. Se caracteriza porque una accin se ejecuta detrs de otra. El flujo del programa coincide con el orden fsico en el que se han ido poniendo las instrucciones. Dentro de este tipo podemos encontrar operaciones de inicio/fin, inicializacin de variables, operaciones de asignacin, clculo, sumarizacin, etc. Este tipo de estructura se basa en las 5 fases de que consta todo algoritmo o programa: Definicin de variables (Declaracin) Inicializacin de variables. Lectura de datos Clculo Salida Ejemplo 1. Se desea encontrar la longitud y el rea de un crculo de radio 5. Solucin. El objetivo del ejercicio es encontrar la longitud y el rea de un crculo con un radio conocido y de valor 5. Las salidas sern entonces la longitud y el rea. (Fase 5 del algoritmo) Sabemos que la longitud de un crculo viene dada por la frmula 2 * pi * radio y que el rea viene dada por pi * radio al cuadrado. (Fase 4 del algoritmo) Si definimos las variables como: (fase 1 del algoritmo) L = Longitud A = rea R = radio pi = 3.1416 hagamos el algoritmo: Inicio Pi


Top Related