lunes, 12 de noviembre de 2012

Programando en Seudocodigo. SLE2

SEUDOCODIGO. SLE 2



Introducción
SL es un lenguaje diseñado para apoyar la formación profesional de
estudiantes de informática, proveyendo un entorno que acompañe el proceso
de construcción de algoritmos, desde los más sencillos hasta aquellos que
requieren técnicas avanzadas de programación. La sintaxis del lenguaje, sus
construcciones y demás características fueron cuidadosamente seleccionadas
para que el alumno se concentre en la búsqueda de soluciones y obvie
detalles específicos que seguramente tendrá ocasión de ver en otras etapas de
su aprendizaje.
El entorno de programación incluye un editor multiventanas con
posibilidades de compilación, ejecución y depuración de los programas,
apuntando a facilitar la experimentación y el pensamiento creativo del
alumno.
El lenguaje presenta características que lo hacen apropiado para expresar
algoritmos de las etapas iniciales del aprendizaje, pero simultáneamente reúne
un rico conjunto de construcciones que posibilitan el tratamiento de tópicos
más avanzados de estructuras de datos y programación modular.


3I n t r o d u c c i ó n a l l e n g u a j e S L
Comentarios iniciados con // se utilizan a menudo para explicar el
propósito de una variable.
Ejemplo:
programa cuadrado
//
// (Esto es un comentario!)
// Dado un número n, imprimir su cuadrado.
//
var
n, // valor proveido por el usuario
cuad : numerico // cuadrado de n
inicio
// Pidamos al usuario que ingrese un numero
leer (n)
// Calculemos el cuadrado de n para luego imprimirlo
cuad = n * n
imprimir (cuad)
fin
Segunda forma: Usando el par /* …  */
A diferencia de la doble barra, el comentario puede ocupar varias líneas,
es decir, el comentario termina solo cuando se encuentra la secuencia */ y
no cuando se llega al final de la línea.
Lo que sigue es el mismo programa que imprime el cuadrado de un
número, pero con comentarios multilíneas, combinados con el uso de la
doble barra.
programa cuadrado
/*
(Esto es un comentario!)
Dado un número n, imprimir su cuadrado.
*/
14I n t r o d u c c i ó n a l l e n g u a j e S L
var
n, // valor proveido por el usuario
cuad : numerico // cuadrado de n
inicio
/* Pidamos al usuario que ingrese un numero */
leer (n)
// Calculemos el cuadrado de n para luego imprimirlo
cuad = n * n
imprimir (cuad)
fin
Un comentario multilínea (delimitado por /* … */) puede contener otros
comentarios iniciados con doble barra, aunque no a otro multilínea, es decir,
no pueden anidarse.
Identificadores
Los identificadores son utilizados para dar nombre a los programas,
variables, subrutinas, tipos de datos, constantes y otros elementos de un
programa SL.
Existen algunas reglas a tener en cuenta en la creación de identificadores:
1. Deben comenzar con una letra o con el carácter ‘_’ (guión bajo).
2. Pueden tener hasta 32 caracteres.
3. No deben contener espacios.
4. La combinación de mayúsculas y minúsculas en los identificadores
hace que los mismos sean considerados diferentes. En otras palabras:
CANTIDAD, cantidad y Cantidad representan tres identificadores
distintos.
5. Pueden incluir las letras ñ y Ñ (eñe minúscula y mayúscula
respectivamente).
6. No pueden contener caracteres acentuados.
7. Pueden incluir combinaciones de letras y números y el carácter ‘_’
(guión bajo)
15I n t r o d u c c i ó n a l l e n g u a j e S L
Así, los siguientes son identificadores válidos:
peso total_puntos MAXCOLUMNAS Resultado
mat2 var_12_meses sgte_año
Los siguientes no son aceptables como identificadores (las explicaciones van
entre paréntesis):
2da_var (debe empezar con letra o guión bajo)
$prueba (debe empezar con letra o guión bajo)
cant alumnos (contiene un espacio)
tot-puntos (no puede contener guión)
Palabras reservadas
Las palabras utilizadas por SL para propósitos especiales son llamadas
“palabras reservadas”. Dado que las mismas tienen un significado específico
para el compilador de SL, no pueden ser utilizadas como identificadores.
Todas las palabras reservadas deben ser escritas siempre completamente en
letras minúsculas, de lo contrario el compilador SL no las reconocerá como
tales.
Tabla 4. Palabras reservadas de SL
and archivo caso const
constantes desde eval fin
hasta inicio lib libext
matriz mientras not or
paso subrutina programa ref
registro repetir retorna si
sino tipos var variables
vector
Delimitadores de sentencias
Las sentencias pueden ocupar una o varias líneas, es decir:
a = (b + c) * (b / y) +
(y / c)
es una sentencia válida, aunque ocupa dos líneas.
16I n t r o d u c c i ó n a l l e n g u a j e S L
Puede escribirse más de una sentencia en una sola línea, si se las separa por el
carácter punto y coma (‘;’). Así:
a = b + c; n = a / y
son dos sentencias escritas en una sola línea, separadas por el carácter punto
y coma (‘;’).
Las expresiones numéricas complejas o las sentencias muy largas pueden ser
libremente distribuidas en dos o más líneas para mejorar la legibilidad del
programa fuente SL.
También debemos señalar que las líneas en blanco y los espacios entre las
sentencias no son necesarios para la computadora interprete correctamente el
programa, por lo tanto podríamos omitirlas, pero al suprimirlos haremos
difícil a otras personas, e incluso a nosotros mismos, la comprensión de
nuestros programas.
17I n t r o d u c c i ó n a l l e n g u a j e S L
Estructura general de un programa SL
El siguiente diagrama muestra esquemáticamente las partes de un programa
SL
programa nombre_del_programa Esta especificación es opcional.
Const
declaracion de una o más constantes
Constantes, tipos de datos y variables
globales.
tipos
declaracion de uno o más tipos de datos
Cualquiera de estas cláusulas (const, tipos,
var) pueden aparecer ninguna o varias veces,
en cualquier orden.
var
declaracion de una o más variables
inicio
...
sentencias
...
fin
Aquí empieza la ejecución del programa.
Aquí termina la ejecución del programa.
subrutina sub1() retorna tipo_dato
const
...
tipos
...
var
...
inicio
...
sentencias
retorna (algun_valor)
fin
Las subrutinas van después del programa
principal, y a su vez pueden tener variables,
constantes y tipos de datos locales.
Pueden recibir cualquier cantidad de
parámetros. Si son funciones, retornan un
valor.
subrutina sub2 (ref p : tipo_dato, ...)
const
...
tipos
...
var
...
inicio
...
sentencias
...
fin
Los parámetros pueden ser pasados por
valor o por referencia.
18Tipos de datos básicos y constantes
literales
El tipo de dato de una variable determina qué valores pueden ser almacenados
en dicha variable y qué operaciones podemos realizar con ella. Por ejemplo,
si usamos una variable para almacenar la altura de una persona estamos
diciendo que dicha variable contendrá valores numéricos. En este caso
diremos que el tipo de la variable edad es numérico.
En SL todos los valores y variables tienen asociados un tipo de dato y el
compilador realizará verificaciones precisas para asegurar que las operaciones
realizadas sean consistentes. Si por ejemplo se escribe un programa que
contenga
a = “suma” + 10
el compilador señalará que existe un error pues sumar una palabra con 10 no
produce un resultado significativo. El compilador dirá que no existe
concordancia de tipos de datos pues, como veremos en seguida, “suma” es
una cadena mientras que 10 es un numérico.
19
Ca p í t u l o
4I n t r o d u c c i ó n a l l e n g u a j e S L
SL soporta tres tipos de datos básicos o fundamentales: numéricos, cadenas y
booleanos. Estos tipos representan valores simples para los que el lenguaje
tiene un rico conjunto de operadores y funciones predefinidas.
Existen además otros mecanismos para definir tipos de datos más complejos
que se explican en capítulo “Tipos de datos agregados”
Tabla 5. Tipos de datos básicos de SL
Tipo de dato
básico Descripción de los valores que puede almacenar
cadena Cualquier secuencia de caracteres ASCII, excepto el carácter NUL (valor ASCII 0). La
cadena vacía se representa por “” y su longitud es 0.
logico Los valores TRUE y FALSE, o sus sinónimos SI y NO respectivamente. Estos cuatro
identificadores son constantes predefinidas.
numerico Valores enteros y reales, con  signo o sin signo.
Las constantes literales
Se llaman constantes literales a aquellos números o cadenas que forman parte
del texto del programa.



