Está en la página 1de 90

NOMBRE DEL REPORTE

Examen remedial

TÉCNICO SUPERIOR UNIVERSITARIO

NOMBRE DE LA CARRERA
:

NOMBRE DEL ALUMNO


Trejo Olivera Daniel

INTRODUCCIÓN

En el presente proyecto de estadías se desarrollará un sistema de inventario que incluirá una base de datos para la
empresa Fibra TV, ubicada en el Estado de Querétaro en el municipio de San Juan del Río, el proyecto consta de dos
etapas, la primera es de realizar una base de datos que pueda hacer operaciones llamadas CRUD que estas se refieren a
Create (crear), Read (leer), Update (actualizar) y Delete (eliminar) y estas ayudarán a que la información del almacén sea
más fácil de llevar un control adecuado.
En la segunda etapa se creará una aplicación que este se pretende que la entrega de material (entrada-salida) sea más
fácil y sin contratiempos, también se desea que esta aplicación se conozca a disponibilidad de material, los costos
unitarios por pieza, un ID que esto nos ayudara a ubicar el material que se desea, un contador de registro de fechas, el
número de almacén en donde se encuentran los materiales, la fotografía de cada uno de los artículos de los almacenes
ya que estos les va a beneficiar para saber que productos se requieren. Actualmente en la empresa la información del
almacén se está llevando por medio de Excel y Hojas de Cálculo de Google, desde tiempo atrás se había requerido que
pudiera tenerse un control adecuado de esto y además la información acerca de los materiales es consultada a través de
las distintas tablas que maneja la empresa en un archivo de Excel copiando y pegando datos, dependiendo del trámite
que la empresa requiera, lo que complica la manipulación de la información.
De acuerdo con esta problemática se diseñará esta, ya que es una herramienta de gestión que será empleada para
registrar las cantidades de los materiales existentes dentro de la empresa, así como para determinar los materiales en
consulta. Mediante el sistema será posible saber cuántos materiales se tiene en determinado momento y qué materiales
están por acabarse.

En el capítulo 1 se darán a conocer detalles sobre la empresa desde conceptos básicos que podemos decir que se
conocerán su misión, visión, el giro de la empresa, antecedentes de la empresa, e otros datos que vayan surgiendo.

El capítulo 2 trataremos las generalidades del proyecto, el objetivo, justificación y el alcance


en esta parte es el punto de partida para el desarrollo del trabajo que se realizará en el área de
Almacén.

El capítulo 3 se abordarán los principales conceptos, definiciones y aspectos teóricos que


se requieren conocer para el entendimiento y desarrollo del proyecto, es decir desde la base de datos, la programación,
los lenguajes con lo que se van a desarrollar, y también se menciona que es un sistema de inventario, para que sirve,
tipos y características.

En el capítulo 4 se abordará el desarrollo y la solución o soluciones completas del proyecto,


incluyendo en la propuesta desglosada: planteamiento, análisis, algoritmos, materiales,
diseños, simulaciones, programas, pruebas, experimentos, recopilación de datos, tratamiento
de datos, etc.

El capítulo 5 se van a mostrar los resultados finales y las pruebas que se pidieron para el proyecto.
CAPÍTULO I

ANTECEDENTES DE LA EMPRESA

1.1 Nombre de la empresa

FIBRA TV S.A de C.V

1.2 Antecedentes o historia de la empresa

FIBRA TV S.A. de C.V., es una compañía especialista en Servicios de Telecomunicaciones estando siempre a la
vanguardia. Está dirigido a Clientes Residenciales y Empresas Nacionales que requieren servicios de telecomunicaciones
con calidad de servicios. Personas que requieren atención al valor del servicio y que muestran interés por plataformas
innovadoras. Que les gusta un servicio de atención local, ahorro en comunicaciones y se inclinan por los servicios con
calidad y atención.

1.3 Misión

Ser una empresa de Telecomunicaciones que ofrece servicios de Internet, Televisión, Telefonía Fija y Redes con
soluciones encaminadas a resolver las necesidades de comunicación y conectividad para todo tipo de clientes, desde
Servicios Residenciales, PYMES, Empresariales e Instituciones Gubernamentales. Contamos con la confianza de nuestros
clientes, por nuestra innovación, calidad y entendimiento del negocio, mismos que nos permite desarrollar nuevos
servicios basados en las necesidades de los diversos sectores.

1.4 Visión

Ofrecer servicios de telecomunicaciones en la ciudad de San Juan del Rio y poder expandirse a más ciudades para ser
una empresa de alta calidad, además tendrá la seguridad de contar con el mejor servicio de Comunicaciones, basados en
infraestructura propia, red de datos altamente confiable y con los precios más competitivos del mercado.

1.5 Giro

Servicio de telecomunicaciones

1.6 Área de desarrollo del proyecto


Almacén

1.7 Logo de la empresa

FibraTv - San Juan del Rio


https://www.fibratv.com.mx

Ilustración 1.1 Logo de la Empresa

1.8 Ubicación de la empresa

Av. Lomas de San Juan 156, Lomas de San Juan, 76806 San Juan del Río, Qro.
Teléfono: 4272741515
Ilustración 1.2 Localización de la empresa

CAPÍTULO II

GENERALIDADES DEL PROYECTO

2.1 Título

Aplicación para Almacén Fibra TV S.A. de C.V

2.2 Objetivo del Proyecto

Desarrollo de un sistema para la empresa Fibra TV S.A. de C.V para la administración del almacén que les permita
verificar, controlar y mantener el equipo y material que ocupan los técnicos para el desempeño de las funciones.

2.3 Justificación

Con el diseño y desarrollo del sistema, se pretende que la empresa pueda implementar un sistema de control de
inventario que permita a los técnicos entregar equipo o identificar el material o equipo en mantenimiento, permitiendo
un mejor control a la hora de entrada-salida de material cuando los técnicos lo solicitan.

2.4 Alcance

Diseño, desarrollo e implementación de un sistema de control de inventarios para la empresa Fibra TV S.A. de C.V.
CAPÍTULO III

MARCO TEÓRICO FUNDAMENTAL

3.1 BASES DE DATOS

Una base de datos es una colección de información que está organizada de manera que se pueda acceder, administrar y
actualizar fácilmente. Las bases de datos informáticas suelen contener conjuntos de registros o archivos de datos, que
contienen información sobre transacciones de ventas o interacciones con clientes específicos.

3.1.1 Conceptos básicos sobre las bases de datos

Es el conjunto de información perteneciente a un mismo contexto, ordenada de modo sistemático para su posterior
recuperación, análisis y/o transmisión. Existen actualmente muchas formas de bases de datos, que van desde una
biblioteca hasta los vastos conjuntos de datos de usuarios de una empresa de telecomunicaciones. Gracias a las bases de
datos en formato digital se han podido solucionar muchos de los problemas que surgían a raíz de la ingente cantidad de
información que se maneja en la actualidad. Por ejemplo, permiten ahorrar espacio, agilizar las consultas y se puede
almacenar mucha más información. (Marqués-Andrés, 2011)

3.1.1.1 Evolución de las bases de datos

El inicio de las bases de datos tiene lugar en la antigüedad cuando se instauró un sistema manual para registrar y
organizar la información de las cosechas recogidas, los primeros censos y de los registros. Sin embargo, el proceso era
extremadamente lento, sobre todo cuando se quería encontrar algún dato registrado anteriormente.

En los años sesenta, las redes y los sistemas jerárquicos como CODASYL e IMSTM fueron el estado del arte de la
tecnología para automatizar la banca, contabilidad, y el procesamiento de órdenes debido a la introducción de
computadoras Mainframe. Mientras estos sistemas proveían una buena base para los primeros sistemas, su arquitectura
básica mezcló la manipulación física de datos con su manipulación lógica. Cuando la ubicación física de datos cambia,
como de un área de un disco a otro, las aplicaciones tuvieron que ser actualizadas en lo referente a la nueva ubicación.
(Universidad de Piura, 2012).

Los vestigios de un nuevo avance llegaron de la mano del inventor Herman Hollerith en el año 1884, responsable de
idear el primer tabulador electromagnético que funcionaba con tarjetas perforadas lo que ayudó a recopilar toda la
información. Años después, en la década de los 50, la llegada de las cintas magnéticas simplificó el registro y el
almacenamiento de la información, con la salvedad de que ofrecía un acceso de tipo secuencial; sin embargo, en 1956
apareció el primer disco duro de la mano de IBM que en contraste con las cintas magnéticas ofrecía acceso aleatorio lo
que permitía llegar a un dato en específico con más de rapidez.

Ilustración 3.1.1 Evolución de las bases de datos

La industria informática todavía estaba en auge en la década de 1960, y debido a este hecho, las bases de datos
computarizadas surgieron al mismo tiempo que las primeras computadoras personales. Durante este tiempo, el proceso
de desarrollo de la base de datos continuó y hubo dos modelos para discutir. Este es un modelo de base de datos en red
ideado por Charles Bachman, cuyo propósito es proporcionar un registro flexible donde los datos se conectan entre sí a
través de enlaces en un sistema de red. Por sí mismo, en un modelo de base de datos jerárquico, los datos se distribuyen
en un gráfico similar a un árbol.

El famoso modelo relacional de las bases de datos se hizo presente durante la década de los 70 gracias a Edgar Frank
Codd. Este científico informático de origen inglés marcó un antes y un después en la evolución de las bases de datos
gracias al desarrollo de teorías relacionadas con el modelado de datos, las cuales resumió en su trabajo titulado Un
modelo relacional de datos para grandes bancos de datos compartidos (A Relational Model of Data for Large Shared
Data Banks, en inglés)

Por si fuera poco, en 1974 aparece el lenguaje de consultas estructuradas o SQL (Structured Query Language, en inglés),
que no es más que un tipo de lenguaje que ofrece un nivel de programación sencillo, facilitando la estructuración y
recuperación de la información contenida en bases de datos relacionales al permitir especificar diversos tipos de
procesamiento de transacciones. (Bernal, 2022)
La década de los 80 recibió con los brazos abiertos el creciente movimiento de los modelos de bases de datos, así como
la utilidad del lenguaje de consultas, donde SQL lideraba los primeros puestos; incluso, llegando a competir con las bases
de tipo jerárquicas y de red.

Ante este escenario de preferencia, el lenguaje SQL se convirtió en el estándar tanto del Instituto Nacional
Estadounidense de Estándares (ANSI) como de la Organización Internacional de Normalización (ISO) entre 1986 y 1987
respectivamente.

Con la llegada de la década de los 90, el gigante de las aplicaciones informáticas, Microsoft Office, lanza su sistema de
gestión de bases de datos conocido como Microsoft Access pensado para reunir datos e información desde otras
plataformas como Excel, por ejemplo.

3.1.1.2 Objetivos y funciones de las bases de datos

El principal propósito de la base de datos no es otro que el de guardar, organizar y proporcionar información de forma
sencilla. Los datos por almacenar pueden ser simplemente una serie de registros o también pueden ser grandes
cantidades de datos.

Almacenar y organizar la información en una base de datos permite acceder a los datos en cualquier momento. Este
acceso rápido y sencillo lo pueden hacer múltiples usuarios a través de consultas específicas.

Por lo tanto, los principales objetivos de un sistema de bases de datos son:

● Acceso concurrente a la información.


● Redundancia controlada de los datos.
● Protección, consistencia e integridad de los datos.
● Alta capacidad de relación entre los datos.
● Independencia física y lógica.
● Alto rendimiento en el manejo de la información.

Un sistema gestor de bases de datos o SGBD (aunque se suele utilizar más a menudo las siglas DBMS procedentes del
inglés, Data Base Management System) es el software que per-
mite a los usuarios procesar, describir, administrar y recuperar los datos almacenados en una base de datos.
En estos Sistemas se proporciona un conjunto coordinado de programas, procedimientos y lenguajes que permiten a los
distintos usuarios realizar sus tareas habituales con los datos, garantizando además la seguridad de estos. (Cabello M. V.,
2010)

El éxito del SGBD reside en mantener la seguridad e integridad de los datos. Lógicamente tiene que proporcionar
herramientas a los distintos usuarios.

Ilustración 3.1.2 Evolución de los sistemas de BD

La figura describe la evolución del sistema de administración de base de datos con el modelo relacional que conserva la
independencia de los datos. El Sistema R de IBM fue el primer sistema que implemento las ideas de Codd. El sistema R
fue la base para SQL/DS que después fue DB2. También tiene el mérito de introducir SQL, un idioma de base de datos
relacional usado como una norma hoy, y abrió la puerta para los sistemas de administración de base de datos
comerciales.

Hoy, los sistemas de administración de base de datos relacionales son la mayoría DBMS y son desarrollados por varias
compañías del software. Los DBMS relacionales son Oracle, Microsoft SQL Server, DB2, INGRES, PostgreSQL, MySQL y
dBASE. (Universidad Politécnica de Valencia, 2011)

3.1.1.3 Problemas de integridad

El término integridad de datos se refiere a la corrección y complementación de los datos en, por ejemplo, una base de
datos. Cuando los contenidos se modifican, la integridad de los datos almacenados puede perderse de muchas maneras
diferentes:
● Pueden añadirse datos no válidos a la base de datos, tales como un pedido que especifica un producto no
existente.
● Pueden modificarse datos existentes tomando un valor incorrecto, como por ejemplo si se reasigna un
vendedor a una oficina no existente.
● Los cambios en la base de datos pueden perderse debido a un error del sistema o a un fallo en el suministro de
energía.
● Los cambios pueden ser aplicados parcialmente, como por ejemplo si se añade un pedido de un producto sin
ajustar la cantidad disponible para vender.

Una de las funciones importantes de un Sistema de Base de Datos Relacional es preservar la integridad de sus datos
almacenados en la mayor medida posible.

3.1.1.4 Dificultad para tener acceso a los datos

El aislamiento es una propiedad que define cómo y cuándo los cambios producidos por una operación se hacen visibles
para las demás operaciones concurrentes. Aislamiento es una de las 4 propiedades ACID (Atomicidad, Consistencia,
Aislamiento, Durabilidad) aplicables a una base de datos transaccional.

3.1.1.5 Aislamiento de datos

El aislamiento es una propiedad que define cómo y cuándo los cambios producidos por una operación se hacen visibles
para las demás operaciones concurrentes. Aislamiento es una de las 4 propiedades ACID (Atomicidad, Consistencia,
Aislamiento, Durabilidad) aplicables a una base de datos transaccional.

3.1.1.6 Problemas de seguridad

La seguridad de la información se ocupa de proteger la confidencialidad, disponibilidad e integridad en base de datos de


todos los activos de conocimiento de la organización. La forma de lograrlo tiene que ver con:

● Confidencialidad: se trata del aspecto más importante de la seguridad de base de datos. Este objetivo se
alcanza a través de La encriptación ha de aplicarse a datos en reposo, pero también a los datos que, por un
motivo u otro, se encuentren en tránsito.
● Integridad en base de datos: busca garantizar que sólo las personas autorizadas a ello podrán acceder a
información privilegiada de la empresa. La integridad de una base de datos se aplica a través de protocolos de
autenticación, políticas internas (como las que impulsan la seguridad de las contraseñas) y un sistema de
control de acceso de usuario que define los permisos que determinan quién puede acceder a qué datos.
Tampoco puede olvidarse el tomar medidas que ayuden a conseguir que las cuentas no utilizadas queden
bloqueadas o sean eliminadas.
● Disponibilidad: hace referencia a la necesidad de que las bases de datos y toda la información que contienen
estén listas para su uso. Por una parte, se debe garantizar su funcionalidad y confiabilidad mientras que, por
otra, es recomendable planificar los tiempos de inactividad fuera del horario laboral.

3.1.1.7 Duplicidad de datos

Se usa la duplicidad de los datos para mantener en línea copias de información y de otros recursos. La duplicidad resulta
un campo clave en los sistemas distribuidos, ya que provee un mejor desempeño, alta disponibilidad y tolerancia a fallas.

3.1.1.8 Ventajas de bases de datos

Las bases de datos permiten mejorar la calidad de las prestaciones de los sistemas informáticos y aumentar el
rendimiento. Algunas de las ventajas que se tienen son:

* Independencia de los datos y los programas y procesos. Esto permite modificar los datos sin modificar el código de las
aplicaciones.

* Menor redundancia. No hace falta tanta repetición de datos. Sólo se indica la forma en la que se relacionan los datos.

* Integridad de los datos. Mayor dificultad de perder los datos o de realizar incoherencias con ellos.

* Coherencia de los resultados. Al recogerse y almacenarse la información una sola vez, en los tratamientos se utilizan
siempre los mismos datos, por lo que los resultados son coherentes.

