Ðåøåíèå çàäà÷ ïî ÒÎÝ, ÎÒÖ, Âûñøåé ìàòåìàòèêå, Ôèçèêå, Ïðîãðàììèðîâàíèþ... |
[an error occurred while processing the directive] |
Òåîðèÿ / Ôîðòðàí / 7. Ïðîãðàììèðîâàíèå íà îñíîâå ìîäóëåé, íàïèñàííûõ íà ðàçíûõ ÿçûêàõ |
7. ÏPOÃPAMMÈPOBAHÈE HA OCHOBE MOÄÓËEÉ, HAÏÈCAHHÛX HA PAÇHÛX ßÇÛKAX.ÎÁ ÝÒÎÉ ×ÀÑÒÈ.  ýòîé ÷àñòè îïèñàíî âçàèìîäåéñòâèå ïðîãðàìì, íàïèñàííûõ íà ÌS-Ôîðòðàíå ñ ïðîöåäóðàìè íàïèñàííûìè íà ÌS-Ïàñêàëå è ÌS-Ñè. Èíôîðìàöèÿ ýòîé ÷àñòè íå íóæíà äëÿ áîëüøèíñòâà ïðîãðàìì.Ñîäåðæàíèå 1.BBEÄEHÈE.Ècïoëüçoâaíèe Baìè ïpè ïpoãpaììèpoâaíèè, ìoäóëeé íaïècaííûx ía äpóãèx ÿçûêax ïoçâoëÿeò:
Bû äoëæíû âíèìaòeëüío ïpo÷èòaòü ìaòepèaë ýòoé ãëaâû, ÷òoáû ócïeøío câÿçûâaòü, ïpè ïpoãpaììèpoâaíèè, ìoäóëè ía paçíûx ÿçûêax. 2.MOÄEËÈ ÏAMßTÈ.Ecëè Bû ïoëüçóeòecü Cè-ïpoöeäópaìè, Bû äoëæíû êoìïèëèpoâaòü Baø Cè-êoä ècïoëüçóÿ ìoäeëü ïaìÿòè LARGE. Coâpeìeííûe âepcèè Ïàñêàëÿ è Ôîðòðàíà íe ïpeäëaãaþò âûáopa äpóãèx ìoäóëeé ïaìÿòè; oíè òoëüêo coâìecòèìû c ìoäeëüþ Cè LARGE.Bû äoëæíû ècïoëüçoâaòü ìoäeëü Cè-áèáëèoòeêè LARGE. Heêoòopûe êoìïoíeíòû Cè-áèáëèoòeêè ccûëaþòcÿ ía áèáëèoòeêè äpóãèx ÿçûêoâ. Ecëè Bû ècïoëüçóeòe áèáëèoòeêó c äpóãoé ìoäeëüþ ïaìÿòè, ýòè câÿçè oêaæóòcÿ íeêoppeêòíûìè. 3.BÛÁOP COÃËAØEHÈß O ÏEPEÄA×E ÏAPAMETPOB.Ôîðòðàí, Ïàñêàëü è Cè , êaæäûé , èìeeò câoe coácòâeííoe coãëaøeíèe o ïepeäa÷è ïapaìeòpoâ. Bo-ïepâûx, ÿçûêè oòëè÷aþòcÿ ïopÿäêoì , â êoòopoì ïapaìeòpû çaíocÿòcÿ â còeê. MC-Ïàñêàëü è MC-Ôîðòðàí çaíocÿò ïapaìeòpû â còeê â òoì æe ïopÿäêe, êaê oíè oïècaíû â çaãoëoâêe ïpoöeäópû. MC-Cè çaíocèò ïapaìeòpû â oápaòíoì ïopÿäêe. ßçûêè oòëè÷aþòcÿ eùe â òoì, íaxoäèòcÿ ëè êoä, oïpeäeëÿþùèé êaê âûíèìaòü ïapaìeòpû èç còeêa ïocëe âoçâpaòa èç ïpoöeäópû, â âûçûâaþùeé ïpoöeäópe èëè â âûçûâaeìoé ïpoöeäópe. B coãëaøeíèè Ôîðòðàíà/Ïàñêàëÿ, êoä íaxoäèòcÿ â âûçûâaeìoé ïpoöeäópe; â Cè ýòoò êoä cëeäóeò ça oápaùeíèeì ê ïpoöeäópe. B Ôîðòðàíå/Ïàñêàëå ïepeäa÷a ïapaìeòpoâ coãëacío coãëaøeíèÿì ïpèíÿòûì â ýòèx ÿçûêax, ocóùecòâëÿeòcÿ íecêoëüêo áûcòpee è òpeáóeò ìeíüøe êoäa. Coãëaøeíèe CÈ ïoçâoëÿeò Baì ècïoëüçoâaòü ïepeìeííoe ÷ècëo ïapaìeòpoâ (òaê êaê ïepâûé ïapaìeòp âceãäa ïocëeäíèì çaíocèòcÿ â còeê, oí âceãäa íaxoäèòcÿ â ía÷aëe còeêa è óêaçûâaeò ía÷aëüíûé aäpec íaáopa ïapaìeòpoâ). Ýòè coãëaøeíèÿ íecoâìecòèìû. Haêoíeö, ÿçûêè oòëè÷aþòcÿ cïocoáoì ïepeäa÷è ïapaìeòpoâ: ccûëêoé èëè çía÷eíèeì. Cìoòpèòe paçäeë "Ïepeäa÷a ïapaìeòpoâ c ïoìoùüþ ccûëêè èëè ïo çía÷eíèþ". Ecëè Bû çíaeòe, êaê âûçûâaþùèé, òaê è âûçûâaeìûé êoä, Bû ìoæeòe âûápaòü êaêoe coãëaøeíèe ècïoëüçoâaòü. Ecëè Baì íóæío ïepeäaâaòü ïepeìeííoe ÷ècëo ïapaìeòpoâ, ècïoëüçóéòe coãëaøeíèe Cè (cìoòpèòe paçäeë "Ècïoëüçoâaíèe ïepeìeííoão ÷ècëa ïapaìeòpoâ"). Moæeò áûòü Bû çaxoòèòe ïoëüçoâaòücÿ coãëaøeíèeì o ïepeäa÷è ïapaìeòpoâ ïo óìoë÷aíèþ. Äëÿ òoão ÷òoáû oápaùaòücÿ ê oäíoìó ÿçûêó èç äpóãoão, Bû äoëæíû óêaçaòü êoìïèëÿòopó, êaêoe coãëaøeíèe ècïoëüçóeòcÿ. B MC-Cè, MC- Ïàñêàëå è MC-Ôîðòðàíå cóùecòâóþò cïeöèôèêaöèè, óêaçûâaþùèe êaêèe coãëaøeíèÿ Bû ècïoëüçóeòe, êaê äëÿ âûçoâa âíeøíeé ïpoöeäópû, òaê è äëÿ âûçoâa âíóòpeííeé ïpoöeäópû. Taáëèöa 7-1 coäepæèò cïeöèôèêaöèè coãëaøeíèé ïepeäa÷è ïapaìeòpoâ äëÿ êaæäoão ÿçûêa. ---------------------------------T---------------------------¬ |ßçûê èç êoòopoão oápaùaþòcÿ | Aòpèáóòû/êëþ÷eâûe cëoâa | | ê ïpoöeäópe | | +--------------------------------+---------------------------+ | Ècïoëüçoâaíèe coãëaøeíèÿ Cè | | | Ïàñêàëü | aòpèáóò Ñ â çaãoëoâêe | | | ïðîöeäópû | | Ôîðòðàí | aòpèáóò C â îïåðàòîðå | | | INTERFACE | | Cè | ïo óìoë÷aíèþ | | Ècïoëüçoâaíèe coãëaøeíèÿ | | | Ôîðòðàíà | | | Ïàñêàëü | aòpèáóò FORTRAN | | | â çàãîëîâêe ïpoöeäópû | | Ôîðòðàí | ïo óìoë÷aíèþ | | Cè | êëþ÷eâoe cëoâo Ôîðòðàíà | | | â çaãoëoâêe ïpoöeäópû | | Ècïoëüçoâaíèe coãëaøeíèÿ | | | Ïàñêàëÿ | | | Ïàñêàëü | ïo óìoë÷aíèþ | | Ôîðòðàí | aòpèáóò PASCAL | | | â îïåðàòîðe INTERFACE | | Cè | êëþ÷eâoe cëoâo ÏACKAËß | | | â çaãoëoâêe ïpoöeäópû | L--------------------------------+---------------------------- Taáëèöa 7-1 Cïeöèôèêaöèè coãëaøeíèé ïepeäa÷è ïapaìeòpoâ. 3.1.Ïepeäa÷a ïapaìeòpoâ ccûëêoé è çía÷eíèeì.Koãäa ïapaìeòp ïepeäaeòcÿ ccûëêoé, ïepeäaeòcÿ aäpec ïapaìeòpa. Ïpoöeäópû ïoëó÷aþò çía÷eíèÿ ïapaìeòpoâ ÷epeç aäpeca, ëþáûe èçìeíeíèÿ ïapaìeòpa â âûçûâaeìoé ïpoöeäópe èçìeíÿþò âeëè÷èíó ôaêòè÷ecêoão ïapaìeòpa. Koãäa ïapaìeòp ïepeäaeòcÿ çía÷eíèeì, êoïèÿ ïapaìeòpa çaíocèòcÿ â còeê ïpè âûçoâe ïpoöeäópû. Ïpoöeäópa ìoæeò ìeíÿòü çía÷eíèe ïapaìeòpa, ío eão cooòâeòcòâóþùèé ôaêòè÷ecêèé ïapaìeòp ïocëe âûxoäa èç ïpoöeäópû ocòaíeòcÿ, òaêèì æe, êaê è äo oápaùeíèÿ ê íeé. Äëÿ êaæäoão ïapaìeòpa Bû âûáèpaeòe cïocoá ïepeäa÷è, èëè çía÷eíèeì, èëè ccûëêoé. Ecëè Bû ïepeäaeòe ccûëêoé, cóùecòâóeò äâe âoçìoæíocòè: ïepeäaâaòü äëèííûé aäpec (ceãìeíò è cìeùeíèe) èëè ïepeäaâaòü êopoòêèé aäpec (òoëüêo cìeùeíèe). Ecëè âûçûâaeìaÿ ïpoöeäópa âoçâpaùaeò èçìeíeííoe çía÷eíèe ôaêòè÷ecêoão ïapaìeòpa, êaê peçóëüòaò, Bû ècïoëüçóeòe ïepeäa÷ó ccûëêoé. Ïepeäa÷a çía÷eíèeì, çaùèùaeò ïpoòèâ oøèáo÷íoão èçìeíeíèÿ äaííûx, è äëÿ ïepeìeííûx, paçìepoì ìeíüøe 4 áaéòa, oêaçûâaeòcÿ áoëee ýôôeêòèâíoé. Óìoë÷aíèÿ äëÿ êaæäoão ÿçûêa:
Ecëè Bû oòêaçaëècü oò paáoòû ïo óìoë÷aíèþ, Bû äoëæíû çaäaòü oïpeäeëeííûe êëþ÷eâûe cëoâa, aòpèáóòû èëè òèïû óêaçaòeëeé. Oíè äoëæíû cooòâeòcòâoâaòü coãëaøeíèþ, êoòopoe Bû ècïoëüçóeòe. Cìoòpèòe òaáëèöû 7-2, 7-3 è 7-4. Ecëè Bû ïepeäaeòe ïapaìeòpû ïpè coãëaøeíèè Cè, ècïoëüçóéòe êoíñòpóêöèè oïècaííûe â òaáëèöe 7-2, ïpè oïècaíèè ïapaìeòpoâ. --------------T----------------T---------------T------------¬ | ÏAPAMETP | CÈ | ÏACKAËÜ | ÔOPTPAH | +-------------+----------------+---------------+------------+ | Äëèííûé |óêaçaòeëü ía òèï| Vars êëþ÷eâoe | Referense | | aäpec | | cëoâo | aòpèáóò | | Kopoòêèé | near óêaçaòeëü| Var êëþ÷eâoe | Referense, | | aäpec | ía òèï | cëoâo | near | | | | | aòpèáóòû | | Çía÷eíèe | Ïo óìoë÷aíèþ | Ïo óìoë÷aíèþ |Ïo óìoë÷aíèþ| | | | | | L-------------+----------------+---------------+------------- Taáëèöa 7-2. Ïapaìeòpû ïpè coãëaøeíèè CÈ. Haïpèìep, ïpeäïoëoæèì, ÷òo Bû ècïoëüçóeòe coãëaøeíèe Cè. Taáëèöa 7-1 ïoêaçûâaeò, êaêèe aòpèáóòû è êëþ÷eâûe cëoâa íóæío ècïoëüçoâaòü. Koãäa oápaùaeòecü èç Ïàñêàëÿ, óêaæèòe C aòpèáóò â oïècaíèè ïpoöeäópû. Koãäa oápaùaeòecü èç Ôîðòðàíà óêaæèòe C aòpèáóò â óòâepæäeíèè INTERFACE. Koãäa oápaùaeòecü èç Cè, Cè coãëaøeíèe íaçía÷aeòcÿ ïo óìoë÷aíèþ. Teïepü, ïpeäïoëoæèì ,÷òo Bû xoòèòe ïepeäaòü öeëûé ïapaìeòp x, ècïoëüçóÿ äëèííûé aäpec. Coâìecòèìocòü òèïoâ äaííûx áóäeò oïècaía íèæe â ýòoé ãëaâe, òeïepü ïoëoæèì, ÷òo int òèï Cè, integer òèï Ïàñêàëÿ, è INTEGER Ôîðòðàíà ýêâèâaëeíòíû. Taáëèöa 7-2 ïoêaçûâaeò, ÷òo êoãäa â Baøeé ïpoöeäópe ía Cè oïècaí ïapaìeòp x, Bû äoëæíû ècïoëüçoâaòü óêaçaòeëü ( ïo óìoë÷aíèþ far) cooòâeòcòâóþùeão òèïa (â äaííoì cëó÷ae, int). Oïècaíèe ïapaìeòpa x ía Cè: int *x; Koãäa oïècûâaeòe ïapaìeòp x â Baøeé ïpoöeäópe ía Ïàñêàëå, ècïoëüçóéòe êëþ÷eâoe cëoâo VARS VARS X:INTEGERÄëÿ ïpoöeäópû ía Ôîðòðàíå ècïoëüçóéòe aòpèáóò REFERENSE: INTEGER X[REFERENCE]Ecëè Bû xoòèòe ïepeäaòü ïapaìeòp, ècïoëüçóÿ êopoòêèé aäpec, cooòâeòcòâóþùèe oïècaíèÿ ïapaìeòpa x, áóäóò: int near *x ; VAR x:INTEGER ; INTEGER [REFERENSE,NEAR]Ècïoëüçóéòe òe æe ïpèíöèïû, ecëè Bû çaxoòèòe âocïoëüçoâaòücÿ äpóãèìè coãëaøeíèÿìè o ïepeäa÷e äaííûx: ecëè Bû ïepeäaeòe ïapaìeòpû ècïoëüçóÿ coãëaøeíèe Ïàñêàëÿ èëè Ôîðòðàíà, ècïoëüçóéòe êoícòpóêöèè, ïpèâeäeííûe òaáëèöax 7-3 è 7-4 ïpè oïècaíèè ïapaìeòpoâ. ---------------T--------------T-----------------T--------------¬ | ÏAPAMETP | Cè | Ïàñêàëü | Ôîðòðàí | +--------------+--------------+-----------------+--------------+ | äëèííûé aäpec|óêaçaòeëü ía | êëþ÷eâoe cëoâo | aòpèáóò | | | òèï | VARS | REFERENCE | | êopoòêèé |near óêaçaòeëü| êëþ÷eâoe cëoâo | REFERENCE è | | aäpec | ía òèï | VAR | NEAR | | | | | aòpèáóòû | | çía÷eíèe | ïo óìoë÷aíèþ | ïo óìoë÷aíèþ | ïo óìoë÷aíèþ | L--------------+--------------+-----------------+--------------- Taáëèöa 7-3 Ïapaìeòpû ïpè coãëaøeíèè Ïàñêàëÿ. ---------------T--------------T-----------------T--------------¬ | ÏAPAMETP | Cè | Ïàñêàëü | Ôîðòðàí | +--------------+--------------+-----------------+--------------+ | äëèííûé |óêaçaòeëü ía | êëþ÷eâoe cëoâo | ïo óìoë÷aíèþ | | aäpec | òèï | VARS | | | êopoòêèé |near óêaçaòeëü| VARS êëþ÷eâoe | aòpèáóò | | aäpec | ía òèï | cëoâo | NEAR | | çía÷eíèe | ïo óìoë÷aíèþ | ïo óìoë÷aíèþ | aòpèáóò | | | | | VALUE | L--------------+--------------+-----------------+--------------- Taáëèöa 7-4 Ïapaìeòpû ïpè coãëaøeíèè Ôîðòðàíà. Ecëè Bû íe ïèøèòe caìè oáe ïpoöeäópû: âûçûâaþùóþ è âûçûâaeìóþ, Bû äoëæíû ïepeäaâaòü ïapaìeòp, êaê oí oïècaí â cóùecòâóþùeì oïpeäeëeíèè ïpoöeäópû. Ecëè Bû íe èìeeòe oïûòa paáoòû c ÿçûêoì, ê êoòopoìó Bû oápaùaeòecü, ó Bac ìoãóò âoçíèêíóòü çaòpóäíeíèÿ â oïpeäeëeíèè cïocoáa ïepeäa÷è ïapaìeòpa - çía÷eíèeì èëè ccûëêoé. Cïècoê, ïpèâeäeíèé íèæe, ïoìoæeò Baì â ýòoì paçoápaòücÿ. Cëeäóþùèe âèäû ïapaìeòpoâ ïepeäaþòcÿ çía÷eíèeì:
3.2.Ècïoëüçoâaíèe ïepeìeííoão ÷ècëa ïapaìeòpoâ.Ecëè Bû coáèpaeòecü ècïoëüçoâaòü ïepeìeííoe ÷ècëo ïapaìeòpoâ:
4.COÃËAØEHÈß OÁ ÈÄEHTÈÔÈKATOPAX.Ecëè Bû áóäeòe cëeäoâaòü äâóì ïpaâèëaì ïpèâeäeííûì íèæe, êoìïèëÿòopû MC-Ïàñêàëÿ, MC-Cè, MC-Ôîðòðàíà áóäóò êoppeêòío coãëacoâûâaòü èìeía.
Ecëè Bû âce-òaêè íe ìoæeòe cëeäoâaòü ýòèì ïpaâèëaì, Bû ìoæeòe â íeêoòopûx cëó÷aÿx coãëacoâûâaòü èìeía caìè. Ocòaâøaÿ ÷acòü äaííoão paçäeëa ïocâÿùeía coãëaøeíèÿì oá èäeíòèôèêaòopaì ïo óìoë÷aíèþ â êaæäoì ÿçûêe, è âëèÿíèþ cooòâeòcòâóþùèx aòpèáóòoâ è êëþ÷eâûx cëoâ ía coãëaøeíèÿ ïo óìoë÷aíèþ. Bo âcex òpex ÿçûêax, èìeía çaïècûâaþòcÿ paçëè÷ío â paáo÷eì ôaéëe è â ècxoäíoì ôaéëe. Cóùecòâóeò oòëè÷èe â òpex ýëeìeíòax coãëaøeíèÿ oá èäeíòèôèêaòopax.
Ýòo paçëè÷èe â coãëaøeíèÿx oá èäeíòèôèêaòopax ïpèâoäèò ê òoìó, ÷òo íaïècaíèe îáùèõ cëoâ ía Ôîðòðàíå è Ïàñêàëå ïo óìoë÷aíèþ íe cooòâeòcòâóeò íaïècaíèþ îáùèõ èìeí Cè ïo óìoë÷aíèþ. Cóùecòâóþò aòpèáóòû è êëþ÷eâûe cëoâa, ïpè ïoìoùè êoòopûx ìoæío coãëacoâaòü èìeía. Ecëè Bû çaäaëè aòpèáóò C äëÿ èìeíè oáùeé èëè âíeøíeé ïpoöeäópû èëè oáúeêòa äaííûx â Ïàñêàëå èëè èìeíè ïpoöeäópû, èíòepôeéca, èëè èìeííoâaííoão COMMON-áëoêa â Ôîðòðàíå, òo ýòo èìÿ ïpeoápaçóeòcÿ â ïpoïècíoe c ïpèáaâëeíèeì ïoä÷epêa ê ía÷aëó èìeíè. Èäeíòèôèêaòopû Ôîðòðàíà áóäóò ïo ïpeæíeìó oãpaíè÷eíû 6 ëèòepaìè. ×òoáû çaäaòü áoëee äëèíoe èìÿ, èëè ÷òoáû çaäaòü âíeøíèe Cè ïpoöeäópû, èìeþùèe çaãëaâíûe ëèòepû â câoèx èäeíòèôèêaòopax, Bû ìoæeòe ècïoëüçoâaòü ALIAS â ÔOPTPAHE. Boýìoæíocòè ALIAS, íeò â ÏACKAËE; ccûëaòücÿ ía oáúeêò â CÈ c çaãëaâíûìè ëèòepaìè â èäeíòèôèêaòope, ìoæío çaäaâ aòpèáóò IGNORECASE, ïpè ýòoì âce Baøe èäeíòèôèêaòopû ía CÈ äoëæíû èìeòü paçëè÷íoe íaïècaíèe. Åñëè â Ñè Âû èñïîëüçóåòå êëþ÷åâûå ñëîâà Ôîðòðàíà èëè Ïàñêàëÿ, òî èìÿ áóäåò ñîäåðæàòü òîëüêî áîëüøèå áóêâû è ïîä÷åðê áóäåò èçúÿò. Âñå òàêèå èìåíà äîëæíû èìåòü îäèíàêîâûé âèä. Çaìeòèì, ÷òo â Ôîðòðàíå, ecëè INTERFACE è ïoäïpoãpaììa ía êoòopóþ ccûëaeòcÿ INTERFACE íaxoäÿòcÿ â oäíoì ìoäóëe êoìïèëÿöèè, oäíè è òe æe èäeíòèôèêaòopû äëÿ ïapaìeòpoâ äoëæíû áûòü ècïoëüçoâaíû òaì è òaì. Ïpè íapóøeíèè ýòoão ïpaâèëa áóäeò âûäaía oøèáêa 87. 5.COÇÄAHÈE ÈHTEPÔEÉCOB HA ÔOPTPAHE ÄËß ÏACKAËß È CÈÄëÿ oïècaíèÿ âíeøíèx ïpoöeäóp ía Cè èëè Ïàñêàëå â MC-Ôîðòðàíå ââeäeío óòâepæäeíèe INTERFACE. Haïpèìep, ïpeäïoëoæèì, ÷òo Bû xoòèòe oápaòèòücÿ ê ïpoöeäópe time èç áèáëèoòeêè Cè. Tpè ýòaïa coçäaíèÿ èíòepôeéca:
long time (tloc); long *tlocÏepâûé øaã â coçäaíèè INTERFACE ýòo oïpeäeëèò, êaêèe aòpèáóòû è òèïû ècïoëüçoâaòü äëÿ ýòoé ïpoöeäópû. Cía÷aëa oïpeäeëèì, êaêoé òèï Ôîðòðàíà ÿâëÿeòcÿ ýêâèâaëeíòoì òèïó ïpoöeäópû time. Ïepâoe cëoâo â oïècaíèè Cè-ïpoöeäópû, long time. Oçíaêoìèâøècü c paçäeëoì "Öeëûe: 4-áèòa, co çíaêoì" â òaáëèöe 7-5, Bû íaéäeòe, ÷òo ýêâèâaëeíòoì òèïó long â Cè ÿâëÿeòcÿ â Ôîðòðàíå INTEGER*4. Çíaÿ ýòo, ìoæío íaïècaòü: INTERFACE TO INTEGER*4 FUNCTION TIMEBo-âòopûx, peøèì êaêoe coãëaøeíèe o ïepeäa÷e äaííûx ècïoëüçoâaòü. Taê êaê Bû íe ìoæeòe èçìeíèòü Cè-ïpoöeäópó, Bû äoëæíû ècïoëüçoâaòü ïpèíÿòoe â íeé coãëaøeíèe. Äëÿ çaäaíèÿ coãëaøeíèÿ Cè, ècïoëüçóéòe C aòpèáóò: INTERFACE TO INTEGER*4 FUNCTION TIME[C]Teïepü, oïpeäeëèì aòpèáóòû è òèïû äaííûx äëÿ ïapaìeòpoâ. B äaííoì cëó÷ae âceão oäèí ïapaìeòp, tloc.Bû ìoæeòe íaïècaòü: INTERFACE TO INTEGER*4 FUNCTION TIME[C] (TLOC)Oäíaêo, çaìeòèì, ÷òo âo âòopoé còpoêe oïècaíèÿ ïpoöeäópû Cè, ïepeä tloc còoèò çâeçäo÷êa "*", óêaçûâaÿ ÷òo ïepeäaeòcÿ óêaçaòeëü. Bû ìoæeòe ïepeäaâaòü óêaçaòeëü èç Ôîðòðàíà ècïoëüçóÿ âcòpoeííûe ôóíêöèè LOCFAR èëè LOC, èëè Bû ìoæeòe ïepeäaâaòü caì apãóìeíò ccûëêoé. Ïpeäïoëoæèì, Baì çaxo÷èòcÿ ïepeäaòü ïapaìeòp ccûëêoé. B Ôîðòðàíå ïo óìoë÷aíèþ ïapaìeòpû ïepeäaþòcÿ ccûëêoé, ío ïpoöeäópa â óòâepæäeíèè INTERFACE oïpeäeëeía c aòpèáóòoì C, ïoýòoìó TLOC áóäeò ïo óìoë÷aíèþ ïepeäaâaòücÿ çía÷eíèÿì. ×òoáû íaçía÷èòü ïepeäa÷ó ccûëêoé íaäo äoáaâèòü REFERENCE aòpèáóò: INTERFACE TO INTEGER*4 FUNCTION TIME[C] (TLOC[REFERENCE])Tèï ïapaìeòpa óêaçaí ïepâûì cëoâoì âo âòopoé còpoêe oïècaíèÿ ïpoöeäópû Cè, long *tloc. Taê, êaê ìû óæe âûÿcíèëè, ÷òo òèï Ôîðòðàíà INTEGER*4 ýêâèâaëeíò long òèïó Cè, ìoæío íaïècaòü: INTERFACE TO INTEGER*4 FUNCTION TIME[C] *(TLOC[REFERENCE]) INTEGER*4 TLOC ENDÏpeäïoëoæèì, Bû çaxoòeëè ïepeäaòü óêaçaòeëü ía ïapaìeòp, âìecòo ïepeäa÷è ïapaìeòpa ccûëêoé. Óêaçaòeëü ïepeäaeòcÿ çía÷eíèeì, ïoýòoìó íe íaäo íaçía÷aòü REFERENCE aòpèáóò. Taê êaê óêaçaòeëè èìeþò 4- áaéòoâûe aäpeca peçóëüòaòoì LOC áóäeò 4-áaéòoâoe öeëoe, è Bû ìoæeòe oïècaòü ïapaìeòp TLOC, êaê 4-áaéòoâoe öeëoe: INTERFACE TO INTEGER*4 FUNCTION TIME[C] (TLOC) INTEGER*4 TLOC ENDTpeòèé øaã, äoáaâëeíèe ìoäóëÿ INTERFACE ê ocíoâíoé ïpoãpaììe, oäèíaêoâ äëÿ oáoèx cëó÷aeâ. Ïoëoæeíèe ìoäóëÿ INTERFACE ïepeä ëþáûìè oápaùeíèÿìè ê oïècaííoé â íeì ïpoöeäópe ÿâëÿeòcÿ eäèícòâeííûì oãpaíè÷eíèeì. Oáû÷ío âce ìoäóëè INTERFACE còaâÿòcÿ â ía÷aëe áëoêa êoìïèëÿöèè. Ïocëeäíèé ýòaï, oápaùeíèe ê ïpoöeäópe, oòëè÷eí äëÿ cëó÷aeâ REFERENCE è óêaçaòeëÿ. Ýòo paccìaòpèâaeòcÿ â cëeäóþùeì paçäeëe. 6.OÁPAÙEHÈE K ÏPOÖEÄÓPAM HA ÏACKAËE È CÈ ÈÇ ÔOPTPAHA.Koãäa Bû oïècaëè ïpoöeäópó, Bû ìoæeòe âûçûâaòü ee èç Baøeé ïpoãpaììû, òaê æe êaê è ïpoöeäópû íaïècaííûe ía ÿçûêe ocíoâíoé ïpoãpaììû. Çaìeòüòe, ÷òo ïpè oápaùeíèè èç Ôîðòðàíà, Bû äoëæíû âceãäa oïècûâaòü ïpoöeäópû â ïpoãpaìíûx ìoäóëÿx, ãäe èìè ïoëüçóeòecü. Äëÿ ïpèìepa oïècaííoão â ïpeäûäóùeì paçäeëe, ía÷aëo âûçûâaþùeé ïpoöeäópû ìoæeò âûãëÿäeòü òaê:SUBROUTINE CLOCK INTEGER*4 TIME INTEGER*4 TLOCHe çaáûâaéòe oïècûâaòü ïpoöeäópó, êaê â còpoêe INTEGER*4 TIME. Ecëè Bû ïepeäaeòe TLOC ccûëêoé, Bû ìoæeòe çaêoí÷èòü âûçûâaþùèé ìoäóëü òaê: SUBROUTINE CLOCK INTEGER*4 TIME INTEGER*4 TLOC WRITE(*,*) TIME(TLOC) ENDEcëè Bû ïepeäaeòe óêaçaòeëü, Baøa ïpoöeäópa áóäeò òaêoé: SUBROUTINE CLOCK INTEGER*4 TIME INTEGER*4 TLOC WRITE(*,*) TIME(LOC(TLOC)) ENDBû ìoæeòe çaìeíèòü LOC ôóíêöèþ ía ôóíêöèþ LOCFAR; äëÿ äaííoão cëó÷aÿ, èx äeécòâèÿ èäeíòè÷íû. Çaìeòèì, ÷òo ecëè áû time ÿâëÿëacü ïoäïpoãpaììoé âìecòo ôóíêöèè, Bû äoëæíû áûëè ê íeé oápaòèòücÿ c ïoìoùüþ oïepaòopa Ôîðòðàíà CALL. 7. TÈÏÛ ÄAHHÛXKaæäûé ÿçûê, Ôîðòðàí, Ïàñêàëü è Cè èìeþò íecêoëüêo òèïoâ äaííûx. Heêoòopûe èç íèx ïoëíocòüþ coâìecòèìû; äpóãèe òpeáóþò ïpeoápaçoâaíèÿ ïpè ïepexoäe oò oäíoão ÿçûêa ê äpóãoìó. B cëeäóþùèx paçäeëax oïècûâaþòcÿ òèïû äaííûx è èx oòëè÷èe â paçíûx ÿçûêax. B òaáëèöax 7-5 - 7-14 oïècaía ýêâèâaëeíòíocòü òèïoâ äaííûx.7.1.Ècïoëüçoâaíèe òaáëèö ýêâèâaëeíòíûx òèïoâ äaííûx.Ïpè ïepeäa÷e ïapaìeòpoâ Bû äoëæíû ïoëüçoâaòücÿ òaáëèöaìè 7-5 - 7-14 coâìecòío c òaáëèöaìè 7-2 - 7-4. Haïpèìep, Bû xoòèòe ïepeäaòü ïepeìeííóþ òèïa INTEGER*2 èç Ôîðòðàíà â Cè. Bo-ïepâûx Bû äoëæíû âûápaòü coãëaøeíèe o ïepeäa÷e ïapaìeòpoâ (Cìoòpèòe paçäeë "Bûáop coãëaøeíèÿ o ïepeäa÷e ïapaìeòpoâ"). Ïpeäïoëoæèì, ÷òo Bû âûápaëè coãëaøeíèe Cè. B ýòoì cëó÷ae ècïoëüçóéòe òaáëèöó 7-2 "Ïepeäa÷a ïapaìeòpoâ ïpè coãëaøeíèè Cè." Bo-âòopûx, peøèì ïepeäaâaòü ïapaìeòpû èëè ccûëêoé èëè çía÷eíèeì, ècïoëüçóÿ êopoòêèé aäpec. Taáëèöa 7-2 oáúÿcíÿeò, êaê ècïoëüçoâaòü aòpèáóòû REFERENCE è NEAR â Ôîðòðàíå, è óêaçaòeëü near cooòâeòcòâóþùeão òèïa â Cè. B-òpeòüèx, Bû äoëæíû oïpeäeëèòü, êaêoé òèï äaííûx â Cè ýêâèâaëeíòeí òèïó INTEGER*2 â Ôîðòðàíå. Haéäèòe â òaáëèöe, oïècûâaþùeé öeëûe ÷ècëa ( Taáëèöa 7-5) paçäeë INTEGER*2. Çaòeì íaéäèòe cooòâeòcòâóþùèé paçäeë äëÿ Cè. Bû ìoæeòe âûápaòü òèïû èëè short èëè int (ío â êoëoíêe "Ïpèìe÷aíèe" óêaçaío, ÷òo òèï int çaâècèò oò ìoäeëè ÝBM). Äëÿ ìaêcèìaëüíoé coâìecòèìocòè, âûáèpaeì short òèï Cè. Haêoíeö, ïpècoeäèíèì aòpèáóòû è êëþ÷eâûe cëoâa ê òèïó äaííûx â oïepaòope INTERFACE Ôîðòðàíà oïècaííoìó c aòpèáóòoì C. INTEGER*2 X [REFERENCE, NEAR]Ýòo ýêâèâaëeíòío oïècaíèþ ïapaìeòpa Cè: short near *xÇaìeòèì, ÷òo ècïoëüçoâaíèe ïapaìeòpa c REFERENCE â Ôîðòðàíå câÿçaío c ècïoëüçoâaíèeì òèïa ccûëêa â Cè. 7.2.Äaííûe öeëoão òèïa.B Cè, ëþáûe öeëûe ïapaìeòpû êopo÷e ÷eì int (íaïpèìep, êaê char) ïpeoápaçóþòcÿ ê òèïó int ïepeä ïepeäa÷eé çía÷eíèeì. Öeëûe áeç çíaêa ìeíüøe ÷eì unsigned int (íaïpèìep êaê unsigned char) ïpeoápaçóþòcÿ ê òèïó unsigned int. Cóùecòâóþò äâa cïocoáa ãapaíòèpoâaòü ïpaâèëüíocòü paáoòû c ïapaìeòpaìè öeëoão òèïa ïpè oápaùeíèè èç Ôîðòðàíà èëè Ïàñêàëÿ ê Cè:
Çaìeòèì, ÷òo â Cè òèï int çaâècèò oò òèïa ìaøèíû. Äëÿ ceìeécòâa 8086 ìèêpoïpoöecopoâ, òèï int ÿâëÿeòcÿ ýêâèâaëeíòoì cëeäóþùèx òèïoâ:
Äëÿ ëþáoão ïpoöeccopa è oïepaöèoííoé cècòeìû, ïepeìeííûe c ïocëeäíèìè äâóìÿ òèïaìè ýêâèâaëeíòíû ïepeìeííûì Cè òèïa int ócòaíoâëeííoão äëÿ äaííoé cècòeìû (Ïocëeäíèe äâa òèïa áoëee ïepeíocèìû, ÷eì ïepâûe äâa). Taáëèöa 7-5 oïècûâaeò äaííûe öeëoão òèïa è ýêâèâaëeíòíûe èì òèïû â Ïàñêàëå, Cè è Ôîðòðàíå. --------------------------------------------------------------¬ | ÖEËÛE: 2 ÁAÉTA, ÁEÇ ÇHAKA | +-----------------T---------------------T---------------------+ | ÿçûê | òèï äaííûx | ïpèìe÷aíèe | +-----------------+---------------------+---------------------+ | | x:word | | | +---------------------+---------------------+ | Ïàñêàëü | x:wrd(a)..wrd(b) | äëÿ â > 255 | | +---------------------+---------------------+ | | x:(a,b,...n) | äëÿ ord(n) > 255 | +-----------------+---------------------+---------------------+ | | unsigned short x | | | Cè +---------------------+---------------------+ | | unsigned int x | çaâècèò oò òèïa | | | | ìaøèíû | +-----------------+---------------------+---------------------+ | | | Ôopòpaí íe èìeeò òè | | | | ïoâ "áeç çíaêa", âû | | | | äoëæíû ècïoëüçoâaòü | | | | òèï INTEGER*2.He | | | | ïepeäaâaéòe oòpèöa | | Ôîðòðàí | INTEGER*2 X | òeëüíûe çía÷eíèÿ èëè| | | | çía÷eíèÿ áoëüøe ÷eì | | | | 32767.Çaìeòüòe, ÷òo | | | | co çía÷eíèÿìè òèïa | | | | INTEGER*2, ìoæío | | | | ïpoèçâoäèòü ìíoão | | | | oïepaöèé, íe ìeíÿÿ | | | | çíaêa. | L-----------------+---------------------+---------------------- --------------------------------------------------------------¬ | ÖEËÛE : 1 ÁAÉT, CO ÇHAKOM | +-----------------T---------------------T---------------------+ | ÿçûê | òèï äaííûx | ïpèìe÷aíèe | +-----------------+---------------------+---------------------+ | | x:sint | | | Ïàñêàëü +---------------------+---------------------+ | | :a...b | äëÿ a >= -127 | | | | | | | | äëÿ b <= 127 | +-----------------+---------------------+---------------------+ | | charx | ïpè ïepeäa÷e | | | | ccûëêoé | | Cè +---------------------+---------------------+ | | struct { | ïpè ïepeäa÷e | | | char x ;} x | çía÷eíèeì | +-----------------+---------------------+---------------------+ | Ôîðòðàí | íeò | | L-----------------+---------------------+---------------------- --------------------------------------------------------------¬ | ÖEËÛE ; 1 ÁAÉT, ÁEÇ ÇHAKA | +-----------------T---------------------T---------------------+ | ÿçûê | òèï äaííûx | ïpèìe÷aíèe | +-----------------+---------------------+---------------------+ | | x: byte | | | +---------------------+---------------------+ | | x: wrd(a)...(b) | äëÿ 0 < a < b | | Ïàñêàëü | | äëÿ b < 255 | | +---------------------+---------------------+ | | x: (0, b...n) | äëÿ | | | | ord (n)< 256 | +-----------------+---------------------+---------------------+ | | unsigned charx | ïpè ïepeäa÷e ccûëêoé| | Cè +---------------------+---------------------+ | | struct { | ïpè ïepeäa÷e | | | unsigned charx ;} | çía÷eíèeì | +-----------------+---------------------+---------------------+ | | | B Ôîðòðàíå íeò òèïa | | | | "áeç çíaêa", âû ìo | | | | æèòe ècïoëüçoâaòü | | | | CHARACTER *1, ècïoëü| | Ôîðòðàí | CHARACTER*1 X | çóÿ ôóíêöèè ICHAR è | | | | CHAR äëÿ ïpeoápaçoâa| | | | íèÿ çía÷eíèé.He ïepe| | | | äaâaéòe oòpèöaòeëü | | | | íûe çía÷eíèÿ. | | | | | L-----------------+---------------------+---------------------- --------------------------------------------------------------¬ | ÖEËÛE : 2 ÁAÉTA CO ÇHAKOM | +------------------T---------------------T--------------------+ | ÿçûê | òèï äaííûx | ïpèìe÷aíèe | +------------------+---------------------+--------------------+ | | x:integer2 | | | +---------------------+--------------------+ | | x:inegerc | | | Ïàñêàëü +---------------------+--------------------+ | | | ecëè | | | x: integer | $integer:2 | | | | (ïo óìoë÷aíèþ) | +------------------+---------------------+--------------------+ | Cè | short x | çaâècèò oò òèïa | | | int x | ìaøèíû | +------------------+---------------------+--------------------+ | | INTEGER*2 X | | | +---------------------+--------------------+ | Ôîðòðàí | INTEGER[C] X | | | +---------------------+--------------------+ | | INTEGER X | ecëè $STORAGE:2 | L------------------+---------------------+--------------------- --------------------------------------------------------------¬ | ÖEËÛE : 4 ÁAÉTA, CO ÇHAKOM | +-------------------T--------------------T--------------------+ | ÿçûê | òèï äaííûx | ïpèìe÷aíèe | +-------------------+--------------------+--------------------+ | | x:integer4 | | | Ïàñêàëü +--------------------+--------------------+ | | x:integer | ecëè $integer:4 | +-------------------+--------------------+--------------------+ | Cè | long x | | +-------------------+--------------------+--------------------+ | | INTEGER*4 X | | | +--------------------+--------------------+ | Ôîðòðàí | | ecëè | | | INTEGER X | $STORAGE:4 | | | | (ïo óìoë÷aíèþ) | L-------------------+--------------------+--------------------- TAÁËÈÖA 7-5 : Ýêâèâaëeíòíûe òèïû äaííûx.B Cè òaêæe cóùecòâóeò òèï öeëûe: 4-áaéòa, áeç çíaêa, â Ôîðòðàíå è Ïàñêàëå òaêoão òèïa íeò. Oäíaêo, ìíoão apèôìeòè÷ecêèx oïepaöèé, íe ó÷èòûâaþùèx çíaê, ìoãóò áûòü ïpoèçâeäeíû íaä ïepeìeííûìè co çíaêoì c ïoëó÷eíèeì ïpaâèëüíoão peçóëüòaòa. Ýòoão ìoæeò áûòü äocòaòo÷ío äëÿ ïepeäa÷è ïapaìeòpoâ â íeêoòopûx cëó÷aÿx. 7.3.Áóëeâcêèé è cèìâoëüíûé òèïû äaííûx.Äëÿ Ïàñêàëÿ, çía÷eíèe Áóëeâcêoé ïepeìeííoé "1" oçía÷aeò ècòèíío, "0" oçía÷aeò ëoæü. B òaáëèöe 7-6 oïècaío, ýêâèâaëeíòíûe áóëeâcêèe è cèìâoëüíûe òèïû â Ïàñêàëå, Cè è Ôîðòðàíå.---------------------------------------------------------------¬ | ÁÓËEBCKÈÉ TÈÏ. | +----------------T-----------------------T---------------------+ | ÿçûê | òèï äaííûx | ïpèìe÷aíèe | +----------------+-----------------------+---------------------+ | Ïàñêàëü | x: boolean | | +----------------+-----------------------+---------------------+ | Cè | unsigned char x | | +----------------+-----------------------+---------------------+ | | | Ècïoëüçóþòcÿ, êaê | | | | öeëûe: oäèí áaéò, | | | | áeç çíaêa; 1- ëoæü, | | Ôîðòðàí | CHARACTER*1 X | 0- ècòèíío | | | | | | | | Tèï Ôîðòðàíà | | | | LOGIGAL íe èìeeò | | | | ýêâèâaëeíòoâ. | | | | cìoòpèòe òaáëèöó | | | | 7-14. | L----------------+-----------------------+---------------------- ---------------------------------------------------------------¬ | CÈMBOËÜHÛÉ TÈÏ | +----------------T-----------------------T---------------------+ | ÿçûê | òèï äaííûx | ïpèìe÷aíèe | +----------------+-----------------------+---------------------+ | Ïàñêàëü | x:char | | +----------------+-----------------------+---------------------+ | Cè | unsigned char x | | +----------------+-----------------------+---------------------+ | Ôîðòðàí | CHARACTER X | | L----------------+-----------------------+---------------------- Taáëèöa 7-6. Ýêâèâaëeíòíûe òèïû äaííûx Áóëeâcêèe è Cèìâoëüíûe. 7.4.Äeécòâèòeëüíûe ÷ècëa.Cè ïepeäaeò âce äeécòâèòeëüíûe ïapaìeòpû çía÷eíèeì âeëè÷èíû äâoéíoé òo÷íocòè. ×òoáû ïepeäa÷a ïapaìeòpoâ c Ôîðòðàíà è Ïàñêàëÿ â Cè áûëa êoppeêòía, èìeþòcÿ òpè âoçìoæíocòè:
Beëè÷èíû c ïëaâaþùeé òo÷êoé ïepeäaþòcÿ èç Ïàñêàëÿ è Ôîðòðàíà â Cè êaê còpóêòópèpoâaííûe âeëè÷èíû. Taáëèöa 7-7 oïècûâaeò ýêâèâaëeíòíûe äeécòâèòeëüíûe òèïû â Ïàñêàëå, Cè è Ôîðòðàíå. ----------------------------------------------------------------¬ | ÄEÉCTBÈTEËÜHÛE ×ÈCËA OÁÛ×HOÉ TO×HOCTÈ | +----------------T----------------------T-----------------------+ | ÿçûê | òèï äaííûx | ïpèìe÷aíèe | +----------------+----------------------+-----------------------+ | | | ecëè $real:4 | | | x:real4 | (ïo óìoë÷aíèþ) | | Ïàñêàëü | | | | +----------------------+-----------------------+ | | x:real | | +----------------+----------------------+-----------------------+ | | float x | | | Cè +----------------------+-----------------------+ | | struct { | ïpè ïepeäa÷e | | | float x ; } x | çía÷eíèeì | +----------------+----------------------+-----------------------+ | ÄEÉCTBÈTEËÜHÛE ×ÈCËA ÄBOÉHOÉ TO×HOCTÈ | +----------------T----------------------T-----------------------+ | ÿçûê | òèï äaííûx | ïpèìe÷aíèe | +----------------+----------------------+-----------------------+ | | x : real8 | | | Ïàñêàëü +----------------------+-----------------------+ | | x : real | ecëè $real:8 | +----------------+----------------------+-----------------------+ | Cè | double x | | +----------------+----------------------+-----------------------+ | Ôîðòðàí | REAL*8 X èëè | | | | DOUBLE PRECISION X | | L----------------+----------------------+------------------------ Taáëèöa 7-7 : Ýêâèâaëeíòíûe òèïû äaííûx. 7.5.Ïepeäa÷a còpoê.Ïàñêàëü, Ôîðòðàí è Cè ïo paçíoìó çaíocÿò còpoêè ëèòep â ïaìÿòü. Ïpè ïepeäa÷e còpoê èç oäíoão ÿçûêa â äpóãoé, íóæío óêaçaòü êaê ïpoècxoäèò ee oápaáoòêa. Cè - còpoêè ÿâëÿþòcÿ ìaccèâaìè ëèòep. Ëèòepa Ïócòo (co çía÷eíèeì íoëü) oòìe÷aeò êoíeö còpoêè è ÿâëÿeòcÿ ïocëeäíeé ëèòepoé ìaccèâa. Äëÿ ïpèìepa còpoêa: String of textâûãëÿäèò ía Cè òaê: unsigned char str []="String of text."Oía çaíocèòcÿ â ïaìÿòü, êaê ìaccèâ èç 16-áaéòoâ; 15-áaéòoâ çía÷aùeão òeêcòa ( ò.e. caìa còpoêa) è 1 ëèòepa Ïócòo, oòìe÷aþùaÿ êoíeö còpoêè: --T-T-T-T-T-T-T-T--T-T-T-T-T-T--¬ |S|T|R|I|N|G| |O|F |T|E|X|T|.|\0| L-+-+-+-+-+-+-+-+--+-+-+-+-+-+---Còpoêa ía Ôîðòðàíå íe èìeeò oãpaíè÷èòeëeé ïpè paçìeùeíèè â ïaìÿòè. Äëèía còpoêè oïpeäeëÿeòcÿ çapaíee. Còpoêa ía Ôîðòðàíå: str = " string of text "Oía çaíocèòcÿ â ïaìÿòü òeêcòoì â 15 áaéòoâ. --T-T-T-T-T-T-T-T--T-T-T-T-T-¬ |S|T|R|I|N|G| |O|F |T|E|X|T|.| L-+-+-+-+-+-+-+-+--+-+-+-+-+--B Ïàñêàëå cóùecòâóeò äâa âèäa còpoêè: còpoêa òèïa ôèêcèpoâaííoé äëèíû STRING aíaëoãè÷íaÿ còpoêe Ôîðòðàíà, è còpoêa ïepeìeííoé äëèíû LSTRING. Ècïoëüçóÿ LSTRING, ïpeäûäóùaÿ còpoêa çaïèøeòcÿ òaê: VAR STR; LSTRING (15), STR :=" STRING of text.";Oía çaíocèòcÿ â ïaìÿòü, êaê òeêcò èç 16 áaéòoâ. Ïepâûé áaéò óêaçûâaeò ÷ècëo áaéòoâ oòâoäèìûx â ïaìÿòè ía còpoêó; ocòaâøèecÿ 15 áaéòoâ çaíèìaeò caì òeêcò. ---T-T--T--T-T-T-T-T--T--T-T-T-T-T-¬ | 1|5| S| T|R|I|N|G| O|F |T|E|X|T|.| L--+-+--+--+-+-+-+-+--+--+-+-+-+-+--B òaáëèöe 7-8 oïècaíû òèïû còpoê è ìaccèâoâ äëÿ âcex òpex ÿçûêoâ. ------------------T-----------------------T---------------------¬ | ÿçûê | òèï äaííûx | ïpèìe÷aíèe | +-----------------+-----------------------+---------------------+ | | C: STRING (a) | | | +-----------------------+ | | Ïàñêàëü | C: ARRAY [1..a] OF | | | | CHAR; | | | +-----------------------+ | | | C: LSTRING (a-1); | | +-----------------+-----------------------+---------------------+ | | CHARACTER*a C | | | Ôîðòðàí +-----------------------+ | | | CHARACTER*1 C[a] | | +-----------------+-----------------------+---------------------+ | | unsingned char c[a] | | | Cè +-----------------------+ | | | struct cstr {unsigned | | | | char c [a]; } c | | L-----------------+-----------------------+---------------------- Taáëèöa 7-8 Tèïû còpoê è ìaccèâoâ.B òaáëèöe 7-9 oïècaíû ýêâèâaëeíòíûe òèïû còpoê. ---------------T----------------------T---------------------¬ | ÿçûê | òèï äaííûx | ïpèìe÷aíèe | +--------------+----------------------+---------------------+ | Ïàñêàëü | x: array[1..n]of char| | +--------------+----------------------+---------------------+ | Cè | char x[n]; | | +--------------+----------------------+---------------------+ | | | He èìeeò ýêâèâaëeíò,| | | | â áóäóùèx âepcèÿx | | | | Ôîðòðàíà.He peêoìeí | | | CHARACTER *h x | äoâaí.Moæeò ècïoëüço| | Ôîðòðàí | INTEGER X ((h+1)12)| âaòücÿ êaê ïepeìeí | | | | íûe òèïa CHARACTER | | | | äëÿ oïepaöèé íaä oò | | | | äeëüíûìè áaéòaìè.Ýòà| | | | âoçìoæíocòü áóäeò | | | | paçâèòa â áóäóùèx | | | | âepcèÿx. | L--------------+----------------------+---------------------- B cëeäóþùèx paçäeëax oïècûâaeòcÿ ïepeäa÷a còpoêè èç oäíoão ÿçûêa â äpóãoé. Ïepeäa÷a còpoêè èç Ôîðòðàíà â Cè èëè Ïàñêàëü. Còpoêè ía Ôîðòðàíå òaêæe pacïoëaãaþòcÿ â ïaìÿòè êaê còpoêè ía Ïàñêàëå è Bû ìoæeòe ïepeäaâaòü ïpÿìo. Äëÿ ïepeäa÷è còpoê ía Ôîðòðàíå â Cè, ècïoëüçóéòe âoçìoæíocòü Cè còpoêè. Koãäa còaíäapòíaÿ còpo÷íaÿ êoícòaíòa Ôîðòðàíà cëeäóeò ça ëèòepoé C, ýòa còpoêa áóäeò èíòepïpeòèpoâaía êaê còpo÷íaÿ êoícòaíòa ía Cè. Ëèòepa Ïócòo aâòoìaòè÷ecêè äoáaâëÿeòcÿ ê êoíöó còpoêè è oápaòíûé cëeø (\) oápaáaòûâaeòcÿ êaê escape. Hèæe â ýòoé ãëaâe áóäeò ïoëíocòüþ oïècaía âoçìoæíocòü còpoêè Cè. Ïepeäa÷a còpoê èç Ïàñêàëÿ â Cè è Ôîðòðàí. Còpoêè ía Ïàñêàëå è Ôîðòðàíå oäèíaêoâo pacïoëaãaþòcÿ â ïaìÿòè, ìoæío ïepeäaâaòü èx â ïpÿìóþ (íe ïpeoápaçóÿ). Äëÿ ïepeäa÷è òèïa STRING Ïàñêàëü â Cè, ècïoëüçóéòe oïepaöèþ êoíêaòeíaöèè (cëèÿíèÿ), ïpèáaâèâ íóëeâoé áaéò ê êoíöó còpoêè. Haïpèìep, ecëè "strg" ÿâëÿeòcÿ ïepeìeííoé òèïa STRING oïepaöèÿ êoíêaòeíaöèè áóäeò âûãëÿäeòü òaê: strg: "STRING of text."*CHR(0); Äaëee "strg" ìoæeò áûòü ècïoëüçoâaía ëþáoé ôóíêöèeé Cè â êa÷ecòâe apãóìeíòa. Äëÿ ïepeäa÷è còpoê òèïa LStrings â Cè è Ïàñêàëü, Bû äoëæíû ïpeoápaçoâaòü èx â òèï STRINGS è äoáaâèòü áàéò äëèíû. Ïepeäa÷a còpoê Cè â Ïàñêàëü è Ôîðòðàí. B Ôîðòðàíå è Ïàñêàëå, Cè - còpoêè ìoãóò áûòü ïpeäcòaâëeíû òoëüêo â âèäe ìaccèâoâ. Ïpè ïepeäa÷e còpoê Cè â Ïàñêàëü èëè Ôîðòðàí, oòâoäèòe ìecòo äëÿ íóëeâoão áaéòa â êoíöe còpoêè. 7.6.Óêaçaòeëè.B òaáëèöe 7-10 oïècûâaþòcÿ ýêâèâaëeíòíûe òèïû óêaçaòeëeé äëÿ êaæäoão ÿçûêa. Ïpè ècïoëüçoâaíèè óêaçaòeëeé ïpoöeäóp è âûçoâa ïoäïpoãpaìì ía Cè è Ôîðòðàíå èç Cè, ïpè coãëaøeíèè Cè o ïepeäa÷e äaííûx, ècïoëüçóéòe ïpèâeäeííóþ íèæe cèíòaêcè÷ecêóþ ôopìó äëÿ oïècaíèÿ cïècêa apãóìeíòoâ Ïàñêàëÿ èëè Ôîðòðàíà â âaøeé Cè ïpoöeäópe.returntype (*x) (types-list)Çäecü returntype cooòâeòcòâóeò peçóëüòaòó, types-list oïècûâaþòcÿ òaêæe êaê cïècoê apãóìeíòoâ ïpoöeäóp Ïàñêàëÿ èëè Ôîðòðàíà ïpè âûçoâe èx ía Cè. Ïpè ècïoëüçoâaíèè coãëaøeíèÿ Ïàñêàëÿ, ècïoëüçóéòe cèíòaêcè÷ecêóþ ôopìó: returntype (pascal *x) (types-list)A ïpè ècïoëüçoâaíèé coãëaøeíèÿ Ôîðòðàíà ôopìa áóäeò òaêoé: returntype (fortran *x) (types-list)Haïpèìep, Bû ìoæèòe ïepeäaòü ADSPROC Ïàñêàëÿ â âaøó ïpoãpaììó ía Cè: f(x) short (paskal *x) (short);B ýòoì ïpèìepe, x ccûëêa ía ïpoöeäópû ÏACKAËß , c ôaêòè÷ecêèì apãóìeíòoì òèïa short, è çía÷eíèeì òaêoão æe òèïa. -------------------------------------------------------------¬ | ÓKAÇATEËÈ NEAR | +--------------T---------------------T-----------------------+ | ÿçûê | òèï äaííûx | ïpèìe÷aíèe | +--------------+---------------------+-----------------------+ | | x:^t | çaâècèò oò òèïa ìaøèíû| | Ïàñêàëü +---------------------+-----------------------+ | | ADR t | | +--------------+---------------------+-----------------------+ | Cè | t near *x | | +--------------+---------------------+-----------------------+ | | TOBJECT | | | Ôîðòðàí | INTEGER*2 X | | | | X = LOCNEAR(OBJECT)| | L--------------+---------------------+------------------------ --------------------------------------------------------------¬ | ÓKAÇATEËÈ FAR | +---------------T----------------------T----------------------+ | ÿçûê | òèï äaííûx | ïpèìe÷aíèe | +---------------+----------------------+----------------------+ | Ïàñêàëü | ADS t | | +---------------+----------------------+----------------------+ | | t *x | | | Cè +----------------------+----------------------+ | | t far *x | | +---------------+----------------------+----------------------+ | | TOBJECT | | | | INTEGER*4 X | | | | X = LOC(OBJECT)| | | Ôîðòðàí +----------------------+----------------------+ | | TOBJECT | | | | INTEGER*4 X | | | | X=LOCFAR(OBJECT) | | L---------------+----------------------+----------------------- --------------------------------------------------------------¬ | ÓKAÇATEËÈ HA ÏPOÖEÄÓPÛ | +---------------T----------------------T----------------------+ | ÿçûê | òèï äaííûx | Ïpèìe÷aíèe | +---------------+----------------------+----------------------+ | | x: adsproc | Bû äoëæíû oïècaòü | | | | âíóòpeííþþ ïpoöeäópó| | +----------------------+ ÷òoáû ADS oïepaòop | | Ïàñêàëü | | ìoã oápaáoòaòü far | | | x: adsfunc | aäpec.Koìïèëÿòop óc-| | | | òaíaâëèâaeò near | | | | aäpeca äëÿ ëoêaëüíûx| | | | ïpoöeäóp | +---------------+----------------------+----------------------+ | Cè | t (*) () | | L---------------+----------------------+----------------------- --------------------------------------------------------------¬ | ÓKAÇATEËÈ HA ÏPOÖEÄÓPÛ | +---------------T----------------------T----------------------+ | ÿçûê | òèï äaííûx | Ïpèìe÷aíèe | +---------------+----------------------+----------------------+ | | TPROC | EXTERNAL ècïoëüçóeò | | | EXTERNAL PROC | cÿ, êoãäa èìÿ ïpo- | | | INTEGER*4 X | öeäópû, ècïoëüçóeòcÿ| | | X=LOC(PROC) | ïpè âûçoâe | | | | ôóíêöèè (â ýòoì ïpè-| | Ôîðòðàí +----------------------+ ìepe áepeòcÿ aäpec | | | | ïpoöeäópû).Èía÷e | | | TPROC | Ôîðòðàí coçäaeò ío | | | EXTERNAL PROC | âóþ ïepeìeííóþ è | | | INTEGER*4 X | âoçüìeò aäpec ýòoé | | | X=LOCFAR(PROC) | ïepeìeííoé, a íe | | | | ïpoöeäópû. | L---------------+----------------------+----------------------- Taáëèöa 7-10 Ýêâèâaëeíòíûe òèïû äaííûx: Óêaçaòeëè. 7.7.Maccèâû, SUPER ìaccèâû è HUGE ìaccèâû.Maccèâû ía Ôîðòðàíå pacïoëoæeíû ïo còoëáöaì. Haïpèìep, A(2,1) cëeäóeò ça A(3,1). Maccèâû Cè è Ïàñêàëü paccïoëoæeíû ïo còpoêaì. Haïpèìep, A(2,1) cëeäóeò ça A(2,2). Ha÷èíaeòcÿ ãpaíèöa èíäeêcoâ â ìaccèâe Cè âceãäa c 0, äëÿ Ôîðòðàíà âceãäo 1, è äëÿ Ïàñêàëÿ ía çía÷eíèe ãpaíèöû íeò oãpaíè÷eíèé. Haïpèìep, ecëè Bû oïpeäeëèòe ìaccèâ ía Cè x[6] [3], ýêâèâaëeíòíûì ìaccèâoì ía Ôîðòðàíå áóäeò X(3,6), ía Ïàñêàëå áóäeò x:array[0...5, 0...2]. Ecëè Bû âûápaëè ýëeìeíò x[5,0] â Ïàñêàëå, èëè ýëeìeíò x[5] [0] â Cè, ýêâèâaëeíòíûé ýëeìeíò Ôîðòðàíà áóäeò X(1,6). Èëè, ecëè Bû oïpeäeëèòe ìaccèâ ía Ïàñêàëå, êaê: x:array [2..6, 2..3] of integer 2ýêâèâaëeíò Ôîðòðàíà áóäeò INTEGER*2 x(2, 5)è ýêâèâaëeíò Cè áóäeò short x[5] [2] Áoëüøèe ìaccèâû Ôîðòðàíà (ìaccèâû oïècaííûe c aòpèáóòoì HUGE èëè ìeòaêoìaíäíoé $LARGE) íe ìoãóò âûçûâaòücÿ èç Ïàñêàëÿ è Cè. B Cè, ìaccèâû âceãäa ïepeäaþòcÿ ccûëêoé.Eäâa Bû oápaùaeòecü èç Ôîðòðàíà, è ècïoëüçóeòe C aòpèáóò, ìaccèâû ïepeäaþòcÿ çía÷eíèeì, aíaëoãè÷ío Cè struct. Ïpè ýòoì âxoäíoé ìaccèâ íaxoäèòcÿ âíe còeêa. ×òoáû ïepeäaâaòü ìaccèâ êaê ìaccèâ (èç Ôîðòðàíà â Cè), Baì ïpèäeòcÿ ècïoëüçoâaòü aòpèáóò REFERENCE èëè ïepeäaòü peçóëüòaò ôóíêöèé LOC, LOCNEAR è LOCFAR (cìoòpèòe paçäeë "Ôóíêöèè aäpecoâ" äaëee â ýòoé ãëaâe) B òaáëèöe 7-11 oïècaíû ýêâèâaëeíòíûe òèïû ìaccèâoâ äëÿ Ïàñêàëÿ, Cè è Ôîðòðàíà. ----------------------------------------------------------------¬ | MACCÈBÛ: HÈÆHßß ÃPAHÈÖA MACCÈBA ÏACKAËß PABHA 0 | +------------------T---------------------T----------------------+ | ÿçûê | òèï äaííûx | ïpèìe÷aíèe | +------------------+---------------------+----------------------+ | Ïàñêàëü | x:array[0..j,0..m]| | | | of type | | +------------------+---------------------+----------------------+ | | type x[j+1] [m+1]| ïpè ïepeäa÷e | | | | ccûëêoé | | Cè +---------------------+----------------------+ | | struct{ | ïpè ïepeäa÷e | | | type x[j+1] [m+1];}x| çía÷eíèeì | +------------------+---------------------+----------------------+ | Ôîðòðàí | type x(m+1,j+1) | | L------------------+---------------------+----------------------- ----------------------------------------------------------------¬ | MACCÈBÛ: HÈÆHßß ÃPAHÈÖA MACCÈBA ÏACKAËß HE PABHA 0 | +------------------T---------------------T----------------------+ | ÿçûê | òèï äaííûx | ïpèìe÷aíèe | +------------------+---------------------+----------------------+ | | x: array[i..j,k..of | | | Ïàñêàëü | type | | +------------------+---------------------+----------------------+ | |type x[j-I+1] [m-k+1]| ïpè ïepeäa÷e | | | | ccûëêoé | | Cè +---------------------+----------------------+ | | struct { type | ïpè ïepeäa÷e | | |x[j-I+1] [m-k+1];}x | çía÷eíèeì | +------------------+---------------------+----------------------+ | Ôîðòðàí | type x(m-k+1,j-1+1) | | L------------------+---------------------+----------------------- Taáëèöa 7-11. Ýêâèâaëeíòíûe òèïû äaííûx: ìaccèâû. Ccûëêoé super ìaccèâa ÿâëÿeòcÿ ccûëêa near ía ía÷aëo ìaccèâa. Oía cëeäóeò ça âepxíeé ãpaíèöeé (â òoì æe ïopÿäêe, êaê ïpè oïècaíèè ìaccèâa). B òaáëèöe 7-12 ïoêaçaío êaê coçäaòü cïeöèôèêaöèþ óêaçaòeëè super ìaccèâa: ----------------------------------------------------------------¬ | ÓKAÇATEËÈ SUPER MACCÈBOB | +-------------------T---------------------T---------------------+ | ÿçûê | òèï äaííûx | ïpèìe÷aíèe | +-------------------+---------------------+---------------------+ | | type v=super array | | | Ïàñêàëü | [0..*,0..*] of type| | | | x: ^V | | +-------------------+---------------------+---------------------+ | | | Ócòaíoâëeíío a paâ | | | struct{type | íoe (ãpaíèöe ïep | | Cè | near *ptr; | âoé paçìepíocòè) | | | short a; | Ócòaíoâëeíío b paâ | | | short b;}x: | íoe (ãpaíèöe âòo | | | | poé paçìepíocòè) | +-------------------+---------------------+---------------------+ | Ôîðòðàí | íeò | | L-------------------+---------------------+---------------------- Taáëèöa 7-12. Ýêâèâaëeíòíûe òèïû äaííûx: óêaçaòeëè super ìaccèâoâ. 7.8.Çaïècè è còpóêòópû.Tèïû çaïèceé â Ïàñêàëå, è òèïû còpóêòóp â Cè, òecío câÿçaíû ìeæäó coáoé. Ïepeäa÷a ïepeìeííûx çaïèceé áoëee cëoæía. Moæío oïècaòü êoíe÷íoe ïoëe, êaê ýëeìeíò còpóêòópû, çaòeì coçäaòü êoìáèíaöèþ âcex ïepeìeííûx ÷acòeé. B Ôîðòðàíå Bû ìoæeòe coçäaòü ïoäoáíóþ çaïècü ècïoëüçóÿ EQUIVALENSE, ío íe cóùecòâóeò cïocoáa peïëèêèpoâaòü òaêóþ çaïècü èëè ïepeäaòü â êa÷ecòâe ïapaìeòpa. Ecëè çaïècü èëè còpóêòópa coäepæèò òoëüêo ïoëÿ oäèíaêoâoão paçìepa, Bû ìoæeòe ècïoëüçoâaòü â Ôîðòðàíå cooòâeòcòâóþùèé ìaccèâ. B ïpoòèâíoì cëó÷ae âaì íóæío coçäaòü "ãpóïïó ýêâèâaëeíòíocòè", ÷òoáû ïepeìeííûe áûëè câÿçaíû òaê, ÷òoáû cooòâeòcòâoâaëè ýëeìeíòaì còpóêòópû. Ecëè âcÿ còpóêòópa ìeíüøe ÷eì 127 áaéòoâ, Bû ìoæeòe ècïoëüçoâaòü cèìâoëè÷ecêóþ ïepeìeííóþ äëÿ ee ïpeäcòaâëeíèÿ. Ýòoò ïoäxoä äaeò íeýôôýêòèâíûé êoä, a òaêæe cëèøêoì cëoæíóþ ïpoãpaììó. Peêoìeíäóþòcÿ,ïpè ècïoëüçoâaíèè Ïàñêàëÿ è Cè, coçäaâaòü, ãäe âoçìoæío, èíòepôeécíûe ïpoöeäópû. Haïpèìep, äëÿ ïepeâoäa còpóêòópû â ïepeìeííûe è cêaëÿpû, c êoòopûìè ìoæeò oïepèpoâaòü Ôîðòðàí. Çaìeòüòe, ÷òo Bû íe ìoæeòe ïepeäaâaòü set òèï Ïàñêàëÿ â Ôîðòðàíå. --------------------------------------------------------------¬ | KOMÏËEKCHÛE ×ÈCËA C OÁÛ×HOÉ TO×HOCTÜ | +--------------------T---------------------T------------------+ | ÿçûê | òèï äaííûx | ïpèìe÷aíèe | +--------------------+---------------------+------------------+ | | x: recod | | | Ïàñêàëü | re, im: real; | | | | end; | | +--------------------+---------------------+------------------+ | Cè | struct complex8{ | | | | float re,im;}x | | +--------------------+---------------------+------------------+ | Ôîðòðàí | COMPLEX X | | L--------------------+---------------------+------------------- ----------------------------------------------------------------¬ | KOMÏËEKCHÛE ×ÈCËA C ÄBOÉHOÉ TO×HOCTÜÞ | +--------------------T-----------------------T------------------+ | ÿçûê | òèï äaííûx | ïpèìe÷aíèe | +--------------------+-----------------------+------------------+ | | x: record | | | ÏACKAËÜ | re,cm:real8; | | | | end | | +--------------------+-----------------------+------------------+ | Cè | struct complex16{ | | | | float re,im;} x | | +--------------------+-----------------------+------------------+ | Ôîðòðàí | COMPLEX*16 X | | L--------------------+-----------------------+------------------- Taáëèöa 7-13. Ýêâèâaëeíòíûe òèïû äaííûx, êoìïëeêcíûe ÷ècëa. Çaïècè Ïàñêàëÿ è còpóêòópû Cè ìoãóò òaêæe áûòü ècïoëüçoâaíû äëÿ ïepeäa÷è ëoãè÷ecêèx çía÷eíèé Ôîðòðàíà. Äëÿ ëoãè÷ecêèx çía÷eíèé Ôîðòðàíà, öeëoe "1" çía÷èò ècòèíío, íoëü "0" çía÷èò ëoæü. Taáëèöa 7-14 ïoêaçûâaeò ïpèìepû ïepeäa÷ ëoãè÷ecêèx çía÷eíèé Ôîðòðàíà. ----------------------------------------------------------------¬ | ËOÃÈ×ECKÈE ÇHA×EHÈß: ÄBA ÁAÉTA | +--------------------T-----------------------T------------------+ | ÿçûê | òèï äaííûx | ïpèìe÷aíèe | +--------------------+-----------------------+------------------+ | | x: record | | | Ïàñêàëü | logical: boolean; | | | |pad:array[0..]of byte; | | | | end | | +--------------------+-----------------------+------------------+ | | struct { | | | Cè | char logical; | | | | char pad[1]; } x; | | +--------------------+-----------------------+------------------+ | Ôîðòðàí | LOGICAL*2 X | | | | LOGICAL | ecëè $STORAGE | L--------------------+-----------------------+------------------- ----------------------------------------------------------------¬ | ËOÃÈ×ECKÈE ÇHA×EHÈß: 4 - ÁAÉTA | +--------------------T-----------------------T------------------+ | ÿçûê | òèï äaííûx | ïpèìe÷aíèe | +--------------------+-----------------------+------------------+ | | x: record | | | Ïàñêàëü | logical: boolean; | | | | pad;array[0..2]of byte| | | | end; | | +--------------------+-----------------------+------------------+ | | strucf { | | | Cè | char logical; | | | | char pad[3] | | | | } x; | | +--------------------+-----------------------+------------------+ | Ôîðòðàí | LOGICAL*4 X | | L--------------------+-----------------------+------------------- Taáëèöa 7-14. Ýêâèâaëeíòíûe òèïû äaííûx, ëoãè÷ecêèe çía÷eíèÿ. 7.9.Èñïîëüçîâàíèå èìåí ïðîöåäóð â êà÷åñòâå ïàðàìåòðîâ.Ïapaìeòpû-èìeía ïpoöeäóp ía Ïàñêàëå è Ôîðòðàíå coâìecòèìû, oäíaêo oíè íe coâìecòèìû c ïapaìeòpaìè èìeíaìè ïpoöeäóp ía Cè. Ïapaìeòpû-èìeía ïpoöeäóp Ïàñêàëÿ è Ôîðòðàíà ìoãóò áûòü ïpeäcòaâëeíû Cè còpóêòópoé, êoòopaÿ èìèòèpóeò ïocëeäoâaòeëüíocòü Ïàñêàëÿ/Ôîðòðàíà. Ecëè Bû âûçûâaeòe Cè èç Ïàñêàëÿ èëè Ôîðòðàíà, peêoìeíäóeòcÿ ècïoëüçoâaòü óêaçaòeëè ïpoöeäóp Cè. Ecëè Bû xoòèòe ïepeäaâaòü ïpoöeäópó â êa÷ecòâe ôopìaëüíoão ïapaìeòpa â ïpoöeäópû Ïàñêàëÿ èëè Ôîðòðàíà, Bû äoëæíû ècïoëüçoâaòü apãóìeíòû Ïàñêàëÿ, òaê êaê íè Ôîðòðàí ,íè Ïàñêàëü íe âûçûâaþòcÿ ÷epeç óêaçaòeëè ïpoöeäóp. Ècïoëüçóéòe Taáëèöó 7-10 ïpè paáoòe c óêaçaòeëÿìè ïpoöeäóp. Boçâpaò çía÷eíèé. Ïpoãpaììû ía Ôîðòðàíå è Ïàñêàëå ìoãóò âoçâpaùaòü çía÷eíèÿ â ïpoãpaììû ía Cè. ×òoáû Cè ïpoãpaììû oápaáaòûâaëè âoçâpaùaeìûe âeëè÷èíû ïpaâèëüío, ïpoãpaìècò äoëæeí paçáèpaòücÿ â câÿçÿx ìeæäó òèïaìè äaííûx â paçëè÷íûx ÿçûêax. Koìïèëÿòop Cè ïpoèçâoäèò ïpeoápaçoâaíèÿ âoçâpaùaeìûx âeëè÷èí äo ïepeäa÷è óïpaâëeíèÿ âûçûâaþùèì ïpoöeäópaì. Öeëûe âeëè÷èíû, êoòopûe ìeíüøe ÷eì int pacøèpÿþòcÿ äo paçìepa int, çía÷eíèÿ c ïëaâaþùeé òo÷êoé ïpeoápaçóþòcÿ â âeëè÷èíû c äâoéíoé òo÷íocòüþ. Ýòè òèïû oïècaíû â paçäeëax "Öeëûe" è "Äeécòâèòeëüíûe ÷ècëa". Koìïèëÿòop Cè ïpoâepÿeò còpóêòópèpóeìûe âoçâpaùaeìûe çía÷eíèÿ â 4 áaéòa èëè ìeíüøe è âoçâpaùaeò èx êaê öeëûe cooòâeòcòâóþùeão paçìepa. 8.COBMECTHOE ÏOËÜÇOBAHÈE ÄAHHÛMÈ.Ïàñêàëü è Cè ìoãóò ccûëaòücÿ ía oáùèe äaííûe äpóã äpóãa ïpè çaäaíèè cooòâeòcòâóáùèx aòpèáóòoâ è ècïoëüçoâaíèè ïpaâèëüíûx co- ãëaøeíèé oá èäeíòèôèêaòopax è êëþ÷eâûx cëoâax (Bce còaòè÷ecêèe ïepeìeííûe Ïàñêàëÿ äoëæíû áûòü oïècaíû c êëþ÷eâûì cëoâoì "near" â Cè.) COMMON-áëoêè Ôîðòðàíà ÿâëÿþòcÿ oáùeäocòóïíûìè ïoëÿìè äaííûx. Oíè coâìecòèìû c âíeøíèìè ïepeìeííûìè oáúeêòaìè äaííûx â Cè, è ïepeìeííûìè çía÷eíèÿìè â Ïàñêàëå, íaïpèìep. Oäíaêo, äëÿ òoão ÷òoáû ìoæío áûëo oápaòèòücÿ â COMMON-áëoê èç Ïàñêàëÿ, ýòoò COMMON-áëoê äoëæeí èìeòü aòpèáóò NEAR. Heïoìe÷eííûé COMMON èìeeò oáùee èìÿ CMMQQ. Ôîðòðàí íe ìoæeò oápaùaòücÿ ê oáúeêòaì äaííûx Cè. Ho Bû ìoæeòe ècïoëüçoâaòü ïpoöeäópó LOC â Ôîðòðàíå, íaéòè aäpec COMMON- áëoêa, ïepeäaòü aäpec â Cè è ïpoöeäópó Ïàñêàëÿ, çaòeì ècïoëüçoâaòü ýòoò aäpec èç Cè è Ïàñêàëÿ. Haïpèìep:INTERFACE TO SUBROUTINE CFUNC[C] (EXTR) INTEGER * EXTR END COMMON/EXT/ I,Y CALL CFUNC (LOCI)) . . . . . END void cfunc (ext) struct {lony i, j;}* ext { ext - >i = ext->j; 9.BBOÄ È BÛBOÄ.Ôaéë ìoæeò áûòü oòêpûò òoëüêo äëÿ oäíoão ÿçûêa oäíoâpeìeíío. Ècêëþ÷eíèeì ÿâëÿeòcÿ còaíäapòíûé êaíaë âûâoäa èíôopìaöèè ía òepìèíaë. ×òoáû ïpoãpaììû ía Cè èëè Ïàñêàëå ìoãëè âûäaâaòü èíôopìaöèþ ía òepìèíaë cpaçó ïocëe êaæäoão oïepaòopa Ôîðòðàíà WRITE, ècïoëüçóþùeãocÿ äëÿ âûâoäa ía òepìèíaë äoëæeí cëeäoâaòü oïepaòop: WRITE(*,*), åñëè âîçìîæíî, ÷òî ïðîöåäóðà íà Ñè èëè Ïàñêàëå ìîãëà ñðàçó ïîñëå ýòîãî ïèñàòü íà òåðìèíàë. Çäecü oí ècïoëüçóeòcÿ äëÿ óíè÷òoæeíèÿ cèìâoëoâ óïpaâëeíèÿ êapeòêoé.10.COOÁÙEHÈß OÁ OØÈÁKAX.Oøèáêè íaéäeííûe âo âpeìÿ êoìïèëÿöèè, âûäaþòcÿ êoìïèëÿòopoì òoão ÿçûêa â êoòopoì oáíapóæeía oøèáêa, áoëüøèícòâo cooáùeíèé oá oøèáêax c÷eòa óêaçûâaþò ía ÿçûê ìoäóëÿ, â êoòopoì ïpoèçoøëa oøèáêa. Oäíaêo oøèáêè âûçâaííûìè âeëè÷èíaìè c ïëaâaþùeé òo÷êoé ìoãóò áûòü âûäaíû ëþáûì ÿçûêoì, ècïoëüçóþùèìcÿ â ïpoãpaìe. Äëÿ Ôîðòðàíà è Ïàñêàëÿ cooáùeíèÿ oá ýòèx oøèáêax íe oòëè÷aþòcÿ äpóã oò äpóãa. B Cè cooáùeíèÿ íe èìeþò íoìepoâ.11.BOÇMOÆHOCTÈ ÔOPTPAHA, ÏOÄÄEPÆÈBAÞÙÈE CMEØAHHOE ÏPOÃPAMMÈPOBAHÈE.Hèæe ïepe÷ècëeííûe âoçìoæíocòè MC-Ôîðòðàíà ïoçâoëÿþò ïècaòü ïpoãpaììû, cocòoÿùèe èç ìoäóëeé MC-Ôîðòðàíà, MC-Ïàñêàëÿ è MC-Cè.
11.1.Oïepaòop INTERFACE.Oïepaòop INTERFACE ècïoëüçóeòcÿ äëÿ oïècaíèÿ ïpoöeäóp íaïècaíûx ía äpóãèx ÿçûêax è çaäaíèÿ coãëaøeíèé cooòâeòcòâóþùèx ýòèì ÿçûêaì. Ïoëíoe oïècaíèe ýòoão oïepaòopa íaxoäèòcÿ â ãëaâe 3 "Oïepaòopû".11.2.Aòpèáóòû.Aòpèáóòaìè çaäaeòcÿ äoïoëíèòeëüíaÿ èíôopìaöèÿ o ïepeìeííoé, òèïa ïepeìeííoé, ïoäïpoãpaììe, èëè oá apãóìeíòe ïoäïpoãpaììû. Oíè ìoãóò ècïoëüçoâaíû â oïècaíèè ïoäïpoãpaìì, ïocëe oïècaíèÿ òèïa, è â oïepaòopax INTERFACE. Aòpèáóòû ïèøóòcÿ ïocëe oáúeêòa, ía êoòopûé oíè ccûëaþòcÿ. Cèíòàêñèñ:------------------------------------------------------------ [aòpèáóò [, aòpèáóò] ] ------------------------------------------------------------ ALIAS Ýòoò aòpèáóò çaäaeò âíeøíee èìÿ ïoäïpoãpaììû, oòëè÷íoe oò èìeíè çaäaííoão â oïècaíèè. ------------------------------------------------------------- ALIAS : ñòðîêà ------------------------------------------------------------- ãäe: ñòðîêà còpo÷íaÿ êoícòaíòa ÔOPTPAHA. Bû äoëæíû oápaùaòücÿ ê ïoä- ïpoãpaììe ïo èìeíè, çaäaííoìó â oïècaíèè â ïpeäeëax ìoäóëÿ êoìïèëÿöèè, aòpèáóò alias ïoçâoëÿeò ccûëaòücÿ ía ïoäïpoãpaììó èç äpóãoão ìoäóëÿ êoìïèëÿöèè. Taêæe, Bû ìoæeòe ècïoëüçoâaòü ALIAS â oïepaòope INTERFACE; ïepeoïpeäeëèâ èìÿ ïoäïpoãpaììû â äpóãoì ìoäóëe êoìïèëÿöèè, êoòopûe Baì íóæío âûçâaòü. Haïpèìep, ôaéë A coäepæèò: INTERFACE TO SUBROUTINE F1[ALIAS:"F&&*-PPP"] END INTERFACE TO SUBROUTINE F2[ALIAS: "FFFFFFF2"] END SUBROUTINE G1 [ALIAS: "VERY LONG NAME"] CALL F1 CALL F2 END SUBROUTINE ENDè ôaéë B coäepæèò: INTERFACE TO SUBROUTINE F1 [ALIAS: "F&&-PPP"] END INTERFACE TO SUBROUTINE K1 [ALIAS: "VERY LONC NAME"] END SUBROUTINE F2 [ALIAS: "FFFFFFF2"] END SUBROUTINE F1 CALL F1 CALL K1 CALL F2 ENDçäecü ïoäïpoãpaììa F1 â Ôàéëå A câÿçûâaþòcÿ c F1 â ôaéëe B, ïoäïpoãpaììa F2 â ôaéëe A câÿçûâaeòcÿ c F2 â ôaéëe B, è ïoäïpoãpaììa G1 â ôaéëe A câÿçûâaeòcÿ c K1 â ôaéëe B. Ëþáoé cèìâoë ècïoëüçóþùèécÿ â còpoêe Ôîðòðàíà, ìoæeò áûòü ècïoëüçoâaí â string. Co string íe ïpoècxoäèò íèêaêèx ïpeoápaçoâaíèé. Haïpèìep, ïpoïècíûe áóêâû íe ïpeoápaçóþòcÿ â çaãëaâíûe. Ýòo ïoëeçío ïpè paáoòe c ÿçûêaìè, çaâècÿùèìè oò paçìepa áóêâû, íaïpèìep Cè.
B ïpèìepe 1, öeëaÿ ïepeìeííaÿ X ïepeäaeòcÿ çía÷eíèeì. B ïpèìepe 2, öeëaÿ ïepeìeííaÿ X ïepeäaeòcÿ ccûëêoé c ècïoëüçoâaíèeì êopoòêoão aäpeca. B ïpèìepe 3, ïoäïpoãpaììa F èìeeò èìÿ other Name For F ça ïpeäeëaìè ìoäóëÿ êoìïèëÿöèè. B ïpèìepe 4, F-ÿâëÿeòcÿ ôóíêöèeé Ïàñêàëÿ, c apãóìeíòaìè I,J,K, oïècaííûìè, êaê öeëûe Cè. 11.3.Ôóíêöèè aäpecoâ.B ýòoé âepcèè Ôîðòðàíà ââeäeíû âcòpoeíûe ôóíêöèè, äëÿ êoòopûx
apãóìeíòoì ÿâëÿeòcÿ ïepeìeííaÿ, a çía÷eíèeì ee aäpec:
B ýòèx ôóíêöèÿx â êa÷ecòâe ôaêòè÷ecêoão ïapaìeòpa ïpaêòè÷ecêè ìoæeò áûòü ècïoëüçoâaí ëþáoé apãóìeíò. Haïpèìep, ecëè Bû ècïoëüçóeòe âûpaæeíèÿ, oápaùeíèÿ ê ôóíêöèÿì, èëè êoícòaíòû, ïepeìeííaÿ ïepeäaeòcÿ çía÷eíèeì, è cooòâeòcòâeíío aäpec ýòoé ïepeìeííoé còaíoâèòcÿ çía÷eíèeì ôóíêöèè. Ecëè Bû ïepeäaeòe èìÿ ïoäïpoãpaììû â êa÷ecòâe ôaêòè÷ecêoão ïapaìeòpa äëÿ LOCFAR, çía÷eíèeì ôóíêöèè áóäeò aäpec ía÷aëa ïoäïpoãpaììû. Beëè÷èía ÿâëÿþùaÿcÿ çía÷eíèeì LOCNEAR cooòâeòcòâóeò óêaçaòeëþ near â Cè è òèïó ADR â Ïàñêàëå. Ïoäoáío ýòoìó, âeëè÷èía ÿâëÿþùaÿcÿ çía÷eíèeì LOCEFAR ýêâèâaëeíòía óêaçaòeëþ far è óêaçaòeëþ ía ïpoöeäópó â Cè, è òèïaì ADR, ADSFUNC, ADSPROC â Ïàñêàëå. LOCNEAR ìoæeò áûòü òoëüêo ècïoëüçoâaí ïpè paáoòe c oáúeêòaìè, çaíeceííûìè â íeïoìe÷eííûé ceãìeíò äaííûx (íaïpèìep, c ýëeìeíòaìè NEAR COMMON-áëoêoâ è oáúeêòaìè íe oïècaííûx c ïoìoùüþ $LARGE ìeòa- êoìaíäû). 11.4.Còpoêè CÈ.Còpo÷íûe âeëè÷èíû â Cè çaêaí÷èâaþòcÿ ëèòepoé ÏÓCTO (CHAR(O)) è ìoãóò coäepæaòü cïeöèaëüíûe cèìâoëû (òaêèe êaê íoâaÿ còpoêa è backspace). Ýòè ëèòepû cïeöèôèpóþòcÿ oápaòíûì cëýøeì(\) â êa÷ecòâe escape. Ècïoëüçoâaíèe còaíäapòíûx âoçìoæíocòeé Ôîðòðàíà ïpè oïècaíèè òaêèx còpoê ïpèâoäèò ê oøèáêe. MC-Ôîðòðàí âepcèè 3.30 ècïoëüçóeò pacøèpeííóþ còpo÷íóþ êoícòaíòó; oápaòíûé cëýø pacìaò- pèâaeòcÿ êaê escape. B òaáëèöe 7-15 oïècaíû öeïo÷êè escape paçpe- øeííûe â ýòoé âepcèè. ----------------------------T----------------------------------¬ | ÖEÏO×KA escape | CÈMBOË | +---------------------------+----------------------------------+ | \n | íoâaÿ còpoêa | | \t | ãopèçoíòaëüíaÿ òaáóëÿöèÿ | | \v | âepòèêaëüíaÿ òaáóëÿöèÿ | | \b | backspace | | \r | âoçâpaò êapeòêè | | \f | ïoäa÷a còpoêè | | \\ | oápaòíûé cëeø | | \ddd | áëoê áèòoâ | L---------------------------+----------------------------------- Taáëèöa 7-15. Còpo÷íûe öeïo÷êè escape \ddd ïoçâoëÿeò ëþáóþ ëèòepó èç êoäa ACSII âûpaçèòü â âocìepè÷íoì êoäe. Haïpèìep, \O èìeeò êoä 0. Ecëè còpoêa coäepæèò ïocëeäoâaòeëüíocòü, íe óïoìÿíóòóþ âûøe (íaïpèìep \x èëè \z), oápaòíûé cëeø èãíopèpóeòcÿ. Ëèòepa ÏÓCTO aâòoìaòè÷ecêè äoáaâëÿeòcÿ ê êoíöó còpoêè. Ocòaëüíaÿ ÷acòü còpoêè ìoæeò áûòü còpoêoé Ôîðòðàíà (cì.ãëaâó 2). Còpoêa "\abcd"C, íaïpèìep, cooòâeòcòâóeò còpoêe "\abcd". [an error occurred while processing the directive] [an error occurred while processing the directive] [an error occurred while processing the directive] [an error occurred while processing the directive] |