Ir al contenido principal

Funciones (y procedimientos) en ZigLang

ZigLang es un lenguaje de programación con la "misma onda" de los "nuevos" lenguajes como Ballerina, V Lang u Odin, pues al igual que estos ha tomado lo mejor de los lenguajes "clásicos" como C, C++ y Java optando por hacer a un lado lo que no le era conveniente.

En este post veremos cómo crear funciones en éste lenguaje.

Pero antes de hacer nada, diferenciemos entre lo que es una función y un procedimiento.

Función: Es un bloque de código que recibe parámetros, ejecuta operaciones y devuelve un valor como resultado.

Se usa para obtener un cálculo, transformación o dato específico.

Miremos un ejemplo (pseudo código):

function suma(int x, int y): int{
  return x+y;
}

print "Suma (3,4) = %d\n", suma(3,4);

Procedimiento: Es un bloque de código que ejecuta acciones, pero no devuelve un valor directamente.

Se usa para tareas como imprimir en pantalla, guardar en base de datos o modificar variables globales.

Miremos un ejemplo (pseudo código):

procedure suma(int x, int y): void{
    int suma = x + y;
    print "Suma (%d,%d) = %d\n",x,y, suma;
}

call suma(4,5); -- 9

En Zig, las funciones son bloques de código que encapsulan lógica y pueden recibir parámetros y devolver valores. Su sintaxis es clara y estricta, lo que ayuda a escribir programas seguros y eficientes.

fn nombreFuncion(param1: Tipo1, param2: Tipo2) TipoRetorno {
    // cuerpo de la función
    return valor;
}

Además las funciones en Zig son tipadas explícitamente.

Hagamos algunos ejemplos.

Funciones en Zig Lang

1. Crearemos una función para sumar dos números enteros.

funciones.zig

const std = @import("std");

fn suma(x: i32, y: i32) i32 {
    return x + y;
}

pub fn main(init: std.process.Init) !void {
    const io = init.io;
    var buf: [128]u8 = undefined;
    var stdout = std.Io.File.stdout().writer(io, &buf);

    try stdout.interface.print("Suma (3,4) = {}\n", .{suma(3, 4)});
    try stdout.interface.flush();
}

Compilamos:

$ zig build-exe funciones.zig

Ejecutamos:

$ funciones.exe

Salida:

Suma (3,4) = 7

2. Función que reciba una cadena tipo ``string`` y evalue si es "casado" se le de un bono del 25% y en otro caso solo el 5%.

funciones.zig

const std = @import("std");

fn esCasado(edo_civil: []const u8) bool {
    if (std.mem.eql(u8, edo_civil, "casado")) {
        return true;
    } else {
        return false;
    }
}

pub fn main() void {
    const edo_civil = "casado";

    if (esCasado(edo_civil)) {
        std.debug.print("El empleado tiene un bono del 25%.\n", .{});
    } else {
        std.debug.print("El empleado tiene un bono del 5%.\n", .{});
    }
}

Compilamos:

$ zig build-exe funciones.zig

Ejecutamos:

$ funciones.exe

Salida:

El empleado tiene un bono del 25%.

3. Ejemplo de funciones como valor.

funciones.zig

const std = @import("std");

fn doble(x: i32) i32 {
    return x * 2;
}

pub fn main() void {
    const f = doble; // referencia a la función
    std.debug.print("Doble de 5 = {}\n", .{f(5)});
}

Compilamos:

$ zig build-exe funciones.zig

Ejecutamos:

$ funciones.exe

Salida:

Doble de 5 = 10

4. Ejemplo paso de funciones como parámetros.

funciones.zig

const std = @import("std");

// Definimos una función que recibe otra función como parámetro
fn aplicar(f: fn (i32) i32, valor: i32) i32 {
    return f(valor);
}

// Una función normal
fn doble(x: i32) i32 {
    return x * 2;
}

// Otra función
fn triple(x: i32) i32 {
    return x * 3;
}

