Fundamentos de la programación (Python)
[M0] Conceptos sobre Programación
En este módulo conoceremos los conceptos preliminares sobre programación así como las características y elementos que conforman los lenguajes de programación.
Contenido
¿Qué es programar?
Se puede definir un programa como el conjunto ordenado de instrucciones que se dan al ordenador en un lenguaje de programación, indicando las tareas para resolver el problema. Un programador es una persona que resuelve problemas, de forma rigurosa y sistemática.
Para programar se necesitan seguir cuatro pasos:
Análizar el problema: Implica entender lo que se pide en el enunciado del mismo y determinar las variables de entrada y salida así como los procedimientos necesarios para su resolución.
Diseñar el algoritmo: Se puede definir algoritmo como la secuencia ordenada de pasos que conduce a la solución del problema dado. En este punto, el programador se puede apoyar en pseudo-código o en diagramas de flujo.
- Un pseudo-código es un bosquejo, en lenguaje natural (humano) de los pasos que hay que seguir para solucionar un problema, de la forma más detallada posible e independiente del lenguaje de programación a utilizar. Realizar el análisis del problema apoyándonos en pseudo-código facilita la tarea de programar en un lenguaje formal y mejora la calidad y el tiempo de desarrollo.
- Un diagrama de flujo es la representación gráfica más formal que describe un proceso, o algoritmo informático.
Dado que un pseudo-código carece de normas rigurosas, es más para un uso personal, mientras que los diagramas de flujo se utilizan más en trabajos de equipo.
Ejemplo de la representación del algoritmo para sumar dos números tanto en pseudo-código como en diagramas de flujo

-
Codificar en el lenguaje seleccionado: Es importante seguir los lineamientos del código limpio y los estándares/buenas prácticas del lenguaje seleccionado. En el caso de Python se encuentran en este documento: PEPS
Orden de codificación
- Importar los módulos que se requieran
- Declarar las variables de entrada/salida
- Ejecutar las operaciones necesarias
Ejecutar y validar el programa:
- Validar los datos de entrada (materia prima del programa).
- Comprobar que el programa funciona de la misma manera bajo diferentes supuestos.
Características y elementos de los lenguajes de programación
Características de los lenguaje de programación
Los lenguajes de programación se clasifican de diversas maneras según su comportamiento respecto de los siguientes aspectos:
Lenguajes compilados e interpretados
Al ejecutar un programa, se deberá traducir sus órdenes a lenguaje de máquina que es lo que puede entender el procesador. La forma en la cual se realiza esta "traducción" es lo que agrupa a los lenguajes en Interpretados o Compilados.
- Si se realiza una traducción previa de todo el programa para luego (en caso de no haber errores durante el proceso) poder ejecutarlo, se está hablando de un lenguaje compilado (como Java, C o Go).
- En el caso de ir leyendo linea a linea el programa e irlo traduciendo medida que es necesario, estamos hablando de un lenguaje interpretado (como JavaScript o Python).
Plataforma: Nativo o Multiplataforma
Una plataforma es una combinación de hardware y software utilizado para ejecutar aplicaciones de software.
- Los lenguajes de programación nativos están configurados para funcionar con el uso de un procesador especifico. Ejemplos: Swift y Objetive-C para iOS o Kotlin para Android.
- Por otra parte, un lenguaje de programación multiplataforma hace referencia a la capacidad de un software o lenguaje de programación capaz de ejecutarse en diferentes dispositivos y sistemas operativos. Ejemplo: Java, JavaScript, Python, C#
Paradigma
Un paradigma de programación es una manera o estilo de programación de software. Se trata de un conjunto de métodos aplicables en todos los niveles del diseño para que un programa pueda resolver problemas.
Los lenguajes de programación pueden adoptar uno o varios paradigmas en función del tipo de órdenes que permiten implementar. En el caso de adoptar varios paradigmas (como JavaScript o Python que son imperativos, funcionales y orientados a objeto) se denominan lenguajes de programación multiparadigma.
Existen diferentes paradigmas de programación entre los cuales se pueden mencionar:
- Programación imperativa o por procedimientos: Deben su nombre a que son lenguajes que indican a los ordenadores qué tienen que hacer y cómo deben hacerlo. Se caracteriza por el uso de variables, comandos y procedimientos. Ejemplo: C
- Programación Orientada a Objetos: Se basa en los conceptos de objetos y clases de objetos. Un objeto es un tipo de variable compuesta que contiene un conjunto de operaciones (métodos) definidas para ellos. Ejemplo: JAVA.
- Programación declarativa: Se basa en el hecho que un programa implementa una relación antes que una correspondencia. Se le indica al programa lo que tiene que hacer usando una sintaxis, sin saber cómo lo hace, pero el programa lo hace. Ejemplo: SQL, PROLOG.
- Programación Funcional: Se divide al programa en varias partes llamadas funciones donde cada función hace una sola cosa. Una función puede llamar a otra, o el resultado de una función puede ser usado como argumento de otra función. Ejemplo: LISP
Multihilo
Un lenguaje de programación es multihilo, cuando permite varios subprogramas ejecutándose de forma independiente y simultánea, para aprovechar el uso del procesador. Este es el caso de C, Java y Go; no así Python y JavaScript.
Tipado
El tipado se usa para indicar el tipo de datos que ha de guardarse en una variable a la hora de declararla. Al asignarle un tipo a una variable se está delimitando cuál es el conjunto de valores que podría almacenar y utilizar la misma.
Tipado estático vs tipado dinámico: En el tipado estático el tipo está ligado a la variable. Esto significa que una vez que la variable se declara de un tipo, no se puede cambiar el tipo más adelante aunque sí se le puede asignar otros valores del mismo tipo, porque el tipo queda ligado a la variable y no a los valores que ésta toma. Ejemplo: Java, Go.
En cambio, en el tipado dinámico el tipo está ligado al valor que se le asigne a la variable y por lo tanto, el el mismo puede cambiar a medida que cambian el tipo de los valores que se le asigna. Ejemplo: JavaScript, Python.
Hay cierto tipos de lenguaje que independientemente a que su tipado sea estático o dinámico, permiten inferir el tipo de la variable, es decir que el compilador/intérprete puede asignar un tipo a una variable a partir del valor que se le asigne en la declaración de la misma, sin que se indiques explícitamente. Ejemplos: Python, JavaScript, Go.
Tipado fuerte vs tipado débil: En el tipado fuerte, no existe la conversión implícita de tipos (ejemplo: Python, Java), mientras que en el tipado débil sí que existe, permitiendo expresiones entre varios tipos de datos (ejemplo: JavaScript).
Elementos de un lenguaje de programación
Todos los lenguajes de programación tienen en común los siguientes elementos:
- Estructura
- Comentarios
- Identificadores
- Variables
- Constantes
- Palabras reservadas
- Tipos de datos
- Operadores
- Instrucciones para entrada y salida de datos.
- Estructuras de flujo de datos
- Paradigmas
Estos son los tópicos que constituyen un curso de Fundamentos de la programación, abordados desde la perspectiva del lenguaje que se está estudiando.