Ir al contenido principal

Funciones (guía rápida)

PseudoD, como otros lenguajes de programación, implementa las clases y funciones. Veamos las funciones como código encerrado en un contexto, que permite su re-utilización por cualquier otro código:
utilizar entsal.pseudo

funcion SaludarA [ Saluda a alguien o algo ]
    adquirir nombre [ A quién saludar ]
    recibir_parametro nombre [ Recibimos el parámetro ]
    llamar ImprimirFormato
        {¡Hola %!\k}
        nombre
    finargs
    liberar nombre [ No olvidemos liberar la memoria ]
finfun

[ Ahora podemos utilizar la funcion ]
llamar SaludarA {Mundo} finargs [ ¡Hola Mundo! ]
llamar SaludarA {Foo} finargs [ ¡Hola Foo! ]
llamar SaludarA {John Doe} finargs [ ¡Hola John Doe! ]
Nos ahorramos escribir tres(3) veces <llamar ImprimirFormato ...>, claro, esto no es mucho, las funciones son más útiles cuando se van a llamar cientos de veces y poseen cientos de líneas de código.

La función <ImprimirFormato> está definida en la cabecera <entsal.pseudo> de la BEPD, y su declaración es similar a la siguiente:

funcion ImprimirFormato [ cadena, argumentos... ]
  • cadena es la cadena a formatear.
  • los argumentos son la lista de argumentos para el reemplazo.
Durante la impresión, cada aparición del texto <%> (comodín) será reemplazado por el siguiente argumento, y cada aparición de <\r>, <\n> y <\k> serán reemplazados por los caracteres retorno de carro, nueva linea y nueva linea del sistema respectivamente.

La nueva linea del sistema es una secuencia de caracteres que, indiferentemente del sistema del que se trabaje, siembre desplazará la linea, es decir: automáticamente un \r, \n o \r\n.

Una declaración de función es de la forma:

funcion nombre-de-la-funcion-o-metodo
código de la función
finfun

Cabe resaltar que en la linea de cierre de función, nunca debe haber algo mas que espacios en blanco y la palabra finfun. Puede recibir parámetros con la palabra clave recibir_parametro y devolver valores con devolver.

Nota: La sentencia devolver no rompe el flujo del programa, esto es, cualquier sentencia después de la instrucción devolver aún serán ejecutadas.

 Desde PseudoD v2.0.0 puedes reutilizar nombres de variables (desde PseudoD v2.0.0 se soportan ámbitos), así que declarar funciones nunca fue tan fácil.
 

Comentarios

Entradas más populares de este blog

Futuro PseudoD 2.2.0

La futura versión de PseudoD, PseudoD 2.2.0 tendrá cambios fundamentales en la estructura del lenguaje, más estos cambios serán compatibles con versiones anteriores, de manera que no romperán con la estructura de ningún programa existente. Los cambios son: Resolución de nombres Ahora usar referencias es más cómodo que nunca con la resolución de nombres de PseudoD 2.2.0: adquirir var fijar var a {Hola Mundo} adquirir ref fijar ref a var#NOMBRE escribir <ref> Este código imprime en pantalla el texto "Hola Mundo". Mejor sintaxis para las clases y funciones clase Persona hereda Objeto implementa @Saludable atributo nombre puntero padre puntero madre metodo saludar finclase metodo Persona#saludar con yo y nombre escribir {Hola } escribir nombre escribir {, yo soy } escribir <yo>#nombre nl finmetodo Reestructuración de la BEPD parte 1/2 Ahora la BEPD posee una mejor estrucutra y nuevas funciones.

Paginas oficiales

Como primera entrada, voy a dejar una lista de enlaces a las páginas oficiales de PseudoD: http://www.pseudod.com : página oficial de PseudoD. http://www.pseudod.com/wiki/ : wiki oficial de PseudoD. http://www.pseudod.sourceforge.net/ : página de desarrolladores. http://www.sourceforge.net/p/pseudod : proyecto en sourceforge. http://www.github.com/alinarezrangel/pseudod : proyecto en github. En estas páginas se encuentra gran parte de la documentación del lenguaje.

Desreferenciación en línea

PseudoD 2.2.0 ahora incluye también un mecanismo llamado resolución de nombres , también conocido como desreferenciación en línea o nombres resueltos . Esta característica permite al desarrollador dejar de usar las molestas clases PunteroInteligente y Referencia , ahorrando tiempo y recursos para tareas más importantes. En resumen, ahora puedes resolver un nombre sin la necesidad de llamar a funciones externas o utilizar módulos del NEA. Pero primero: ¿Como se resuelve un nombre? Un nombre resuelto es aquel que puede acceder de por si solo a una dirección de memoria virtual (de PseudoD) válida: Si, PseudoD no almacena la memoria en direcciones crudas (por ejemplo: void* en C y C++) sino en direcciones virtuales, por ello, incrementar un puntero siempre devolverá dos valores: o un puntero válido a otra variable de PseudoD, o un error (memory underflow/overflow). Algunos nombres resueltos son: mensaje , NULO y foo#bar . La definición de un nombre sin resolver es un poco más com