Está en la página 1de 15

Desarrollo Web: Front End

Cuando se habla de desarrollo web, se hace referencia a todo lo que se puede crear por medio de
códigos, aunque la palabra se escuche muy fácil, está compuesto por gran cantidad de lenguajes de
programación que ayudan a que el proceso se realice de forma correcta y sin ningún tipo de
inconvenientes, aunque se debe estar muy claros que tipo de desarrollo de software se quiere
realizar para saber que lenguaje de programación se debe estudiar, tomando en cuenta que existen
desarrollos web, de aplicaciones de escritorios y aplicaciones móviles, donde cada uno tiene una
ruta de aprendizaje diferente.

En este curso se habla de temas de gran importancia para el desarrollo de software haciendo énfasis
en la programación orientada a objetos, como los son sus llamados paradigmas, así como también
los patrones de diseño que llevan a que se realice una codificación correcta entendible para todos
los programadores. Las interfaces graficas son otro punto importante para tocar ya que sin interfaz
no hay interacción con el usuario, y sin interacción con el usuario no hay ganancias de ningún tipo.

Los temas para tratar en el curso son los siguientes:

Tema 1: Introducción al paradigma orientado a objetos

Tema 2: Conceptos básicos de la POO

Tema 3: Diseño de clases, herencia y polimorfismo

Tema 4: Patrones de diseño básicos

Tema 5: Interfaces gráficas

Tema 6: Análisis y evaluación de algoritmos

Tema 7: Estructura de datos lineales, recursivas y no lineales

Tema 8: Búsqueda y Ordenamiento

Tema 9: Estrategias para una buena programación


Bienvenida

Estimado estudiante, nos da mucho gusto darte la bienvenida a este nuevo curso sobre Desarrollo
web: Front end. A lo largo del mismo, aprenderás sobre paradigma orientada a objetos, conceptos
básicos de programación orientada a objetos, diseño de clases, herencia y polimorfismo, patrones
de diseño, interfaces gráficas, análisis y evolución de algoritmos, estructuras de datos, lineales,
recursivas y no lineales, búsqueda y ordenamiento. También se proponen algunos ejercicios de
familiarización con la información brindada en los recursos.

¡Esperamos te sea útil todo lo expuesto en este maravilloso curso!

Tema 1: Introducción al paradigma orientado a objetos

El paradigma orientado a objetos

El paradigma Orientado a objetos (OO) es el que define a cada uno de los programas que se dedican
a trabajar con objetos. Se conoce como objeto a las entidades que se combinan para lograr una
función, para agregar algún procedimiento o método, en esta programación el paradigma difiere
del estructurado o imperativo. Los objetos se comunican entre ellos para lograr diversas tareas. Este
paradigma surge para lograr la solución de problemas que venían de la aplicación del paradigma
imperativo. Se debe tomar en cuenta que con el manejo de objetos es más fácil elaborar programas
y módulos más fáciles de codificar.

Por su parte se dice también que tiene como objetivo el desarrollo computacional basado en la
colección de objetos que trabajan conjuntamente y se interrelacionan entre sí para solventar algún
problema. Se dice que se crea con un enfoque diferente para obtener soluciones computacionales.
Se conoce como una manera de realizar la programación, donde los objetos son la clave para
conseguir los resultados.

En el siguiente recurso de MasterHeHegar (04 de febrero de 2014). Introducción del Paradigma de


la Programación Orientada a Objetos. Archivo de video. Recuperado
https://www.youtube.com/watch?v=wmECY8XCe4E Se explica con detalle una introducción del
Paradigma de la programación orientada a objetos.

Características fundamentales de la programación orientada a objetos

Las características de la programación orientada a objetos se ven reflejadas en la abstracción que


se trata de la generalización conceptual de un determinado conjunto de objetos y de los atributos
que lo componen. La encapsulación se refiere a la capacidad de agrupar condensar en un entorno
con limites bien definidos diversos elementos, cuando se encapsula siempre se refiere a una
encapsulación abstracta. La herencia se aplica sobre las clases, es decir, de alguna forma las clases
pueden tener descendencia donde heredara algunas características de las clases padres.

Por su parte el Polimorfismo es una propiedad que sugiere múltiples formas, se trata de la
posibilidad de acceder a varios rangos dentro de la misma interfaz, es decir, un mismo identificador
puede estar compuesto por distintas formas. El mismo se puede establecer mediante la sobrecarga
de identificadores y operaciones para las funciones virtuales, cuando se habla de sobrecarga se
refiere al uso del mismo identificador en distintos significados y contextos.

En el siguiente recurso de CursoiOS.es (01 de octubre de 2015). Características de la Programación


Orientada a Objetivos. Archivo de video. Recuperado
https://www.youtube.com/watch?v=leL4Pw7CtI0 Se explica con detalle las características de la
Programación Orientada a Objetos.

Definición de clase, métodos, atributos y objetos

Cuando se habla de la programación orientada a objetos se deben describir ciertos conceptos para
entender su funcionalidad, una clase es la que permite crear los objetos individuales, la misma
encapsula un grupo común de objetos que comparten las mismas relaciones, estructuras, atributos
y operaciones. De este modo un método es la implementación de una operación determinada,
cuando se describe algo que se tiene que realizar en el programa tomando en cuenta que el código
es colocado en el mismo objeto.

Por su parte cuando se habla de atributos hace referencia a los datos que representan las
propiedades de un objeto, es decir, cada objeto funciona de una manera en específico que se deben
identificar para que pueda operar en la forma de que se requiera. Los objetos en la programación
orientada a objeto tienen una funcionalidad parecida a los objetos en la vida real, trata de almacenar
sus estados de campos y expone su comportamiento con cada uno de los métodos que se describen
en el programa.

En el siguiente recurso de Abimael Ajtun. (31 de mayo de 2020). Definición de una clase, objeto,
atributos y métodos. Archivo de video. Recuperado
https://www.youtube.com/watch?v=dS5gB4xIUlc Se explica con detalle el significado de clase,
objeto, atributo y método.

Definición de función, estructura y apuntador

En la programación orientada a objetos las funciones son utilizadas para modificar el estado del
programa, la función depende de los valores que sean configurados para poder dar un resultado.
Cuando se habla de las estructuras en un lenguaje orientado objetos es la manera en que se coloca
el código para que sea de fácil entendimiento, cuando se crean los procesos, funciones y métodos,
los mismos deben llevar para abrir y cerrar la instrucción en el programa java, tomando en cuenta
que dentro de ella se encuentra el contenido, mientras mejor estructurado se encuentre el código,
todos los programadores podrán entenderlo y continuarlos.

Por su parte los apuntadores o punteros se conoce como un objeto de lenguaje de programación,
que se refiere a apuntar a determinado valor que se encuentra almacenado en otro lugar de la
memoria del ordenador utilizando la dirección respectivamente. De la misma manera hace
referencia a una ubicación en memoria, a modo de analogía el número de páginas que se encuentra
en el índice de un libro corresponde a un puntero.
En el siguiente recurso de Empieza a Programar. (08 de diciembre de 2013). Punteros a Estructuras
y funciones con estructuras. Archivo de video. Recuperado
https://www.youtube.com/watch?v=f6aK9QL-fdA Se explica con detalle los procedimientos de
punteros y estructuras.

Tema 2: Conceptos básicos de la POO

Diseño y representación gráfica de objetos UML

Un diagrama de objetos en UML representa una instancia específica, se enfoca principalmente en


los atributos de un conjunto de objetos que se encuentran relacionados entre sí, donde se muestran
a través de los objetos, los procesos que se pueden realizar, mayormente en un sistema de
información con los accesos de usuarios, se puede representar a cuales menú tiene acceso cada uno
de ellos, y también fácilmente determinar a cuales no tiene acceso, ayudando a que los procesos
sean entendidos de mejor manera.

Por su parte los diagramas de objetos están compuestos por rectángulos conectados mediante
líneas. Las especificaciones de UML no cambian cuando se diseña un diagrama de objetos. Los
diagramas de objetos se encuentran vinculados con los diagramas de clases, el diagrama de objetos
puede ser visto como una instancia de diagrama de clases. Los diagramas de objetos describen la
estructura estática de un sistema en un momento en particular, es decir, cuando no cambia su
estructura.

En el siguiente recurso de Jose Andres Garcia Florez.(22 de octubre de 2017). Diagrama de Objetos
UML. Archivo de Video. Recuperado https://www.youtube.com/watch?v=wUctre35pZA Se explica
con detalle el diagrama de objetos UML.

Diseño y representación gráfica de diagramas de clases en UML

Se debe tomar en cuenta que una clase es la descripción de un conjunto de objetos que comparten
los mismos métodos, atributos, operaciones, relaciones, semánticas. Se representa por medio de
cajas donde se coloca cada campo que se va describir, entre ellos se encuentran, atributos,
operaciones, nombre de la clase, reglas, historia, modificaciones. Se dice de la misma manera que
es un diagrama que define las clases que se van a utilizar para construcción de un modelo de sistema
de información.

Por su parte son diagramas estructurales que sigue un estándar visual ISO para interpretar los
sistemas de información orientados a objetos, de la misma manera permite visualizar procesos de
negocio. Se debe tomar en cuenta que UML muestra estado de los sistemas y describe la interacción
entre cada uno de los elementos que lo componen. Se debe tomar en cuenta que para poder
desarrollar estos diagramas de clases, deben saber las reglas de UML.
En el siguiente recurso de lucidchart Español. (04 de febrero 2019). Tutorial de Diagrama de Clases
UML. Archivo de video. Recuperado https://www.youtube.com/watch?v=Z0yLerU0g-Q Se explica
con detalle el funcionamiento del diagrama de clases de UML.

