Algoritmos y estructuras de datos

Documentos relacionados
Apuntadores (Punteros)

Elementos de un programa en C

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.

Algoritmos y Programación I

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

TIPOS DE DATOS BASICOS EN LENGUAJE C

Programación estructurada (Introducción a lenguaje C)

Ficha de Aprendizaje N 13

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Definición de Memoria

Instituto Tecnológico de Celaya

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Descripción y Contenido del Curso. Programación C++ Capacity Academy.

TIPOS DE DATOS BASICOS EN LENGUAJE C

Curso de Programación en C. Licenciatura, FCQeI. APUNTADORES.

Apuntadores en C y C++

Fundamentos de la programación

Introducción al Lenguaje de Programación C

Fundamentos de Programación 2017-I

INTRODUCCIÓN AL LENGUAJE C

2.2 Nombres, Ligado y Ámbito

El lenguaje C. 1. Identificadores, constantes y variables

Expresiones y sentencias

AREA A LA QUE PERTENECE: 103 Matemática Básica 2 34 créditos POST REQUISITO: CATEGORIA: Obligatorio SEMESTRE: Primer Semestre 2015

Lección 2 Introducción al lenguaje C

Programación En Lenguaje C

POST REQUISITO: CATEGORIA: Obligatorio SEMESTRE: Primer Semestre 2015 HORAS POR SEMANA DEL LABORATORIO: DIAS QUE SE IMPARTE EL LABORATORIO:

Laboratorio de Arquitectura de Redes. Punteros en lenguaje C

Capítulo. Listas, pilas y colas en C. Contenido. Introducción

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

TIPO DE DATO ABSTRACTO (TDA)

Lenguaje C [Apuntadores y arreglos]

Unidad II Fundamentos de C++ M.C. Juan Carlos Olivares Rojas

INICIACIÓN A LA PROGRAMACIÓN EN C

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Expresiones Aritméticas. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

Algoritmos y programas. Algoritmos y Estructuras de Datos I

324 MR Versión 1 Prueba Integral 1/3 Semana 10 Lapso

Fundamentos de Programación Visual Basic

Principios de Computadoras II

El lenguaje C. 1. Estructuras. Principios de Programación Definicion de estructuras

Programación. Test Autoevaluación Tema 3

PROGRAMACIÓN UNIDADES

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

ALGORITMOS, ESTRUCTURAS Y PROGRAMACION

Tema: Tipos Abstractos de Datos (TAD s) en C++.

Curso de Programación Avanzada en C

Principios de Computadoras II

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION

Programación n Orientada a Objetos Sentencias Java Parte I. Ing. Julio Ernesto Carreño o Vargas MsC.

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE CIENCIAS Y SISTEMAS

Fundamentos de programación JAVA

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

Memoria Dinámica. Jornadas de Marzo 2010 Grupo de Usuarios de Linux Tania Pérez

Programcaión Básica. Arreglos y Estructuras de Datos (2)

Tema: Punteros a Objetos. Puntero this.

Lenguaje C. Lenguaje C. Erwin Meza Vega

1. Conceptos de memoria.

PRÁCTICA DE LABORATORIO 4 Programación Orientada a Objetos

PROGRAMACION ORIENTADA A OBJETOS EN C++

Se guardan en archivos con extencion c y los cabezales con extension h

Programación en java. Estructuras algorítmicas

Programación Estructurada

Tema 2. El lenguaje JAVA

LENGUAJE. Tema 2 Elementos de un programa

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

UNIDAD 9. DATOS COMPLEJOS PILAS

Lenguaje de programación con JAVA

Planificaciones Algoritmos y Programación I. Docente responsable: AZCURRA DIEGO ANDRES. 1 de 5

Clases e instancias. Algoritmos y Estructuras de Datos I. Clases e instancias. memoria dinámica.

Universidad Nacional del Santa FACULTAD DE INGENIERIA E.A.P. Ingeniería de Sistemas e Informática NETBEANS 7.0 MI PRIMER PROYECTO

Algoritmos y solución de problemas. Fundamentos de Programación Otoño 2008 Mtro. Luis Eduardo Pérez Bernal

2. EXPRESIONES 3. OPERADORES Y OPERANDOS 4. INDENTIFICADORES COMO LOCALIDADES DE MEMORIA

Lenguaje C Elementos de un Programa. Ing. Hugo Fdo. Velasco Peña Universidad Nacional 2006

UNIVERSIDAD AUTÓNOMA DE YUCATÁN FACULTAD DE MATEMÁTICAS

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

Un identificador le da nombre único a un elemento en un programa (Variables, procedimientos, etc.). No puede contener operadores como + - * /

