hp datas

DATAS

Después de haber buscado el programa “DATAS” por internet, de haber rastreado las antiguas páginas de las míticas asignaturas de Estructuras II y III de la Escuela Pública de Arquitectura de Madrid, de haber lloriqueado y sobornado a profesores y becarios… por fin nos hemos animado a reescribir este sencillo código línea por linea, variable por variable, comprendiéndolo, buscando fallos e intentando mejorar alguna cosa. Imposible. Ante la sencillez no se puede hacer más.

Código DATAS:

%%HP: T(1)A(D)F(.); DIR NN [[ 0 0 ]] BB [[ 2.45 0 1 1 0 38.36 ] [ 0 0 0 1 2 3 ] [ 2.45 0 1 1 0 38.36 ] [ 1 2 3 0 0 0 ]] PPAR { (-6.5,-3.1) (6.5,3.2) X 0 (0,0) FUNCTION Y } UE [[ 0 ] [ 57.5879599897 ] [ 0 ]] FB [[ 0 -93.982 -76.7519666668 0 0 -38.3759833334 ] [ 0 0 38.3759833334 0 -93.982 76.7519666668 ]] RESU « 1 Ži FOR n "BARRA " n + { { "NA" "NORMAL EN NUDO A" } { "VA" "CORTANTE EN NUDO A" } { "MA" "MOMENTO EN NUDO A" } { "NB" "NORMAL EN NUDO B" } { "VB" "CORTANTE EN NUDO B" } { "MB" "MOMENTO EN NUDO B" } } { 2 3 } FB IF 'Ži‰1' THEN ROW DROP ELSE n ROW- 2 ROLL DROP END V 6 LIST DUP INFORM NEXT 1 UE SIZE OBJ DROP2 FOR n "GRADO DE LIBERTAD " n + { { "UE" "VALOR DEL DESPLAZAMIENTO" } } { 1 1 } UE IF 'Žk‰1' THEN ROW DROP ELSE n ROW- 2 ROLL DROP END V 1 LIST DUP INFORM NEXT » RESULT « FB SIZE OBJ DROP2 UE SIZE OBJ DROP2 "GRADOS DE LIBERTAD" { { "Uno o ninguno" 1 } { "Dos o más" 2 } } 2 CHOOSE DROP  Ži Žj Žk « RESU CLEAR » » CST { INICIO BB NN CEP RESULT } ACCIONES « IF 'Žj<1' THEN 0 0 1 2 2 LIST ARRY NN STO ELSE 1 Žj FOR n CLLCD "Acción " n + MSGBOX "N° de grado libertad" "" INPUT OBJ "Valor de la acción" "" INPUT OBJ NEXT Žj 2 2 LIST ARRY NN STO END » BARRAS « 1 Ži FOR n CLLCD "Barra " n + MSGBOX "Proyección eje X" "" INPUT OBJ "Proyección eje Y" "" INPUT OBJ "E*A" "" INPUT OBJ "E*I" "" INPUT OBJ "Carga en eje X" "" INPUT OBJ "Carga en eje Y" "" INPUT OBJ "Libertad en X (nudo A)" "" INPUT OBJ "Libertad en Y (nudo A)" "" INPUT OBJ "Libertad giro (nudo A)" "" INPUT OBJ "Libertad en X (nudo B)" "" INPUT OBJ "Libertad en Y (nudo B)" "" INPUT OBJ "Libertad giro (nudo B)" "" INPUT OBJ NEXT Ži 2 * 6 2 LIST ARRY BB STO » KBFB « 1 6 FOR J BB { '2 *ŽN-1' J } GET NEXT  X Y EA EI QX QY « 'ƒ(X*X+Y*Y) ' EVAL 'X*X+Y*Y' EVAL 'X/ƒ(X*X+Y*Y)' EVAL 'Y/ƒ(X*X+Y*Y)' EVAL  L L2 C S « '(C*C*EA+ S*S*EI*12/L2)/L' EVAL 'S*C*(EA-12*EI /L2)/L' EVAL '-S*6* EI/L2' EVAL 3 PICK NEG 3 PICK NEG 3 PICK 5 PICK '(S*S* EA+C*C*EI*12/L2)/L' EVAL '6*C*EI/L2' EVAL 5 PICK 3 PICK NEG 3 PICK 10 PICK 5 PICK '4*EI/L' EVAL 13 PICK NEG 8 PICK NEG '2*EI/L' EVAL 15 PICK 10 PICK 5 PICK 21 PICK 21 PICK 21 PICK NEG 20 PICK 15 PICK 10 PICK 5 PICK 21 PICK 21 PICK NEG 25 PICK 20 PICK 15 PICK 10 PICK 5 PICK 21 PICK { 6 6 } ARRY 'KB' STO 'QX*SIGN(Y)*Y/2 ' EVAL 'QY*SIGN(X)* X/2' EVAL '(QY*SIGN (X)*X*X-QX*SIGN(Y)* Y*Y)/12' EVAL 3 PICK 3 PICK 3 PICK NEG { 6 1 } ARRY 'FB' STO » » » CEP1 « BB SIZE 1 GET 2 / 'NB' STO 0 'NE' STO 1 NB FOR B 1 6 FOR I BB { '2*B' I } GET  N « IF 'N> NE' THEN N 'NE' STO END » NEXT NEXT { NE 1 } 0 CON 'FE' STO { NE NE } 0 CON 'KE' STO 1 NB FOR ŽN KBFB { 6 NE } 0 CON 'B' STO 1 6 FOR I BB { '2*ŽN' I } GET  R « IF R THEN 1 'B(I,R)' STO END » NEXT B TRN KB * B * KE + 'KE' STO B TRN FB * FE + 'FE' STO NEXT 'B' PURGE "matriz KE ... OK" NN SIZE 1 GET  NF « IF 'NFŠ1' THEN 1 NF FOR I NN { I 1 } GET NN { I 2 } GET  N F « IF N THEN 'FE(N,1)+F' EVAL ' FE(N,1)' STO END » NEXT END » "vector FE ... OK" » CEP2 « FE KE / 'UE' STO "vector UE ... OK" » CEP3 « 1 NB FOR ŽN KBFB 1 6 FOR I BB { '2*ŽN' I } GET  R « IF R THEN ' UE(R,1)' EVAL ELSE 0 END » NEXT { 6 1 } ARRY  UB « '-FB+KB* UB' EVAL 'FB' STO BB { '2*ŽN-1' 1 } GET BB { '2*ŽN-1' 2 } GET  X Y « 'X/ƒ(X* X+Y*Y)' EVAL 'Y/ƒ(X *X+Y*Y)' EVAL  C S « 'FB(1 ,1)*C+FB(2,1)*S' EVAL 'FB(2,1)*C-FB( 1,1)*S' EVAL 'FB(3, 1)' EVAL 'FB(4,1)*C +FB(5,1)*S' EVAL ' FB(5,1)*C-FB(4,1)*S ' EVAL 'FB(6,1)' EVAL » » » NEXT { NB 6 } ARRY 'FB' STO "matriz FB ... OK" » CEP « CEP1 CEP2 CEP3 'NB' PURGE 'NE' PURGE 'KB' PURGE 'KE' PURGE 'FE' PURGE » INICIO « 'BB' PURGE 'NN' PURGE "Número de barras" "" INPUT OBJ "N° acciones en nudos" "" INPUT OBJ "N° grados de libertad" "" INPUT OBJ  Ži Žj Žk « BARRAS ACCIONES CLLCD "¿Calcular?" MSGBOX CLLCD CEP "Mostrar resultados" MSGBOX RESU CLEAR » » END

Lo dejamos escrito en bruto, pero también de modo ordenado y comprensible el código el código en pdf o para quien lo prefiera, directamente la variable o directorio para introducir un DATAS limpio en [HOME], sin más. La contraseña del archivo en formato .7z está al final del post. Es compatible con la HP50g, aunque se debe guardar copia original debido a los pequeños cambios de programación que ésta hace en el txt que devuelve. Ante cualquier duda acerca de la instalación, escritura del programa o copia en la calculadora, puedes escribirnos un correo con las dudas.

Contraseña del archivo .7z: satad2011

Leave a Comment