Identificación de requerimientos de software: funcionales y no funcionales

Los requerimientos funcionales se conocen por ser la manera en que reaccionara el sistema con
respecto a las entradas particulares de información. En algunos sistemas los requerimientos
funcionales declinan lo que el sistema no debería realizar. De este modo son las declaraciones de
los servicios que proveerá el sistema, es decir, los procesos que se deben realizar para cumplir algún
requisito, atender a una necesidad o solventar algún problema. Es importante conocer si estos
requerimientos son factibles para ser realizados.

Por su parte los requerimientos no funcionales son los que no reflejan directamente lo que debe
realizar el sistema, si no a los problemas que pueden ocurrir luego de desarrollado el sistema. Se
dice también que estos requerimientos surgen de las necesidades que tiene el usuario. Los
requerimientos de rapidez del sistema también corresponden a uno no funcional. Se derivan de los
factores externos a los sistemas y de su proceso de desarrollo, incluyen los requerimientos de
interoperabilidad.

En el siguiente recurso de CavernaTech. (01 de septiembre de 2019). Definición de requerimientos


funcionales y no funcionales. Archivo de video. Recuperado
https://www.youtube.com/watch?v=Lv7XbZtnQ6A Se explica el significado de los requerimientos
funcionales y no funcionales.

Tema 3: Diseño de clases, herencia y polimorfismo

Herencia

Cuando se habla de herencia en la programación orientada a objetos no se refiere coloquialmente


a lo que todos conocemos que son bienes que te puede dejar algún familiar, si no que se trata del
mecanismo donde una clase permite heredar las características, métodos o atributos de otra clase
respectivamente. De la misma manera la herencia permite que se puedan definir diversas clases
basadas en algunas ya existentes con el fin de poder utilizar nuevamente el código que en estas
fueron descritos, de manera de no volver a escribirlo.

Por su parte la herencia engloba el concepto de reutilizar, heredar lo que ya tiene otra, para evitar
escribir nuevamente algún código, también reduce el espacio en memoria. Gracias a la herencia se
logra un código estructurado, más limpio, tomando en cuenta que tendrá menos líneas de códigos.
La clase que hereda se llama subclase, de este modo una subclase es una versión especializada de
una superclase. La misma hereda todas las variables, métodos definidos por la superclase y agrega
sus propios elementos.
En el siguiente recurso de Fredy Geek. (13 de febrero de 2019). ¿Qué es Herencia? Archivo de video.
Recuperado https://www.youtube.com/watch?v=9NynVRpZzv4 Se explica con detalle el significado
de herencia.

Interfaces

Las interfaces son utilizadas para indicar los tipos de métodos que se deben utilizar de forma
obligatoria, los métodos definidos en una interfaz deben ser de tipo public. Se dice también que una
interfaz es un conjunto de métodos abstractos y constantes donde su función principal es identificar
el funcionamiento de una clase, como funciona la plantilla o el molde. Todos los métodos declarados
en una interfaz deben ser abstract o public. Los métodos no pueden ser estáticos, ya que deben ser
redefinidos.

Por su parte todos los atributos declarados en una interfaz son public static final donde se le deben
asignar un valor constante descritos es mayúscula. Se debe tomar en cuenta que una clase puede
implementarse en una o más interfaces. Una interfaz puede heredar de una a varias interfaces, pero
no se puede implementar ningún proceso, porque como se conoce solo las clases pueden heredar
otra clase. De esta manera todas las clases que implementan una interfaz deben de redefinir todos
los métodos de una interfaz.

En el siguiente recurso de NetMentor. (24 de septiembre de 2019). Interfaces en programación


orientada a objetos. Archivo de video. Recuperado
https://www.youtube.com/watch?v=4a0WB4l4Rkw Se explica con detalle el significado de
Interfaces en programación orientada a objetos.

Paquetes

Los paquetes son los que permiten agrupar clases en las interfaces asociadas. Se debe tomar en
cuenta que cuando se escribe el código y se necesita utilizar una clase perteneciente a un paquete,
se debe indicar la ruta completa de cada uno de ellos o declarar su importación en el encabezado
del archivo fuente. Hay convenciones de nomenclatura de paquetes como también existen para los
métodos, clases, procedimientos, generalmente el paquete comienza con el nombre del dominio de
la Empresa a la cual se le está desarrollando el código.

Por su parte se dice que un paquete es un contenedor de clases que facilita a la agrupación de las
distintas partes del programa, tienen elementos comunes y funcionalidades en particular, definen
la ubicación de las clases en un determinado directorio en forma jerárquica. Por su parte sus
ventajas van de la mano de la agrupación de clases con características comunes, así como también
mayor seguridad al existir niveles de accesos. Mantenibilidad de código, si el mismo se encuentra
en un paquete, se reutilizan clases y métodos que hacen que sea más estructurado y ordenado.
En el siguiente recurso de Shakmuria. (08 de diciembre de 2017). Explicación de paquetes en Java.
Archivo de video. Recuperado https://www.youtube.com/watch?v=iEi-xEW0MDU Se explica el
significado de los paquetes en Java.

Polimorfismo

Se conoce como polimorfismo a la capacidad que tienen los objetos de una clase determinada, en
presentar respuestas independientes y distintas en función a los parámetros utilizando en la
invocación. Donde cada objeto puede contener valores de diferentes tipos en la ejecución del
programa. En algunos programas el término polimorfismo es también conocido como la sobrecarga
de parámetros, porque las características de los objetos permiten recibir distintos parámetros para
un mismo método.

Por su parte el polimorfismo consiste en conseguir que un objeto de una clase se comporte como
un objeto de cualquier subclase, tomando en cuenta la forma de llamar a los métodos de dicha clase
o subclase. La mejor manera de que los objetos sean polimórficos es utilizando punteros en las
superclases. De esta manera se puede tener dentro de una misma estructura arreglos, listas, colas,
pilas, objetos de distintas clases, donde el tipo de base de las estructuras sea un puntero en la
superclase.

En el siguiente recurso de Fredy Geek. (30 de abril de 2019). ¿Qué es Polimorfismo? Archivo de
video. Recuperado https://www.youtube.com/watch?v=tjjecfz9Cvk Se explica con detalle el
significado de Polimorfismo.

Tema 4: Patrones de diseño básicos

Patrones de diseño MVC

MVC es considerado un patrón de diseño que se estructura por medio de tres componentes:
controlador, vista y modelo. Este patrón tiene como principio que cada uno de sus componentes se
encuentre separados por diversos objetos, donde se pueden enlazar dentro de una misma clase.
Hoy en día este patrón de diseño es utilizado para desarrollar aplicaciones Web y Móvil.

Por los patrones de diseño MVC se encuentran compuestos por tres componentes. El modelo que
contiene los datos de la aplicación más puros, no contiene ninguna lógica que describa cómo
presentar la información al usuario. La vista presenta los datos de manera que pueda ser entendido
por el usuario, esta sabe cómo acceder a los datos del modelo planteado anteriormente, pero no
tiene conocimiento de lo que significa esta información o que necesita el usuario para poder
manejarla. El Controlador es el que existe entre la vista y el modelo, que escucha los eventos que se
presentan en la vista y los ejecuta posteriormente, es el que permite realizar la acción que plantea
el usuario.

En el siguiente recurso de Vida MRR. (06 junio de 2018). ¿Qué es patrón Modelo Vista Controlador
o MVC y cómo funciona? Archivo de video. Recuperado
https://www.youtube.com/watch?v=zhSDjntidws Se explica con detalle el patrón de Modelo Vista
Controlador.

Observador

El patrón observador es el que permite contar con una amplia gama de soluciones a problemas que
se presentan constantemente en los diseños de software, se pueden clasificar en tres grupos los
creacionales, de comportamiento y estructurales. De este modo los patrones creacionales se
refieren a la iniciación o la creación de los objetos. Los patrones estructurales se encargan de los
componentes que dan forma a los objetos y los Patrones de comportamiento es la manera en que
interactúan los objetos.

Por su parte el patrón observador es ampliamente utilizado hoy en día en aplicaciones de Javascript,
el mismo se encuentra compuesto por un observador y un sujeto respectivamente. El sujeto realiza
una determinada acción, y el observador vigilará que el sujeto lo realice, está atento a cualquier
cambio que se pueda presentar. De esta manera el sujeto es también llamado instancia el mismo
mantiene almacenado una serie de observadores, a los cuales notifica cuando se presenta algún
cambio.

En el siguiente recurso de MitoCode. (20 de agosto de 2018). Cursos de diseño, patrón observador.
Archivo de video. Recuperado https://www.youtube.com/watch?v=QiKrKNTdGGs Se explica con
detalle el significado del patrón observador en java.

Singleton

El patrón de singleton es utilizado cuando se necesita que exista una instancia de una determinada
clase. Donde la clase se creará con una propiedad estática y un constructor privado, de la misma
manera estará compuesta por un método estático que se encargará de crear la instancia cuando
está no exista, también guarda una referencia a la propiedad estática devolviendo los valores de
esta. Este patrón recibe su nombre debido a que solo puede estar compuesto por una instancia para
toda la aplicación de una determinada clase, lo que hace que restringe la libre creación de las
instancias. Se debe tomar en cuenta que la intención de dicho patrón es garantizar que solo pueda
existir una sola instancia en una determinada clase y que en toda la aplicación solo exista una
referencia global.

En el siguiente recurso de MitoCode. (02 de junio de 2018). Curso de Patrones de diseño Singleton.
Archivo de Video. Recuperado https://www.youtube.com/watch?v=gocJeOHtj9w Se explica con
detalle el significado del patrón de diseño Singleton.

Tema 5: Interfaces gráficas

Interfaces gráficas

Se conoce como interfaz del usuario al conjunto de elementos, formatos, formas, por el cual el
usuario puede comunicarse con la computadora, o en su defecto poder interactuar con ella. Se debe
tomar en cuenta que todo lo creado se compone a base de códigos pero que, si no se le crea una
interfaz el usuario nunca podrá interactuar con ella, es decir, no la entenderá. Si hablamos tomando
una computadora de ejemplo, el teclado, el mouse y el monitor son los medios respectivos para
poder comunicarse con la máquina, por donde sale la información.

Por su parte la interfaz gráfica del usuario es el contenido gráfico donde se visualiza la información
en una pantalla. Se debe tomar en cuenta que todos los programas tienen una Interfaz, unos más
fáciles que otros, para que el usuario pueda entenderlo y realizar los diversos procesos que estos
les brindan. De este modo una interfaz sirve para mostrar información al usuario y este poder
interpretarlo de forma fácil. Por ejemplo, cuando abrimos una página web todo lo que se observa
es la interfaz del usuario, ya que si no la tienen fueran solo códigos unos tras de otro.

En el siguiente recurso de Movil Beta. (24 de octubre de 2018). Interfaces graficas de usuario-
Herramientas. Archivo de Video. Recuperado https://www.youtube.com/watch?v=AYvZEhZfzxY Se
explica con detalle el significado de las Interfaces gráficas.

API Java

En Java se presentan dos tipos de APIS, el APIS de núcleo es el conjunto mínimo que los
desarrolladores en java pueden asumir que se encuentran presentes en cada una de las plataformas
de JAVA. También se presentan las llamadas extensiones estándar son las que están definidas para
trabajar con la API de núcleo. Existen varias librerías que trabajan con esa API, las cuales están
compuestas por JDK API es considerada la más fundamental, se encuentra compuesta por ocho
paquetes básicos java.applet, java.awt, java.awt.peer, java.awt.image, java.lang, java.net, java.io,
java.util.

Por su parte otras de las librerías es Java Security API encargada de la seguridad de la aplicación.
Java Media API es la que incorpora posibilidades de gestionar los medios como video, sonido, gráfico
que se definen en las áreas de 2D, 3D. Java Enterprise API integra un conjunto de librerías que van
relacionadas con la conectividad de base de datos y las aplicaciones que se encuentran distribuidas
en JDBC, IDL, RMI. Java Commerce API va relacionada con la manipulación de finanzas, para el uso
de tarjetas de crédito y transacciones electrónicas.

En el siguiente recurso de Mundo Progra. (28 de noviembre de 2016). Conociendo la API de Java.
Archivo de Video. https://www.youtube.com/watch?v=7uTSTJfp_ZQ Se explica con detalle el
significado de la API de Java.

GUI: Swing

Java Swing se conoce como un paquete que hace parte de la gama de Java Foundation Classes o
conocida con las siglas JFC, la que contiene herramientas para que la construcción de GUI´s se realice
de manera más facil, que son las interfaces gráficas presentadas al usuario en JAVA. Se conoce como
Swing a un conjunto de librerías que están enfocadas a el desarrollo de las interfaces, este término
proviene de la evolución de AWT (Abstract Windows Toolkit), estas librerías presentan problemas
al desarrollar interfaces que sean compatibles a diferentes sistemas operativos.
Se debe tomar en cuenta que con Swing se le da vida a cada uno de los sistemas desarrollados en
JAVA permitiendo que el usuario interactúe con el sistema, es importante conocer que Swing ayuda
a estructurar el programa desarrollado en JAVA, se debe tomar en cuenta que se pueden manejar
eventos de cada componente dependiendo de las necesidades que tenga el programa en el
momento, se puede modificar el aspecto visual del programa con los comandos look & feel.

En el siguiente recurso de Cristian Henao. (26 de enero de 2016). ¿Qué es Java Swing?. Archivo de
Video. Recuperado https://www.youtube.com/watch?v=IUHd-UOxT0s Se explica con detalle el
significado de Java Swing.

Tema 6: Análisis y evaluación de algoritmos

Diseño de estructura de datos: definición, abstracción funcional, abstracción de datos

La estructura de datos se conoce como una colección de valores, es decir, son como los datos que
se encuentran organizados en un lenguaje de programación, la relación que existe entre las
operaciones y valores que se pueden asignar a cada uno de ellos se conoce como estructura de
datos, adicionalmente que cada dato debe tener un tipo de datos para poder ser manejado de forma
correcta, de este modo una estructura de datos indica el formato en que cada valor debe ser
almacenado.

