Monografias.com > Computación
Descargar Imprimir Comentar Ver trabajos relacionados

Registros – Estructuras Heterogéneas para el desarrollo de algoritmos




Enviado por Pablo Turmero




    Diseño de algoritmos usando tipos de datos
    estructurados heterogéneos – Monografias.com

    Diseño de algoritmos usando tipos
    de datos estructurados heterogéneos

    2.1.- Registros:

    Definición, declaración y
    formas de representación.

    Registro: Es un conjunto de datos elementales de
    diferentes tipos, lógicamente relacionados, los cuales se
    agrupan bajo un nombre común. Cada elemento del registro
    recibe el nombre de miembro ó campo del
    registro.

    Ejemplo 1: Un registro de los pasajeros de un
    avión puede contener:

    Monografias.com

    Ejemplo 2: Un registro de los
    clientes y las transacciones de un banco

    Monografias.com

    Monografias.com

    Definición de un registro
    :

    Un registro es un tipo de dato diseñado por el
    usuario, que se debe definir antes de que se pueda
    utilizar.

    Formato de la Definición : Ej :

    Registro nombre_registro Registro
    t_empleado

    tipo nombre campo_1 caracter nombre[10]

    tipo nombre campo_2 real sueldo

    : entero edad

    Fin Registro Fin Registro

    Variables tipo registro :

    Al igual que a otro tipo de datos, a un registro se
    accede utilizando una variable ó variables, que se deben
    declarar después de la definición del registro, ya
    que la definición especifica simplemente el nombre
    y el formato del registro, pero no reserva almacenamiento
    en memoria.

    Declaración de Variables tipo registro
    :

    Cada declaración de variable para un registro
    dado, crea un área en memoria , donde los datos se
    almacenan de acuerdo al formato estructurado
    declarado
    .

    Formato de la declaración :

    Nombre_ Registro Nombre_variable

    Ejemplo : t_empleado obrero, administrativo

    En el ejemplo , se declaran las variables obrero
    y administrativo del tipo de registro t_empleado ,
    por lo que cada una de las variables consta de los campos :
    nombre, sueldo y edad.

    Acceso a los campos de un registro :

    Se puede acceder a los campos de un registro usando el
    operador punto ( . ). Formato : nombre_variable_ tipo_
    registro. nombre_campo

    Ejemplo :

    obrero.nombre = Juan

    Asigna al campo nombre de la variable obrero, el nombre
    Juan

    Otra forma seria leyendo el nombre a través del
    teclado :

    Leer (obrero.nombre)

    • 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 t_alumno

    caracter nombre[20]

    entero cedula

    real nota

    fin_registro

    • Campos constituidos por arreglos:

    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 t_alumno

    car nombre[20]

    ent cedula

    real nota[4]

    fin_registro

    nombre

    cedula

    nota[1]

    nota[2]

    nota[3]

    nota[4]

    Este registro permite almacenar las 4 notas de un
    alumno

    Si se declara una variable alumno usando ese
    registro t_alumno :

    Para hacer referencia a un elemento del registro, se
    escribe:

    alumno.nota[1] = 15

    alumno.nota[2] = 18

    En este caso, el registro interno debe definirse antes
    del registro principal.

    Ejemplos:

    1.-Se desea almacenar los datos de un producto en un
    registro. Cada producto debe guardar información
    concerniente a su código, nombre y precio. Diseñar
    la estructura de datos correspondiente y cargar los datos en el
    registro.

    Algoritmo Creación de Registro

    Inicio

    // Definición del Registro

    Registro t_producto

    caracter codigo[3], nombre[10]

    real precio

    Fin Registro

    // Declaración de la variable tipo
    registro

    t_producto detergente

    Mostrar (" Introduzca el código del producto "
    )

    Leer (detergente.codigo)

    Mostrar (" Introduzca el nombre del producto "
    )

    Leer (detergente.nombre)

    Mostrar (" Introduzca el precio del producto "
    )

    Leer (detergente.precio)

    Fin

    2.- Una farmacia desea almacenar sus productos en una
    estructura de registros. Cada registro tiene los campos : codigo,
    nombre, precio, stock, fecha de vencimiento. La fecha debe
    guardar por separado día, mes y año , para lo cual
    se declarará otro regsitro.

    Diseñar un algoritmo que permita :

    • Diseñar la estructura de datos

    • Mostrar los campos de un medicamento

    Algoritmo Ejemplo

    Inicio

    Registro t_fecha

    entero dia, mes, año

    Fin Registro

    Registro t_medicina

    carácter codigo[3], nombre[10]

    entero precio, stock

    t_fecha vencimiento

    Fin Registro

    t_medicina analgésico

    Mostrar ( analgésico.codigo)

    Mostrar ( analgésico.nombre)

    Mostrar ( analgésico.precio)

    Mostrar ( analgésico.stock)

    Mostrar (
    analgésico.vencimiento.dia)

    Mostrar
    (analgésico.vencimiento.mes)

    Mostrar
    (analgésico.vencimiento.año)

    Fin

    Arreglos de Registros :

    Se puede crear un arreglo de registros tal como se crea
    cualquier tipo de arreglo, indicando el nombre y la
    dimensión. Los arreglos de registros son usados para
    almacenar datos en un archivo de disco.

    Declaración de un Arreglo de Registros
    :

    Formato :

    nombre_registro nombre_arreglo [ Dimensión
    ]

    Ejemplo:

    t_medicina analgésico[100]

    Acceso a los campos de un Arreglo de Registros
    :

    Formato :

    nombre_arreglo[posición].nombre_campo

    Ejemplo :

    Leer ( analgésico[10].stock ) //Accesa el campo
    stock del elemen-

    to ubicado en la posición 10 del arre-

    glo de registros llamado analgésico.

    Ejemplos :

    • 1. Dada una tabla que contiene los datos
      NOMBRE, EDAD y PESO de un grupo de 300 estudiantes de una
      escuela primaria, Diseñar un algoritmo que permita
      cargar los datos y determinar cuantos estudiantes son mayores
      de 10 años y tienen un peso superior a 20
      Kg.

    algoritmo contar_alumnos

    Inicio

    //Definición de registro tipo
    alumno

    Registro t_alumno

    caracter nombre

    entero edad

    real peso

    Fin Registro

    //Declaración de Arreglo

    t_alumno LISTA[50]

    entero i, contador

    //Cargar datos

    repetir_desde (i = 1 ; i <=
    50;i=i+1)

    mostrar( "Introducir nombre, edad y peso del alumno", i
    )

    leer(LISTA(i).nombre)

    leer(LISTA(i).edad)

    leer(LISTA(i).peso)

    fin_repetir_desde

    contador = 0

    Repetir desde i (i = 1 ; i <=
    50;i=i+1)

    Si ((LISTA[i].edad > 10) &&
    (LISTA[i].peso > 20))

    contador = contador + 1

    Fin Si

    Fin Repetir desde

    mostrar("Nº Alumnos EDAD > 10 y PESO > 20
    : ",
    CONTADOR)

    Fin

    Aplicaciones sobre Arreglos de
    Registros

    1.- Un restaurant posee una serie de insumos necesarios
    para la elaboración de los platos que ofrece en carta, por
    lo que es de vital importancia conocer cuando llegan a la
    existencia mínima permitida cada uno de sus 50 insumos,
    para lo cual se ejecutan los siguientes procesos :

    – El encargado del almacén posee un listado con
    código, nombre, cantidad en existencia y stock
    mínimo

    – El encargado de la cocina elabora solicitudes de
    insumos constantemente, en las cuales especifica : codigo y
    cantidad requerida.

    – El encargado del almacén, al recibir la orden,
    envía la cantidad requerida y periódicamente, emite
    un listado con los códigos de los insumos que llegaron al
    stock mínimo.

    Elabore un algoritmo que permita realizar las
    operaciones antes descritas, diseñando las estructuras de
    datos correspondientes. Usar un menú de
    opciones.

    Análisis:

    Diseño de las estructuras de datos :

    El almacén lleva la información
    según la siguiente tabla:

    t_almacén

    codigo

    nombre

    cant_ex

    stock_min

    1

    ¦

    50

    El pedido y el reporte tienen las siguientes
    estructuras:

    t_cocina

    reporte

    codigo

    Cant_req

    codigo

    1

    1

    ¦

    ¦

    k

    m

    Diseño del algoritmo :

    algoritmo Proceso de Restaurant

    Inicio

    // Declaracion de variables

    Entero i, k, m, opcion = 1

    Caracter reporte [50,10], respuesta =
    "s"

    registro t_almacen

    caracter codigo[10], nombre[20]

    entero cant_ex, stock_min

    fin registro

    t_almacen almacen[50]

    registro t_cocina

    caracter codigo[10]

    entero cant_req

    fin_registro

    t_cocina cocina[50]

    repetir mientras ( opcion<4 )

    mostrar("Introduzca su opción :")

    mostrar("[1] Registrar datos")

    mostrar("[2] Elaborar Pedido")

    mostrar("[3] Enviar Pedido y Elaborar
    Reporte")

    mostrar("[4] Salir")

    leer(opcion)

    en caso de (opcion)

    caso 1: // Registrar datos

    repetir_desde i = 1 hasta i==50

    Mostrar (" Introduzca codigo,nombre, cantidad y
    stock del insumo ", i )

    leer(almacen[i].codigo)

    leer(almacen[i].nombre)

    leer(almacen[i].cant_ex)

    leer(almacen[i].stock_min)

    fin_repetir_desde

    caso 2: // Elaborar Pedido

    k =0

    repetir mientras(resp== "s")

    k = k+1

    mostrar("Introduzca codigo del insumo ",
    k)

    leer(cocina[k].codigo))

    mostrar("Introduzca cantidad del insumo ", k)
    leer(cocina[k].cant_req)

    mostrar("Desea solicitar otro insumo
    s/n")

    leer(respuesta)

    fin repetir mientras

    mostrar ("Reporte de Insumos requeridos :" )

    mostrar ( " codigo cantidad requerida" )

    repetir desde i=1 hasta i== k

    mostrar ( cocina[i].codigo , cocina[i].cant.req
    )

    fin repetir desde

    caso 3: // Enviar Pedido

    m = 0

    repetir_desde i = 1 hasta i==k

    repetir_desde j = 1 hasta j==50

    si(cocina[i].codigo =
    almacen[j].codigo)

    almacen[j].cant_ex=almacen[j].cant_ex
    –cocina[i].cant_req

    si(almacen[j].cant_ex <=
    lmacen[j].stock_min)

    m = m+1

    reporte[m] = cocina[i].codigo

    fin_si

    fin_si

    fin_ repetir_desde

    fin_ repetir_desde

    // Elaborar Reporte

    mostrar("Reporte de Componentes
    Faltantes")

    repetir_desde i = 1 hasta i ==
    m

    mostrar(REPORTE[i])

    fin_repetir_desde

    caso 4: // Finalizar

    Mostrar ( " Fin del programa " )

    Fin en caso de

    Fin repetir mientras

    Fin

    2.- .-Una empresa que se dedica a la venta de
    vehículos cuenta con 10 vendedores. La información
    sobre el número de vehículos vendidos es registrada
    semanalmente por cada uno de los vendedores, indicando
    además su nombre y cédula.

    Se desea diseñar un algoritmo que , asumiendo
    registrada la información por vendedor , permita
    :

    • Dado el número de cédula, mostrar el
      total de vehículos vendidos en el mes

    • A efectos de pagar un bono , se desea conocer el
      nombre del vendedor con mayores ventas .

    Diseño del Algoritmo :

    Algoritmo Ventas de vendedores

    Inicio

    // Declaración de variables

    entero i, j, tot_mes[10], ced, mayor

    registro t_vendedor

    caracter nombre[10]

    entero cedula, vent_sem[4]

    fin registro

    t_vendedor vendedor[10]

    mostrar("Introduzca el número de
    cédula")

    leer(ced)

    //Cálculo ventas por mes para todos los
    vendedores

    repetir desde i=1 hasta i==10

    tot_mes[i] = 0

    repetir desde j=1 hasta j==4

    tot_mes[i] = tot_mes[i] + vendedor[i] .
    vent_sem[j]

    fin repetir desde

    fin repetir desde

    //Búsqueda de la cédula
    leída

    repetir desde i=1 hasta i==10

    si (vendedor[i] . cedula ==
    ced)

    mostrar(" Cantidad vendida en el mes =", tot_mes[i]
    )

    fin si

    fin repetir desde

    //Búsqueda del vendedor con mayor cantidad de
    ventas

    mayor = tot_mes[1]

    repetir desde > i=1 hasta
    i==10

    si ( tot_mes[i] mayor )

    mayor = tot_mes[i]

    pos = i

    fin si

    fin repetir desde

    mostrar("vendedor con mayor cantidad de ventas =
    ",
    vendedor[pos] . nombre )

    fin

    EJERCICIOS PROPUESTOS

    1.- Una librería posee 20 tipos de textos que son
    alquilados a diversos clientes.Los textos se tienen codificados ,
    por lo que por cada texto se tiene : codigo, titulo, autor,
    cantidad existente.

    Además, existe un registro de los 100 usuarios,
    con los siguientes datos : número de carnet, nombre,
    estado ( A = activo, S = suspendido ).

    Cada uno de los 100 usuarios puede alquilar un texto
    solo si no está suspendido y para ello se debe registrar
    en el momento de alquilar un libro : número de carnet,
    código del libro, fecha de entrega programada.

    Si al entregar el texto, la fecha de entrega es
    posterior a la fecha programada el día del alquiler, se
    coloca el estado como suspendido.

    Se pide diseñar un algoritmo que permita ejecutar
    los siguientes procesos :

    – Registrar los 20 textos y los 100 usuarios,
    diseñando las estructuras de datos
    correspondienres.

    – Alquilar un texto a un cliente determinado.

    – Entregar un texto por parte del cliente, considerando
    el caso de suspensión si la entrega es posterior a la
    fecha programada.

    La ejecución de cada uno de los procesos debe ser
    seleccionada a través de un menú de
    opciones.

    2.- Una empresa dedicada a la conexión de
    televisión por cable posee una cartera de 50 clientes,
    donde por cada cliente se tiene : cédula,
    dirección, teléfono, número de plan de
    conexión. La empresa ofrece 5 planes diferentes, donde por
    cada plan ofrecido se guarda : número de plan de
    conexión, listado de los 14 canales que lo conforman,
    costo del plan.

    Diseñar un algoritmo para :

    • Registrar la información de los 5
      planes

    • Registrar los 50 clientes y si es necesario, incluir
      nuevos clientes, sin excederse de 100.

    • Modificar el costo de cualquier plan.

    • Generar el recibo de pago de cualquier
      cliente.

    3.- Una empresa dedicada a la venta de equipos
    electrónicos efectúa ventas al contado y a
    crédito. Cuando la venta se efectúa al contado se
    requiere emitir una factura con los siguientes datos : nombre del
    cliente, fecha de venta, cantidad de artículos, precio
    unitario y total a pagar. Si la venta se efectúa a
    crédito se requiere la siguiente información :
    nombre del cliente, teléfono, dirección, fecha de
    venta, deuda, cuota mensual, tasa de interés y estado ( 0
    : deuda pendiente, 1 : deuda cancelada ).

    Se pide desarrollar un algoritmo que :

    • Registre la información correspondiente a
      cada tipo de venta ( crédito o contado ).

    • Registre el pago de abonos a la deuda

    • Consulte la deuda de un cliente

    • Muestre el listado de clientes permitiendo
      seleccionar : lista completa, lista de clientes con
      deuda.

    4.- La información de un almacén se guarda
    en un registro con las siguientes características :
    código de los n artículos vendidos en el
    almacén y la existencia ( número de unidades por
    cada artículo).

    Por cada proveedor o cliente que llegue al
    almacén se graba un registro con los siguientes
    datos:

    • tipo de transacción ( 1 para proveedor :
      recibo, 2 para cliente : venta )

    • código del artículo recibido o
      vendido

    • Número de unidades recibidas o
      vendidas

    Se requiere manejar el proceso de cada
    transacción ( recibo o venta ) y en cada caso , mostrar el
    registro del almacén actualizado.

    5.-Un sistema que permite administrar una
    librería usa una estructura que contiene el
    código del libro, titulo y el precio
    del libro. Diseñar un algoritmo que permita las siguientes
    opciones presentadas en forma de menú.

    • (1) Registrar Libro

    • (2) Ordenar por precio en forma
      ascendente/descendente

    • (3) Buscar el libro de mayor/menor
      precio

    • (4) Salir

    El sistema deberá ser diseñado de manera
    que:

    • Se debe poder registrar varios libros y finalizar el
      ingreso cuando se desee.

    • El ordenamiento puede ser hecho de forma ascendente
      o descendente.

    • La búsqueda puede ser del de mayor o el de
      menor precio.

     

     

    Autor:

    Pablo Turmero

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter