Act. 3.
4 Arreglos y Registros
Herrera Vázquez ángel Emiliano
Escuela politécnica de Guadalajara
Quinto año, grupo B, turno matutino
Carrera: TPSI
Modulo: desarrollo de software
Introducción
Competencias genéricas:
Te expresaste y comunicaste:
4. Escuchaste, interpretaste y emitiste mensajes pertinentes en distintos contextos mediante la utilización de
medios, códigos y herramientas apropiados.
Atributo: 4.3 Identificaste las ideas clave en un texto o discurso oral e inferiste conclusiones a partir de ellas.
Te autodeterminaste y cuidaste de ti mismo:
Te conociste y valoraste a ti mismo, abordando problemas y retos teniendo en cuenta los objetivos que
perseguías. Atributo: 1.4 Analizaste críticamente los factores que influyeron en tu toma de decisiones.
Pensaste de manera crítica y reflexiva:
6. Sostuviste una postura personal sobre temas de interés y relevancia general, considerando otros puntos de
vista de manera crítica y reflexiva.
Atributo: 6.2 Evaluaste argumentos y opiniones e identificaste prejuicios y falacias.
Competencia disciplinar:
Humanidades 8. Valoraste el pensamiento lógico en el proceso comunicativo en tu vida cotidiana y académica.
Competencia profesional:
Formulaste programas informáticos de acuerdo con las necesidades de los usuarios y a las características del
equipo a utilizar.
Los arreglos y registros en programación son herramientas fundamentales para almacenar y
organizar grandes cantidades de datos de manera eficiente. Estas estructuras no solo facilitan la
manipulación de la información, sino que también potencian la creación de soluciones informáticas
adaptadas a necesidades específicas. Al desarrollar competencias genéricas como la comunicación
efectiva y la expresión de ideas clave, los estudiantes aprenden a identificar patrones y organizar la
información en códigos y herramientas apropiadas. En este sentido, los arreglos y registros permiten
representar estructuras complejas, como facturas de un negocio, mejorando la toma de decisiones
al analizar críticamente los factores que afectan el diseño y la implementación de un programa.
Desarrollo
Definir NOMBRE_MAX como 50
Definir DOMICILIO_MAX como 50
Definir FACTURAS_MAX como 500
Tipo NombreCliente:
nombre como cadena[NOMBRE_MAX]
apellidoPaterno como cadena[NOMBRE_MAX]
apellidoMaterno como cadena[NOMBRE_MAX]
Tipo DomicilioCliente:
calle como cadena[DOMICILIO_MAX]
numeroInterior como cadena[10]
numeroExterior como cadena[10]
colonia como cadena[DOMICILIO_MAX]
ciudad como cadena[DOMICILIO_MAX]
estado como cadena[DOMICILIO_MAX]
codigoPostal como cadena[10]
Tipo FechaFactura:
dia como entero
mes como entero
año como entero
Tipo Factura:
numeroFactura como entero
fecha como FechaFactura
clienteNombre como NombreCliente
clienteDomicilio como DomicilioCliente
rfc como cadena[14]
subtotal como real
iva como real
total como real
Definir facturas como arreglo de Factura[FACTURAS_MAX]
Definir contador como entero = 0
Proceso principal:
Llamar a MenuP
Proceso MenuP:
Definir opc como entero
Hacer
Escribir "Menú Principal"
Escribir "1. Ingresar una factura"
Escribir "2. Mostrar facturas del mes"
Escribir "3. Imprimir todas las facturas"
Escribir "4. Buscar por número de factura"
Escribir "5. Buscar por nombre del cliente"
Escribir "6. Salir"
Escribir "Seleccione una opción: "
Leer opc
Según opc hacer
Caso 1: Llamar a Ingresar_una_factura
Caso 2: Llamar a Mostrar_facturas_del_mes
Caso 3: Llamar a Imprimir_todas_las_facturas
Caso 4: Llamar a Buscar_x_numero_de_factura
Caso 5: Llamar a Buscar_x_nombre_del_cliente
Caso 6: Escribir "Ha salido del programa"
Otro: Escribir "ERROR: Opción inválida."
Fin Según
Mientras opc != 6
Proceso Ingresar_una_factura:
Si contador >= FACTURAS_MAX Entonces
Escribir "No se pueden ingresar más facturas."
Salir
Fin Si
Definir nuevaFactura como Factura
Escribir "Ingrese el número de la factura: "
Leer nuevaFactura.numeroFactura
Repetir
Escribir "Ingrese el día (1-31): "
Leer nuevaFactura.fecha.dia
Escribir "Ingrese el mes (1-12): "
Leer nuevaFactura.fecha.mes
Escribir "Ingrese el año: "
Leer nuevaFactura.fecha.año
Hasta que ValidarFecha(nuevaFactura.fecha.dia, nuevaFactura.fecha.mes, nuevaFactura.fecha.año)
Escribir "Ingrese el nombre del cliente: "
Leer nuevaFactura.clienteNombre.nombre
Escribir "Ingrese el apellido paterno: "
Leer nuevaFactura.clienteNombre.apellidoPaterno
Escribir "Ingrese el apellido materno: "
Leer nuevaFactura.clienteNombre.apellidoMaterno
Escribir "Ingrese la calle: "
Leer nuevaFactura.clienteDomicilio.calle
Escribir "Ingrese el número interior: "
Leer nuevaFactura.clienteDomicilio.numeroInterior
Escribir "Ingrese el número exterior: "
Leer nuevaFactura.clienteDomicilio.numeroExterior
Escribir "Ingrese la colonia: "
Leer nuevaFactura.clienteDomicilio.colonia
Escribir "Ingrese la ciudad: "
Leer nuevaFactura.clienteDomicilio.ciudad
Escribir "Ingrese el estado: "
Leer nuevaFactura.clienteDomicilio.estado
Escribir "Ingrese el código postal: "
Leer nuevaFactura.clienteDomicilio.codigoPostal
Escribir "Ingrese el RFC: "
Leer nuevaFactura.rfc
Escribir "Ingrese el subtotal: "
Leer nuevaFactura.subtotal
Llamar a CalcularIVAyTotal(nuevaFactura)
Asignar facturas[contador] = nuevaFactura
Incrementar contador
Escribir "Factura ingresada correctamente."
Proceso CalcularIVAyTotal(factura como Factura):
Asignar factura.iva = factura.subtotal * 0.16
Asignar factura.total = factura.subtotal + factura.iva
Función ValidarFecha(dia como entero, mes como entero, año como entero) como entero:
Si mes < 1 o mes > 12 Entonces
Escribir "Mes inválido."
Retornar 0
Fin Si
Si dia < 1 o dia > 31 Entonces
Escribir "Día inválido."
Retornar 0
Fin Si
Definir diasPorMes como arreglo de enteros = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
Si mes == 2 y ((año % 4 == 0 y año % 100 != 0) o año % 400 == 0) Entonces
Asignar diasPorMes[1] = 29
Fin Si
Si dia > diasPorMes[mes - 1] Entonces
Escribir "Día inválido para el mes dado."
Retornar 0
Fin Si
Retornar 1
Proceso Mostrar_facturas_del_mes:
Proceso Imprimir_todas_las_facturas:
Proceso Buscar_x_numero_de_factura:
Proceso Buscar_x_nombre_del_cliente:
Algoritmo cualitativo:
1. Menú principal:
o Se despliega el menú principal con las siguientes opciones:
1. Ingresar una factura.
2. Mostrar las facturas del mes.
3. Imprimir todas las facturas.
4. Buscar por número de factura.
5. Buscar por nombre del cliente.
6. Salir.
2. Opción 1: Ingresar una factura
o Solicita los siguientes datos:
▪ Número de la factura.
▪ Fecha de la factura: día, mes y año (valida que el día y el mes sean correctos).
▪ Nombre del cliente: nombre, apellido paterno, y apellido materno.
▪ Domicilio del cliente: calle, número interior, número exterior, colonia, municipio o
ciudad, estado, y código postal.
▪ RFC del cliente.
▪ Subtotal de la factura.
o Calcula el IVA (16%) y el total (subtotal + IVA).
o Almacena la factura en el arreglo.
3. Opción 2: Mostrar las facturas del mes
o Solicita el mes que el usuario desea consultar.
o Busca todas las facturas que correspondan a dicho mes.
o Si no hay facturas en ese mes, muestra un mensaje indicando que no hay facturas.
o Si hay facturas, las imprime una por una, mostrando:
▪ Número de factura.
▪ Fecha.
▪ Nombre del cliente.
▪ Subtotal, IVA y total.
o Después de mostrar las facturas, calcula y muestra:
▪ El total acumulado de los subtotales, IVA y total de las facturas del mes.
4. Opción 3: Imprimir todas las facturas
o Muestra todas las facturas almacenadas.
5. Opción 4: Buscar por número de factura
o Solicita el número de la factura que desea buscar.
o Busca la factura por su número y la muestra si existe.
o Si no la encuentra, muestra un mensaje indicando que no existe.
6. Opción 5: Buscar por nombre del cliente
o Solicita el nombre del cliente.
o Busca todas las facturas asociadas a ese cliente.
o Si no hay facturas a nombre del cliente, muestra un mensaje de que no existen facturas para
ese cliente.
o Si hay facturas, las imprime y muestra cuántas facturas existen a su nombre.
7. Opción 6: Salir
o Termina la ejecución del programa.
Conclusión
El uso de arreglos y registros en la programación fomenta el pensamiento crítico y lógico, ya que
requieren evaluar distintos puntos de vista y considerar múltiples soluciones a un mismo
problema. Estas habilidades permiten a los programadores analizar de manera reflexiva los
argumentos que influyen en sus decisiones técnicas y evitar falacias o prejuicios en sus diseños. En
términos profesionales, la capacidad de formular programas informáticos que respondan a las
necesidades del usuario es esencial, y el uso adecuado de estructuras como los arreglos y registros
refuerza esta competencia.
Bibliografía
http://Programacion_en_C_C_Java_y_UML_2da_Edici%20(2).pdf
Battistutti, O. C. (2006). FUNDAMENTOS DE PROGRAMACION: piensa en c.