MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Optimizacion de codigo? (foro/showthread.php?t=15218)

Rodolfo Montiel Rivera 23/07/08 19:33:03

Optimizacion de codigo?
 
Saludos Aqui practicando algo de recursividad a mis viejos tiempos con C jajaja bueno pues realice un reacomodo de mayor a menor de una serie de 5 numeros claro esto podria ser loco pero pues era para entretenerme ok, ahora creen que se podria hacer mas chiquito mi codigo algo asi como optimizarlo u otra manera de hacerlo ?

*&---------------------------------------------------------------------*
*& Report ZDUMMY_RMR60 *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*

REPORT zdummy_rmr60.

DATA: BEGIN OF itab_almacen OCCURS 0,
r_num TYPE n,
END OF itab_almacen.

DATA: r_temp LIKE itab_almacen-r_num,
r_temp2 LIKE itab_almacen-r_num.

DATA: r_cont TYPE n VALUE 1.

DATA: r_nomcampo(6) TYPE c.

DATA: r_tabix LIKE sy-tabix.

FIELD-SYMBOLS <fs_valor> TYPE ANY.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-t00.

PARAMETERS: r_num1 TYPE n,
r_num2 TYPE n,
r_num3 TYPE n,
r_num4 TYPE n,
r_num5 TYPE n.

SELECTION-SCREEN END OF BLOCK b1.

AT USER-COMMAND.

CASE sy-ucomm.

WHEN '/&PROC'.

PERFORM reordenar_numero.

PERFORM imprimir.

WHEN 'BACK'.

LEAVE TO SCREEN 0.

ENDCASE.

START-OF-SELECTION.

SET TITLEBAR 'STANDARD'.
SET PF-STATUS 'MENU'.

PERFORM llenar_tabla.

PERFORM imprimir.

END-OF-SELECTION.

*&---------------------------------------------------------------------*
*& Form llenar_tabla
*&---------------------------------------------------------------------*
FORM llenar_tabla .

DO 5 TIMES.

CONCATENATE: 'r_num' r_cont INTO r_nomcampo.

ASSIGN (r_nomcampo) TO <fs_valor>.

MOVE: <fs_valor> TO itab_almacen-r_num.

APPEND itab_almacen.

r_cont = r_cont + 1.

ENDDO.

ENDFORM. " llenar_tabla

*&---------------------------------------------------------------------*
*& Form reordenar_numero
*&---------------------------------------------------------------------*
FORM reordenar_numero .

LOOP AT itab_almacen.

r_temp = itab_almacen-r_num.

r_tabix = sy-tabix + 1.

READ TABLE itab_almacen INDEX r_tabix.

IF r_temp LT itab_almacen-r_num.

r_temp2 = itab_almacen-r_num.

MOVE: r_temp TO itab_almacen-r_num.

MODIFY itab_almacen INDEX r_tabix.

r_tabix = sy-tabix - 1.

READ TABLE itab_almacen INDEX r_tabix.

itab_almacen-r_num = r_temp2.

MODIFY itab_almacen.

PERFORM reordenar_numero.

ENDIF.

ENDLOOP.

ENDFORM. " reordenar_numero

*&---------------------------------------------------------------------*
*& Form imprimir
*&---------------------------------------------------------------------*
FORM imprimir .

r_cont = 1.

LOOP AT itab_almacen.

WRITE: / 'Lugar : ', r_cont, '-->', itab_almacen-r_num.

r_cont = r_cont + 1.

ENDLOOP.

ENDFORM. " imprimir

zonanet 23/07/08 21:00:04

No se si es lo que busques pero yo lo haría así

FORM reordenar_numero .

SORT itab_almacen DESCENDING .

ENDFORM. " reordenar_numero

Rodolfo Montiel Rivera 23/07/08 21:43:04


mmm nop jajaja conozco el sort lo que queria era hacerlo mismo pero usando recursividad es solo un tipo de practica para ejercitar la mente XD .

Gracias de todas formas!!!

mcarrasco 28/07/08 19:12:53

Interesante...
 
Hola amigo, oye primera vez que veo un post de recursividad aqui. Muchos algoritmos salen mas rapido por ahi...

Con referencia al codigo que colocaste, veo que haces un loop, y dentro del loop haces la llamada recursiva.

Un loop es un recorrido iterativo. no deberias mezclar algoritmos iterativos con recursivos. Yo si uso recursividad n o uso while, do, loop, etc... de hecho, la declaracion de variables en las funciones recursivas no se estila (con excepcion de auxiliares).

Si quieres te recomiendo SCHEME o PROLOG. que son lenguajes totalmente recursivos.

Saludos...


Husos Horarios son GMT. La hora en este momento es 02:32:47.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web