TEMA 1: Introduccion Conceptos Generales

3y ago
50 Views
2 Downloads
1.25 MB
26 Pages
Last View : 3d ago
Last Download : 3m ago
Upload by : Audrey Hope
Transcription

TEMA 1:Introduccion – Conceptos generales1Objetivos de aprendizajeDominando los temas del presente capitulo Usted podrá.1. Conocer la terminología propia de la disciplina.2. Definir y comprender claramente conceptos específicos muchas veces mal definidos3. Comprender el valor de la abstracción.4. Dar valor a la eficiencia en las soluciones5. Introducirse en la notación algorítmica y a la forma e encarar los problemas deprogramación6. Introducirse al LP C Contextualizacion de la materia Algoritmos y estructura de datosDoctor en Educación – Posgrado PosDoctoralCodigo 082021 – Area Programacion.Magister en Doc. Universitaria – Esp. Ing. En SistemasPlantel docenteLic. En Sistemas – Prof. Diciplinas Industrialeso Director de no@yahoo.com twitter @orbruno Dr. Oscar BRUNOo Profesores Esp. Lic. Alejandro Frankel, Esp. Ing. Jose Maria Sola, Lic. Hugo Cuello, Ing.Yamila Zakhem, Mg. Ing. Gabriela Sanroman, Ing. Adrian Fiore, Ing. PabloMendez, Ing. Pablo Sznajdleder, Mg. C.C. Marcelo Lipkin, Lic. MartinAgüero, Ing. Santiago Ferreiroso Auxiliares Ing. Natalia Perez Lopez, Ing. Diego Juan, Ing. Roxana Leytuz.Contextualización Mediante la MatrizTransversalContenidosEl objetivo formar profesionales con dominio profundo del paradigma imperativo1. Habilidades: los programadores imperativos deben disponer de las siguienteshabilidades:a. Lógica para informáticos: (LI).b. Resolución de problemas: (RP).c. Conocimiento de terminología propia de la disciplina (TD).d. Tipos de datos::i. Datos simples (DS).ii. Estructura registro (ER).Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNOPágina 1

iii. Archivos: Archivos de texto (AT) y Archivos Binarios (AB).iv. Estructuras indexadas (EI).v. Estructuras enlazadas lineales (EL).vi. Estructuras arbóreas. (EA).vii. Grafos (GR)viii. Combinaciones complejas de estructuras de datos (CC).e. Patrones algorítmicos:i. Patrones de inicialización, inserción, búsqueda y recorridoii. Patrones de ordenamiento, agrupaciones, carga y modificacionesf. Implementación en lenguajes de programación.i. Iniciales con utilización de módulos (IM)ii. Con utilización de bibliotecas (TAD) (IT)iii. Orientada a objetos (IO)iv. Otros paradigmas (OP)Matriz Transversal de Contenidos propuesta:GeneralesLIMDAyESSLPPRPTDTipos de LTAALTAIOOPAprender programacióncreatividadcompromisohabilidadII CC CI ICMetodosAlgoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNOPágina 2

1. De asimilación y desarrolloa. Inductivoi. Básicoii. Construcción de conceptosiii. De investigaciónb. De instruccióni. Transmisionii. Significativoiii. Debatec. De cambio conceptuali. Discusionii. Propuesta de cambios2. Para la acción practicaa. Estudio de casosb. Solución de problemasc. Construcción de problematizacionesd. Proyectose. Tutorias3. Para el desarrollo de habilidades operativasa. Demostraciones y ejercitacionesb. Simulaciones4. Desarrollo personala. Basado en fortalezasb. Fijando metasc. Motivación y cambioTerminos y frasesInformáticaDisciplina del estudio sistematizado de los procesos algorítmicos que describen y transformaninformación, su teoría, análisis, diseño, eficiencia, implementación y aplicación.ProgramaciónLa programación es una actividad transversal asociada a cualquier área de la informática.La creación de software es una actividad de ingeniería y requiere la aplicación de principioscientíficos.La programación es una actividad en la que la creatividad juega un rol primordialPrograma:Conjunto de instrucciones, ejecutables sobre una computadora, que permite cumplir una funciónespecifica.DefiniciónPrograma: conjunto de instrucciones no activas almacenadas en un computador, se vuelve tarea apartir de que se selecciona para su ejecución y permite cumplir una función específica. Un procesoes un programa en ejecución.En principio las tareas más importantes a la que se enfrenta quien debe escribir programas encomputadoras son:Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNOPágina 3

