tema 1: introduccion conceptos generales · pdf filecombinaciones complejas de estructuras de...

26
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. Comprender el valor de la abstracción. 4. Dar valor a la eficiencia en las soluciones 5. Introducirse en la notación algorítmica y a la forma e encarar los problemas de programación 6. Introducirse al LP C++ Contextualizacion de la materia Algoritmos y estructura de datos Codigo 082021 Area Programacion. Plantel docente o Director de Catedra Dr. Oscar BRUNO o Profesores Esp. Lic. Alejandro Frankel, Esp. Ing. Jose Maria Sola, Lic. Hugo Cuello, Ing. Yamila Zakhem, Mg. Ing. Gabriela Sanroman, Ing. Adrian Fiore, Ing. Pablo Mendez, Ing. Pablo Sznajdleder, Mg. C.C. Marcelo Lipkin, Lic. Martin Agüero, Ing. Santiago Ferreiros o Auxiliares Ing. Natalia Perez Lopez, Ing. Diego Juan, Ing. Roxana Leytuz. Contextualización Mediante la MatrizTransversalContenidos El objetivo formar profesionales con dominio profundo del paradigma imperativo 1. Habilidades: los programadores imperativos deben disponer de las siguientes habilidades: 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). Doctor en Educación Posgrado PosDoctoral Magister en Doc. Universitaria Esp. Ing. En Sistemas Lic. En Sistemas Prof. Diciplinas Industriales https://droscarbruno.wordpress.com [email protected] twitter @orbruno

Upload: vukiet

Post on 05-Feb-2018

263 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TEMA 1: Introduccion Conceptos generales · PDF fileCombinaciones complejas de estructuras de ... II CC CI IC Metodos ... Las instrucciones o sentencias representan las operaciones

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. Comprender el valor de la abstracción. 4. Dar valor a la eficiencia en las soluciones 5. Introducirse en la notación algorítmica y a la forma e encarar los problemas de

programación 6. Introducirse al LP C++

Contextualizacion de la materia Algoritmos y estructura de datos

Codigo 082021 – Area Programacion.

Plantel docente o Director de Catedra

Dr. Oscar BRUNO o Profesores

Esp. Lic. Alejandro Frankel, Esp. Ing. Jose Maria Sola, Lic. Hugo Cuello, Ing. Yamila Zakhem, Mg. Ing. Gabriela Sanroman, Ing. Adrian Fiore, Ing. Pablo Mendez, Ing. Pablo Sznajdleder, Mg. C.C. Marcelo Lipkin, Lic. Martin Agüero, Ing. Santiago Ferreiros

o Auxiliares Ing. Natalia Perez Lopez, Ing. Diego Juan, Ing. Roxana Leytuz.

Contextualización Mediante la MatrizTransversalContenidos

El objetivo formar profesionales con dominio profundo del paradigma imperativo 1. Habilidades: los programadores imperativos deben disponer de las siguientes

habilidades:

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).

Doctor en Educación – Posgrado PosDoctoral Magister en Doc. Universitaria – Esp. Ing. En Sistemas

Lic. En Sistemas – Prof. Diciplinas Industriales https://droscarbruno.wordpress.com

[email protected] twitter @orbruno

Page 2: TEMA 1: Introduccion Conceptos generales · PDF fileCombinaciones complejas de estructuras de ... II CC CI IC Metodos ... Las instrucciones o sentencias representan las operaciones

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 2

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 recorrido

ii. Patrones de ordenamiento, agrupaciones, carga y modificaciones

f. 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:

Generales Tipos de datos Imp.

LI RP TD DS ER AT AB EI EL EA EG CC IT T P

MD ALTA BAJA MED. BAJA BAJA BAJA BAJA BAJA BAJA BAJA BAJA NO NO NO NO

AyE ALTA ALTA ALTA ALTA ALTA ALTA ALTA ALTA ALTA MED. BAJA ALTA MED. MED. IMIT

SSL ALTA MED. ALTA BAJA MED. MED. MED. MED. BAJA MED. ALTA MED. ALTA ALTA IT

PP ALTA MED. ALTA BAJA BAJA MED. MED. MED. BAJA MED. BAJA BAJA ALTA ALTA IOOP

Aprender programación

II CC CI IC

Metodos

creatividad

compromiso habilidad

Page 3: TEMA 1: Introduccion Conceptos generales · PDF fileCombinaciones complejas de estructuras de ... II CC CI IC Metodos ... Las instrucciones o sentencias representan las operaciones

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 3

1. De asimilación y desarrollo

a. Inductivo

i. Básico

ii. Construcción de conceptos

iii. De investigación

b. De instrucción

i. Transmision

ii. Significativo

iii. Debate

c. De cambio conceptual

i. Discusion

ii. Propuesta de cambios

2. Para la acción practica

a. Estudio de casos

b. Solución de problemas

c. Construcción de problematizaciones

d. Proyectos

e. Tutorias

3. Para el desarrollo de habilidades operativas

a. Demostraciones y ejercitaciones

b. Simulaciones

4. Desarrollo personal

a. Basado en fortalezas

b. Fijando metas

c. Motivación y cambio

Terminos y frases Informática Disciplina del estudio sistematizado de los procesos algorítmicos que describen y transforman información, su teoría, análisis, diseño, eficiencia, implementación y aplicación.

Programación La 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 principios científicos. La programación es una actividad en la que la creatividad juega un rol primordial Programa: Conjunto de instrucciones, ejecutables sobre una computadora, que permite cumplir una función especifica.

Definición Programa: conjunto de instrucciones no activas almacenadas en un computador, se vuelve tarea a partir de que se selecciona para su ejecución y permite cumplir una función específica. Un proceso es un programa en ejecución. En principio las tareas más importantes a la que se enfrenta quien debe escribir programas en computadoras son:

