Anda di halaman 1dari 35

Algoritmo

Ao: 2006

Ingeniera Tcnica en Electrnica

Profesor: Msc. Cristian Cappo ccappo@cnc.una.py

CLASE #1 20-Febrero-2006

Algoritmo ITE

Modalidad de las clases


Nro. de clases: 30 (puede variar segn eventualidades) Tipo de clases

Exposicin terica, resolucin y discusin de ejercicios en clase. Prueba y depuracin de ejercicios en mquina usando SL y algn compilador de C

Si el nmero de alumnos es menor o igual a 30 (treinta) entonces los exmenes sern en mquina (no en papel).

Algoritmo ITE

Reglamentaciones de la ctedra
Obtencin de derecho a examen final

Al menos 70 % de las tareas entregadas en clase. Obtener el puntaje establecido por la facultad.

La asistencia es opcional aunque es recomendable asistir. Las tareas sern entregadas en papel.

Algoritmo ITE

Contenido programtico

Introduccin Tipo de datos simples, operaciones primitivas y expresiones Estructura general de un programa Cadenas Subprogramas Tipo de datos estructurados y definidos por el usuario Archivos Introduccin a la programacin con lenguaje C

Algoritmo ITE

Herramienta para el desarrollo y prueba los ejercicios algortmicos

Entorno de programacin SL
versin 2 (para Windows)

Todos los ejercicios se resolveran en el lenguaje SL El software pueden obtenerlo del sitio de SL http://www.cnc.una.py/sl

Algoritmo ITE

Bibliografa bsica

Joyanes Aguilar, Luis. Fundamentos de programacin: algoritmos, estructura de datos y objetos. McGraw-Hill, 2003. (nueva adquisicin de la Biblioteca) Joyanes Aguilar, Luis. Fundamentos de ProgramacinAlgoritmos y Estructuras de Datos. McGraw-Hill, 1996. Segovia Silvero, Juan. SL. Introduccin al lenguaje-Referencia 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.

Otras referencias: ver lista de libros entregado por el profesor o en la pgina del curso. Sitio Web del curso : http://clases.cnc.una.py/pol/ie/alg
Algoritmo ITE

Introduccin (contenido)
Problemas, Algoritmos y programas Anlisis de problemas Caractersticas y representacin de algoritmos Conceptos bsicos sobre lenguajes de programacin Pseudocdigo y lenguaje SL

Algoritmo ITE

Introduccin (contenido)
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 despues 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 ITE

Introduccin (cont.)
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) Es una posible solucin a un problema. Es un mtodo o proceso para resolver el problema (siempre que cumpla ciertas condiciones) Propiedades de un algoritmo 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 un ciclo infinito.
Algoritmo ITE

Introduccin
Un problema puede ser resuelto por varios algoritmos.
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: a) inicio del algoritmo b) leer base y altura c) calcular la superficie s = ( base * altura) / 2 d) imprimir superfice e) fin del algoritmo Pasos bien definidos

Algoritmo ITE

Introduccin (cont)
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 )

Algoritmo ITE

Introduccin (cont.)
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 ITE

Introduccin
Anlisis del Problema Antes de elaborar un algoritmo se debe hacer un anlisis del problema-------->Interpretarlo. Algunas recomendaciones para el anlisis 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 (tipo). Tener en claro las restricciones del problema...(siempre que se expliciten los mismos). Entender perfectamente la salida requerida.

Algoritmo ITE

Introduccin
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 ITE

Introduccin
Representacin de algoritmos Diagramas de flujo (generalmente ya no se utiliza) Diagramas de Nassi-Shneiderman (N-S) (es un tipo de diagramacin) Pseudocdigo Diagrama de Flujo Inicio base, altura sup<-(base*altura)/2 sup Fin
Algoritmo ITE

Pseudocdigo Inicio leer base, altura sup <- (base*altura)/2 escribir sup Fin

Introduccin
Representacin de algoritmos en el curso: lenguaje SL Porqu usamos SL? Su sintaxis es muy similar a pseudocdigo. Mucho ms simple que otros lenguajes tradicionales, obvindose detalles innecesarios para un curso introductorio de algoritmos.

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 ITE

Introduccin

Pseudocdigo

SL

programa sup_triang var Inicio base,altura: numerico sup : numerico leer base, altura sup <- (base*altura)/2 inicio leer(base, altura) escribir sup sup = (base*altura)/2 Fin imprimir(sup) fin

Algoritmo ITE

Introduccin
Conceptos generales asociados a los Lenguajes de programacin Memoria Componente del computador destinada a almacenar datos y cdigo de programas temporal ( memoria principal) o permanente ( memoria secundaria). Variable Regin de memoria (principal) que puede ser accedida mediante un nombre. Su valor puede ser cambiado. Constantes literales Cualquier nmero o cadena que forma parte del texto del programa. Es un valor en si mismo y no puede cambiar. Es almacenado como parte del programa.

Algoritmo ITE

