4,99 €
El propósito de este libro es introducirte en el lenguaje de las máquinas. Por estos días estáis rodeado de dispositivos intercomunicados que esperan que les digas qué hacer. Puedes utilizar aplicaciones como Facebook, Twitter o Skype, o puedes desarrollar tus propias aplicaciones. Toda tarea que realices y que seas capaz de expresar como un conjunto de instrucciones, puede ser realizada por una máquina, aprendiendo su lenguaje, empezarás a estar rodeado de rápidos, siempre dispuestos, y porque no felices servidores. Con esta meta enfocada este escrito aborda en su contenido paso por paso, el desarrollo de capacidades para la búsqueda e implementación de algoritmos, entendiéndose como algoritmo al conjunto de instrucciones para la realización de una tarea. Estas instrucciones deben estar escritas en un lenguaje que la máquina pueda entender. Si bien para la implementación de los algoritmos se utiliza el lenguaje Python, los conceptos tratados te serán útiles para cualquier otro lenguaje. Python es un lenguaje simple, moderno y potente creado por un ex trabajador de Google y ampliamente utilizado en exitosas aplicaciones a nivel global.
Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:
Seitenzahl: 119
Veröffentlichungsjahr: 2025
Carlos Alberto Ballesteros
Ballesteros, Carlos A. Aprender a programar en Python / Carlos A. Ballesteros. - 1a ed. - Ciudad Autónoma de Buenos Aires : Autores de Argentina, 2024.
Libro digital, EPUB
Archivo Digital: descarga y online
ISBN 978-987-87-5827-5
1. Ensayo. I. Título. CDD A860
EDITORIAL AUTORES DE [email protected]
Propósito y Contenido general del libro
1. ¿Cómo hacer para que una máquina haga lo que tú haces?
Algoritmo
Especificación de algoritmos
Datos y acciones
Variables: Datos
¿Qué es programar?
Automatización
Especificación vs. Ejecución
Glosario
2. Lenguajes de programación
Python
Lenguajes formales
Instalando Python
Errores
Glosario
3. Comenzando a programar
Variables, sentencias y expresiones
Asignación
Salida
Tipos de datos
Palabras reservadas o primitivas
Operadores y operandos
Orden de operaciones
Operador módulo
Operadores con Strings
Entrada
Comentarios
Glosario
4. Estructuras de control
Ejecución condicional
Expresiones booleanas
Operadores lógicos
Selección
¡Tu primer programa! (script)
Ejecución alternativa
Variables lógicas y complementos de condiciones
Condiciones anidadas
Excepciones
Expresiones lógicas en corto
Repetición
Repetición While
Glosario
5. SubProgramas
Funciones
Funciones integradas
Funciones de conversión de tipo
Funciones para números aleatorios y módulos
Funciones matemáticas
Composición
Funciones definidas por el usuario
Definición y uso de funciones
Flujo de ejecución: argumentos y parámetros
Funciones void y funciones con resultado
Variables y parámetros locales
Recursión
¿Por qué funciones?
Documentación interna
Glosario
6. Estructuras de datos: Strings
Estructuras de datos
Strings
Travesías con ciclo for
Patrones de ciclos
Substrings
Búsqueda
Métodos para strings
El operador in
Comparación de strings
Análisis sintáctico: parsing
Operador de formato
Glosario
7. Listas
Mutabilidad
Atravesando listas
Operaciones con listas
Sublistas
Métodos para listas
Borrando elementos
Listas y funciones integradas
Listas y strings
Matrices o listas de listas (para programadores de otros lenguajes)
Listas y alias
Listas como argumentos
Glosario
8. Archivos y módulos definidos por el usuario
Archivos de texto
Buscando en un archivo
Parsing de líneas
Nombres de archivos y rutas de acceso
Módulos definidos por el usuario
Glosario
9. Diccionarios y parsing avanzado
Ciclos y diccionarios.
Diccionarios y archivos
Parsing avanzado
Bases de datos
Convirtiendo tipos de dato
Glosario
10. Tuplas
Comparando tuplas
Procesamiento DSU (decorar-ordenar-desdecorar)
Asignación de tuplas
Funciones que reciben tuplas
Funciones que devuelven Tuplas
Combinando listas en una tupla
Tuplas y Diccionarios
Recorriendo los elementos de un diccionario
Tuplas, listas y diccionarios
Parsing avanzado con tuplas
Tuplas como claves de diccionarios.
Comparando Estructuras de Datos
Glosario
11. Parsing avanzado a través de Expresiones Regulares (ER)
Parsing a través de expresiones regulares
Glosario
12. Procesamiento de datos remotos
El protocolo de la Web
Tu primer navegador
Tratando páginas web como archivos locales
Glosario
Referencias
El objetivo de este libro es introducirte en el lenguaje de las máquinas. Por estos días estáis rodeado de dispositivos intercomunicados esperando que les digas qué hacer. Puedes utilizar aplicaciones como Facebook, Twitter o YouTube desarrolladas por otras personas, pero también puedes desarrollar tus propias aplicaciones. Toda tarea que realices y que seas capaz de expresarla como un conjunto de instrucciones, la puede realizar una máquina. Al aprender el lenguaje de las máquinas empezarás a estar rodeado de rápidos, siempre dispuestos y porque no, felices servidores.
Con esta meta enfocada, buscaremos que desarrolles capacidades para la búsqueda e implementación de algoritmos, entendiéndose como algoritmo al conjunto de instrucciones para la realización de una tarea. Estas instrucciones deben estar escritas en un lenguaje de programación, es decir en un lenguaje que la máquina pueda entender. Si bien para la implementación de los algoritmos utilizaremos el lenguaje de programación Python, los conceptos que trataremos son útiles para cualquier lenguaje. Python es un lenguaje simple, moderno y potente creado por un ex trabajador de Google y ampliamente utilizado en exitosas aplicaciones a nivel global.
En todo el libro subyacen enseñanzas de técnicas avanzadas de programación, en pos del desarrollo de programas1 eficientes y fáciles de mantener. El desarrollo de aplicaciones requiere del aprendizaje de varios lenguajes, cada uno orientado hacia distintos propósitos, sin embargo, aprender un nuevo lenguaje después de la lectura de este libro será un emprendimiento relativamente simple, ya que te será conocida la estructura y lógica de comunicación con la máquina. Para afrontar una automatización de tareas más amplia, se introduce además en las principales estructuras de datos requeridas para representar entidades del mundo real. Cabe señalar que, si bien se recomiendan conocimientos básicos de programación, no se consideran un requisito indispensable.
1 En distintas ocasiones utilizaremos las palabras programa, software y aplicación como sinónimos.
Todas las máquinas, aún las más sofisticadas, requieren de algo o alguien que les diga que hacer, así como un auto requiere de un conductor. Cuando se habla de programar entonces, se habla de dotar a una máquina de algo que le diga que hacer, ese algo es un programa. El programa es el que tiene la lógica necesaria para realizar la tarea, y la máquina es la entidad que tiene la capacidad de interpretar y ejecutar las órdenes2 escritas en el programa. Para entender lo que en realidad es un programa partiremos desde la noción de algoritmo.
Al conjunto de instrucciones para realizar una tarea se les denomina algoritmo. Son comunes en la vida diaria, desde las instrucciones para encender un calefactor como las de la figura de abajo, hasta las instrucciones para construir un dragón con una hoja de papel (origami). Si quieres que una máquina lleve a cabo una tarea, primero debes hallar el algoritmo. Una vez hallado, la realización de la tarea ya no requiere del entendimiento de los principios en los que el algoritmo se basa, el proceso se reduce a seguir las instrucciones. En cierto modo, la inteligencia requerida para llevar a cabo la tarea está implícita en las instrucciones del algoritmo.
Si reflexionas acerca de la definición de algoritmo: “Conjunto ordenado y finito de instrucciones para la consecución de una tarea”, ves que en realidad las instrucciones para encender un calefactor de la figura anterior conforman un algoritmo. De hecho, tienen toda la lógica necesaria para la automatización de una tarea.
¿Qué sucedería si el piloto3 está dañado? Si el piloto se apagara por algún desperfecto y el algoritmo lo ejecutara una máquina, se haría una repetición infinita de los pasos 2 y 3. Si la tarea la lleva a cabo una persona, dependiendo de la paciencia y el tiempo que disponga, realizaría algunas repeticiones y luego daría por finalizada la tarea, aunque una finalización no exitosa, ya que el propósito de la tarea habría quedado inconcluso. Sería en este caso el momento de llamar a un técnico para reparar el desperfecto.
Sin embargo, si el algoritmo lo ejecuta una máquina, la máquina quedaría “colgada” en una repetición infinita de las instrucciones 2 y 3. En este caso habría que modificar el algoritmo para que después de una determinada cantidad de repeticiones, la máquina de por finalizada la tarea, por ejemplo, con un mensaje: “La tarea no fue completada con éxito”. ¿Quién determina la cantidad de veces que la máquina ejecutará los pasos 2 y 3? El que escribe las instrucciones es quien lo determina, y es a quien en informática se le conoce como programador. Al algoritmo escrito en un lenguaje entendible para la máquina se le denomina programa.
En el algoritmo anterior hay una secuencia implícita, de arriba hacia abajo, de hecho, ni para una persona ni para una máquina serían necesarios los números de los pasos 1, 2, 3… sólo se hacen necesarios por el hecho de que en determinadas condiciones hay que alterar esa secuencia implícita, como lo es el caso de la instrucción 3, en la que “si el piloto no enciende” no hay que continuar con la 4, sino que se vuelve a la instrucción 2.
Entonces tenemos la secuencia implícita de arriba hacia abajo, y en la instrucción 3 un cambio de la secuencia implícita que depende de si la condición “¿el piloto encendió?” es verdadera o falsa. Esto conforma una repetición de instrucciones. La palabra “si” en programación, está siempre asociada a una condición.
Una vez que obtengas el algoritmo para realizar una tarea, sólo basta que lo representes en un lenguaje formal para que una máquina pueda ejecutarlo, a ese lenguaje formal se le denomina lenguaje de programación. A un algoritmo escrito en un lenguaje de programación se le denomina programa. Los programas llevan a cabo acciones sobre datos de entrada y producen resultados. Los datos representan entidades del mundo real como por ejemplo la temperatura o la humedad. Si cargas las temperaturas medias de los días de un mes, el programa podría procesar esos datos de entrada y darte como resultado4la temperatura media del mes. En ese caso el procesamiento sería sumar las temperaturas medias de cada día y dividirlas por la cantidad de días de dicho mes.
Como vimos, un algoritmo puede verse como un conjunto de acciones aplicadas sobre datos de entrada que producen resultados. Las acciones son en definitiva el conjunto de órdenes que nuestro procesador5 será capaz de interpretar y ejecutar, como sumar, dividir, etc. Dependiendo del lenguaje de programación que utilices, tendrás que aprender a expresar las acciones en dicho lenguaje. Si bien pueden cambiar las palabras utilizadas para las acciones, más adelante veras que hay cinco acciones básicas comunes a cualquier lenguaje: entrada, salida, asignación, selección y repetición, acciones que verás en los siguientes capítulos. Además, se considera que las operaciones aritméticas y la evaluación de expresiones son acciones que cualquier procesador es capaz de interpretar y ejecutar.
La forma en que se representan los datos en un programa es a través de lo que se denominan variables. Una variable es un contenedor con un nombre y un contenido o valor. El nombre de la variable es asignado por el programador, ya que representa un dato del mundo real que necesita ser almacenado. Por ejemplo, la variable con nombre temp_min, podría contener la temperatura mínima del día. El identificador o nombre tiene que ser significativo respecto del valor que la variable contiene, es decir, el programador podría elegir el identificador pepe para guardar la temperatura, pero sería como poner harina en un recipiente etiquetado con la palabra azúcar. Como el valor del dato puede cambiar (variar), se la denomina variable.
En el capítulo 3 veremos en más detalle el concepto de variable, basta por ahora con decir que, si le cargas un nuevo valor en el contenedor, destruyes el valor anterior. Por ejemplo, si cargas 27 en la variable temp_min, el 33 se destruye, desde aquí en más y hasta que se cargue un nuevo valor en la variable, su valor será 27.
Entonces, programar es explicar en un lenguaje claro el proceso que llevas a cabo para realizar una tarea. El objetivo final será que la tarea quede automatizada, es decir, que pueda ser realizada por una máquina. Explicar la forma en que realizas una tarea requiere de un lenguaje que un procesador pueda interpretar sin ambigüedad. Un procesador, al que a veces denominamos también máquina, es una entidad capaz de interpretar y llevar a cabo (ejecutar) un conjunto de instrucciones.
No se puede utilizar el lenguaje natural para dar instrucciones a una máquina, ya que no es preciso. Por ejemplo: “El pavo está listo para comer”, se podría interpretar que tiene granos y se dispone a comer, o que está bien dorado en el horno. Por eso existen los lenguajes formales en los que no hay metáforas, ni ambigüedades, ni sinónimos, y en los que la estructura de cada oración o instrucción es fundamental. Al aprender a programar se desarrollan capacidades metacognitivas, ya que es necesario que expliques cómo haces lo que haces.
Por ejemplo, si a cualquier persona se le entrega una planilla con las temperaturas medias de cada día del año, y se le pide que busque la mayor temperatura, le sería una tarea sencilla de realizar. Bastaría con que recorra la planilla y en pocos minutos nos daría la respuesta. Sin embargo, si le pidiéramos que nos explique cómo hizo para obtener la mayor, su explicación podría no ser muy clara. Un programador debe desarrollar la capacidad de explicar claramente cómo hace lo que hace. Un programador en este caso podría explicar esta tarea de la siguiente forma:
1 - Leí la temperatura media del primer día de la lista. Como esa era la única que había leído, era la mayor hasta ese momento, por lo tanto, memoricé esa temperatura.
2 - Leí la segunda temperatura, si era menor a la que había memorizado, leía la tercera temperatura…, hasta leer una temperatura mayor a la memorizada, en este caso, memorizaba esta nueva temperatura como la mayor.
4 - Continué así hasta terminar la lista de temperaturas medias.
5 - En mi memoria quedó la temperatura mayor.
Generalmente la tarea que quieras automatizar, requerirá de un análisis, ya que es necesario que tú entiendas exactamente lo que hay que hacer antes de buscar un algoritmo. Primero entonces tendrás que tener en claro cuáles serán los datos de entrada y cuales los resultados que se esperan. Por ejemplo, si la tarea es obtener la temperatura media del mes de enero, las entradas podrían ser las 31 temperaturas mínimas y máximas de cada día, y el resultado deberá ser un solo dato que representa la temperatura media del mes de enero.
Una vez analizada la tarea, viene el proceso metacognitivo, en cual debes detallar el conjunto de instrucciones que conforman el algoritmo para realizar la tarea. Finalmente elegirás un lenguaje de programación para poder expresar el algoritmo obtenido en un lenguaje que la máquina pueda interpretar y ejecutar. La ejecución de este programa constituirá la realización automática de la tarea.