Skip to content

🕵️ Explorando Cairo 1.0 nuevos conceptos, sintáxis y traducciones

Notifications You must be signed in to change notification settings

Nadai2010/Nadai-Cairo-1.0

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Explorando Cairo 1.0

Nadai Cairo 1.0 es una recopilación de traducciones y pruebas realizadas sobre Cairo 1.0. Iremos añadiendo los grandes avances de algunos de los Grandes miembros de StarknetEs, sigue a esta comunidad Oficial de Starknet Español en la que encontrarás mucho contenido sobre Cairo.

Aquí hay veremos algunos ejemplos simples para mostrarle cómo funciona Cairo 1. A medida que continúe desarrollando Cairo 1, iré añadiendo mas trabajo propio, traducciones o de los compañeros de equipo para ir entrando en el nuevo Cairo. Al clonar la repo y ejecutar alguno de los ejemplos se le instalará deriectamente una version Cairo 1.0.0 alpha2, si se le complica puede seguir directamente el enlace de Cairo Installer 1.0 - dub.

Recuerde que todas estas pruebas son experimentales, primero clone la repo:

gh repo clone Nadai2010/Nadai-Cairo-1.0

Para ejecutar los ejemplos, use el siguiente comando:

cargo run --bin cairo-run -- -p ./<path_file> 

Aquí un ejemplo:

cargo run --bin cairo-run -- -p ./src/var/var_1.cairo 

Graph Graph

Después de 11 min aproximadmente se ha terminado la instalación, ahora procederemos a las pruebas y explicacion de cada contenido.


Soporte de verisones

Cairo Releases Parameter
v1.0.0-alpha-2 1.0.0-alpha-2

Contenido

Variables

Let

Declaración de una variable. Una vez que se asigna un valor, no se puede cambiar. Se convierte en una constante.

fn main() -> felt {
    let a = 1;
    a
}

Aquí podremos pasar para imprimir el resultado en nuestra consola:

cargo run --bin cairo-run -- -p ./src/var/var_1.cairo 

Graph

Mut

Declaración de una variable mutable. De lo contrario, el valor no se puede volver a modificar.

fn main() -> felt {
    let mut b = 2;
    b = 3
    b
}

En el caso de var_2.cairo podremos pasar para imprimir el resultado en nuestra consola:

cargo run --bin cairo-run -- -p ./src/var/var_2.cairo

Graph

Ref

Modificación de una variable que se pasa como referencia.

fn main() -> felt {
    let mut n = 1;
    b(ref n);
    n
}

fn b(ref n: felt){
    n = 1;
}

En el caso de var_3.cairo podremos pasar para imprimir el resultado en nuestra consola:

cargo run --bin cairo-run -- -p ./src/var/var_3.cairo

Graph

Constant

Declarando constante global.

const NUM: felt = 15;
fn main() -> felt {
    NUM
}

En el caso de var_4.cairo podremos pasar para imprimir el resultado en nuestra consola:

cargo run --bin cairo-run -- -p ./src/var/var_4.cairo

Graph

Bool

fn main() -> bool {
    let a = 25;
    if a == 15 {
        return bool::True(());
    } else {
        return bool::False(());
    }
}

En el caso de var_5.cairo podremos pasar para imprimir el resultado en nuestra consola:

cargo run --bin cairo-run -- -p ./src/var/var_5.cairo

Graph

Debugging

Print felt

fn main() -> felt {
    let a = 15;
    debug::print_felt('a: ');
    debug::print_felt(a);
    a
}

En el caso de debug_1.cairo podremos pasar para imprimir el resultado en nuestra consola:

cargo run --bin cairo-run -- -p ./src/debug/debug_1.cairo

Graph

También puede hacer pruebas sientase libre para ir testeando la nueva sintaxis de Cairo 1.0 y repetir a pasar el comando, por ejemplo:

fn main() -> felt {
    let a = 15;
    debug::print_felt('Hola Mundo soy Nadai: ');
    debug::print_felt(a);
    a
}

Graph

Conditional Statements

Equality Operator (==)

fn main() {
    let x = 25;
    if x == 0 {
        debug::print_felt('x is equal to 0');
    } else if x == 1 {
        debug::print_felt('x is equal to 1');
    } else {
        debug::print_felt('x is not equal to 0 or 1');
    }
}

En el caso de if_1.cairo podremos pasar para imprimir el resultado en nuestra consola:

cargo run --bin cairo-run -- -p ./src/if/if_1.cairo

Graph

Tambien podremos probar a darle un resultado distinto a los valores y ver si nos imprime el restulado correcto, ejemplo x == 25

fn main() {
    let x = 25;
    if x == 25 {
        debug::print_felt('x is equal to 0');
    } else if x == 1 {
        debug::print_felt('x is equal to 1');
    } else {
        debug::print_felt('x is not equal to 0 or 1');
    }
}

Graph

Comparison Operators (< > <= >=)

