Minitutorial Comandos Dolist Dosubs Stream Revlist Sort Seq Map

Embed Size (px)

Citation preview

  • 8/18/2019 Minitutorial Comandos Dolist Dosubs Stream Revlist Sort Seq Map

    1/17

    Minitutorial de Comandos: DOLIST, DOSUBS, STREAM, REVLIST, SORT, SEQ, MAP - Luis Carlos Beas Bernuy

    Pág. 1 de 17

    MINITUTORIAL DE COMANDOS PARA

    EL MANEJO DE LOS

    PROCEDIMIENTOS

    Luis Carlos Beas Bernuy

    Dedicado a todos los que usan el pretexto de aprender mas sobre sus

    calculadoras para dejar de hacer sus obligaciones, y que vivan los vicios

    permitidos!!!

    Primer tutorial : Lima verano del 2010.

    Segundo tutorial : Lima otoño del 2010.

    a)  DOLIST.............................1

    b) DOSUBS.............................7

    c)  STREAM.............................10

    d) REVLIST............................12

    e)  SORT...............................12

    f)  SEQ................................13

    g) 

    MAP................................14

    Introducción

    Para ver bien todos los caracteres debes usar la fuente _CAS_HP48x-

    49x-50x_01, cualquier duda o corrección que me quieras hacer la puedes

    hacer en mi blog.

  • 8/18/2019 Minitutorial Comandos Dolist Dosubs Stream Revlist Sort Seq Map

    2/17

    Minitutorial de Comandos: DOLIST, DOSUBS, STREAM, REVLIST, SORT, SEQ, MAP - Luis Carlos Beas Bernuy

    Pág. 2 de 17

    PRO EDIMIENTOS

    Las listas son uno de los objetos mas versátiles con los que contamos,

    existen muchas herramientas para su manejo y también para el manejo de

    sus elementos (que también pueden ser listas), este manejo y versatilidad

    de las listas (junto con el uso de la pila) es uno de los puntos fuertes del

    lenguaje de programación UserRpl, tu puedes hacer programas mas

    pequeños, rápidos y elegantes si conoces bien los comandos que operan

    sobre los elementos de una lista y así evitar el uso de estructuras como

    FOR y otras, estos comandos que procesan los elementos de una lista se

    encuentran en el menú PROCEDURE, que se encuentra en el menú LIST

    que a su ves esta incluido en el menú PRG, los comandos mas

    interesantes son DOLIST, DOSUBS y STREAM de los cuales nos

    encargaremos esta ves.

    a) 

    DOLIST.- Se usa para aplicar un comando, función o programa a unalista o un grupo de listas.

  • 8/18/2019 Minitutorial Comandos Dolist Dosubs Stream Revlist Sort Seq Map

    3/17

    Minitutorial de Comandos: DOLIST, DOSUBS, STREAM, REVLIST, SORT, SEQ, MAP - Luis Carlos Beas Bernuy

    Pág. 3 de 17

    Para su correcto funcionamiento este comando necesita:

      Las listas sobre las cuales se desea operar, estas deben ser del

    mismo tamaño, por ejemplo:

     

    El número de listas antes introducidas “n ”, este es en realidad el

    número de elementos que va utilizar el comando o programa,

    que para continuar con nuestro ejemplo seria n=3:

      Y por ultimo el programa comando o función yo utilizare un

    programa que sume tres números, y quedaría así:

      Y por fin ya se puede usar el comando DOLIST

  • 8/18/2019 Minitutorial Comandos Dolist Dosubs Stream Revlist Sort Seq Map

    4/17

    Minitutorial de Comandos: DOLIST, DOSUBS, STREAM, REVLIST, SORT, SEQ, MAP - Luis Carlos Beas Bernuy

    Pág. 4 de 17

    Lo que el programa hace es tomar 3 elementos, los tres primeros

    de cada lista como si estuvieran en la pila, en el mismo orden en

    que se encuentran las listas a las cuales pertenecen aplica el

    programa y produciendo el primer elemento de la lista final, luego

    con los segundos elementos de cada lista procederá aplicando

    también a estos elementos el programa y su resultado es el

    segundo elemento de la lista final y así sucesivamente.

    El número n se puede omitir, es decir tener las listas y después el

    comando programa o la función cuando el argumento en el primer

    nivel de la pila es:

     

    Un comando, ejemplo:

      Un programa que contenga un solo comando, como puede ser:

  • 8/18/2019 Minitutorial Comandos Dolist Dosubs Stream Revlist Sort Seq Map

    5/17

    Minitutorial de Comandos: DOLIST, DOSUBS, STREAM, REVLIST, SORT, SEQ, MAP - Luis Carlos Beas Bernuy

    Pág. 5 de 17

    También los elementos pueden ser listas:

      O un programa que tenga la estructura de una función de

    Usuario.

    En estos casos donde se omite n DOLIST puede devolver el error

    Invalid User Function en el caso de que el programa sea vació o

    este programa no tenga la estructura de una función excepto

    claro en el caso de que el programa contenga un solo comando.

    También DOLIST produce Wrong Argument Count si el objeto en

    el primer nivel de la pila es un comando que acepta de 1 a 5

    argumentos de tipos no especificados como DUP, ROT,→

    LISTpor ejemplo.

  • 8/18/2019 Minitutorial Comandos Dolist Dosubs Stream Revlist Sort Seq Map

    6/17

    Minitutorial de Comandos: DOLIST, DOSUBS, STREAM, REVLIST, SORT, SEQ, MAP - Luis Carlos Beas Bernuy

    Pág. 6 de 17

    El comando DOLIST puedo o no devolver objetos a lista final como

    por ejemplo en:

    Cuyo resultado será:

    Nota: el último argumento puede ser el nombre de una variable

    global o local, que contenga un comando, programa o función.

    Pero lo que muchos se preguntaran es que hace internamente

    DOLIST, bien lo que hace es tomar los elementos de las lista que le

    correspondan a la iteración después los pone en la pila y ejecuta el

    programa y así sucesivamente por ultimo pondrá todos los objetos

    producidos en una lista si estos son 2 o mas si no solo devolverá un

    objeto, por ejemplo veamos:

  • 8/18/2019 Minitutorial Comandos Dolist Dosubs Stream Revlist Sort Seq Map

    7/17

    Minitutorial de Comandos: DOLIST, DOSUBS, STREAM, REVLIST, SORT, SEQ, MAP - Luis Carlos Beas Bernuy

    Pág. 7 de 17

    Aquí hay que notar dos cosas, la primera que hay un objeto en el

    nivel 5, que es el número 5, segundo que el programa usa tres

    objetos y nosotros solo pusimos 2 listas e indicamos su cantidad en

    el segundo nivel de la pila, bien al aplicar DOLIST ocurre que

    primero se llevan los primeros números de cada lista a la pila donde

    ya esta el 5 ocurrirá que en la pila se tendrán tres números y con

    estos si se puede aplicar el programa que hará: 5 2 5 * + y esto

    es 5+2*5=15 y pondrá este valor en la pila luego pondrá en la

    segunda iteración el 3 y el 6 donde ha quedado el 15 de la primera

    iteración y así tenemos otra vez 3 objetos para el programa que

    son 15 3 6 a los cuales se les hace * + que es lo mismo que

    15+3*6=33, que por ser un solo elemento no será devuelto comouna lista sino solo el objeto, al aplicar el comando DOLIST puedes

    comprobar que efectivamente el resultado es 33:

    Otro ejemplo:

  • 8/18/2019 Minitutorial Comandos Dolist Dosubs Stream Revlist Sort Seq Map

    8/17

    Minitutorial de Comandos: DOLIST, DOSUBS, STREAM, REVLIST, SORT, SEQ, MAP - Luis Carlos Beas Bernuy

    Pág. 8 de 17

    Aquí cada iteración produce 2 valores y todo el proceso 4 con lo

    que se producirá una lista con 4 valores:

    Espero que haya quedado claro.

    b) DOSUBS.- Se usa para aplicar secuencialmente un procedimiento a los

    elementos de una lista.

    Este comando usa:

      Una lista, que puede ser:

     

    El índice de trama n, que es el número de elementos que tomael comando, programa o función de la lista para cada una de sus

  • 8/18/2019 Minitutorial Comandos Dolist Dosubs Stream Revlist Sort Seq Map

    9/17

    Minitutorial de Comandos: DOLIST, DOSUBS, STREAM, REVLIST, SORT, SEQ, MAP - Luis Carlos Beas Bernuy

    Pág. 9 de 17

    iteraciones por ejemplo podría ser n=3, así para la primera ves

    tomara 1, 2 y 3; para la segunda vez 2, 3 y 4 y así

    sucesivamente.

      Y finalmente el comando programa o función:

    Y aplicando el comando DOSUBS resultaría:

  • 8/18/2019 Minitutorial Comandos Dolist Dosubs Stream Revlist Sort Seq Map

    10/17

    Minitutorial de Comandos: DOLIST, DOSUBS, STREAM, REVLIST, SORT, SEQ, MAP - Luis Carlos Beas Bernuy

    Pág. 10 de 17

    Igual que para el comando DOLIST número “n ”  se puede omitir

    cuando el argumento en el primer nivel de la pila es:

      Un comando.

      Un programa que contenga un solo comando.

      Un programa con la estructura de una función.

      Un nombre de variable local o global que contenga una de las

    anteriores.

    Durante la ejecución del comando DOSUBS la posición del primer

    elemento del grupo que se este usando se puede obtener usando el

    comando NSUB y el número de grupo que se esta usando con el

    comando ENDSUB, estos dos últimos comandos retornan UndefinedLocal Name si DOSUBS no esta activado, vemos un ejemplo:

    Al ejecutar el comando DOSUBS, para cada caso aplicará la siguiente

    fórmula:

     posicionresultado elemento  

    Con lo cual se obtiene:

  • 8/18/2019 Minitutorial Comandos Dolist Dosubs Stream Revlist Sort Seq Map

    11/17

    Minitutorial de Comandos: DOLIST, DOSUBS, STREAM, REVLIST, SORT, SEQ, MAP - Luis Carlos Beas Bernuy

    Pág. 11 de 17

    El comando DOSUBS en los casos donde se omita el índice de

    trama, puede devolver el error Invalid User Function el caso de que

    el programa sea vació o este programa no tenga la estructura de

    una función excepto claro en el caso de que el programa contenga

    un solo comando.

    También puede devolver Wrong Argument Count si el objeto en el

    primer nivel de la pila es un comando que acepta de 1 a 5

    argumentos de tipos no especificados como DUP, ROT, DUP2 por

    ejemplo.

    El comando DOSUBS funciona internamente de la misma manera

    que DOLIST.

    c)  STREAM.- Se usa para ejecutar un comando, programa o función sobre

    todos los elementos de una lista, se usa generalmente con comandos o

    programas que tomen dos valores y devuelvan uno.

    Usa una lista y un comando o un programa, como ejemplo:

    Tomara 1 y 2, los moverá a la pila, los sumara obtendrá 3 y despuésusara este resulta junto con el siguiente elemento que es 3 y hará lo

  • 8/18/2019 Minitutorial Comandos Dolist Dosubs Stream Revlist Sort Seq Map

    12/17

    Minitutorial de Comandos: DOLIST, DOSUBS, STREAM, REVLIST, SORT, SEQ, MAP - Luis Carlos Beas Bernuy

    Pág. 12 de 17

    mismo que hizo con 1 y 2, hasta completar todos los elementos, en

    otras palabras obtendrá la suma de todos los elementos.

    Con una lista que contenga los elementos ordenados de menor a mayor

    (puede usar el comando SORT) se puede obtener el Mínimo común

    múltiplo de una lista de números:

    Aplicando el comando STREAM se obtendría 48.

    El comando STREAM funciona internamente de la misma manera que

    DOLIST pero demos otra vez una explicación con un ejemplo STREAM

    mueve los 2 primeros elementos de la lista a la pila ejecuta elcomando o programa devuelve su resultado también a la pila en el

    siguiente paso mueve el tercer elemento a la pila (en el caso de existir

    este) y ejecuta nueva mente el comando o programa obviamente junto

    con lo que haya en la pila veamos un ejemplo anómalo por así decirlo:

    Noten la presencia del cero en el nivel 3, analicemos ahora el

    programa, este necesita tres números multiplicara los dos primeros y a

    este producto le sumara el tercero y por ultimo hará una duplica de

    este ultimo resultado, es decir que devuelve dos valores no olvidar queel programa toma 3 números y devuelve 2, bien STREAM en su

  • 8/18/2019 Minitutorial Comandos Dolist Dosubs Stream Revlist Sort Seq Map

    13/17

    Minitutorial de Comandos: DOLIST, DOSUBS, STREAM, REVLIST, SORT, SEQ, MAP - Luis Carlos Beas Bernuy

    Pág. 13 de 17

    primera ejecución moverá los dos primeros elementos a la pila el 1 y el

    2, como ya se había dicho, este movimiento hará que el cero pase al

    tercer nivel y tendremos a demás 1 en el segundo nivel y 2 en el

    primer nivel estos son los tres valores que necesita el programa 0 1 2

    y les aplicara * + DUP, es decir 0 1 2 * + DUP = 2 DUP = 2 2,

    después de esta primera ejecución tendremos 2 en el segundo nivel y 2

    en el primer nivel también; para la segunda ejecución del comando

    STREAM se mueve el siguiente elemento de la lista a la pila es decir

    el 3 así tendremos:

    3: 2

    2: 21: 3

    Que son los nuevos tres valores para que pueda ejecutarse

    correctamente el programa y continuará devolviendo dos valores y con

    el siguiente elemento completará los tres que se recitan y así

    sucesivamente hasta que al final devolverá dos objetos del mismo valor,

    como se puede probar al aplicar el comando STREAM a los datos de

    este ejemplo:

    d) REVLIST.- Debe a ver una lista en el primer nivel de la pila, y este

    comando invierte el orden de los elementos en la lista, no hay mucho

    que comentar vemos un ejemplo:

  • 8/18/2019 Minitutorial Comandos Dolist Dosubs Stream Revlist Sort Seq Map

    14/17

    Minitutorial de Comandos: DOLIST, DOSUBS, STREAM, REVLIST, SORT, SEQ, MAP - Luis Carlos Beas Bernuy

    Pág. 14 de 17

    → 

    e)  SORT.- Se aplica a una lista en el primer nivel de la pila y a demás

    todos los elementos de la lista deben ser del mismo tipo opera sobre

    los elementos de la lista, lo que hace es ordenar los elementos de la

    lista, si son números reales, enteros, enteros binarios o objetos con

    unidades estos serán ordenados de menor a mayor, por ejemplo:

    → 

    Lo mismo sucederá con los enteros y los enteros binarios.

    La lista puede contener nombres globales, nombres locales o cadenas de

    caracteres (strings) y en estos casos los ordenara en orden alfabético,

    como en:

    → 

    → 

    También podemos tener en el primer nivel una lista de listas y en este

    caso serán ordenadas por el primer elemento en cada lista:

  • 8/18/2019 Minitutorial Comandos Dolist Dosubs Stream Revlist Sort Seq Map

    15/17

    Minitutorial de Comandos: DOLIST, DOSUBS, STREAM, REVLIST, SORT, SEQ, MAP - Luis Carlos Beas Bernuy

    Pág. 15 de 17

     

    Como se puede ver claramente lo que importa aquí es solo el primer

    elemento de cada lista.

    f)  SEQ.- SEQ usa los siguientes argumentos:

    5: expresión en función del índice

    4: índice3: valor de arranque

    2: valor de parada

    1: salto

    La expresión en función del índice puede ser un programa o una

    expresión algebraica, el índice generalmente será un nombre global, el

    valor de arranque el de parada y el salto deben ser objetos del mismo

    tipo, do los tipos que acepte el bucle FOR STEP para su arranque y

    parada.

    Veamos un ejemplo:

    → 

    Otro:

    → 

  • 8/18/2019 Minitutorial Comandos Dolist Dosubs Stream Revlist Sort Seq Map

    16/17

    Minitutorial de Comandos: DOLIST, DOSUBS, STREAM, REVLIST, SORT, SEQ, MAP - Luis Carlos Beas Bernuy

    Pág. 16 de 17

    g)  MAP.- Este comando se encuentra en el catalogo de funciones, y se

    usa para aplicar un programa a cada elemento de una lista.

    Si el programa que se aplica devuelve un solo valor u objeto este valor

    u objeto será parte de la lista final como en:

    Y después de ejecutar MAP:

    Pero si en cambio el programa devuelve 2 o mas objetos estos serán

    incluidos en una lista y esta lista será el primer elemento de la lista

    final, como en:

  • 8/18/2019 Minitutorial Comandos Dolist Dosubs Stream Revlist Sort Seq Map

    17/17

    Minitutorial de Comandos: DOLIST, DOSUBS, STREAM, REVLIST, SORT, SEQ, MAP - Luis Carlos Beas Bernuy

    Pá 17 d 17

    Y el resultado es:

    El comando MAP es diferente de los anteriores vistos este ejecuta suprograma sobre el elemento que le corresponda.

    Ejemplos:

    1. 

    El promedio Ponderado:

    Entrada:

    2: { valores }

    1: { pesos }

    Salida1: promedio ponderado

    «

    SWAP OVER * …LIST SWAP …LIST / •NUM

    »

    Con valores:

    →