* Mayor seguridad en los datos. Al permitir limitar el acceso a los usuarios. Cada tipo de usuario podrá acceder a unas
cosas.

* Datos más documentados. Gracias a los metadatos que permiten describir la información de la base de datos.

* Acceso a los datos más eficiente. La organización de los datos produce un resultado óptimo en rendimiento.

* Reducción del espacio de almacenamiento. Gracias a una mejor estructuración de los datos.

* Acceso simultáneo a los datos. Es más fácil controlar el acceso de usuarios de forma concurrente.
(Cabello M. V., 2010)

3.1.2 Tipos de bases de datos

Existen varios tipos de bases de datos; cada tipo de base de datos tiene su propio modelo de datos (la manera de cómo
están estructurados). Entre ellas se incluyen; Modelo plano, modelo jerárquico, modelo relacional y modelo de red.

3.1.2.1 Bases de datos relacionales

La primera que podemos mencionar es la base de datos relacionales que estos ocupan el modelo relacional y siempre es
mejor usarlas cuando los datos que vas a utilizar son consistentes y ya tienen una estructura planificada, estas bases de
datos funcionan bien con datos estructurados, también sirve para organizaciones que tienen muchos datos no
estructurados o semiestructurados no deberían considerar una base de datos relacional.

3.1.2.2 Bases de datos no relacionales

Las bases de datos no relacionales son un sistema de almacenamiento de información que se caracteriza por no usar el
lenguaje SQL para las consultas. Esto no significa que no puedan usar el lenguaje SQL, pero no lo hacen como
herramienta de consulta, sino como apoyo. Por ello también se les suele llamar NoSQL. Los datos no se almacenan en
tablas y la información tampoco se organiza en registros o campos. También tienen una gran escalabilidad y están
pensadas para la gestión de grandes volúmenes de datos.

3.1.2.3 Base de datos en la nube

La principal característica de esta categoría es que las bases de datos se entregan como un servicio desde la nube, por lo
que su correcta creación, mantenimiento y escalabilidad son competencia del proveedor de este servicio. Este tipo de
bases de datos ha crecido exponencialmente con la era de internet.

3.1.2.4 Base de datos orientada a objetos

Esta se basa en la programación orientada a objetos (POO), por lo que los datos y todos sus atributos, están unidos
como un objeto. Las bases de datos orientadas a objetos se gestionan mediante sistemas de gestión de bases de datos
orientados a objetos. Se ocupan los lenguajes de C++ y Java en estos casos.

3.1.3 Clasificación de bases de datos


Existe un gran número de BBDD que se implementan en la actualidad. Estas se clasifican de acuerdo con su estructura,
contexto, utilidad y las necesidades que busquen solucionar.

3.1.3.1 Bases de datos estáticas

Son bases de datos diseñadas especialmente para la lectura de sus datos. Su implementación en la mayoría de los casos
es para almacenar y registrar datos históricos y desarrollar estudios que permitan entender su comportamiento a través
del tiempo.

Esto es de especial utilidad para las empresas que desean realizar proyecciones estadísticas y orientar los procesos de
tomas de decisiones desde el ámbito empresarial. (Pere, 2019)

3.1.3.2 Bases de datos dinámicas

En contraste a las Bases de datos estáticas, los datos de estas bases son modificables al pasar el tiempo, permitiendo
funciones constantes de actualización, edición y eliminación de los datos.

Un ejemplo para entender cómo usamos estas bases de datos en nuestra vida pueden ser los inventarios de las tiendas.
Se ingresan productos, códigos y precios. Estos cambian al acabarse los productos y/o incluir productos nuevos en el
inventario.

3.1.4 Diferencias entre bases de datos y hojas de cálculo

La base de datos y la hoja de cálculo son dos formas que sirven para administrar, almacenar, recuperar y manipular
datos. Una hoja de cálculo es una aplicación que permite al usuario trabajar en una hoja electrónica similar a una hoja
de cálculo contable, mientras que una base de datos está diseñada para organizar, almacenar y recuperar fácilmente
grandes cantidades de datos. En otras palabras, una base de datos contiene un paquete de datos organizados
(generalmente en forma digital) para uno o más usuarios. Las bases de datos, a menudo abreviadas DB, se clasifican
según su contenido, como documentos de texto, bibliográficos y estadísticos.

3.1.5 Concepto de las bases de datos relacionales

Los sistemas de administración de bases de datos (DBMS) son programas que permiten a los usuarios interactuar con
una base de datos. Les permiten controlar el acceso a una base de datos, escribir datos, ejecutar consultas y realizar
otras tareas relacionadas con la administración de bases de datos. Sin embargo, para realizar cualquiera de estas tareas,
los DBMS deben tener algún tipo de modelo subyacente que defina la organización de los datos. El modelo relacional es
un enfoque para la organización de datos que se ha utilizado ampliamente en programas de software de bases de datos
desde su concepción a fines de la década de 1960.

Ilustración 3.1.3 Base de datos relacional

Las bases de datos son conjuntos de información, o datos, modelados de forma lógica. Cualquier recopilación de datos
es una base de datos, independientemente de cómo o dónde se almacene. Incluso un gabinete de archivos con
información sobre nómina es una base de datos, al igual que una pila de formularios de pacientes hospitalizados o la
recopilación de información sobre clientes de una empresa repartida en varias ubicaciones. Antes de que almacenar y
administrar datos con computadoras se convirtiera en una práctica común, las bases de datos físicas como estas eran lo
único con lo que contaban las organizaciones gubernamentales y empresariales que necesitaban almacenar información.
(Drake, 2020)

3.1.5.1 Tablas

Se refiere al tipo de modelado de datos donde se guardan los datos recogidos por un programa. Su estructura general se
asemeja a la vista general de un programa de tablas.

3.1.5.2 Campos

Este corresponde al nombre de la columna, además debe de ser único y además de tener un tipo de datos de esta.

3.1.5.3 Registros
Los registros en una base de datos se refieren a los ítems presentes en de cada tabla. Es decir, cada registro se
corresponde a cada una de las filas de dicha tabla.

3.1.5.4 Clave primaria

La clave principal o primaria proporciona un valor único para cada fila de la tabla y nos sirve de identificador de registros
de forma que con esta clave podamos saber sin ningún tipo de equivocación el registro al cuál identifica. No podemos
definir más de una clave principal, pero podemos tener una clave principal compuesta por más de un campo. Además,
ésta nos permitirá, en futuras unidades, acceder a los datos de otras tablas.

3.1.5.5 Campo clave

Un campo clave es un dato que define de manera única cada registro de una tabla. Un campo clave no puede tener
valores nulos y siempre debe tener un índice único. Los campos clave son columnas de información que se encuentran
integrados en una tabla que nos identifican de forma única cada registro de esta.

3.1.5.6 Relaciones

Las relaciones de bases de datos son asociaciones entre tablas que se crean utilizando sentencias de unión para
recuperar datos más fácilmente, también podemos decir que es una relación o vínculo entre dos o más entidades
describe alguna interacción entre las mismas. Y estas relaciones evitan redundancia de datos guardados en las tablas.

3.1.5.7 Tipos de relaciones

Las relaciones de bases de datos son asociaciones entre tablas que se crean utilizando sentencias de unión para
recuperar datos, la tabla siguiente describe las relaciones de bases de datos.
Ilustración 3.1.4 Tipos de relaciones

3.1.6 Sistema manejador de bases de datos (SGBD)

En términos generales, un SGBD es un software que sigue un modelo de sistema de base de datos y, por lo tanto, resulta
decisivo a la hora de configurarla, administrarla y utilizarla. Solo cuando el sistema gestor de base de datos está
instalado y configurado, los usuarios pueden introducir y consultar los datos. Los permisos de lectura y escritura, así
como las funciones de administración generales, se establecen mediante las interfaces específicas de la aplicación y el
lenguaje de definición de datos correspondiente. El más conocido de estos lenguajes es SQL (Structured Query
Language, lenguaje de consulta estructurada). (IONOS, 2020)

3.1.7 Manejador SQLite

Es un motor de base de datos SQL transaccional de código abierto, ligero, autónomo, de configuración simple y sin
servidor, que se caracteriza por almacenar información persistente de forma sencilla, SQLite gracias a sus características
se diferencia de otros gestores de bases de datos, proporcionando grandes ventajas sobre ellos.

Ilustración 3.1.5 Logotipo de SQLite


Así mismo, por ser de dominio público es gratuito tanto para fines privados como para comerciales. Es importante
mencionar que SQLite cuenta con varios enlaces a lenguajes de programación entre los que podemos destacar: Java, C, C
++, JavaScript, C #, Python, VB Script, entre otros. (Muradas, 2021)

3.1.7.1 Funcionalidad de SQLite

Consideramos como puntos clave para la utilización de este motor de base de datos los siguientes:
 
● Configuración sencilla: Una vez instalado este motor de base de datos no requiere configuración de rutas,
tamaños, puertos, entre otros puntos que por lo general configuramos al inicio de una instalación de cualquier
otro motor. Por ejemplo: SQL Server, MySQL y Oracle DB, reduciendo de forma significativa todos aquellos
esfuerzos sobre la administración.

● No demanda el soporte de un servidor: Implementa una serie de librerías que se encargan de la gestión y por
ende no ejecuta procesos para administrar la información.
 
● Es Software Libre: Por ser de código abierto, tanto los archivos de compilación como las instrucciones de
escalabilidad, se encuentran disponibles para toda la comunidad de desarrolladores.
 
● Genera un archivo para el esquema: SQLite almacena toda la base de datos en un archivo único
multiplataforma, siendo este punto una gran ventaja en cuanto a temas de seguridad y migración, puesto que
los datos de las aplicaciones desarrolladas para Android no son accedidos por contextos externos, así mismo
simplifica las copias de seguridad y los procesos de migración.
 
● Almacena los datos de forma persistente: Permitiendo que, aunque se apague el dispositivo una vez se
encienda los datos persistan y se encuentren correctos en la aplicación.

SQLite cumple con las características ACID (atomicidad, consistencia, aislamiento y durabilidad), forma parte integral de
las aplicaciones basadas en el cliente, SQLite utiliza una sintaxis SQL dinámica y realiza múltiples tareas para hacer
lecturas y escrituras al mismo tiempo, ambas (lectura y escritura) se efectúan directamente en los archivos de disco
ordinarios. (SG Buzz, 2006)

3.1.7.2 Ventajas de SQLite

● Fácil de usar
SQLite es muy fácil de usar porque no utiliza la comunicación cliente-servidor para consultas, porque se comunica con
archivos que son bases de datos y pueden ser generados automáticamente por la propia aplicación.
● Excelente para el desarrollo de aplicaciones móviles
Sus características lo convierten en una alternativa ideal para el desarrollo de aplicaciones móviles. Se puede usar
fácilmente para administrar bases de datos en aplicaciones que usan motores como Java o Motril, o en proyectos
desarrollados con Flutter. Dado que la base es un archivo, el almacenamiento de datos no se ve afectado si el teléfono
está apagado o si no hay conexión a Internet.

● Usa Sql
Las consultas de la base de datos se ejecutan en SQL, lo que reduce la complejidad del código de la aplicación. SQLite es
una versión simplificada de SQL y continúa usando este estándar, aunque ligeramente modificado, al consultar bases de
datos.

3.1.7.3 Desventajas de SQLite

● No es fácilmente escalable.
No se adapta bien a grandes bases de datos, por lo que si una aplicación comienza a crecer se complica su gestión
utilizando SQLite.

● Problemas de seguridad.
Al no contar con funciones de seguridad y administración de usuarios puede presentar problemas en cuanto a
seguridad.

● Monousuario.
No permite que un usuario modifique datos, si otro se encuentra conectado y realizando acciones sobre la base de
datos.

● Limitación de almacenamiento.
El tamaño de la base de datos se encuentra restringido a 2 GB (no es ideal para grandes bases de datos).

3.1.7.4 Comparación MySQL y SQLite

SQLite es una base de datos sin servidor y es independiente. Esto también se conoce como una base de datos integrada,
lo que significa que el motor de base de datos se ejecuta como parte de la aplicación.

Por otro lado, MySQL requiere un servidor para ejecutarse. MySQL requerirá una arquitectura de cliente y servidor para
interactuar a través de una red.
● SQLite es un proyecto de código abierto disponible en el dominio público.
● MySQL es un proyecto de código abierto propiedad de Oracle

El motivo de propiciar estas batallas de versus, en este caso MySQL vs SQLite, es para entender la importancia de
conocer las diferentes opciones de sistema de base de datos antes de elegir por cuál de ellas nos vamos a inclinar al
momento de comenzar a desarrollar nuestra aplicación.

Ilustración 3.1.6 Comparación de Gestor de Bases de datos


En resumen, a todo lo que hemos hablado SQLite está orientado a aplicaciones chicas sin gran manejo de datos. En el
caso de MySQL es buena opción al momento de manejar mayor cantidad de información y seguridad, así como también
cuando cuentas con una aplicación con gran cantidad de tráfico

3.2 LENGUAJES DE PROGRAMACIÓN

3.2.1 Introducción a los lenguajes de programación

Podemos mencionar que los lenguajes de programación los podemos considerar en sí como un conjunto de reglas u
normas que permiten asociar a cada programa correcto un cálculo que será llevado a cabo por una computadora. por
tanto, un lenguaje de programación es un convenio o acuerdo acerca de cómo se debe de interpretar el significado de
los programas de dicho lenguaje. Muchas veces se confunden los lenguajes con los compiladores, intérpretes o con los
entornos de desarrollo de software. Los lenguajes de programación de diversos campos, según sus características,
simplifican algunas tareas y complejizan otras.

Puede ser para aplicaciones científicas, aplicaciones empresariales, inteligencia artificial, programación de sistemas,
scripting y también tenemos lenguajes para fines especiales. Un lenguaje de programación estructural complejo consta
de varias partes: sintaxis, semántica, elementos del lenguaje, niveles de abstracción, modelos, estructuras de control
para organizar la ejecución del programa, tipos de datos (números, letras, etc.), funciones o procedimientos (módulos)
que contienen un conjunto de instrucciones, entre otros. (Gomez, 2008)

3.2.1.1 Conceptos básicos de programación

La programación se define como el proceso de creación, prueba, depuración, compilación y mantenimiento de una
computadora, todo a través de instrucciones lógicas escritas en un humano, luego traducidas a un lenguaje que una
computadora pueda procesar.

La programación dirigida por comandos es una instrucción o comando que proporciona el usuario a un sistema
informático, ya sea desde la línea de comandos o desde una llamada de programación. Puede ser interno o externo.

Suele admitir parámetros o argumentos de entrada, lo que permite modificar su comportamiento predeterminado.
Suelen indicarse tras una barra "/" o un guion simple "-" o doble "--".

3.2.1.2 Evolución de los lenguajes de programación


Los primeros lenguajes de programación conocidos eran complicados códigos de máquina que se introducían
manualmente en las primeras máquinas informáticas. Como descubrirá, la programación informática evolucionó
rápidamente desde los códigos de máquina hasta los códigos totalmente automatizados y legibles por el ser humano.

La historia de los lenguajes de programación comienza según la mayoría de los autores cuando Charles Babbage inventó
su computadora en el año 1822. El necesito un lenguaje para poder comunicarse con esta máquina. Estos primeros
lenguajes de programación estaban muy unidos a la computadora y fueron creados para cada una de ellas. Este lenguaje
era muy rudimentario y consistía en la programación de los diferentes cambios de engranajes que ejecutaban los
cálculos. (Alcocea Huertos, 2021)

Mas adelante en el año 1942 se construyó la ENIAC, computadora que se programaba ya con interruptores y era preciso
reescribir el sistema entero para cada nuevo programa. Era un lenguaje de programación muy tedioso. A continuación,
la Historia de los lenguajes de programación nos lleva a Von Neumann, que en el año 1945 desarrollo una nueva técnica
que establecía que las instrucciones complejas se deben utilizar para controlar el hardware simple, permitiendo que se
pudiese reprogramar más rápidamente (la técnica del compartir-programa).

Ilustración 3.2.1 Historia de los lenguajes de programación

La historia de los lenguajes de programación da un gran paso en el año 1957, cuando aparece el primero de los lenguajes
de programación más importantes, el FORTRAN (del inglés Formula Translation). Este fue el primero de los lenguajes de
programación de alto nivel. En el año 1958 se creó el lenguaje de programación LISP o proceso de lista que fue diseñado
para la investigación la inteligencia artificial.
Otro lenguaje de programación importante fue el PASCAL, que apareció en el año 1968. Este lenguaje de programación
se usó como uno de los mejores lenguajes para enseñar programación a los alumnos.

