# data[].attributes.body
MARIN BERNAL DAVID STIVEN

LOPEZ HOYOS MARTIN ALONSO

SALOME MARTINEZ MENDEZ

# data[].attributes.headline
en este documento estaremos respondiendo una cierta cantidad de preguntas elaboradas por la profesora basadas en los contextos de desarrolladores etc etc.

# data[].attributes.subject
en este documento estaremos respondiendo una cierta cantidad de preguntas elaboradas por la profesora basadas en los contextos de desarrolladores etc etc.

# data[].attributes.headline
Un desarrollador Full Stack es alguien que trabaja tanto con el front-end como con el back-end de una aplicación web. El front-end es responsable de la apariencia visual del sitio web, mientras que el back-end es responsable de la lógica y la infraestructura detrás de escena del sitio.

# data[].attributes.subject
Un desarrollador Full Stack es alguien que trabaja tanto con el front-end como con el back-end de una aplicación web. El front-end es responsable de la apariencia visual del sitio web, mientras que el back-end es responsable de la lógica y la infraestructura detrás de escena del sitio.

# data[].attributes.headline
ejemplo de Frontend, componentes y características principales 

# data[].attributes.subject
ejemplo de Frontend, componentes y características principales 

# data[].attributes.body
Ejemplo de un desarrollador frontend:

- Nombre: María Rodríguez

- Tecnologías: React, CSS, JavaScript

- Proyectos: Desarrolló un sitio web responsivo para una empresa de servicios

2 componentes y características

1. Conocimientos de HTML, CSS y JavaScript: Un desarrollador frontend debe tener conocimientos sólidos de HTML, CSS y JavaScript, incluyendo frameworks y bibliotecas como React, Angular o Vue.js.

- Característica principal: Capacidad para crear interfaces de usuario atractivas y responsivas.

2. Conocimientos de diseño de interfaz de usuario: Un desarrollador frontend debe tener conocimientos de diseño de interfaz de usuario, incluyendo principios de diseño y experiencia del usuario.

- Característica principal: Capacidad para crear interfaces de usuario intuitivas y fáciles de usar.

# data[].attributes.headline
El shell es la capa más externa del sistema operativo. Los shells incorporan un lenguaje de programación para controlar procesos y archivos, además de iniciar y controlar otros programas.

# data[].attributes.subject
El shell es la capa más externa del sistema operativo. Los shells incorporan un lenguaje de programación para controlar procesos y archivos, además de iniciar y controlar otros programas.

# data[].attributes.body
ejemplo

Bash (Bourne-Again SHell)

Bash es un shell de Unix/Linux que se utiliza para interactuar con el sistema operativo y ejecutar comandos. Es uno de los shells más populares y ampliamente utilizados.

Características de Bash:

- Interfaz de línea de comandos: Bash proporciona una interfaz de línea de comandos para interactuar con el sistema operativo.

- Ejecución de comandos: Bash permite ejecutar comandos y programas en el sistema operativo.

- Redirección de entrada/salida: Bash permite redirigir la entrada y salida de comandos y programas.

- Tuberías: Bash permite crear tuberías para conectar la salida de un comando con la entrada de otro comando.

- Variables y parámetros: Bash permite definir y utilizar variables y parámetros para almacenar y manipular datos.

Ejemplos de comandos de Bash:

- cd: Cambia el directorio actual.

- ls: Lista los archivos y directorios en el directorio actual.

- mkdir: Crea un nuevo directorio.

- rm: Elimina un archivo o directorio.

- echo: Imprime texto en la pantalla.

Uso de Bash:

Bash se utiliza en una variedad de situaciones, incluyendo:

- Administración de sistemas: Bash se utiliza para administrar y configurar sistemas operativos.

- Desarrollo de software: Bash se utiliza para automatizar tareas y procesos en el desarrollo de software.

- Análisis de datos: Bash se utiliza para procesar y analizar datos en archivos y bases de datos.

# data[].attributes.headline
ejemplo de Fullstack, dos componentes y características principales 

# data[].attributes.subject
ejemplo de Fullstack, dos componentes y características principales 

# data[].attributes.body
Ejemplo de un desarrollador fullstack:

- Nombre: Carlos López

- Tecnologías: Node.js, Express, React, MongoDB

- Proyectos: Desarrolló una aplicación web completa para una empresa de logística, incluyendo el backend y el frontend.

2 componentes y características principales

1. Conocimientos de desarrollo de aplicaciones web completas: Un desarrollador fullstack debe tener conocimientos de desarrollo de aplicaciones web completas, incluyendo el backend y el frontend.

- Característica principal: Capacidad para diseñar y implementar aplicaciones web completas y escalables.

2. Conocimientos de integración de tecnologías: Un desarrollador fullstack debe tener conocimientos de integración de tecnologías, incluyendo la integración de bases de datos, APIs y servicios web.

- Característica principal: Capacidad para integrar tecnologías de manera efectiva y eficiente.

# data[].attributes.headline
ejemplo de Backend, dos componentes y características principales 

# data[].attributes.subject
ejemplo de Backend, dos componentes y características principales 

# data[].attributes.body
Ejemplo de un desarrollador backend:

- Nombre: Juan Pérez

- Tecnologías: Node.js, Express, MongoDB

- Proyectos: Desarrolló un API RESTful para una aplicación de comercio electrónico

2 componentes y características

1. Conocimientos de bases de datos: Un desarrollador backend debe tener conocimientos sólidos de bases de datos, incluyendo diseño, implementación y optimización de bases de datos relacionales y NoSQL.

- Característica principal: Capacidad para diseñar y implementar bases de datos escalables y eficientes.

2. Conocimientos de lenguajes de programación del lado del servidor: Un desarrollador backend debe tener conocimientos de lenguajes de programación del lado del servidor, como Java, Python, Ruby o Node.js.

- Característica principal: Capacidad para escribir código del lado del servidor eficiente y seguro.

# data[].attributes.headline
Python es un lenguaje de programación versátil y de alto nivel, mientras que un IDE (Entorno de Desarrollo Integrado) es una herramienta de software que facilita la escritura, depuración y ejecución de código, como Python, integrando varias funciones en una sola aplicación.

# data[].attributes.subject
Python es un lenguaje de programación versátil y de alto nivel, mientras que un IDE (Entorno de Desarrollo Integrado) es una herramienta de software que facilita la escritura, depuración y ejecución de código, como Python, integrando varias funciones en una sola aplicación.