1. Definir el conjunto de instrucciones cuya ejecución ordenada conduce a la solución.2. Elegir la representación adecuada de los datos del problema.Partes de un programaLos componentes básicos son las instrucciones y los datos.Las instrucciones o sentencias representan las operaciones que se ejecutaran al interpretar elprograma.Los datos son valores de información de los que se necesita disponer y/o transformar paraejecutar la función del programa.Los datos están representados simbólicamente por un nombre que se asocia con una direcciónúnica de memoria.Un programa se corresponde con una transformación de datos.El programa transforma los datos debiendo llegar al resultado esperado produciendo el nuevocontexto caracterizado por las poscondiciones.DatoRepresentación de un objeto el mundo real mediante el cual se pueden modelizar aspectos de unproblema que se desea resolver con un programa en una computadora.DefiniciónDato representación de un objeto el mundo real mediante el cual se pueden modelizar aspectosde un problema que se desea resolver con un programa en una computadora. dato - objeto atributo valor AbstracciónProceso de análisis del mundo real con el propósito de interpretar los aspectos esenciales de unproblema y expresarlo en términos precisos.ModelizacionAbstraer un problema del mundo real y simplificar su expresión, tratando de encontrar losaspectos principales que se pueden resolver, requerimientos, los datos que se han de procesar y elcontexto del problema.PrecondiciónInformación conocida como verdadera antes de iniciar el programa.PoscondiciónInformación que debiera ser verdadera al cumplir un programa, si se cumple adecuadamente elrequerimiento pedido.EspecificaciónProceso de analizar problemas del mundo real y determinar en forma clara y concreta el objetivoque se desea. Especificar un problema significa establecer en forma univoca el contexto, lasprecondiciones el resultado esperado, del cual se derivan las poscondiciones.Lenguaje de programaciónConjunto de instrucciones permitidas y definidas por sus reglas sintácticas y su valor semánticopara la expresión de soluciones de problemas.Del problema real a su solución por computadorasAnalizando un problema del mundo real se llega a la modelización del problema por medio de laabstracción.A partir del modelo se debe elaborar el análisis de la solución como sistema, esto significa ladescomposición en módulos. Estos módulos deben tener una función bien definida.Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNOPágina 4

La modularización es muy importante y no solo se refiere a los procesos a cumplir, sino también ala distribución de los datos de entrada, salida y los datos intermedios necesarios para alcanzar lasolución.Etapas de resolución de problemas con computadoras.1. Análisis del problema: en su contexto del mundo real.2. Diseño de la solución: Lo primero es la modularización del problema, es decir ladescomposición en partes con funciones bien definidas y datos propios estableciendo lacomunicación entre los módulos.3. Especificación del algoritmo: La elección adecuada del algoritmo para la función de cadamodulo es vital para la eficiencia posterior.4. Escritura del programa: Un algoritmo es una especificación simbólica que debe convertirseen un programa real sobre un lenguaje de programación concreto.5. Verificación: una vez escrito el programa en un lenguaje real y depurado los erroressintácticos se debe verificar que su ejecución conduzca al resultado deseado con datosrepresentativos del problema real.Programación modular – programación estructuradaSe dice modular porque permite la descomposición del problema en módulos y estructurada solopermite la utilización de tres estructuras: Asignación, selección, repetición.AlgoritmoConjunto de reglas, ordenadas de forma lógica, finito y preciso para la solución de un problema,con utilización o no de un computador.DefiniciónAlgoritmoEspecificación rigurosa (debe expresarse en forma univoca) de la secuencia de pasos,instrucciones, a realizar sobre un autómata para alcanzar un resultado deseado en un tiempofinito. Esto último supone que el algoritmo empieza y termina, en el caso de los que no son detiempo finito (ej. Sistemas en tiempo real) deben ser de número finito de instrucciones.Características de un algoritmoUn algoritmo debe tener al menos las siguientes características:1. Ser preciso: las operaciones o pasos del algoritmo deben desarrollarse en un ordenestricto.2. Ser definido. El resultado depende estrictamente de los datos suministrados. Si seejecuta con un mismo conjunto de datos de entrada, el resultado deberá ser siempre elmismo.3. Ser finito: El número de pasos de un algoritmo debe ser limitado.4. Presentación formal: para que el algoritmo sea entendido es necesario que se exprese enalguna de las formas comúnmente aceptadas.5. Corrección: el algoritmo debe ser correcto, es decir debe satisfacer la necesidad osolucionar el problema para el cual fue diseñado.6. Eficiencia: hablar de eficiencia o complejidad de un algoritmo es evaluar los recursos decómputo que requiere para almacenar datos y para ejecutar operaciones frente albeneficio que ofrece. En cuanto menos recursos requiere será más eficiente el algoritmo.Propiedades de los algoritmos1. Especificación precisa de la entrada:.2. Especificación precisa de cada instrucción:3. Un algoritmo debe ser exacto y correcto:Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNOPágina 5