El lenguaje de programación C fue otro de los importantes a lo largo de la historia de los leguajes de programación. Fue
creado en 1972 por Dennis Ritchie para desarrollar los sistemas operativos Linux. Posteriormente se han desarrollado
otros lenguajes de programación entre los más importantes tenemos: C++, Java, BASIC, Visual Basic, Cobol, SQL, C#,
Smalltalk, etc. (Timetoast, 1822)

3.2.1.3 Principales características de los lenguajes de programación

La popularidad de un lenguaje de programación depende de las funcionalidades y utilidades que proporcione a los
programadores. Las características que debe tener un lenguaje de programación para destacar son las siguientes:

● Simplicidad: el lenguaje debe ofrecer conceptos claros y simples que faciliten su aprendizaje y aplicación, de
manera que sea sencillo de comprender y mantener. La simplicidad no significa que se le pueda restar el poder
óptimo de funcionamiento.
● Naturalidad: se refiere a que su aplicación en el área para la que fue diseñado debe hacerse de forma natural,
proporcionando operadores, estructuras y sintaxis para que los operadores trabajen eficientemente.
● Abstracción: consiste en la capacidad de definir y utilizar estructuras u operaciones complicadas ignorando
algunos detalles. Esto influye en la capacidad de escritura.
● Eficiencia: los lenguajes de programación deben traducirse y ejecutarse eficientemente para no ocupar
demasiado espacio en la memoria ni gastar mucho tiempo.
● Estructuración: permite que los programadores escriban sus códigos de acuerdo con los conceptos de
programación estructurada, para evitar la creación de errores.
● Compacidad: con esta característica es posible expresar las operaciones con concisión, sin tener que escribir
demasiados detalles.
● Localidad: se refiere a que los códigos se concentran en la parte del programa con la cual se está trabajando en
un momento determinado.

Debido a estas circunstancias, los lenguajes de programación están diseñados desde cero por desarrolladores talentosos
enfocados en no arruinar las distintas funcionalidades, ya sea el control de un robot, los equipos médicos, las máquinas
espaciales o un juego de Facebook, por ejemplo. (Chakray, 2021)

3.2.1.4 Mejores lenguajes de programación


El desarrollo web puede hacerse a través de diferentes lenguajes de programación que permiten construir un sitio o
diseñar una aplicación. Definir cuál es el mejor lenguaje de programación web es complicado porque depende de varios
factores. No obstante, destacan las siguientes opciones:

● Java: lenguaje multiuso que se ajusta eficientemente al desarrollo web.


● Go: es de propósito general y ofrece un lenguaje flexible que facilita la creación de aplicaciones.
● Ruby on Rails: permite diseñar aplicaciones web rápidamente.
● Python: funciona en una amplia variedad de contextos y en la web tiene ventajas técnicas.
● JavaScript: se ubica del lado del cliente y se puede extender al servidor para distintas funciones.

3.2.2 Tipos de lenguajes de programación

Podemos mencionar que existen diferentes lenguajes de programación, los cuales estos están clasificados según la
proximidad al hardware o incluso al usuario.

Ilustración 3.2.2 Niveles de programación

En ese sentido, y aunque no hay una clasificación exacta, existen dos tipos de lenguajes de programación: de bajo nivel y
alto nivel.

3.2.2.1 Lenguajes de programación de bajo nivel

Los lenguajes de bajo nivel son aquellos que están más próximos al lenguaje de máquina (de ceros y unos). Es decir,
tienen un control directo sobre el hardware.
A diferencia de los lenguajes de alto nivel, no necesitan compiladores. En cambio, se ejecutan directamente en el
procesador y dependen de la arquitectura del hardware. Los programas que se crean con estos lenguajes de bajo nivel
dependen totalmente del hardware. Por esta razón, no se pueden migrar o utilizar en otras máquinas.

Además, pese a que aprovechan mejor las características del hardware, son los tipos de lenguajes más difíciles de
entender y aprender. Existen dos tipos de lenguajes de bajo nivel: máquina y ensamblador.

3.2.2.2 Lenguaje de Máquina

El lenguaje de máquina es aquel que es interpretado directamente por el procesador, por lo que su ejecución es mucho
más rápida. Así mismo, consta de cadenas de números binarios (0s y 1s). Por esta razón, programar en este lenguaje es
una tarea difícil que requiere una gran inversión de tiempo.

Ilustración 3.2 3 Conversión Maquina - Hardware

Cabe destacar que los programas escritos en este lenguaje no necesitan ser traducidos, pues es el único lenguaje que el
procesador entiende directamente. Además, pese a que hace un uso eficiente de la memoria, encontrar un fallo en el
lenguaje de máquina es una tarea casi imposible.

Cuando se hace la combinación de unos y cero, se termina su preparación creando así una instrucción que
posteriormente llegará al microprocesador, se crea todo un proceso conocido como el nombre de compilación, ésta es
la forma en la que los datos se reúnen para luego colocar una especie de envoltorio digital que tendrá la función de
llevarlos hasta la máquina y hacer que pueda entonces proceder con la ejecución.

3.2.2.3 Lenguaje Ensamblador


El lenguaje ensamblador (assembler o asm) no es más que códigos mnemotécnicos (abreviaturas de letras y números)
de las instrucciones máquina (binario).
En consecuencia, los programas escritos en ensamblador se traducen a código máquina de forma inmediata.

Ilustración 3.2.4 Ensamble a Máquina

Por otro lado, este lenguaje de bajo nivel depende estrictamente del tipo de procesador utilizado. Es por ello por lo que
programar en ensamblador requiere conocer, en forma detallada, las especificaciones del hardware. De igual manera, el
software escrito en este lenguaje resulta ser poco o nada portable. Aunque, como ventaja, ocupa menos memoria, es
más fácil de depurar y su código fuente resulta más corto.

Esto es útil para programar microprocesadores, microcontroladores y otros circuitos integrados programables.

Cabe destacar que este tipo de CI están presentes en toda computadora con sus procesadores, los televisores,
dispositivos de audio, smartphones y mucho otro hardware. Estos mnemónicos son básicamente una representación
simbólica de los códigos de máquina binarios, constantes y demás elementos de programación. (AlegsaOnline, 2021)

Es decir, todos los elementos que necesitas para llevar a cabo la tarea de hacer que un determinado procesador o
microprocesador realice una determinada acción.

3.2.2.4 Lenguajes de programación de alto nivel


Los lenguajes de alto nivel están más próximos al lenguaje humano y más alejados de la máquina. Por lo tanto, resultan
más fáciles de entender y son más flexibles a la hora de programar.

Además, este tipo de lenguaje de programación es traducido al lenguaje máquina mediante un intérprete o compilador.
Así mismo, al ser independientes del hardware, los programas escritos en estos lenguajes de alto nivel pueden
ejecutarse en diferentes plataformas (Windows, Linux, etc.)

3.2.2.5 Lenguajes compilados

Los lenguajes compilados son aquellos que son traducidos al lenguaje de máquina (cadenas de bits) de una sola vez. En
consecuencia, cada modificación que realices en el código fuente requiere volver a compilar (traducir a código máquina)
todo.

Ilustración 3.2.5 Ejecución del programa por un compilador

Sin embargo, hay algunos lenguajes como Java que primero compilan a bytecode (un código intermedio) y luego es
interpretado a máquina. Por otro lado, a diferencia de los lenguajes interpretados, los programas escritos en un lenguaje
compilado tienen un rendimiento ligeramente superior y están optimizados para su ejecución.

Ejemplos: C, C++, Ada, ALGOL, Delphi, Fortran, Java, Lisp, Pascal, Perl, Go, Scala, Swift, Rust, entre otros.

3.2.2.6 Lenguajes interpretados

Los lenguajes interpretados son traducidos, instrucción por instrucción, al lenguaje máquina. Es decir, empieza por la
primera línea de código, pasa a la siguiente y así hasta traducir todo el código.
Ilustración 3.2.6 Ejecución del programa por un intérprete

Este tipo de lenguaje de alto nivel facilita las cosas al programador, ya que el código es convertido a máquina a medida
que es ejecutado. Sin embargo, son más lentos que los lenguajes compilados. De todas formas, tienen la ventaja de que
no dependen de la máquina donde se ejecuta el intérprete.

Ejemplos: Ruby, Python, JavaScript, PHP, VBScript, etc.

3.2.2.6 Lenguajes de programación de alto nivel

Los lenguajes de alto nivel están más próximos al lenguaje humano y más alejados de la máquina. Por lo tanto, resultan
más fáciles de entender y son más flexibles a la hora de programar.

Además, este tipo de lenguaje de programación es traducido al lenguaje máquina mediante un intérprete o compilador.
Así mismo, al ser independientes del hardware, los programas escritos en estos lenguajes de alto nivel pueden
ejecutarse en diferentes plataformas (Windows, Linux, etc.)

3.2.3 Lenguaje Java

3.2.3.1 Concepto de Java

Java es un lenguaje de programación ampliamente utilizado para codificar aplicaciones web. Ha sido una opción popular
entre los desarrolladores durante más de dos décadas, con millones de aplicaciones Java en uso en la actualidad. Java es
un lenguaje multiplataforma, orientado a objetos y centrado en la red que se puede utilizar como una plataforma en sí
mismo.
Es un lenguaje de programación rápido, seguro y fiable para codificar todo, desde aplicaciones móviles y software
empresarial hasta aplicaciones de macrodatos y tecnologías del lado del servidor. (SEAS, Estudios Superiores Abiertos,
2019).

Ilustración 3.2.7 Logotipo de Java

Java es un lenguaje de programación y una plataforma informática comercializada por primera vez en 1995 por Sun
Microsystems. Hay muchas aplicaciones y sitios web que no funcionarán a menos que tenga Java instalado y cada día se
crean más. Java es rápido, seguro y fiable. Desde portátiles hasta centros de datos, desde consolas para juegos hasta
súper computadoras, desde teléfonos móviles hasta Internet, Java está en todas partes.

3.2.3.2 Historia de Java

Para hablar de la historia de java, primero debemos remontarnos a los años 80s, donde C podía considerarse el lenguaje
de programación por excelencia. Era un lenguaje versátil, que podía actuar a bajo nivel y resolvían problemas muy
complejos. Era la cima de la programación estructurada, para resolver estos complejos algoritmos, se generaban
grandes procedimientos con un código muy complicado de mantener a largo plazo. Por ello empezó a surgir como
alternativa la programación orientada a objetos, y con ella nació C++.

Java es un lenguaje de programación impulsado por Sun Microsystems. Su presentación se realizó en 1994 de manera
interna dentro de la compañía y solamente el año siguiente vio la luz de manera pública. Java se encauzó desde otros
proyectos de Sun, pero la idea detrás del lenguaje convenció a los ejecutivos de la compañía, que decidieron apostar
fuerte y crear un grupo de desarrollo de la tecnología.

Su primera aparición en las conferencias SunWorld vino acompañada de un navegador ya desaparecido basado en Java
llamado HotJava. La idea inicial del lenguaje era aplicar una sintaxis similar a C++, pero que permitiese la ejecución del
código mediante una máquina virtual. La filosofía, innovadora en aquella época, era la de "Escribe una vez y ejecuta
donde quieras". Bajo ese prisma, se podría ejecutar Java en cualquier tipo de ordenador, independientemente de la
plataforma. Para ello se creó la JVM (Java Virtual Machine) como un complemento gratuito para los sistemas más
habituales.

Ilustración 3.2.8 Línea del tiempo de Java

Java fue acogido con entusiasmo por la industria de Internet. Netscape anunció que soportaría Java en su navegador y
los principales clientes web aportaron también soporte a una tecnología hoy en desuso de Java, los Applets, que
permitían crear programas hechos en Java que se incrustaban como contenido dentro de una página web, dotando a las
webs de herramientas de programación que no existían hasta la época.

A partir de su puesta en marcha Java dotó a los desarrolladores de un JDK (Java Development Kit) que fue evolucionando
rápidamente e incrementando sus posibilidades gracias a un enorme conjunto de clases para realizar prácticamente
todo tipo de programas y aplicaciones. El primer JDK 1.0 salió en 1996. En 1998 el kit para desarrollo de Java pasó a
llamarse J2SE, haciendo referencia su evolución (Java 2 Plattform Standar Edition). Cuando salió Java 6 en 2006 el kit de
desarrollo fue renombrado a Java SE. En 2019 tuvimos el lanzamiento de Java SE 12. (Watters, 2021)

Hoy en día, podemos decir, que Java es uno de los lenguajes más importantes del mundo. Con una comunidad extendida
en todos los componentes y más de 4 millones de desarrolladores, existen millones de dispositivos que lo usan. Además,
tras el surgimiento de Android, Java se establecido como el lenguaje de programación para móviles más extendido del
planeta.
3.2.3.3 Características de Java

Los lenguajes de alto nivel están más próximos al lenguaje humano y más alejados de la máquina. Por lo tanto, resultan
más fáciles de entender y son más flexibles a la hora de programar.

Además, este tipo de lenguaje de programación es traducido al lenguaje máquina mediante un intérprete o compilador.
Así mismo, al ser independientes del hardware, los programas escritos en estos lenguajes de alto nivel pueden
ejecutarse en diferentes plataformas (Windows, Linux, etc.) (Java, 2020)

3.2.3.4 Programación en Java

Java es un lenguaje orientado a objetos, independiente de la plataforma hardware donde se desarrolla, y que utiliza una
sintaxis similar a la de C++, pero reducida. Es un lenguaje con una curva de aprendizaje baja (se puede decir que es fácil
de aprender) y que dispone de una gran funcionalidad de base (incrementada por la gran cantidad de código de terceros
existente). Java, como lenguaje de programación, ofrece un código robusto, que ofrece un manejo automático de la
memoria, lo que reduce el número de errores.

La comunidad de programadores Java existente es muy extensa, en torno a los 9 millones en todo el mundo, y muy
activa, lo que genera una gran cantidad de recursos actualizados.

Existe un lenguaje de programación llamado Javascript que se presta a confusión por su similitud en el nombre con el de
Java. A pesar del parecido en el nombre, estamos ante dos lenguajes de programación totalmente diferente: mientras
que Java es un lenguaje orientado a objetos, Javascript es un lenguaje de programación que se basa en objetos.
(Universidad Nacional Autónoma de México, 2021)
Ilustración 3.2.9 Programación Cotidiana

Java es multiplataforma y se ejecuta en la mayoría de los sistemas operativos y dispositivos con una única base de
código. Esto se logra a través de una máquina virtual que existe en todos los sistemas, puede ejecutar Java y actúa como
un puente entre el lenguaje de programación y el dispositivo. Esto significa que cuando programa en Java, puede
ejecutarlo en cualquier computadora, dispositivo o máquina de cualquier tipo que admita Java. El hecho de que sea
multiplataforma. Es un gran beneficio para los desarrolladores de software. B. Tuve que escribir un programa para
Windows, Linux, MacOS, etc. Esto se logra creando una máquina virtual Java para cada plataforma. Actúa como puente
entre el sistema operativo y el programa Java, haciendo que este último sea totalmente comprensible. Hay muchos
lenguajes multiplataforma en la actualidad, y Java fue uno de los primeros en ofrecer esta posibilidad.

3.2.3.5 Java en la actualidad

Dentro de la gran variedad de lenguajes de programación existentes, Java es uno que está muy extendido (se estima que
está ejecutándose en 15 mil millones de dispositivos) y se encuentra entre los mejor remunerados en la industria de la
programación. Lo cierto es que incluir habilidades en Java al currículum vítae es un valor añadido. Java se utiliza en la
programación de muchas de las páginas webs más importantes, como Facebook, Amazon o eBay, e incluso algunos
videojuegos de éxito como Minecraft están también programados en Java. Para el desarrollo de aplicaciones en la nube,
Java se ha convertido en una gran alternativa de programación, así como para el internet de las cosas, pues se utiliza
mucho en electrodomésticos y otros dispositivos de uso en el hogar. Java es un lenguaje de programación de alto
rendimiento lo que lo hace ideal para aplicaciones de procesamiento de datos, por eso, actualmente, con la ciencia de
datos y el Big Data, Java no deja de tomar protagonismo.
3.2.3.6 Utilización de Java

Debido a que Java es un lenguaje versátil y de uso gratuito, crea software localizado y distribuido. Algunos usos comunes
de Java incluyen:

● Desarrollo de juegos: muchos juegos móviles, de ordenador y de video populares se crearon en Java. Incluso
los juegos modernos que integran tecnología avanzada, como el machine learning o la realidad virtual, se
crean con tecnología Java.
● Computación en la nube: Java a menudo se conoce como WORA: escribir una vez y ejecutar en cualquier lugar
(por sus siglas en inglés “Write Once and Run Anywhere”), lo que lo hace perfecto para aplicaciones
descentralizadas basadas en la nube. Los proveedores de la nube eligen el lenguaje Java para ejecutar
programas en una amplia gama de plataformas subyacentes.
● Macrodatos: Java se usa para motores de procesamiento de datos que pueden trabajar con conjuntos de datos
complejos y cantidades masivas de datos en tiempo real.
● Inteligencia artificial: Java es una fuente inagotable de bibliotecas de machine learning. Su estabilidad y
velocidad lo hacen perfecto para el desarrollo de aplicaciones de inteligencia artificial como el procesamiento
del lenguaje natural y el aprendizaje profundo.
● Internet de las cosas: Java se ha utilizado para programar sensores y hardware en dispositivos de borde que
pueden conectarse de forma independiente a Internet.

3.2.3.7 Java con la programación orientada a objetos

Si nos fijamos en la vida real podremos apreciar que casi todo se compone de objetos (coche, lapicero, casa y, por qué
no, personas). Todos entendemos que tanto un BMW verde como un SEAT rojo son coches, pero son distintos en su
aspecto físico. Pero a pesar de esa diferencia de aspecto entendemos que ambos tienen unas características comunes
como son poseer ruedas, un volante, asientos, Esas características comunes son las que hacen pensar en el concepto
coche en ambos casos. A partir de ahora podemos interpretar que el BMW y el SEAT son objetos, y el tipo o clase, de
esos objetos es coche.

Además, podemos suponer que la clase de un objeto describe como es dicho objeto.

Por ejemplo:

clase Coche:
4 ruedas
1 volante
5 asientos
acelerar
frenar

Como podemos ver esta clase no sólo describe que cosas posee un coche, sino que también describe que acciones
puede realizar un coche (acelerar, frenar y girar). Es decir, una clase define los atributos y las acciones (o métodos) que
puede realizar un objeto de la clase.

Además, podemos comprobar que un objeto puede estar formado por otros objetos, por ejemplo, el coche posee 4
objetos de la clase Rueda.

En el mundo real los objetos se relacionan entre sí, un objeto puede pedir a otro que realice alguna acción por él. En la
vida real una persona acelera, pero lo hace pidiéndoselo al coche, que es quien realmente sabe acelerar, no la persona.
El hecho de que un objeto llame a un método de otro objeto se indica diciendo que el primer objeto ha enviado un
mensaje al segundo objeto, el nombre del mensaje es el nombre de la función llamada. (Universidad Complutense
Madrid, 2007)

Podemos interpretar que una clase es el plano que describe como es un objeto de la clase, por tanto, podemos entender
que a partir de la clase podemos fabricar objetos. Ese objeto construido se le denomina instancia, y al proceso de
construir un objeto se le llama instanciación.

Cuando se construye un objeto es necesario dar un valor inicial a sus atributos, es por ello por lo que existe un método
especial en cada clase llamado constructor, el cuál es ejecutado de forma automática cada vez que es instanciada una
variable. Generalmente el constructor se llama igual que la clase y no devuelve ningún valor. Análogamente destructor
es un método perteneciente a una clase que es ejecutado de forma automática cuando un objeto es destruido. Java no
soporta los destructores. Es posible que exista más de un constructor en una clase, diferenciados sólo en los parámetros
que recibe, pero en la instanciación sólo será utilizado uno de los constructores.

Es recomendable emplear el constructor para inicializar las variables internas del objeto, o para obtener recursos,
mientras que el destructor se suele emplear para liberar esos recursos obtenidos en el constructor.
Ilustración 3.2.10 La POO con Java

Imaginemos ahora un televisor, nosotros que poseemos el mando A distancia/Online podemos manejar el volumen del
televisor, pero no nos haría gracia que otra persona pudiese manejar el volumen a su antojo. Lo mismo sucede con
objetos: un objeto que no quiere que otro objeto llame a un método o acceda a un atributo debe de definir a dichos
atributos y métodos como privados. En cambio, si los definimos como públicos cualquier objeto podrá utilizarlos.

Pensemos ahora en un coche deportivo y en un coche utilitario, ambos son coches, pero hacemos la distinción deportivo
y utilitario porque son diferencias lo suficientemente importantes para ser tenidas en cuenta, pero no tanto como para
pensar que uno es un coche, pero el otro no. Esta situación se interpreta pensando en que existen dos clases: Deportivo
y Utilitario, pero que ambas, además de sus propias características (atributos y métodos) poseen las de la clase coche,
esto es la herencia. Denominaremos clase base a la clase de la cuál heredamos y derivada a la clase que hereda de la
clase base. (Programacion Webs, 2022)

3.2.3.8 Metodología de la sintaxis de Java

El lenguaje Java se describe por su sintaxis y su semántica. La sintaxis define la estructura y apariencia de a la escritura
del código Java. La semántica define lo que significa cada parte del código y cómo se comportará cuando se ejecuta. Los
componentes básicos de la sintaxis son las palabras reservadas (keywords) y componentes de léxico (tokens). Una
palabra reservada es una palabra o identificador que tiene un significado específico en el lenguaje. Las palabras
reservadas sólo se pueden utilizar en el mundo en que está definido en el lenguaje. Los componentes de léxico(token)
incluyen cada palabra, símbolo o grupo de símbolos que aparecen en el código fuente del programa.
Ilustración 3.2.11 Sintaxis básica de Java

Una gramática se utiliza para llevar juntos todos los componentes de la sintaxis y definir la estructura de unidades
sintácticamente correcta del código Java. La gramática Java específica el orden preciso en el que se puedan escribir las
palabras reservadas y los símbolos, y se utilizan por el compilador Java para asegurar que el programador hace las cosas
correctas. Cualquier código que no esté escrito de modo correcto emitirá mensajes de error y no construirá un programa
ejecutable.

3.2.4 Estructura del lenguaje Java

3.2.4.1 Clase principal y main

Un programa puede construirse empleando varias clases. En el caso más simple se utilizará una única clase. Esta clase
contiene el programa, rutina o método principal: main () y en éste se incluyen las sentencias del programa principal.
Estas sentencias se separan entre sí por caracteres de punto y coma.

La estructura de un programa simple en Java es la siguiente:

public class ClasePrincipal {


public static void main (String [] args) {
sentencia_1;
sentencia_2;
// ...
sentencia_N;
}
}
Como primer ejemplo sencillo de programa escrito en Java se va a utilizar uno que muestra un mensaje por la pantalla
del ordenador. Por ejemplo, el programa Hola.java:

/**
* La clase hola construye un programa que
* muestra un mensaje en pantalla
*/
public class Hola {
public static void main (String [] args) {
System.out.println("Hola, ");
System.out.println("me llamo Angel");
System.out.println("Hasta luego");
}
}

Como se ha indicado anteriormente, en un programa de Java todo se organiza dentro de las


clases. En el ejemplo anterior, Hola es el nombre de la clase principal y del archivo que contiene el código fuente. Todos
los programas o aplicaciones independientes escritas en Java tienen un método main o principal que, a su vez, contiene
un conjunto de sentencias. En Java los conjuntos o bloques de sentencias se indican entre llaves {}. En el caso anterior, el
conjunto de sentencias se reduce a tres sentencias, que son llamadas a dos métodos predefinidos en Java (print y
println) que permiten visualizar texto por el dispositivo de salida de datos por defecto (la pantalla). Por el momento y
hasta que se explique con detalle el concepto de clase, los ejemplos de programa que se utilizarán constarán de una sóla
clase en la que se declara el método main. Este método es el punto de arranque de la ejecución de todo programa en
Java. (Garro, 2019)

3.2.4.2 Objetos

Un objeto es una unidad básica de Programación Orientada a Objetos y representa las entidades de la vida real. Un
programa típico de Java crea muchos objetos, que como usted sabe, interactúan al invocar métodos. Un objeto consiste
en:

● Estado: está representado por atributos de un objeto. También refleja las propiedades de un objeto.
● Comportamiento: se representa mediante métodos de un objeto. También refleja la respuesta de un objeto
con otros objetos.
● Identidad: le da un nombre único a un objeto y permite que un objeto interactúe con otros objetos.

Ejemplo: Perro
Identidad: nombre del perro
Estado/atributo: Color, Edad, Raza
Comportamiento: Dormir, comer, ladrar

Los objetos corresponden a cosas que se encuentran en el mundo real. Por ejemplo, un programa de gráficos puede
tener objetos tales como “círculo”, “cuadrado”, “menú”. Un sistema de compra en línea podría tener objetos como
“carrito de compras”, “cliente” y “producto”. (Walton, Java desde Cero, 2022)

3.2.4.2 Clases

Una clase es un modelo o prototipo definido por el usuario a partir del cual se crean los objetos. Representa el conjunto
de propiedades o métodos que son comunes a todos los objetos de un tipo. En general, las declaraciones de clase
pueden incluir estos componentes, en orden:

● Modificadores: una clase puede ser pública o tener acceso predeterminado (default). (Veremos otros más
adelante)
● Nombre de clase: el nombre debe comenzar con una letra (en mayúscula por convención).
● Superclase (si corresponde): el nombre del elemento primario de la clase (superclase), si lo hay, precedido por
la palabra clave extends. Una clase solo puede extender (subclase) a uno de los padres.
● Interfaces (si corresponde): una lista de interfaces separadas por comas implementadas por la clase, si las hay,
precedidas por la palabra clave implements. Una clase puede implementar más de una interfaz.
● Cuerpo: El cuerpo de la clase rodeado de llaves: {}.

Los constructores se utilizan para inicializar nuevos objetos. Los campos son variables que proporcionan el estado de la
clase y sus objetos, y los métodos se utilizan para implementar el comportamiento de la clase y sus objetos.
Hay varios tipos de clases que se utilizan en aplicaciones en tiempo real como clases anidadas, clases anónimas,
expresiones lambda. (Walton, Java desde Cero, 2022)

3.2.4.3 Ficheros

Con frecuencia tendremos que guardar los datos de nuestro programa para poderlos recuperar más adelante. Hay varias
formas de hacerlo. Una de ellas son los ficheros, que son relativamente sencillos. Otra forma más eficiente cuando es un
volumen de datos muy elevado es usar una base de datos, que veremos más adelante.

Son ficheros que podremos crear desde un programa en Java y leer con cualquier editor de textos, o bien crear con un
editor de textos y leer desde un programa en Java, o bien usar un programa tanto para leer como para escribir. Para
manipular ficheros, siempre tendremos que dar tres pasos: Abrir el fichero, Guardar datos o leer datos y Cerrar el
fichero. Hay que recordar siempre esos tres pasos: si no guardamos o leemos datos, no hemos hecho nada útil; si no
abrimos fichero, obtendremos un mensaje de error al intentar acceder a su contenido; si no cerramos el fichero (un
error frecuente), puede que realmente no se llegue a guardar ningún dato, porque no se vacíe el "buffer" (la memoria
intermedia en que se quedan los datos preparados hasta el momento de volcarlos a disco). (AprendeAProgramar.com,
2015)
3.2.4.4 Métodos

Un método es una colección de sentencias que realizan una tarea específica. Puede retornar un valor que podemos
utilizar en nuestro programa o no retornar ninguno, esto es opcional. Empleando métodos ahorramos tiempo al no
tener que reescribir un conjunto de sentencias varias veces. Sencillamente, cuando tengamos que ejecutar la tarea que
realiza el método, llamaremos al mismo sin tener que teclear de nuevo todas las sentencias de la tarea.