# data[].attributes.body
ejemplo

Python

Python es un lenguaje de programación de alto nivel, interpretado y orientado a objetos. Es conocido por su simplicidad, legibilidad y versatilidad.

# IDE: PyCharm

PyCharm es un IDE popular para Python que ofrece una variedad de herramientas y características para ayudar a los desarrolladores a escribir, depurar y probar código Python

# data[].attributes.headline
El ciclo de vida del software (SDLC) es el proceso de desarrollo, implementación, y mantenimiento de un software. Es un enfoque sistemático que abarca desde la planificación inicial hasta el retiro del software. 

# data[].attributes.subject
El ciclo de vida del software (SDLC) es el proceso de desarrollo, implementación, y mantenimiento de un software. Es un enfoque sistemático que abarca desde la planificación inicial hasta el retiro del software. 

# data[].attributes.body
ejemplo

Ejemplo de Ciclo de Vida del Software:

Supongamos que se desea desarrollar un software de gestión de inventario para una tienda en línea. A continuación, se presenta un ejemplo de cómo se podría aplicar el ciclo de vida del software:

- Análisis de Requisitos: Se identifican los requisitos del software, como la capacidad de gestionar inventarios, realizar pedidos y generar informes.

- Diseño: Se crea un diseño detallado del software, incluyendo la estructura de la base de datos y la interfaz de usuario.

- Implementación: Se escribe el código del software en un lenguaje de programación como Python o Java.

- Pruebas: Se prueba el software para asegurarse de que cumple con los requisitos y funciona correctamente.

- Despliegue: Se despliega el software en el entorno de producción, como un servidor web.

- Mantenimiento: Se realizan actualizaciones y correcciones al software para asegurarse de que siga funcionando correctamente y cumpla con los requisitos cambiantes de la tienda en línea.

# data[].attributes.headline
Guido van Rossum (Haarlem, Países Bajos, 31 de enero de 1956) es un informático​ neerlandés, conocido por ser el autor del lenguaje de programación Python. Guido van Rossum en 2006. En el año 2001 recibió el FSF Award for the Advancement of Free Software como reconocimiento por su trabajo

# data[].attributes.subject
Guido van Rossum (Haarlem, Países Bajos, 31 de enero de 1956) es un informático​ neerlandés, conocido por ser el autor del lenguaje de programación Python. Guido van Rossum en 2006. En el año 2001 recibió el FSF Award for the Advancement of Free Software como reconocimiento por su trabajo

# data[].attributes.body
Aporte más significativo

El lenguaje de programación Python

Guido van Rossum creó el lenguaje de programación Python en la década de 1980. Python es un lenguaje de programación de alto nivel, interpretado y orientado a objetos que se ha convertido en uno de los lenguajes más populares y versátiles del mundo

# data[].attributes.headline
Pablo Novara, graduado y docente de Ingeniería en Informática de la Facultad de Ingeniería y Ciencias Hídricas (FICH) de la Universidad Nacional del Litoral (UNL), obtuvo el reconocimiento "September 'Community Choice' Project Of The Month" por su proyecto PSeInt

# data[].attributes.subject
Pablo Novara, graduado y docente de Ingeniería en Informática de la Facultad de Ingeniería y Ciencias Hídricas (FICH) de la Universidad Nacional del Litoral (UNL), obtuvo el reconocimiento "September 'Community Choice' Project Of The Month" por su proyecto PSeInt

# data[].attributes.body
Aporte significativo

el proyecto de PSeInt

# data[].attributes.headline
MySQL es un sistema de gestión de bases de datos (DBMS, por sus siglas en inglés) de código abierto desarrollado por Oracle. Se ha ganado su lugar en el mundo digital como una base de datos relacional que permite almacenar, organizar y recuperar datos de manera eficiente

# data[].attributes.subject
MySQL es un sistema de gestión de bases de datos (DBMS, por sus siglas en inglés) de código abierto desarrollado por Oracle. Se ha ganado su lugar en el mundo digital como una base de datos relacional que permite almacenar, organizar y recuperar datos de manera eficiente

# data[].attributes.body
El autor original de MySQL es Michael Widenius también conocido como Monty Widenius

figura clave en el mundo de la tecnología

particularmente en el desarrollo de base de datos de códigos abiertos, es el autor principal de la versión original de MySQL y miembro fundador de MySQL AB además de ser el creador de MariaDB, un fork de MySQL

nacido en Helsinki, Finlandia el 3 de marzo de 1962

# data[].attributes.headline
Responsive" en el contexto del desarrollo web, se refiere a "diseño web responsivo" o "Responsive Web Design (RWD)", una técnica que permite que un sitio web se adapte y se vea correctamente en cualquier dispositivo, desde computadoras de escritorio hasta smartphones, sin necesidad de versiones separadas para cada pantalla

# data[].attributes.subject
Responsive" en el contexto del desarrollo web, se refiere a "diseño web responsivo" o "Responsive Web Design (RWD)", una técnica que permite que un sitio web se adapte y se vea correctamente en cualquier dispositivo, desde computadoras de escritorio hasta smartphones, sin necesidad de versiones separadas para cada pantalla

# data[].attributes.body
conceptos básicos y características

1. Media Queries

- Característica principal: Permite aplicar estilos diferentes según el tamaño de la pantalla o el dispositivo.

- Funcionalidad: Utiliza la regla @media para definir condiciones específicas, como el ancho o alto de la pantalla, y aplicar estilos correspondientes.

# 2. Flexbox

- Característica principal: Permite crear layouts flexibles y adaptables.

- Funcionalidad: Utiliza la propiedad display: flex para crear un contenedor flexible que puede contener elementos hijos que se ajustan automáticamente.

# 3. Grid

- Característica principal: Permite crear layouts de cuadrícula flexibles y adaptables.

- Funcionalidad: Utiliza la propiedad display: grid para crear un contenedor de cuadrícula que puede contener elementos hijos que se ajustan automáticamente.

# 4. Imágenes Responsivas

- Característica principal: Permite que las imágenes se ajusten automáticamente al tamaño de la pantalla o el dispositivo.

- Funcionalidad: Utiliza la propiedad max-width: 100% y height: auto para asegurarse de que las imágenes se escalen correctamente.

# 5. Breakpoints