Page 4: TEMA 1: Introduccion Conceptos generales · PDF fileCombinaciones complejas de estructuras de ... II CC CI IC Metodos ... Las instrucciones o sentencias representan las operaciones

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 4

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 programa Los componentes básicos son las instrucciones y los datos. Las instrucciones o sentencias representan las operaciones que se ejecutaran al interpretar el programa. Los datos son valores de información de los que se necesita disponer y/o transformar para ejecutar 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 nuevo contexto caracterizado por las poscondiciones.

Dato Representación de un objeto el mundo real mediante el cual se pueden modelizar aspectos de un problema que se desea resolver con un programa en una computadora.

Definición Dato representación de un objeto el mundo real mediante el cual se pueden modelizar aspectos de un problema que se desea resolver con un programa en una computadora. <dato> -> <objeto><atributo><valor>

Abstracción Proceso de análisis del mundo real con el propósito de interpretar los aspectos esenciales de un problema y expresarlo en términos precisos.

Modelizacion Abstraer un problema del mundo real y simplificar su expresión, tratando de encontrar los aspectos principales que se pueden resolver, requerimientos, los datos que se han de procesar y el contexto del problema.

Precondición Información conocida como verdadera antes de iniciar el programa.

Poscondición Información que debiera ser verdadera al cumplir un programa, si se cumple adecuadamente el requerimiento pedido.

Especificación Proceso de analizar problemas del mundo real y determinar en forma clara y concreta el objetivo que se desea. Especificar un problema significa establecer en forma univoca el contexto, las precondiciones el resultado esperado, del cual se derivan las poscondiciones.

Lenguaje de programación Conjunto de instrucciones permitidas y definidas por sus reglas sintácticas y su valor semántico para la expresión de soluciones de problemas.

Del problema real a su solución por computadoras Analizando un problema del mundo real se llega a la modelización del problema por medio de la abstracción. A partir del modelo se debe elaborar el análisis de la solución como sistema, esto significa la descomposición en módulos. Estos módulos deben tener una función bien definida.

Page 5: TEMA 1: Introduccion Conceptos generales · PDF fileCombinaciones complejas de estructuras de ... II CC CI IC Metodos ... Las instrucciones o sentencias representan las operaciones

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 5

La modularización es muy importante y no solo se refiere a los procesos a cumplir, sino también a la distribución de los datos de entrada, salida y los datos intermedios necesarios para alcanzar la solució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 la

descomposición en partes con funciones bien definidas y datos propios estableciendo la comunicación entre los módulos.

3. Especificación del algoritmo: La elección adecuada del algoritmo para la función de cada modulo es vital para la eficiencia posterior.

4. Escritura del programa: Un algoritmo es una especificación simbólica que debe convertirse en 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 errores sintácticos se debe verificar que su ejecución conduzca al resultado deseado con datos representativos del problema real.

Programación modular – programación estructurada Se dice modular porque permite la descomposición del problema en módulos y estructurada solo permite la utilización de tres estructuras: Asignación, selección, repetición. Algoritmo Conjunto 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ón Algoritmo Especificació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 tiempo finito. Esto último supone que el algoritmo empieza y termina, en el caso de los que no son de tiempo finito (ej. Sistemas en tiempo real) deben ser de número finito de instrucciones.

Características de un algoritmo Un algoritmo debe tener al menos las siguientes características:

1. Ser preciso: las operaciones o pasos del algoritmo deben desarrollarse en un orden estricto.

2. Ser definido. El resultado depende estrictamente de los datos suministrados. Si se ejecuta con un mismo conjunto de datos de entrada, el resultado deberá ser siempre el mismo.

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 en

alguna de las formas comúnmente aceptadas. 5. Corrección: el algoritmo debe ser correcto, es decir debe satisfacer la necesidad o

solucionar el problema para el cual fue diseñado. 6. Eficiencia: hablar de eficiencia o complejidad de un algoritmo es evaluar los recursos de

cómputo que requiere para almacenar datos y para ejecutar operaciones frente al beneficio que ofrece. En cuanto menos recursos requiere será más eficiente el algoritmo.

Propiedades de los algoritmos 1. Especificación precisa de la entrada:. 2. Especificación precisa de cada instrucción: 3. Un algoritmo debe ser exacto y correcto:

Page 6: TEMA 1: Introduccion Conceptos generales · PDF fileCombinaciones complejas de estructuras de ... II CC CI IC Metodos ... Las instrucciones o sentencias representan las operaciones

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 6

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 computadora

Eficiencia de un algoritmo Se pueden tener varias soluciones algorítmicas para un mismo problema, sin embargo el uso de recursos 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 la utilización optima de los recursos del sistema de cómputo donde se ejecutara el algoritmo, su claridad y el menor grado de complejidad que se pueda alcanzar. Hacer todo tan simple como se pueda, no más (Albert Einstein).

Complejidades más comunes 1. Complejidad constante: se expresa como O(1). 2. Complejidad logarítmica: Es una complejidad eficiente. 3. Complejidad lineal: se encuentra en los ciclos simples. 4. Complejidad cuadrática, Complejidad cúbica, Complejidad exponencial:

Léxico y algoritmo Para escribir un algoritmo deben seguirse un conjunto de pasos básicos

1. Comprender el problema 2. 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 faltan

elementos en el léxico o que algún aspecto del problema no ha sido bien comprendido lo cual 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í sucesivamente