Los métodos en Java, las funciones y los procedimientos, especialmente en Java, son una herramienta indispensable
para programar. Java nos permite crear o hacer nuestros propios métodos y usarlos sencillamente como también nos
facilita hacer uso de los métodos de otras librerías (funciones matemáticas, aritméticas, de archivos, de fechas, etc.
Cualquiera que sea el caso, las funciones permiten automatizar tareas que requerimos con frecuencia y que además se
pueden generalizar por medio de parámetros o argumentos.
(Meza González, 2021)

3.2.4.5 Constructores

Un constructor es un elemento de una clase cuyo identificador coincide con el de la clase correspondiente y que tiene
por objetivo obligar a y controlar cómo se inicializa una instancia de una determinada clase, ya que el lenguaje Java no
permite que las variables miembros de una nueva instancia queden sin inicializar.

Un constructor es un método especial de una clase que se llama automáticamente siempre que se declara un objeto de
esa clase. Su función es inicializar el objeto y sirve para asegurarnos que los objetos siempre contengan valores válidos.

Cuando se crea un objeto en Java se realizan las siguientes operaciones de forma automática:
1. Se asigna memoria para el objeto.
2. Se inicializan los atributos de ese objeto con los valores predeterminados por el sistema.
3. Se llama al constructor de la clase que puede ser uno entre varios.

El constructor de una clase tiene las siguientes características:


● Tiene el mismo nombre que la clase a la que pertenece.
● En una clase puede haber varios constructores con el mismo nombre y distinto número de argumentos (se
puede sobrecargar)
● No se hereda.
● No puede devolver ningún valor (incluyendo void).
● Debe declararse público (salvo casos excepcionales) para que pueda ser invocado desde cualquier parte donde
se desee crear un objeto de su clase.

(Berenguer, 2018)

3.2.4.6 Herencias

La herencia es un pilar importante de OOP (Programación Orientada a Objetos). Es el mecanismo en Java por el cual una
clase permite heredar las características (atributos y métodos) de otra clase. Podemos definir la herencia como la
capacidad de crear clases que adquieren de manera automática los miembros (atributos y métodos) de otras clases que
ya existen, pudiendo al mismo tiempo añadir atributos y métodos propios.

En el lenguaje de Java, una clase que se hereda se denomina superclase. La clase que hereda se llama subclase. Por lo
tanto, una subclase es una versión especializada de una superclase. Hereda todas las variables y métodos definidos por
la superclase y agrega sus propios elementos únicos. Tenemos que considerar los siguientes puntos:

Superclase: la clase cuyas características se heredan se conoce como superclase (o una clase base o una clase principal).
Subclase: la clase que hereda la otra clase se conoce como subclase (o una clase derivada, clase extendida o clase hija).
La subclase puede agregar sus propios campos y métodos además de los campos y métodos de la superclase.

Reutilización: la herencia respalda el concepto de “reutilización”, es decir, cuando queremos crear una clase nueva y ya
hay una clase que incluye parte del código que queremos, podemos derivar nuestra nueva clase de la clase existente. Al
hacer esto, estamos reutilizando los campos/atributos y métodos de la clase existente. (Walton, Java desde Cero, 2022)

3.2.5 Tipos de datos primitivos en Java

Los tipos de Java básicos son:


● Tipos primitivos: int, short, long, double, float, boolean, byte, char
● Clases de derivador para tipos primitivos: java. lang. Integer, java. lang. Short, java. lang. Long, java. lang.
Double, java. lang. Float, java. lang. Boolean, java. lang. Byte, java. lang. Character
● Tipo de serie: java. lang. String
● Tipos de fecha/hora: java. util. Date, java. util. Calendar, java.sql. Date, java.sql. Time, java.sql. Timestamp
● Tipos numéricos: java. math. BigInteger, java. math. BigDecimal
Cuando un parámetro de conjunto de reglas es un parámetro XML o un parámetro Java de tipo de Java básico, el
parámetro se correlaciona directamente con una columna de enlace del modo siguiente:

● Si el parámetro está correlacionado con una columna en un enlace de entrada, ese parámetro debe ser un
parámetro IN o IN_OUT. La columna representa el valor que debe pasarse al parámetro cuando se invoca el
conjunto de reglas.
● Si el parámetro está correlacionado con una columna en un enlace de salida, ese parámetro debe ser un
parámetro OUT o IN_OUT. La columna representa el valor devuelto por el conjunto de reglas para el
parámetro, cuando se invoca el conjunto de reglas.

Ilustración 3.2.12 Tipos de datos primitivos

Cuando el parámetro de conjunto de reglas no se correlaciona directamente con una columna de enlace, las
construcciones de conjunto de reglas que se correlacionan con las columnas de enlace son los valores de retorno y
argumentos de métodos básicos de la clase Java asociada con el parámetro de conjunto de reglas. (IBM Corp., 2021)

3.2.6 Tipos de datos referencia

En Java los objetos, instancias de clases, se manejan a través de referencias. Cuando se crea una nueva instancia de una
clase con el operador new este devuelve una referencia al tipo de la clase. Para aclararlo veamos un ejemplo:

Punto unPunto = new Punto ();


El operador new () reserva espacio en memoria para contener un objeto del tipo Punto y devuelve una referencia que se
asigna a unPunto. A partir de aquí accedemos al objeto a través de su referencia. Es posible, por tanto, tener varias
referencias al mismo objeto. Presta atención al siguiente fragmento de código.

Punto unPunto = new Punto ();


unPunto.print();
Punto otroPunto = unPunto;
otroPunto.setX(1.0f);
otroPunto.setY(2.0f);
unPunto.print();

La salida por pantalla es:

Coordenadas del punto (0.0,0.0)


Coordenadas del punto (1.0,2.0)

Como las dos referencias hacen referencia a la misma instancia, los cambios sobre el objeto se pueden realizar a través
de cualquiera de ellas. (Belmonte Fernandéz, 2005)

3.3 ALGORITMOS EN LA PROGRAMACIÓN

3.3.1 La relación entre algoritmo y la programación

Desde esta perspectiva, un programa no es más que una serie de algoritmos complejos que son ordenados y
organizados por un lenguaje de programación para ser ejecutados posteriormente en una computadora.

Un algoritmo es una serie de instrucciones secuenciales mediante las cuales se pueden realizar determinadas
operaciones y dar respuesta a determinadas necesidades o decisiones. Son conjuntos finitos y ordenados de pasos que
nos permiten resolver un problema o tomar una decisión. Los algoritmos no tienen nada que ver con los lenguajes de
programación porque un mismo algoritmo o diagrama de flujo se puede representar en diferentes lenguajes de
programación, es decir, es un comando antes de programar.

Los algoritmos también son muy comunes en matemáticas y lógica, y forman la base de guías, manuales y más. Su
nombre se deriva de la palabra latina algoritmus y esta última proviene del matemático persa Al-Juarismi. Uno de los
algoritmos más famosos de las matemáticas se atribuye a Euclides, por obtener el máximo común divisor de dos
números enteros positivos, o el llamado método de Gauss, que este es para resolver un sistema de ecuaciones lineales.
(Marker, 2021)
3.3.1.1 Características de los algoritmos

Los algoritmos presentan las siguientes características:

Secuenciales: Los algoritmos operan en secuencia, debe procesarse uno a la vez.


Precisos: Los algoritmos han de ser precisos en su abordaje del tema, es decir, no pueden ser ambiguos o subjetivos.
Ordenados: Los algoritmos se deben establecer en la secuencia precisa y exacta para que su lectura tenga sentido y se
resuelva el problema.
Finitos: Toda secuencia de algoritmos ha de tener un fin determinado, no puede prolongarse hasta el infinito.
Concretos: Todo algoritmo debe ofrecer un resultado en base a las funciones que cumple.
Definidos: Un mismo algoritmo ante los mismos elementos de entrada (input) debe dar siempre los mismos resultados.
(De Vega, 2022)

3.3.2 Tipos de algoritmo

Existen cuatro tipos de algoritmos en informática:

● Algoritmos computacionales. Un algoritmo cuya resolución depende del cálculo, y que puede ser desarrollado
por una calculadora o computadora sin dificultades.
● Algoritmos no computacionales. Aquellos que no requieren de los procesos de un computador para resolverse,
o cuyos pasos son exclusivos para la resolución por parte de un ser humano.
● Algoritmos cualitativos. Se trata de un algoritmo en cuya resolución no intervienen cálculos numéricos, sino
secuencias lógicas y/o formales.
● Algoritmos cuantitativos. Todo lo contrario, es un algoritmo que depende de cálculos matemáticos para dar
con su resolución.

Desde esta perspectiva, un programa no es más que una serie de algoritmos complejos que son ordenados y
organizados por un lenguaje de programación para ser ejecutados posteriormente en una computadora.
Ilustración 3.3.1 Tipos de algoritmos

3.3.2.1 Clasificación de los algoritmos

Independientemente de la clasificación y el tipo de algoritmo, básicamente todos están compuestos de tres partes
principales:

● Entrada: Se trata del conjunto de datos que el algoritmo necesita como insumo para procesar.
● Proceso: Son los pasos necesarios aplicados por el algoritmo a la entrada recibida para poder llegar a una
salida o resolución del problema.
● Salida: Es el resultado producido por el algoritmo a partir del procesamiento de la entrada una vez terminada
la ejecución del proceso.

Además del tipo de algoritmo existen una serie de características comunes a todos, a continuación, se mencionan alguna
de ellas.

● Exactitud: el algoritmo tiene que indicar un orden claro de la ejecución de cada paso, estos no pueden ser
ambiguos (debe existir una confiabilidad).
● Estar definido: si se realiza la ejecución de un mismo algoritmo en distintas instancias utilizando la misma
entrada, debe resultar en la misma salida.
● Completo: en la solución se deben considerar todas las posibilidades del problema.
● Finito: necesariamente un algoritmo debe tener un número finito de pasos.
● Instrucciones entendibles: Las instrucciones que lo describen deben ser claras y legibles.
● General: debe poder abarcar problemas de un mismo tema soportando las distintas variantes que se
presentan en la definición del problema.

(Universidad de la Empresa, 2021)

3.3.3 Simbología de los diagramas de flujo

La estandarización de los símbolos para la elaboración de Diagramas de Flujo tardó varios años. Con el fin de evitar la
utilización de símbolos diferentes para representar procesos iguales, la Organización Internacional para la
Estandarización (ISO, por su sigla en inglés) y el Instituto Nacional Americano de Estandarización (ANSI, por su sigla en
inglés), estandarizaron los símbolos que mayor aceptación tenían en 1985. (López García, 2009)

Los siguientes son los principales símbolos para elaborar Diagramas de Flujo:

Ilustración 3.3.2 Simbología de diagramas de flujo

3.4 ANDROID STUDIO


Android Studio es el entorno de desarrollo integrado (IDE) oficial para el desarrollo de aplicaciones para Android y está
basado en IntelliJ IDEA.

Ilustración 3.4.1 Logotipo del programa

Además del potente editor de códigos y las herramientas para desarrolladores de IntelliJ, Android Studio ofrece incluso
más funciones que aumentan tu productividad cuando desarrollas aplicaciones para Android, como las siguientes:

● Un sistema de compilación flexible basado en Gradle


● Un emulador rápido y cargado de funciones
● Un entorno unificado donde puedes desarrollar para todos los dispositivos Android
● Aplicación de cambios para insertar cambios de código y recursos a la aplicación en ejecución sin reiniciarla
● Integración con GitHub y plantillas de código para ayudarte a compilar funciones de aplicaciones comunes y
también importar código de muestra
● Variedad de marcos de trabajo y herramientas de prueba
● Herramientas de Lint para identificar problemas de rendimiento, usabilidad y compatibilidad de versiones,
entre otros
● Compatibilidad con C++ y NDK
● Compatibilidad integrada con Google Cloud Platform, que facilita la integración con Google Cloud Messaging y
App Engine

(Android Developers, 2021)

3.4.1 Características del programa

Android Studio permite la integración de características y funciones bastante positivas para las aplicaciones que, con el
tiempo, se perfeccionan. De esta forma, tenemos lo siguiente:
● El sistema de compilación es flexible, además de ser compatible con Gradle, la cual permite la automatización
de compilaciones de forma flexible y con gran rendimiento. Groovy y Kotlin DSL son los lenguajes utilizados
para los scripts de compilación.
● La intención de este entorno es la de permitir al usuario trabajar de forma fluida y con una gran cantidad de
funciones prácticas y útiles.
● Esta plataforma te permite desarrollar aplicaciones para cualquier dispositivo Android.
● Contiene plantillas de compilación que te ayudan a otorgar funciones comunes de otras aplicaciones de forma
mucho más rápida, además de importar códigos de muestra.
● Mayor cantidad de herramientas de prueba con marcos de trabajo.
● Modificar fragmentos de código y recursos de una aplicación sin necesidad de que esta se reinicie.
● Proporciona compatibilidad con servicios en la nube tal como Google Cloud Platform.
● Compatibilidad con lenguajes como NDK y C++.

(Santaella, 2022)

3.4.2 Ventajas del software

Android Studio ha pasado a ser el entorno recomendado para el desarrollo de aplicaciones en Android, al tratarse de un
IDE oficial de Google en colaboración con JetBrains (compañía de desarrollo software especializada en diseño de IDE’s).

Android Studio permite la creación de nuevos módulos dentro de un mismo proyecto, sin necesidad de estar cambiando
de espacio de trabajo para el manejo de proyectos, algo habitual en Eclipse.

Con la simple descarga de Android Studio se disponen de todas las herramientas necesarias para el desarrollo de
aplicaciones para la plataforma Android. (Santaella, 2022)

Su nueva forma de construir los paquetes .apk, mediante el uso de Gradle, proporciona una serie de ventajas más
acorde a un proyecto Java:

● Facilita la distribución de código, y por lo tanto el trabajo en equipo.


● Reutilización de código y recursos.
● Permite compilar desde línea de comandos, para aquellas situaciones en las que no esté disponible un entorno
de desarrollo.
● Mayor facilidad para la creación de diferentes versiones de la misma aplicación, que proporciona numerosas
ventajas como puede ser la creación de una versión de pago y otra gratuita, o por ejemplo diferentes
dispositivos o almacén de datos.
3.4.3 Desventajas del software

● Aunque ya ha se ha lanzado la primera versión estable, la v1.0, al estar en una fase inicial, siempre es
susceptible de introducirse más cambios que puedan provocar inestabilidad entre proyectos de diferentes
versiones.
● Curva de aprendizaje más lenta para nuevos desarrolladores de Android.
● El sistema de construcción de proyectos Gradle puede resultar complicado inicialmente.
● En comparativa con Eclipse, menor número de plugin.

3.4.4 Lenguaje utilizado

Desde siempre, el sistema operativo de Android se ha desarrollado a través del lenguaje de programación Java. No hay
que confundir propiamente Android Studio con un lenguaje, ya que esto es solo el entorno para desarrollar el código
Java, para que se puedan crear las aplicaciones propiamente dichas.

Sin embargo, como se pudo observar en el punto anterior de las características, esta plataforma de trabajo también
puede llegar a ser compatible con lenguajes como Kotlin (uno de los principales), NDK y C++.

En cuestión de compilación de código se utiliza Gradle, que está especializado para funcionalidades Android. (Santaella,
2022)

3.4.5 Requisitos para usar el programa

Primero que nada, lo fundamental para poder trabajar en Android Studio de forma intuitiva, es conocer lenguajes de
programación como Java o Kotlin. Como dijimos, estos lenguajes están íntimamente ligados al desarrollo de aplicaciones
y herramientas para Android.

Esto permitirá que puedas hacer uso de todas las funcionalidades que Android Studio tiene para ti, de forma intuitiva.
Pudiendo, entonces, concretar proyectos en menor tiempo y con mayor eficacia y estabilidad.

A su vez, en cuanto a las especificaciones necesarias en PC, deberás tener en cuenta los siguientes requerimientos:

● Windows 10, 8, o 7 de 32/64 bits – MacOS X 10.10 hasta 10.13 – GNOME o KDE Linux.
● 4 GB de RAM como mínimo, aunque el recomendado es de 8 GB. (Si utilizas el emulador Android, requerirás
de 1 GB extra)
● 2 GB de almacenamiento mínimo, aunque se recomienda más de 4 en adelante.
● Java Development Kit (JDK) 8.
● Una resolución mínima de 1280 x 800, pero se recomienda de 1440 x 900 en adelante.

(Santaella, 2022)

3.4.6 Arquitectura de Android

Los componentes principales de la arquitectura del sistema operativo Android se ocupan varios tales como:

Aplicaciones: Es decir las aplicaciones están escritas en lenguaje de programación Java. Las aplicaciones incluidas por
defecto son un cliente de correo electrónico, programas de SMS, calendario, mapas, navegador, contactos, etc.

Todas las aplicaciones de Android usan el siguiente conjunto de servicios y sistemas:

● Un conjunto de componentes (Views) que se usan para crear las interfaces de usuario. Por ejemplo, botones,
listas, tablas, cajas de texto, etcétera.

● Proveedores de contenidos (Content Providers) que permiten a las aplicaciones acceder a la información de
otras aplicaciones (por ejemplo, los Contactos del teléfono) o compartir datos entre ellas.

● Gestor de recursos (Resource Manager), que permite acceder a recursos que no sean del código fuente, tales
como textos de internacionalización, imágenes y ficheros de estilos (layout).

● Gestor de notificaciones (Notification Manager), que permite aplicaciones mostrar alertas en la barra de
estado de Android.

● Gestor de actividades (Activity Manager), que controla el ciclo de vida de la aplicación.

Marco de desarrollo de aplicaciones: los programadores tienen acceso completo a las mismas APIs (librerías) del
Framework (marco de desarrollo) utilizadas por las aplicaciones base. La arquitectura está diseñada para simplificar la
reutilización de componentes, es decir, cualquier aplicación puede publicar sus capacidades y cualquier otra aplicación
puede hacer uso de estas capacidades.

Librerías: Android incluye también un conjunto de librerías de C/C++ usadas por varios componentes del sistema. Entre
ellas, se encuentran: System C library (implementación de la librería C estándar), librerías de medios, bibliotecas de
gráficos, 3D y SQLite, entre otras. El programador puede hacer uso de estas librerías.
Runtime (ejecutable) de Android: Android también incluye un conjunto de librerías base que proporcionan la mayor
parte de las funciones del lenguaje Java. Cada aplicación Android ejecuta un proceso con instancia individual de la
máquina virtual Dalvik.

Núcleo Linux: Android está basado en Linux para los servicios base del sistema, como seguridad, gestión de memoria,
procesos y controladores. (Robledo Sacristán & Robledo Fernandéz, 2012)

Ilustración 3.4.2 Arquitectura Android

3.4.7 Componentes de una aplicación

Existen una serie de elementos clave que resultan imprescindibles para desarrollar aplicaciones en Android. En este
apartado vamos a realizar una descripción inicial de algunos de los más importantes. A lo largo del libro se describirán
con más detalle las clases Java que implementan cada uno de estos componentes.

3.4.7.1 Actividades (Activities)

Son las que representan el componente principal de la interfaz gráfica de una aplicación Android. Se puede pensar en
una actividad como el elemento análogo a una ventana o pantalla en cualquier otro lenguaje visual. Es decir que
representa una única pantalla única de interfaz de usuario. Podemos decir que es como una ventana de pagina web en
una aplicación web.
3.4.7.2 Servicios (Service)

Componente que se ejecutan en segundo plano y que realiza operaciones cada cierto tiempo, además un servicio no
proporciona una interfaz gráfica al usuario. En Android disponemos de dos tipos de servicios: servicios locales, que
pueden ser utilizados por aplicaciones del mismo terminal y servicios remotos, que pueden ser utilizados desde otros
terminales.

3.4.7.3 Proveedor de Contenidos (Content Provider)

Mecanismo que se ha definido en Android para compartir datos entre aplicaciones. Mediante estos componentes es
posible compartir determinados datos de nuestra aplicación sin mostrar detalles sobre su almacenamiento interno, su
estructura, o su implementación.

3.4.7.4 Receptores de mensajes (Broadcast Receiver)

Un broadcast receiver es un componente destinado a detectar y reaccionar ante determinados mensajes o eventos
globales generados por el sistema (por ejemplo: “Batería baja”, “SMS recibido”, “Tarjeta SD insertada”, …) o por otras
aplicaciones (cualquier aplicación puede generar mensajes (intents, en terminología Android) de tipo broadcast, es decir,
no dirigidos a una aplicación concreta sino a cualquiera que quiera escucharlo).

3.4.7.5 Componentes de la pantalla de inicio (Widget)

Los widgets son elementos visuales, normalmente interactivos, que pueden mostrarse en la pantalla principal (home
screen) del dispositivo Android y recibir actualizaciones periódicas. Permiten mostrar información de la aplicación al
usuario directamente sobre la pantalla principal.

(Robledo Fernández & Robledo Sacristán, 2012)


3.5 CONTROL DE ALMACÉN

El control de almacén se refiere a todo el proceso logístico que se encarga de la recepción, el almacenamiento y el
movimiento de la mercancía dentro del almacén hasta el punto de consumo en las unidades logísticas. Incluye todas las
acciones dirigidas a gestionar las existencias de un negocio, así como el tratamiento de los datos que se generan durante
ese proceso.
Ilustración 3.5.1 Etapas del almacén

En el día a día, consiste en llevar un control exhaustivo en tiempo real de todos los cambios que se producen en las
existencias o stocks que se encuentran en el almacén, desde las entradas y salidas de mercancías, hasta las reservas o
reagrupamientos. El procedimiento de control de almacén se solía hacer de manera manual. Se usaban tarjetas de
control de almacén y un fichero donde se anotaban todos los movimientos. Con la llegada de las nuevas tecnologías se
han implementado softwares para el control de las entradas y salidas de almacén que aceleran, simplifican y optimizan
todo el proceso, un cambio particularmente importante en los grandes almacenes donde cada día entra y sale mucha
mercancía.

3.5.1 ¿Cómo llevar el control de un almacén?

Con la llegada de las nuevas tecnologías se han implementado softwares para el control de las entradas y salidas de
almacén que aceleran, simplifican y optimizan todo el proceso, un cambio particularmente importante en los grandes
almacenes donde cada día entra y sale mucha mercancía. En cualquier caso, para llevar un buen control de existencias
en almacén debes:

● Estructurar y ordenar el espacio en el almacén. Establece un sistema de numeración de todos los productos y
crea rutas logísticas que conduzcan rápidamente a la mercancía deseada. Delimitar las áreas de
almacenamiento y trabajo también facilitará la organización y control de almacén. Determina las zonas de
llegada y salida, las áreas de carga y descarga, las zonas de exceso de stock y aquellas de almacenamiento o
picking.
● Especializar las tareas dentro del almacén. Si los empleados tienen claro lo que deben hacer, el
funcionamiento del almacén será más eficiente. Por tanto, es conveniente que distribuyas las tareas según las
diferentes zonas del almacén: picking, preparación de pedidos, recepción, envío, embalaje o franqueo.
● Establecer una zona de stocks de alta rotación. En todos los almacenes hay productos que son los más
solicitados por los clientes, por lo que tienen una alta rotación. Lo ideal es que crees una zona especial de
almacenaje para esas existencias, preferentemente cerca del área de llegada y de embalaje/envío para
acelerar el trabajo del personal de almacén y ganar en eficiencia.
● Automatizar la gestión de las roturas de stock. Las roturas de stock suelen ser un quebradero de cabeza pues
no solo provocan interrupciones en la cadena de suministro, sino que también generan insatisfacción en los
clientes. Por eso, es recomendable activar un procedimiento automatizado con los equipos de servicio y
ventas.
● Hacer controles de calidad para evitar errores. Los errores en los pedidos generan sobrecostes e insatisfacción
en los clientes. Un buen control de calidad que revise cada paso del proceso de logística reducirá esos errores.
Podrías aplicar un escaneo para verificar el número y la precisión de los productos en el momento del
empaquetamiento, justo antes del envío.

(Universidad Europea, 2022)

3.5.1.1 Entrada de mercancía

La primera acción de control de almacén consiste en supervisar la recepción de mercancías. Las recepciones son el
origen de todas las operativas porque tener suficiente producto es imprescindible para que las empresas puedan
garantizar el servicio a sus clientes. Los almacenes suelen recibir multitud de productos de distintas procedencias:
proveedores, líneas de producción o, incluso, otros almacenes. Las instalaciones logísticas también pueden recibir
devoluciones de los clientes o de los puntos de venta por cambios de temporada.

El área de recepciones es una de las zonas más frenéticas del almacén, ya que allí tienen lugar actividades relacionadas
con la verificación documental, así como otras tareas como el etiquetado. Para llevar un control de la mercancía, una vez
recibidos todos los artículos, los operarios los comprueban antes de decidir si almacenarlos o hacer cross-docking. Para
completar este proceso con rapidez, los operarios suelen seguir las instrucciones de un software de gestión de
almacenes. Por regla general, los productos van acompañados de las órdenes de recepción, un documento en el que
consta la cantidad de artículos y las referencias disponibles. (Mecalux, 2021)

3.5.1.2 Control de stock

El stock es uno de los principales activos de cualquier empresa. Con un control de la mercancía eficiente, las empresas
disponen de los productos necesarios para poder trabajar y atender a los clientes. El control del stock, además, ayuda a
equilibrar gastos: al vender las existencias, se recupera el dinero invertido y se organizan los pagos para obtener un buen
balance contable.

Para controlar el stock, las empresas hacen un registro de los productos que entran y salen de la instalación. También
hacen un recuento de las existencias para conocer el número de productos disponibles en un momento concreto. El
recuento de artículos puede hacerse de forma manual (lo que se conoce como inventario físico) o gracias a un software
de gestión de almacén (con el que dispondremos de un inventario permanente).

3.5.1.3 Salida de mercancía

El flujo de salida en el almacén comienza con una solicitud de los documentos de origen lanzados para sacar los
productos del almacén, para enviarlos a una parte externa o a otra ubicación de la empresa. Desde el área de
almacenamiento, las actividades de almacén se llevan a cabo en distintos niveles de complejidad para extraer productos
de las dársenas de envío.

Cada producto se identifica y empareja con su documento de origen de entrada correspondiente. Existen los siguientes
documentos de origen de salida:

● Pedido de venta
● Pedido de transferencia de salida
● Pedido de compra
● Pedido servicio

Además, existen los siguientes documentos de origen internos que funcionan como orígenes de salida:

● Orden de producción con necesidad de componentes


● Pedido de ensamblado con necesidad de componentes

Los dos últimos documentos representan los flujos de salida del almacén a las áreas de operaciones internas. Los
procesos y los documentos de interfaz de usuario en los flujos de almacén de salida varían según él la configuración
básica y avanzada de almacén. La diferencia principal es que las actividades se realizan pedido a pedido en la
configuración básica de almacén y se consolidan para varios pedidos en la configuración avanzada. (Fericle, 2021)

3.5.2 Funciones y actividades del almacén

Podemos mencionar que los almacenes están clasificados como centros que están estructurados y planificados que
estos hacen que su función se lleve a cabo de almacenamiento tales como: conservación, control y expedición de
mercancías y productos, la recepción de estos, la custodia de estos. También esto es para evitar que haya fuga de
material al momento de realizar cortes. El almacén es el encargado de regular el flujo de existencias.

Ilustración 3.5.2 Funcionamiento del almacén

3.5.2.1 Recepción de mercancías

Es el proceso que consiste en dar entrada a las mercancías que envían los proveedores. Durante este proceso, se
comprueba que la mercancía recibida coincide con la información que figura en los albaranes de entrega.

También es necesario comprobar durante la recepción de la mercancía si las cantidades, la calidad o las características se
corresponden con el pedido.

3.5.2.2 Almacenamiento

Consiste en la ubicación de las mercancías en las zonas idóneas para ello, con el objetivo de acceder a las mismas y que
estén fácilmente localizables.

Para ello se utilizan medios fijos, como estanterías mecánicas industriales, depósitos, instalaciones, soportes, etc. y
medios de transporte interno como carretillas, elevadores o cintas transportadoras.

3.5.2.3 Conservación y mantenimiento


Durante el tiempo que la mercancía está almacenada, tiene que conservarse en perfecto estado.

La conservación de la mercancía implica la aplicación de la legislación vigente en cuanto a higiene y seguridad en el


almacén, además de las normas especiales sobre mantenimiento y cuidado de cada producto.

3.5.2.4 Gestión y control de existencia

Una de las funciones clave que consiste en determinar la cantidad de cada producto que hay que almacenar, calcular la
cantidad y la frecuencia con la que se solicitará cada pedido con el objetivo de disminuir al máximo los costes de
almacenamiento.

3.5.2.5 Expedición de mercancías

La expedición de mercancías comienza desde que el cliente realizar el pedido, comenzando el proceso con la selección
de mercancía y embalaje, así como la elección del medio de transporte. En los almacenes de distribución comercial
también se hacen otras operaciones como consolidación de la mercancía, división de envíos y combinación de cargas.

3.5.3 Planificación de almacenes

Las empresas que necesitan almacenar pueden requerir uno o varios tipos de almacenes, teniendo que tomar como
primera decisión si estos los tendrá en propiedad, alquiler o ambos casos. Cumplido el primer paso, el segundo es
planificar la ubicación, distribución y diseño de los espacios, los equipamientos de las instalaciones, así como los medios
mecánicos y los recursos humanos para manipulación y almacenaje de las mercancías.

Una planificación óptima del funcionamiento de almacén consiste en la gestión de los recursos disponibles y la previsión
de las necesidades, para que los productos se encuentren cuándo, cuánto y dónde sean requeridos.
Ilustración 3.5.3 Operaciones en el almacén

● Cuando:  en el momento que se necesite o nos llegue el pedido del centro de producción, del centro de
distribución o del punto de venta.
● Cuánto: la cantidad solicitada por los clientes internos o externos.
● Dónde: el lugar de entrega solicitada por los clientes.

Para una empresa que fabrica producto, el almacén es una pieza fundamental en el éxito de la organización. Por ello,
hay que tener en cuenta una serie de variables a la hora planificar el proyecto de un almacén:

● La capacidad de fabricación de la industria.


● Las características de la red de distribución.
● El coste del terreno, edificación, instalaciones y equipos.
● El producto: los tipos, características, la cantidad total a almacenar.

(Noega Systems, 2022)

3.5.4 Diferencia de conceptos

Inventario

El inventario, como anteriormente hemos visto, es la verificación y control de los materiales o bienes patrimoniales de la
empresa, que realizamos para regularizar la cuenta de existencias contables con las que contamos en nuestros registros,
para calcular si hemos tenido pérdidas o beneficios.
Stock

Es una acumulación de material y/o de producto final almacenado para su posterior venta al cliente. La gestión del stock
debe ser óptima para que el aprovisionamiento sea efectivo; las inversiones en stocks inmovilizan unos recursos
económicos durante un cierto tiempo, por lo que en todo momento debemos tener en cuenta que la rotación de dichos
productos debe ser efectiva.

Existencias

Las existencias son aquellos productos que la empresa tiene en sus instalaciones para ser vendidas al cliente final o
aquellos productos que se van a necesitar en algún momento en su proceso productivo (por ejemplo: cajas de cartón,
etiquetas, filme para retractilar, etc.).

(Meana Coalla, 2017)


PÍTULO IV

DESARROLLO DEL PROYECTO

4.1 BASE DE DATOS

4.1.1 Datos generales del almacén

La primera etapa de este proyecto fue que se hiciera la recolección de la información de los materiales que se manejan
en el almacén dentro de la empresa Fibra TV, S.A de C.V, y pues para esto se hizo un intercambio de información tanto
con la encargada del almacén como de la encargada de sistemas que es la que lleva el control. Durante la sesión
informativa se comentó sobre de tener unas mejoras al inventario ya que se ha tenido problemas al momento de hacer
los conteos mensuales sobre cuanto material se cuenta en ese periodo, además que no se puede llevar un registro sobre
cuanto material requieren los técnicos al momento de que ellos lo solicitan. Ante esta situación la persona encargada de
la empresa describió que lo más importante que se requería en ese momento era el sistema les permitiera llevar un
control de todos los materiales que ocupan los técnicos, por ejemplo, saber exactamente cuánto se ocupó en la semana
o incluso para aclarar lo que se llevaron los técnicos en ese momento. Por esto se decidió que se hiciera una plataforma
móvil con operaciones CRUD.

4.1.2 Recolección de información y requerimientos

En la ilustración 4.1.1 muestra la información relacionada con los materiales que tienen los almacenes de la empresa.
Ilustración 4.1.1 Inventario de almacenes

Para tener un mejor control de la información fue clasificada con ID, tipo de articulo, la descripción del producto, en qué
tipo de unidad de medida (Pzas, Kg, Lts, Mts), la cantidad de piezas existentes, en que ubicación están estos productos
(Bodega 1, Bodega 2, Bodega 3 y Bodega 4), su estado en el que se encuentra el producto (Nuevo, Seminuevo, Usado,
Inservible) y si en caso de que haya alguna observación sobre el producto se notifica en este medio.

4.1.3 Estructura de la Base de Datos

Como pudimos visualizar en la imagen anterior y a pesar de la limitada información del archivo de Excel, en la entrevista
se estudiaron y se analizaron los datos, cardinalidades y evitamos a toda costa la redundancia de datos, fue así como el
modelo entidad relación empezó a tomar forma, posteriormente se mostrarán las tablas de la base de datos y exponer
cada uno de los datos que las conforman. Se decidió que la estructura llevara un modelo de datos no relacional para que
se evitaran problemas con otros gestores de bases de datos.
4.1.4 Selección de base de datos

La base de datos que se ocupará para el almacenamiento de datos del sistema del control de inventario será en una base
de datos no relacional. Dicha base de datos se diseñará en SQLite ya que se podrá hacer de una manera más fácil, eficaz,
rápida y sin necesidad de comprar o renovar licencia para poder utilizarlo. Además, es estable, multiplataforma y
compatible con versiones anteriores. Su código es de dominio público y gratuito. No requiere instalación o
configuración. Guarda la base de datos en un solo archivo.

4.1.5 Tablas de las bases de datos

Ya se analizó la información anterior de acuerdo con los procesos que hay en almacén y para que haya un buen
funcionamiento por ende ahora veremos que tablas se ocuparán.

Se podrá contener varias tablas tales como:

⮚ Tabla de Empleados
⮚ Tabla de Fecha
⮚ Tabla de Materiales
⮚ Tabla de Almacén
⮚ Tabla de Firmas
Ilustración 4.1.2 Creación de Tablas

4.1.5.1 Tabla de Empleados

En esta tabla se van a almacenar el nombre de todos los empleados que son los que se solicitan material al encargado de
almacén. Esto nos va a ayudar para saber qué persona pide material y quien regresa al final de la labor del día.

Ilustración 4.1.3 Tabla de Empleados

4.1.5.2 Tabla de Fecha

En la tabla de fecha se almacenar los datos de lo necesario de una fecha (Dia-Mes-Año), esto se va a ir en
autoincrementando conforme a los días que vayan pasando. Nos ayuda a saber en qué día se va a repartir y en caso de
pedir un reporte podemos saber más a detalle de lo sucedido tal día.

Ilustración 4.1.4 Tabla de Registro


4.1.5.3 Tabla de Materiales

La tabla de materiales va ir registrando los materiales que vayan entrando y saliendo al momento que el técnico lo
solicite.

Ilustración 4.1.5 Tabla de Materiales

4.1.5.4 Tabla de Almacén

En esta tabla se van a ir anotar que tipo de almacén le corresponde que hay dentro de la empresa, es decir si
corresponde a la primera, segunda, tercera o cuarto almacén y que esto nos ayudará a saber en qué ubicación es el que
está.

Ilustración 4.1.6 Tabla de Almacén

4.1.5.5 Tabla de Firma

En esta tabla se va a almacenar las firmas de los técnicos que dan los responsables del material que se llevan y que en
caso de haber problemas ellos pues tendrán que dar alguna solución para poder reparar el daño u material.

Ilustración 4.1.7 Tabla de Firmas

4.1.5.6 Tabla de Historial

En esta tabla se va a ir almacenando el historial de los materiales que se vayan registrando al momento de ir capturando
la información de entrada y salida del almacén.
Ilustración 4.1.8 Tabla de Historial de Material

4.2 APLICACIÓN MÓVIL

4.2.1 Diseño de la aplicación

Podemos mencionar que al inicio del desarrollo de esta aplicación se requiere que también sea una aplicación intuitiva,
fácil de manejar por el personal de almacén, además que sea compatible con cualquier sistema operativo. Para la
creación de estos diseños se usa un archivo .XML y a la vez podemos visualizar el diseño previo por medio del Split que
nos ayuda a ver ambos.

4.2.1.1 Login de inicio

En esta ventana se comenzó el inicio del diseño de la ventana de login, recordemos que se requieren archivos XML para
la creación de estos. Visualizamos en esta imagen que está compuesto por un LinearLayout (alinear los elementos
adecuadamente), ImageView que es donde se ponen prácticamente el logo de la empresa, TextView para la creación de
los espacios de donde se ingresará el Usuario y Password correctamente.

Ilustración 4.2.1 Login de Inicio

4.2.1.2 Menú de opciones


En esta segunda ventana el diseño de las opciones varía de acuerdo con lo que se solicitó en la empresa, en este caso
vemos que ocupamos varios componentes de Android Studio y que llevan tales como un TextView que es donde
indicamos el titulo para que nos indique “Seleccione una opción” y varios Button que estos nos indican la acción a
ejecutar de acuerdo con las necesidades y estos están clasificados como:

● Salida de Material
● Entrada de Material
● Historial de Material
● Cerrar Sesión

Ilustración 4.2.2 Menú de Opciones

4.2.1.3 Salida de material

Esta ventana fue creada para el registro de artículos que vayan saliendo al momento que los técnicos lo soliciten al área
de almacén y ayude a tener un mejor control correctamente. Para el diseño de esta ventana fue ocupado un ScrollView
que nos ayudará a poder mover los datos correctamente de la ventana y no tener dificultades al momento que se vaya
dando información, varios LinearLayout que nos ayudan a darle un mejor formato a la ventana actual, TextView que es
una simple etiqueta de texto a la que podemos adornar con diferentes estilos y propiedades de texto.
Ilustración 4.2.3 Salida de Material

4.2.1.4 Entrada de material

Esta ventana fue creada para el registro de artículos que vayan devolviendo al momento que los técnicos vayan al área
de almacén y ayude a tener un mejor control correctamente. Para el diseño de esta ventana fue ocupado un ScrollView
que nos ayudará a poder mover los datos correctamente de la ventana y no tener dificultades al momento que se vaya
dando información, varios LinearLayout que nos ayudan a darle un mejor formato a la ventana actual, TextView que es
una simple etiqueta de texto a la que podemos adornar con diferentes estilos y propiedades de texto.
Ilustración 4.2.4 Entrada de Material

4.2.1.5 Historial de material

En este diseño prácticamente fue para poder tener una manera de buscar los registros del almacén que se vayan
anotando en la aplicación correctamente. Prácticamente esta ventana también está diseñada con componentes tales
como LinearLayout, TextView, ScrollView y un elemento extra llamado DatePicker y que este nos ayuda a poner una
fecha con ayuda de un calendario que sale en nuestra pantalla y podamos así buscar la información correctamente.
Ilustración 4.2.5 Historial de Almacén

4.3 PROGRAMACIÓN DE APLICACIÓN

4.3.1 Login

En esta primera parte podemos visualizar que la primera pantalla de la aplicación se trata básicamente de un inicio de
sesión para el registro del almacén. Solo podrá ingresas con las credenciales autorizadas registradas en el sistema de la
programación de esta ventana.
Ilustración 4.3.1 Pantalla de login de almacén

Ahora visualizaremos una parte del código que se utilizó para esta primera ventana de la aplicación móvil.

Ilustración 4.3.2 Programación de almacén

4.3.2 Opciones de sistema


En esta ventana podemos visualizar las opciones que hay para seleccionar en el sistema cuando requiera algo la persona
del almacén.

Ilustración 4.3.3 Pantalla de opciones almacén

Ahora visualizaremos una parte del código que se utilizó para esta ventana que nos ayudará a seleccionar la opción
deseada.

Ilustración 4.3.4 Programación de interacción de menús


4.3.3 Salida de mercancía

En esta ventana podemos hacer el registro la salida de material del almacén, podemos mencionar que se cuenta con el
campo de: Nombre, Fecha, Pedir, Ventana de vista de materiales ingresado, etc.

Ilustración 4.3.5 Salida de mercancía

Ahora visualizaremos una parte del código que se utilizó para esta ventana que nos ayudará a registrar el material que
va a llevarse para sus ocupaciones de mantenimiento, instalación de redes, etc.
Ilustración 4.3.6 Programación de salida de mercancía

4.3.4 Entrada de mercancía

En esta pantalla es similar a la anterior, solo que para esta ventana es para hacer el ingreso de material que devuelven
los técnicos que no requieren o que simplemente no ocupan.

Ilustración 4.3.7 Entrada de mercancía


Ahora visualizaremos una parte del código que se utilizó para esta ventana que nos ayudará a registrar el material que
va a devolver el técnico que no haya ocupado o descompuesto.

Ilustración 4.3.8 Programación de entrada de mercancía

4.3.5 Historial de material

Aquí podemos visualizar que esta ventana cuenta con un buscador de fecha y que cuando seleccionas la fecha
correspondiente podrás visualizar la información del almacén que comprende de “X” fecha.
Ilustración 4.3.9 Historial del almacén de materiales

Ahora visualizaremos una parte del código que se utilizó para esta ventana que nos ayudará a registrar el material que
va a devolver el técnico que no haya ocupado o descompuesto.

Ilustración 4.3.10 Programación de historial


CAPÍTULO V

PRUEBAS Y RESULTADOS

5.1 Pruebas con la aplicación

En el caso de pruebas podemos mencionar que hicieron varios como, por ejemplo: unitarias y de integración. Estas
pruebas son funcionales ya que estas nos ayudan a verificar que r las características críticas para el negocio, la
funcionalidad y la usabilidad. Las pruebas funcionales garantizan que las características y funcionalidades del software se
comportan según lo esperado sin ningún problema. También se realizaron pruebas no funcionales que esta diferencia es
que esas funciones se prueban bajo carga para el rendimiento de los observadores. Se hicieron desde el teléfono donde
se va a ocupar y verificamos que no falla y que además no hace bug al momento de ingresar muchos datos y que estos
se almacenan correctamente la base de datos de SQLite.

5.2 Resultados Finales

En esta ventana número 1 podemos visualizar la pantalla de login con un usuario y contraseña que ocuparemos para
poder acceder al registro del almacén y las credenciales que se ocuparán son admin como usuario y password.

Ilustración 5.1 Login

En esta ventana 2 podemos visualizar el menú de opciones que el encargado del almacén puede seleccionar para que
pueda hacer uso de la aplicación.
Ilustración 5.2 Opciones de Almacén

En esta ventana 3 podemos visualizar el formato para dar salida a un material que sea solicitado por el técnico, como
podemos visualizar se compone de varios campos tales como: Nombre, Fecha, Pedir (almacén), Vista de materiales
salidos, número de almacén y firma.

Ilustración 5.3 Salida de Material


En esta ventana 4 podemos visualizar el formato para dar entrada a un material que sea devuelto por el técnico, como
podemos visualizar se compone de varios campos tales como: Nombre, Fecha, Pedir (almacén), Vista de materiales
salidos, número de almacén y firma.

Ilustración 5.4 Regreso de Material

En esta ventana 5 podemos visualizar el formato para dar búsqueda de material de acuerdo con la fecha que
solicitemos.
Ilustración 5.5 Historial de Material

CONCLUSIONES

En el periodo de las estadías que comprende el periodo Mayo - Agosto se realizó un proyecto que fue solicitado por la
empresa FIBRA TV SA DE CV, y que este comprendió sobre un sistema de gestión de entrada y salida de material del
almacén, que fueron mencionados por la encargada de sistemas Karina Zepeda Sánchez y que gracias al apoyo dado de
ella y los medios dados se pudo facilitar para el desarrollo de este proyecto y que va a mejorar en los almacenes que
haya una entrada-salida de los materiales. Además, mencionar el apoyo brindado por mi asesor de la universidad la
profesora Marisol Morales Reséndiz que me estuvo brindado recomendaciones y corrigiendo detalles que fueran
sucediendo y estando al pendiente de cualquier situación que se fuera presentando tanto en la empresa como la
escuela.

Uno de los beneficios es que se ve que va a mejorar y tener rendimiento para tener buen sistema de almacenes, poder
hacer consultas sobre lo que se va sacando y metiendo del almacén y así se evitará tener descontrol sobre lo que vaya
sucediendo tanto en este lugar. Otro beneficio que tendrá es que para la empresa podrán ahorrar económicamente en
pagar una aplicación sobre el tamaño de esta magnitud y que dará recursos a la empresa para tener una mejora de
calidad del servicio.

También podemos mencionar que se podrá reducirá el tiempo invertido en la realización de operaciones
significativamente, lo que permitirá a los empleados realizar más actividades en su tiempo, además de la calidad de la
mano de obra y el servicio mejorará considerablemente, y la cantidad es segura. Cabe que podemos mencionar que los
administradores y gerentes podrán tener oportunidad de registrar a los usuarios del sistema y que estos tendrán ciertos
permisos y poder controlar los accesos adecuadamente del almacén.

Puedo concluir que el buen desarrollo de un sistema como este, puede tener la satisfacción plena y segura que se podrá
tener un buen control, administración y gran respuesta para poder checar información en tiempo real y que además se
podrá tener mayores rendimientos en la empresa. Este sistema fue creado en Android Studio usando Java como
lenguaje de programación y esto es parte que nos han ido mostrando nuestros profesores del TSU en todo este tiempo,
además de que con el progreso de este se iba presentando un reto tras otro, los cuales fueron superados gracias a todos
y cada uno de los conocimientos adquiridos en mi instancia dentro de la Institución como es la Universidad Tecnológica
de San Juan del Río.

GLOSARIO
Abstracción: Proceso de ocultar los detalles de la implementación al usuario y solo se mostrará la funcionalidad, es decir
el usuario obtendrá la información que el objeto hace en lugar de como lo hace y en Java se hace implementando las
clases abstractas e implementando interfaces.

ACID: Se denomina ACID a las características de los parámetros que permiten clasificar las transacciones de los sistemas
de gestión de bases de datos. Cuando se dice que una acción es ACID compliant se indica -en diversos grados- que ésta
permite realizar transacciones.

Aislamiento: Propiedad que define cómo y cuándo los cambios producidos por una operación se hacen visibles para las
demás operaciones concurrentes.

Algoritmo: Es cualquier procedimiento computacional bien definido que parte de un estado inicial y un valor o un
conjunto de valores de entrada, a los cuales se les aplica una secuencia de pasos computacionales finitos, produciendo
una salida o solución.

Android: Sistema operativo móvil basado en el núcleo Linux y otros softwares de código abierto.

Applets: Un applet es una pequeña aplicación Java, la cual está disponible en un servidor web del cual nos la
descargamos y ejecutamos dentro de una página web.

Arquitectura orientada a servicios (SOA): Es un concepto de arquitectura de software que define la utilización de
servicios (programas o rutinas que realizan una función específica) para dar soporte a los requisitos del negocio. Lo que
permite, la Arquitectura Orientada a Servicios, es la creación de sistemas de información ampliables, versátiles y
flexibles que pueden ayudar a las organizaciones a impulsar el rendimiento y, al mismo tiempo, reducir costes de IT y
mejorar la flexibilidad en los procesos del negocio.

Atomicidad: Es la propiedad que asegura que una operación se ha realizado o no, y por lo tanto ante un fallo del sistema
no se puede quedar a medias. Se dice que una operación es atómica cuando es imposible por menos de otra parte de un
sistema encontrar pasos intermedios.

Base de datos: Una base de datos es una recopilación organizada de información o datos estructurados, que
normalmente se almacena de forma electrónica en un sistema informático. Normalmente, una base de datos está
controlada por un sistema de gestión de bases de datos (DBMS). En conjunto, los datos y el DBMS, junto con las
aplicaciones asociadas a ellos, reciben el nombre de sistema de bases de datos, abreviado normalmente a simplemente
base de datos.
Base de datos embebida: Sistema de gestión de bases de datos (SGBD) que está integrado con la aplicación software
que requiere acceso a los datos almacenados, de tal forma que la base de datos está oculta de la aplicación de usuario
final y requiere poco o ningún mantenimiento.

Binarios: Es el lenguaje utilizado por las computadoras para procesar información, siendo un sistema de codificación que
puede servir para representar texto o instrucciones que puede ser “leída” por una computadora. El sistema de código
binario se compone de dos dígitos o bits, dichos dígitos son el “0” y el “1”.

Bucles: Los bucles son una estructura de control de lenguajes de programación usada para realizar repeticiones. Un
bucle o ciclo, en programación, es una secuencia de instrucciones de código que se ejecuta repetidas veces, hasta que la
condición asignada a dicho bucle deja de cumplirse. Los 3 bucles más utilizados en programación son el bucle while, el
bucle for y el bucle do-while.

Bytecode: El bytecode Java se encuentra dentro del archivo de extensión .class y es el tipo de instrucciones que la
máquina virtual Java (JVM) espera recibir para posteriormente ser compiladas a lenguaje de máquina mediante un
compilador JIT a la hora de su ejecución. Usualmente es el resultado de utilizar un compilador del lenguaje de
programación Java (como javac), pero puede ser generado desde otros compiladores.

Campo clave: es un dato que define de manera única cada registro de una tabla. Un campo clave no puede tener valores
nulos y siempre debe tener un índice único. Los campos clave son columnas de información que se encuentran
integrados en una tabla que nos identifican de forma única cada registro de esta.

Campos: Componentes que proporcionan la estructura a una tabla. No es posible tener una tabla sin campos. Por
ejemplo, puede crear una tabla vacía que tenga definidos los campos, pero ninguna fila (registros). En las bases de datos,
se utilizan campos para mantener las relaciones entre las tablas.

Clases: Son plantillas para la creación de objetos. Como tal, la clase forma la base para la programación orientada a
objetos en Java, la cual es uno de los principales paradigmas de desarrollo de software en la actualidad.

Clave Primaria: En el diseño de bases de datos relacionales, se llama clave o llave primarias o clave principal a un campo
o a una combinación de campos que identifica de forma única a cada fila de una tabla. Una clave primaria comprende de
esta manera una columna o conjunto de columnas. No puede haber dos filas en una tabla que tengan la misma clave
primaria.

Código Abierto: Software cuyo código fuente y otros derechos que normalmente son exclusivos para quienes poseen los
derechos de autor, son publicados bajo una licencia de código abierto o forman parte del dominio público
Compiladores: Es un programa que traduce un programa escrito en lenguaje fuente y produce otro equivalente escrito
en un lenguaje destino, es decir de Lenguaje de alto nivel.

Consistencia (integridad): Es cuando una operación consiste en una serie de pasos, de los que o bien se ejecutan todos o
ninguno, es decir las transacciones son complejas.

Constructores: Elemento de una clase cuyo identificador coincide con el de la clase correspondiente y que tiene por
objetivo obligar a y controlar cómo se inicializa una instancia de una determinada clase, ya que el lenguaje Java no
permite que las variables miembros de una nueva instancia queden sin inicializar.

Cross-docking: Es un tipo de preparación de pedido sin colocación de mercancía en stock, ni operación de picking.
Permite transitar materiales con diferentes destinos o consolidar mercancías provenientes de diferentes orígenes que
puede variar dependiendo las necesidades del producto.

Datos relacionales: Tipo de base de datos que cumple con el modelo relacional». Así, según esta definición de base de
datos relacional, se trata de una base de datos que almacena y da acceso a puntos de datos relacionados entre sí. El
modelo relacional es una forma intuitiva y directa de representar datos sin necesidad de jerarquizarlos.

Entidad: Unidad de una base de datos que contiene información. Esta unidad es una representación dentro de la base
de datos de un objeto, persona, empresa... etc, del mundo real, y como tal posee ciertos atributos que la diferencian del
resto de entidades.

Escalabilidad: Capacidad que tienen las bases de datos de mejorar la disponibilidad y su comportamiento cuando el
negocio demanda más recursos. Esta escalabilidad se puede abordar desde dos enfoques: Vertical y Horizontal.

Ficheros: Es el conjunto de datos estructurados que pueden estar almacenados en un soporte de datos de forma que
puedan ser tratados o utilizados de forma individual o global. Cada fichero se tiene que identificar con un nombre. Los
elementos que forman un fichero se llaman registros y dichos registros se definen como la unidad mínima de
información completa de un fichero.

Función de partición de Base de datos (DPF): Una partición de base de datos es una construcción lógica y una parte de
la base de datos que contiene los datos de usuario y los índices. Puede haber varias particiones de base de datos en un
entorno de bases de datos particionadas.

Gradle: Paquete de herramientas de compilación avanzadas, para automatizar y administrar el proceso de compilación y
al mismo tiempo definir configuraciones de compilación personalizadas y flexibles.
Hardware: Es la parte que puedes ver y tocar de los dispositivos. Es decir, todos los componentes de su estructura física
como pantallas y teclados. El hardware suele distinguirse entre básico (los dispositivos necesarios para iniciar el
funcionamiento de un ordenador) y complementario (realizan ciertas funciones específicas).

Herencias: La herencia es un pilar importante de OOP (Programación Orientada a Objetos). Es el mecanismo en Java por
el cual una clase permite heredar las características (atributos y métodos) de otra clase. Aprenda más a continuación. En
el lenguaje de Java, una clase que se hereda se denomina superclase.

ID: Identificación de Usuario o nombre de usuario.

Integridad de datos: La integridad de los datos se refiere a la precisión, integridad y confiabilidad general de los datos.
Puede especificarse por la falta de variación entre dos instancias o actualizaciones consecutivas de un registro, lo que
indica que su información está libre de errores. Corresponde también a los controles de seguridad e integridad y
métodos de cumplimiento normativo.

Inteligencia Artificial (IA): Combinación de algoritmos planteados con el propósito de crear máquinas que presenten las
mismas capacidades que el ser humano.

IT: Tecnologías de la información y la comunicación.

Java: Lenguaje de programación y una plataforma informática que fue comercializada por primera vez en 1995 por Sun
Microsystems. Hay muchas aplicaciones y sitios web que no funcionarán, probablemente, a menos que tengan Java
instalado, y cada día se crean más. Java es rápido, seguro y fiable.

Java Development Kit (JDK): Software que provee herramientas de desarrollo para la creación de programas en Java.
Puede instalarse en una computadora local o en una unidad de red.

Kotlin: Lenguaje de programación de tipado estático que corre sobre la máquina virtual de Java y que también puede ser
compilado a código fuente de JavaScript. Es desarrollado principalmente por JetBrains en sus oficinas de San
Petersburgo.

Lenguaje de consulta estructurada (SQL): SQL es un lenguaje estandarizado que sirve para definir y manipular los datos
de una base de datos relacional.
De acuerdo con el modelo relacional de datos, la base de datos se crea como un conjunto de tablas, las relaciones se
representan mediante valores en las tablas y los datos se recuperan especificando una tabla de resultados que puede
derivarse de una o más tablas base.
Lenguaje de Etiquetado extensible (XML): Es el metalenguaje utilizado para almacenar datos en forma legible, surgió
por la necesidad de almacenar grandes cantidades de información. Por lo que es muy común que sea utilizado en hojas
de cálculo, bases de datos, editores de texto, etc.

LinearLayout: es uno de los diseños más simples y más empleado. Simplemente establece los componentes visuales uno
junto al otro, ya sea horizontal o verticalmente.

Macrodatos: Es el término que hace referencia a conjuntos de datos tan grandes y complejos que precisan de
aplicaciones informáticas no tradicionales de procesamiento de datos para tratarlos adecuadamente.

Máquina Virtual de Java (JVM): Es el ejecutable en una plataforma específica, capaz de interpretar y ejecutar
instrucciones expresadas en un código binario especial (el bytecode Java), el cual es generado por el compilador del
lenguaje Java.

Métodos: Los métodos son subrutinas que manipulan los datos definidos por la clase y, en muchos casos, brindan
acceso a esos datos. En la mayoría de los casos, otras partes de tu programa interactuarán con una clase a través de sus
métodos. Un método contiene una o más declaraciones.

Módulos: Formato de distribución para colecciones de código Java y recursos asociados. Además, también se puede
especificar un repositorio para almacenar estas colecciones o módulos e identifica cómo se pueden descubrir, cargar y
verificar su integridad.

Monousuario: Son aquellos que soportan a un solo usuario a la vez, sin importar el número de procesadores que tenga
la computadora o el número de procesos o tareas que el usuario pueda ejecutar en un mismo instante de tiempo, las
computadoras personales típicamente se han clasificado en este renglón.

Objetos: Se trata de un ente abstracto usado en programación que permite separar los diferentes componentes de un
programa, simplificando así su elaboración, depuración y posteriores mejoras.

Persistencia: Acción de preservar la información de un objeto de forma permanente (guardado), pero a su vez también
se refiere a poder recuperar la información de este (leerlo) para que pueda ser nuevamente utilizado.

Picking: Es la gestión de los proyectos logísticos que hace referencia al método de preparación de pedidos que,
utilizando un número mínimo de pasos, consigue agilizar el proceso.

Programación orientada a objetos (POO): Es el modelo de programación informática que organiza el diseño de software
en torno a datos u objetos, en lugar de funciones y lógica. Un objeto se puede definir como un campo de datos que tiene
atributos y comportamiento únicos.
Redundancia: La redundancia de datos es la copia (o reescritura) de los datos, que se produce cuando algunas piezas o
porciones de datos se almacenan dos veces. La redundancia de datos también tiene lugar si ciertos datos se pueden
derivar directamente de otros.

Relación: Es el vínculo entre dos o más entidades describe alguna interacción entre las mismas. Se describen en la
estructura de la base de datos empleando un modelo de datos. Son muy empleadas en los modelos de bases de datos
relacional.

Seguridad: La seguridad de base de datos hace referencia a la variedad de herramientas, controles y medidas diseñadas
para establecer y conservar la confidencialidad, la integridad y la disponibilidad de la base de datos.

Sentencias: Las sentencias de control, denominadas también estructuras de control permiten tomar decisiones y realizar
un proceso repetidas veces. Son los denominados bifurcaciones y bucles, este tipo de estructuras son comunes en
cuanto a concepto en la mayoría de los lenguajes de programación, aunque su sintaxis puede variar de un lenguaje de
programación a otro.

Sintaxis: Es el conjunto de reglas que definen la manera de escribir instrucciones de código. Cada lenguaje de
programación tiene su propia sintaxis, es por eso por lo que no es conveniente estudiar la programación basándose
puramente al momento de escribir el código, sino entendiendo la manera de pensar, los conceptos básicos, conocer las
estructuras de control y cómo aplicarlas.

Sistema de gestión de bases de datos (DBMS): Es la colección de software muy específico, orientado al manejo de base
de datos, cuya función es servir de interfaz entre la base de datos, el usuario y las distintas aplicaciones utilizadas.

Software: Son programas, datos o métodos de funcionamiento qué, a modo de instrucciones, permiten a los equipos
informáticos realizar sus tareas.

SQLite: Es una herramienta de software libre que permite almacenar información en dispositivos empotrados de una
forma sencilla, eficaz, potente, rápida y en equipos con pocas capacidades de hardware, como puede ser una PDA o un
teléfono celular. SQLite implementa el estándar SQL92 y también agrega extensiones que facilitan su uso en cualquier
ambiente de desarrollo.

Stock: Relación detallada, ordenada y valorada de los elementos que componen el patrimonio de una empresa o
persona en un momento determinado. Antiguamente lo normal era que los inventarios se realizaran por medio físico (se
escribían en un papel), pero ahora se suelen mantener en bases de datos de manera centralizada a toda una empresa,
aunque haya empresas o tiendas pequeñas que lo sigan haciendo con papel.
String: Secuencia de caracteres usados para representar el texto, es uno de los valores primitivos y el objeto String es un
envoltorio alrededor de un String primitivo.

Superclase: Es el término utilizado en la programación orientada a objetos para indicar una clase genérica, no
necesariamente abstracta, que puede extenderse por una o más subclases, o clases secundarias, que representan
versiones especializadas.

Tablas: Se refiere a los objetos o estructuras que contienen todos los datos organizados a través de filas y columnas.

TextView: widget que muestra texto al usuario como su nombre lo sugiere. Claramente esto lo hace ser uno de los views
más usados en interfaces de usuario para proyectar cabeceras, títulos, texto informativo, etiquetas y muchos otros.

Unívoca: Es la relación de uno a uno, un registro de una tabla se asocia a uno y solo un registro de otra tabla. Por
ejemplo, en una base de datos de un centro educativo, cada alumno tiene solamente un ID de estudiante, y cada ID de
estudiante se asigna solo a una persona.

First name Surname External tool: External tool: Examen External tool: Práctica 11

Examen 09 (Real) parcial (Módulos 1-8) (Real)

(Real)

Jesus Ãngel Acosta Ortiz 8 35 5

Quezada Aguilar Angel Eduardo 10 24 5

Irvan Ricardo Bolaños Sanchez 9 37 5

Jesus Eduardo Coatzin Anaya 10 24 5

Gonzalez Ordaz Elizabeth 9 35 5

Loyola Ruiz Francisco Arturo 10 36 5

Gomez Estrella Francisco Salvador 10 35 5

Jose Manuel Hernández Bartolo 10 34 5

Lopez Camacho Javier 8 34 5

Cruz Esteban Luis Felipe 9 36 5

Diego Ordonez Morales 10 37 5

Ferrer Martinez Perla 10 35 5

Chavez Mateo Raul 8 36 5


Diego Salinas Vazquez 10 32 5

Raul Michel SANCHEZ MORALES 10 33 5

Jordi Swindall Hernández 9 33 5

REFERENCIAS BIBLIOGRÁFICAS

Alcocea Huertos, A. (23 de Septiembre de 2021). Obtenido de ComputerHoy:


https://computerhoy.com/reportajes/tecnologia/historia-lenguajes-programacion-428041

AlegsaOnline. (20 de Diciembre de 2021). Obtenido de es.Alegsaonline.com: https://es.alegsaonline.com/art/6722

Android Developers. (17 de Mayo de 2021). Obtenido de Android Developers:


https://developer.android.com/studio/intro?hl=es-419

AprendeAProgramar.com. (25 de Julio de 2015). Obtenido de AprendeAProgramar.com:


http://www.aprendeaprogramar.com/mod/resource/view.php?id=220#:~:text=Son%20ficheros%20que
%20podremos%20crear,Abrir%20el%20fichero

Belmonte Fernandéz, O. (2005). Introducción al lenguaje de programación Java. En O. Belmonte Fernández, Introducción
al lenguaje de programación Java (págs. 13-14). España: Universitat Jaume I. Obtenido de Academia.

Berenguer, M. C. (22 de Marzo de 2018). Obtenido de JavAutodidacta: https://javautodidacta.es/constructor-en-java/

Bernal, L. (23 de Marzo de 2022). Obtenido de adSalsa: https://www.adsalsa.com/evolucion-de-las-bases-de-datos/

Cabello, M. V. (2010). Introducción a las bases de datos relacionales. En M. V. Cabello, Introducción a las bases de datos
relacionales (pág. 20). Madrid: Vision Libros.

Cabello, M. V. (2010). Introducción a las bases de datos relacionales. En M. V. Cabello, Introducción a las bases de datos
relacionales (pág. 25). Madrid: Vision Libros.

Chakray. (07 de Octubre de 2021). Obtenido de Chakray: https://www.chakray.com/es/lenguajes-programacion-tipos-


caracteristicas/

De Vega, R. M. (25 de Abril de 2022). Obtenido de Profile: https://profile.es/blog/que-es-un-algoritmo-informatico/

Drake, M. (26 de Agosto de 2020). Obtenido de Digital Ocean:


https://www.digitalocean.com/community/tutorials/understanding-relational-databases-es

Fericle, X. (1 de Octubre de 2021). Obtenido de Software de Gestión Empresarial | Telematel:


https://www.telematel.com/blog/control-de-stocks/

Garro, A. (2019). Obtenido de Java: https://www.arkaitzgarro.com/java/capitulo-2.html

Gomez, R. (30 de Julio de 2008). Peiper.com. Obtenido de Peiper.com:


https://www.monografias.com/trabajos-pdf/lenguajes-programacion/lenguajes-programacion

IBM Corp. (28 de Febrero de 2021). Obtenido de IBM Corp.: https://www.ibm.com/docs/es/iis/11.5?topic=jrules-basic-


java-types-methods
IONOS. (12 de Mayo de 2020). Digital Guide. Obtenido de Digital Guide:
https://www.ionos.mx/digitalguide/hosting/cuestiones-tecnicas/sistema-gestor-de-base-de-datos-sgbd/

Java. (3 de Marzo de 2020). Obtenido de Oracle: https://www.java.com/es/download/help/whatis_java.html

López García, J. C. (2009). Algoritmos y Programación. En J. C. López García, Algoritmos y Programación (pág. 27).
Colombia: Fundación Gabriel Piedrahita Uribe.

Marker, G. (18 de Junio de 2021). Obtenido de Tecnología + Informática:


https://www.tecnologia-informatica.com/ejemplos-de-algoritmo/

Marqués-Andrés, M. (2011). Obtenido de Universitat Jaume I. Departament d'Enginyeria i Ciència dels Computadors:
http://repositori.uji.es/xmlui/handle/10234/24183

Meana Coalla, P. P. (2017). Gestión de inventarios. En P. P. Meana Coalla, Gestión de inventarios (pág. 4). España:
Paraninfo, S. A.

Mecalux. (16 de Diciembre de 2021). Obtenido de Mecalux: https://www.mecalux.es/blog/control-de-almacen

Meza González, J. D. (21 de Marzo de 2021). Obtenido de Jesgargardon: https://jesgargardon.com/blog/metodos-en-


java/

Muradas, Y. (8 de Septiembre de 2021). Obtenido de OpenWebinars.net: https://openwebinars.net/blog/sqlite-para-


android-la-herramienta-definitiva/

Noega Systems. (14 de Marzo de 2022). Obtenido de Noega Systems:


https://www.noegasystems.com/blog/logistica/almacen-funciones-actividades-planificacion-
ubicacion#Funciones_y_actividades_del_almacen

Oracle. (15 de Febrero de 2022). Oracle México. Obtenido de Oracle México:


https://www.oracle.com/mx/database/what-is-database/

Pere. (12 de Junio de 2019). GraphEverywhere. Obtenido de GraphEverywhere:


https://www.grapheverywhere.com/tipos-bases-de-datos-clasificacion/

Programacion Webs. (19 de Junio de 2022). Obtenido de Programacion webs:


https://www.programacionwebs.com/java/introduccion-a-la-programacion-orientada-a-objetos/

Robledo Fernández, D., & Robledo Sacristán, C. (2012). Programación en Android. En D. Robledo Fernández, & C.
Robledo Sacristán, Programación en Android (págs. 38-40). España: Ministerio de Educación.

Robledo Sacristán, C., & Robledo Fernandéz, D. (2012). Programación en Android. En C. Robledo Sacristán, & D. Robledo
Fernandéz, Programación en Android (págs. 33-35). España: Aula Mentor.

Santaella, J. (9 de Mayo de 2022). Obtenido de Talently Blog: https://talently.tech/blog/que-es-android-studio/

SEAS, Estudios Superiores Abiertos. (7 de Agosto de 2019). Obtenido de Blog de SEAS:


https://www.seas.es/blog/informatica/conoce-el-lenguaje-de-programacion-java/

SG Buzz. (Mayo de 2006). Obtenido de SG Buzz: https://sg.com.mx/revista/17/sqlite-la-base-datos-embebida

Timetoast. (1 de Enero de 1822). Obtenido de Timetoast Timelines: https://www.timetoast.com/timelines/historia-de-


los-lenguajes-de-programacion-52656490-35b4-417b-aef2-7c08510bc7f8

Universidad Complutense Madrid. (2007). Programación orientada a objetos con Java. España: Pearson Educación.

Universidad de la Empresa. (6 de Julio de 2021). Obtenido de Universidad de la Empresa: https://ude.edu.uy/que-son-


algoritmos/#:~:text=Desde%20el%20punto%20de%20vista,produciendo%20una%20salida%20o%20soluci
%C3%B3n.
Universidad de Piura. (16 de Febrero de 2012). Obtenido de UDEP Hoy: https://www.udep.edu.pe/hoy/2012/02/la-
evolucion-de-sistemas-de-administracion-de-base-de-datos/

Universidad Europea. (21 de Febrero de 2022). Obtenido de Universidad Europea:


https://universidadeuropea.com/blog/control-almacen/#:~:text=El%20control%20de%20almac%C3%A9n
%20se,consumo%20en%20las%20unidades%20log%C3%ADsticas.

Universidad Nacional Autónoma de México. (Febrero de 2021). Obtenido de UNAM:


https://docencia.tic.unam.mx/presenciales/Lenguaje-de-programacion-java.html

Universidad Politécnica de Valencia. (4 de Enero de 2011). Obtenido de Escuela Técnica Superior de Ingeniería
Informática: https://histinf.blogs.upv.es/2011/01/04/historia-de-las-bases-de-datos/

Walton, A. (17 de Febrero de 2022). Obtenido de Java desde Cero:


https://javadesdecero.es/poo/objetos-java/#2_Que_es_un_Objeto

Walton, A. (17 de Febrero de 2022). Obtenido de Java desde Cero: https://javadesdecero.es/poo/herencia-java-tipos-


ejemplos/

Watters, A. (13 de Agosto de 2021). Obtenido de Blog Centro de e-Learning:


https://blog.centrodeelearning.com/2021/08/13/java-todo-lo-que-hay-que-saber-sobre-uno-de-los-lenguajes-
de-programacion-mas-utilizados/
ANEXOS

Anexo 1. CRONOGRAMA DE ACTIVIDADES

Aquí podrá encontrar los datos de cómo se fue organizando los tiempos para el desarrollo de este proyecto, que abarca
desde el inicio hasta el fin. Cabe aclarar que se fue dividiendo por semanas de cada mes correspondiente.
**Fechas estimadas

San Juan del Río, Qro., a 21 de Septiembre 2022

Nombre:
Alumno(a) de la carrera de tecnologías de la información y comunicación área
sistemas informáticos

PRESENTE
Por este conducto se le informa que la Memoria de Estadía: PÁGINA WEB CLUB
BOBCATS que Usted realizó en la empresa: CLUB BOBCATS; Ha sido
autorizada y aprobada para sustentar el acto protocolario de Titulación.

ATENTAMENTE

M.A.P.I. FIDENCIO DÍAZ MENDEZ


DIRECTOR DE LA DIVISIÓN DE MECATRÓNICA Y TECNOLOGÍAS DE LA
INFORMACIÓN Y COMUNICACIÓN

c.c.p. M.G.T.I. ADÁN UGALDE OSORNIO - Jefe Depto. Servicios Escolares.

Archivo

También podría gustarte