0% encontró este documento útil (0 votos)
19 vistas55 páginas

Sesion01 2024

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 55

UNIVERSIDAD RICARDO PALMA

FACULTAD DE INGENIERÍA
ESCUELA PROFESIONAL DE INGENIERÍA INFORMÁTICA

Estructura de datos y Algorítmica


Docente : Jaime L. Escobar Aguirre

28/03/2024 1
Estructura
de datos y
algorítmica
ESTRUCTURA DE DATOS

❑ Los datos pueden organizarse en muchas formas diferentes, la


organización implica la representación de los datos junto con las
operaciones permitidas; el modelo matemático o lógico de esta
organización particular de datos recibe el nombre de estructura de datos.

❑ La estructura de datos no es un objeto pasivo, sino que dependerá de las


operaciones que se quieran ejecutar sobre ellas.

❑ La elección del algoritmo y de la estructura de datos está estrechamente


relacionada y continuamente se buscará formas de ahorrar tiempo y
espacio mediante una elección adecuada.
CLASIFICACIÓN DE LAS ESTRUCTURAS DE DATOS

❑ Teniendo en cuenta la disposición de los datos:


❑ E.D.Lineales:Filas secuenciales, arreglos, listas enlazadas, Pilas y Colas.
❑ E.D. No Lineales: Grafos y Árboles.

❑ Las estructuras lineales son aquellas en las que sus elementos se encuentran
en secuencia lineal.
❑ Las estructuras no lineales son aquellas en las que sus elementos se
encuentran en un tipo especial de relación de aristas o caminos entre dichos
elementos.
CLASIFICACIÓN DE LAS ESTRUCTURAS DE DATOS-II
➢ Teniendo en cuenta su existencia física propia o no :
➢ E.D. físicas: Filas y arreglos
➢ E.D. Abstractas: Listas, Pilas, Colas, Arboles y Grafos.

➢ Las estructuras físicas son aquellas que tienen existencia física propia
en el almacenamiento.

➢ Las estructuras abstractas pueden construirse o implementarse sobre


otra estructura ya sea física o abstracta. Por ejemplo, una pila o una
cola puede construirse sobre un arreglo o sobre una lista mediante
apuntadores.
CLASIFICACIÓN DE LAS ESTRUCTURAS DE DATOS

❑ Teniendo en cuenta el tamaño (longitud) de la estructura:


❑ E.D. Estáticas: Arreglos.
❑ E.D. Dinámicas: Listas, Pilas y Colas. Grafos y Árboles.
❑ Las estructuras estáticas no cambian de longitud durante la
ejecución del programa. Mientras que las dinámicas varían en
tamaño.
OPERACIONES SOBRE ESTRUCTURAS DE DATOS

❑ Los datos que contiene una estructura de datos se procesan por


medio de determinadas operaciones.
❑ La estructura de datos elegida en un programa está determinada por
las operaciones que realicemos sobre ella.
❑ Creación implica definir la existencia de la estructura, para su
posterior utilización.
❑ Recorrido implica recorrer cada elemento de la estructura una única
vez.
❑ Búsqueda implica la localización de un elemento determinado,
caracterizado por un valor llamado clave.
OPERACIONES SOBRE ESTRUCTURAS DE DATOS
➢ Inserción:
➢ implica añadir un elemento en alguna posición determinada.
➢ Eliminación:
➢ implica eliminar un elemento de la estructura de datos.
➢ Ordenación:
➢ implica clasificar los elementos de acuerdo con un orden lógico
determinado.
➢ Mezcla
➢ implica intercalar dos estructuras ordenadas en una tercer que también
lo esté.
Estructuras estáticas

28/03/2024 9
Operaciones con arreglos
❑Es un conjunto finito de tamaño fijo y ordenado(índices) de datos
del mismo tipo(homogéneos) los arreglos pueden ser
unidimensionales(vector), bidimensionales(matriz) y
multidimensional.

❑Los arreglos usan un índice numérico el cual es la manera como


se pueden ordenar y/o ubicar a los elementos que están
contenidos en él.

