Menu

preguntas sobre funciones en PSeInt

Anonymous
2012-10-11
2021-11-09
  • Zaskar

    Zaskar - 2012-10-11

    En ninguno. Intenté buscar alguna sintaxis para que leyendo el pseudocódigo resulte obvio que significa y que sea fácil de recordar. Ahora que lo pienso creo (hace muucho que no lo uso) que vb hacia algo similar.

    La idea es no usar operadores o símbolos arbitrarios, sino algo que parezca natural acorde a su significado. Si encuentro o me proponen alguna mejor idea respetando esta consideración, se puede analizar.

     

    Last edit: Zaskar 2012-10-11
  • mncarbone

    mncarbone - 2014-03-13

    Consulta:
    ¿Se pueden definir el tipo de los parametros de los subprocesos?

     
  • mncarbone

    mncarbone - 2014-03-13

    En la versión "rebel" acabo de implementarlo con la estructura:

    Funcion Suma(a, b) Retorna Entero
        Retornar a + b;
    FinFuncion
    

    Y luego se puede hacer:

       z <- Suma(x, w)
    

    En tu ejemplo: ¿Como se haria la asignación en el caso de esas "salidas multiples"?

     
  • mncarbone

    mncarbone - 2014-03-13

    Por otro lado mi úlitma pregunta a Zaskar iba en referencia la posibilidad de definir el tipo de los parámetros de entrada. Por lo que veo sólo se puede decir si pasan "Por Referencia" o "Por Valor", pero no el tipo. Quisiera saber si está en los planes de futuras versiones.

     
  • Zaskar

    Zaskar - 2014-03-13

    También me parece bien lo de "retorna ....", pero no lo de poder retornar más de un valor (más allá de que complique la sintaxis, tampoco es una forma común de hacerlo en lenguajes reales). Respecto a los tipos de los argumentos, no implementé todavía una forma de especificar el tipo, porque cuando empecé con lo de subprocesos empecé por lo más básico, y la mayoría de los perfiles no obligan a definir tipos. Pero estaría bueno agregarlo como opcional y para eso escucho sugerencias respecto a la sintaxis.

     
  • mncarbone

    mncarbone - 2014-03-13

    Creo que la sintaxis más coherente sería:

    SubProceso NombeSub(a Como Entero, b Como Real Por Referencia) 
    ...
    

    Y alernativamente, siguiendo el esquema actual:

    SubProceso NombeSub(a Es Entero, b Es Real Por Referencia) 
    ...
    

    Siendo optativo el uso de los tipos para los perfiles flexibles

     

    Last edit: mncarbone 2014-03-13
  • mncarbone

    mncarbone - 2014-03-14

    También se puede en python:

    from math import *
    
    def stat(x):
        n = len(x);
        m = sum(x)/n;
        s = sqrt(sum((xi-m)**2/n for xi in x))
        return (m,s)
    

    Y en la shell de python:

    >>> values = [12.7, 45.4, 98.9, 26.6, 53.1]
    >>> (ave,stdev) = stat(values)
    >>> ave
    47.339999999999996
    >>> stdev
    29.412419145660223
    

    Es que se usa un tipo de dato "tupla" (una estructura de datos compuesta similar a un vector)

    En PSeInt "rebel edition" se pueden aprovechar los nuevos Registros.
    Tu ejemplo sería:

    Funcion  stat(x)
        Registro reg{ave,stdev}
        Vector coeficientes[5] de Reales
        n = long(x)
        m = suma(x)/n
        Para c=0 hasta n-1
            coeficientes[c] = (x[c]-m)^2/n
        FinPara
        reg->ave = m
        reg->stdev= raiz(suma(coeficientes))
        Retornar reg
    FinFuncion
    
    Inicio
        Vector values[5] de Reales
        values = {12.7, 45.4, 98.9, 26.6, 53.1}
        res <- stat(values)
        Mostrar res->ave
        Mostrar res->stdev
    Fin
    

    Claro que es necesario definir aparte las funciones long y suma para los vectores (las podes poner en un .psc aparte e importarlas con la instrucción Importar "path/al/archivo.psc"):

    Funcion long(vec)
        total=0
        Para Cada e de vec
            total = total +1
        FinPara
        Retornar total
    FinFuncion
    
    Funcion suma(vec)
        total = 0
        para cada e de vec
            total = total + e
        FinPara
        Retornar total
    FinFuncion
    
     

    Last edit: mncarbone 2014-03-14
  • JPabloHeGo

    JPabloHeGo - 2021-11-09

    Saludos y enhorabuena por el programa.

    ¿Se podría implementar la sobrecarga de funciones en PSeInt?
    En la versión 20210609 no lo permite.
    ¿Sería complicado de hacer?

     

Anonymous
Anonymous

Add attachments
Cancel





Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.