|
| 1 | +# Operador de asignación = |
| 2 | +my ($name, $age) = 'Edalmava', 30; |
| 3 | + |
| 4 | +say("Mi nombre es $name y tengo $age"); |
| 5 | + |
| 6 | +# Operador defined-o // para obtener un valor alternativo si una variable aún no está establecida |
| 7 | +my $a = 'alpha'; |
| 8 | +say $a // 'gamma'; # Imprime alpha |
| 9 | + |
| 10 | +my $b; |
| 11 | +say $b // 'delta'; # Imprime delta |
| 12 | + |
| 13 | +# if - El código se ejecuta solo si se cumple una condición, por ej., una expresión se evalúa como True |
| 14 | +# Si la condición no se cumple, podemos especificar bloques alternativos de ejecución utilizando: |
| 15 | +# - else |
| 16 | +# - elsif |
| 17 | +my $número-de-asientos = 9; |
| 18 | + |
| 19 | +if $número-de-asientos <= 5 { |
| 20 | + say 'Soy un sedan' |
| 21 | +} elsif $número-de-asientos <= 7 { |
| 22 | + say 'Tengo 6 o 7 asientos' |
| 23 | +} else { |
| 24 | + say 'Soy un microbus' |
| 25 | +} |
| 26 | + |
| 27 | +#`( |
| 28 | + unless - La negación de if es unless. |
| 29 | + La negación en Raku se realiza con ! o con not. |
| 30 | +
|
| 31 | + unless (condición) se utiliza en lugar de if not (condición). |
| 32 | +
|
| 33 | + unless no puede utilizar la claúsula else. |
| 34 | +) |
| 35 | + |
| 36 | +my $limpiar-zapatos = False; |
| 37 | + |
| 38 | +unless $limpiar-zapatos { |
| 39 | + say 'Limpia tus zapatos' |
| 40 | +} |
| 41 | + |
| 42 | +# for - for itera sobre una serie de valores. |
| 43 | +my @array = 1,2,3; |
| 44 | + |
| 45 | +for @array -> $array-item { |
| 46 | + say $array-item * 100 |
| 47 | +} |
| 48 | + |
| 49 | +# Para iterar sobre rangos |
| 50 | + |
| 51 | +for 1..5 -> $n { |
| 52 | + say $n; |
| 53 | +} |
| 54 | + |
| 55 | +# Para cuerpo de bucle cortos se puede usar la forma posfija de for |
| 56 | +.say for 1..5; |
| 57 | + |
| 58 | +# given - En Raku given viene a ser switch en otros lenguajes |
| 59 | +my $var = 42; |
| 60 | + |
| 61 | +given $var { |
| 62 | + when 0..50 { say 'Menos o igual a 50' } |
| 63 | + when Int { say "es un Entero" } |
| 64 | + when 42 { say 42 } |
| 65 | + default { say "¿ejem?" } |
| 66 | +} |
| 67 | + |
| 68 | +# loop es otra forma de escribir un for. |
| 69 | +# Actualmente loop viene a ser el for utilizado en la familia de lenguajes de C. |
| 70 | +loop (my $i = 0; $i < 5; $i++) { |
| 71 | + say "El número actual es $i" |
| 72 | +} |
| 73 | + |
| 74 | +# while - se repite mientras la condición sea verdadera |
| 75 | +my $x = 0; |
| 76 | +while $x <= 10 { |
| 77 | + $x = prompt 'Introduce un número, que no sea mayor que 10: '; |
| 78 | + say "Has introducido $x."; |
| 79 | +} |
| 80 | +say "$x es mayor que 10."; |
| 81 | + |
| 82 | +# until - se repite hasta que la condición se haga verdadera |
| 83 | +$x = 0; |
| 84 | +until $x > 10 { |
| 85 | + $x = prompt 'Introduce un número que no sea mayor que 10: '; |
| 86 | + say "Has introducido $x."; |
| 87 | +} |
| 88 | +say "$x es mayor que 10."; |
| 89 | + |
| 90 | +# repeat - el bloque repeat siempre se ejecuta al menos una vez. |
| 91 | +$x = 100; |
| 92 | +repeat { |
| 93 | + $x = prompt 'Enter a number: '; |
| 94 | + say "You entered $x."; |
| 95 | +} while $x <= 10; # Usando while para la condición |
| 96 | +say "$x is bigger than 10."; |
| 97 | + |
| 98 | +$x = 0; |
| 99 | +repeat { |
| 100 | + $x = prompt 'Enter a number: '; |
| 101 | + say "You entered $x."; |
| 102 | +} until $x > 10; # Usando until para la condición |
| 103 | +say "$x is bigger than 10."; |
| 104 | + |
| 105 | +#`( |
| 106 | + RETO EXTRA |
| 107 | +) |
| 108 | + |
| 109 | +say ''; |
| 110 | +say '**************'; |
| 111 | +say '*****RETO EXTRA*****'; |
| 112 | +say '**************'; |
| 113 | +say ''; |
| 114 | + |
| 115 | +say "Usando for con rangos"; |
| 116 | + |
| 117 | +for 10 .. 55 -> $i { |
| 118 | + if $i %% 2 && $i != 16 && !($i %% 3) { |
| 119 | + say $i |
| 120 | + } |
| 121 | +} |
| 122 | + |
| 123 | +say "Usando loop"; |
| 124 | + |
| 125 | +loop ($i = 10; $i <= 55; $i++) { |
| 126 | + if $i %% 2 && $i != 16 && !($i %% 3) { |
| 127 | + say $i |
| 128 | + } |
| 129 | +} |
| 130 | + |
| 131 | +say "Usando la forma posfija de for - en una sola línea"; |
| 132 | +.say if $_ %% 2 && $_ != 16 && !($_ %% 3) for 10 .. 55; |
0 commit comments