Tabla 13. Precedencia de los operadores (continuación)
Precedencia Operadores
5 ==, <>, <, <=, >, >=
6 not
7 and
8 (menor precedencia) or
Los operadores que se encuentran en la misma línea tienen igual precedencia.
Si forman parte de una expresión o subexpresión no parentizada, se
evaluarán de izquierda a derecha.
Siguiendo la tabla anterior, la siguientes sentencias hacen que la variable
termine con el valor 31:
a = 2
b = 4 + a * 3 // b = 4 * (2 * 3) => 4 * 6 => 24
c = a ^ 2 * -b // c = (2 ^ 2) * -24 => 4 *-24 => -96
a = b - c % 10 + 1 // a = 24 - (-96 % 10) + 1 => 24 – (-6) + 1 => 31
Las expresiones complejas y el uso de paréntesis
Podemos utilizar paréntesis con dos propósitos:
 Para hacer que las expresiones sean más legibles.
La “abundancia” de paréntesis no tiene ningún impacto negativo sobre la
ejecución del programa y en cambio puede facilitar su comprensión, no
solo por parte de uno mismo sino por otros que deban entender el
programa después. Un ejemplo que muestra el uso de paréntesis con este
propósito es:
y = v0y * t + 1/2 * -g * t^2 // sin parentización “redundante”
y = (v0y * t) + ( (1/2)*(-g)*(t^2) )
 Para alterar el orden en que se evalúan las expresiones, si la precedencia
por defecto no produce el resultado que necesitamos. Veamos dos
ejemplos:
a) 3 * 2 + 1 // es 7, pero
3 * (2 + 1) // es 9
b) -2^2 // es -4, pero
(-2)^2 // es 4

No hay comentarios:

Publicar un comentario