Por su parte se conoce la abstracción funcional como la idea de crear funciones y procedimientos
en diversas partes del programa tomando en cuenta un nombre, se debe tomar en cuenta que en
este proceso es la de como la función o procedimiento realiza una tarea, lo que se queda consigo es
la entrada y salida de parámetros, un ejemplo de esta sería la función factorial. De este modo la
abstracción de datos va de la mano del propio tipo de datos que se está manejando, un tipo de datos
boolean tiene su estructura bien definida se maneja en un lenguaje como Pascal, abstrae los datos
y puede ser un valor entero o un bit.

En el siguiente recurso de Mauricio Avilés. (18 de abril de 2020). ED- Tipos de datos abstractos
Archivo de Video. https://www.youtube.com/watch?v=hiWh9cMkKHM Se explica con detalle el
significado de los tipos de datos abstractos, recomendamos centrar la atención desde el minuto
10:00 del video.

Estructura de datos lineales: listas, pilas y colas

Cuando se habla de listas, pilas y colas, se llega a la frase estructura de datos, porque esto hace
referencia a la estructura que deben tener los datos, a la hora de ser manejados por el sistema, lo
que nos ayudan a mejorar la forma y el orden en que se procesan los datos respectivamente, todo
esto va relacionado en lo que se esté manejando, por ejemplo si se habla de comida, se debe
ordenar de forma que salgan al mercado las fechas próximas a vencer para evitar que se dañen y
causen perdidas a las Empresas.

Por su parte se entiende por Pila a las que utilizan la estructura primero que entra último en salir
(First In Last Out), donde los últimos datos serán ingresados como los primeros, conocido como un
orden inverso. Colas conocido como el primero que entra es el primero que sale (First In First Out),
un ejemplo visto usualmente es el primero que llega es el primero que pasará a la tienda o
supermercado. Cuando se habla de listas es un array donde cada casilla está compuesta por dos
valores.

En el siguiente recurso de Universitat Politécnica de Valencia. (21 de septiembre de 2011).


Estructuras de Datos Lineales: Pila, Cola y Lista con Punto de Interés. Archivo de Video. Recuperado
https://www.youtube.com/watch?v=-Shr2s0gYao Se explica con detalle el significado de Pila, cola
y lista.

El TAD Lista: operaciones básicas, algoritmos sobre listas, implementación.

Cuando se habla de algoritmo se hace referencia a la secuencia de código que se escribe para lograr
una función, una necesidad o resolver alguna problemática en específico. TAD es un tipo abstracto
de datos, que son los valores y operaciones asociadas a la implementación de un objeto de manera
precisa, su objetivo es separar la interfaz de la implementación de los algoritmos de las operaciones
y la representación de los datos. Se debe tomar en cuenta que el estado de un TAD va de la mano
de la secuencia de operaciones realizadas sobre él.

Por su parte TAD en cadena de caracteres STRING, se conoce como el tipo de datos STRING a un
tipo simple de datos. Las operaciones básicas de creación que se realizan con este TAD son la
concatenación y la extracción, así como también las búsquedas de las respectivas subcadenas. Los
datos manejados en las cadenas son modificables, es decir, que se puede modificar su contenido en
cada una de las cadenas.

En el siguiente recurso de manugunt. (14 de abril de 2020). Tipos Abstractos de Datos: el TAD Lista -
parte 1. Archivo de video. Recuperado https://www.youtube.com/watch?v=f2EXztXim_4 Se explica
con detalle el significado de tipos Abstractos de Datos.

Tema 7: Estructura de datos lineales, recursivas y no lineales

Estructura de datos recursivas: árboles binarios, árboles n-ários

Se conoce como arbol son estructuras de datos no lineales, utilizada para resolver problemas tanto
de hardware como de software. Los árboles binarios se conocen como la estructura de datos no
lineales, para resolver los problemas de software y de hardware, es aplicado en informática, a
diferencia de las listas son no lineales, se conocen como estructuras jerárquicas, compuesta por un
conjunto de nodos que describen la funcionalidad del arbol, de esta manera cada nodo puede estar
ramificado por otra serie de nodos a la izquierda o derecha, o en su defecto no tener ninguna
ramificación. Algunas de las identificaciones de nodos se ven reflejadas en nodo padre y nodo hijo.

Por su parte los árboles n-ários es una estructura de datos de forma recursiva, donde este tipo de
árbol tiene un número cualquiera de árboles n-ários asociados, estos árboles derivan de los binarios
respectivamente, la diferencia que existe entre estos que puede estar asociado por múltiples sub
árboles, a diferencia de los binarios que solo pueden tener dos. Es importante conocer el concepto
y las diferencias de cada uno de ellos, para poder elegir el correcto y cumpla con las necesidades.

En el siguiente recurso de makigas. (12 de noviembre de 2015). Estructuras de datos – 13. Árboles
binarios de búsqueda (parte 1). Archivo de Video. Recuperado
https://www.youtube.com/watch?v=G1VS5FbtMS4 Se explica con detalle los arboles binarios.

El TAD Árbol Binario: operaciones, algoritmos básicos y avanzados.