fn main() {
    let x = 10;
    let y = 20;
    if x < y {
        debug::print_felt('x is less than y');
    }
    if x <= y {
        debug::print_felt('x is less than or equal to y');
    }
    if x > y {
        debug::print_felt('x is greater than y');
    }
    if x >= y {
        debug::print_felt('x is greater than or equal to y');
    }
}

En el caso de if_2.cairo podremos pasar para imprimir el resultado en nuestra consola:

cargo run --bin cairo-run -- -p ./src/if/if_2.cairo

Graph

AND Operator

fn main() {
    let x = 25;
    if x != 0 & x >= 25 {
        debug::print_felt('x is not equal to 0');
        debug::print_felt('and');
        debug::print_felt('x is greater than or equal to 25');
    } else {
        debug::print_felt('x is equal to 0');
    }
}

En el caso de if_3.cairo podremos pasar para imprimir el resultado en nuestra consola:

cargo run --bin cairo-run -- -p ./src/if/if_3.cairo

Graph

OR Operator

fn main() {
    let x = 0;
    if x != 0 | x >= 25 {
        debug::print_felt('x is not equal to 0');
        debug::print_felt('or');
        debug::print_felt('x is greater than or equal to 25');
    } else {
        debug::print_felt('x is equal to 0');
        debug::print_felt('or');
        debug::print_felt('x is less than 25');
    }
}

En el caso de if_4.cairo podremos pasar para imprimir el resultado en nuestra consola:

cargo run --bin cairo-run -- -p ./src/if/if_4.cairo

Graph

Negation Operator (!)

Una función puede ser llamada en el condicional if

fn main() {
    let age = 15;
    if !is_greater(age) {
        debug::print_felt('is less');
    } else {
        debug::print_felt('is greater');
    } 
}

fn is_greater(age: felt) -> bool {
    age >= 18
}

En el caso de if_5.cairo podremos pasar para imprimir el resultado en nuestra consola:

cargo run --bin cairo-run -- -p ./src/if/if_4.cairo

Graph

También podra probar como hemos dicho y sentirse libre de expirmentar antes de la llegada de Cairo 1.0, aquí podremo indicar que si, que somo mayores de 18

fn main() {
    let age = 18;
    if !is_greater(age) {
        debug::print_felt('is less');
    } else {
        debug::print_felt('is greater');
    } 
}

fn is_greater(age: felt) -> bool {
    age >= 18
}

Graph

Arrays

Creating, Appending, and Accessing Elements

use array::ArrayTrait;

fn main() {
    let mut arr = ArrayTrait::new();
    arr.append(10);
    arr.append(11);
    arr.append(12);
    let pos2 = arr.at(2_usize);
    debug::print_felt(pos2);
}

En el caso de array_1.cairo podremos pasar para imprimir el resultado en nuestra consola:

cargo run --bin cairo-run -- -p ./src/array/array_1.cairo

Graph

Length (len)

use array::ArrayTrait;

fn main() -> usize {
    let mut arr = ArrayTrait::new();
    arr.append(10);
    arr.append(11);
    arr.append(12);
    arr.len()
}

En el caso de array_2.cairo podremos pasar para imprimir el resultado del len del array en nuestra consola:

cargo run --bin cairo-run -- -p ./src/array/array_2.cairo

Graph

Pop Front

use array::ArrayTrait;

fn main() {
    let mut arr = ArrayTrait::new();
    arr.append(10);
    arr.append(11);
    arr.append(12);
    
    match arr.pop_front() {
        Option::Some(x) => {
            debug::print_felt(x);    
        },
        Option::None(_) => {
            debug::print_felt('None');
        },
    };
}

En el caso de array_3.cairo podremos pasar para imprimir el resultado en nuestra consola:

cargo run --bin cairo-run -- -p ./src/array/array_3.cairo

Graph

Enumerations

enum MyEnumShort {
    a: felt,
    b: felt
}

fn main() -> felt {
    let es0 = MyEnumShort::a(10);
    match_short(es0)
}

fn match_short(e: MyEnumShort) -> felt {
    match e {
        MyEnumShort::a(x) => {
            x
        },
        MyEnumShort::b(x) => {
            x * 2
        },
    }
}

En el caso de enum_1.cairo podremos pasar para imprimir el resultado en nuestra consola:

cargo run --bin cairo-run -- -p ./src/enum/enum_1.cairo

Graph

Match Expressions

No se admite la coincidencia con un valor distinto de cero.

fn main() -> felt {
    let a = 25;
    match_test(a)
}

fn match_test(a: felt) -> felt {
    match a {
        0 => 15, 
        _ => 0,
    }
}

En el caso de match_1.cairo podremos pasar para imprimir el resultado en nuestra consola:

cargo run --bin cairo-run -- -p ./src/match/match_1.cairo

Graph

Autores y agredecimentos ✨

dpinones
@dpinoness

dub
@dub_zn

starknetes
@StarkNetEs

About

🕵️ Explorando Cairo 1.0 nuevos conceptos, sintáxis y traducciones

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages