programacion-sentencias-y-bloques

Qué son las sentencias y bloques

Hemos visto que un programa convencional está formado por una serie de “líneas”, que forman nuestro código fuente, o “las tripas” del programa.

Hablando con propiedad, en realidad estas líneas se llaman “sentencias”. Las sentencias son la unidad básica de cualquier programa. Representan las acciones que el programa debe ejecutar para lograr un determinado resultado.

Una sentencia puede ser tan sencilla como asignar un valor a una variable o tan compleja como leer el contenido de un fichero, o hacer una petición a una página web.

Por ejemplo, vamos a ver cómo haríamos un programa que lea un fichero y muestre el contenido por la pantalla.

string filePath = "ruta_del_archivo.txt";   // nombre del fichero
string fileContent = File.ReadAllText(filePath);  // leer fichero
Console.WriteLine("El contenido del archivo es:\n" + fileContent);  // mostrar fichero
file_path = "ruta_del_archivo.txt"   # nombre del fichero
with open(file_path, 'r') as file:   # leer fichero
	file_content = file.read()
	print("El contenido del archivo es:\n" + file_content) # mostrar fichero

De momento no te preocupes demasiado por la sintaxis de cada uno de ellos, ni lo que hace cada cosa. Lo importante es entender que ambos son una secuencia de sentencias donde:

  • Define el nombre del fichero
  • Leen el fichero
  • Muestran el contenido del fichero por consola

Nuestro programa (¡casi cualquier programa!) es simplemente eso. Una secuencia de sentencias que se ejecutan desde principio hasta el final, realizando las acciones que hemos definido.

Los tipos de secuencias disponibles y su sintaxis varían de un lenguaje de programación a otro. Aunque, en general, veremos que son más parecidas de lo que parecen al principio.

¿Qué es un bloque?

Un bloque es una agrupación de líneas de código que se considera como una única sentencia, de cara a su ejecución.

Un bloque no es únicamente una cuestión de organización de código o para que quede más bonito. Son absolutamente necesarios en la mayoría de lenguajes.

El motivo es que, como veremos en el apartado de control de flujo de ejecución, hay muchas sentencias que nos permiten decir “haz esto” o “haz esto otro”. Y en ese “haz esto” admiten una única sentencia.

Gracias a los bloques, podemos evitar esa imposición y ejecutar varias líneas de código, que a efectos del compilador o intérprete forma una única unidad conjunta.

En la mayoría de los lenguajes de programación, los bloques se delimitan mediante algún tipo de marcador. Muchos heredan la sintaxis de C, y emplean llaves {} para delimitar bloques.

Por ejemplo, C, C++, C#, Java o JavaScript emplean llaves como delimitadores.

if (condicion)
{
  // esto sería un bloque
  let variable = 2;
  console.log(variable);
}

Pero no todos los lenguajes funcionan así. Por ejemplo, VB emplea

If x > 3 Then
	' esto sería un bloque
	Dim variable As Integer = 2
	Console.WriteLine(variable)
End If

Por otro lado, algunos lenguajes usan indentación para delimitar los bloques. Esto se llama indentación significativa, y el mayor (y casi único) representante es el lenguaje Python.

if x > 3:
	# esto sería un bloque
    variable = 2
    print(variable)

En cualquier caso, la funcionalidad de un bloque es la misma en todos los lenguajes. Permitir que una serie de sentencias sea vista como una única, a ojos del compilador o intérprete.