- Característica principal: Permite definir puntos en los que el diseño del sitio web cambia para adaptarse a diferentes tamaños de pantalla o dispositivos.

- Funcionalidad: Utiliza media queries para definir condiciones específicas y aplicar estilos correspondientes en diferentes puntos de ruptura.

# data[].attributes.headline
Un algoritmo es una secuencia finita y ordenada de instrucciones o pasos para resolver un problema o realizar una tarea, mientras que los tipos de algoritmos se clasifican según su propósito o la técnica que utilizan, como algoritmos de búsqueda, ordenamiento, predictivos, entre otros

# data[].attributes.subject
Un algoritmo es una secuencia finita y ordenada de instrucciones o pasos para resolver un problema o realizar una tarea, mientras que los tipos de algoritmos se clasifican según su propósito o la técnica que utilizan, como algoritmos de búsqueda, ordenamiento, predictivos, entre otros

# data[].attributes.body
ejemplos libre

Ejemplo de Algoritmo: Búsqueda Binaria

La búsqueda binaria es un algoritmo que busca un elemento en una lista ordenada dividiendo la lista en mitades hasta encontrar el elemento.

Pseudocódigo:

1. Definir la lista ordenada y el elemento a buscar.

2. Inicializar dos variables, izquierda y derecha, para indicar el rango de la lista.

3. Mientras izquierda sea menor o igual a derecha:

- Calcular el índice medio de la lista.

- Comparar el elemento en el índice medio con el elemento a buscar.

- Si son iguales, devolver el índice medio.

- Si el elemento en el índice medio es menor que el elemento a buscar, actualizar izquierda al índice medio + 1.

- Si el elemento en el índice medio es mayor que el elemento a buscar, actualizar derecha al índice medio - 1.

4. Devolver -1 si el elemento no se encuentra en la lista.

# Tipos de Algoritmos:

1. Algoritmos de Búsqueda

- Búsqueda lineal

- Búsqueda binaria

- Búsqueda en profundidad

2. Algoritmos de Ordenamiento

- Ordenamiento burbuja

- Ordenamiento por selección

- Ordenamiento por inserción

- Ordenamiento rápido (quicksort)

3. Algoritmos de Grafos

- Algoritmo de Dijkstra

- Algoritmo de Bellman-Ford

- Algoritmo de Floyd-Warshall

4. Algoritmos de Programación Dinámica

- Algoritmo de Fibonacci

- Algoritmo de la mochila

- Algoritmo del viajante

5. Algoritmos de Aprendizaje Automático

- Algoritmo de regresión lineal

- Algoritmo de clasificación

- Algoritmo de clustering

# data[].attributes.body
1. Definir el problema

- Identificar el problema o la tarea que se desea resolver.

- Describir el problema de manera clara y concisa.

2. Analizar el problema

- Recopilar información relevante sobre el problema.

- Identificar las variables y las restricciones involucradas.

3. Establecer los objetivos

- Definir los objetivos del algoritmo.

- Identificar los resultados esperados.

4. Diseñar el algoritmo

- Crear un plan de acción para resolver el problema.

- Utilizar técnicas de diseño de algoritmos, como la división en subproblemas o la recursividad.

5. Desarrollar el pseudocódigo

- Escribir el algoritmo en un lenguaje de pseudocódigo.

- Utilizar estructuras de control, como condicionales y bucles, para implementar la lógica del algoritmo.

6. Probar y depurar el algoritmo

- Probar el algoritmo con diferentes conjuntos de datos.

- Identificar y corregir errores o fallas en el algoritmo.

7. Optimizar el algoritmo

- Analizar el rendimiento del algoritmo.

- Identificar oportunidades para mejorar la eficiencia o la velocidad del algoritmo.

8. Documentar el algoritmo

- Escribir una descripción clara y concisa del algoritmo.

- Incluir información sobre la entrada, la salida y cualquier restricción o suposición.

9. Implementar el algoritmo

- Escribir el algoritmo en un lenguaje de programación.

- Utilizar herramientas y tecnologías adecuadas para implementar el algoritmo.

10. Probar y validar el algoritmo

- Probar el algoritmo en un entorno real.

- Validar los resultados del algoritmo para asegurarse de que sean correctos y precisos

# data[].attributes.body
Algoritmo para Preparar un Café

Paso 1: Verificar si hay café en casa

- Ir a la cocina y verificar si hay café en la lacena

- Si no hay café, entonces ir a comprar café

Paso 2: Medir el café

- Medir la cantidad de café necesaria para una taza.

- Utilizar una cuchara para medir el café.

Paso 3: Hervir agua

- Llenar una ollita con agua.

- Colocar la ollita en la estufa y hervir el agua.

Paso 4: Preparar el café

- Colocar el café en una cafetera o en una taza.

- echar el agua caliente sobre el café.

- Dejar que el café se prepare durante unos minutos.

Paso 5: Agregar azúcar y leche (opcional)

- Si se desea, agregar azúcar y leche al café.

- Mezclar bien para que el azúcar y la leche se disuelvan.

Paso 6: Servir y disfrutar

- Servir el café en una taza.

- Disfrutar del café caliente y delicioso

# data[].attributes.headline
Un dato es una representación simbólica de un atributo o variable, que puede ser cuantitativa o cualitativa, que describe un hecho, suceso o entidad. Los tipos de datos son clasificaciones que definen la naturaleza de los valores que una variable puede almacenar, como numéricos, texto, booleanos, etc. 

# data[].attributes.subject
Un dato es una representación simbólica de un atributo o variable, que puede ser cuantitativa o cualitativa, que describe un hecho, suceso o entidad. Los tipos de datos son clasificaciones que definen la naturaleza de los valores que una variable puede almacenar, como numéricos, texto, booleanos, etc. 

# data[].attributes.body
ejemplo de tipo de datos

1. Números enteros

- Ejemplos: 1, 2, 3, 4, 5

- Descripción: Números enteros son números que no tienen decimales.

2. Números decimales

- Ejemplos: 3.14, 2.71, 1.62

- Descripción: Números decimales son números que tienen decimales.

3. Cadenas de texto

- Ejemplos: "Hola", "Mundo", "Python"

- Descripción: Cadenas de texto son secuencias de caracteres que se utilizan para representar texto.

4. Listas

- Ejemplos: [1, 2, 3], ["a", "b", "c"], [True, False, True]

- Descripción: Listas son colecciones de valores que se pueden almacenar y manipular.

5. Diccionarios

