Sei sulla pagina 1di 4

Sentencia condicional (si) En SL existen dos sentencias condicionales: sentencia Si y sentencia eval.

La primera posibilita elegir qu parte de un programa se ejecutar si cierta condicin se cumple. La segunda puede ayudar a mejorar la legibilidad de un grupo de sentencias si muy largas o complejas. La sintaxis bsica de la sentencia si es: si ( condicin ) { Sentencias Sino Sentencias La clusula sinoy las sentencias correspondientes son opcionales: solo se usan cuando el programa necesita tomar acciones si la condicin es falsa. Primer ejemplo Una caracterstica peculiar de los tringulos es que ninguno de sus lados puede ser superior a la suma de los otros dos. El siguiente programa verifica si tres valores ingresados por el usuario pueden ser utiliza dos como longitudes de un tringulo. El programa utiliza una construccin sencilla sisino /* Objetivo: determinar si tres valores numricos ingresados pro el usuario pueden ser los lados de un triangulo /* Inicio Var a , b, c : numrico Leer (a , b, c) si ( (a > b + c) or (b > a + c) or (c > a + b) ) { imprimir (\nNo pueden ser los lados de un tringulo) sino imprimir (\nPueden formar un tringulo) } Fin

Ciclo mientras Esta construccin posibilita ejecutar repetidamente un conjunto de Sentencias mientras se cumpla cierta condicin definida por el Programador. La sintaxis del ciclo mientras es: Mientras ( condicin ) { Sentencias... } Debemos notar que la condicin va siempre entre parntesis. Primer ejemplo Como ejemplo de uso del ciclo mientras escribiremos un programa para calcular cuntos guaranes recaudaremos en un sorteo si vendemos tckets numerados del 1000 al 9999, asumiendo que vendemos todos los nmeros. Cada tcket cuesta lo que su nmero indica, es decir, el tcket nmero 425 cuesta cuatrocientos veinticinco. /* OBJETIVO: Calcular cuanto se recaudara en un sorteo, si vendemos todos Los tickets numerados del 1000 al 9999. OBSERVACION: El autor de este programa no sabe que la formula directa Para calcular el total de guaranes es: Total = (ult_numero prim_numero + 1) / 2 * (prim_num + ult_numero) Por eso hace un programa largo usando ciclos. */ var Total : numrico num : numrico inicio total = 0 num = 1000 mientras ( num <= 9999 ) { total = total + num num = num + 1 } imprimir (\nSera recaudada la suma de Gs. , total); Fin

Ciclo repetir...hasta A diferencia del ciclo mientras, el ciclo repetir-hasta ejecuta al menos una vez las sentencias definidas en el cuerpo del ciclo, pues la verificacin para continuar o no en el ciclo se realiza al final, como puede apreciarse en la sintaxis: repetir sentencias... hasta ( condicion_de_fin ) Debemos observar que la condicin de fin va entre parntesis. Si bien esta forma de ciclo es utilizado con menor frecuencia que el ciclo mientras, hay situaciones en las que con l el algoritmo resultante es ms sencillo y directo. A continuacin un ejemplo: /* OBJETIVO: Separar cada digito de un entero positivo ingresado por el usuario, empezando por el primero de la derecha. Cada digito se imprime en una linea independiente. */ var num, dig : numerico inicio imprimir (\nIngrese un numero entero positivo:) leer (num) imprimir (\nLos digitos de , num, son:) /* Un caso especial lo representa el nmero 0, que consta de un solo digito (el 0!) Usando el ciclo mientras la solucion sera un poco ms larga. */ repetir dig = num % 10 imprimir (\n, dig) num = int (num / 10) hasta ( num == 0 ) fin

Ciclo desde Utilizamos el ciclo desde cuando conocemos previamente el nmero de veces que deseamos ejecutar un conjunto de instrucciones. La sintaxis es: desde variable_de_control = valor_inicio hasta valor_fin [paso incremento] { sentencias... } Al igual que el ciclo mientras, el conjunto de sentencias que forman parte de un ciclo desde puede que nunca se ejecute. Esto ocurrir si: El valor inicial es superior al valor final y el incremento es positivo, El valor inicial es inferior al valor final y el incremento es negativo. Ejemplo El siguiente programa imprime el cuadrado de los primeros 10 nmeros enteros positivos. /* OBJETIVO: Imprimir una tabla con el cuadrado de los primeros 10 nmeros enteros. */ var k : numrico inicio desde k=1 hasta 10 { imprimir (\n, k, :\t, k^2) } fin

El programa imprime: 1:1 2:4 3:9 4 : 16 5 : 25 6 : 36 7 : 49 8 : 64 9 : 81 10 : 100

Potrebbero piacerti anche