Introduccin (cont.)
Conceptos generales asociados a los Lenguajes de programacin Constantes nominales Constantes que son identificables por un nombre. En su definicin se asocian con una constante literal. Identificador Nombre que es asignado a variables, funciones o procedimientos, a constantes nominales o nombre de programa. En SL Los identificadores deben comenzar con una letra o con '_'. No deben tener espacios. Pueden tener hasta 32 caracteres. Maysculas y minsculas son diferentes.

Algoritmo ITE

Introduccin (cont.)
Conceptos generales asociados a los Lenguajes de programacin Expresin Es la combinacin de constantes, variables, operadores y nombre de funciones. Se encuentran generalmente a la derecha de una asignacin. Cada expresin toma un valor que se determina evaluando los valores de las variables y constantes implicadas, y aplicando los operadores determinados.

Algoritmo ITE

Introduccin (cont.)
Conceptos generales asociados a los Lenguajes de programacin Expresin(cont.) Una expresin siempre consta de operandos y operadores. Segn sea el tipo de operandos que se manipulan se clasifican en: expresiones aritmticas expresiones relacionales expresiones lgicas expresiones de cadenas Ejemplo de expresiones a + b + c 1 + 20 + a + 40 * 100 pot(30) + abs(-10) ^ 20 Juan + , Perez
Algoritmo ITE

Introduccin (cont.)
Conceptos generales asociados a los Lenguajes de programacin

Operadores
Aritmticos: +, - , / , * , ^ (exponenciacin), mod. Siempre retornan un valor aritmtico. Booleanos o lgicas: and, or, not. Implica operandos lgicos o expresiones relacionales. Retornan siempre un valor lgico. Relacionales: ==, < , > , >= , <= , <>. Implica operandos numricos o de cadena. Retornan siempre un valor lgico. Asignacin: =
Algoritmo ITE

Introduccin (cont.)
Conceptos generales asociados a los Lenguajes de programacin Precedencia de operadores
Indican

en que orden sern evaluados los operadores. Cada operador tiene un peso de precedencia. reglas que define la precedencia se denominan reglas de precedencia. lenguaje de programacin define su propia regla de precedencia.

Las

Cada

Cuando

un operador tiene la misma precedencia se aplica la regla de asociativad que es de izquierda a derecha como en matemtica (en SL es tambin de izquierda a derecha)

Algoritmo ITE

Introduccin (cont.)
Conceptos generales asociados a los Lenguajes de programacin Precedencia de operadores (cont.) Ejemplo: Que valor tienen las siguientes expresiones 3 + 6 * 8 8 + 5 + 6 + 7 * 3 * 40 / 20 Es posible parentizar la expresin de manera a forzar la precedencia o clarificar la expresin Ejemplo: (3 + 6) * 8 ==> forzar (8 + 5 + 6 + (((7 * 3) * 40)/ 20)) ==> clarificar

Algoritmo ITE

Introduccin (cont.)
Conceptos generales asociados a los Lenguajes de programacin Tipos bsicos de datos Los tipos bsicos de datos para este curso son numrico : -1.7E-308 a 1.7E+308. cadena lgico : secuencia de caracteres ASCII. : TRUE o FALSE o SI o NO .

Estos son los tipos usados en el lenguaje SL.

Algoritmo ITE

Introduccin (cont.)
Asignacin de variables Permite el cambio de valor de una variables. Con esto se accede al lugar de memoria fsica y se altera el valor de la regin de memoria asociada con la variable. Ejemplos: a = 10 Se asigna el valor 10 a la variable numrica identificada con el nombre a a = 20 * 30 Se asigna el valor resultante de la expresin 20 * 30 a la variable numrica identificada con el nombre a OBS: A la izquierda de una asignacin siempre debe estar una variable (mapeable a memoria)
Algoritmo ITE

Introduccin (cont.)

Estructura general de un programa SL programa sumar_1010 var a, b : numerico inicio b = 1000 a = b + 10 fin

Algoritmo ITE

Introduccin (cont.)

Estructura general de un programa SL (cont.) programa sumar_1010 Palabra reservada que indica que var continuacin se encuentra el nombre a, b : numerico del programa. inicio b = 1000 a = b + 10 fin

Algoritmo ITE

Introduccin (cont.)

Estructura general de un programa SL (cont.) programa sumar_1010 var a, b : numerico inicio b = 1000 a = b + 10 fin

Identificador del programa

Algoritmo ITE

Introduccin (cont.)

Estructura general de un programa SL (cont.) programa sumar_1010 var a, b : numerico inicio b = 1000 a = b + 10 fin Indica que a continuacin se declararn las variables

Algoritmo ITE

Introduccin (cont.)

Estructura general de un programa SL (cont.) 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.

Algoritmo ITE

Introduccin (cont.)

Estructura general de un programa SL (cont.) 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 ITE

Introduccin (cont.)

Estructura general de un programa SL (cont.) programa sumar_1010 var a, b : numerico inicio b = 1000 a = b + 10 fin

Cuerpo del programa Cada sentencia esta separada por un ENTER

Algoritmo ITE

Introduccin (cont.)

Estructura general de un programa SL (cont.) 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 ITE

Introduccin (cont.)
Vista del entorno de programacin SL

Algoritmo ITE