- Ejemplos: {"nombre": "Juan", "edad": 30}, {"ciudad": "Lima", "país": "Perú"}

- Descripción: Diccionarios son colecciones de pares clave-valor que se utilizan para almacenar y recuperar datos.

6. Conjuntos

- Ejemplos: {1, 2, 3}, {"a", "b", "c"}

- Descripción: Conjuntos son colecciones de valores únicos que no se pueden repetir.

7. Fechas y horas

- Ejemplos: "2022-01-01", "12:00:00"

- Descripción: Fechas y horas son valores que se utilizan para representar fechas y horas específicas.

# data[].attributes.headline
El pseudocódigo es una forma de describir un algoritmo o programa de manera informal, pero estructurada. Se utiliza para planear y diseñar algoritmos antes de implementarlos en un lenguaje de programación. 

# data[].attributes.subject
El pseudocódigo es una forma de describir un algoritmo o programa de manera informal, pero estructurada. Se utiliza para planear y diseñar algoritmos antes de implementarlos en un lenguaje de programación. 

# data[].attributes.body
ejemplo

1. Definir variables

- largo = longitud del rectángulo

- ancho = ancho del rectángulo

- area = área del rectángulo

2. Leer valores

- Leer el valor de largo

- Leer el valor de ancho

3. Calcular área

- área = largo * ancho

4. Mostrar resultado

- Mostrar el valor de área

# Ejemplo de ejecución

- largo = 5

- ancho = 3

- área = 5 * 3 = 15

- Mostrar el resultado: "El área del rectángulo es 15"

Este pseudocódigo es un ejemplo de cómo se puede escribir un algoritmo de manera clara y concisa, sin utilizar un lenguaje de programación específico

# data[].attributes.headline
En algoritmos, una variable es un nombre simbólico que representa un espacio de almacenamiento en memoria donde se guardan datos que pueden cambiar durante la ejecución del programa. Las variables se clasifican por su tipo de dato (números, texto, booleanos, etc.) y por su alcance (local o global)

# data[].attributes.subject
En algoritmos, una variable es un nombre simbólico que representa un espacio de almacenamiento en memoria donde se guardan datos que pueden cambiar durante la ejecución del programa. Las variables se clasifican por su tipo de dato (números, texto, booleanos, etc.) y por su alcance (local o global)

# data[].attributes.headline
En algoritmos, los operadores son símbolos que indican qué tipo de operación realizar entre dos o más valores (operandos), como cálculos aritméticos, comparaciones o operaciones lógicas

# data[].attributes.subject
En algoritmos, los operadores son símbolos que indican qué tipo de operación realizar entre dos o más valores (operandos), como cálculos aritméticos, comparaciones o operaciones lógicas

# data[].attributes.headline
El problema de asignación es un tipo especial de problema de programación lineal en el que los asignados son recursos que se destinan a la realización de tareas. Por ejemplo, los asignados pueden ser empleados a quienes se tiene que dar trabajo

# data[].attributes.subject
El problema de asignación es un tipo especial de problema de programación lineal en el que los asignados son recursos que se destinan a la realización de tareas. Por ejemplo, los asignados pueden ser empleados a quienes se tiene que dar trabajo

# data[].attributes.body
ejemplo

Ejemplo en Python

Asignación de valores

x = 5

y = x + 3

z = y * 2

Mostrar resultados

print("x =", x)

print("y =", y)

print("z =", z)

Explicación

- En la primera línea, se asigna el valor 5 a la variable x.

- En la segunda línea, se asigna el valor de x más 3 a la variable y. Como x tiene el valor 5, y se convierte en 8.

- En la tercera línea, se asigna el valor de y multiplicado por 2 a la variable z. Como y tiene el valor 8, z se convierte en 16.

- Finalmente, se muestran los valores de x, y y z utilizando la función print().

Resultado

x = 5

y = 8

z = 16

Este ejemplo muestra cómo se pueden asignar valores a variables en un algoritmo informático utilizando el lenguaje de programación Python

# data[].attributes.headline
En un algoritmo, la lectura de datos (o entrada de datos) se refiere al proceso de recibir y procesar información de un usuario o fuente externa para que el algoritmo pueda realizar sus operaciones y generar una salida

# data[].attributes.subject
En un algoritmo, la lectura de datos (o entrada de datos) se refiere al proceso de recibir y procesar información de un usuario o fuente externa para que el algoritmo pueda realizar sus operaciones y generar una salida

# data[].attributes.body
ejemplo

Leer datos del usuario

nombre = input("Ingrese su nombre: ")

edad = int(input("Ingrese su edad: "))

# Mostrar datos leídos

print("Nombre:", nombre)

print("Edad:", edad)

Explicación

- En la primera línea, se utiliza la función input() para leer una cadena de texto del usuario y asignarla a la variable nombre.

- En la segunda línea, se utiliza la función input() para leer una cadena de texto del usuario y convertirla a un número entero utilizando la función int(). El resultado se asigna a la variable edad.

- Finalmente, se muestran los valores de nombre y edad utilizando la función print().

Ejemplo de ejecución

Ingrese su nombre: Juan

Ingrese su edad: 30

Nombre: Juan

Edad: 30

Este ejemplo muestra cómo se pueden leer datos del usuario en un algoritmo utilizando el lenguaje de programación Python. La función input() se utiliza para leer cadenas de texto, y la función int() se utiliza para convertir cadenas de texto a números enteros

# data[].attributes.headline
En términos generales, la escritura es la representación visual de un lenguaje mediante símbolos, la impresión es el proceso de reproducir textos e imágenes, y el almacenamiento es la acción de guardar información para su posterior uso

# data[].attributes.subject
En términos generales, la escritura es la representación visual de un lenguaje mediante símbolos, la impresión es el proceso de reproducir textos e imágenes, y el almacenamiento es la acción de guardar información para su posterior uso

# data[].attributes.body
ejemplo

Escritura de datos

notas = [8, 9, 7, 6]

Impresión de datos

print("Notas:")

for nota in notas:

print(nota)

Almacenamiento de datos en un archivo CSV

import csv

with open("notas.csv", "w", newline="") as archivo:

escritor = csv.writer(archivo)

escritor.writerow(["Nota 1", "Nota 2", "Nota 3", "Nota 4"])

escritor.writerow(notas)

Explicación

