Algoritmo primoEntreDosNumeros

Algoritmo primoEntreDosNumeros
variables
    min,max,primo:entero;
principio
    leerEntero(teclado,min);
    leerEntero(teclado,max);
    primo:=siguiente_primo(min);
    mientras que primo<=max hacer
        escribirEntero(pantalla,primo);
        primo:=siguiente_primo(primo+1)
    fmq
fin

Función siguiente_primo

función siguiente_primo(numero:entero) devuelve entero
{Precondición: numero es número natural. Postcondición: Devuelve el menor primo p que cumpla p>numero}
variables
    resultado:entero;
principio
    resultado:=numero;
    mientras que (NOT es_primo(resultado)) hacer
        resultado:=resultado+1;
    fmq
    devolver(resultado);
fin

Función es_primo

función es_primo(numero:entero) devuelve booleano
{Precondición: numero es número natural. Postcondición: devuelve VERDAD o FALSO en función de que numero sea primo o no}
variables
    primo:booleano;
    i:entero;
principio
    i:=2;
    primo:=VERDAD;
    mientras que (i<numero && primo) hacer
        si (numero MOD i)=0) entonces
            primo:=FALSO;
        fsi
        i:=i+1;
    fmq
    devolver(primo);
fin

Procedimientos

Un procedimiento es un subprograma que realiza operaciones sobre uno o más valores pasados como parámetros, y puede devolver cero, uno o múltiples resultados a través de parámetros marcados como entrada (E), salida (S) o entrada/salida (E/S).

A diferencia de una función, cuya llamada es una expresión que debe asignarse a una variable, la llamada a un procedimiento constituye una instrucción completa.

La precondición especifica qué valores deben satisfacer los parámetros de entrada al invocar el subprograma. La postcondición describe el estado garantizado de los parámetros de salida al finalizar. Un procedimiento o función es correcto cuando la postcondición se cumple para todos los valores válidos que satisfacen la precondición.

Declaración de procedimientos. Sintaxis

Procedimiento<nombre de procedimiento>(<lista parámetros formales>)
Variables
    <definición de variables locales>
Principio
    <acciones>
Fin

Llamada a un procedimiento

<nombre de procedimiento>(<lista de parámetros actuales>)

Procedimiento intercambiar

Procedimiento intercambiar (E/S p:entero, E/S q:entero)
variables
    x:entero;
principio
    x:=p;
    p:=q;
    q:=x;
fin

Algoritmo ordenMayorAMenor

Algoritmo ordenMayorAMenor
variables
    a,b,c:entero;
principio
    escribirCadena(pantalla,'Introduzca tres números enteros');
    leerEntero(teclado,a);
    leerEntero(teclado,b);
    leerEntero(teclado,c);

    si a<b
        intercambiar(a,b) {En a se queda el mayor de los dos}
    fsi
    si a<c
        intercambiar(a,c) {En a tengo el mayor de los tres}
    fsi

    si b<c
        intercambiar(b,c) {Así acabo de ordenar los dos números que me faltaban}
    fsi

    escribirCadena(pantalla,'Los números de mayor a menor son:');
    escribirEntero(a);
    escribirEntero(b);
    escribirEntero(c);
fin