Una precondición es una condición que ha de satisfacerse justo antes del comienzo de la ejecución de una porción de código (normalmente un subprograma o método).
Por ejemplo: el factorial de un número sólo está definido para valores positivos (o cero). Por tanto, un subprograma que calcule el factorial de un número exigirá que dicho número sea mayor o igual que cero.
Existen lenguajes de programación que incorporan construcciones sintácticas para reflejar las precondiciones de sus subprogramas o métodos. El cálculo del factorial en el lenguaje Eiffel, por ejemplo, quedaría así:

factorial(n: INTEGER): INTEGER
        -- Calcula el factorial de un número. No está definido para cantidades negativas.
    require
        no_negativo: n >= 0
    do
        if n = 0 then
            Result := 1
        else
            Result := n * factorial(n - 1)
        end
    end

En donde la palabra require introduce la precondición del método factorial.