pub fn main() void {
    std.debug.print("Aplicar doble a 5 = {}\n", .{aplicar(doble, 5)});
    std.debug.print("Aplicar triple a 5 = {}\n", .{aplicar(triple, 5)});
}

Compilamos:

$ zig build-exe funciones.zig

Ejecutamos:

$ funciones.exe

Salida:

Aplicar doble a 5 = 10
Aplicar triple a 5 = 15

En próximas entradas veremos una comparativa de Zig Lang con otros lenguajes.

Enlaces:

https://ziglang.org/
https://ewebik.com/programacion/funciones-y-procedimientos

Comentarios

Entradas populares de este blog

Odin language: el lenguaje de programación orientado a datos para un desarrollo de software sensato

En esta serie sobre lenguajes de programación hablamos de Odin , un lenguaje orientado a datos. Un nuevo lenguaje de programación que nos podrá recordar a lenguajes como C++, Python, Golang o hasta Rust. Instalación (Windows): 1 2 3 4 $ git clone https://github.com/odin-lang/Odin $ cd Odin $ git pull $ build.bat release Debemos asegurarnos de crear la variable de entorno: Nombre: ODIN_HOME Valor: C:\Users\HP\Documents\pruebasOdin\Odin Ejemplo 1. Como primer programa tendremos al clásico "Hola, mundo". holamundo.odin package holamundo import " core:fmt " main : : proc ( ) { fmt . println ( " ¡Hola, mundo desde Odin! " ) } Construimos: $ odin build holamundo . odin - file Ejecutamos: $ holamundo .exe Recordar que si usamos Visual Studio Code podemos instalar el plugin de Odin Language: https://marketplace.visualstudio.com/items?itemName=DanielGavin.ols Ejemplo 2. Programa que muestre las variables que pod...

Programación Windows Batch (CMD) parte 3

Crear ciclos para efectuar operaciones tediosas nos ahorrará tiempo para realizar otras tareas. En está ocasión veremos ciclos con FOR . ¿Cuál es la síntaxis de bucle FOR en Windows Batch? Si está dentro de un archivo *.bat : FOR %%variable IN (seq) DO operaciones Si lo ejecutamos en una terminal: FOR %variable IN (seq) DO operaciones Ejemplo 1 . Recorrer una secuencia de números del 0 al 5: recorrer.bat @ echo off FOR %%i in ( 0 1 2 3 4 5 ) DO echo Hola no. %%i pause Nos imprimirá en pantalla: Hola no. 0 Hola no. 1 Hola no. 2 Hola no. 3 Hola no. 4 Hola no. 5 ¿Puedo usar contadores? Si, se pueden usar. Ejemplo 2 . Uso de contadores: contador.bat @ echo off set numeros = 1 2 3 4 5 6 7 8 9 10 set cont = 0 for %%a in ( %numeros% ) do ( echo Hola no. %%a :: Contador set /a cont+ = 1 ) echo Total: %cont% Este código nos imprimirá, además de los mensajes Hola no. 0 ..., el total de valores conta...

z/OS, ¿Qué es? y ¿Cuáles son sus herramientas?

  En este post veremos las herramientas de z/OS de IBM. z/OS es un sistema operativo de mainframe desarrollado por IBM.  Es parte de la serie IBM z Systems (anteriormente conocida como System z), que se utiliza en los sistemas mainframe de IBM. z/OS es uno de los sistemas operativos más utilizados en el mundo empresarial para ejecutar aplicaciones críticas y procesar grandes volúmenes de datos. Características clave de z/OS: Escalabilidad : z/OS es conocido por su capacidad para manejar grandes cargas de trabajo y escalabilidad vertical, lo que permite agregar recursos de hardware para satisfacer las demandas de procesamiento. Confiabilidad y disponibilidad : z/OS está diseñado para ofrecer alta disponibilidad y confiabilidad. Incorpora características como redundancia y recuperación ante fallas para garantizar la continuidad de las operaciones. Seguridad : Proporciona una amplia gama de funciones de seguridad, como autenticación, autorización y auditoría, para proteger los...