Cuando se habla de TAD hace referencia a interpretaciones lineales o unidimensionales, las líneas
siguen un elemento previo u otro siguiente respectivamente, dependiendo de la función que se va
a realizar. Se debe tomar en cuenta que un árbol presenta una estructura jerárquica sobre una
colección de objetos, se presenta tanto dentro como fuera del área de informática, se utilizan para
la representación o interpretación de los lenguajes aritméticos, desde procesos recursivos, hasta
interpretación de datos, de este modo se utilizan los mismos cuando se necesita representar
información jerarquizada.

Por su parte un caso simple de árbol binario es cuando se utiliza una variable N y en su defecto su
valor es 2, se considera un valor constante, el árbol es nulo, se construye el árbol con un elemento
y dos árboles descendentes. De este modo también se puede determinar profundidad tomando en
cuenta el inorde, preorden y postorden. Existe procedimientos de amplitud que van de la mano de
visitar los nodos de un árbol, por niveles, es decir, primero nivel 1 y luego nivel 2.

En el siguiente recurso de makigas. (12 de noviembre de 2015). Estructuras de datos – 13. Árboles
binarios de búsqueda (parte 1). Archivo de Video. Recuperado
https://www.youtube.com/watch?v=G1VS5FbtMS4 Se explica con detalle los arboles binarios.

Algoritmos con árboles binarios.

Se conoce como algoritmo a una secuencia finita y lógica que componen una serie de pasos para la
resolución de un problema, alguna necesidad o cumplir algún objetivo propuesto. Se debe tomar en
cuenta que la descripción del orden lógico a realizar cada uno de los pasos es importante, lo que
significa que, si se ejecuta algún algoritmo varias veces debe dar el mismo resultado, el algoritmo
debe ser finito, es decir, que su composición debe estar compuesta por un principio y un fin, todos
los bucles deben tener fin, dando el resultado correspondiente.

Por su parte los algoritmos de árbol binario también cuentan con una estructura respectivamente.
Se pueden organizar algoritmos de árboles como una forma intuitiva de organizar información
jerárquica, donde se utiliza un único punto de entrada y una serie de caminos donde se colocaran
diferentes nodos, que harán las funciones necesarias para que se cumpla el objetivo de resolver
algún problema o necesidad.

En el siguiente recurso de Juan David Castaneda. (30 de abril de 2016). Algoritmo Arboles binarios.
Archivo de Video. Recuperado https://www.youtube.com/watch?v=PaAotw7OEeM Explica el
significado del algoritmo de los arboles binarios.
Tema 8: Búsqueda y Ordenamiento

Estructuras de datos no lineales: grafos, tablas de hashing, diccionarios.

Las estructuras de datos no lineales se le conoce también como estructuras multi-enlazadas, donde
cualquier elemento o nodo puede estar enlazado con cualquier otro nodo o elemento. Son
estructuras en donde cada uno de los elementos puede tener varios sucesores o predecesores. Se
conoce como grafo al que agrupa entes físicos, conceptuales y los relaciona entre ellos, un grafo se
encuentra formado por un conjunto de vértices o nodos que representan a cada uno de los vértices,
y conjunto de arcos que representan las relaciones entre los vértices.

Por su parte las tablas de hash son contenedores asociados a un tipo de diccionario que tienen como
función almacenar y recuperar de forma eficiente los valores, tomando en cuenta otros elementos
como llamada de claves y objetos, se considera como un conjunto de entradas, donde cada una
tiene asociada una clave única, por esta razón diferentes entradas de esta tabla estarán compuestas
por diferentes claves únicas. De este modo diccionario es una estructura de datos que permite
guardar diversas parejas de claves y valores.

En el siguiente recurso de Betta Tech. (10 de enero de 2020). 6 ESTRUCTURAS de DATOS que todo
INGENIERO debería CONOCER. Archivo de Video. Recuperado
https://www.youtube.com/watch?v=5k2DWMRTXMM Se explica con detalle la estructura de datos.

El TAD Grafo Dirigido: Operaciones.

Se conoce como grafo dirigido donde la arista tiene una única dirección, es decir, que su
comunicación va en un solo sentido, donde se compone por u, v, siendo u el vértice origen y v el
vértice destino, que permiten representar relaciones jerárquicas y asimétricas. Si se necesita
representar una estructura docente el grafo dirigido es el ideal para esta función, ya que se utilizan
los grados de los cursantes y la mayoría de las relaciones no son simétricas. Es importante conocer
que proceso se va a representar para poder construir el grafo correcto. Por su parte se conoce
también como grafo dirigido a aquel que todas sus aristas tienen sentido o dirección en específico,
para poder reconocerlo a simple vista, se busca entre sus nodos las flechas que apunten a algún
lugar siempre en una sola dirección.

En el siguiente recurso de CRIC. (06 de diciembre de 2012). Grafos dirigidos. Archivo de Video.
Recuperado https://www.youtube.com/watch?v=H2NL-fR9tFc Se explica detalladamente el
significado de grafos dirigidos.