28/03/2024 10
Operaciones con arreglos
❑El índice cero se denomina límite inferior(LI) y el último elemento
se denomina límite superior(LS), que viene hacer la cantidad
de elementos del arreglo -1

28/03/2024 11
Operaciones con arreglos
❑Para hacer el recorrido de los elementos del Arreglo nos
apoyaremos en la estructura repetitiva denominada for.
❑Para este ejemplo a un vector de 5 elementos se le asigna el
valor de 10.
for(i=0;i< =4;i++) {
N[i]=10; }
para una matriz de 3 x 4 y se asigna el valor de 20 a cada elemento.
for(i=0; i<=2;i++) {
for(j=0;j<= 3;i++){
N[i][j]=20; }

28/03/2024 12
Ejemplo 01

Dados cinco números ingresados por el usuario se solicita obtener la suma de


los números.
análisis: se requiere que se ingresen los cinco números y que el sistema haga
la suma
entrada: 5 números ->n[5]
salida: suma(s)

28/03/2024 13
Solución ejemplo01

Corrija el siguiente código


para que sea óptimo

28/03/2024 14
Mejora a la solución del ejemplo 01

28/03/2024 15
Ejemplo 02
Dados 5 números y un divisor determinar cuántos números múltiplos del
diviso hay en los cinco números ingresados.
Entrada
Cinco números n[5]
Divisor(div)
Salida
cantidad(c)

28/03/2024 16
Solución ejemplo 02

28/03/2024 17
Ejemplo03
Leer 4 números y almacenarlos en el vector “A” y leer otros cuatro
números y almacenarlos en “B”, determine cuantos números de A se
encuentran en B
Entrada:
4 números a[4], 4 números b[4]
Salida:
cantidad (c)

28/03/2024 18
Solución ejemplo 03

28/03/2024 19
Ejercicios Propuestos
❑ Leer cuatro números y almacenarlos en el vector “A” y leer
otros cuatro números y almacenarlos en “B”, determine
cuantos números de A son múltiplos de B, recuerde el
validar el ingreso de los datos(solo debe ingresar números).

❑ Ingrese 12 números de un arreglo bidimensional (4x3), en


donde se obtenga la suma de cada columna.

28/03/2024 20
28/03/2024 21
Contenido.
Problema a Analizar

Elaborar un programa en Lenguaje C++ que lea las edades y sexo de un


conjunto de 5 personas y luego imprima los datos en orden inverso al
ingresado
Solución aplicando arreglos paralelos
Solución – Estructuras
Definición de Estructura

Una estructura es un tipo de dato compuesto A cada uno de los datos o elementos
que permite almacenar un conjunto de almacenados dentro de una estructura se
datos de diferente tipo. Los datos que les denomina miembros de esa estructura
contiene una estructura pueden ser de tipo y éstos pertenecerán a un tipo de dato
simple (caracteres, números enteros o de determinado
coma flotante etc.) O a su vez de tipo
compuesto (vectores, estructuras, listas, etc.).
Declaración de un estructura

struct nombre_estructura {
tipo_dato miembro1; tipo_dato
miembro2;

};
En esta declaración aclararemos que:
• struct: es una palabra reservada de C++ que indica que los
elementos que vienen agrupados a continuación entre llaves
componen una estructura.
Declaración de una estructura

nombre_estructura: identifica el tipo de dato que se describe y del cual se


podrán declarar variables. Se especifica entre corchetes para indicar su
opcionalidad.

miembro1, miembro2,...: Son los elementos que componen la estructura de


datos, deben ser precedidos por el tipo_dato al cual pertenecen.

28/03/2024 28
Declaración de un estructura

Recordemos que una estructura define un tipo de dato, no una


variable, lo que significa que no existe reserva de memoria cuando
el compilador está analizando la estructura. Posteriormente habrá
que declarar variables del tipo definido por la estructura para
poder almacenar y manipular datos.
Declaración de variables

• La declaración de variables de un
determinado tipo de estructura de datos
se puede realizar de dos modos:
• Primera: Incluir en la propia definición de la
estructura aquellas variables que se van an
emplear en el programa. Esta declaración
de variables implica que el ámbito en el
que éstas son reconocidas será el mismo
que el de la declaración del tipo de dato
estructura. La sintaxis es:

28/03/2024 30
Declaración de variables
En estos casos, y si no se van a declarar más variables de este tipo de
dato en otros lugares del programa, el nombre_estructura es
innecesario.
Apilamiento de la variable empleado de tipo struct
Declaración de variables

Segunda: Definir el tipo de dato estructura con un nombre


determinado y declarar posteriormente las variables de ese tipo
de dato. Para ello la estructura se identificará con un nombre de
forma obligatoria.
Acceso a los elementos de un struct

• Para acceder a cada uno de los datos


que forman la estructura, tanto si
queremos leer su valor como si
queremos modificarlo, se debe indicar
el nombre de la variable y el del dato
(o campo) separados por un punto.

28/03/2024 33
Estructuras anidadas
Podemos encontrarnos con una estructura que tenga varios datos, y que a su vez
ocurra que uno de esos datos esté formado por varios datos más sencillos. Para
hacerlo desde C++, incluiríamos un “struct” dentro de otro, así:
struct fechaNacimiento int main()
{ {
int dia; struct datosPersona persona;
int mes; persona.inicial = 'I';
int anio; persona.diaNacimiento.mes =
}; 8;
struct datosPersona persona.nota = 7.5;
{ cout << "La nota es " <<
char inicial; persona.nota;
struct _getch();
fechaNacimiento return 0;
diaNacimiento; }
float nota;
};
Typedef

La palabra clave typedef permite La sintaxis de la sentencia typedef es


definir explícitamente un nuevo la siguiente: typedef tipo alias;
nombre de tipo. Realmente no se
crea un nuevo tipo, sino que se tipo es cualquier tipo de datos
define un ‘alias’ para un tipo existente o la definición de una
existente. Este permite usar estructura
nombres más descriptivos para los alias es el nuevo nombre para ese
tipos de datos que usamos y para tipo.
las estructuras que hallamos
creado.

28/03/2024 35
Typedef

De la misma forma,
podemos usar typedef para
crear alias para estructuras.

Por ejemplo:
• typedef struct { /* definicion de la
estructura t_datos */ float sueldo;
• char categoria; int codigopostal;

} t_datos;
• /*t_datos es el alias para la
estructura */

28/03/2024 36
Declaración y creación de Arreglos de estructuras

typedef struct
{
char inicial;
int edad;
float nota;
} tdatos Persona;

tdatos Persona *personas;

personas = new tdatosPersona[50];


Estructura de datos
Otras estructuras de código

• Se pueden crear tipos de datos definidos por el usuario


• Estructuras ,Union y Enum
• Se puede definir el tipo de datos que se requiera y el sentido del
uso de los tipos de
datos definidos por usuario.
Creando una estructura -I
• Creamos una estructura que tiene internamente un conjunto de variables
diversas
• La idea es reutilizar a la estructura (tipo de dato) en la siguiente línea
• Se muestra por pantalla la variable padre tipo estructura con
la edad y la altura
Tipo de datos unión
• Desarrolla lo mismo que la estructura, pero su almacenamiento de memoria es
limitado
• Si vemos el ejemplo anterior veremos que solo puede almacenar memoria para
un tipo de variable
• Aunque su tamaño de memoria es menor con respecto del struct
• Veremos un ejemplo
Tamañode la estructurafrentea la unión
Tipo de dato enum
• Genera una secuencia de valores constantes
• Si no se especifica empieza en cero
• No se requiere especificar los siguientes valores , siempre le asignara uno
más.
• Sirve para asociar palabras con números.
Ejercicio 2 – Fecha de nacimiento

Elabore un programa en C++ que pida datos de un conjunto de personas (el


número máximo será de 50).

Los datos de las personas son: sexo, día de nacimiento, mes de nacimiento y
año de nacimiento.

Después deberá repetir lo siguiente: preguntar un número de mes y mostrar


en pantalla los datos de las personas que cumplan años durante ese mes. El
proceso terminará de repetirse cuando se teclee 0 como número de mes.
Ejercicio 3 – Edad promedio

Elaborar una programa en C++ que usando arreglos de estructuras


lea las Categorías y las Edades de 10 empleados de la empresa
ABC.

Las categorías pueden ser: A, B o C

El programa luego deberá solicitar una categoría dada por el usuario


y calcular el promedio de las edades de los empleados que
pertenecen a dicha categoría.
Resolución de problemas

❑ Un problema existe en el mundo real, y para ello existen una o más


soluciones.
❑ Un algoritmo es una solución (idea) que surge como respuesta a un
problema.
❑ La resolución de un problema sigue las siguientes fases:

❑ Problema → Algoritmo → Pseudocódigo → Programa

❑ La solución al problema puede formularse en forma algorítmica como una


secuencia finita de pasos.

❑ El algoritmo debe presentarse en forma objetiva utilizando herramientas


de comunicación como los pseudocódigos o diagramas de flujo.
Resolución de problemas

• La especificación de una solución

❑ Especificar la solución (algoritmo) consiste en responder a la pregunta


¿qué hace el algoritmo? Implementar, por el contrario, consiste en
responder ¿cómo se consigue la función pretendida?.

❑ La especificación de algoritmo tiene un doble destinatario


❑ Los usuarios del algoritmo
❑ El implementador del algoritmo (programador)
Resolución de problemas

Precondición y Postcondición
La técnica pre/post se basa en considerar un algoritmo como una
caja negra en la que se permite observar los parámetros de entrada y
los de salida.
El algoritmo funciona como una máquina de estados finito, en la que
el estado inicial está descrito por el valor de los parámetros de
entrada, y después de transaccionar por los demás estados (un
estado por cada paso del algoritmo) en un tiempo que no es
relevante para la especificación, se llega al estado final en la que los
parámetros de salida contienen los resultados esperados.
Resolución de problemas

• Precondición y Postcondición
• Ejemplo:
• Se requiere especificar un algoritmo para hallar el cociente por
defecto y el módulo de dos enteros

Entrada: a: dividendo
b: divisor
Salida:
q: cociente r: residuo
Resolución de problemas

❑ Precondición y Postcondición
Podríamos especificar el algoritmo con:
❑ Precondición: A: {b <> 0}
❑ Postcondición: B: {a = b * q + r}
❑ Pero no calcula lo esperado (no está bien especificado el algoritmo).
❑ Dado a y b, existen dos números naturales que satisfacen lo que exigimos para
q y r.
❑ Precondición: A: {(a > 0 ) A (b > 0)}
❑ Postcondición: B: {(a = b * q + r) A (0 < r) A (r < b)
Abstracción
❑ La abstracción es un proceso mental que permite concentrarse en
lo general y fundamental y pasar por alto el detalle, lo que
simplifica el análisis, y lo centra en lo relevante.

❑ En informática existen diferentes clases de abstracción, siendo las


más utilizadas la abstracción de procedimientos y la abstracción
de datos.
Modularidad

• Permite separar la solución de un problema en unidades


funcionales, permitiendo mediante la abstracción que se
determinen los procesos u operaciones necesarias para dar
solución a un problema
Algoritmo

Un algoritmo es una secuencia finita de pasos perfectamente definidos que conducen


a la solución de un problema.
Características:
Finito: debe ser finito, sino nunca acabaría.
Entrada: tiene cero o más entradas.
Salida: tiene por lo menos una salida.
Definido: si se ejecuta dos veces debe producir el mismo resultado.
Natural: debe ser escrito en lenguaje natural.

Está orientado hacia la persona, no hacia la máquina.


Consultas

28/03/2024 54
UNIVERSIDAD RICARDO PALMA
FACULTAD DE INGENIERÍA
ESCUELA PROFESIONAL DE INGENIERÍA INFORMÁTICA

GRACIAS

28/03/2024 55

También podría gustarte