- Escritura de datos: En la primera línea, se asigna una lista de números a la variable notas. Esto es un ejemplo de escritura de datos en memoria.

- Impresión de datos: En las siguientes líneas, se utiliza un bucle for para imprimir cada nota en la pantalla. Esto es un ejemplo de impresión de datos.

- Almacenamiento de datos en un archivo CSV: En las últimas líneas, se utiliza la biblioteca csv para abrir un archivo llamado "notas.csv" en modo escritura ("w"). Luego, se utiliza la clase writer para escribir los datos en el archivo en formato CSV. Esto es un ejemplo de almacenamiento de datos en un archivo.

Resultado

- En la pantalla, se imprimirán las notas:

```

Notas:

8

9

7

6

* En el archivo "notas.csv", se almacenarán los datos en formato CSV:

Nota 1,Nota 2,Nota 3,Nota 4

8,9,7,6

Este ejemplo muestra cómo se pueden escribir, imprimir y almacenar datos en un algoritmo utilizando el lenguaje de programación Python y la biblioteca.

# data[].attributes.headline
La prueba de escritorio es una técnica manual para verificar la lógica y el funcionamiento de un algoritmo, analizando cada paso y variable sin ejecutar el código en un computador. Para desarrollarla, puedes usar herramientas como lápiz y papel, o programas como hojas de cálculo (Excel) o software de diagramación

# data[].attributes.subject
La prueba de escritorio es una técnica manual para verificar la lógica y el funcionamiento de un algoritmo, analizando cada paso y variable sin ejecutar el código en un computador. Para desarrollarla, puedes usar herramientas como lápiz y papel, o programas como hojas de cálculo (Excel) o software de diagramación

# data[].attributes.body
ejemplo

Ejemplo de prueba de escritorio

Supongamos que tenemos un programa que calcula el promedio de una lista de números. Queremos probar que el programa funciona correctamente.

Programa

def calcular_promedio(notas):

suma = 0

for nota in notas:

suma += nota

promedio = suma / len(notas)

return promedio

notas = [8, 9, 7, 6]

promedio = calcular_promedio(notas)

print("Promedio:", promedio)

Prueba de escritorio

1. Entradas:

- notas: [8, 9, 7, 6]

2. Proceso:

- suma: 0

- suma: 8

- suma: 17

- suma: 24

- suma: 30

- promedio: 30 / 4 = 7.5

3. Salida:

- Promedio: 7.5

# data[].attributes.headline
Un diagrama de flujo es una representación gráfica de los pasos de un proceso, sistema o algoritmo. También se le conoce como flujograma o diagrama de actividades

# data[].attributes.subject
Un diagrama de flujo es una representación gráfica de los pasos de un proceso, sistema o algoritmo. También se le conoce como flujograma o diagrama de actividades

# data[].attributes.headline
Las estructuras de decisión y control son mecanismos que permiten a un programa o algoritmo tomar diferentes caminos y repetir acciones, basándose en condiciones o valores específicos, lo que facilita la solución de problemas complejos

# data[].attributes.subject
Las estructuras de decisión y control son mecanismos que permiten a un programa o algoritmo tomar diferentes caminos y repetir acciones, basándose en condiciones o valores específicos, lo que facilita la solución de problemas complejos

# data[].attributes.body
ejemplo

Estructura de decisión simple (IF)

- Ejemplo: Un programa que verifica si un número es mayor que 10.

- Código:

```

numero = 15

if numero > 10:

print("El número es mayor que 10")

* Diagrama de flujo:

mermaid

graph LR

A[Inicio] --> B{¿Número > 10?}

B -->|Sí| C[Imprimir mensaje]

B -->|No| D[Fin]

C --> D

# data[].attributes.headline
En algoritmos, la estructura de decisión simple permite ejecutar un bloque de instrucciones solo si una condición es verdadera, sin tener una alternativa para cuando la condición es falsa

# data[].attributes.subject
En algoritmos, la estructura de decisión simple permite ejecutar un bloque de instrucciones solo si una condición es verdadera, sin tener una alternativa para cuando la condición es falsa

# data[].attributes.body
ejemplo

Estructura de decisión simple (IF)

Ejemplo

Un programa que verifica si un número es mayor que 10.

Algoritmo

1. Inicio

2. Leer número

3. Si número > 10 entonces

- Imprimir "El número es mayor que 10"

4. Fin

Diagrama de flujo

mermaid

graph LR

A[Inicio] --> B[Leer número]

B --> C{¿Número > 10?}

C -->|Sí| D[Imprimir mensaje]

C -->|No| E[Fin]

D --> E

Código en Python

numero = int(input("Ingrese un número: "))

if numero > 10:

print("El número es mayor que 10")

Explicación

- El programa comienza leyendo un número del usuario.

- Luego, verifica si el número es mayor que 10 utilizando una estructura de decisión simple (IF).

- Si el número es mayor que 10, imprime un mensaje indicando que el número es mayor que 10.

- Si el número no es mayor que 10, el programa termina sin imprimir nada.

Ejemplo de ejecución

Ingrese un número: 15

El número es mayor que 10

Este ejemplo muestra cómo se puede utilizar una estructura de decisión simple (IF) en un algoritmo para tomar decisiones basadas en condiciones específicas

# data[].attributes.headline
En algoritmos, la estructura condicional doble (o bicondicional) permite tomar decisiones ejecutando uno de dos bloques de instrucciones, dependiendo de si se cumple o no una condición. Es decir, si la condición es verdadera, se ejecuta un bloque, y si es falsa, se ejecuta otro

# data[].attributes.subject
En algoritmos, la estructura condicional doble (o bicondicional) permite tomar decisiones ejecutando uno de dos bloques de instrucciones, dependiendo de si se cumple o no una condición. Es decir, si la condición es verdadera, se ejecuta un bloque, y si es falsa, se ejecuta otro

# data[].attributes.body
Estructura doble (IF-ELSE)

Ejemplo

Un programa que verifica si un número es par o impar.

Algoritmo

1. Inicio

2. Leer número

3. Si número % 2 == 0 entonces

- Imprimir "El número es par"

4. De lo contrario

- Imprimir "El número es impar"

5. Fin

Diagrama de flujo

mermaid

graph LR

A[Inicio] --> B[Leer número]

B --> C{¿Número % 2 == 0?}

C -->|Sí| D[Imprimir "par"]

C -->|No| E[Imprimir "impar"]

D --> F[Fin]

E --> F

Código en Python

numero = int(input("Ingrese un número: "))

if numero % 2 == 0:

print("El número es par")

else:

print("El número es impar")

Explicación

- El programa comienza leyendo un número del usuario.

- Luego, verifica si el número es par o impar utilizando una estructura doble (IF-ELSE).

- Si el número es par (es decir, el resto de la división entre 2 es 0), imprime un mensaje indicando que el número es par.

- Si el número no es par (es decir, el resto de la división entre 2 no es 0), imprime un mensaje indicando que el número es impar.

Ejemplo de ejecución

Ingrese un número: 15

El número es impar

Este ejemplo muestra cómo se puede utilizar una estructura doble (IF-ELSE) en un algoritmo para tomar decisiones basadas en condiciones específicas y ejecutar diferentes acciones dependiendo del resultado.

# data[].attributes.headline
En algoritmos, una estructura anidada (o "nested structure") se refiere a la inclusión de una estructura dentro de otra, como un bucle dentro de otro bucle o una condición dentro de otra condición

# data[].attributes.subject
En algoritmos, una estructura anidada (o "nested structure") se refiere a la inclusión de una estructura dentro de otra, como un bucle dentro de otro bucle o una condición dentro de otra condición

# data[].attributes.body
Estructura anidada (IF-ELSE anidado)

Ejemplo

Un programa que verifica si un número es positivo, negativo o cero.

Algoritmo

1. Inicio

2. Leer número

3. Si número > 0 entonces

- Imprimir "El número es positivo"

4. De lo contrario

- Si número < 0 entonces

- Imprimir "El número es negativo"

- De lo contrario

- Imprimir "El número es cero"

5. Fin

Diagrama de flujo

mermaid

graph LR

A[Inicio] --> B[Leer número]

B --> C{¿Número > 0?}

C -->|Sí| D[Imprimir "positivo"]

C -->|No| E{¿Número < 0?}

E -->|Sí| F[Imprimir "negativo"]

E -->|No| G[Imprimir "cero"]

D --> H[Fin]

F --> H

G --> H

# data[].attributes.headline
En algoritmos, una estructura multicondicional (o selectiva múltiple) permite elegir entre múltiples alternativas de ejecución, basándose en la evaluación de varias condiciones lógicas

# data[].attributes.subject
En algoritmos, una estructura multicondicional (o selectiva múltiple) permite elegir entre múltiples alternativas de ejecución, basándose en la evaluación de varias condiciones lógicas

# data[].attributes.body
Estructura multicondicional (SWITCH)

Ejemplo

Un programa que verifica el día de la semana según un número ingresado por el usuario.

Algoritmo

1. Inicio

2. Leer número del día

3. Según número del día

- Caso 1: Imprimir "Lunes"

- Caso 2: Imprimir "Martes"

- Caso 3: Imprimir "Miércoles"

- Caso 4: Imprimir "Jueves"

- Caso 5: Imprimir "Viernes"

- Caso 6: Imprimir "Sábado"

- Caso 7: Imprimir "Domingo"

- De lo contrario: Imprimir "Día inválido"

4. Fin

Diagrama de flujo

mermaid

graph LR

A[Inicio] --> B[Leer número del día]

B --> C{¿Número del día?}

C -->|1| D[Imprimir "Lunes"]

C -->|2| E[Imprimir "Martes"]

C -->|3| F[Imprimir "Miércoles"]

C -->|4| G[Imprimir "Jueves"]

C -->|5| H[Imprimir "Viernes"]

C -->|6| I[Imprimir "Sábado"]

C -->|7| J[Imprimir "Domingo"]

C -->|Otro| K[Imprimir "Día inválido"]

D --> L[Fin]

E --> L

F --> L

G --> L

H --> L

I --> L

J --> L

K --> L

# data[].attributes.body
Código en Python

numero_dia = int(input("Ingrese el número del día (1-7): "))

match numero_dia:

case 1:

print("Lunes")

case 2:

print("Martes")

case 3:

print("Miércoles")

case 4:

print("Jueves")

case 5:

print("Viernes")

case 6:

print("Sábado")

case 7:

print("Domingo")

case _:

print("Día inválido")

Explicación

- El programa comienza leyendo un número del día del usuario.

- Luego, verifica el número del día utilizando una estructura multicondicional (SWITCH).

- Según el número del día, imprime el día de la semana correspondiente.

- Si el número del día no es válido, imprime un mensaje de error.

Ejemplo de ejecución

Ingrese el número del día (1-7): 3

Miércoles

# data[].attributes.headline
En programación, las estructuras condicionales repetitivas (o bucles) permiten ejecutar un bloque de código varias veces, mientras que una condición sea verdadera, mientras que las condicionales no repetitivas (o condicionales simples) ejecutan un bloque de código solo una vez, según la evaluación de una condición

# data[].attributes.subject
En programación, las estructuras condicionales repetitivas (o bucles) permiten ejecutar un bloque de código varias veces, mientras que una condición sea verdadera, mientras que las condicionales no repetitivas (o condicionales simples) ejecutan un bloque de código solo una vez, según la evaluación de una condición

# data[].attributes.body
Tipos de condicionales repetitivos

1. Bucle WHILE

- El bucle WHILE ejecuta un bloque de código mientras se cumpla una condición determinada.

- La condición se evalúa antes de ejecutar el bloque de código.

- Si la condición es verdadera, se ejecuta el bloque de código y se vuelve a evaluar la condición.

2. Bucle FOR

- El bucle FOR ejecuta un bloque de código para cada elemento de una secuencia (como una lista o un arreglo).

- La variable de control del bucle se asigna automáticamente a cada elemento de la secuencia.

- El bloque de código se ejecuta para cada elemento de la secuencia.

3. Bucle DO-WHILE

- El bucle DO-WHILE ejecuta un bloque de código al menos una vez y luego repite la ejecución mientras se cumpla una condición determinada.

- La condición se evalúa después de ejecutar el bloque de código.

# Características de los condicionales repetitivos

- Iteración: Los condicionales repetitivos permiten iterar sobre una secuencia de elementos o ejecutar un bloque de código varias veces.

- Condición de parada: Los condicionales repetitivos tienen una condición de parada que determina cuándo se detiene la ejecución del bucle.

- Variable de control: Los condicionales repetitivos pueden tener una variable de control que se utiliza para controlar la ejecución del bucle.

# Ejemplos de condicionales repetitivos

Ejemplo de bucle WHILE

i = 0

while i < 5:

print(i)

i += 1

Ejemplo de bucle FOR

frutas = ["manzana", "banana", "naranja"]

for fruta in frutas:

print(fruta)

Ejemplo de bucle DO-WHILE

i = 0

do:

print(i)

i += 1

while i < 5

En resumen, los condicionales repetitivos son estructuras de control que permiten ejecutar un bloque de código varias veces mientras se cumpla una condición determinada. Los bucles WHILE, FOR y DO-WHILE son los tipos más comunes de condicionales repetitivos

# data[].attributes.body
Los condicionales no repetitivos son estructuras de control que permiten tomar decisiones basadas en condiciones específicas sin repetir la ejecución del código. A continuación, se presentan algunos ejemplos de condicionales no repetitivos:

# Condicionales simples

Ejemplo de condicional simple (IF)

edad = 25

if edad >= 18:

print("Eres mayor de edad")

Ejemplo de condicional simple con ELSE

edad = 15

if edad >= 18:

print("Eres mayor de edad")

else:

print("Eres menor de edad")

# Condicionales múltiples

Ejemplo de condicional múltiple (IF-ELIF-ELSE)

nota = 8

if nota >= 9:

print("Excelente")

elif nota >= 7:

print("Bueno")

else:

print("Regular")

# Condicionales de selección

Ejemplo de condicional de selección (SWITCH)

dia = "lunes"

match dia:

case "lunes":

print("Hoy es lunes")

case "martes":

print("Hoy es martes")

case _:

print("Hoy no es lunes ni martes")

# Características de los condicionales no repetitivos

- No repetición: Los condicionales no repetitivos no repiten la ejecución del código.

- Decisión basada en condiciones: Los condicionales no repetitivos toman decisiones basadas en condiciones específicas.

- Ejecución única: Los condicionales no repetitivos ejecutan el código una sola vez.

En resumen, los condicionales no repetitivos son estructuras de control que permiten tomar decisiones basadas en condiciones específicas sin repetir la ejecución del código. Los condicionales simples, múltiples y de selección son ejemplos de condicionales no repetitivos

# data[].attributes.headline
En un algoritmo, un bucle (o ciclo) es una secuencia de instrucciones que se repite varias veces, hasta que una condición específica se vuelve falsa o se alcanza un límite predefinido

# data[].attributes.subject
En un algoritmo, un bucle (o ciclo) es una secuencia de instrucciones que se repite varias veces, hasta que una condición específica se vuelve falsa o se alcanza un límite predefinido

# data[].attributes.body
diferentes tipo de bucles

1. Bucle WHILE

Un bucle WHILE es una estructura de control que permite ejecutar un bloque de código varias veces mientras se cumpla una condición determinada. La condición se evalúa antes de ejecutar el bloque de código.

Características

- Condición de entrada: La condición se evalúa antes de ejecutar el bloque de código.

- Ejecución condicional: El bloque de código se ejecuta solo si la condición es verdadera.

- Repetición: El bucle se repite mientras la condición sea verdadera.

Ejemplo

i = 0

while i < 5:

print(i)

i += 1

2. Bucle FOR

Un bucle FOR es una estructura de control que permite ejecutar un bloque de código para cada elemento de una secuencia (como una lista o un arreglo).

Características

- Secuencia: El bucle se ejecuta para cada elemento de una secuencia.

- Variable de control: La variable de control se asigna automáticamente a cada elemento de la secuencia.

- Ejecución automática: El bloque de código se ejecuta automáticamente para cada elemento de la secuencia.

Ejemplo

frutas = ["manzana", "banana", "naranja"]

for fruta in frutas:

print(fruta)

3. Bucle DO-WHILE

Un bucle DO-WHILE es una estructura de control que permite ejecutar un bloque de código al menos una vez y luego repite la ejecución mientras se cumpla una condición determinada.

Características

- Ejecución inicial: El bloque de código se ejecuta al menos una vez.

- Condición de salida: La condición se evalúa después de ejecutar el bloque de código.

- Repetición: El bucle se repite mientras la condición sea verdadera.

Ejemplo

i = 0

do:

print(i)

i += 1

while i < 5

4. Bucle FOREACH

Un bucle FOREACH es una estructura de control que permite ejecutar un bloque de código para cada elemento de una secuencia (como una lista o un arreglo).

Características

- Secuencia: El bucle se ejecuta para cada elemento de una secuencia.

- Variable de control: La variable de control se asigna automáticamente a cada elemento de la secuencia.

- Ejecución automática: El bloque de código se ejecuta automáticamente para cada elemento de la secuencia.

Ejemplo

numeros = [1, 2, 3, 4, 5]

foreach numero in números:

print(numero)

5. Bucle REPEAT-UNTIL

Un bucle REPEAT-UNTIL es una estructura de control que permite ejecutar un bloque de código varias veces hasta que se cumpla una condición determinada.

Características

- Ejecución inicial: El bloque de código se ejecuta al menos una vez.

- Condición de salida: La condición se evalúa después de ejecutar el bloque de código.

- Repetición: El bucle se repite hasta que la condición sea verdadera.

Ejemplo

i = 0

repeat:

print(i)

i += 1

until i >= 5

# data[].attributes.headline
La herramienta informática DFD (Diagrama de Flujo de Datos) es un software que facilita la creación y ejecución de diagramas de flujo, útiles para el diseño e implementación de algoritmos y la comprensión de sistemas complejos, permitiendo visualizar el flujo de datos y procesos

# data[].attributes.subject
La herramienta informática DFD (Diagrama de Flujo de Datos) es un software que facilita la creación y ejecución de diagramas de flujo, útiles para el diseño e implementación de algoritmos y la comprensión de sistemas complejos, permitiendo visualizar el flujo de datos y procesos

# data[].attributes.body
Ejemplo

Proceso de compra en línea

Descripción del proceso

El proceso de compra en línea implica los siguientes pasos:

1. El cliente selecciona los productos que desea comprar y los agrega al carrito de compras.

2. El cliente procede a la caja y selecciona el método de pago.

3. El sistema verifica la información de pago y procesa la transacción.

4. El sistema envía un correo electrónico de confirmación al cliente con los detalles de la compra.

5. El sistema actualiza el inventario de productos.

Diagrama de Flujo de Datos (DFD)

