{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"collapsed_sections": [
"daGMu1td9ac-",
"2ATym61FAL8I",
"zW2iN8uaAvyC",
"X_N4GzkwiD0a",
"lKPclAqV_Pi4",
"A24KTf20jV47",
"n7mlUfwe_r5o",
"Id2VTLKJBTGJ",
"upjActIbkkSC"
]
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"source": [
""
],
"metadata": {
"id": "C0bBFrzEqEbL"
}
},
{
"cell_type": "markdown",
"source": [
"#**Sentencias Iterativas anidadas**"
],
"metadata": {
"id": "daGMu1td9ac-"
}
},
{
"cell_type": "markdown",
"source": [
"* Las sentencias iterativas anidadas son bucles dentro de otros bucles que permiten realizar múltiples iteraciones en una estructura jerárquica. Por esta razón tmabién reciben el nombre de Iterativas múltiples.\n",
"\n",
"* Permiten resolver problemas complejos que requieren iteraciones en varios niveles.\n",
"\n",
"En el ejemplo podemos ver un bucle **for j** dentro de otro bucle **for i**.\n",
"\n",
"* En la salida, mira como por cada iteración del bucle for i, existen dos iteraciones del bucle for j."
],
"metadata": {
"id": "kfkrMXlN_aHv"
}
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "2MisjFhB9UsQ",
"outputId": "f6d13abc-fca6-463a-9684-351db65cbf2e"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"i = 0, j = 0\n",
"i = 0, j = 1\n",
"i = 1, j = 0\n",
"i = 1, j = 1\n",
"i = 2, j = 0\n",
"i = 2, j = 1\n"
]
}
],
"source": [
"for i in range(3):\n",
" for j in range(2):\n",
" print(f\"i = {i}, j = {j}\")"
]
},
{
"cell_type": "markdown",
"source": [
"#**Usos - Sentencias Iterativas Anidadas**"
],
"metadata": {
"id": "2ATym61FAL8I"
}
},
{
"cell_type": "markdown",
"source": [
"* Las sentencias iterativas anidadas son fundamentales para resolver problemas con estructuras de datos complejas, como matrices y listas de listas.\n",
"\n",
"* Ayudan a automatizar tareas repetitivas en situaciones donde se requieren iteraciones múltiples.\n",
"\n",
"En el ejemplo hemos simulado una matriz de 2x 2 utilizando listas (el detalle y teoría de listas lo veras más adelante).\n",
"\n",
"El **for i** maneja las filas y el **for j** itera las columnas."
],
"metadata": {
"id": "zPAyBBDIATzn"
}
},
{
"cell_type": "code",
"source": [
"matriz = [[1,2],\n",
" [3,4]]\n",
"\n",
"for i in range(0, len(matriz)):\n",
" for j in range(0, len(matriz)):\n",
" print(matriz[i][j], end=\" \")\n",
" print()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "-ihi_-f09iud",
"outputId": "e4c07936-9311-4412-995c-e8303156752b"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"1 2 \n",
"3 4 \n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"#**Ventajas de las Sentencias Iterativas Anidadas**"
],
"metadata": {
"id": "zW2iN8uaAvyC"
}
},
{
"cell_type": "markdown",
"source": [
"* **Eficiencia**: Permiten realizar múltiples operaciones en una sola corrida, evitando el uso de bucles adicionales.\n",
"\n",
"* **Flexibilidad**: Se pueden anidar diferentes tipos de bucles, como **for** dentro de **while** o viceversa.\n",
"\n",
"* **Claridad de Código**: Permiten expresar algoritmos complejos de manera más concisa y legible.\n",
"\n",
"Modificaremos el ejemplo anterior para anidar un bucle **while** en lugar de un bucle **for**. Como puedes observar se requiere inicializar a cero la variable iterador para poder recorrer en las columnas de la matriz."
],
"metadata": {
"id": "fqiGXyQpA3gz"
}
},
{
"cell_type": "code",
"source": [
"matriz = [[1,2],\n",
" [3,4]]\n",
"\n",
"for i in range(0, len(matriz)):\n",
" iterador = 0\n",
" while(iterador < len(matriz)):\n",
" print(matriz[i][iterador], end=\" \")\n",
" iterador += 1\n",
" print()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "nh5JguWd-HNN",
"outputId": "460f4519-7b3f-47cf-8b44-bac4bc25d5cd"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"1 2 \n",
"3 4 \n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"#**Ejemplo 1**\n",
"Crea un programa que imprima un cuadrado formado por asterísticos. Solicita al usuario el tamaño del cuadrado. Por ejemplo:\n",
"\n",
"Ingrese el tamaño del cuadrado: 6\n",
"\n",
"```\n",
"* * * * * *\n",
"* * * * * *\n",
"* * * * * *\n",
"* * * * * *\n",
"* * * * * *\n",
"* * * * * *\n",
"```"
],
"metadata": {
"id": "X_N4GzkwiD0a"
}
},
{
"cell_type": "code",
"source": [
"print(\"Programa para imprimir un cuadrado de asteriscos\")\n",
"\n",
"asteriscos = int(input(\"Ingrese el tamaño del cuadrado: \"))\n",
"\n",
"# Bucle para las filas\n",
"for i in range(asteriscos):\n",
" # Bucle para las columnas\n",
" for j in range(asteriscos):\n",
" print(\"*\", end=\" \")\n",
" print() # Salto de línea después de imprimir cada fila"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "O6InzgefBpV4",
"outputId": "1129b7a4-4457-483f-f774-85f798f9faff"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Programa para imprimir un cuadrado de asteriscos\n",
"Ingrese el tamaño del cuadrado: 5\n",
"* * * * * \n",
"* * * * * \n",
"* * * * * \n",
"* * * * * \n",
"* * * * * \n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"#**Consejos para Utilizar Bucles Anidados**"
],
"metadata": {
"id": "lKPclAqV_Pi4"
}
},
{
"cell_type": "markdown",
"source": [
"* **Planificación**: Identifica claramente el patrón de iteración antes de anidar bucles.\n",
"\n",
"* **Control de Flujo**: Cuidado con los bucles infinitos, verifica las condiciones para terminar la ejecución de os bucles.\n",
"\n",
"* **Optimización**: Evita bucles anidados innecesarios que puedan afectar la eficiencia del programa.\n",
"\n",
"En el ejemplo, hemos creado un programa que imprime los números secuencialmente hasta encontrar el número ingresado.\n",
"\n",
"Observa como el iterador no recorre más allá del número ingresado, para terminar la ejecución del bucle se usó **break**.\n",
"\n",
"Ten mucho cuidado con el uso de break, podrías arruinar los datos calculados o crear bucles infinitos."
],
"metadata": {
"id": "0cYvUNZuCfBb"
}
},
{
"cell_type": "code",
"source": [
"num = int(input(\"Ingrese un número del 1 al 10: \"))\n",
"iterador = 0\n",
"while(iterador <= 10):\n",
" if(iterador == num):\n",
" print(\"Número encontrado\")\n",
" break\n",
" elif(iterador == 10):\n",
" print(\"Número no encontrado\")\n",
" print(iterador)\n",
" iterador += 1"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "B0tlXotG-6QH",
"outputId": "3d0cb36a-b7c1-4ed4-b9dc-750569ca69d5"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Ingrese un número del 1 al 10: 3\n",
"0\n",
"1\n",
"2\n",
"Número encontrado\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"#**Ejemplo 2**\n",
"Modifica el ejemplo 1, ahora la impresión del cuadrado tendrá que ser de la siguiente forma:\n",
"\n",
"Ingrese el tamaño del cuadrado: 6\n",
"\n",
"```\n",
"* * * * * *\n",
"* *\n",
"* *\n",
"* *\n",
"* *\n",
"* * * * * *\n",
"```"
],
"metadata": {
"id": "A24KTf20jV47"
}
},
{
"cell_type": "code",
"source": [
"print(\"Programa para imprimir un cuadrado vacío de asteriscos\")\n",
"\n",
"asteriscos = int(input(\"Ingrese el tamaño del cuadrado: \"))\n",
"\n",
"# Bucle para las filas\n",
"for i in range(asteriscos):\n",
" # Bucle para las columnas\n",
" for j in range(asteriscos):\n",
" if i == 0 or i == asteriscos - 1 or j == 0 or j == asteriscos - 1:\n",
" print(\"*\", end=\" \") # Imprimir asterisco en el borde\n",
" else:\n",
" print(\" \", end=\" \") # Imprimir espacio en el interior\n",
" print() # Salto de línea después de imprimir cada fila"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "UuEAeGEEiSfS",
"outputId": "da515cf2-e8ec-431e-d511-4d77e52812c9"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Programa para imprimir un cuadrado vacío de asteriscos\n",
"Ingrese el tamaño del cuadrado: 7\n",
"* * * * * * * \n",
"* * \n",
"* * \n",
"* * \n",
"* * \n",
"* * \n",
"* * * * * * * \n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"#**Práctica 1**\n",
"Ahora la impresión del cuadrado tendrá una diagonal de asteriscos, y la impresión será de la siguiente forma:\n",
"\n",
"Ingrese el tamaño del cuadrado: 6\n",
"```\n",
"* * * * * *\n",
"* * *\n",
"* * *\n",
"* * *\n",
"* * *\n",
"* * * * * *\n",
"```"
],
"metadata": {
"id": "tZD7-CQP5Qwc"
}
},
{
"cell_type": "code",
"source": [
"# ******************************\n",
"# * Resuelve aquí tu ejercicio *\n",
"# ******************************"
],
"metadata": {
"id": "NUnE9B51CusH"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"#**Práctica 2**\n",
"Modificar el ejercicio anterior, ahora la impresión del cuadrado tendrá dos diagonales de asteriscos, y la impresión será de la siguiente forma:\n",
"\n",
"Ingrese el tamaño del cuadrado: 6\n",
"```\n",
"* * * * * *\n",
"* * * *\n",
"* * * *\n",
"* * * *\n",
"* * * *\n",
"* * * * * *\n",
"```"
],
"metadata": {
"id": "t4IrCH17DNPb"
}
},
{
"cell_type": "code",
"source": [
"# ******************************\n",
"# * Resuelve aquí tu ejercicio *\n",
"# ******************************"
],
"metadata": {
"id": "VRUiLV4DcS8V"
},
"execution_count": null,
"outputs": []
}
]
}