GUIA DE ALGORITMOS

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)

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.

Tabla 4. Palabras reservadas de SL
and                         hasta                   paso                   sino
archivo                      inicio                 subrutina               tipos
caso                         lib                    programa               var
const                       libext                  ref                    variables
constantes                  matriz                  registro               vector
desde                       mientras                repetir
eval                         not                    retorna
fin                         or                      si
Tipos de datos básicos y constantes literales

Tipo de dato básico
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.
Lógico Los valores TRUE y FALSE, o sus sinónimos SI y NO respectivamente. Estos cuatro
identificadores son constantes predefinidas.
Numérico Valores enteros y reales, con signo o sin signo.

Las cadenas de caracteres
Una cadena es una secuencia de caracteres encerrados entre comillas o apóstrofes.
Los siguientes son ejemplos de cadenas:
 “Aprendiendo a programar...”
 “Conteste con ‘si’ o ‘no’, por favor”
 ‘María dijo: “¡Buenos días!”‘

Como puede observarse, cualquier carácter puede ser incluido como parte de la cadena,
excepto el delimitador. Si por ejemplo se desea incluir una comilla en un mensaje, debe
iniciarse y finalizarse la cadena con apóstrofe, y viceversa, o utilizar ”. Las constantes de
cadena deben caber completamente en una línea. Es decir, lo siguiente no es válido
porque la comilla que cierra la cadena aparecerecién en la segunda línea:

texto = “Aprender a programar
es divertido”

Si es necesario distribuir una constante de cadena en más de una línea, puede usarse el
operador de concatenación:

texto = “Aprender a programar” +
“es divertido”

Las secuencias de escape
Las “secuencias de escape” permiten insertar en un programa fuente caracteres que, de
ser tipeados directamente, serían mal interpretados por el compilador. La siguiente tabla
resume estas secuencias y sus significados.

n Inicio de la siguiente línea
r Inicio de la línea actual
t Tabulador

Uso de variables y constantes
Un programa SL debe declarar todas sus variables antes de usarlas. Si bien la declaración
de las variables puede resultar tediosa al principio

Declaración de variables simples
Para declarar una variable, se escribe el nombre seguido de dos puntos (‘:’), seguido del
tipo de dato:
var
edad : numerico
nombre : cadena

Si varias variables corresponden al mismo tipo, se las puede declarar de la siguiente
forma:
var
tot_mensual, tot_general : numerico
nombre, apellido : cadena

Los valores por defecto
SL da automáticamente un valor inicial a las variables, dependiendo de qué tipo sean. La
siguiente tabla resume los valores iniciales:

Cadena: Cadena vacía. Es decir, SL implícitamente hace variable = “”
Lógico: Valor lógico falso. Es decir, SL implícitamente hace variable = FALSE
Numérico: Cero. Es decir, SL implícitamente hace variable = 0




Operadores y expresiones

Operadores aritméticos
+ Suma a = b + 10
- Resta a = b – 10
* Multiplicación a = b * 10
/ División. a = 1234 / 10 // producirá 123,4
            a = int (1234 / 10) // producirá 123
% Módulo. Calcula el resto de dividir el primer operando por el segundo
      a = 10 % 3 // producirá 1
      a = 10.4 % 3.01 // producirá también 1
^ Potenciación. a = 2 ^ 4 // producirá 16
      a = 2 ^ 0.5 // producirá 1.41421
- Cambio de signo a = 10; b = -a // b tendrá –10
+ Identidad de signo. El signo del operando al que se aplica queda inalterado.
      a = -10; b = +a // b tendrá –10

Operadores lógicos
and Conjunción // está a entre 1 y 100?
si ( a >= 1 and a <= 100 )
{
...
}
or Disyunción extraño = 100 > 2000 or 1 < 10
La variable “extraño”, que debió se declarada como de tipo lógico, tendrá el valor de verdad
verdadero, ya que 1 es menor que 10, a pesar de que 100 no es mayor que 2000.
not Negación extraño = not(1 < 10)
La variable “extraño”, que debió se declarada como de tipo lógico, tendrá el valor de verdad falso.
Los paréntesis no son necesarios aquí, aunque deseables por claridad.
Operadores relacionales
< Menor que a < 20
> Mayor que a > 1
<= Menor o igual que a <= 20
>= Mayor o igual que a >= 20
== Igual que a == b
<> Distinto de a <> b