Tema 9: Estrategias para una buena programación

Estrategias de Optimización

Cuando se desarrolla una página web, aplicación móvil o cualquier sistema que este compuesto de
códigos, es importante verificar como están establecidos cada uno de los procedimientos,
sentencias, variables, funciones, ya que por medio de su construcción es que se va determinar que
funcione de forma correcta, porque puede estar bien codificada pero al mostrar los procesos son
lentos, ya que gasta espacio en memoria al ejecutarse, todo esto se debe en las largas líneas de
código que al ser optimizadas se reduce, para lograr la satisfacción de los clientes.

Por su parte es importante conocer de arquitectura de procesos, para poder determinar donde se
encuentra la falla, luego de hacer un análisis respectivo del código, se debe tomar en cuenta que
hay códigos que se pueden reutilizar cuando se van a llamar determinados procesos, por ejemplo
salir del sistema, cancelar para limpiar ciertos objetos que se encuentren en el formulario, así como
también guardar, modificar, eliminar y consultar una determinada información, ya que se realiza el
mismo proceso, solo cambia las variables.

En el siguiente recurso de Adels School of education. (5 de febrero de 2015). Tips para mejorar la
programación. Archivo de Video. Recuperado https://www.youtube.com/watch?v=xwB-3aeXOq0
Se explica con detalle las estrategias de programación.

Programación dinámica

La programación dinámica es la que permite dividir en subproblemas más sencillos para poder ser
solventados de manera más fácil. De la misma manera intenta resolver de forma eficiente y eficaz
planteándose como una técnica para evitar calcular lo mismo varias veces, es decir, copiar el mismo
código varias veces lo que evitara que el sistema desarrollado sea optimo, consumiendo un alto
recurso en memoria, usualmente estos procesos repetitivos hacen que la computadora colapse y
tumben los procesos.

Por su parte la programación dinámica utiliza para sus procesos el principio de optimalidad que se
trata de una secuencia de decisiones óptimas donde toda subsecuencia es también óptima. Esto es
la clave para abordar problemas de optimización, planear las secuencias de las decisiones óptimas
que llevan a resultados satisfactorios, donde el sistema se ejecute de forma correcta sin afectar
ningún recurso del servidor o computadora donde esté funcionando.

En el siguiente recurso de Alvaro Jesus Nina Laura. (22 de noviembre 2015). PROGRAMACIÓN
DINÁMICA: Introducción. Archivo de Video. Recuperado
https://www.youtube.com/watch?v=pNWqIprPwzY Se explica con detalle el significado de la
programación dinámica.

Algoritmos Golosos

Un algoritmo goloso o de Greedy es el que permite la toma de decisiones de corto alcance, que se
basa en la información que se encuentra directamente disponible, sin tomar en cuenta lo que pueda
cambiar en el futuro. Se utiliza mayormente para resolver problemas de optimización. Lo que
permite que se desarrollen diversos algoritmos eficientes que ayuden a que la ejecución del
programa se realice de manera correcta. El mismo se cambia de forma aleatoria con respecto a sus
valores.

Por su parte en este algoritmo seleccionan una variable que cambia su valor de verdad
incrementando el número de cláusulas ejecutadas satisfactoriamente, el objetivo siempre será
aumentar las mismas, este procedimiento es repetido hasta que no se encuentre una mejora, si la
solución es esa, el algoritmo se detiene, porque ya el procedimiento se encuentra completado.

En el siguiente recurso de promedia ufps. (07 de septiembre de 2017). Algoritmos Greedy. Archivo
de Video. Recuperado https://www.youtube.com/watch?v=AtdFmnOf-7s Se explica el significado
detallado de Algoritmos Greedy.

Algoritmos Genéticos

Los algoritmos genéticos se conocen como métodos adaptativos que se utilizan para resolver
problemas de búsqueda y optimización. Su aparición fue basada en los procesos genéticos de los
organismos vivos. Se debe tomar en cuenta que los primeros ejemplos de los algoritmos genéticos
se ven reflejados a finales de los 50 y principios de los 60, que se encuentran programados en
computadoras por biólogos que buscaban realizar modelos de aspectos de evolución natural.

Por su parte se conoce como algoritmo genético a la técnica que permite solventar problemas que
imita a la evolución biológica como un método para la resolución de problemas, como su nombre
lo indica genética por el seguimiento de genes que se relaciona con la biología. Por medio de un
problema específico a resolver, la entrada del Algoritmo genético es un conjunto de soluciones,
codificadas de alguna manera, y una métrica llamada función de aptitud.

En el siguiente recurso de MindMachineTV. (2017, Septiembre 28). ¿Qué es un algoritmo genético?.


Archivo de Video. Recuperado https://www.youtube.com/watch?v=Bhme3i8jHpU& Se explica con
más detalle el algoritmo genético.

Paradigma de programación orientada a objetos

También podría gustarte