INDECI:
TOMO1:
ALGORIMO
Qué es un algoritmo y por qué son importantes en la programación…….1
Quién es considerado el padre de la informática y por qué..
3
ALGORITMO:
1¿Qué es un algoritmo y por qué son importantes en la programación?
Todo algoritmo tiene una entrada, conocida como input y una salida, conocida como output,y
entre medias, están las instrucciones o secuencia de pasos a seguir. Estos pasos deben estar
ordenados y, sobre todo, deben ser una serie finita de operaciones que permitan conseguir una
determinada solución.
En el mundo de la programación, todo programa o sistema operativo funciona a través de
algoritmos, escritos en un lenguaje de programación que el ordenador pueda entender para
ejecutar los pasos o instrucciones de una forma automatizada. A nivel debig data e inteligencia
artificial, los algoritmos analizan la información y datos de consumidores y usuarios finales.
•Características de los algoritmos
Son definidos: Si se le da la misma información de entrada, siempre debe dar los mismos
resultados.
Son concretos: Ofrecen una solución concreta a un problema.
Son finitos: Tienen un número determinado de pasos.
Son ordenados: Su secuencia debe ser clara y concisa.
Son precisos: No tienen ambigüedades.
•Tipos de algoritmos
Cualitativos: No usan cálculos numéricos, sino secuencias lógicas.
Cuantitativos: Usan cálculos matemáticos para resolver el problema.
Computacionales: Requieren muchos cálculos o operaciones complejas, por lo que los tiene que
implementar una computadora.
No computacionales: No requieren de una computadora y los puede resolver una persona.
•Importancia de los algoritmos en la programación
Son la base de la informática moderna.
Permiten resolver problemammvs de manera eficiente.
Son esenciales para diseñar software y aplicaciones que funcionen bien con grandes cantidades
de datos
2¿Quién es considerado el padre de la informática y por qué?
Alan Turing es considerado el padre de la informática moderna. Fue un matemático británico
que realizó importantes contribuciones a la informática teórica, la inteligencia artificial y la
criptografía.
•Aportaciones de Alan Turing
La máquina de Turing, que formalizó los conceptos de algoritmo y computación
La computabilidad universal
El test de Turing, que permite juzgar la inteligencia de una máquina
El diseño de uno de los primeros computadores electrónicos programables digitales
•Turing y la Segunda Guerra Mundial
Trabajó en Bletchley Park, el centro de criptografía británico, donde desarrolló técnicas para
romper los códigos alemanes
Su trabajo en criptología contribuyó a la victoria aliada durante la Segunda Guerra Mundial
•Legado de Alan Turing
Su legado perdura en cada línea de código, en cada algoritmo y en cada avance tecnológico
Su trágica persecución y condena por su orientación sexual arrojan luz sobre la discriminación y
la injusticia que enfrentan las minorías sexuales
3. ¿Cuáles son las diferencias clave entre los lenguajes de programación de alto
y bajo nivel?
•Lenguajes de bajo nivel
5
Basicamente, un lenguaje de bajo nivel es un lenguaje de programación pensado para
interactuar directamente con la máquina, por lo que está íntimamente relacionado con su
estructura y funcionamiento, utilizando instrucciones básicas que la máquina interpreta
directamente, siendo por tanto dificil de interpretar o entender por el programador. En
definitiva, cada CPU va a tener su propio código máquina, el cual va a estar controlado (en
general) por el firmware.
En el código máquina puro, se utiliza código binario por lo que el código está repleto de ceros y
unos. Esta situación deriva en que el código binario se convertierta en hexadecimal (u otras
variantes) para simplificar el trabajo del programador, principalmente, reduciendo las cadenas
de código. Por ejemplo, el código binario 1001111000001010 se convierte en 9E0A.
•Lenguajes de alto nivel
Los lenguajes de alto nivel son aquellos que son entendibles por humanos de forma directa sin
necesidad de tener que interpretarlos, es decir, se adaptan a las capacidades congnitivas
humanas.
Principales lenguajes de bajo nivel
Código máquina.
Ensamblador.
C/C++ (Es un lenguaje de alto nivel que puede programar a bajo nivel... este sería el que
podríamos considerar como intermedio, y por tanto voy a ponerlo en las dos listas,
aunque siendo estrictos, es un lenguaje de alto nivel)
4¿Qué es la notación Big O y cómo se utiliza para medir la eficiencia de un
algoritmo?
La notación Big O es una forma de medir la eficiencia de un algoritmo en función del
tamaño de la entrada. Se utiliza para analizar y describir el rendimiento de los
algoritmos.
Cómo se utiliza
Se usa para comparar diferentes algoritmos por el número de operaciones que hacen.
Se usa para identificar y comprender el peor de los casos y el tiempo de ejecución o la
memoria requerida de un algoritmo.
Se usa para comprender y optimizar los requisitos de memoria de los algoritmos.
Cómo se expresa
Se expresa como O(f(n)), donde f(n) representa el límite superior de la memoria
adicional utilizada por el algoritmo en función del tamaño de entrada n.
Se simplifica eliminando cualquier término no determinante y constante. Por ejemplo,
O(2n) se convierte en O(n).
Ejemplos
Si el número de pasos permanece igual sin importar cuán grande sea n, entonces el
tiempo es constante O(1).
Si recorres una lista larga de n pasos, entonces darás como máximo n pasos: O(n).
5¿Qué son las estructuras de datos y cuáles son las más comunes en la
programación?
Las estructuras de datos son formas de organizar información en una computadora,
para que sea más fácil buscar, manipular e insertar datos. Son una herramienta
fundamental en la programación.
Las estructuras de datos más comunes son:
•Arrays
También llamadas matrices o vectores, son listas ordenadas de valores. Son una
estructura de datos estática, es decir, su tamaño se define antes de que el programa se
ejecute.
•Listas enlazadas
Son similares a los arrays, pero no es necesario saber la cantidad de elementos que va a
contener.
•Pilas
Son un tipo de lista que solo permite eliminar o insertar en la cima de la lista.
•Colas
Son otro tipo de lista que permite emular el comportamiento de una fila o cola de la
vida real.
7
•Árboles
Son una estructura de datos jerárquica que consiste en nodos conectados entre sí
mediante enlaces o ramas.
•Grafos
Son una estructura de datos compuesta por nodos y aristas.
•Tablas Hash
Son una estructura de datos que permite acceder a los elementos de manera rápida y
eficiente mediante una clave.
Las estructuras de datos pueden ser estáticas o dinámicas, y lineales o no lineales.
6¿Cómo se implementa un algoritmo de ordenamiento por burbuja y cuál es su
complejidad?
El algoritmo de ordenamiento de burbuja se implementa comparando y intercambiando pares
de elementos adyacentes en una lista. Se repite este proceso hasta que la lista esté ordenada.
•Implementación
1. Iniciar desde el principio de la lista
2. Comparar cada par de elementos adyacentes
3. Si los elementos están en el orden incorrecto, intercambiarlos
4. Pasar al siguiente par y repetir el paso 3 hasta el final de la lista
5. Repetir el proceso para los elementos restantes hasta que no se necesiten intercambios
•Complejidad
El algoritmo de ordenamiento de burbuja tiene una complejidad temporal de O(n^2), donde n
representa el número de elementos de la lista. Esto se debe a que, en el peor de los casos, cada
elemento debe compararse e intercambiarse con todos los demás elementos.
•Características
El algoritmo de ordenamiento de burbuja es simple de implementar, pero su complejidad de
O(n2) lo hace ineficiente para listas grandes.
7¿Qué ventajas ofrece Python como lenguaje de programación en comparación
con otros lenguajes?
Python es un lenguaje de programación que tiene varias ventajas sobre otros lenguajes, como
su simplicidad, flexibilidad, y comunidad.
•Simplicidad
Es fácil de aprender y usar
Su sintaxis es clara y similar al lenguaje natural
Reduce la curva de aprendizaje para principiantes
•Flexibilidad
Es multiplataforma, por lo que se puede empezar un proyecto en un sistema operativo y
continuar en otro
Es extensible e integrable con otros lenguajes
•Comunidad
Cuenta con una gran comunidad que se encarga de seguir desarrollando y optimizando
cada versión
La comunidad proporciona mucha documentación y ayuda a los principiantes
•Biblioteca estándar
Cuenta con una gran biblioteca estándar que contiene códigos reutilizables para casi
cualquier tarea
•Análisis de datos
Permite hacer análisis de modelado numérico con Numpy
Permite realizar cálculos avanzados con SciPy
Ofrece acceso a una gran cantidad de potentes algoritmos de aprendizaje automático
gracias a la librería scikit-learn
•Portabilidad
Permite a los desarrolladores ejecutar su código en diferentes plataformas sin necesidad
de realizar modificaciones
9
8¿Cómo afecta la calidad del código al rendimiento del software?
La calidad del código es un aspecto fundamental en el desarrollo de software y expresa
que tan bueno es, tanto el mismo como su desarrollador. El código es la base de
cualquier aplicación y es responsable de su funcionamiento, eficiencia y capacidad de
crecimiento. Por lo tanto, es esencial asegurarse de que el código sea de alta calidad. En
el siguiente apartado, exploraremos la importancia de la calidad del código en el
desarrollo de software y cómo puede afectar el rendimiento y la eficiencia de las
aplicaciones.
La calidad del código
Se refiere a la capacidad del código para cumplir con los requisitos funcionales y no
funcionales de una aplicación. El código de alta calidad es fácil de leer, entender,
mantener y modificar. Además, es escalable, eficiente y seguro. La calidad del código
afecta directamente la calidad de la aplicación y su capacidad para satisfacer las
necesidades del usuario final.
Ventajas que ofrece la calidad del código
1. Una de las principales ventajas de la calidad del código es que mejora la eficiencia de
la aplicación. El código bien escrito y organizado se ejecuta más rápido y consume
menos memoria. Esto significa que la aplicación puede procesar más datos y realizar
más tareas en menos tiempo. Además, el código eficiente reduce los costos de
hardware, ya que una aplicación que requiere menos recursos de hardware es más
económica de ejecutar.
2. Otra ventaja de la calidad del código es que mejora la escalabilidad de la aplicación.
Una aplicación escalable es aquella que puede manejar un número creciente de
usuarios y datos sin comprometer su rendimiento. El código de alta calidad es fácil
de modificar y actualizar para satisfacer las necesidades cambiantes de una
aplicación. Esto significa que una aplicación puede crecer y adaptarse a medida que
aumenta la demanda.
3. La calidad del código también es esencial para la seguridad de la aplicación. El código
mal escrito y desorganizado puede contener vulnerabilidades que pueden ser
explotadas por hackers y otros atacantes. Las vulnerabilidades pueden poner en
riesgo la privacidad y seguridad de los datos del usuario. El código bien escrito y
organizado es menos propenso a errores y vulnerabilidades, lo que mejora la
seguridad de la aplicación.
4. El código bien escrito fomenta la mantenibilidad. El código fácil de leer y entender es
más fácil de mantener y actualizar. Esto significa que los desarrolladores pueden
solucionar errores y agregar nuevas funciones más rápidamente. Además, el código
de alta calidad reduce el costo total de propiedad de la aplicación, ya que es más
fácil y económico de mantener a lo largo del tiempo.
5. De igual manera, la calidad del código mejora la colaboración y la eficiencia al
momento de que los equipos de desarrollo ejecuten sus respectivos proyectos. El
código bien escrito y organizado es fácil de entender y modificar para otros
miembros del equipo de desarrollo. Lo que significa que los desarrolladores pueden
colaborar más fácilmente y trabajar juntos para resolver problemas y agregar nuevas
características y funcionalidades acotadas.
Para asegurar la calidad del código, es esencial seguir las mejores prácticas de
codificación. Esto incluye el uso de comentarios claros y descriptivos, la aplicación de
convenciones de nomenclatura consistentes, el seguimiento de principios de diseño de
software sólidos y la implementación de pruebas rigurosas. Además, la automatización
de pruebas y la implementación de herramientas de análisis de código pueden ayudar a
los desarrolladores a identificar y solucionar problemas en el código.
La calidad del código también puede mejorar con la implementación de metodologías
de desarrollo de software ágiles. Estas metodologías se centran en iteraciones rápidas y
frecuentes, lo que permite a los desarrolladores recibir comentarios tempranos y hacer
ajustes en consecuencia. Esto significa que los desarrolladores pueden mejorar
continuamente la calidad del código y la eficiencia de la aplicación
9¿Qué son los algoritmos de búsqueda y cómo se diferencia la búsqueda
binaria de la búsqueda lineal?
Los algoritmos de búsqueda lineal y binaria buscan un elemento en una lista, pero su
rendimiento varía. La búsqueda lineal es más adecuada para listas sin ordenar, mientras
que la búsqueda binaria es más eficiente para listas ordenadas.
•Búsqueda lineal
Examina cada elemento de la lista de forma secuencial
Es adecuada para buscar en una matriz pequeña o sin ordenar
Es una función lineal (n), lo que significa que cuanto más datos haya, más tiempo
consumirá
11
•Búsqueda binaria
Divide repetidamente el intervalo de búsqueda a la mitad
Requiere que la lista esté ordenada
Es una función logarítmica binaria, que consume mucho menos tiempo que la
función lineal
Es más eficiente cuando los datos están ordenados o pueden ordenarse con una
sobrecarga mínima
La búsqueda binaria es más compleja de implementar en comparación con la búsqueda
lineal.
Existen otros tipos de algoritmos de búsqueda, como la búsqueda exponencial y la
búsqueda ternaria.
10¿Qué papel juegan los algoritmos en la inteligencia artificial y el aprendizaje automático?
Los algoritmos de aprendizaje automático mejoran el rendimiento con el paso del
tiempo, ya que se entrenan o se ven expuestos a más datos. Los modelos de aprendizaje
automático son el resultado o lo que el programa aprende cuando se ejecuta un
algoritmo en relación con los datos de entrenamiento. Cuantos más datos se usen,
mejor será el modelo.
El aprendizaje automático es un subconjunto de inteligencia artificial que le permite a
una máquina o un sistema aprender y mejorar de forma automática a partir de la
experiencia. En lugar de una programación explícita, el aprendizaje automático usa
algoritmos para analizar grandes cantidades de datos, aprender de las estadísticas y
tomar decisiones fundamentadas.
•Inteligencia artificial
La IA permite que una máquina simule la inteligencia humana para resolver problemas
El objetivo es desarrollar un sistema inteligente que pueda realizar tareas complejas
Compilamos sistemas que pueden resolver tareas complejas como lo haría una persona
La IA tiene un amplio alcance de aplicaciones
La IA usa tecnologías de un sistema para imitar la toma de decisiones humana
La IA funciona con todos los tipos de datos: estructurados, semiestructurados y no
estructurados
Los sistemas de IA usan árboles de decisión y lógica para aprender, razonar y
autocorregirse
PHP
1¿Qué es PHP y para qué se utiliza principalmente?
PHP (Hypertext Preprocessor) es un lenguaje de programación de código abierto diseñado
principalmente para el desarrollo web. Fue creado originalmente por Rasmus Lerdorf en 1994 y
desde entonces ha experimentado numerosas actualizaciones y mejoras. PHP se utiliza
ampliamente en la creación de sitios web dinámicos y aplicaciones web.
•Aquí hay algunas características y usos clave de PHP:
1. Lenguaje del lado del servidor: PHP se ejecuta en el servidor web, lo que significa
que el código PHP se procesa en el servidor antes de que se envíe el resultado al
navegador del cliente. Esto permite la generación de contenido web dinámico.
2. Interacción con bases de datos: PHP se integra fácilmente con una variedad de
sistemas de gestión de bases de datos (DBMS), como MySQL, PostgreSQL, SQLite y
muchos otros. Esto facilita la creación de aplicaciones web que almacenan y
recuperan datos de bases de datos.
3. Facilidad de uso: PHP es conocido por ser un lenguaje de programación
relativamente fácil de aprender y usar. Su sintaxis está diseñada para ser similar a la
escritura de HTML, lo que facilita a los desarrolladores web trabajar con él.
4. Amplia comunidad y recursos: PHP tiene una gran comunidad de desarrolladores y
una amplia base de usuarios. Esto significa que hay una gran cantidad de recursos,
bibliotecas y frameworks disponibles para ayudar en el desarrollo web con PHP.
5. Compatibilidad con diversos servidores web: PHP es compatible con la mayoría de
los servidores web populares, como Apache, Nginx e IIS, lo que facilita su
implementación en una variedad de entornos de alojamiento web.
6. Creación de aplicaciones web completas: Con PHP, puedes crear aplicaciones web
completas, desde sitios web simples hasta sistemas de gestión de contenido (CMS),
tiendas en línea, foros, blogs y mucho más.
13
Es importante mencionar que, aunque PHP ha sido un lenguaje de programación muy
popular en el desarrollo web durante muchos años, en los últimos años ha habido un
aumento en la adopción de otros lenguajes y tecnologías, como Python, JavaScript y
frameworks de desarrollo como [Link] y Ruby on Rails, para el desarrollo web. Sin
embargo, PHP todavía tiene un lugar sólido en el mundo del desarrollo web y se sigue
utilizando en muchas aplicaciones y proyectos en línea.
PHP se utiliza en una amplia variedad de proyectos web debido a su flexibilidad y
capacidad para trabajar en diferentes contextos. Aquí hay algunos ejemplos de tipos de
proyectos web en los que PHP se utiliza con frecuencia:
Sitios web estáticos y dinámicos
Sistemas de gestión de contenido (CMS)
Tiendas en línea y comercio electrónico
Foros y comunidades en línea
Blogs
Redes sociales
Aplicaciones web personalizadas
Herramientas y aplicaciones internas
2¿Quién creó PHP y cuándo fue lanzado por primera vez?
Rasmus Lerdorf, un programador danés-canadiense, creó PHP en 1993 y lo lanzó en
1995. PHP (Hypertext Preprocessor) es un lenguaje de programación de código
abierto que se utiliza para desarrollar sitios web.
•Historia de PHP
La primera versión de PHP era un conjunto de scripts CGI escritos en C.
PHP/FI (Personal Home Page/Forms Interpreter) fue la primera versión de PHP,
creada en 1995.
PHP/FI incluía capacidades básicas de scripting, integración de bases de datos y
manejo de formularios.
PHP ha evolucionado a lo largo de los años gracias a las aportaciones de la
comunidad PHP.
Cada nueva versión ha incorporado nuevas características y mejoras.
3¿Cuáles son las principales características de PHP que lo hacen
popular en el desarrollo web?
•Las principales características del lenguaje PHP son:
1. Es un código abierto y gratuito.
2. Es un lenguaje orientado a objetos, lo que hace el procesamiento de datos
mucho más rápido.
3. Permite la separación de códigos, es decir, es posible manipular datos
mientras que otros se encuentran estáticos.
4. Es un código limpio y estable.
5. Cuenta con una comunidad amplia y activa donde es posible compartir
conocimientos y encontrar información.
6. Permite el desarrollo de páginas web complejas y dinámicas.
7. Existe una amplia oferta laboral, pues hoy en día son cada vez más las
compañías que buscan el desarrollo de sitios web particulares.
8. Es un lenguaje que puede ejecutarse en cualquier servidor o sistema
operativo siempre y cuando el equipo tenga la capacidad de ejecutar el
código sin dificultades.
9. Es un lenguaje versátil.
10. Permite un gran manejo de procesamiento de datos.
Además, es un lenguaje que maneja diferentes tipos de datos como integer
(números enteros), double (números con decimales), string (cadena de
caracteres), boolean (verdadero o falso), object (datos complejos o
específicos), array (conjunto de valores), null (un dato no posee valor), y
resource (recursos externos).
15
4¿Cómo se integra PHP con HTML y bases de datos como
MySQL?
Para integrar PHP con HTML y bases de datos MySQL, se puede usar MySQLi
o PDO para conectar PHP con MySQL, y luego vincular los archivos PHP con
HTML.
•Conectar PHP con MySQL
Conectarse al servidor MySQL con la instrucción mysqli_connect
Seleccionar la base de datos a la que se desea acceder con
mysqli_select_db
Utilizar sentencias preparadas para mejorar la seguridad y el rendimiento
•Conectar PHP con HTML
Cambiar la extensión del archivo PHP externo y vincularlo a HTML
•Conectar PHP con MySQL usando PDO
Asegurar que la extensión PDO esté instalada y habilitada en el servidor
Establecer la conexión usando PDO
Utilizar «declaraciones preparadas» que evitan las inyecciones SQL
•Insertar datos en MySQL
Utilizar el método PHP MySQLi o el método PHP Data Object o PDO
Utilizar isset para comprobar que las variables están definidas y empty
para determinar si una variable está vacía
PHP es un lenguaje de desarrollo web popular, gratuito y de código abierto.
MySQL es un Relational Database Management System (RDBMS) que utiliza
Structured Query Language (SQL).
5¿Qué es un framework en PHP y cuáles son algunos ejemplos
populares?
Un framework en PHP es una plataforma que ofrece una estructura y
herramientas para crear aplicaciones web con PHP. Entre los frameworks
PHP más populares están Laravel, Symfony, CodeIgniter, Yii y Fat-Free
Framework.
•Características de los frameworks PHP
Agilizan el desarrollo web
Permiten reutilizar componentes
Ofrecen una arquitectura modular
Simplifican el proceso de desarrollo
Permiten adherirse a los estándares de la industria
Reducen la cantidad de código original que necesitas escribir
Permiten mantener altos estándares de calidad
Facilitan la colaboración entre equipos
•Algunos ejemplos de frameworks PHP
CodeIgniter
Un framework de código abierto que es liviano y fácil de usar
Laravel
Un framework conocido por su sintaxis elegante y fácil de entender
Fat-Free Framework
Un framework liviano y comprimido en un solo archivo
Yii
Un framework conocido por su alto rendimiento
Symfony
Un framework popular para PHP
17
Los frameworks PHP permiten a los desarrolladores centrarse en los aspectos
creativos de la programación en lugar de realizar tareas repetitivas.
6¿Cuáles son las diferencias entre PHP 5 y PHP 7?
PHP 7 es una versión mejorada de PHP 5, con mejoras de rendimiento,
nuevas funciones y compatibilidad con 64 bits. PHP 5 ya no recibe
actualizaciones de seguridad, por lo que se recomienda actualizar a PHP 7 o
superior.
Diferencias entre PHP 5 y PHP 7
Eliminación de características obsoletas
PHP 7 elimina características antiguas y obsoletas, lo que hace que el
lenguaje sea más limpio y fácil de mantener.
Compatibilidad con 64 bits
PHP 7 permite a los desarrolladores aprovechar espacios de memoria más
grandes en sistemas de 64 bits.
Mejoras de rendimiento
PHP 7 ofrece mejoras significativas en el rendimiento y un menor uso de
recursos.
Nuevas funciones
PHP 7 introduce nuevas construcciones de lenguaje y funciones.
Refactorización del motor de scripts
En PHP 7, el motor de scripts de código abierto Zend Engine (ZE) ha sido
refactorizado y mejorado, y se lo denomina PHP Next Generation (PHPNG).
PHP 7 fue lanzado en 2015, 10 años después del lanzamiento de PHP 5.
7¿Qué son las variables superglobales en PHP y cómo se
utilizan?
Las variables superglobales en PHP son variables predefinidas que están
disponibles en todos los ámbitos de un script. Esto significa que se pueden
acceder a ellas desde cualquier parte del script, sin importar el alcance.
Las variables superglobals son:
$GLOBALS
$_SERVER
$_GET
$_POST
$_FILES
$_COOKIE
$_SESSION
$_REQUEST
$_ENV
Las superglobales se utilizan para recopilar datos de diferentes fuentes, como
la entrada del usuario, los datos de la sesión y la información del servidor.
8¿Cómo se maneja la seguridad en PHP para prevenir ataques
como la inyección SQL?
La inyección SQL es una vulnerabilidad de seguridad crítica que se encuentra
comúnmente en aplicaciones web, particularmente en aquellas desarrolladas
con PHP e que interactúan con una base de datos backend.
Este ataque permite a usuarios no autorizados manipular datos o ejecutar
comandos en el servidor, lo que hace que la prevención en PHP sea esencial
para la seguridad de las aplicaciones web .
Al evitar las inyecciones SQL, los desarrolladores de PHP pueden proteger
eficazmente los datos confidenciales
En este artículo, exploraremos las causas de la inyección SQL y analizaremos
las medidas de seguridad para evitarla en aplicaciones web implementadas
en varios servidores de alojamiento web PHP .
19
Al codificar, debemos seguir las mejores prácticas para evitar la inyección
SQL en PHP. Algunas de las causas que pueden afectar estos ataques son:
1. Caracteres de espacio filtrados incorrectamente
2. Manejo incorrecto de tipos
3. Pasar datos no saneados a la base de datos
4. No se utiliza la codificación Unicode completa
5. Mezcla del código y los datos.
6. Uso de comillas para delimitar cadenas
Estas son algunas causas que conviene tener en cuenta al codificar para
evitar inyecciones de SQL.
Para evitar la inyección SQL en PHP, puede seguir un enfoque integral paso a
paso que incluye la validación de entradas, instrucciones preparadas y el
manejo adecuado de los resultados de las consultas. A continuación, se
incluye una guía detallada:
Paso 1: Validar la entrada
Antes de procesar cualquier entrada del usuario, valídela y desinféctela para
garantizar que cumpla con los requisitos de su aplicación y sea segura para
las operaciones de la base de datos.
Paso 2: Preparar una consulta
Construya su consulta SQL como una cadena, asegurándose de que no
contenga ningún dato proporcionado por el usuario. Utilice marcadores de
posición (? o marcadores de posición con nombre como username ) en lugar
de incorporar directamente la entrada del usuario.
Paso 3: Crear la declaración preparada
Cree una declaración preparada utilizando PDO para compilar la consulta SQL
en el servidor de base de datos. Este paso prepara la declaración SQL para su
ejecución y, al mismo tiempo, separa la lógica SQL de los datos.
Paso 4: Vincular los parámetros a la declaración preparada
Vincula la entrada de usuario validada a los marcadores de posición en la
declaración preparada. Este proceso maneja automáticamente el escape
adecuado y evita la inyección SQL.
21
Paso 5: Ejecuta tu consulta
Después de preparar la sentencia SQL y vincular de forma segura los
parámetros a los marcadores de posición, se ejecuta la sentencia preparada
mediante el métodoexecute(). Este paso sustituye los parámetros vinculados
de forma segura en la consulta SQL en el momento de la ejecución.
Paso 6: Obtener el resultado
Este paso implica obtener el conjunto de resultados de la declaración SQL
ejecutada utilizando los métodos de búsqueda adecuados que ofrece PDO.
En este fragmento de código:
fetchAll(PDO::FETCH_ASSOC) recupera todas las filas del conjunto de
resultados en una matriz asociativa. Cada elemento de la matriz
corresponde a una fila del conjunto de resultados, con nombres de
columnas como claves.
El bucle foreach itera sobre cada fila del conjunto de resultados.
Dentro del bucle, $row['username'] accede al valor de la columna
'username' para cada fila, que luego se repite para generarlo.
Paso 7: Valida tu solicitud
Realice una validación y prueba exhaustivas de su aplicación para garantizar
que toda la validación de entrada, las consultas SQL y el manejo de salida
sean seguros y funcionen correctamente. Revise y actualice periódicamente
sus prácticas de seguridad para mitigar los posibles riesgos.
9¿Qué es Composer en el contexto de PHP y cómo se utiliza?
Composer es un gestor de dependencias para PHP que permite administrar y
actualizar paquetes y bibliotecas externas. Es una herramienta de código
abierto y multiplataforma.
¿Qué hace Composer?
Evalúa la compatibilidad de los paquetes
Descarga, instala y actualiza los paquetes
Desinstala los paquetes
Carga automáticamente el código de las bibliotecas
Crea y agrega archivos necesarios a los proyectos
Mantiene todos los paquetes actualizados
¿Cómo se utiliza Composer?
Para utilizar Composer en un proyecto web, se debe crear un archivo
llamado [Link] en la raíz del proyecto
Para instalar una nueva dependencia en un proyecto, se puede utilizar el
comando composer require <package>
Para actualizar las dependencias de un proyecto, se puede utilizar el
comando composer update
Para eliminar una dependencia de un proyecto, se puede utilizar el
comando composer remove <package>
Para buscar paquetes en el repositorio central de Composer, se puede
utilizar el comando composer search <query>
¿Por qué se utiliza Composer?
23
Permite a los desarrolladores no tener que crear sus páginas web o
aplicaciones web desde cero
Facilita el control de versiones y el trabajo colaborativo
10¿Cuáles son las mejores prácticas para escribir código PHP
limpio y mantenible?
Para escribir código PHP limpio y mantenible:
Nombres significativos: Usa nombres claros y descriptivos para variables,
funciones y clases.
Flujo claro: Estructura el código de forma lógica y clara para que sea más
fácil de leer y mantener.
Funciones pequeñas: Mantén las funciones y clases pequeñas y
enfocadas para que sean más fáciles de comprender, probar y modificar.
Namespaces: Usa Namespaces para organizar el código y evitar conflictos
entre clases o funciones.
Gestión de errores: Usa try y catch para las excepciones.
Formatos estándar: Usa un formato estándar y coherente para mejorar la
legibilidad.
Documentación: Documenta el código para que sea más fácil de entender
y mantener.
Pruebas: Prueba el código todo el tiempo.
Usar constantes en lugar de variables hardcoded
Usar switch en lugar de if/elseif
Usar operadores ternarios
Encapsular condicionales
Reducir el número de argumentos de una función
Clasificar el código en paquetes
C++
1¿Qué es C++ y para qué se utiliza principalmente?
C++ es un lenguaje de programación que se usa para crear software. Es
un lenguaje de alto nivel y orientado a objetos. Se utiliza para desarrollar
sistemas integrados, como navegadores web, sistemas de dispositivos
médicos y relojes inteligentes.
Características
Es un lenguaje de programación versátil
Es rápido y eficiente
Es flexible y puede funcionar en diferentes niveles de abstracción
Tiene una amplia gama de tipos de datos
Tiene un amplio soporte de bibliotecas
Usos
Se utiliza para desarrollar componentes de navegadores web, como
extensiones, motores de navegador y aplicaciones web
Se utiliza para crear bibliotecas de red para conectarse a servidores
web, enviar solicitudes HTTP, procesar respuestas, y más
Se utiliza para crear backends para sitios web que se ejecutan en
HTML, CSS y JavaScript
25
Se utiliza para construir sistemas integrados que requieren que el
programa esté más cerca del hardware
Historia
Bjarne Stroustrup creó C++ en 1979. Su intención era expandir la
funcionalidad del lenguaje C.
2¿Quién creó C++ y cuándo fue lanzado por primera vez?
C++ es un lenguaje de programación diseñado en 1979 por Bjarne
Stroustrup. La intención de su creación fue extender al lenguaje de
programación C y añadir mecanismos que permiten la manipulación de
objetos. En ese sentido, desde el punto de vista de los lenguajes
orientados a objetos, C++ es un lenguaje híbrido.
3¿Cuáles son las principales características de C++ que lo
diferencian de otros lenguajes de programación?
C++ se diferencia de otros lenguajes de programación por su alto
rendimiento, eficiencia, y la posibilidad de sobrecargar funciones y
operadores. También es compatible con C y tiene una amplia
biblioteca de funciones.
Alto rendimiento
C++ es un lenguaje compilado, lo que significa que el código se
traduce directamente a instrucciones de máquina.
Esto reduce el tiempo de ejecución de los programas.
C++ es ideal para aplicaciones que requieren un alto rendimiento,
como videojuegos y software de sistemas.
Sobrecarga de funciones y operadores
C++ permite a los programadores sobrecargar funciones y operadores
como +, -, *, /, etc.
Esto permite crear tipos de datos personalizados y proporciona una
mayor flexibilidad y expresividad en la escritura de código.
Compatibilidad con C
C++ es compatible con C, lo que permite a los programadores utilizar
código C en programas C++.
4¿Qué es la programación orientada a objetos (OOP) y cómo
se implementa en C++?
La programación orientada a objetos (POO) en C++ es un paradigma de
programación que organiza el código en objetos. En este modelo, el
diseño del software se basa en objetos, en lugar de funciones y lógica.
Implementación de la POO en C++
C++ es un lenguaje de programación híbrido, ya que fue diseñado
para extender al lenguaje de programación C
C++ incorpora mecanismos que permiten la manipulación de objetos
En C++, la herencia es una característica fundamental que permite
derivar una nueva clase a partir de una ya existente
La clase hija hereda todos los miembros de la clase padre, pudiendo
sobrecargarlos, crear unos nuevos o utilizarlos
5¿Cuáles son las diferencias entre C y C++?
C y C++ son lenguajes de programación que se pueden usar para
desarrollar aplicaciones. C es un lenguaje procedimental, mientras que C+
+ es una combinación de procedimental y orientado a objetos.
Diferencias principales
Gestión de memoria: En C, la gestión de memoria es más simple,
mientras que en C++ el programador debe asignar y liberar la
memoria.
Librerías: C++ tiene una librería estándar más amplia que C.
Sobrecarga de operadores: En C++, se pueden sobrecargar
operadores como +, -, *, /, etc.
Compilación: El proceso de compilación de C++ es más complejo que
el de C.
27
Orientación a objetos: C++ es una evolución de C que ofrece más
flexibilidad y funcionalidades orientadas a objetos.
Compatibilidad
C++ es compatible con C, lo que permite utilizar código C en programas
C++. Sin embargo, el código C no es compatible con todas las
características de C++.
6¿Qué son las plantillas (templates) en C++ y cómo se
utilizan?
Las plantillas en C++ son una característica del lenguaje que permite
definir funciones y clases que pueden trabajar con diferentes tipos de
datos. Esto se logra sin tener que reescribir el código para cada tipo de
dato.
¿Cómo se utilizan las plantillas en C++?
Se utiliza la palabra clave template para abrir una plantilla.
Se utiliza <typename T> para indicar que el compilador sustituirá la letra
T por el tipo de dato que se quiera utilizar.
El compilador genera una clase o función a partir de la plantilla en
función de los argumentos que proporcione el usuario.
Este proceso se conoce como creación de una instancia de plantilla.
7¿Cómo se maneja la memoria en C++ y qué son los
punteros?
En C++, la memoria se maneja asignando y desasignando bloques de
memoria, y los punteros son variables que almacenan direcciones de
memoria.
Asignación de memoria
Se asigna memoria dinámicamente con el operador new
Se asigna memoria para variables locales en marcos de pila
Desasignación de memoria
Se desasigna memoria con el operador delete
Se libera memoria con punteros inteligentes
Punteros
Son variables que almacenan direcciones de memoria
Se usan para acceder a objetos en memoria
Se usan para pasar objetos entre funciones
Se usan para recorrer elementos de matrices u otras estructuras de
datos
8¿Qué es la biblioteca estándar de plantillas (STL) en C++ y
cuáles son sus componentes principales?
La biblioteca estándar de plantillas (STL) de C++ es un conjunto de
herramientas de software que incluye contenedores, algoritmos,
iteradores y funciones.
Componentes de la STL
Contenedores: Estructuras que almacenan otras estructuras de datos,
como vectores, listas, pilas, colas, conjuntos, etc.
Algoritmos: Procedimientos que se aplican a los contenedores, como
algoritmos de ordenación, búsqueda y numéricos
Iteradores: Objetos que permiten visitar cada elemento de un
contenedor
Funciones objeto: Permiten pasar una función a un algoritmo para
adecuar su funcionalidad
Adaptadores: Permiten transformar una estructura de datos en otra
con las mismas facilidades pero con una interfaz diferente i
9¿Qué son los operadores sobrecargados en C++ y cómo se
implementan?
i?
29
Los operadores sobrecargados en C++ son operadores a los que se les
ha dado más de un significado. Se implementan como funciones que
especifican el significado del operador cuando se aplica a las
instancias de una clase.
Cómo se implementan
Se utiliza la palabra clave operator para declarar una función.
El nombre de la función es operator x, donde x es el operador.
Por ejemplo, para sobrecargar el operador de suma, se define una
función denominada operator+.
El compilador distingue entre los diferentes significados de un
operador examinando los tipos de sus operandos.
10¿Cuáles son las mejores prácticas para escribir código C++
limpio y eficiente?
Usar nombres descriptivos: Utiliza nombres significativos para
variables, funciones y clases.
Mantener un formato coherente: Usa indentación y un formato
consistente para que el código sea legible.
Evitar la los últimos estándares y pautas de C++ complejidad
innecesaria: Mantén el código simple y directo.
Documentar el código: Usa comentarios claros y concisos para
explicar el propósito y la lógica del código.
Aplicar el principio DRY: Evita duplicar código.
Refactorizar periódicamente: Reestructura el código sin cambiar su
comportamiento externo.
Desarrollar basado en pruebas (TDD): Escribe pruebas junto con el
código para garantizar su fiabilidad.
Usar punteros inteligentes: Administra la memoria con punteros
inteligentes.
Evitar cambiar las firmas de funciones: Evita cambiar el nombre, los
parámetros o el tipo de retorno de las funciones.
Usar try y catch para las excepciones: Captura las excepciones con try
y catch.
Mantenerse actualizado: Sigue.