Estructura de un algoritmo Estructura de un algoritmo LEXICO {Léxico Global del algoritmo} {Declaración de tipos, constantes, variables y acciones} Acción 1 PRE {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 locales ALGORITMO {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} ALGORITMO PRE {Precondición del algoritmo principal} POS {Poscondición del algoritmo principal} {Secuencia de instrucciones del algoritmo principal} FIN {Fin del algoritmo principal}

Page 7: TEMA 1: Introduccion Conceptos generales · PDF fileCombinaciones complejas de estructuras de ... II CC CI IC Metodos ... Las instrucciones o sentencias representan las operaciones

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 7

Proceso Computacional Se refiere a un algoritmo en ejecución. La ejecución de las instrucciones origina una serie de acciones sobre elementos de memoria que representan información manejada por el algoritmo. A nivel algorítmico se asigna un nombre a cada información de modo de manejar un par nombre-

Definiciones Programa: Algoritmo escrito en un lenguaje cuyas instrucciones son ejecutables por una computadora 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 y hasta 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 de abstracción que los lenguajes de máquina. Sus instrucciones deben ser traducidas a lenguaje de máquina. Lenguaje de máquina: Instrucciones que son ejecutables por el hardware de una computadora. Paradigmas de programación Paradigma: Colección de conceptos que guían el proceso de construcción de un programa. Estos conceptos controlan la forma en que se piensan y formulan los programas. Imperativo – Procedural – Objetos. Declarativo – Funcional – Lógico. Dato Información Conocimiento Dato: <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. Problema Enunciado 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 una especificación precisa de los datos de entrada y de los resultados requeridos en función de estos. Clase de problemas No computables: No existe un algoritmo. Computables Tratables: Existe un algoritmo eficiente. Intratable: No existe algoritmo eficiente. Expresiones Sentencias Léxico Expresiones: 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 el esquema de comportamiento del algoritmo.

Page 8: TEMA 1: Introduccion Conceptos generales · PDF fileCombinaciones complejas de estructuras de ... II CC CI IC Metodos ... Las instrucciones o sentencias representan las operaciones

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 8

Representaciones gráficas de algoritmos

Diagrama de Nassi-Sneiderman

Diagramas de Jackson

Mientras condición 3

Condición 1

Condición 2

Repetir hasta condición 4

Acción 4

Acción 3

Acción 2

Acción 1

Acción 9

Acción 5

Acción 7

Acción 6

Acción 8

Acción 10

Acción 11

Acción 12

T F

T F

Figura 2.1.a

Page 9: TEMA 1: Introduccion Conceptos generales · PDF fileCombinaciones complejas de estructuras de ... II CC CI IC Metodos ... Las instrucciones o sentencias representan las operaciones

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 9

Diagrama de Lindsey

Acciones Lindsey

Comienzo C

Estr

uct

ura

s se

cuen

cial

es

Asignación

externa de

entrada

Lista de

v ariables

Asignación

externa de salida

Literales, lista

de v ariables

Asignacion

interna

Estr

uct

ura

s se

lect

ivas

Selección simple

Cond / exp.log

Selección

múltiple

v ar / exp.arit / f unc

Fin F

identificador expresión

Page 10: TEMA 1: Introduccion Conceptos generales · PDF fileCombinaciones complejas de estructuras de ... II CC CI IC Metodos ... Las instrucciones o sentencias representan las operaciones

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 10

Llaves de Warniel

HacerUnaCosa) Si HacerOtraCosa Condición No Vacio Algoritmo

1 Case Ordinal

2

HacerUnaCosa; Mientras HacerOtraCosa; Condición HacerAlgoMas

fwrite(…)

fread(…)

cout<< cin>>

Identif

Page 11: TEMA 1: Introduccion Conceptos generales · PDF fileCombinaciones complejas de estructuras de ... II CC CI IC Metodos ... Las instrucciones o sentencias representan las operaciones

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 11

Resumen

Definiciones

Definiciones Algoritmo Especificació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 tiempo finito. Esto último supone que el algoritmo empieza y termina, en el caso de los que no son de tiempo 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 una computadora 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 y hasta 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 de abstracción que los lenguajes de máquina. Sus instrucciones deben ser traducidas a lenguaje de máquina. Lenguaje de máquina: Instrucciones que son ejecutables por el hardware de una computadora. Paradigmas de programación Paradigma: Colección de conceptos que guían el proceso de construcción de un programa. Estos conceptos controlan la forma en que se piensan y formulan los programas. Imperativo – Procedural – Objetos. Declarativo – Funcional – Lógico. Dato Información Conocimiento Dato: <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. Problema Enunciado 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 una especificación precisa de los datos de entrada y de los resultados requeridos en función de estos. Clase de problemas No computables: No existe un algoritmo. Computables Tratables: Existe un algoritmo eficiente. Intratable: No existe algoritmo eficiente. Expresiones Sentencias Léxico Expresiones: 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 el esquema de comportamiento del algoritmo.

Representaciones graficas

Page 12: TEMA 1: Introduccion Conceptos generales · PDF fileCombinaciones complejas de estructuras de ... II CC CI IC Metodos ... Las instrucciones o sentencias representan las operaciones

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 12

Tipos de datos Declaracion struct nombre {int a; int b;} no reserva memoria Definicion: int a; reserva memoria 1. Identificador

a. Nombre reglas de formación (letra)(letra + digito)* b. Tipo

i. Bytes para la implementación ii. Interpretación de la secuencia de bits

iii. Conjunto de valores iv. Conjunto de operaciones

2. Estáticos a. Simples

i. Ordinales 1. Enteros: int, long, unsigned, signed 2. Carácter: char 3. Booleanos: boolean

ii. No ordinales 1. Reales: float, double 2. Cadenas: char nombre [tamaño]; string

b. Estructuras i. Registros struct nombre{tipo c1;…tipo cN;}

ii. Array: tipo nombre[tamaño]; iii. Archivos FILE* nombrelogico

