You are on page 1of 6

SL-Ejemplos

1 de 6

http://www.cnc.una.py/sl/SL-ejemplos.html

30/09/2015 08:10 p.m.

SL-Ejemplos

2 de 6

Bienvenida

http://www.cnc.una.py/sl/SL-ejemplos.html

Programas fuente de ejemplo

Novedades
Documentos

Ejemplo 1. Clculo del Mximo Comn Divisor

Descarga de SLE

/*
* Clculo del mximo comn divisor utilizando el algoritmo

Licencia

* 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. Clculo del Mnimo Comn Mltiplo


/*
* Clculo del mnimo comn mltiplo, usando la relacin

*
*
* MCM(a,b) =

*
*

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

30/09/2015 08:10 p.m.

SL-Ejemplos

3 de 6

http://www.cnc.una.py/sl/SL-ejemplos.html

inicio
mientras (a
si ( a >
a = a
sino
b = b
}
}
retorna a
fin

<> b ) {
b ) {
- b
- a

Ejemplo 3. El clsico factorial


/*
* Este es el clsico ejemplo del clculo 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 clculo.
*/
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 versin ms compacta de fact(), que no imprime el

30/09/2015 08:10 p.m.

SL-Ejemplos

4 de 6

http://www.cnc.una.py/sl/SL-ejemplos.html

* rastro de los valores intermedios.


*/
inicio
retorna ifval ( n == 0,
1,
n*fact2(n-1))
fin

Ejemplo 4. Lectura y ordenacin de un vector


/*
* Lee un vector de 10 elementos numricos, ordena
* ascendentemente sus elementos y los imprime.
* La ordenacin 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), nmeros 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 sern iguales.
*/
M : matriz [5, 3] = {{7, 12, 5},
{1, 4, 22},
{6, 20, 13},
...
}
T : matriz [*,*] numerico

30/09/2015 08:10 p.m.

SL-Ejemplos

5 de 6

http://www.cnc.una.py/sl/SL-ejemplos.html

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 tamao, 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
/*
* Ntese que las filas y columnas estn 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. Conversin de decimal a hexadecimal


/*
* Lee un entero positivo e imprime el mismo nmero expresado
* en base 16.
*
* (c) jsegovia@cnc.una.py
*/
var

30/09/2015 08:10 p.m.

SL-Ejemplos

6 de 6

http://www.cnc.una.py/sl/SL-ejemplos.html

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

30/09/2015 08:10 p.m.