El DFD para este proceso se puede representar de la siguiente manera:

mermaid

graph LR

A[Cliente] -->|Selecciona productos|> B[Carrito de compras]

B -->|Procede a la caja|> C[Caja]

C -->|Selecciona método de pago|> D[Sistema de pago]

D -->|Verifica información de pago|> E[Procesamiento de transacción]

E -->|Envía correo electrónico de confirmación|> F[Cliente]

E -->|Actualiza inventario|> G[Inventario de productos]

Elementos del DFD

- Entidades: Cliente, Carrito de compras, Caja, Sistema de pago, Inventario de productos.

- Procesos: Selecciona productos, Procede a la caja, Selecciona método de pago, Verifica información de pago, Procesamiento de transacción, Envía correo electrónico de confirmación, Actualiza inventario.

- Flujos de datos: Selecciona productos, Procede a la caja, Selecciona método de pago, Verifica información de pago, Procesamiento de transacción, Envía correo electrónico de confirmación, Actualiza inventario.

Beneficios del DFD

- Mejora la comprensión del proceso: El DFD ayuda a entender el proceso de compra en línea y a identificar los pasos involucrados.

- Identifica los flujos de datos: El DFD muestra los flujos de datos entre las entidades y los procesos, lo que ayuda a entender cómo se mueve la información.

- Ayuda a la toma de decisiones: El DFD puede ayudar a tomar decisiones informadas sobre cómo mejorar el proceso de compra en línea

# data[].attributes.headline
PSeInt es una herramienta informática, un intérprete de pseudocódigo, diseñada para facilitar el aprendizaje de la programación, especialmente para principiantes, utilizando un lenguaje sencillo y en español.

# data[].attributes.subject
PSeInt es una herramienta informática, un intérprete de pseudocódigo, diseñada para facilitar el aprendizaje de la programación, especialmente para principiantes, utilizando un lenguaje sencillo y en español.

# data[].attributes.body
Ejemplo

Programa para calcular el promedio

Descripción del programa

El programa debe pedir al usuario que ingrese un conjunto de números y luego calcular el promedio de esos números.

Código en PSeInt

pseint

Algoritmo calcular_promedio

Definir suma, promedio, cantidad_numeros, i Como Real

Definir numeros Como Arreglo[10] De Real

suma <- 0

cantidad_numeros <- 0

Para i <- 1 Hasta 10 Con Paso 1 Hacer

Escribir "Ingrese el número ", i, ": "

Leer numeros[i]

suma <- suma + numeros[i]

cantidad_numeros <- cantidad_numeros + 1

FinPara

promedio <- suma / cantidad_numeros

Escribir "El promedio es: ", promedio

FinAlgoritmo

# data[].attributes.body
Explicación del código

- Definición de variables: Se definen las variables suma, promedio, cantidad_numeros y i como reales, y numeros como un arreglo de 10 elementos de tipo real.

- Inicialización de variables: Se inicializan las variables suma y cantidad_numeros en 0.

- Ciclo para leer números: Se utiliza un ciclo Para para leer 10 números y almacenarlos en el arreglo numeros. En cada iteración, se suma el número leído a la variable suma y se incrementa la variable cantidad_numeros.

- Cálculo del promedio: Se calcula el promedio dividiendo la suma de los números por la cantidad de números.

- Impresión del resultado: Se imprime el promedio calculado.

Ejecución del programa

Al ejecutar el programa, se pedirá al usuario que ingrese 10 números. Luego, se calculará y se imprimirá el promedio de esos números.

Beneficios de PSeInt

- Fácil de usar: PSeInt es una herramienta fácil de usar para crear programas y algoritmos.

- Sintaxis simple: La sintaxis de PSeInt es simple y fácil de entender.

- Ideal para principiantes: PSeInt es ideal para principiantes en programación, ya que permite enfocarse en la lógica del programa sin preocuparse por la sintaxis compleja

# data[].attributes.body
utiliza pseudocódigo (un lenguaje de programación simplificado) para escribir algoritmos.

ejemplo

Ejemplo 1: Programa para calcular el área de un rectángulo

Código en PSeInt

pseint

Algoritmo calcular_area_rectangulo

Definir base, altura, area Como Real

Escribir "Ingrese la base del rectángulo: "

Leer base

Escribir "Ingrese la altura del rectángulo: "

Leer altura

area <- base * altura

Escribir "El área del rectángulo es: ", area

FinAlgoritmo.

PSeInt es una herramienta informática para crear programas y algoritmos de manera sencilla y fácil de entender. Un ejemplo de su uso es un programa que calcula el promedio de un conjunto de números, donde se define variables, se inicializan, se lee números, se calcula el promedio y se imprime el resultado. PSeInt es ideal para principiantes en programación debido a su sintaxis simple y fácil de entender.

# data[].attributes.body
DFD se enfoca en la representación gráfica de algoritmos a través de diagramas de flujo

ejemplo

Un ejemplo de DFD (Diagrama de Flujo de Datos) es un proceso de compra en línea, donde se muestra el flujo de datos entre las entidades y procesos involucrados, como:

- Cliente: selecciona productos y procede a la caja

- Carrito de compras: almacena los productos seleccionados

- Caja: procesa la transacción y verifica la información de pago

- Sistema de pago: verifica la información de pago y procesa la transacción

- Inventario de productos: actualiza el inventario después de la compra

El DFD muestra el flujo de datos entre estas entidades y procesos, permitiendo entender mejor el proceso de compra en línea.

# data[].attributes.body
A lo largo de este trabajo se logró comprender de manera integral los conceptos fundamentales de la informática, desde el desarrollo de algoritmos hasta el uso de herramientas como pseudocódigo, diagramas de flujo y bases de datos. Esta base teórica y práctica es esencial para iniciar un proceso de formación en el campo de las tecnologías de la información, permitiendo al estudiante identificar y aplicar soluciones eficientes a problemas reales mediante el pensamiento lógico y estructurado.

# data[].attributes.body
El desarrollo de esta actividad permitió evidenciar la importancia de conocer los distintos componentes del desarrollo de software, como los roles de Backend, Frontend y Fullstack, así como el uso de lenguajes de programación como Python. Además, se resaltó la relevancia de personajes históricos y herramientas que han marcado el avance de la informática, fortaleciendo así no solo el conocimiento técnico, sino también el reconocimiento del impacto social y tecnológico que tiene esta disciplina en la actualidad.