Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ARREGLOS.
1. Definición.
1 2 3 4 5 6 7 8 9 10
A[10]
Para declarar una E.D. tipo arreglo se necesita especificar tres (03) datos, el primero
es el tipo de dato (entero, real o carácter) que se va a almacenar en el arreglo, lo segundo es
el identificador o nombre del arreglo, y por último a dicho identificador se le añaden entre
corchetes el o los números que indican las cantidades de celdas que contiene el arreglo y sus
dimensiones, ver la tabla de ejemplo a continuación.
3. Índices.
En este modo el primer elemento del vector será la componente cero ('0') del mismo,
es decir, tendrá el índice '0'. En consecuencia, si el vector tiene 'n' componentes la última
tendrá como índice el valor 'n-1'. El C++ es un ejemplo típico de lenguaje que utiliza este
modo de indexación.
Índice 0 1 2 3 4 5 6 7 8 9
A[10]
En esta forma de indexación, el primer elemento del arreglo tiene el índice '1' y el
último tiene el índice 'n' (para un arreglo de 'n' componentes). Usualmente cuando se trabaja
en Pseudocódigo se utiliza éste tipo de indexación.
Índice 1 2 3 4 5 6 7 8 9 10
A[10]
Este es un modo versátil de indexación en la que el índice del primer elemento puede ser
elegido libremente, en algunos lenguajes de programación se permite que los índices puedan
ser negativos e incluso de cualquier tipo escalar (también cadenas de caracteres).
Índice 15 16 17 18 19 20 21 22 23 24
A[10]
En el ítem de declaración se vio cómo los arreglos pueden tener hasta N dimensiones,
y según ésta cantidad se puede clasificar como:
Unidimensional.
Éste tipo de arreglo también llamado vector, se puede visualizar como una columna o una
fila de celdas apiladas. Al ser declarado, los corchetes que acompañan al identificador llevan
un solo número asociado, el número de celdas.
Índice 1 2 3 4 5 6 7 8 9 10
Edades[10]
Unidad 1. Computación 2. Lapso: 2017-I.
Bidimensional.
Los arreglos bidimensionales se suelen llamar matrices por su semejanza con éste
elemento matemático. Al declarar éste tipo de arreglo, los corchetes que acompañan al
identificador contendrán dos números separados por comas, el primero de ellos indica el
número de filas de la matriz y el segundo indica el número de columnas.
Columnas
Índices 1 2 3 4 5
1
2
Filas
3
4
Multidimensional.
3
3
4 2
5 1
1 2 3 4 5 6
Unidad 1. Computación 2. Lapso: 2017-I.
Asignación.
Lectura.
Recorrido.
Ejemplo 1.
Procesar las cuotas anuales de un préstamo realizando la lectura del arreglo, suma y
promedio.
Índice 1 2 3 4 5 6 7 8 9 10 11 12
Cuotas[12]
Ejemplo 2.
Del algoritmo anterior, diseñe un código que muestre las cuotas mayores al promedio.
Ejemplo 3.
Búsqueda.
Si existe:
Mostrar (“Elemento Existe”)
Mostrar (“Posición”, i)
Si no existe:
Mostrar (“El elemento no existe”)
Ejemplo 1.
Ordenamiento.
Existen tres métodos básicos para realizar esta operación, Método del Intercambio o
Burbuja, Método de Inserción o de la Baraja y Ordenamiento por Selección.
5 6 3 2 1
5 3 6 2 1
5 3 2 6 1
5 3 2 1 6
3 5 2 1 6
3 2 5 1 6
3 2 1 5 6
3 2 1 5 6
2 3 1 5 6
2 1 3 5 6
2 1 3 5 6
2 1 3 5 6
1 2 3 5 6
1 2 3 5 6
1 2 3 5 6
1 2 3 5 6
Repetir_Desde (I=1;I<=5;I=I+1)
Mostrar (A[I])
Fin_Repetir_Desde
Fin
2 3 5 6 1
2 3 5 1 6 Cuarto Ciclo n=5
2 3 1 5 6
2 1 3 5 6
1 2 3 5 6 Fin
A[I+1] = A[I]
A[I] = AUX
I = I-1
Fin_Repetir_Mientras
Fin_Repetir_Desde
Repetir_Desde (I=1;I<=5;I=I+1)
Mostrar (A[I])
Fin_Repetir_Desde
Fin
Este método consiste en hacer un recorrido del arreglo para seleccionar el menor de los
elementos y posicionarlo en el primer lugar, luego se busca el segundo menor y se ubica de
segundo y así sucesivamente.
5 6 3 2 1
Unidad 1. Computación 2. Lapso: 2017-I.
1 6 3 2 5
1 2 3 6 5
1 2 3 6 5
1 2 3 5 6
6. Problemas Resueltos.
1) Se tiene el monto de cada una de 100 ventas. Por cada venta calcule el IVA (12%) y
muestre el monto a pagar. Calcule y muestre el monto total en ventas y monto total en
impuesto por todas las 100 ventas.
Suma_totalSuma_total+monto[i]
Suma_ivaSuma_iva+iva[i] Fin del Ciclo
Fin_Repetir_Desde Mostrar los valores de sumas de totales e iva
Mostrar(Suma_total, Suma_iva) calculados
Fin
2) Dado un conjunto de 36 números enteros llene una matriz de orden 6 con dichos números
y calcule:
(a) La sumatoria de los números ubicados en la primera y la última fila. (i=1 e i=6,
suma[1]).
(b) La sumatoria de los números ubicados en la primera y la última columna. (j=1 y
j=6, suma[2]).
(c) La sumatoria de los números por arriba de la diagonal principal y los números por
debajo de la diagonal principal. (i<j, suma[3] e i>j,suma[4]).
Fin_Repetir_Desde
Fin_Repetir_Desde Acumulador para la diagonal
inferior
Mostrar(“Suma de Filas”, suma[1])
Mostrar(“Suma de Columnas”, suma[2])
Mostrar(“Suma de la diagonal superior”, suma[3])
Mostrar(“Suma de la diagonal inferior”, suma[4])
Fin
Unidad 1. Computación 2. Lapso: 2017-I.
REGISTROS.
1. Definición.
Ejemplo: un registro de los pasajeros de un avión puede contener los siguientes datos:
Tipo de
Caracter Entero Entero Entero Real Carácter Caracter
Dato
Nombre
de la Nombre N_Vuelo Fecha N_Asiento Costo_Pasaje Origen Destino
Variable
Ejemplo: el campo fecha está compuesto por los subcampos día, mes y año:
Fecha
Día Mes Año
2. Declaración de un Registro.
Un registro es un tipo de dato definido por el usuario, éste se debe declarar antes
de que se pueda utilizar.
Al igual que a otro tipo de datos, a un registro se accede utilizando una variable o
variables, que se deben definir después de la declaración del registro, ya que la
declaración especifica simplemente el nombre y el formato del registro, pero no reserva el
espacio en memoria.
Unidad 1. Computación 2. Lapso: 2017-I.
Cada definición de variable para un registro dado, crea un área en memoria donde
los datos se almacenan de acuerdo al formato estructurado, declarado previamente.
Campos Simples.
En este caso los campos del registro están formados por variables de tipo simple,
por ejemplo, un registro de la nota de un curso podría definirse de la manera siguiente.
Registro Tabla_Alumno
caracter nombre[20]
enterocedula
real nota1, nota2, nota3, nota4
Fin_Registro
Los campos del registro pueden ser arreglos, por ejemplo, en el caso anterior si se
desea guardar cuatro notas por alumno se puede declarar el registro de la siguiente
manera.
Registro Tabla_Alumno
caracter nombre[20]
enterocedula
Unidad 1. Computación 2. Lapso: 2017-I.
real notas[4]
Fin_Registro
Tabla_Alumno
nombre [20] cedula nota[1] nota[2] nota[3] nota[4]
Ana
17892475 14 19 13 16
Gonzalez
Alumno.nota[1]=14
Alumno.nota[2]=19
EJERCICIOS RESUELTOS.
Ingreso de los datos, las notas de los alumnos, y realizar el cálculo de la nota final.
Visualización de la tabla con los datos cargados.
Cálculo de Estadísticas: Cantidad de Alumnos aprobados y Cantidad de alumnos
Reprobados.
Estas opciones se deben ejecutar mediante un menú:
[1] Ingreso de Datos.
[2] Visualización de los Alumnos.
[3] Estadísticas del Curso.
[4] Buscar Alumno por su C.I.
[5] Salir del Programa.
Alumnos [40]
Tabla_Alumnos
Notas [5]
Nombre Cedula
Notas [1] Notas [2] Notas [3] Notas [4] Notas [5]
1
2
.
.
.
40
Unidad 1. Computación 2. Lapso: 2017-I.
opcion ← 1
Repetir mientras (opción>=1 Y opcion <5)
En caso de (opcion)
1:
Repetir desde( i=1;i<=40;i=i+1)
Mostrar (“Alumno ”, i)
Mostrar (“Ingrese el nombre del alumno”)
Leer (Alumnos[i].nombre)
Mostrar (“Ingrese la cédula del alumno”)
Leer (Alumnos[i].cedula)
Alumnos[i].notas[5] = 0 //Inicialización del Acumulador para la nota
Repetir desde (j=1; j<=4;j=j+1)
Mostrar (“Ingrese la nota”, j)
Leer (Alumnos[i].notas[j])
Alumnos[i].notas[5]= Alumnos[i].notas[5]+Alumnos[i].notas[j]
Fin_Repetir_Desde
Fin_Repetir_Desde
Mostrar(“Fin de Carga de notas”)
Unidad 1. Computación 2. Lapso: 2017-I.
2:
Mostrar(“Nombre Cedula Nota 1 Nota 2 Nota 3 Nota 4 Nota F”)
Repetir desde ( i=1;i<=40;i=i+1)
Mostrar (Alumnos[i].nombre)
Mostrar (Alumnos[i].cedula)
Repetir desde (j=1; j<=5;j=j+1)
Mostrar (Alumnos[i].notas[j])
Fin_Repetir_Desde
Fin_Repetir_Desde
3:
aprobados =0
reprobados = 0
Repetir desde ( i=1;i<=40;i=i+1)
Si (Alumnos[i].notas[5]>=50)
aprobados = aprobados +1
Si no
reprobados = reprobados + 1
Fin_Si
Fin_Repetir_Desde
4: //Búsqueda de alumno
busqueda = 0
Mostrar ("Introduzca la Cédula del Alumno: ")
Leer (cedulab)
Repetir_Desde ( i=1;i<=40;i=i+1)
Si (cedulab == Seccion_N1[i].cedula)
busqueda=1
Mostrar ("Las Notas del Alumno son: ")
Repetir_Desde (j=1;j<=5;j=j+1)
Mostrar ("Nota ", j, ": ", Seccion_N1[i].Notas[j])
Fin_Repetir_Desde
Fin_Si
Fin_Repetir_Desde
Si ( busqueda==0)
Mostrar ("Cédula no existente")
Fin_Si
Unidad 1. Computación 2. Lapso: 2017-I.
5:
Mostrar(“Fin del Programa”)
Fin_En_Caso_de
Fin_Repetir_Mientras
Fin
2. Una videotienda posee 100 tipos de películas que son alquiladas a clientes. Las
películas están codificadas, por lo que por cada una de ellas se tiene: código, título,
género y cantidad existente. Además, existe un registro de los 100 usuarios con los
siguientes datos: número de carnet, nombre, estado (A: activo y S: suspendido).
Cada uno de los 100 usuarios puede alquilar una película sólo si no está suspendido
y para ello se debe registrar en el momento del alquiler: número de carnet, código de la
película y fecha de entrega programada. Si al entregar la película, la fecha de entrega es
posterior a la fecha programada el día del alquiler, se coloca el estado como suspendido.
Se pide elaborar un algoritmo que permita ejecutar los siguientes procesos:
La ejecución de cada uno de los procesos debe ser seleccionada a través de un menú de
opciones, como se muestra a continuación:
Peliculas [100]
Tabla_Peliculas
k Código Título Genero Cantidad
1
2
.
.
.
100
Unidad 1. Computación 2. Lapso: 2017-I.
Clientes [100]
Tabla_Usuarios
j Carnet Nombre Estado
1
2
.
.
.
100
Fecha
Dia Mes Año
Alquiler [100]
Tabla_Alquiler
m Entrega
Carnet Codigo
Dia Mes Año
1
2
.
.
.
100
Registro Tabla_Usuarios
Entero carnet
Carácter nombre[10], estado
Fin_Registro
Registro Fecha
Entero dia, mes, año
Fin_Registro
Unidad 1. Computación 2. Lapso: 2017-I.
Registro Tabla_Alquiler
Entero carnet, código
Fecha entrega
Fin_Registro
En caso de (opcion)
1:
respuesta =‟s‟
Repetir Mientras (respuesta==‟s‟ || respuesta==‟S‟)
Mostrar (“Ingrese los Datos de la Película”)
Mostrar (“Código”)
Leer (Peliculas[k].codigo)
Mostrar (“Cantidad”)
Leer (Peliculas[k].cantidad)
Mostrar (“Título”)
Leer (Peliculas[k].titulo)
Mostrar (“Género”)
Leer (Peliculas[k].genero)
Unidad 1. Computación 2. Lapso: 2017-I.
k=k+1
Mostrar (“Desea Ingresar otra Película?? S/N”)
Leer (respuesta)
Fin_Repetir_Mientras
2:
Mostrar (“Listado de Películas”)
Mostrar (“Código Título Género Cantidad”)
Repetir desde i =1;i<=k;i=i+1)
Mostrar (Peliculas[i].codigo)
Mostrar (Peliculas[i].titulo)
Mostrar (Peliculas[i].genero)
Mostrar (Peliculas[i].cantidad)
Fin_Repetir_desde
3:
respuesta =‟s‟
Repetir Mientras (respuesta==‟s‟ || respuesta==‟S‟)
Mostrar (“Ingrese los Datos del Nuevo Usuario”)
Mostrar (“Numero de Carnet”)
Leer (Clientes[j].carnet)
Mostrar (“Nombre”)
Leer (Clientes[j].nombre)
Clientes[j].estado =‟A‟
j=j+1
Mostrar (“Desea Ingresar otro usuario?? S/N”)
Leer (respuesta)
Fin_Repetir_Mientras
4:
Mostrar (“Codigo Nombre Estado”)
Repetir desde (i =1;i<=j;i=i+1)
Mostrar (Clientes[i].carnet)
Mostrar (Clientes[i].nombre)
Mostrar (Clientes[i].estado)
Fin_Repetir_Desde
5:
Mostrar (“Alquiler de Película”)
Mostrar (“Introduzca el Número de Carnet del Cliente”)
Leer (carnet)
búsqueda1 = 0
Repetir desde (i =1;i<=j;i=i+1)
Si (Clientes[i].carnet == carnet)
búsqueda1 = 1
Si (Clientes[i].estado == „A‟ || Clientes[i].estado == „a‟)
Unidad 1. Computación 2. Lapso: 2017-I.
6:
Mostrar (“Devolver Película”)
Mostrar (“Introduzca el Número de Carnet del Cliente”)
Leer (carnet)
búsqueda1 = 0
Repetir desde (i = 1 ; i < m; i=i+1)
Si (Alquiler[i].carnet == carnet)
búsqueda1 = 1
Mostrar (“Introduzca la fecha actual”)
Leer (dia, mes, año)
Si (año > Alquiler [i].entrega.año)
Unidad 1. Computación 2. Lapso: 2017-I.
Suspendido = 1
Si no
Si (mes>=Alquiler[i].entrega.mes &&
dia>Alquiler[i].entrega.dia)
Suspendido = 1
Fin_Si
Fin_Si
Si (Suspendido == 1)
Repetir desde (n=1;n<= j;n=n+1)
Si (Clientes[n].carnet == carnet)
Clientes [n].estado = „S‟
Fin_Si
Fin_Repetir_Desde
Fin_Si
Fin_Si
Repetir desde (n=1;n<= k;n=n+1)
Si (Alquiler[i].código == Películas[n].código)
Películas[n].cantidad = Películas[n].cantidad + 1
Fin_Si
Fin_Repetir_Desde
7:
Mostrar (“Activar Usuario”)
Mostrar (“Introduzca el Numero de Carnet:”)
Leer (carnet)
busqueda1 = 0
Repetir Desde (i=1;i<j;i=i+1)
Si (carnet == Clientes[i].carnet)
busqueda1=1;
Clientes[i].estado='A';
Mostrar (“Cliente Reactivado Exitosamente...”)
Fin_Si
Fin_Repetir_Desde
Unidad 1. Computación 2. Lapso: 2017-I.
Si (busqueda1==0)
Entonces
Mostrar (“Numero de Carnet incorrecto”)
Fin_Si
8:
Mostrar (“Fin del Programa”)
Fin_En_Caso_de
Fin_Repetir_Mientras
Fin