3. Con asignación dinámica a. Punteros: tipo* nombre. & op. Dirección, *op. indireccion b. Estructuras enlazadas

i. Pilas ii. Colas

iii. Listas Acciones 1. Asignación

a. Interna NI Expresion; i. Lvalue

ii. Expresión iii. Destructiva iv. Asignación a variables booleanas

b. Externa i. De entrada leer(id). cin >>id; fread

ii. De salida imprimir(id). cout << id; fwrite 2. Análisis de caso

a. Simple (evalúa expresiones) if(exp){lista de sentencias}[else{lista de sentencias}]

i. Incompleto ii. Completo

b. Múltiple (evalúa ordinales) Switch(ordinal) { case v1:{s1; breack;}…..[default:{sd}];}

i. Incompleto

Page 13: TEMA 1: Introduccion Conceptos generales · PDF fileCombinaciones complejas de estructuras de ... II CC CI IC Metodos ... Las instrucciones o sentencias representan las operaciones

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 13

ii. Completo 3. Repetición

a. Exacta (0..N) i. Índice creciente for( ; ; ){sentencia};

ii. Índice decreciente b. No exacta

i. Pre condicional (0..N) while(exp){sentencia}; 1. Expresión lógica evaluada al principio 2. Se ejecuta mientras sea verdadera

Requiere nueva asignación al DEL ii. Pos condicional (1..N) do { sentencia} while(expresión);

1. Expresión lógica evaluada al final 2. Se ejecuta mientras sea verdadera 3. Requiere nueva asignación

Patrones algorítmicos simples

Repeticiones

1) Repetir acciones 100 veces (con incremento del índice)

PARA I [1..100] HACER Acciones que se deben repetir FIN PARA

for(int i = 1; i<=100; i++) { sentencia;

}

2) Repetir acciones 100 veces (con disminución del índice)

PARA I [100..1](-) HACER Acciones que se deben repetir FIN PARA

for(int i = 100; I >= 1; i--) { sentencia;

}

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] HACER Acciones que se deben repetir FIN PARA 4) Repetir acciones 100 veces (con ciclo pre condicional) Alternativa 1 I 1 MIENTRAS (I <= 100) HACER I I + 1 Acciones que se deben repetir FIN PARA Alternativa 2 I 0 MIENTRAS (I < 100) HACER I I + 1 Acciones que se deben repetir FIN PARA

Page 14: TEMA 1: Introduccion Conceptos generales · PDF fileCombinaciones complejas de estructuras de ... II CC CI IC Metodos ... Las instrucciones o sentencias representan las operaciones

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 14

Precaución: Según el valor de inicialización y la relación pueden hacerse 1 mas o 1 menos de lo que realmente quiere hacerse. 5) Repetir acciones N veces (con ciclo pre condicional) Alternativa 1 Leer(N) I 1 MIENTRAS (I <= N) HACER I I + 1 Acciones que se deben repetir FIN MIENTRAS Alternativa 2 Leer (N) I 0 MIENTRAS (I < N) HACER I I + 1 Acciones que se deben repetir FIN MIENTRAS 6) Repetir acciones N veces (con ciclo pos condicional) Recordar que esta secuencia se ejecuta al menos una vez Leer (N) I 0 HACER I I + 1 Acciones que se deben repetir MIENTRAS( I < N) INTERCAMBIO (Dados dos identificadores intercambiar sus valores) Coloca Valor1 en Valor2 y viceversa. Requiere un identificador auxiliar Auxiliar Valor1 {Contiene el primer valor} Valor1 Valor2 {Cambia el valor del primero por el que está en el segundo} Valor2 Auxiliar {Asigna al segundo valor el que originalmente tenía el primero)

//implementación en C++

void intercambio(int &valor1, int &valor2){

int auxiliar = valor1;

valor1 = valor2;

valor2 = auxiliar;

return;

}

//implementacion con plantillas

template <typename T> void intercambio(T &valor1, T &valor2)

{

T auxiliar = valor1;

valor1 = valor2;

valor2 = auxiliar;

return;

}

Page 15: TEMA 1: Introduccion Conceptos generales · PDF fileCombinaciones complejas de estructuras de ... II CC CI IC Metodos ... Las instrucciones o sentencias representan las operaciones

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 15

Utilizar repeticiones para buscar un máximo Para la búsqueda de un máximo se requiere

Identificadores Para las lecturas Para contener el máximo Debe inicializarse Con un primer valor arbitrario (razonablemente chico) Con un valor centinela Con la primer lectura.

1) Dado un conjunto de 100 valores enteros y positivos buscar el máximo Alternativa 1 Maximo = 0 {inicialización con valor arbitrario} PARA I [1..100] Leer(Valor)

SI (Valor > Maximo) Entonces Maximo Valor FIN PARA. Alternativa 2 {inicialización con la primer lectura} Leer (Valor) Maximo = Valor PARA I [1..99] {también I[2..100] realiza 99 repeticiones} Leer(Valor)

SI (Valor > Maximo) Entonces Maximo Valor FIN PARA. Alternativa 3 {utilizando un valor centinela} PARA I [1..100] Leer(Valor)

SI (I = 1) o (Valor > Maximo) Entonces Maximo Valor FIN PARA. 2) Dados un conjunto de valores distintos de cero determinar el máximo del conjunto Alternativa 1{asignando al máximo la primera lectura} Leer(Valor) Máximo Valor Mientras (Valor <> 0) Hacer Si (Valor > Maximo) Entonces Máximo Valor FIN SI Leer(Valor) FIN MIENTRAS Alternativa 2{utilizando un valor centinela} PrimeraLectura Verdadero Leer(Valor)