4. Un algoritmo debe tener etapas bien definidas y concretas.5. Debe ser fácil de entender, codificar y depurar.6. Debe hacer uso eficiente de los recursos de la computadoraEficiencia de un algoritmoSe pueden tener varias soluciones algorítmicas para un mismo problema, sin embargo el uso derecursos y la complejidad para cada una de las soluciones puede ser muy diferente.La eficiencia puede definirse como una métrica de calidad de los algoritmos asociada con lautilización optima de los recursos del sistema de cómputo donde se ejecutara el algoritmo, suclaridad y el menor grado de complejidad que se pueda alcanzar. Hacer todo tan simple como sepueda, no más (Albert Einstein).Complejidades más comunes1.2.3.4.Complejidad constante: se expresa como O(1).Complejidad logarítmica: Es una complejidad eficiente.Complejidad lineal: se encuentra en los ciclos simples.Complejidad cuadrática, Complejidad cúbica, Complejidad exponencial:Léxico y algoritmoPara escribir un algoritmo deben seguirse un conjunto de pasos básicos1. Comprender el problema2. Identificar los elementos a incluir en el léxico: constantes, tipos, variables y acciones.3. Encontrar la forma de secuenciar las acciones para obtener el resultado.4. Al organizar las acciones en el tercer paso puede ocurrir que se detecte que faltanelementos en el léxico o que algún aspecto del problema no ha sido bien comprendido locual requeriría volver a los pasos anteriores.5. Nunca la solución aparece en el primer intento:a. Escribir el léxico,b. escribir la primera versión,c. incluir en el léxico nuevos elementos que faltaban,d. escribir la nueva versión del algoritmo y así sucesivamenteEstructura de un algoritmoEstructura de un algoritmoLEXICO {Léxico Global del algoritmo}{Declaración de tipos, constantes, variables y acciones}Acción 1PRE {Precondición de la acción 1}POS {Poscondición de la acción 1}LEXICO {Léxico local, propio de la acción 1}Declaraciones localesALGORITMO {Implementación de la acción 1}{Secuencia de instrucciones de la acción 1}FIN {Fin implementación algoritmo de la acción 1}ALGORITMOPRE {Precondición del algoritmo principal}POS {Poscondición del algoritmo principal}{Secuencia de instrucciones del algoritmo principal}FIN {Fin del algoritmo principal}Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNOPágina 6

Proceso ComputacionalSe refiere a un algoritmo en ejecución. La ejecución de las instrucciones origina una serie deacciones sobre elementos de memoria que representan información manejada por el algoritmo. Anivel algorítmico se asigna un nombre a cada información de modo de manejar un par nombreDefinicionesPrograma: Algoritmo escrito en un lenguaje cuyas instrucciones son ejecutables por unacomputadora y que están almacenados en un disco.Tarea: Un programa se vuelve tarea a partir del momento que se lo selecciona para su ejecución yhasta que esta termina.Proceso: programa en ejecución, se ha iniciado pero aún no ha finalizado.Lenguajes de programación: notación que permite escribir programas a mayor nivel deabstracción que los lenguajes de máquina. Sus instrucciones deben ser traducidas a lenguaje demáquina.Lenguaje de máquina: Instrucciones que son ejecutables por el hardware de una computadora.Paradigmas de programaciónParadigma: Colección de conceptos que guían el proceso de construcción de un programa. Estosconceptos controlan la forma en que se piensan y formulan los programas.Imperativo – Procedural – Objetos.Declarativo – Funcional – Lógico.Dato Información ConocimientoDato: objeto atributo valor sin interpretar.Información: añade significado al dato.Conocimiento: Añade propósito y capacidad a la información. Potencial para generar acciones.ProblemaEnunciado con una incógnita, la solución es encontrar el valor de esa incógnita.Problema computacional o algorítmico: tarea ejecutada por una computadora con unaespecificación precisa de los datos de entrada y de los resultados requeridos en función de estos.Clase de problemasNo computables: No existe un algoritmo.ComputablesTratables: Existe un algoritmo eficiente.Intratable: No existe algoritmo eficiente.Expresiones Sentencias LéxicoExpresiones: secuencia de operadores y operandos que se reduce a un solo valor.Sentencias: acción produce un efecto, puede ser primitiva o no primitiva.Léxico: Descripción del conjunto de acciones e informaciones a partir de la cual se expresa elesquema de comportamiento del algoritmo.Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNOPágina 7