Sentencia condicional (si)
si ( condicion )
{
sentencias...
sino
sentencias...
}

La cláusula sino y las sentencias correspondientes son opcionales: solo se usan cuando el
programa necesita tomar acciones si la condición es falsa.


Ciclo mientras
mientras ( condición )
{
sentencias...
}

El bucle mientras permite ejecutar un bloque de instrucciones mientras que una
expresión lógica dada se cumpla, es decir, mientras su evaluación dé como resultado
verdadero.

La expresión lógica se denomina condición y siempre se evalúa antes de ejecutar el
bloque de instrucciones. Si la condición NO se cumple, el bloque NO se ejecuta. Si la
condición SÍ se cumple, el bloque SÍ se ejecuta, después de lo cual la instrucción vuelve a
empezar, es decir, la condición se vuelve a evaluar.

En el caso en que la condición se evalúe la primera vez como falsa, el bloque de
instrucciones no será ejecutado, lo cual quiere decir que el número de repeticiones o
iteraciones de este bloque será cero. Si la condición siempre evalúa como verdadera, la
instrucción se ejecutará indefinidamente, es decir, un número infinito de veces
Ciclo repetir...hasta
repetir
sentencias...
hasta ( condicion_de_fin )

El bucle REPETIR… HASTA es similar al bucle mientras, la diferencia radica en el momento
de evaluación de la condición.
En el bucle REPETIR… HASTA la condición se evalúa después de ejecutar el bloque de
instrucciones, por lo tanto, el bloque se ejecuta por lo menos una vez. Este bloque se
ejecuta nuevamente si la condición evalúa como verdadero, y no se ejecuta más si se
evalúa como falso.

Ciclo desde
desde variable_de_control = valor_inicio hasta valor_fin [paso
incremento]
{
sentencias...
}

El bucle desde ejecuta un bloque de instrucciones un número determinado de veces. Este
número de veces está determinado por una variable controladora que toma valores desde
un valor inicial hasta un valor final.

En cada bucle después de ejecutar el bloque de instrucciones, la variable controladora es
incrementada en un valor llamado incremento automáticamente y en el momento en
que la variable sobrepasa el límite superior el bucle termina.

De la definición de bucle desde se puede inferir que el bloque de instrucciones no se
ejecuta si el límite inferior es mayor al límite superior.
Ejercicios resueltos

1. Diseñar el algoritmo correspondiente a un programa que pida por teclado dos números
enteros y muestre su suma, resta, multiplicación, división y el resto (módulo) de la
división. Si la operación no es conmutativa, también se mostrará el resultado invirtiendo
los operadores.
2. Diseñar el algoritmo correspondiente a un programa que calcule el área y el perímetro
de un triángulo rectángulo dada la base y la altura.


/* para calcular el area de un triangulo retangulo se usa la
formula (base x altura)/2, el perímetro es base + altura +
hipotenusa y la hipotenusa se calcula con raíz cuadrada de                        Hipotenusa
(base al cuadrado x altura al cuadrado)*/                        Altura

var
         base: Numérico
         altura: Numérico                                                  Base
         area: Numérico
         hipotenusa: Numérico
         perímetro: Numérico
inicio
         cls()
         imprimir (“Digite la base y la altura del triangulo”)
         Leer (base, altura)
         area = base * altura / 2
         hipotenusa = Raiz (base^2 + altura^2)
         perimetro = base + altura + hipotenusa
         imprimir (“Área = “, area)
         imprimir (“Perímetro = “, perímetro)
FIN


Ejercicios Propuestos



1. Imprimir un listado con los números del 1 al 100 cada uno con su respectivo cuadrado

2. Imprimir los números de 1 a N (siendo N un número que se lee).

3. Leer un dato y almacenarlo en la variable n. Calcular el valor de 2 elevado a la potencia
n

