> For the complete documentation index, see [llms.txt](https://educacion.gitbook.io/programacion/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://educacion.gitbook.io/programacion/ud1-introduccion-a-programacion/introducion-a-programacion/elementos-de-un-algoritmo.md).

# Elementos de un algoritmo

No momento de comezar a definir un algoritmo, importante indicar que existe unha convención a la hora de estructurar sus elementos:

<figure><img src="/files/rkv6ZJiOQE87bZhi7mRn" alt=""><figcaption></figcaption></figure>

## Palabras reservadas

* **Palabras reservadas**: Son un conxunto de palabras que non se poden empregar como identificadores xa que o compliador vainos interpretar de forma especial: Pe: Definir, Leer, Escribir, Proceso, FinProceso,...

## Datos y variables

* **Variable:** Espacio de almacenaxe que se reserva en memoria principal que se asocia a un identificador e a un tipo de dato
* **Identificador:** Nome simbólico que recibe una variable
* **Tipo de dato:** Determina o conxunto de valores que pode tomar una variable, as operacions que se poden aplicar, e como a almacena internamente o ordenador. Os principais tipos de datos que imos atopar son:

  * **Entero**: Representa número enteiros
  * **Real:** Representa números decimais
  * **Lógico:** Representa valores de verdadeiro o falso
  * **Carácter:** Representa unha letra
  * **Cadena:** Representa un conxunto de letras

  <figure><img src="/files/BP7cGRenK7hqK4C2Fr8u" alt=""><figcaption></figcaption></figure>

## Entrada e Saida por pantalla

Un algoritmo define a seguintes sentenzas para recoller ou mostrar datos por pantalla:

```
Proceso entradaSalida
	//VARIABLES
	Definir entrada,salida Como Entero;
	//ALGORITMO
	//Muestra información de texto fijo por pantalla
	ESCRIBIR "Introduce un número:";
	//Pide al usuario informacion por teclado
	LEER entrada;
	salida = entrada + 2;
	//Muestra una combinación de texto fijo y un valor variable
	Escribir "La salida es: ", salida;
FinProceso
```

## Expresións

* **Expresións aritméticas:** Son aquelas expresións que devolven un resultado numérico
  * **Operandos:** Constantes ou variables
  * **Operadores:** Operadores aritméticos

<figure><img src="/files/ZQCV9mxqqFcOIyTvEYEM" alt=""><figcaption></figcaption></figure>

Imos a ver exemplos de execución de expresións aritméticas:

<pre><code><strong>Proceso areaCuadrado
</strong>	//VARIABLES
	Definir base, altura, area Como Entero;
	//ALGORITMO
	base &#x3C;- 5;
	altura &#x3C;- 10;
	//¿Cuanto vale área en este punto?
	area &#x3C;- base * altura;
	//¿Y en este?
	Escribir "El área es: ", area;
FinProceso
</code></pre>

```
Proceso modificacionVariables
	//VARIABLES
	Definir a, b, c Como Entero;
	//ALGORITMO
	a <- 3;
	b <- 2;
	c <-a + b;
	//¿Cual es el valor de C?
	c <-c * a;
	// ¿Y aqui?
	c <- c -1;
	//¿Y ahora?
FinProceso
```

```
Proceso modificacionVariables2
	//VARIABLES
	Definir a, b, c Como Real;
	//ALGORITMO
	a <- 3;
	b <- 2.0;
	c <-a * b;
	//¿Cual es el valor de C?
	c <-c + 1.5;
	// ¿Y aqui?
	c <- 7%2;
	//¿Y ahora?
FinProceso
```

**Expresións lóxicas:** Son aquelas expresións que devolven un resultado numérico

* **Operandos:** Constantes ou expresiones lóxicas
* **Operadores:**
  * **Relacionais:** ==, !=, <, >, >=, <=
  * **Lóxicos:** not, and, or y xor

### Operadores Relacionais

<figure><img src="/files/vTFNTkEYyEr0JUTF4gXk" alt=""><figcaption></figcaption></figure>

Imos ver algunhos exemplos:

```
Proceso operadoresRelacionales
	//VARIABLES
	Definir a, b, c Como Logico;
	//ALGORITMO
	a <- 1 > 2;
	//¿Cual es el valor de A?
	b <- 5 > 4;
	//¿Cual es el valor de B?
	c <- (3*2) > (5-1);
	//¿Cual es el valor de C?
FinProceso
```

```
Proceso operadoresRelacionales2
	//VARIABLES
	Definir a, b Como Entero;
	Definir 
	//ALGORITMO
	a <- 3
	b <- 5 
	c <- a==b;
	//¿Cual es el valor de C?
	c <- a!=b;
	//¿Y ahora?
	c <- (a+3)>=(b-2);
	//¿Y en este punto?
FinProceso
```

### Operadores Lóxicos

<figure><img src="/files/bZXHpXpAGv0CmMFaRt9K" alt=""><figcaption></figcaption></figure>

O resultado de realizar as operacions lóxicas entre duas variables é a seguinte:

<figure><img src="/files/41ZjqiR2uzKjCTyxkAWP" alt=""><figcaption></figcaption></figure>

Imos a revisar o seguinte fragmento de código:

```
Proceso operadoresLogicos
	//VARIABLES
	Definir a, b, c Como Logico;
	//EN PSeInt:
	// && es ^
	//ALGORITMO
	a <- VERDADERO;
	b <- FALSO;
	c <- a && b;
	//¿Cual es el valor de C?
	c <- a || b;
	//¿Cual es el valor de C?
	c <- a && !b;
	//¿Cual es el valor de C?
	c <- a && (6 > 3);
	//¿Cual es el valor de C?
	c <- (a && ((6-3) > 2)) || !(b && FALSO)
	//¿Cual es el valor de C?
	ESCRIBIR c; 
FinProceso
```

A sintaxe para estes operadores NOT, AND e OR en PSeInt seria a seguinte:

<figure><img src="/files/y9xk5bckqHTJEEN0rxb9" alt=""><figcaption></figcaption></figure>

## Estructuras de control

As estructuras de control son elementos do pseudocódigo que permiten dividir os algoritmos en "camiños", de tal forma que en función de unha condición lóxica, un programa pode ir por un camiño, por outro, ou repetir una instrucción un número de veces. Distinguimos as seguintes estructuras de control:

* **Condicionales:** Simples, dobles ou múltiples
* **Repetitivas:** mientras, repetir...mientras, para...hacer

<figure><img src="/files/pgqfk4OHibk1bWq9feqP" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://educacion.gitbook.io/programacion/ud1-introduccion-a-programacion/introducion-a-programacion/elementos-de-un-algoritmo.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