Representaciones gráficas de algoritmosDiagrama de Nassi-SneidermanCondición 1TFAcción 1Acción 5Acción 2Mientras condición 3Condición 2TAcción 6FAcción 3Acción 7Acción 8Acción 9Acción 4Acción 10Acción 11Acción 12Repetir hasta condición 4Diagramas de JacksonFigura 2.1.aAlgoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNOPágina 8

Estructuras secuencialesDiagrama de LindseyAccionesLindseyComienzoCAsignaciónexterna deentradaLista dev ariablesAsignaciónexterna de salidaLiterales, listade v ariablesAsignacioninternaidentificador expresiónCond / exp.logEstructuras selectivasSelección simpleSelecciónmúltipleFinv ar / exp.arit / f uncFAlgoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNOPágina 9

Llaves de �nAlgoritmo1Case sa;HacerAlgoMasfwrite( )Identiffread( )cin cout Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNOPágina 10

ción rigurosa (debe expresarse en forma univoca) de la secuencia de pasos,instrucciones, a realizar sobre un autómata para alcanzar un resultado deseado en un tiempofinito. Esto último supone que el algoritmo empieza y termina, en el caso de los que no son detiempo finito (ej. Sistemas en tiempo real) deben ser de número finito de instrucciones.Programa: Algoritmo escrito en un lenguaje cuyas instrucciones son ejecutables por unacomputadora y que están almacenados en un disco.Tarea: Un programa se vuelve tarea a partir del momento que se lo selecciona para su ejecución yhasta que esta termina.Proceso: programa en ejecución, se ha iniciado pero aún no ha finalizado.Lenguajes de programación: notación que permite escribir programas a mayor nivel deabstracción que los lenguajes de máquina. Sus instrucciones deben ser traducidas a lenguaje demáquina.Lenguaje de máquina: Instrucciones que son ejecutables por el hardware de una computadora.Paradigmas de programaciónParadigma: Colección de conceptos que guían el proceso de construcción de un programa. Estosconceptos controlan la forma en que se piensan y formulan los programas.Imperativo – Procedural – Objetos.Declarativo – Funcional – Lógico.Dato Información ConocimientoDato: objeto atributo valor sin interpretar.Información: añade significado al dato.Conocimiento: Añade propósito y capacidad a la información. Potencial para generar acciones.ProblemaEnunciado con una incógnita, la solución es encontrar el valor de esa incógnita.Problema computacional o algorítmico: tarea ejecutada por una computadora con unaespecificación precisa de los datos de entrada y de los resultados requeridos en función de estos.Clase de problemasNo computables: No existe un algoritmo.ComputablesTratables: Existe un algoritmo eficiente.Intratable: No existe algoritmo eficiente.Expresiones Sentencias LéxicoExpresiones: secuencia de operadores y operandos que se reduce a un solo valor.Sentencias: acción produce un efecto, puede ser primitiva o no primitiva.Léxico: Descripción del conjunto de acciones e informaciones a partir de la cual se expresa elesquema de comportamiento del algoritmo.Representaciones graficasAlgoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNOPágina 11

Tipos de datosDeclaracion struct nombre {int a; int b;} no reserva memoriaDefinicion: int a; reserva memoria1. Identificadora. Nombre reglas de formación (letra)(letra digito)*b. Tipoi. Bytes para la implementaciónii. Interpretación de la secuencia de bitsiii. Conjunto de valoresiv. Conjunto de operaciones2. Estáticosa. Simplesi. Ordinales1. Enteros: int, long, unsigned, signed2. Carácter: char3. Booleanos: booleanii. No ordinales1. Reales: float, double2. Cadenas: char nombre [tamaño]; stringb. Estructurasi. Registros struct nombre{tipo c1; tipo cN;}ii. Array: tipo nombre[tamaño];iii. Archivos FILE* nombrelogico3. Con asignación dinámicaa. Punteros: tipo* nombre. & op. Dirección, *op. indireccionb. Estructuras enlazadasi. Pilasii. Colasiii. ListasAcciones1. Asignacióna. Interna NI Expresion;i. Lvalueii. Expresióniii. Destructivaiv. Asignación a variables booleanasb. Externai. De entrada leer(id). cin id; freadii. De salida imprimir(id). cout id; fwrite2. Análisis de casoa. Simple (evalúa expresiones)if(exp){lista de sentencias}[else{lista de sentencias}]i. Incompletoii. Completob. Múltiple (evalúa ordinales)Switch(ordinal) { case v1:{s1; breack;} .[default:{sd}];}i. IncompletoAlgoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNOPágina 12

