Professional Documents
Culture Documents
Ao: 2009
Profesor Ayudante
Ingeniera en Electrnica
CLASE #1 23-Febrero-2009
Entrega de tareas:
En forma individual Se har va EDUCA (www.pol.una.py/educa). Para ello cada alumno debe registrarse.
Algoritmo IEK
Herramientas
Utilizaremos SL como medio para representar algoritmos. Puede encontrar el manual y el entorno en: http://www.cnc.una.py/sl Para las prcticas de lenguaje C utilizaremos un software antigo de la empresa Borland ( Turbo C++ 1.0), que lo distribuye en forma gratuita.
Algoritmo IEK
Contenido de la materia
Introduccin Tipo de datos simples, operaciones primitivas y expresiones Estructura general de un programa y construcciones bsicas. Cadenas Subprogramas Tipo de datos estructurados y definidos por el usuario Archivos Breve introduccin a la programacin utilizando lenguaje C
Algoritmo IEK
Algoritmos lineales
Algoritmo IEK
Problema:
Es una tarea a ser realizada. La definicin de un problema no incluye las restricciones o la forma de resolverlo. Un mtodo de solucin debe ser desarrollado solo despus de que el problema sea suficientemente definido y comprendido. En algunas ocasiones la definicin del problema puede incluir ciertas restricciones. Por ejemplo la cantidad de recursos que deben ser utilizados para una solucin aceptable. Desde el punto de vista matemtico: Un problema es una funcin que mapea ciertos valores de entrada (llamado dominio) a ciertos valores de salida (llamado rango)
Algoritmo IEK
Algoritmo:
Palabra viene del nombre de un matemtico y astrnomo rabe Abu Ja'far Mohammed ibn Musa al-Khowarizmi (825) (Padre de Ja'far, Mohammed, hijo de Moiss, natural de Khowarizm). Escribi el clebre libro Kitab al jabr w'al-muqabala(Reglas de restauracin y reduccin -- > algebra) Concepto: Es una posible solucin a un problema. Es un mtodo o proceso sistemtico para resolver el problema (siempre que cumpla ciertas condiciones) Propiedades de un algoritmo Algoritmo IEK Es correcto: logra resultados correctos. Tiene pasos concretos, donde cada paso es realizado en una cantidad finita de tiempo. Esta bien definido. No es ambiguo. Siempre se obtiene los mismos resultados con los mismos datos de entrada. Compuesta por una cantidad finita de pasos. Debe terminar: no debe quedar en una ciclo infinito.
Algoritmo IEK
Procesamiento
Algoritmo
base . altura 2
superficie=
Algoritmo IEK
Ejercicio:
Disee como solucionara el siguiente problema. Escrbalo paso a paso. Encuentre el rea sombreada que representa un anillo.
Algoritmo IEK
10
Representacin de un algoritmo
Diagramas : de flujo o Nassi-Shneiderman(N-S) Semi-hablado: pseudocdigo
Diagrama de Flujo
Inicio
base, altura
Pseudocdigo Inicio leer base, altura sup <- (base*altura)/2 escribir sup Fin SL var base, altura,sup : numerico inicio leer(base,altura) sup = (base*altura)/2 imprimir(sup) fin
11
sup
Fin
Algoritmo IEK
Anlisis
Diseo de solucin
Ejecucin
Algoritmo IEK
12
Programa
Una instancia de un algoritmo. Es la representacin concreta de un algoritmo en algn lenguaje de programacin (para el curso seria SL).
Lenguaje de programacin
Medio para comunicar el algoritmo a la computadora. Es un conjunto de smbolos y las reglas para combinarlos. Existen tres categoras de lenguajes segn su implementacin:
Intrpretes Compiladores Hbridos ( generadores de cdigo intermedio)
Algoritmo IEK
13
14
Problemas y algoritmos
Recuerde que:
Un algoritmo es una posible solucin a un problema planteado.
Desde el punto de vista de la materia, este problema puede ser resuelto por una computadora.
Un problema puede ser resuelto por ms de un algoritmo. Un problema siempre consta de:
Datos de entrada: cantidad y naturaleza de los datos. Informacin de la salida requerida resultado de aplicar un procesamiento especfico.
Antes de elaborar un algoritmo se debe hacer un anlisis del problema, esto es : interpretar el problema. Para ello es recomendable leer al menos 3 o mas veces el problema de manera a:
Tratar de encontrar la forma de reducir el problema en otros menores (divide y vencers). Sobre todo para el caso de problemas complejos. Tener en claro cuales son los datos de entrada, en qu cantidad y cual es su naturaleza de cada uno (tipo o dominio del dato). Tener en claro las restricciones del problema...(siempre que se expliciten los mismos).Entender perfectamente la salida requerida.
Algoritmo IEK
15
Conceptos bsicos
Memoria
Componente del computador destinado a almacenar programas y datos.
Variable
Regin de la memoria (principal) que puede ser accedida mediante un nombre. El contenido de esta regin puede ser cambiada.
Constante literal
Cualquier nmero o cadena de caracteres que forma parte del texto del programa. Es un valor en s mismo y no puede cambiar. Es almacenado (generalmente ) como parte del programa.
Identificador
Nombre que es asignado a las variables o subprogramas. Existen
identificadores que se denominan reservados y que tienen un significado especial dentro de un programa.
Algoritmo IEK
16
Conceptos bsicos
Expresin
Permite indicar un clculo especfico as como usualmente lo hacemos en matemticas. Existen varios tipos de expresiones que utilizaremos: aritmticas, relacionales, lgicas y otras.
Operadores
Indica un clculo especfico en una expresin. Por ejemplo: sumar, multiplicar, dividir, etc dos operandos. Se representan mediante smbolos : + , - , *, /, etc. Existen varios tipos: aritmticos, lgicos, relaciones, especiales.
Algoritmo IEK
17
Conceptos bsicos
Operadores (continuacin)
Aritmticos: +, - , /, * , ^ (exponenciacin), mod. Requieren operandos numricos. Lgicos: and, or, not. Permiten implementar operaciones del lgebra de Boole. Requieren operandos lgicos. Relacionales: ==, < , > , <=, >=, <>. Permiten comparar contenido de variables. (mayor, igual, menor, distinto, etc).
Evaluacin de operandos
Para que una expresin pueda evaluarse (determinar el valor final de la misma) debe tenerse en cuenta qu pasa cuando existe ms de un operador en la expresin, en qu orden se evaluar?
Reglas de precedencia: cada operador tiene un peso de precedencia. Por ejemplo el * (multiplicacin) tiene precedencia sobre el + (suma). Reglas de asociatividad: cuando un operador tiene el mismo peso de precedencia me permite determinar cual evaluar primero. Generalmente es de izquierda a derecha. Puedo forzar las reglas de arriba mediante la utilizacin de parntesis. Ejemplo (10+20 ) * 5 (Primero se evaluara la suma y luego la multiplicacin)
Algoritmo IEK
18
Conceptos bsicos
Ejemplo de expresin
Variables Constantes literales
A + B + C ^ 2 100 + 55
Operadores
Algoritmo IEK
19
Conceptos bsicos
Evaluacin de expresin. Uso de reglas de precedencia y asociatividad
A + B * C ^ 2 100 + 55
1 2 3 4 5
- En 1 se aplica la precedencia mayor de ^ sobre los dems operadores - En 2 se aplica la precedencia mayor de * sobre el + y - En 3, 4 y 5 todas las precedencias son iguales y se aplica la regla de asociatividad (de izquierda a derecha).
Algoritmo IEK
20
Conceptos bsicos
Tipo de datos
Los tipos de datos indican la naturaleza del dato. Delimita el rango posible de valores (dominio) y las operaciones posibles aplicables al dato. En el curso distinguiremos tres tipos de datos bsicos o primitivos: Numrico (numerico): representa informacin numrica ya sea entera o fraccionaria. En SL de -1.7E-308 a 1.7E+308 Por ejemplo: 1912, 18121000, 0.0002, 0.152, 1e-10, 14e+30 Cadena de caracteres (cadena): representa informacin textual. Por ejemplo: hola esto es una prueba (fjese que se encierra entre comillas dobles). Lgico (logico) : representa datos que pueden tomar dos valores posibles : verdadero o falso. Por ejemplo: NO, SI, TRUE, FALSE.
Algoritmo IEK
21
Conceptos bsicos
Asignacin
Es la operacin que me permite acceder a cierta posicin de memoria y cambiar el valor all guardado. El operador de asignacin esta definido por el smbolo =. A la derecha debe aparecer una variable y a la izquierda una expresin. Ejemplo: a = 10 + 5 . Indica que a la variable de nombre a se le asignar el resultado de evaluar 10 + 5.
a
Memoria
Operacin de asignacin
15 a
Memoria
a = 10 + 5
Algoritmo IEK
22
Instrucciones
Instruccin:
Una accin a ser realizada por la computadora. Un programa puede verse como un conjunto de instrucciones. Hasta ahora vimos : expresiones y asignacin, que son instrucciones simples. De qu forma?
Tipos de instrucciones
Simples: evaluacin de expresiones y asignacin. Permiten tener algoritmos lineales, con un solo camino de ejecucin. Seleccin: permiten tener alternativas de ejecucin bajo ciertas condiciones. Iteracin: permiten repetir un conjunto de instrucciones bajo ciertas condiciones. Entrada/Salida: permiten interactuar con el usuario ya sea para la lectura de datos como la salida de los mismos.
Algoritmo IEK
23
Algoritmo IEK
24
Pseudocdigo
Algoritmo IEK
25
Algoritmo IEK
26
programa sumar_1010 Palabra reservada que indica que continuacin se encuentra el nombre var del programa. a, b : numerico inicio b = 1000 a = b + 10 fin
Algoritmo IEK
27
Algoritmo IEK
28
Algoritmo IEK
29
Algoritmo IEK
30
Palabra reservada inicio que indica que se iniciara el cuerpo principal del programa
Algoritmo IEK
31
programa sumar_1010 var a, b : numerico inicio Cuerpo del programa b = 1000 Cada sentencia o instruccin esta a = b + 10 separada por un ENTER fin Para el ejemplo existen dos instrucciones de asignacin
Algoritmo IEK
32
Palabra reservada fin que indica que se termina el cuerpo principal del programa
Algoritmo IEK
33
Algoritmo IEK
34
Algoritmos lineales
Caractersticas
nico flujo de ejecucin. Se especifican las cmputos instrucciones uno tras otro de forma secuencial. Por s solos, resuelven problemas muy simples y cortos. Son usados en conjuncin en otros algoritmos con procesos selectivos e iterativos.
35
Para encontrar una solucin, asumimos que se sabe geometra plana bsica. Por tanto
superficie=
base . altura 2
Algoritmo IEK
36
Algoritmo IEK
37
Pasos secuenciales
Algoritmo IEK
38
Algoritmo IEK
39
Algoritmo IEK
40
Algoritmo IEK
41
Algoritmo IEK
42
Ejercicios
Resuelva los siguientes ejercicios en SL
Leer los catetos de un tringulo rectngulo e imprimir el valor de su hipotenusa. Dado el valor de la temperatura en grados Celsius imprmalo en su valor Fahrenheit. 9 F = . C32 5 Dado un valor N que presenta la cantidad de segundos transcurridos a partir de las 00:00:00 hs imprimir la hora del da a que corresponde en formato 24 horas. Ejemplos: Dado N=45002 Dado N=36000 Dado N=72060 Representa la hora 12:30:02 Representa la hora 10:00:00 Representa la hora 20:01:00
Algoritmo IEK
43
Algoritmo IEK
44
Bibliografa
Joyanes Aguilar, Luis. Fundamentos de programacin: algoritmos, estructura de datos y objetos. McGraw-Hill, 2003. Joyanes Aguilar, Luis. Fundamentos de ProgramacinAlgoritmos y Estructuras de Datos. McGraw-Hill, 1996. Segovia Silvero, Juan. SL. Introduccin al lenguajeReferencia de subrutinas predefinidas-Ejemplos selectos. Centro Nacional de Computacin, Universidad Nacional de Asuncin. 1999. Rodriguez Almeida, Miguel Angel. Metodologa de la programacin a travs del pseudocdigo. McGraw-Hill, 1991. Kernighan & Pike. La prctica de la programacin. Prentice-Hall. 1999.
Algoritmo IEK
45