Page 16: TEMA 1: Introduccion Conceptos generales · PDF fileCombinaciones complejas de estructuras de ... II CC CI IC Metodos ... Las instrucciones o sentencias representan las operaciones

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 16

Mientras (Valor <> 0) Hacer Si (PrimeraLectura = verdadero) o (Valor > Maximo) Entonces PrimeraLectura Falso Máximo Valor FIN SI Leer(Valor) FIN MIENTRAS Alternativa 3{utilizando el valor leído como centinela} {El valor 0 no es parte del conjunto, se usa como centinela} Leer(Valor) Máximo = 0 Mientras (Valor <> 0) Hacer Si (Valor = 0) o (Valor > Maximo) Entonces PrimeraLectura Falso Máximo Valor FIN SI Leer(Valor) FIN MIENTRAS 3) Dados un conjunto de valores <> de cero buscar el máximo y su posición relativa dentro del

conjunto Leer(Valor) CantidadDeNumeros 0 PosicionRelativa 0 Máximo = 0 Mientras (Valor <> 0) Hacer Incrementar(CantidadDeNumeros)

Si (Valor = 0) o (Valor > Maximo) Entonces PrimeraLectura Falso PosicionRelativa CantidadDeNumeros

Máximo Valor FIN SI Leer(Valor) FIN MIENTRAS Resuelva las siguientes situaciones

Codifique en C los patrones algorítmicos desarrollados en este apartado Dado un conjunto de valores enteros determinar e imprimir el máximo del conjunto. Dado un conjunto de valores reales determinar e imprimir el máximo del conjunto. Dado un conjunto de valores enteros determinar e imprimir el mínimo del conjunto. Dado un conjunto de valores reales determinar e imprimir el máximo de los negativos y el

mínimo de los positivos, si hubieron valores, el conjunto termina con un valor cero. Dado un conjunto de valores reales determinar e imprimir el máximo del conjunto y su

posición relativa, si hubieron valores, de lo contrario mostrar el mensaje “Sin valores”.

Page 17: TEMA 1: Introduccion Conceptos generales · PDF fileCombinaciones complejas de estructuras de ... II CC CI IC Metodos ... Las instrucciones o sentencias representan las operaciones

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 17

Dado un conjunto de valores enteros determinar e imprimir el máximo del conjunto y el siguiente máximo y sus posiciones relativas.

Dado un conjunto de valores reales distintos de cero determinar e imprimir el máximo de los negativos y el mínimo de los positivos.

Utilizar repeticiones para seguidillas a) Se dispone de un lote de valores enteros positivos que finaliza con un número negativo. El

lote está dividido en sublotes por medio de valores cero. Desarrollar un programa que informe: por cada sublote el promedio de valores, el total de sublotes procesados

CantidadSublotes 0 Leer (Valor) MIENTRAS (Valor >= 0) HACER {ciclo externo que controla el conjunto general de datos} CantidadNumeros 0, SumaValores0 {para calcular el promedio de cada sublote}

