Tipos de problemas de ingeniería

Introducción

Se ha registrado un lote de un nuevo tipo.





Se está revelando la personalidad del tipo.





Una vieja broma.





Desde hace 38 años, he tenido que resolver varios problemas elaborando programas adecuados. A lo largo de los años, la gama de tales tareas ha resultado ser muy amplia: desde programar el controlador AT90S2313 hasta un programa para convertir automáticamente el diccionario técnico ruso-alemán en alemán-ruso, y desde calcular la sección óptima del larguero hasta dibujar una vista de la superficie de la tierra desde una ventana desde la órbita utilizando el método de trazado de rayos hacia atrás.





A pesar de la variedad de tareas, todas ellas, quizás, se pueden atribuir a una clase, que convencionalmente llamo "ingeniería", ya que en su mayor parte operan con conceptos de carácter científico y técnico. Al resolver todos estos problemas, no vi ningún beneficio en el uso de conceptos como el tipo "abstracto", es decir, asignar alguna propiedad arbitraria a los objetos del programa. Normalmente, estas propiedades se representan internamente como números enteros cuando se traducen.





Se puede objetar que no veo el sentido en tales tipos porque en los lenguajes antiguos (como el PL / 1 que uso) no había escritura en el sentido moderno. No, existía el concepto de tipo. Por ejemplo, si en el mismo PL / 1 describe dos objetos que no coinciden, incluso si son del mismo tamaño, e intenta asignar uno al otro, obtendrá un mensaje de error predecible durante la compilación (Fig. 1).









Higo.  1. Escriba el error de falta de coincidencia en PL / 1 durante la compilación.
. 1. PL/1 .

, PL/1? , «» « IEEE-754». .





, . . . , IEEE-754. – . PL/1 «» «».





:





Declare (S1, S2) char(*) varying;
S1=S1||S2;
S1=S1+S2;

      
      



, , , , . , . , PL/1.





, «» , , , . , , , «» - . – , , – / . « »: , … , , ? « » , :





_=([2.6*-0.2]+++[/4]+[/4]-2*) mod 7
      
      



.





«» «» , , «» «». , , – «» . : «» «» - , «» «» «». «» «» , , .





, , , . ?





. , « » [1]. «» – , , - , Matlab Mathcad. PL/1 [2] , , , .





«» , ( , .. ), , , , , .





«» , («-») [3]: , (n+1) a, a1, a2,…an, k , (n+1-k) , 1, 2,… n-k, (n+1) .





- , .





, :





- L ( - ),





- M ( - ),





- T ( - ),





- Θ ( - ),





- I ( - ),





- J ( - ),





- N ( - ),





, , «» , : [x]=Ll Mm Tt Θθ Ii Jj Nn.





, «» , – , , . – .





«»

, , , . , - , - .. «» IEEE-754.





. , X1, X2, X3 [], [] [], X1=X2+X3, X2 0.01 X3 0.001, X1 1000.





– «» , .. «» . «» .





, , – . , «» , , .





«»

, – ( - ) ( - ).





. , – . () . , PL/1 sin, sind, . «» «» «» «», π/180.





, «» , , , sin , . , :





W=φ/t;    // ( )





V=R*W;    // ( )





, φ «» «», , W «» « », – « », « ».





«» , , . «» , (.. ). – «», .. . φ/t ( W) «» «, », R*W «» « ». , , sin(2*φ) - «» «».





«»

, , , «» . PL/1 IEEE-754 , .





«» , , Z=SQRT(X**2+Y**2), «» ( ) . . , -128 127, «» 8+9*2=26 .





«»

«» , «» .





«» . , , , .





«» .





- «» . - «» , - . , X**(1e0/3e0) «» X 1/3, .. .





, . , .. . «» , «» «» , .





, , «» , , , , . . (, ), . «» .





«»

«» ( ), , PL/1, :





Declare V float(53) [/];





, , , , , : , , , , , , , , . «».





:





Declare Mu float(53) [(1000*m)**3/c**2];







Declare Fi float(53) [/180*];







«» , %replace «» , :





%Replace







[]   by [1000*],







[]  by [3600*c],







[] by [1852*],







[] by [/];















Declare







      float(53) [/],







_ float(53) [];







%Replace «», «», «» «» «» , .





«»

«» , . , , , ?





«» , :





V=10 [/];





. - , . , , . :





Declare 

// 

