Bienvenida
Novedades
Documentos
Descarga
de SLE
Licencia
|
|
Programas
fuente de ejemplo
Ejemplo
1. Cálculo del Máximo Común Divisor
/*
* Cálculo del máximo común divisor utilizando el algoritmo
* de Euclides.
*
* (c) jsegovia@cnc.una.py
*/
var
a, b : numerico
inicio
imprimir ("Ingrese dos enteros positivos:")
leer (a, b)
si ( (a < 1) or (b < 1) ) {
terminar (“\nLos valores ingresados deben ser positivos”)
}
mientras (a <> b ) {
si ( a > b ) {
a = a - b
sino
b = b - a
}
}
imprimir (“\nEl MCD es “, a)
fin
Ejemplo
2. Cálculo del Mínimo Común Múltiplo
/*
* Cálculo del mínimo común múltiplo, usando la relación
*
* a * b
* MCM(a,b) = ------------
* MCD (a, b)
*
* (c) jsegovia@cnc.una.py
*/
var
a, b : numerico
inicio
imprimir ("Ingrese dos enteros positivos:")
leer (a, b)
imprimir (“\nEl MCM de “, a, “ y “, b, “ es “,
(a*b) / MCD (a, b))
fin
sub MCD (a, b : numerico) retorna numerico
inicio
mientras (a <> b ) {
si ( a > b ) {
a = a - b
sino
b = b - a
}
}
retorna a
fin
Ejemplo
3. El clásico factorial
/*
* Este es el clásico ejemplo del cálculo del factorial
* de un entero positivo n.
*
* (c) jsegovia@cnc.una.py
*/
var
n : numerico
inicio
imprimir ("\nCALCULO DE FACTORIAL",
"\n--------------------",
"\nIngrese un numero (0-n):")
leer (n)
si ( n >= 0 && n == int (n) ) {
imprimir ("\n\n\n", n, "!=", fact (n))
sino
imprimir ("\nNo definido para ", n)
}
fin
sub fact (n : numerico) retorna numerico
/*
* Calcula el factorial de n. Imprime los valores que
* se usaron en la etapa del cálculo.
*/
var
r : numerico
inicio
si ( n == 0 ) {
r = 1
sino
imprimir ("\n", n, "! = ", n, " x (", n-1, "!)")
r = n*fact(n-1)
}
retorna r
fin
sub fact2 (n : numerico) retorna numerico
/*
* Una versión más compacta de fact(), que no imprime el
* “rastro” de los valores intermedios.
*/
inicio
retorna ifval ( n == 0,
1,
n*fact2(n-1))
fin
Ejemplo
4. Lectura y ordenación de un vector
/*
* Lee un vector de 10 elementos numéricos, ordena
* ascendentemente sus elementos y los imprime.
* La ordenación se hace con el algoritmo de la “burbuja”.
*
* (c) jsegovia@cnc.una.py
*/
var
A : vector [10] numerico
m, n : numerico
inicio
imprimir (“\nIngrese “, alen (A), “ números separados por comas:\n”)
leer (A)
desde m=1 hasta alen(A)-1 {
desde n=m+1 hasta alen (A) {
si ( A [m] > A [n] ) {
intercambiar (A [m], A [n])
}
}
}
imprimir ("\nEl vector ordenado es:\n”, A)
fin
Ejemplo
5. Transpuesta de una matriz
/*
* Dado un arreglo bidimensional (matriz), genera e imprime
* su traspuesta.
*
* (c) jsegovia@cnc.una.py
*/
var
/*
* Las 3 últimas filas de M serán iguales.
*/
M : matriz [5, 3] = {{7, 12, 5},
{1, 4, 22},
{6, 20, 13},
...
}
T : matriz [*,*] numerico
inicio
impr_mat (“Matriz original:\n”, M)
transponer (M, T)
impr_mat (“\nLa traspuesta es:\n”, T)
fin
sub transponer ( M : matriz [*,*] numerico
ref R : matriz [*,*] numerico)
/*
* trasponer() produce la transpuesta de M y lo deposita
* en R.
* M puede tener cualquier tamaño, con tal de que
* sea bidimensional y rectangular (cantidad igual de
* elementos por cada fila).
* R debe ser un arreglo abierto.
*/
var
cant_filas = alen (M)
cant_cols = alen (M [1])
filas, cols : numerico
inicio
/*
* Nótese que las filas y columnas están en orden
* inverso en el siguiente dim().
*/
dim (R, cant_cols, cant_filas)
desde filas=1 hasta cant_filas {
desde cols=1 hasta cant_cols {
R [filas, cols] = M [cols, filas]
}
}
fin
sub impr_mat (msg : cadena; M : matriz [*,*] numerico)
var
k = 0
inicio
imprimir (msg)
desde k=1 hasta alen (M) {
imprimir (M [k], “\n”)
}
fin
Ejemplo
6. Conversión de decimal a hexadecimal
/*
* Lee un entero positivo e imprime el mismo número expresado
* en base 16.
*
* (c) jsegovia@cnc.una.py
*/
var
n = 0
hex = “”
k = 0
const
DIG_HEX = “0123456789ABCDEF”
inicio
imprimir (“Ingrese un entero positivo:”)
leer (n)
repetir
hex = DIG_HEX [n % 16 + 1] + hex
n = int (n/16)
hasta ( n == 0 )
imprimir (“\nHexadecimal=”, hex)
fin
|