MIENTRAS(Valor>0) HACER {ciclo interno, si el valor es cero termina el sublote} Incrementar(CantidadNumeros) Incrementar(SumaValores, Valor) Leer(Valor) FIN MIENTRAS Imprimir(SumaValores/CantidadNumeros; Incrementar(CantidadSublotes) SI (Valor = 0) ENTONCES Leer(Valor) FIN SI FIN MIENTRAS Imprimir(CantidadSublotes)

Page 18: TEMA 1: Introduccion Conceptos generales · PDF fileCombinaciones complejas de estructuras de ... II CC CI IC Metodos ... Las instrucciones o sentencias representan las operaciones

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 18

Fundamentos C++ Sin declaración using Con declaración using

//programa para imprimir texto #include <iostream> int main() { std::cout << “Hola\n”; return 0; }

//programa para imprimir texto #include <iostream> using std::cout; // using std::cin; using std::endl; int main() { cout << “Hola” << endl; return 0;

Instruccion Descripcion

#include <iostream> using int main() { } std::cout << “Hola\n” ; return 0

Directiva del preprocesador Componente de entrada/salida (objetos cin, cout,cerr) Declaración que elimina necesidad de repetir el prefijo std. Funcion principal que retorna un entero Definición de un bloque de programa Uso del nombre cout del espacio de nombres std, dispositivo std de salida Operador de inserción en flujo Literal Hola + salto de línea (también << std::endl; Finalización de una sentencia Punto de finalización correcta de la función

Si la función, como en este caso tiene un encabezado int main() debe tener al menos un return de un valor entero. Una función void nombre() puede finalizar con la instrucción return o sin ella.

Programa que muestra la suma de dos enteros

# include <iostream> int main() { // declaracion de variables int numero1; int numero2; int suma; std::cout << “Escriba el primer entero”; std::cin >>numero1; std::cout << “Escriba el segundo entero”; std::cin >>numero2; suma = numero1 + numero2; std::cout << “La suma de “ numero1 << “ + ” <<numero2 << “ es: “ << suma << std::endl; return 0; }

Page 19: TEMA 1: Introduccion Conceptos generales · PDF fileCombinaciones complejas de estructuras de ... II CC CI IC Metodos ... Las instrucciones o sentencias representan las operaciones

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 19

Instrucción Descripcion

cin >> + - * / % ( ) == > >= < >= != = += -= *= /= ++ --

Dispositivo std de entrada Operador de extracción de flujo Operador de suma Operador de resta Operador multiplicativo Operador de división Operador de modulo o resto Operador para agrupar expresiones ej: a * (b+c) Operador de igualdad Mayor Mayor igual Menor Menor igual Operador de desigualdad Operador de asignación Asignación y suma x+=3; equivale a x = x + 3; Resta y asignación Multiplicación y asignación División y asignación Operador de incremento (pre pos) Operador de decremento (pre pos)

Sentencia de selección if

if (expresión) {lista de sentencias};[else {lista de sentencias}] Sin clausula else if (nota >= 4){ cout << “Aprobado”; } Con clausula else if (nota >= 4){ cout << “Aprobado”; } else{ cout << “No aprobado”; } Anidados If (nota > 9) cout << “Distinguido”; else if (nota > 8) cout << “Sobresaliente”; else if(nota > 6) cout << “Muy bueno”; else if (nota >= 4) cout << “Bueno”; else cout << “No aprobo”;

Page 20: TEMA 1: Introduccion Conceptos generales · PDF fileCombinaciones complejas de estructuras de ... II CC CI IC Metodos ... Las instrucciones o sentencias representan las operaciones

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 20

Estructura de repeticion while

int i = 0; while (I < 10 ){ i++; }

for

for (int I = 0; I < 10;i++) ;

Desarrollar una funcion que calcule el promedio de varios valores

#include <iostream> using std::cout; using std::cin; using std::endl; int calcularPromedio() //con cantidad conocida a priori ejemplo 10 valores { Int cantidad, valor, suma; Suma = 0; cantidad = 1; while (cantidad <= 10){ cout >> “Ingrese un valor “; cin >> valor; cout << endl; suma +=valor; cantidad ++; } return suma/cantidad; } Alternative con ciclo for for(cantidad = 1, suma = 0; cantidad <=10; cantidad ++){ …………. int calcularPromedio() //con fin por valor centinela { Int cantidad, valor, suma; Suma = 0; cantidad = 0; cout >> “Ingrese un valor “; cin >> valor; while (valor > 0){ suma +=valor; cantidad ++; cout >> “Ingrese un valor “; cin >> valor; } return (cantidad > 0?suma/cantidad: 0; } Alternative con ciclo for for(cantidad = 0, suma = 0; valor > 0; cantidad ++){

Page 21: TEMA 1: Introduccion Conceptos generales · PDF fileCombinaciones complejas de estructuras de ... II CC CI IC Metodos ... Las instrucciones o sentencias representan las operaciones

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 21

Programa que comprara dos enteros, utiliza la declaración using

#include <iostream> using std::cout; using std::cin; using std::endl; int main() { int numero1; int numero2; std::cout << “Escriba dos enteros para comparar”; std::cin >>numero1 >> numero2; if (numero1 > numero2) std::cout << numero1 << “ > ” <<numero2 << std::endl; if (numero1 == numero2) std::cout << numero1 << “ == ” <<numero2 << std::endl; if (numero1 < numero2) std::cout << numero1 << “ < ” <<numero2 << std::endl; return 0; }

Palabras Reservadas C y C++ Auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while Solo C++ and and_eq asm bitand bitor bool catch class compl const_cast delete dynamic_cast explicit export false friend inline mutable namespace new not not_eq operator or or_eq private protected public reinterpret_cast static_cast template this throw true try typeid typename using virtual wchar_t xor xor_eq

Tipos de datos fundamentales y jerarquia de promocion

Tipos de Datos

long double double float unsigned long int long int unsigned int int unsigned short int short int unsigned char char bool

Page 22: TEMA 1: Introduccion Conceptos generales · PDF fileCombinaciones complejas de estructuras de ... II CC CI IC Metodos ... Las instrucciones o sentencias representan las operaciones

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 22

Resumen: 1. Los comentarios de una linea comienzan con //, esta línea es omitida por el compilador. 2. Las directivas del preprocesador comienzan con #, estas líneas no terminan con ; ya que

no son parte de C. Permiten incorporar archivos de encabezado. <iostream> contiene información necesaria para utilizar cin y cout-

3. Los programas en C ejecutan la función main. 4. Toda sentencia termina con ; 5. La declaración using std::cout informa al compilador que puede encontrar a cout en el

espacio de nombre std y elimina la necesidad de repetir el prefijo std. Ejercicios

1. Cuál de las siguientes sentencias son correctas para la ecuación algebraica y=ax3 + 7. a. y = a * x * x * x + 7 b. y = a * x * x * (x + 7) c. y = (a * x) * x *( x + 7) d. y = (a * x) * x * x + 7 e. y = a * (x * x * x) + 7 f. y = a * (x * x * x + 7)

2. Escriba un programa que pida al usuario dos números e informe la suma, la resta, el producto y el cociente de los mismos

3. Escriba un programa que imprima los números del 1 al 4 en una misma línea, hágalo de las formas siguientes:

a. Utilizando un solo operador de inserción de flujo b. Una única sentencia con 4 operadores de inserción de flujo c. Utilizando cuatro sentencias

4. Escriba un programa que reciba tres números por el teclado e imprima la suma, el promedio, el producto, el mayor y el menor de esos números. Escriba un adecuado dialogo en pantalla.

5. Escriba un programa que reciba un numero que represente el radio de un circulo e imprima el diámetro, circunferencia y área.

6. Que imprime el siguiente código a. std::cout << “*\n**\n***\n****” <<std::endl; b. std::cout << ‘A’; c. std::cout << static_cast< int > ‘A’; (que es static_cast? Investigue.)

7. Utilizando solo lo que hemos desarrollado en esta introduccion escriba un programa que calcule los cuadrados y los cubos de los números de 0 a 10 y los muestre por pantalla.

8. Escriba un programa que reciba un numero entero de 5 digitos, que separe el numero en sus digitoe y los muestre por pantalla, uno por línea comenzando por elmas significacivo en la primera línea.

9. Dada una terna de números naturales que representan al día, al mes y al año de una determinada fecha informarla como un solo número natural de 8 dígitos (AAAAMMDD).

10. Dado un valor entero ingresado por teclado, se pide informar: a) La quinta parte de dicho valor b)El resto de la división por 5, c)La séptima parte del resultado del punto a)

