Los datos se clasificación según su estructura en: Simples: Estándar (entero, real, carácter, booleano) Estructurados: Estáticos (arrays, cadena, registros, ficheros) Las estructuras de datos pueden ser dinámicas o estáticas. Estáticas: aquellas a las que se le asigna una cantidad fija de memoria de acuerdo a lo definido en la declaración de la variable. Dinámicas: son aquellas cuyo tamaño en memoria aumenta o disminuye en tiempo de ejecución de acuerdo a las necesidades del programa. A continuación, veremos los datos estructurados conocidos como Arrays Arrays (Arreglos): Victor Ojeda Son una secuencia de posiciones de la memoria central a la que se puede acceder directamente y contiene datos del mismo tipo y que pueden ser relacionados y usados mediante el empleo de índices. Existen estructuras de datos compuestos en las que se utilizan uno o más subíndices para identificar los elementos individuales almacenados, a los que es posible tener acceso en cualquier orden. Un array unidimensional, lineal, o vector, es un conjunto finito de ‘N’ elementos homogéneos (del mismo tipo) y ordenados. Podemos acceder a cada elemento del array de manera independiente a través de un índice. Los arreglos no se pueden leer/escribir en una sola sentencia. La lectura o escritura de un arreglo se debe hacer elemento a elemento, y para realizar estas operaciones se deben leer o visualizar los componentes de un arreglo mediante estructuras repetitivas (for, while), haciendo variar el índice. Datos El vector debe ser dimensionado. Al dimensionar (tamaño) un vector le decimos a la máquina que reserve los espacios de memoria necesarios para los elementos del vector. Cada lenguaje de Programacion tiene su sintaxis para dimensionar el vector. Algunos ejemplos. Visual basic Java Pascal C++ Dim nombres(10) As String Tipo dato identificador [ ] Nombre: array [1..9 ] tipo_dato nombrevector[tamanio] Tipo dato [ ] identificador Python Tamaño N n=int(input('Deme valor de n:')) vector=[0]*n Tamaño de 5 num=[0]*5 n=int(input(‘Valor de N:’)) aleatorios = [random.randint(1,100) for _ in range(n)] Victor Ojeda Entrada de Datos Salida de Datos Un algoritmo con vectores tendrán casi siempre esta forma Inicio Definir Vector Leer dimensión del vector Cargar Vector Procesamiento de los elementos del vector Imprimir Vector fin Ejercicio: Cargar un vector de 30 componentes. # Definir v v=[0]*30 for i in range(30): # bucle carga v[i]=int(input(‘Deme numero:’)) for i in range(30): # bucle imprimir print(v[i],end=' ') Es recomendable usar ciclos o buques separados: Un bucle para la carga Un bucle para el proceso Un bucle para la impresión Ejercicio: Cargar dos vectores de 6 componentes, sumarlos y mostrarlo. # Definir vectores a=[0]*6; b=[0]*6; c=[0]*6 for i in range(6): # bucle carga a[i]=int(input(‘Deme numero a:’)) for i in range(6): # bucle carga b[i]=int(input(‘Deme numero a:’)) for i in range(30): # bucle proceso c[i]= a[i]+ b[i] for i in range(6): # bucle imprimir print(c[i],end=' ') Victor Ojeda Ejercicio: Leer un vector de D componentes reales. D=[0]*6; pos=0; mayor=0 Hallar la suma y el promedio de los elemento for i in range(6): D=[0.0]*6; s=0; p=0.0 D[i]=int(input(‘D[‘,i,’ ]’) for i in range(6): if i==0: D[i]=int(input(‘D[‘,i,’ ]’) mayor=D[i] for i in range(6): pos=i Ejercicio: Leer un vector de D . Hallar el s=s+ D[i] if D[i]>mayor: mayor y posicion for i in range(6): mayor=D[i] print(D[i], end=' ') pos=i print() for i in range(6): P=s/6 print(D[i], end=' ') print(‘promedio:‘, p) print() print(‘mayor:‘, mayor,’ y posicion:’, p) from random import randint listado_numeros = [] # crea una lista para almacenar los numero rondón sin repetir. contador_rondas = 0 # almacena las veces que se agrega un numero a la lista. numero_random = randint(1,30) # genera un numero rodón de 1 entre 30 # se repite hasta que el tamaño de la lista no llegue a 5 (para el caso que solo quiera 5 numero) print('Todos los numeros aleatorios') while contador_rondas < 5: numero_random = randint(1,30) # genera un numero rondón de 1 entre 30 if numero_random in listado_numeros:#verifica si el número rondón ya se encuentra en la lista pass #indica al programa que continúe ejecutando el bucle else: Victor Ojeda listado_numeros.append(numero_random) # agrega el número a la lista contador_rondas = contador_rondas +1 # cuenta cada vuelta Todos los numeros aleatorios print() 21 20 27 27 3 25 print(‘Vector los numeros aleatorios sin repetidos') Vector los numeros aleatorios sin repetidos for i in range(contador_rondas): 21 20 27 3 25 print(listado_numeros[i], end=' ') Diseñe un programa que lea un vector x de N elementos construya otro vector que contenga al vector x en orden inverso. El programa debe imprimir los dos arreglos.''' import random n=int(input('Deme valor de n:')) vector=[0]*n for i in range(n): vector[i]=random.randint(1,100) print('Vector Original') for i in range(n): print(vector[i], end=' ') print() print('Vector Invertido con ciclo for') for i in range(n): print(vector[n-(i+1)], end=' ') print() # De esta forma no se va a aceptar con métodos de listas print('Vector Invertido con Metodo reverse de listas') vector.reverse() print(vector) Cargar un vector N con números aleatorios e imprime otro Vector con los elementos mayores al promedio suma=cpma =0; prom =0.0 n=int(input(‘Valor de N:’)) aleatorios = [random.randint(1,100) for _ in range(n)] ale=[0]*n for i in range(n): suma+=aleatorios[i] prom=suma/n print('Vector Aleatorio') for i in range(n): print(aleatorios[i],end=' ') print(‘\n promedio:',prom) for i in range(n): if aleatorios[i]>prom: ale[i]=aleatorios[i] cpma+=1 print(f'{cpma} elementos Mayores al promedio') for i in range(len(ale)): if ale[i]!=0: print(ale[i],end=' ') http://www.cristalab.com/tutoriales/listas-porcomprension-en-python-c103721l/ Victor Ojeda Victor Ojeda http://www.cristalab.com/tutoriales/listas-porcomprension-en-python-c103721l/ Victor Ojeda http://www.cristalab.com/tutoriales/listas-porcomprension-en-python-c103721l/ Victor Ojeda http://www.cristalab.com/tutoriales/listas-porcomprension-en-python-c103721l/ Victor Ojeda http://www.cristalab.com/tutoriales/listas-porcomprension-en-python-c103721l/ Victor Ojeda http://www.cristalab.com/tutoriales/listas-porcomprension-en-python-c103721l/ 0 25 1 16 2 8 3 45 4 37 N=5 for i in range(n-2): # 5-2 =3 for j in range((n-1)-i): # (5-1)-0 = 4 if c[j]>c[j+1]:# 25>16 Temp = c[j] # guarda el 25 en temporal c[j] = c[j+1]# Cambio el 16 c[j+1] = Temp # guardo el 25 Victor Ojeda http://www.cristalab.com/tutoriales/listas-porcomprension-en-python-c103721l/