Typen in technischen Problemen

Einführung

Ein Stapel eines neuen Typs wurde registriert.





Die Persönlichkeit des Typs wird offenbart.





Ein alter Witz.





Seit 38 Jahren muss ich verschiedene Probleme lösen, indem ich geeignete Programme aufstelle. Im Laufe der Jahre hat sich das Spektrum solcher Aufgaben als sehr groß herausgestellt: von der Programmierung des AT90S2313-Controllers bis zu einem Programm zur automatischen Konvertierung des russisch-deutschen technischen Wörterbuchs in deutsch-russisch und von der Berechnung des optimalen Stringer-Abschnitts bis zum Zeichnen einer Ansicht der Erdoberfläche aus einem Fenster aus der Umlaufbahn mit der Rückwärtsstrahlverfolgungsmethode.





Trotz der Vielfalt der Aufgaben können alle vielleicht einer Klasse zugeordnet werden, die ich üblicherweise als "Ingenieurwesen" bezeichne, da sie größtenteils mit Konzepten wissenschaftlicher und technischer Natur arbeiten. Bei der Lösung all dieser Probleme sah ich keinen Vorteil darin, Konzepte wie den Typ "abstrakt" zu verwenden, d. H. Programmobjekten eine beliebige Eigenschaft zuweisen. In der Regel werden diese Eigenschaften bei der Übersetzung intern als Ganzzahlen dargestellt.





Es kann argumentiert werden, dass ich den Punkt in solchen Typen nicht sehe, weil in alten Sprachen (wie dem von mir verwendeten PL / 1) überhaupt keine Eingabe im modernen Sinne erfolgte. Nein, das Konzept des Typs existierte. Wenn Sie beispielsweise in demselben PL / 1 zwei nicht übereinstimmende Objekte beschreiben, auch wenn sie dieselbe Größe haben, und versuchen, eines dem anderen zuzuweisen, wird während der Kompilierung eine vorhersehbare Fehlermeldung angezeigt (Abb. 1).









Zahl:  1. Geben Sie während der Kompilierung einen Fehlanpassungsfehler in PL / 1 ein.
. 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):





Zahl:  2. Verwenden der integrierten Variablen? TYPE bei der Anzeige der Ergebnisse
. 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. Shakhorin Theorie der Ähnlichkeit und Dimension. Grenzschicht. Elektronische Bildungspublikation der Staatlichen Technischen Universität Moskau. N.E. Bauman, 2011, p. 8.












All Articles