Logo Python 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:

  1. 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.

  2. 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

    representación de un algoritmo

  3. 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
  4. 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.

Plataforma: Nativo o Multiplataforma

Una plataforma es una combinación de hardware y software utilizado para ejecutar aplicaciones de software.

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:

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:

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.