11. Dados dos valores enteros y distintos, emitir una leyenda apropiada que informe cuál es el mayor entre ellos.

12. Dadas dos fechas representadas por el dia, el mes y el año informar cual es la más reciente.

13. Dado tres valores L1, L2, L3, determinar si los mismos forman un triangulo.

Page 23: TEMA 1: Introduccion Conceptos generales · PDF fileCombinaciones complejas de estructuras de ... II CC CI IC Metodos ... Las instrucciones o sentencias representan las operaciones

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 23

14. Dado tres valores L1, L2, L3, que representan los lados de un triangulo determinar e imprimir una leyenda según sea: equilátero, isósceles o escáleno.

15. Dados dos valores, N y M números naturales, informar su producto por sumas sucesivas. 16. Dados 50 números enteros, informar el promedio de los mayores que 100 y la suma de los

menores que -10. 17. Se realiza una inspección en una fábrica de pinturas, y se detectaron 20 infracciones. De

cada infracción se tomó nota de los siguientes datos: a) Tipo de Infracción (1, 2, 3, ó 4), b) Motivo de la infracción, c)Valor de la multa, d)Gravedad de la infracción ('L','M', 'G'). Se pide informar al final del proceso: 1)Los valores totales de la multa a pagar de acuerdo al tipo de gravedad. “. La leyenda "Clausurar fábrica" si la cantidad de infracciones 3 y 4 con gravedad "G" sean mayor a 3.

18. Ingresar e informar valores, mientras que el valor ingresado no sea negativo. Informar la cantidad de valores ingresados.

19. Se ingresa un conjunto de valores reales, cada uno de los cuales representan el sueldo de un empleado, excepto el último valor que es cero e indica el fin del conjunto. Se pide desarrollar un programa que determine e informe: a)Cuántos empleados ganan menos $1.520. b) Cuántos ganan $1.520 o más pero menos de $2.780. c) Cuántos ganan $2.780 o más pero menos de $5.999. d) Cuántos ganan $5.999 o más.

20. Dado un valor M determinar y emitir un listado con los M primeros múltiplos de 3 que no lo sean de 5, dentro del conjunto de los números naturales.

21. Dados 10 valores informar el mayor 22. Dados N valores informar el mayor, el menor y en que posición del conjunto fueron

ingresados. 23. Dado un conjunto de Nombres y Fechas de nacimientos (AAAAMMDD), que finaliza con

un Nombre = 'FIN', informar el nombre de la persona con mayor edad y el de la más joven.

24. Dado un conjunto de valores, que finaliza con un valor nulo, determinar e imprimir (si hubo valores): a) El valor máximo negativo, b) El valor mínimo positivo, c) El valor mínimo dentro del rango -17.3 y 26.9, d) El promedio de todos los valores.

25. Se dispone de un lote de valores enteros positivos que finaliza con un número negativo.El lote está dividido en sublotes por medio de valores cero. Desarrollar un programa que determine e informe: a) por cada sublote el promedio de valores, b) el total de sublotes procesados, c) el valor máximo del conjunto, indicando en que sublote se encontró y la posición relativa del mismo dentro del sublote, d) valor mínimo de cada sublote

26. Dada una serie de M pares {color, número} que corresponden a los tiros de una ruleta. Se pide informar: a) cuántas veces salió el número cero y el número anterior a cada cero, b) cuántas veces seguidas llegó a repetirse el color negro, c) cuántas veces seguidas llegó a repetirse el mismo número y cuál fue, d) el mayor número de veces seguidas que salieron alternados el rojo y el negro, el mayor número de veces seguidas que se negó la segunda docenas

27. Un buque de carga traslada 100 contenedores a tres diferentes puertos del país. Los puertos se identifican con los números 1, 2 y 3. De cada contenedor que el buque traslade se registran los siguientes datos: a) Identificación del contenedor, b) Peso del contenedor en kg, c) Puerto de arribo(un valor de 1 a 3). Se pide calcular e informar: 1) El peso total que el buque debe trasladar, 2) La identificación del contenedor de mayor peso, 3) La cantidad de contenedores que debe trasladar a cada puerto

28. En un torneo de fútbol participan K equipos. El torneo se juega con el sistema de todos contra todos. Por cada partido disputado por un equipo se dispone de la siguiente

Page 24: TEMA 1: Introduccion Conceptos generales · PDF fileCombinaciones complejas de estructuras de ... II CC CI IC Metodos ... Las instrucciones o sentencias representan las operaciones

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 24

información: Nro. de equipo, Código del resultado ('P'= Perdido, 'E'= Empatado, 'G'= Ganado).Se arma un lote de datos con todos los resultados del torneo, agrupados por Nro. de equipo. Desarrollar el programa que imprima: a) Por cada equipo, su número y el puntaje total que obtuvo (suma 3 si gana, y 1 si empata). b) Cantidad de equipos que obtuvieron el puntaje minimo o cuantos son si hay mas de uno en esa situacion

29. Dada una serie de caracteres que conforman una oración, donde cada palabra está separada de la siguiente por un carácter blanco y la oración finaliza con un punto. Se pide informar: a)cantidad de veces que apareció cada vocal, b)cantidad de palabras que contiene la oración, c)cantidad de letras que posee la palabra más larga.

30. Dado un número entero positivo entre 1 y 3999 informar su correspondiente número Romano

31. Dado un conjunto de valores enteros, calcular e informar a) cuántos valores cero hubo, b) promedio de valores positivos, c) sumatoria de valores negativos.