4. Leer un dato y almacenarlo en la variable n, leer otro dato y almacenarlo en la variable

x. Calcular el valor de x elevado a la potencia n

Abc algoritmos

  • 1.
    GUIA DE ALGORITMOS Identificadores Losidentificadores 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) 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. Tabla 4. Palabras reservadas de SL and hasta paso sino archivo inicio subrutina tipos caso lib programa var const libext ref variables constantes matriz registro vector desde mientras repetir eval not retorna fin or si
  • 2.
    Tipos de datosbásicos y constantes literales Tipo de dato básico 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. Lógico Los valores TRUE y FALSE, o sus sinónimos SI y NO respectivamente. Estos cuatro identificadores son constantes predefinidas. Numérico Valores enteros y reales, con signo o sin signo. Las cadenas de caracteres Una cadena es una secuencia de caracteres encerrados entre comillas o apóstrofes. Los siguientes son ejemplos de cadenas:  “Aprendiendo a programar...”  “Conteste con ‘si’ o ‘no’, por favor”  ‘María dijo: “¡Buenos días!”‘ Como puede observarse, cualquier carácter puede ser incluido como parte de la cadena, excepto el delimitador. Si por ejemplo se desea incluir una comilla en un mensaje, debe iniciarse y finalizarse la cadena con apóstrofe, y viceversa, o utilizar ”. Las constantes de cadena deben caber completamente en una línea. Es decir, lo siguiente no es válido porque la comilla que cierra la cadena aparecerecién en la segunda línea: texto = “Aprender a programar es divertido” Si es necesario distribuir una constante de cadena en más de una línea, puede usarse el operador de concatenación: texto = “Aprender a programar” + “es divertido” Las secuencias de escape Las “secuencias de escape” permiten insertar en un programa fuente caracteres que, de ser tipeados directamente, serían mal interpretados por el compilador. La siguiente tabla resume estas secuencias y sus significados. n Inicio de la siguiente línea r Inicio de la línea actual t Tabulador Uso de variables y constantes Un programa SL debe declarar todas sus variables antes de usarlas. Si bien la declaración de las variables puede resultar tediosa al principio Declaración de variables simples Para declarar una variable, se escribe el nombre seguido de dos puntos (‘:’), seguido del tipo de dato:
  • 3.
    var edad : numerico nombre: cadena Si varias variables corresponden al mismo tipo, se las puede declarar de la siguiente forma: var tot_mensual, tot_general : numerico nombre, apellido : cadena Los valores por defecto SL da automáticamente un valor inicial a las variables, dependiendo de qué tipo sean. La siguiente tabla resume los valores iniciales: Cadena: Cadena vacía. Es decir, SL implícitamente hace variable = “” Lógico: Valor lógico falso. Es decir, SL implícitamente hace variable = FALSE Numérico: Cero. Es decir, SL implícitamente hace variable = 0 Operadores y expresiones Operadores aritméticos + Suma a = b + 10 - Resta a = b – 10 * Multiplicación a = b * 10 / División. a = 1234 / 10 // producirá 123,4 a = int (1234 / 10) // producirá 123 % Módulo. Calcula el resto de dividir el primer operando por el segundo a = 10 % 3 // producirá 1 a = 10.4 % 3.01 // producirá también 1 ^ Potenciación. a = 2 ^ 4 // producirá 16 a = 2 ^ 0.5 // producirá 1.41421 - Cambio de signo a = 10; b = -a // b tendrá –10 + Identidad de signo. El signo del operando al que se aplica queda inalterado. a = -10; b = +a // b tendrá –10 Operadores lógicos and Conjunción // está a entre 1 y 100? si ( a >= 1 and a <= 100 ) { ... } or Disyunción extraño = 100 > 2000 or 1 < 10 La variable “extraño”, que debió se declarada como de tipo lógico, tendrá el valor de verdad verdadero, ya que 1 es menor que 10, a pesar de que 100 no es mayor que 2000. not Negación extraño = not(1 < 10) La variable “extraño”, que debió se declarada como de tipo lógico, tendrá el valor de verdad falso. Los paréntesis no son necesarios aquí, aunque deseables por claridad.
  • 4.
    Operadores relacionales < Menorque a < 20 > Mayor que a > 1 <= Menor o igual que a <= 20 >= Mayor o igual que a >= 20 == Igual que a == b <> Distinto de a <> b Sentencia condicional (si) si ( condicion ) { sentencias... sino sentencias... } La cláusula sino y las sentencias correspondientes son opcionales: solo se usan cuando el programa necesita tomar acciones si la condición es falsa. Ciclo mientras mientras ( condición ) { sentencias... } El bucle mientras permite ejecutar un bloque de instrucciones mientras que una expresión lógica dada se cumpla, es decir, mientras su evaluación dé como resultado verdadero. La expresión lógica se denomina condición y siempre se evalúa antes de ejecutar el bloque de instrucciones. Si la condición NO se cumple, el bloque NO se ejecuta. Si la condición SÍ se cumple, el bloque SÍ se ejecuta, después de lo cual la instrucción vuelve a empezar, es decir, la condición se vuelve a evaluar. En el caso en que la condición se evalúe la primera vez como falsa, el bloque de instrucciones no será ejecutado, lo cual quiere decir que el número de repeticiones o iteraciones de este bloque será cero. Si la condición siempre evalúa como verdadera, la instrucción se ejecutará indefinidamente, es decir, un número infinito de veces
  • 5.
    Ciclo repetir...hasta repetir sentencias... hasta (condicion_de_fin ) El bucle REPETIR… HASTA es similar al bucle mientras, la diferencia radica en el momento de evaluación de la condición. En el bucle REPETIR… HASTA la condición se evalúa después de ejecutar el bloque de instrucciones, por lo tanto, el bloque se ejecuta por lo menos una vez. Este bloque se ejecuta nuevamente si la condición evalúa como verdadero, y no se ejecuta más si se evalúa como falso. Ciclo desde desde variable_de_control = valor_inicio hasta valor_fin [paso incremento] { sentencias... } El bucle desde ejecuta un bloque de instrucciones un número determinado de veces. Este número de veces está determinado por una variable controladora que toma valores desde un valor inicial hasta un valor final. En cada bucle después de ejecutar el bloque de instrucciones, la variable controladora es incrementada en un valor llamado incremento automáticamente y en el momento en que la variable sobrepasa el límite superior el bucle termina. De la definición de bucle desde se puede inferir que el bloque de instrucciones no se ejecuta si el límite inferior es mayor al límite superior.
  • 6.
    Ejercicios resueltos 1. Diseñarel algoritmo correspondiente a un programa que pida por teclado dos números enteros y muestre su suma, resta, multiplicación, división y el resto (módulo) de la división. Si la operación no es conmutativa, también se mostrará el resultado invirtiendo los operadores.
  • 7.
    2. Diseñar elalgoritmo correspondiente a un programa que calcule el área y el perímetro de un triángulo rectángulo dada la base y la altura. /* para calcular el area de un triangulo retangulo se usa la formula (base x altura)/2, el perímetro es base + altura + hipotenusa y la hipotenusa se calcula con raíz cuadrada de Hipotenusa (base al cuadrado x altura al cuadrado)*/ Altura var base: Numérico altura: Numérico Base area: Numérico hipotenusa: Numérico perímetro: Numérico inicio cls() imprimir (“Digite la base y la altura del triangulo”) Leer (base, altura) area = base * altura / 2 hipotenusa = Raiz (base^2 + altura^2) perimetro = base + altura + hipotenusa imprimir (“Área = “, area) imprimir (“Perímetro = “, perímetro) FIN Ejercicios Propuestos 1. Imprimir un listado con los números del 1 al 100 cada uno con su respectivo cuadrado 2. Imprimir los números de 1 a N (siendo N un número que se lee). 3. Leer un dato y almacenarlo en la variable n. Calcular el valor de 2 elevado a la potencia n 4. Leer un dato y almacenarlo en la variable n, leer otro dato y almacenarlo en la variable x. Calcular el valor de x elevado a la potencia n