You are on page 1of 45

Algoritmo

Ao: 2009
Profesor Ayudante

Ingeniera en Electrnica

: Cristian Cappo (ccappo@pol.una.py) : Gustavo Sosa (gsosa@cnc.una.py)

CLASE #1 23-Febrero-2009

Informacin sobre la ctedra


Asistencia: opcional pero recomendable Derecho a examen final:
Entregar al menos 70% de las tareas entregadas Obtener el puntaje requerido en los exmenes parciales

Promedio ponderado (puntaje final = EF*0,6 + PP*0,4)


70% Evaluaciones parciales 30% Tareas (como trabajo prctico)

Entrega de tareas:
En forma individual Se har va EDUCA (www.pol.una.py/educa). Para ello cada alumno debe registrarse.

Sitio web del curso


http://clases.cnc.una.py/pol/ie/alg

Algoritmo IEK

Informacin sobre la ctedra


Exmenes:
Se podrn utilizar todos los materiales Se har todo lo posible para que los exmenes se hagan en mquina.

Recomendaciones para el curso:


Buscar un grupo de estudio Practicar, practicar y practicar.. el xito que pueda tener en esta materia es directamente proporcional al tiempo y esfuerzo que dedica para realizar los ejercicios.

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

Qu veremos hoy y el viernes?


Introduccin conceptual
Problemas, algoritmos y programas Anlisis de problemas

Caractersticas y representacin de algoritmos Conceptos bsicos


Variables, constantes, expresiones, asignacin, tipo de dato, entrada/salida de datos.

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.

Ejemplo de problema y algoritmo


Problema: Dado dos nmeros enteros positivos que representan la base y la altura de un tringulo, encontrar la superficie del mismo. Algoritmo (pasos bien definidos) a) inicio del algoritmo b) leer base y altura c) calcular la superficie s = ( base * altura) / 2 d) ver superfice e) fin del algoritmo

Algoritmo IEK

Datos de Entrada base y altura

Procesamiento
Algoritmo
base . altura 2

Datos de Salida superficie

superficie=

Algoritmo IEK

Observaciones sobre un algoritmo


Tiene siempre datos de entrada ( ejemplo:.. base y altura ) Siempre se especifica el nro. de datos de entrada... Se especifica exactamente el tipo de datos de entrada (ejemplo: entero positivo..). Tiene siempre un resultado producto del algoritmo aplicado segn los datos de entrada (ejemplo: superficie )

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 <- (base*altura)/2

sup

Fin

Algoritmo IEK

Solucin de un problema algortmico


Codificacin en algn L.P.

Anlisis

Diseo de solucin

Ejecucin

Verificacin manual de la solucin Resolucin del problema

Verificacin Depuracin Cdigo depurado Prueba y depuracin en mquina

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

Representacin en SL. Por qu?


Es un lenguaje concebido e implementado en la UNA. Su sintaxis es muy similar a pseudocdigo. Mucho ms simple que otros lenguajes tradicionales, obvindose detalles innecesarios para un curso introductorio de programacin. El alumno puede probar y depurar sus algoritmos en la computadora. No se le limita simplemente al papel. Se acostumbra al alumno a las caractersticas reales de cualquier lenguaje de programacin permitiendo la transicin a un lenguaje tradicional sin mayores inconvenientes. No obstante el alumno puede usar pseudocdigo u otra representacin en la fase de resolucin del problema
Algoritmo IEK

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.

Para nuestro curso un identificador:


Comienza con una letra o con un _ (guin bajo). No debe tener espacios Pueden tener hasta 32 caracteres. Las maysculas y minsculas son diferentes.

Algoritmo IEK

16

Conceptos bsicos
Expresin

Combinacin de constantes, variables y operadores.


Ejemplo: a + b + 10 * c ^ 2

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.

La asignacin es la operacin fundamental para lograr realizar clculos con la computadora.

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

Estructura bsica de un programa en SL


programa <nomb_programa> var <nombre_variable(s)> : <nombre_tipo> ... inicio <cuerpo> fin Archivo .sl Instrucciones Opcional Opcional si no hay variables

Algoritmo IEK

24

Comparando pseudocdigo con SL


Problema : Dada dos variables numricas enteras a y b, asignar a b el valor 1000 y a la variable a el valor contenido en b ms 10

Pseudocdigo

SL programa suma_1010 var a, b: numerico

Inicio b = 1000 a = b + 10 Fin

inicio b = 1000 a = b + 10 fin

Algoritmo IEK

25

Estructura bsica de un programa en SL - partes

programa sumar_1010 var a, b : numerico inicio b = 1000 a = b + 10 fin

Algoritmo IEK

26

Estructura bsica de un programa en SL - partes

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

Estructura bsica de un programa en SL - partes

programa sumar_1010 var a, b : numerico inicio b = 1000 a = b + 10 fin

Identificador del programa

Algoritmo IEK

28

Estructura bsica de un programa en SL - partes

programa sumar_1010 var a, b : numerico inicio b = 1000 a = b + 10 fin

Indica que a continuacin se declararn las variables

Algoritmo IEK

29

Estructura bsica de un programa en SL - partes

programa sumar_1010 var a, b : numerico inicio b = 1000 a = b + 10 fin

Declaracin de variables dos variables numricas identificadas como a y b.

Para qu declarar las variables?

Algoritmo IEK

30

Estructura bsica de un programa en SL - partes

programa sumar_1010 var a, b : numerico inicio b = 1000 a = b + 10 fin

Palabra reservada inicio que indica que se iniciara el cuerpo principal del programa

Algoritmo IEK

31

Estructura bsica de un programa en SL - partes

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

Estructura bsica de un programa en SL - partes

programa sumar_1010 var a, b : numerico inicio b = 1000 a = b + 10 fin

Palabra reservada fin que indica que se termina el cuerpo principal del programa

Algoritmo IEK

33

Vista del entorno de programacin SL

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.

Inicio Paso 1 Paso 2 ... Paso N Fin


Algoritmo IEK

35

Algoritmos lineales ejemplo ya visto


Problema:
Dado dos nmeros enteros positivos que representan la base y la altura de un tringulo, encontrar e imprimir la superficie del mismo.

Para encontrar una solucin, asumimos que se sabe geometra plana bsica. Por tanto

superficie=

base . altura 2

Un posible algoritmo de solucin (hablado)


inicio del algoritmo Leer los datos de base y altura Calcular la superficie que es igual a base por altura entre dos. Imprimir o mostrar el contenido de superfice fin del algoritmo

Algoritmo IEK

36

Algoritmos lineales ejemplo en SL (1)


Para llevar a SL tendramos que tener en cuenta

Definicin de las variables necesarias que usaremos


base, altura y superfice

Funciones de entrada/salida de datos


leer (para entrada de datos) e imprimir (para salida de datos)

Expresin de la operacin aritmtica que indica el clculo


( base * altura ) / 2 (en representacin algortmica)

Guardar el resultado del clculo en otra variable (asignacin)


operador de asignacin =

Algoritmo IEK

37

Algoritmos lineales ejemplo en SL (2)


SL programa calc_superfice_triang var base, altura : numerico superficie : numerico inicio leer(base,altura) superficie = (base * altura)/2 imprimir(superficie) fin

Pasos secuenciales

Algoritmo IEK

38

Algoritmos lineales paso a paso en SL

Algoritmo IEK

39

Algoritmos lineales paso a paso en SL

Algoritmo IEK

40

Algoritmos lineales paso a paso en SL

Algoritmo IEK

41

Algoritmos lineales paso a paso en SL

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

!Gracias por la atencin! Preguntas?

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

You might also like