Tema 3 Constantes, Variables y Tipos

VARIABLES Y CONSTANTES

Computación II. Introducción a Visual Basic

Lenguajes de programación

En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.

Procesadores de lenguaje Tema 6 La tabla de símbolos

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

: Algorítmica y Estructura de Datos I

Fundamentos de Informática E.U.P. Universidad de Sevilla

Elementos léxicos del lenguaje de programación C

Programación Estructurada

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA VICERRECTORADO ACADÉMICO COORDINACION DE PRE-GRADO PROYECTO DE CARRERA DE INGENIERIA INDUSTRIAL

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Resumen de Sintaxis en C

Transcripción:

Algoritmos y estructuras de datos Dr. Eduardo A. Rodríguez Tello Laboratorio de Tecnologías de Información Cinvestav Tamaulipas ertello@tamps.cinvestav.mx Cursos de inducción a la MCC Cinvestav Tamaulipas 2012 1

La computadora como herramienta para resolver problemas Un problema es una tarea a realizar Dadas sus características de tratamiento de información por medio de programas, la computadora es útil en la resolución de problemas Proceso deresolución deproblemas: En general Análisis del problema Desde el punto de vista de la Computación Análisis del problema Diseño de la solución Desarrollo de la solución Verificación y pruebas Diseño del programa para solucionar el problema Implementación (Programación) Verificación y pruebas Cursos de inducción a la MCC Estructuras de datos Cinvestav Tamaulipas 2012 2

Ejemplo: el problema de ordenamiento Entrada: Una secuencia de n números a 1,a 2,...,a n Salida: Una permutación (reordenamiento) b 1,b 2,...,b n de la secuencia de entrada tal que b 1 b 2 b n Nota: los mismos elementos aparecen en a 1,a 2,...,a n y en b 1 1,,b 2 2,,...,b, n Ejemplo Entrada: 31,41,59,26,41,58 Salida: 26,31,41,41,58,59 Cursos de inducción a la MCC Estructuras de datos Cinvestav Tamaulipas 2012 3

De los problemas a los programas PROBLEMA Algoritmos Estructuras de datos PROGRAMA Cursos de inducción a la MCC Estructuras de datos Cinvestav Tamaulipas 2012 4

Algoritmos Algoritmo: procedimiento sistemático y bien definido, consistiendo de un grupo de instrucciones, para resolver un problema Un algoritmo puede verse como una función matemática: Toma un conjunto de datos de entrada. Estos datos son el conjunto de información necesaria para resolver un problema y que es manipulada por el algoritmo Genera un conjunto de datos de salida. Estos datos son la solución del problema Un problema puede tener muchos algoritmos Cursos de inducción a la MCC Estructuras de datos Cinvestav Tamaulipas 2012 5

Algoritmo de ordenamiento por burbuja Repasar la secuencia Comparar cada par de elementos adyacentes Cambiarlos si no están en orden Hasta que haya una pasada sin cambios 31,41,59,26,41,58 58 1ª pasada 31,41,26,41,58,59 2ª pasada 31,26,41,41,58,59 3ª pasada 26,31,41,41,58,59 Cursos de inducción a la MCC Estructuras de datos Cinvestav Tamaulipas 2012 6

Estructuras de datos Organización de los datos para obtener un rendimiento razonable en su memorización, tratamiento y recuperación Ejemplo: para el caso del problema de ordenamiento, los datos se pueden representar como una secuencia o lista La dificultad para resolver un problema radica en ocasiones en escoger la estructura de datos adecuada. La elección del algoritmo y de las estructuras de datos que manipulará estarán muy relacionadas Cursos de inducción a la MCC Estructuras de datos Cinvestav Tamaulipas 2012 7

Temario I. Introducción II. Estructuras de datos estáticas y dinámicas a. Repaso de tipos de datos elementales b. Estructuras de datos estáticas: arreglos y estructuras c. Estructuras de datos dinámicas: apuntadores y listas ligadas III. Tipos de datos abstractos IV. Ordenamientos V. Búsquedas VI. Resumen Cursos de inducción a la MCC Estructuras de datos Cinvestav Tamaulipas 2012 8

Repaso de tipos de datos elementales en C Tipo Ejemplo Tamaño Rango mínimo..máximomáximo en bytes char c 1 0..255 short 15 2 128..127 127 int 1024 2 32768..32767 unsigned int 42325 2 0..65535 long 262144 4 2147483648.. 2147483647 float 10.5 4 3.4*(10 38 ).. 3.4*(10 38 ) double 0.00045 8 1.7*(10 308 ).. 1.7*(10 308 ) long double 1e 8 8 Igual que double Cursos de inducción a la MCC Estructuras de datos Cinvestav Tamaulipas 2012 9