g  float(53) static init(9.81e0) [/c**2],

v0 float(53) static init(10e0)   [/],

// 

m  float(53) [],

v  float(53) [/],
float(53) [*/**2];


v=v0;  F=g*m;
      
      



0. «» :





v=0;   F,m=0;







«»

PL/1 / : , read/write get/put.





, read/write - «» .





«» . – , «» , , , , , , .





put get «» get, .. , .





, PL/1 , .. «» , .. «» , «» , , :





Declare

X1 float(53) static init(10e0) [],

X2 float(53) defined(X1);

 

put skip list(X1,X2);
      
      



10000 10.





?TYPE «»

«» , , TYPE, «» . () ?TYPE, «» (.. ) .





, «» , «» , . «» , , :





put skip list(s/t,type(s/t));





, , :





Declare
float(53) static init(10) [],
float(53) static init(5)  [];


put skip list(s,?type,t,?type,s/t,?type);
      
      



(. 2):





Higo.  2. ¿Utiliza la variable incorporada? TYPE al mostrar los resultados
. 2. ?TYPE

«»

, , , «» . , , .. .





, , , , .





, , «» :





Declare







// -







Vmod entry((3) float(53)[]) returns(float(53)[]);







, «» ( «?»), .





Declare







//







Vmod0 entry((3) float(53)[?]) returns(float(53)[?]);







SQRT. , , «» , ½.





, , «» .





«»

?TYPE, . , «» (. 3). , , «» .





test:proc main;

%replace

[]  BY [1000*],

[] BY [3600*];

 

declare

s  float(53) static init(10) [],

t  float(53) static init(5)  [],

v  float(53) [/];

 

if s*t>v*t then stop;

      
      



«»

«» , , , . , «» , , «» .





, .. .





.





) , :





//







WEarth  float(53) static init(0.000072921158e0)      [/C],







//







Dpi     float(53) static init(6.28318530717958648e0) [],







// Epsilon/Mu







Em      float(53) static init(66072.1866e0)          [KM**2],







//







Mu      float(53) static init(398600.4e0)            [KM**3/C**2],







// 358







Am      float(53) static init(6736e0)                [KM],







//







Re      float(53) static init(6378.137e0)            [KM],







) , :





:





//---- +-180 ----







do i=1 to 3;







   vsg(i)=vsg0(i)/1000e0;       //







   vrg(i)=vrg0(i)/1000e0;       //







   if Lamseans(i) > 180e0 then Lamseans(i)-=360e0;







end i;







:





//---- +-180 ----







do i=1 to 3;







   vsg(i)=vsg0(i);     //







   vrg(i)=vrg0(i);     //







   if Lamseans(i) > _180 then Lamseans(i)-=_360;







end i;







:





BetaBal=60e0*(per2-per1)/(te2s-te1s)/2e0;   //







:





BetaBal=(per2-per1)/(te2s-te1s)/2e0;        //







) , , :





:





//---- ----







Radius  = J3-et1+dz1*dz1+J4*cos(ArgLat+ArgLat);







Radius *= Axe*(1e0+J7*tp);







:





//---- ----







Radius  = Axe*(1e0+J7*tp)* (J3-et1+dz1*dz1+J4*cos(ArgLat+ArgLat));







. , , , , :





//---- ----







do AxeOfPer=Am, i=1 to 4;                   // 358







 AxeOfPer=((Period/Dpi)**2*Mu)**(1e0/3e0)







         /(1e0-2e0/3e0*Em/AxeOfPer/AxeOfPer*(4e0*CosIncl*CosIncl-1e0));







end;







- :





//---- ----







Fi = Fi + Alz*sin(2e0*Fi);







Alz – , 1/298.257. , Fi , .. . «», , . «» «» .





PL/1 , «» :





- , ;





- , .





«» – , , , / . .





«» , , «» .





«» . «» . , «» «» . .





, - , (, sind) , (- ). .





Mars Climate Orbiter 23 1999 - « » . , «» , , , «-», .





1.       , , . . . , . . , 1989, . 182.





2.       .. « » RSDN Magazine #4 2011, . 15-21.





3. A. S. Romanov, A. V. Semikolenov, S.N. Taranenko, A.P. Teoría de Shakhorin de la semejanza y la dimensión. La capa límite. Publicación educativa electrónica de la Universidad Técnica Estatal de Moscú. NORDESTE. Bauman, 2011, pág. 8.












All Articles