32. Resolver el ejercicio para los siguientes lotes de datos: a. 167 valores enteros b. N valores, donde el valor de N debe ser leído previamente c. El conjunto de valores termina con un valor igual al anterior d. Se dan N valores, pero el proceso deberá finalizar si se procesan todos los valores

o si la cantidad de ceros supera a cuatro e. Se dan N valores, pero el proceso deberá finalizar si se cumple alguna de las

condiciones de 4) o si el promedio de positivos resulta mayor que seis. 33. El gobierno de la Ciudad de Buenos Aires realiza una encuesta en casas de familia. De

cada familia conoce: domicilio, tipo de vivienda ('C':casa, 'D':departamento), y cantidad de integrantes. De cada integrante de la familia se conoce: nombre y apellido, edad, sexo ('F', 'M'), nivel de estudios alcanzados ('N': no posee, 'P': primario, 'S': secundario, 'T': terciario, 'U': universitario), y un indicador ('I': incompleto, 'C': completo) que se refiere al ítem anterior. Los datos finalizan cuando la cantidad de integrantes sea igual a cero. Se pide emitir un listado con los resultados:

a. los datos de los encuestados que hayan completado los estudios primarios b. el porcentaje de analfabetismo en la ciudad (se considera analfabetos a los

mayores de 10 años que no posean estudios) c. el domicilio de la familia con mayor cantidad de integrantes que viven en

departamento d. edad promedio de cada familia y de la ciudad e. cantidad de encuestados en cada tipo de nivel de estudios alcanzados

incompletos. f. porcentaje de encuestados de sexo femenino y masculino.

Page 25: TEMA 1: Introduccion Conceptos generales · PDF fileCombinaciones complejas de estructuras de ... II CC CI IC Metodos ... Las instrucciones o sentencias representan las operaciones

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 25

Sintesis de Algoritmos y estructura de datos El propósito final de la materia es que “Que el estudiante sea capaz de aplicar satisfactoriamente técnicas del paradigma imperativo-modular-estructurado para la solución de problemas de de información con la utilización de combinaciones complejas de estructura de datos.” Desde la algoritmia Abordaremos el desarrollo y utilización de un conjunto de patrones algorítmicos que pueden sintetizarse en:

1. De recorrido a. De una estructura completa b. En un sector determinado c. En orden natural o inverso d. Con corte de control e. Apareando (dos o mas estructuras del mismo tipo o diferentes)

2. De inserción a. Al final de la estructura b. Al principio c. En un lugar determinado d. Sin repetición de algún atributo

3. Busquedas a. Directas b. Binaria c. Secuencial

4. Ordenamientos a. Con posición única y predecible b. Con métodos de ordenamiento c. Mediante la utilización de la estructura adecuada para ese fin

Se desarrollaran cada uno de los patrones como ejercicio para después identificar su uso en la resolución de problemas. En general la resolución final de los problemas surgen de la combinación, a veces compleja, de estos patrones. Se desarrollaran los mismos para que sean implementados por ustedes en el laboratorio. Para cada uno de los patrones, además de la logica de resolución se determinara pre y poscondicion que deben cumplir los datos, en caso de corresponder, para la aplicación de los mismos y la situación particular en la que la aplicación del patrón es adecuada. Desde la estructura de datos Abordaremos el estudio de tipos de datos, estos pueden ser simples (único nombre para un único dato) o estructuras (único nombre para mas de un dato con acceso directo a cada miembro en particular). En general abordamos el estudio de estructuras que contienen conjuntos de datos del mismo tipo, algunas con almacenamiento físico, otras con almacenamiento electrónico, algunas con tamaño fijo en tiempos de ejecución y otras con tamaño variable. Según estas propiedades el problema se reduce a la elección de la estructura mas adecuada para resolver el problema planteado. En síntesis Se plantean problemas de información que habrá que entenderlos, y encontrar la estructura de datos más idónea y los patrones mas adecuados para su solución.

Page 26: TEMA 1: Introduccion Conceptos generales · PDF fileCombinaciones complejas de estructuras de ... II CC CI IC Metodos ... Las instrucciones o sentencias representan las operaciones

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 26

Caracteristica de las estructuras de datos

Atributo Archivo Arreglo Lista S. E.

Almacenamiento Fisico Electronico Electronico

Procesamiento Lento Rapido Rapido

Persistencia Si No No

Tamaño en tiempo de ejecucion Variable Fijo Variable

Recorridos

Completo en orden natural Si Si Si

Completo en orden inverso Si Si No (solo D.E.)

Corte de control Si Si Si

Apareo Si Si Si

Insercion

Al principio No Si Si

Al final Si Si Si

En un lugar determinado Si Si Si

Sin repetición de atributo Si Si Si

Busquedas

Directas Si Si No*

Binaria Si Si No

Secuencial No Si Si

Ordenamiento

Posicion Unica Predecible Si Si No

Metodo de ordenamiento No Si No

Según Caracteristica de la estructura No No Si

El criterio general de selección, si debe priorizarse la velocidad de procesamiento debería ser

1. Memoria a. Acceso directo arreglo b. Con orden para eventual búsqueda binaria arreglo c. Con acceso secuencial arreglo (T. F.) lista (T.V.)

2. En disco

Dinamica del curso de verano 2017 1. Desarrollaremos material en 8 videos y pdf, uno de introducción, uno para cada

estructura de datos y uno para cada grupo de patrones algorítmicos. 2. Nos apoyaremos en droscarbruno.wordpress.com y una App desarrollada para el curso. 3. Cada modulo tendrá una lesta de ejercicios obligatorios para hacer en grupo. 4. Sugeriremos lectura anticipada de los temas y haremos los encuentros con fuerte

contenido practico. Se podrán desarrollar en clase los ejercicios requeridos.