Arreglos Secuencia de objetos del mismo tipo Declaración en C: <tipo> <nombre>[<tamaño>] Los datos almacenados pueden ser de cualquier tipo que se pueda definir en C Ejemplos: int c[5] = {1,2,3,4,5}; // Se inicializa int b[] = {1,2,3,4,5,6}; // Se puede omitir su tamaño b[0] b[1] b[2] b[3] b[4] b[5] 1 2 3 4 5 6 Cursos de inducción a la MCC Estructuras de datos Cinvestav Tamaulipas 2012 10

Arreglos para representar cadenas de caracteres En C no existe el tipo «cadena»: se usan arreglos de tipo char, donde el caracter '\0' indica el fin de cadena Ejemplos: char c1[20] = {'H','o','l','a',0};,,,0}; char c2[20] = "Hola cadena"; Cursos de inducción a la MCC Estructuras de datos Cinvestav Tamaulipas 2012 11

Arreglos de dos o más dimensiones Un arreglo 2D es conocido como matriz: int m1[2][3] = {{1,2,3},{2,2,1}}; {2 2 1}}; float m3[][4] = {{0.2, 1.1, 2.3, 3.1}, {1.1, 1.2, 1.3, 5.4}}; Es posible tener arreglos en 3 o más dimensiones int espacio[2][2][2]; int penta[2][3][2][3][4]; Cursos de inducción a la MCC Estructuras de datos Cinvestav Tamaulipas 2012 12

Estructuras Colección de uno o más elementos denominados miembros, cada uno de los cuales puede ser de un tipo diferente Ejemplo: typedef struct { char nombre[30]; int edad; } Persona; Persona p; La notación. se usa para acceder a cada campo de la estructura p.nombre = "Francisco Mina"; p.edad = 24; Cursos de inducción a la MCC Estructuras de datos Cinvestav Tamaulipas 2012 13

Apuntadores Un apuntador es una variable cuyo valor es la dirección de memoria de otra variable Declaración de apuntadores en C: <tipo de dato apuntado> *<identificador del apuntador> Ejemplos Apuntador a un dato de tipo tpoentero int *p_edad; Dos apuntadores a datos de tipo caracter char *cad1, *cad2; Apuntador a un dato de tipo punto flotante float *ptr2; Cursos de inducción a la MCC Estructuras de datos Cinvestav Tamaulipas 2012 14

Apuntadores Para asignar una dirección de memoria a un apuntador se utiliza el operador de referencia & int edad = 50; int *p_edad = &edad; Para obtener el valor al que apunta un apuntador se utiliza el operador de indirección (*) *p_edad 1 2 50 edad 20 2 p_edad Cursos de inducción a la MCC Estructuras de datos Cinvestav Tamaulipas 2012 15

Listas ligadas Colección de elementos (nodos) dispuestos uno a continuación del otro, cada uno de ellos conectado al siguiente por un apuntador, excepto el último Cada nodo contiene un valor (de cualquier tipo) y un apuntador al siguiente nodo Se distinguen dos apuntadores auxiliares: uno apuntando al primer nodo de la lista y otro al último Nodo a 1 a 2 a 3 a 4 a 5 ptr_primeroprimero Valor Apuntador ptr_ultimo Cursos de inducción a la MCC Estructuras de datos Cinvestav Tamaulipas 2012 16

Declaración de tipos para listas ligadas en C a 1 a 2 a 3 a 4 a 5 ptr_primero ptr_ultimo Declaración del nodo struct nodo { typedef int elemento; elemento dato; nodo *siguiente; } Declaración de apuntadores nodo *ptr_primero; nodo *ptr_ultimo; Cursos de inducción a la MCC Estructuras de datos Cinvestav Tamaulipas 2012 17

Operaciones en listas ligadas Inicializar una lista Comprobar si la lista está vacía Insertar un nodo en una lista Eliminari un nodo de una lista Cursos de inducción a la MCC Estructuras de datos Cinvestav Tamaulipas 2012 18

Operaciones en listas ligadas Insertar un nodo: requiere obtener un nodo nuevo para después realizar dos operaciones con apuntadores a 1 a 2 a 3 a 4 a 5 a 2 Eliminari un nodo: se puede ejecutar con un cambio de apuntador a 1 a 2 a 3 a 4 a 5 Cursos de inducción a la MCC Estructuras de datos Cinvestav Tamaulipas 2012 19

Tipos de listas ligadas Lista ligada simple Lista doblemente ligada Lista circular ligada Lista circular doblemente ligada Cursos de inducción a la MCC Estructuras de datos Cinvestav Tamaulipas 2012 20