ii. Completo3. Repeticióna. Exacta (0.N)i. Índice creciente for( ; ; ){sentencia};ii. Índice decrecienteb. No exactai. Pre condicional (0.N) while(exp){sentencia};1. Expresión lógica evaluada al principio2. Se ejecuta mientras sea verdaderaRequiere nueva asignación al DELii. Pos condicional (1.N) do { sentencia} while(expresión);1. Expresión lógica evaluada al final2. Se ejecuta mientras sea verdadera3. Requiere nueva asignaciónPatrones algorítmicos simplesRepeticiones1) Repetir acciones 100 veces (con incremento del índice)PARA I [1.100] HACERfor(int i 1; i 100; i ) {Acciones que se deben repetirsentencia;FIN PARA}2) Repetir acciones 100 veces (con disminución del índice)PARA I [100.1](-) HACERfor(int i 100; I 1; i--) {Acciones que se deben repetirsentencia;FIN PARA}3) Repetir acciones cantidad de veces leídas previamente (con incremento del índice)(Analice las secuencias y codifique en C)Leer (N) {N representa la cantidad de veces que se quiere hacer la repetición}PARA I [1.100] HACERAcciones que se deben repetirFIN PARA4) Repetir acciones 100 veces (con ciclo pre condicional)Alternativa 1I 1MIENTRAS (I 100) HACERI I 1Acciones que se

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 1 TEMA 1: Introduccion – Conceptos generales 1 Objetivos de aprendizaje Dominando los temas del presente capitulo Usted podrá. 1. Conocer la terminología propia de la disciplina. 2. Definir y comprender claramente conceptos específicos muchas veces mal definidos 3.

Related Documents:

TEMA 1. Introducción a la teoría del color. 1. INTRODUCCIÓN En esta parte del temario realizaremos una introducción a las principales técnicas relacionadas con la teoría del color y su representación en un computador. 2. CONCEPTOS BÁSICOS EN EL DISEÑO Y PRODUCCIÓN DE IMÁGENES POR COMPUTADOR. Introducción

Contenido del curso Tema 1. Sistemas de Producción Lechera en México Tema 2. Características de la raza Holstein Tema 3. Crianza de reemplazos Tema 4. Manejo reproductivo del ganado lechero Tema 5. Alimentación del ganado lechero Tema 6. Manejo sanitario del ganado lechero Tema 7. Producción de leche Tema 8. Construcciones y equipo

sismologÍa e ingenierÍa sÍsmica tema 6: modelos sobre el comportamiento de fallas activas. tema 7: paleosismicidad. tema 8: movimiento sÍsmicos del suelo: dominio temporal y frecuencial. tema 9: peligrosidad sÍsmica y efectos locales. tema 10: vulnerabilidad y riesgo sÍsmico. tema 11: sismometrÍa

INTRODUCCIÓN AL HOME STUDIO 2. SOFTWARE DE AUDIO (PROTOOLS) TEMA 1: INTERFACE TEMA 2: COMANDOS TEMA 3: CONFIGURACIÓN DE SESIÓN TEMA 4: EDICIÓN I 3. PROCESAMIENTO Y MIDI TEMA 1: PRINCIPIOS DEL AUDIO Y PLUGINS - Ecualización - Dinámica - Efectos TEMA 2: INSTRUMENTOS VIRTUALES - Instrumentos orgánicos - Instrumentos sintéticos 4 .

I. Objetivos de la sesión: conocer los conceptos básicos para iniciar el tema de estadística descriptiva. II. Tema: 1. Introducción: Permanentemente recibimos información referente al área en que trabajamos y es necesario hacer uso de ella, puesto que será útil para el proyecto en que estamos trabajando.

Tema 4: Espiritualidad filial, Providencia, abandono en el Padre. Tema 5: La espiritualidad se funda en Cristo. Tema 6: Espiritualidad para un mundo necesitado, esperanza. Tema 7: Espiritualidad es fidelidad a la Palabra de Dios Tema 8: Pedagogía del Espíritu en la liturgia. Tema 9: Donde está la Iglesia allí está el Espíritu de Dios.

ACCESO UNIVERSIDAD Y CICLOS- BIOLOGÍA: TEMA 0 Página 1 TEMA 0: INTRODUCCIÓN A LA QUÍMICA ORGÁNICA 1. INTRODUCCIÓN La química orgánica estudia los compuestos orgánicos, llamados así porque son los constituyentes de la materia orgánica, sustancias de las que están compuestos los seres vivos. El principal elemento en los

Notes and Solutions for: Artifical Intelligence: A Modern Approach: by Stuart Russell and Peter Norvig. John L. Weatherwax Nov 10, 2001 wax@alum.mit.edu 1