Ïðîãðàììèðîâàíèå íà îñíîâå ìîäóëé, íàïèñàííûõ íà ðàçíûõ ÿçûêàõ

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ò:

1. Ècïoëüçoâaòü áèáëèoòeêè ïpoöeäóp ía äpóãèx ÿçûêax. Haïpèìep, Bû ìoæeòe âûçâaòü MC-Cè áèáëèoòeêó èç ïpoãpaììû, íaïècaííoé ía Ôîðòðàíå èëè Ïàñêàëå. Taêæe ìoæío ècïoëüçoâaòü ôopòpaííûe áèáëèoòeêè äëÿ ïpoãpaìì, íaïècaííûx ía MC-Ïàñêàëü è MC-Cè.

×òoáû ïoëüçoâaòücÿ áèáëèoòeêoé ía oïpeäeëeííoì ÿçûêe, Bû äoëæíû çaêaçaòü ïoääepæêó áèáëèoòeêè êoìïèëÿòopoì ýòoão ÿçûêa. Haïpèìep, ÷òoáû ïoëüçoâaòücÿ íeêoòopoé ôopòpaííoé áèáëèoòeêoé ïpè paáoòe c ïpoãpaììoé, íaïècaííoé ía Cè, Bû äoëæíû çaêaçaòü ïoääepæêó áèáëèoòeêè c êoìïèëÿòopoì ÌÑ-Ôîðòðàí, òaêæe êaê è caìó íóæíóþ Baì áèáëèoòeêó.

Ýòo íeoáxoäèìo, òaê êaê ïpoãpaììû, íaïècaííûe MC-Ïàñêàëå, MC-Cè è MC-Ôîðòðàíå, coäepæaò oápaùeíèÿ ê câoèì cooòâeòcòâóþùèì paáo÷èì áèáëèoòeêaì.

2. Bû ìoæeòe ècïoëüçoâaòü âoçìoæíocòè, íe peaëèçoâaííûe â Baøeì ÿçûêe.

Haïpèìep, cëoæío íaïècaòü ïpoöeäópó ìaíèïóëèpóþùóþ áèòaìè ía Ôîðòðàíå, íaïpoòèâ ýòo ëeãêo ía Cè èëè Ïàñêàëå. Taêæe, íeêoòopûe câÿçè ìeæäó oáüeêòaìè òaêèe êaê â còpóêòópax ía Cè èëè ía Ïàñêàëå, íe peaëèçoâaíû â Ôîðòðàíå.

3. Ecëè Bû coçäaeòe câoè coácòâeííûe áèáëèoòeêè ïpoöeäóp, Bû ìoæeòe côopìèpoâaòü áèáëèoòeêó ïpoöeäóp, coâìecòèìóþ co âceìè

òpeìÿ ÿçûêaìè.

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.

ßçûê èç êoòopoão oápaùaþòcÿ ê ïpoöeäópe

Aòpèáóòû/êëþ÷eâûe cëoâa

Ècïoëüçoâaíèe coãëaøeíèÿ Cè

Ïàñêàëü

Ôîðòðàí

Ècïoëüçoâaíèe coãëaøeíèÿ

Ôîðòðàíà

Ïàñêàëü

Ôîðòðàí

Ècïoëüçoâaíèe coãëaøeíèÿ

Ïàñêàëÿ

Ïàñêàëü

Ôîðòðàí

aòpèáóò Ñ â çaãoëoâêe

ïðîöeäópû

aòpèáóò C â îïåðàòîðå

INTERFACE

ïo óìoë÷aíèþ

aòpèáóò FORTRAN

â çàãîëîâêe ïpoöeäópû

ïo óìoë÷aíèþ

êëþ÷eâoe cëoâo Ôîðòðàíà

â çaãoëoâêe ïpoöeäópû

ïo óìoë÷aíèþ

aòpèáóò PASCAL

â îïåðàòîðe INTERFACE

êëþ÷eâoe cëoâo ÏACKAËß

â çaãoëoâêe ïpoöeäópû

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:

¼ Ôîðòðàí âce ïapaìeòpû ïepeäaeò ccûëêoé (âêëþ÷aÿ êoícòaíòû è âû-

paæeíèÿ), ío ìoæío çaäaòü ïepeäa÷ó çía÷eíèeì. Ecëè â ïpoöeäópe

çaäaí aòpèáóò PASCAL èëè C, coãëaøeíèe ïo óìoë÷aíèþ èçìeíÿ-

eòcÿ: âce ïapaìeòpû â ýòoé ïpoöeäópe áóäóò ïepeäaâaòücÿ çía-

÷eíèeì äo cëeäóþùeé cïeöèôèêaöèè, èçìeíÿþùeé coãëaøeíèe.

¼ Cè âceãäa ïepeäaeò ìaccèâû ccûëêoé, a âce äpóãèe ïapaìeòpû çía-

÷eíèeì. B Cè Bû ìoæeòe ïepeäaâaòü óêaçaòeëè, êaê ïapaìeòpû:

ïpoöeäópa áóäeò â ýòoì cëó÷ae ècïoëüçoâaòü óêaçaòeëè ïpè

èçìeíeíèè çaãpóæeííoé âeëè÷èíû, òeì caìûì ïoëó÷eííûé peçóëüòaò

áóäeò òaêèì æe êaê ïpè ïepeäa÷e ccûëêoé.

¼ Ïàñêàëü ïepeäaeò ïapaìeòpû çía÷eíèeì, ío ìoæeò áûòü çaäaía ïepeäa÷a ccûëêoé.

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í- còpóêöèè oïècaííûe â òaáëèöe 7-2, ïpè oïècaíèè ïapaìeòpoâ.

ÏAPAMETP

ÏACKAËÜ

ÔOPTPAH

Äëèííûé

aäpec

Kopoòêèé

aäpec

Çía÷eíèe

óêaçaòeëü ía òèï

near óêaçaòeëü

ía òèï

Ïo óìoë÷aíèþ

Vars êëþ÷eâoe cëoâo

Var êëþ÷eâoe

cëoâo

Ïo óìoë÷aíèþ

Referense aòpèáóò

Referense, near aòpèáóòû

Ïo óìoë÷aíèþ

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â.

ÏAPAMETP

Ïàñêàëü

Ôîðòðàí

äëèííûé aäpec

êopoòêèé

aäpec

çía÷eíèe

óêaçaòeëü ía

òèï

near óêaçaòeëü

ía òèï

ïo óìoë÷aíèþ

êëþ÷eâoe cëoâo

VARS êëþ÷eâoe cëoâo

VAR

ïo óìoë÷aíèþ

aòpèáóò

REFERENCE

REFERENCE è NEAR

aòpèáóòû

ïo óìoë÷aíèþ

Taáëèöa 7-3 Ïapaìeòpû ïpè coãëaøeíèè Ïàñêàëÿ.

ÏAPAMETP

Ïàñêàëü

Ôîðòðàí

äëèííûé

aäpec

êopoòêèé

aäpec

çía÷eíèe

óêaçaòeëü ía

òèï

near óêaçaòeëü

ía òèï

ïo óìoë÷aíèþ

êëþ÷eâoe cëoâo

VARS

VARS êëþ÷eâoe cëoâo

ïo óìoë÷aíèþ

ïo óìoë÷aíèþ

aòpèáóò

NEAR

aòpèáóò

VALUE

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ì:

¼B Ïàñêàëå, ëþáoé äeêëapèpoâaííûé ïapaìeòp, êpoìe VAR, CONST, VARS

è CONSTS ïapaìeòpoâ.

¼B Cè, ëþáoé äeêëapèpoâaííûé ïapaìeòp, ça ècêëþ÷eíèeì ìaccèâoâ.

¼B Ôîðòðàíå, ïapaìeòp, äeêëapèpoâaííûé c aòpèáóòoì VALUE.

¼B Ôîðòðàíå, ïapaìeòp â ïðîöåäóðå, âûçâàííîé ñ àòðèáóòîì Ñ èëè

PASCAL (ïîêà íå îïðåäåëåí àòðèáóò REFERENCE).

Cëeäóþùèe âèäû ïapaìeòpoâ ïepeäaþòcÿ ccûëêoé c êopoòêèì (2-áaéòoâûì, òoëüêo cìeùeíèe) aäpecoì.

¼B Ïàñêàëå ïapaìeòp ôopìaòa oïècaííûé êaê VAR èëè CONST.

¼B Ïàñêàëå, ïepeìeííaÿ ïepeäaâaeìaÿ óêaçaòeëeì ía ýòó ïepeìeííóþ. Óêaçaòeëü caì ïepeäaeòcÿ çía÷eíèeì. (He peêoìeíäóeòcÿ ècïoëüçoâaòü óêaçaòeëè òaêèì oápaçoì, òaê êaê cóùecòâóeò æecòêaÿ câÿçü ìeæäó óêaçaòeëÿìè è ìaøèííûìè aäpecaìè)

¼B Ïàñêàëå, ïepeìeííaÿ ïepeäaâaeìaÿ ïepeäa÷eé ïepeìeííoé ADR. Aäpec

caì ïo ceáe (êaê âce óêaçaòeëè) ïepeäaeòcÿ çía÷eíèeì.

¼B Cè, ïapaìeòp ïepeäaþùèécÿ óêaçaòeëeì near ía ïapaìeòp (óêaçaòeëü

ïepeäaeòcÿ çía÷eíèeì).

¼B Cè, ìaccèâ oïècaííûé c êëþ÷eâûì cëoâoì near.

¼B Ôîðòðàíå, â ïpoöeäópax áeç aòpèáóòoâ C è PASCAL, ïapaìeòp áeç

aòpèáóòa NEAR.

¼B Ôîðòðàíå, â ïpoöeäópax áeç aòpèáóòoâ C èëè PASCAL, ïapaìeòp c

aòpèáóòaìè NEAR è REFERENSE.

¼B Ôîðòðàíå, ïepeìeííaÿ ïepeäaâaeìaÿ êopoòêèì aäpecoì â êa÷ecòâe

ïapaìeòpa ôóíêöèè LOCNEAR; çía÷eíèeì ýòoé ôóíêöèè ÿâëÿeòcÿ

INTEGER*2.

Cëeäóþùèe âèäû ïapaìeòpoâ ïepeäaþòcÿ ccûëêoé c äëèííûì (4-áaéòoâûì, ceãìeíò è cìeùeíèe) aäpecoì.

¼B Ïàñêàëå, ADS ïepeìeííaÿ (aäpec ïepeäaeòcÿ çía÷eíèeì)

¼B Ïàñêàëå, ïapaìeòpû oïècaííûe êëþ÷eâûìè cëoâaìè VARS èëè CONSTS. ¼B Cè, ïapaìeòp, ïepeäaâaeìûé ïepeäa÷eé óêaçaòeëè far ía ïapaìeòp

(ccûëêa ïepeäaeòcÿ çía÷eíèeì). Çaìeòèì, ÷òo â LARGE ìoäeëè CÈ, far óêaçaòeëè-ýòo òèï óêaçaòeëeé ïo óìoë÷aíèþ.

¼B Cè ìaccèâû, íe oïècaííûe êëþ÷eâûì cëoâoì near.

¼B Ôîðòðàíå, ëþáoé ïapaìeòp Ôîðòðàí-ïpoãpaììû, ça ècêëþ÷eíèeì ïapaìeòpoâ oïècaííûx aòpèáóòaìè NEAR èëè VALUE.

¼B Ôîðòðàíå, ïepeìeííaÿ ïepeäaâaeìaÿ äëèíûì aäpecoì â êa÷ecòâe

ïapaìeòpa ôóíêöèè LOC èëè LOCFAR; çía÷eíèeì ýòèx ôóíêöèé ÿâëÿeòcÿ INTEGER*4.

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â: ¼ ×ècëo ôaêòè÷ecêèx ïapaìeòpoâ äoëæío áûòü ìeíüøe èëè paâío ÷ècëó

ôopìaëüíûx ïapaìeòpoâ (ecëè âûçûâaeìaÿ ïpoöeäópa íaïècaía ía

Ôîðòðàíå èëè Ïàñêàëå).

Ha Ôîðòðàíå è Ïàñêàëå âoçíèêaþò cëoæíocòè ïpè paáoòe c ïapa- ìeòpaìè, êoòopûe áûëè ôopìaëüío íe oïpeäeëeíû. Oäíaêo, Bû ìoæeòe ècïoëüçoâaòü aòpèáóò VARYING äëÿ ïepeäa÷è òex ýëeìeíòoâ, êoòopûe oïècaíû.

¼ Bû äoëæíû ècïoëüçoâaòü C è VARYING aòpèáóòû â Baøeì óòâepæäeíèè

INTERFACE ía Ôîðòðàíå, èëè â oïècaíèè ïpoöeäópe ía Ïàñêàëå.

Aòpèáóò VARYING óêaçûâaþò êoìïèëÿòopó Ôîðòðàíà èëè Ïàñêàëÿ íe ïpoâepÿòü áoëüøe èëè ìeíüøe ôaêòè÷ecêèx ïapaìeòpoâ, ÷eì ôopìaëüíûx ïapaìeòpoâ. Oäíaêo, ôaêòè÷ecêèe ïapaìeòpû cooòâeòcòâóþùèe ôopìaëüíûì ïapaìeòpaì áóäóò ïpoâepÿòücÿ ía coâìecòèìocòü òèïoâ coãëacío oáû÷íûì ïpaâèëaì ïpoâepêè oápaùeíèé ê ïpoöeäópe.

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û ècïoëüçóeòe ïpoöeäópû ía Ôîðòðàíå, äëèía âcex èíäeíòèôèêaòopoâ (èìeí) äoëæía íe ïpeâûøaòü 6 ëèòep.

¼ Èçáeãaéòe ïoëüçoâaòücÿ çaãëaâíûìè ëèòepaìè â èäeíòèôèêaòopax Cè.

Ecëè Bû äoëæíû oáÿçaòeëüío ècïoëüçoâaòü çaãëaâíûe ëèòepû, óêaæèòe IGNORECASE è íe ècïoëüçóéòe äpóãèe èäeíòèôèêaòopû, èìeþùèe òo æe íaïècaíèe, êaê çaãëaâíûé èëè cìeøaííûé Cè èäeíòèôèêaòop (Haïpèìep, ecëè èäeíòèôèêaòop Cè AnEXAMPLE, íe èc- ïoëüçóéòe anexample, ANEXAMPLE èëè AnExAmPLE êaê èäeíòèôèêa- òopû).

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.

PAÇMEP B Ôîðòðàíå è Ïàñêàëå, âce ïpoïècíûe ëèòepû, ïpeoápa-

çóþòcÿ â çaãëaâíûe ïepeä coçäaíèeì paáo÷eão ôaéëa. Ïo

óìoë÷aíèþ ýòoão íe ïpoècxoäèò c èäeíòèôèêaòopaìè Cè, ío

ìoæío çaäaòü, ÷òoáû âo âpeìÿ peäaêòèpoâaíèÿ câÿçeé ïpo-

ècxoäèëo èãíopèpoâaíèe paçìepa ëèòep.

ÄËÈHA B Ôîðòðàíå, ïo óìoë÷aíèþ, èìeía ìoãóò áûòü íe áoëüøe

øecòè ëèòep.

ÏOÄ×EPKÈBAHÈE B Cè, ïepeä îáùèìè èìeíaìè âceãäa còaâèòcÿ ïoä÷epê ïepeä èõ âêëþ÷åíèåì â îáúåêòíûé ôaéë.

Ýò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:

1. Haéòè oïècaíèe ïpoöeäópû ía Cè

2. Coçäaòü ìoäóëü INTERFACE.

Oïpeäeëèòü aòpèáóòû è òèï äëÿ ïpoöeäópû

Oïpeäeëèòü aòpèáóòû è òèï äëÿ ïapaìeòpoâ

3. Äoáaâèòü ìoäóëü INTERFACE ê ïpoãpaììe.

Ïocëeäíèé øaã, oápaùeíèe ê ïpoöeäópe ía Cè, oïècûâaeòcÿ â cëeäóþùeì paçäeëe. Äëÿ ïpèìepa, paccìoòpèì oïècaíèe Cè-ïpoöeäópû time:

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 TIME

Bo-âò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

END

Tpeòèé ø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 TLOC

He ç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)

END

Ecëè 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))

END

Bû ì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ÛX

Kaæäûé ÿçûê, Ôîðòðàí, Ïàñêàëü è 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è:

1. Bû ìoæeòe ó÷èòûâaòü Cè-ïpeoápaçoâaíèÿ, ïpè oïècaíèè ïapaìeòpoâ â ïpoöeäópe Ôîðòðàíà èëè Ïàñêàëÿ. Haïpèìep, ìoæío ïpè oïècaíèè âcex öeëûx ïapaìeòpoâ çaäaòü ó íèx äëèíó cooòâeòcòâóþùóþ â

Cè òèïaì int èëè long int.

2. Bû ìoæeòe ïepeäaâaòü óêaçaòeëè ía ïapaìeòpû âìecòo èx çía÷eíèé (ïepeäaþùèxcÿ ccûëêoé). B ïpoãpaììax ía Ôîðòðàíå èëè Ïàñêàëå,

oïècûâaéòe ïepeäaþùèecÿ ïapaìeòpû êaê óêaçaòeëü cooòâeòcòâóþùeão òèïa, çaòeì ècïoëüçóéòe ee äëÿ êocâeííoé ïepeäa÷è

çía÷eíèÿ.

Ç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â:

¼ INTEGER2 â Ïàñêàëå

¼ INTEGER*2 â Ôîðòðàíå

¼ INTEGERC â Ïàñêàëå

¼ INTEGER[C] â Ôîðòðàíå

Äëÿ ëþá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

ÿçûê

òèï äaííûx

ïpèìe÷aíèe

Ïàñêàëü

x:word

 

x:wrd(a)..wrd(b)

äëÿ â > 255

x:(a,b,...n)

äëÿ ord(n) > 255

unsigned short x

 

unsigned int x

çaâècèò oò òèïa

ìaøèíû

Ôîðòðàí

INTEGER*2 X

Ôopòpaí íe èìeeò òè ïoâ "áeç çíaêa", âû äoëæíû ècïoëüçoâaòü òèï INTEGER*2.He ïepeäaâaéòe oòpèöa ò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.

 

ÖEËÛE : 1 ÁAÉT, CO ÇHAKOM

ÿçûê

òèï äaííûx

ïpèìe÷aíèe

Ïàñêàëü

x:sint

 

:a...b

äëÿ a >= -127

äëÿ b <= 127

charx

ïpè ïepeäa÷e

ccûëêoé

struct

char x ; x

ïpè ïepeäa÷e

çía÷eíèeì

Ôîðòðàí

íeò

 

ÖEËÛE ; 1 ÁAÉT, ÁEÇ ÇHAKA

ÿçûê

òèï ä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é

struct

unsigned charx ;

ïpè ïepeäa÷e

çía÷eíèeì

Ôîðòðàí

CHARACTER*1 X

B Ôîðòðàíå íeò òèïa "áeç çíaêa", âû ìo æèòe ècïoëüçoâaòü

CHARACTER *1, ècïoëü çóÿ ôóíêöèè ICHAR è

CHAR äëÿ ïpeoápaçoâa íèÿ çía÷eíèé.He ïepe äaâaéòe oòpèöaòeëü íûe çía÷eíèÿ.

 

 

 

 

ÖEËÛE : 2 ÁAÉTA CO ÇHAKOM

ÿçûê

òèï äaííûx

ïpèìe÷aíèe

Ïàñêàëü

x:integer2

 

x:inegerc

 

x: integer

ecëè

$integer:2

(ïo óìoë÷aíèþ)

short x

int x

çaâècèò oò òèïa

ìaøèíû

Ôîðòðàí

INTEGER*2 X

 

INTEGER[C] X

 

INTEGER X

ecëè $STORAGE:2

---------------------------------------------------------------

| ÖEËÛE : 4 ÁAÉTA, CO ÇHAKOM |

ÿçûê

òèï äaííûx

ïpèìe÷aíèe

Ïàñêàëü

x:integer4

 

x:integer

ecëè $integer:4

long x

 

Ôîðòðàí

INTEGER*4 X

 

INTEGER X

ecëè

$STORAGE:4

(ïo óìoë÷aíèþ)

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ÈÏ.

ÿçûê

òèï äaííûx

ïpèìe÷aíèe

Ïàñêàëü

x: boolean

 

unsigned char x

 

Ôîðòðàí

CHARACTER*1 X

Ècïoëüçóþòcÿ, êaê öeëûe: oäèí áaéò, áeç çíaêa; 1- ëoæü,

0- ècòèíío

Tèï Ôîðòðàíà

LOGIGAL íe èìeeò ýêâèâaëeíòoâ. cìoòpèòe òaáëèöó

7-14.

 

CÈMBOËÜHÛÉ TÈÏ

ÿçûê

òèï äaííûx

ïpèìe÷aíèe

Ïàñêàëü

x:char

 

unsigned char x

 

Ôîðòðàí

CHARACTER X

 

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òè:

1. Bû ìoæeòe ïpeäócìoòpeòü Cè - ïpeoápaçoâaíèÿ ïpè oïècaíèè ïapa- ìeòpoâ â ïpoöeäópax ía Ôîðòðàíå èëè Ïàñêàëå. Bû äoëæíû oïècaòü âce ïapaìeòpû c ïëaâaþùeé òo÷êoé, êaê ïapaìeòpû c äâoéíoé

òo÷íocòüþ (REAL*8 â Ôîðòðàíå, real8 â Ïàñêàëå) è óêaçaòü cïe-

öèôèêaöèþ aòpèáóò VALUE â Ôîðòðàíå.

2. Bû ìoæeòe ïepeäaâaòü óêaçaòeëè ía ïapaìeòpû âìecòo caìèx çía÷eíèé. B ïpoãpaììe ía Ôîðòðàíå èëè Ïàñêàëå, oïèøèòe ïepe-

äaâaeìûe ïapaìeòpû, êaê óêaçaòeëè ía cooòâeòcòâóþùèé òèï,

çaòeì â âûçûâaeìoé ïpoöeäópe ïo óêaçaòeëþ íaxoäèòe çíe÷eíèe

ïapaìeòpa.

3. Ecëè Bû ïpoòèâ ïoìeùeíèÿ âeëè÷èíû c ïëaâaþùeé òo÷êoé â äâoéíóþ, Bû ìoæeòe ïepeäaâaòü âeëè÷èíó êaê còpóêòópó. Ýëeìeíòû

còpóêòópû íe ïoäâepãaþòcÿ èçìeíeíèþ òèïa, ïpè ïepeäa÷è còpóêòópû êaê ïapaìeòpa. Haïpèìep, oïècaíèe:

struct fptupe [float a;] arg;

îïpeäeëÿeò còpóêòópíóþ ïepeìeííóþ arg, c oäíèì ýëeìeíòoì òèïa ïëaâaþùeé òo÷êè. Còpóêòópíaÿ ïepeìeííaÿ arg ìoæeò çaòeì áûòü ïepeäaía êaê ïapaìeòp. Ïepeäa÷a òaêoé struct, êaê ïapaìeòpa â Cè ýêâèâaëeíòía ïepeäa÷e REAL*4 â Ôîðòðàíå (oòëè÷èe â òoì, ÷òo â Ôîðòðàíå ïpoècxoäèò ïepeäa÷a ccûëêoé), è âeëè÷èíûe òèïû real4 â Ïàñêàëå.

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È

ÿçûê

òèï äaííûx

ïpèìe÷aíèe

Ïàñêàëü

x:real4

ecëè $real:4

(ïo óìoë÷aíèþ)

x:real

 

float x

 

struct

float x ; x

ïpè ïepeäa÷e

çía÷eíèeì

ÄEÉCTBÈTEËÜHÛE ×ÈCËA ÄBOÉHOÉ TO×HOCTÈ

ÿçûê

òèï äaííûx

ïpèìe÷aíèe

Ïàñêàëü

x : real8

 

x : real

ecëè $real:8

double x

 

Ôîðòðàí

REAL*8 X èëè DOUBLE PRECISION X

 

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êè:

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â.

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ò.

B òaáëèöe 7-8 oïècaíû òèïû còpoê è ìaccèâoâ äëÿ âcex òpex ÿçûêoâ.

ÿçûê

òèï ä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]

 

struct cstr unsigned

char c [a]; c

Taáëèöa 7-8 Tèïû còpoê è ìaccèâoâ.

B òaáëèöe 7-9 oïècaíû ýêâèâaëeíòíûe òèïû còpoê.

ÿçûê

òèï äaííûx

ïpèìe÷aíèe

Ïàñêàëü

x: array[1..n]of char

 

char x[n];

 

Ôîðòðàí

CHARACTER *h x

INTEGER X ((h+1)12)

He èìeeò ýêâèâaëeíò, â áóäóùèx âepcèÿx

Ôîðòðàíà.He peêoìeí äoâaí.Moæeò ècïoëüço âaòücÿ êaê ïepeìeí íûe òèïa CHARACTER äëÿ oïepaöèé íaä oò äeëüíûìè áaéòaìè.Ýòà âoçìoæíocòü áóäeò paçâèòa â áóäóùèx âepcèÿx.

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

ÿçûê

òèï äaííûx

ïpèìe÷aíèe

Ïàñêàëü

x:^t

çaâècèò oò òèïa ìaøèíû

ADR t

 

t near

x

 

Ôîðòðàí

TOBJECT

INTEGER*2 X

X = LOCNEAR(OBJECT)

 

 

ÓKAÇATEËÈ FAR

ÿçûê

òèï äaííûx

ïpèìe÷aíèe

Ïàñêàëü

ADS t

 

t *x

 

t far

x

 

Ôîðòðàí

TOBJECT

INTEGER*4 X

X = LOC(OBJECT)

 

TOBJECT

INTEGER*4 X

X=LOCFAR(OBJECT)

 

 

ÓKAÇATEËÈ HA ÏPOÖEÄÓPÛ

ÿçûê

òèï ä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 aäpec.Koìïèëÿòop óc- òaíaâëèâaeò near aäpeca äëÿ ëoêaëüíûx ïpoöeäóp

x: adsfunc

t (

) ()

 

ÓKAÇATEËÈ HA ÏPOÖEÄÓPÛ

ÿçûê

òèï äaííûx

Ïpèìe÷aíèe

Ôîðòðàí

TPROC

EXTERNAL PROC

INTEGER*4 X

X=LOC(PROC)

EXTERNAL ècïoëüçóeò cÿ, êoãäa èìÿ ïpo- öeäópû, ècïoëüçóeòcÿ

ïpè âûçoâe

ôóíêöèè (â ýòoì ïpè-

ìepe áepeòcÿ aäpec

ïpoöeäópû).Èía÷e

Ôîðòðàí coçäaeò ío âóþ ïepeìeííóþ è âoçüìeò aäpec ýòoé ïepeìeííoé, a íe ïpoöeäópû.

TPROC

EXTERNAL PROC

INTEGER*4 X

X=LOCFAR(PROC)

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

ÿçûê

òèï ä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é

struct

type x[j+1] [m+1];x

ïpè ïepeäa÷e

çía÷eíèeì

Ôîðòðàí

type x(m

1,j

1)

 

MACCÈBÛ: HÈÆHßß ÃPAHÈÖA MACCÈBA ÏACKAËß HE PABHA 0

ÿçûê

òèï ä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é

struct type

x[j-I+1] [m-k+1];x

ïpè ïepeäa÷e

çía÷eíèeì

Ôîðòðàí

type x(m

1,j

1)

 

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

ÿçûê

òèï äaííûx

ïpèìe÷aíèe

Ïàñêàëü

type v=super array

[0..*,0..*] of type

x: ^V

 

structtype

near *ptr;

short a;

short b;x:

Ócòaíoâëeíío a paâ íoe (ãpaíèöe ïep âoé paçìepíocòè)

Ócòaíoâëeíío b paâ íoe (ãpaíèöe âòo poé paçìepíocòè)

Ôîðòðàí

íeò

 

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Ü

ÿçûê

òèï äaííûx

ïpèìe÷aíèe

Ïàñêàëü

x: recod

re, im: real;

end;

 

struct complex8

float re,im;x

 

Ôîðòðàí

COMPLEX X

 

 

 

 

KOMÏËEKCHÛE ×ÈCËA C ÄBOÉHOÉ TO×HOCTÜÞ

ÿçûê

òèï äaííûx

ïpèìe÷aíèe

ÏACKAËÜ

x: record

re,cm:real8;

end

 

struct complex16

float re,im; x

 

Ôîðòðàí

COMPLEX

16 X

 

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

ÿçûê

òèï äaííûx

ïpèìe÷aíèe

Ïàñêàëü

x: record

logical: boolean;

pad:array[0..]of byte;

end

 

struct

char logical;

char pad[1]; x;

 

Ôîðòðàí

LOGICAL*2 X LOGICAL

ecëè $STORAGE

ËOÃÈ×ECKÈE ÇHA×EHÈß: 4

ÁAÉTA

ÿçûê

òèï äaííûx

ïpèìe÷aíèe

Ïàñêàëü

x: record

logical: boolean;

pad;array[0..2]of byte

end;

 

strucf

char logical;

char pad[3]

x;

 

Ôîðòðàí

LOGICAL

4 X

 

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è. Îïepaòop INTERFACE Ïoçâoëÿeò paáoòaòü c ïpoöeäópaìè íaïècaííûìè

ía äpóãèx ÿçûêax.

Àòpèáóòû Çaäaþò xapaêòepècòèêè äëÿ ïoäïpoãpaìì è ïe-

peìeííûx. Cóùecòâóeò 9 aòpèáóòoâ: ALIAS,

PASCAL, C, NEAR, FAR, HUGE, REFERENCE, VALUE è VARYING .

Ôóíêöèè aäpecoâ Boçâpaùaþò aäpec apãóìeíòa.

Cè còpoêè Äaþò cïeöèôèêaöèè cèìâoëoâ, òaêèx êaê

backspaces è newlines c ïoìoùüþ ècïoëüçoâaíèÿ ïocëeäoâaòeëüíocòeé escape 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è.

PASCAL

PASCAL ìoæeò ècïoëüçoâaòücÿ òoëüêo, êaê aòpèáóò ïoäïpoãpaììû. Aòpèáóò óêaçûâaeò, ÷òo ïoäïpoãpaììa èìeeò xapaêòepècòèêè, cooòâeò- còâóþùèe Ïàñêàëþ. Bce apãóìeíòû ïepeäaþòcÿ çía÷eíèeì (ecëè òoëüêo íeò aòpèáóòa REFERENCE), è ècïoëüçóeòcÿ coãëaøeíèe o ïepeäa÷e ïapaìeòpoâ Ôîðòðàíà/Ïàñêàëÿ.

C

C ècïoëüçóeòcÿ äëÿ cïeöèôèêaöèè ïoäïpoãpaìì è òèïoâ äaííûx. Ïpè cïeöèôèêaöèè ïoäïpoãpaììû, C óêaçûâaeò ía òo, ÷òo â ïoäïpo- ãpaììe íaçía÷eío coãëaøeíèe o ïepeäa÷e ïapaìeòpoâ Cè. Apãóìeíòû â ïoäïpoãpaììû c coãëaøeíèeì Cè ïepeäaþòcÿ çía÷eíèeì (ecëè òoëüêo íeò aòpèáóòa REFERENCE). (Çaìeòèì, ÷òo VARYING ìoæeò áûòü ècïoëüçoâaío òoëüêo â ïoäïpoãpaììax c aòpèáóòoì C). Èìeía ïèøóòcÿ â cooòâeòcòâèè c coãëaøeíèeì oá èäeíòèôèêaòopax Cè. Bíeøíèe èìeía ïpeoápaçóþòcÿ â ïpoïècíûe è ía÷èíaþòcÿ c ïoä÷epêa( ). Ecëè Bû xoòèòe ècïoëüçoâaòü çaãëaâíûe áóêâû, ècïoëüçóéòe aòpèáóò ALIAS.

Koãäa aòpèáóò C óêaçaí äëÿ òèïa INTEGER, ýòoò òèï còaíoâèòcÿ Cè-integer. Paçìep, ïo óìoë÷aíèþ, äëÿ öeëûx Cè è Ôîðòðàíà ìoæeò áûòü, èëè, íe áûòü oäèíaêoâûì. Ýòo çaâècèò oò ìoäeëè ècïoëüçóeìoão Baìè ïpoöeccopa. Haïpèìep, c ìèêpoïpoöeccopoì 8086, MC-Ôîðòðàí ècïoëüçóeò 32-áèòoâûe öeëûe ïo óìoë÷aíèþ, a Cè 16-áèòoâûe öeëûe. Ïpè ìèêpoïpoöecope 68000, oáa ÿçûêa ècïoëüçóþò 32-áèòoâûe öeëûe. Ïoýòoìó, êoãäa Bû ïèøèòe âaøó ïpoãpaììó äëÿ oïpeäeëeíííoão ïpoöeñ- copa, Bû ìoæeòe ècïoëüçoâaòü C aòpèáóò äëÿ öeëûx ïepeìeííûx, äëÿ óâepeíocòè â òoì, ÷òo ïpè ïepeäa÷e öeëûx ÷èceë ìeæäó Ôîðòðàíîì è Cè â oáîèx ÿçûêax ó íèx oäèíaêoâûé paçìep.

VARYING

Ècïoëüçóeòcÿ âìecòe c aòpèáóòoì C. Óêaçûâaeò ÷òo ÷ècëo ôaêòè÷ecêèx ïapaìeòpoâ ìoæeò oòëè÷aòücÿ oò ÷ècëa ôopìaëüíûx. Ôaêòè÷ecêèe ïapaìeòpû cooòâeòcòâóþùèe ôopìaëüíûì äoëæíû èìeòü òèïû, êoòopûe cooòâeòcòâóþò òèïaì ôopìaëüíûx ïapaìeòpoâ. Ôaêòè÷ecêèe ïapaìeòpû, äëÿ êoòopûx íeò ôopìaëüíûx, äoëæíû ïepeäaâaòücÿ çía÷e- íèeì, áeç èçìeíeíèÿ òèïa (çaìeòèì, ÷òo ïoäïpoãpaììa íaïècaííaÿ ía Ôîðòðàíå ìoæeò oápaùaòücÿ òoëüêo ê ôopìaëüíûì ïapaìeòpaì, êoòopûe oïpeäeëeíû, è ïoýòoìó âòopoé cëó÷aé äëÿ Ôîðòðàíà íe pacìaòpèâaeò- cÿ).

Koãäa Bû ïèøèòe ïpoöeäópó ía Ôîðòðàíå íe ècïoëüçóÿ aòpèáóò VARYING, íóæío ïoçaáoòèòücÿ o òoì, ÷òoáû Baø êoä íe coçäaâaë ccûëêè ía ïapaìeòpû, êoòopûe íe ïepeäaþòcÿ ïpè oápaùeíèè, èía÷e Bû ìoæeòe ïoëó÷èòü íeoïpeäeëeííûé peçóëüòaò. Ýòo çía÷èò, ÷òo Bû äoëæíû óêaçûâaòü ïoäïpoãpaììe, êaêèe ïapaìeòpû ïepeäaþòcÿ (íaïpèìep, oïè- caâ â oäíoì èç apãóìeíòoâ âce äpóãèe). Çaìeòèì, ïpè oápaùeíèè èç Ôîðòðàíà/Ïàñêàëÿ íe ìoæeò áûòü ïepeìeííoão ÷ècëa ïapaìeòpoâ, aòpèáóò VARYING íe äeécòâóeò, ecëè Bû íe óêaçaëè aòpèáóò C äëÿ ïoäïpoãpaììû VALUE.

VALUE

VALUE óêaçûâaeò, ÷òo ôaêòè÷ecêèé ïapaìeòp ïepeäaeòcÿ çía÷e- íèeì. Ïpè ýòoì, ïapaìeòp c aòpèáóòoì VALUE ocòaeòcÿ íeèçìeííûì ïocëe âoçâpaòa èç ïoäïpoãpaììû. Ecëè aòpèáóòû C èëè PASCAL óêaçaíû â oïècaíèè ïoäïpoãpaììû, âce ïapaìeòpû ïo óìoë÷aíèþ ïepeäaþòcÿ çía÷eíèeì. Ïoäcòpoêè, ìaccèâû c ïepeìeííûì paçìepoì, íe ìoãóò ïepe- äaâaòücÿ çía÷eíèeì. B Cè ìaccèâû íèêoãäa íe ïepeäaþòcÿ çía÷eíèeì. Ecëè Bû óêaæèòe aòpèáóò C ïpè oïècaíèè Baøeé ïoäpoãpaììû è oía èìeeò ïapaìeòpû ìaccèâû, ìaccèâ áóäeò ïepeäaâaòücÿ, êaê còpóêòópa äaííûx Cè(struct). ×òoáû ïepeäaòü ìaccèâ, è ÷òoáû, oí pacìaòpèâaëcÿ êaê ìaccèâ (âìecòo còpóêòópû), Bû èìeeòe äâe âoçìoæíocòè: ¼ Óêaçaòü aòpèáóò REFERENCE äëÿ ôopìaëüíoão ïapaìeòpa.

¼ Ïepeäaòü peçóëüòaò LOC, LOCNEAR èëè LOCFAR ôóíêöèé çía÷eíèeì.

REFERENCE

REFERENCE óêaçûâaeò ÷òo apãóìeíò ïepeäaeòcÿ ccûëêoé. Çaìeòèì, ÷òo ecëè Bû óêaæeòe âìecòe c aòpèáóòoì REFERENCE aòpèáóò NEAR, peçóëüòaò áóäeò cooòâeòcòâoâaòü ïapaìeòpó Ïàñêàëÿ VARS, a íe VAR.

NEAR

NEAR óêaçûâaeò ía òo, ÷òo ôaêòè÷ecêèé ïapaìeòp íaxoäèòcÿ â ceãìeíòe äaííûx ïo óìoë÷aíèþ è òoëüêo cìeùeíèe ïepeäaeòcÿ ïpè oá- paùeíèè ê íeìó. Ïpè ïepeäa÷è ïapaìeòp VAR â Ïàñêàëü, oáÿçaòeëüío óêaæèòe aòpèáóòû REFERENCE è NEAR.

Ýòoò aòpèáóò ìoæío òaêæe óêaçûâaòü ïpè oïècaíèè COMMON-áëoêoâ.

NEAR COMMON áëoê çaíocÿòcÿ â ceãìeíò äaííûx ïo óìoë÷aíèþ. Èx cèíòaêcèc:

COMMON [/[èìÿ[NEAR]]/]...

ãäe:

èìÿ - èìÿ common-áëoêa. Heïoìe÷eííûé common-áëoê aâòoìaòè÷ecêè çaíocèòcÿ â ceãìeíò äaííûx ïo óìoë÷aíèþ. Bû ìoæeòe óêaçaòü

NEAR â ëþáoì oïepaòope COMMON ïoäïpoãpaììû. Oäíaêo, ïpè ýòoì aòpèáóò NEAR äoëæeí áûòü oáÿçaòeëüío óêaçaí â ïepâoì oïepaòope COMMON áëoêa êoìïèëÿöèè.

Ïî-õîðîøåìó, ñòîèò âñòàâèòü NEAR âî âñå îïðåäåëåíèÿ common- áëîêîâ. Bû ìoæeòe âcòaâèòü ôèêòèâíóþ ïoäïpoãpaììó â ía÷aëo Baøeão ècxoäíoão ôaéëa, oïècaâ â íeé common-áëoêè ïpoãpaììû, êaê NEAR.

Ïpeèìóùecòâoì çaíeceíèÿ COMMON-áëoêoâ â ceãìeíò äaííûx ïo óìoë÷aíèþ ÿâëÿeòcÿ óêaçaíèe òoëüêo cìeùeíèé ïpè çaäaíèè aäpecoâ. Ïpè ýòoì ãeíepèpóeòcÿ êoä, çaíèìaþùèé ìeíüøe ìecòa, è áoëee ýôôeêòèâíûé. Ecëè Bû íe óêaçaëè aòpèáóò NEAR, Baì ïpèäeòcÿ ècïoëüçoâaòü aäpec, cocòoÿùèé èç ceãìeíòa è cìeùeíèÿ ïpè ccûëêe ía êaæäûé COMMON.

Ecëè COMMON-áëoê oïècaí êaê NEAR â oäíoì áëoêe êoìïèëÿöèè, a â äpóãoì íeò, òo COMMON-áëoê ïoìeùaeòcÿ â ceãìeíò äaííûx ïo óìoë÷aíèþ. B áëoêe â êoòopoì oí c÷èòaeòcÿ NEAR ïpè ccûëêe ía íeão áóäóò ècïoëüçoâaíû êopoòêèe aäpeca, a â äpóãèx áëoêax áóäóò ècïoëüçoâaíû äëèííûe aäpeca.

Xoòÿ ïpaêòèêoé íe peêoìeíäóeòcÿ, òaêèì oápaçoì ìoæío äocòè÷ü coâìecòèìocòè c áèáëèoòeêaìè oòêoìïèëèpoâaííûìè ïpè âepcèè 3.2 êoìïèëÿòopa.

Ôaêòè÷ecêèe ïapaìeòpû, êoòopûe ïepeäaþòcÿ â ïapaìeòpû c aòpèáóòoì NEAR äoëæíû íaxoäèòücÿ â ceãìeíòe äaííûx ïo óìoë÷aíèþ. Bû íe èìeeòe ïepeäaòü cëeäóþùèe ïapaìeòpû â ïapaìeòpû NEAR: ¼ Äaííûe â COMMON-áëoêax áeç aòpèáóòa NEAR.

¼ HUGE ìaccèâû.

¼ Maccèâû oïpeäeëeííûe $LARGE ìeòaêoìaíäoé.

¼ Ïepeìeííûe oïècaíûe â $LARGE ìeòaêoìaíäe.

FAR

FAR óêaçûâaeò ía òo, ÷òo apãóìeíò ïepeäaeòcÿ c ècïoëüçoâaíèeì äëèííoão aäpeca (aäpeca coäepæaùeão ceãìeíò)

HUGE

Óêaçûâaeò ía òo, ÷òo ôaêòè÷ecêèé ïapaìeòp ìoæeò çaíèìaòü áoëee ÷eì oäèí ceãìeíò. HUGE ïpeäocòaâëÿeò áoëee ãèáêóþ âoçìoæíocòü äëÿ paáoòû c ìaccèâaìè, ÷eì ìeòaêoìaíäa $LARGE, Haïpèìep:

FUNCTION F(A[HUGE])

DIMENSION A(200) ýêâèâaëeíòío: $LARGE :A FUNCTION F(A) DIMENSION A(200)

Koìïèëÿòop íe ãapaíòèpóeò, ÷òo HUGE óêaçûâaeò äëÿ âcex apãóìeíòoâ çaíèìaþùèx áoëüøe ÷eì oäèí ceãìeíò. Coâpeìeííûe âepcèè Ïàñêàëÿ è Cè íe ècïoëüçóþò HUGE ïapaìeòpoâ.

Ïpèìepû ècïoëüçoâaíèÿ aòpèáóòoâ.

1. INTEGER X[VALUE]

2. INTEGER X[REFERENCE, NEAR]

3. SUBROUTINE F[ALIAS,"other Name For F"]

4. INTERFACE TO INTEGER [C] FUNCTION F[PASCAL] (I,J,K) integer [c] i,j,k

END

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: LOCNEAR Çía÷eíèeì ôóíêöèè ÿâëÿeòcÿ ÷ècëo òèïa INTEGER*2,

ïpeäcòaâëÿþùee coáoé, íeceãìeíòèpoâaííûé aäpec. LOCFAR Çía÷eíèeì ôóíêöèè ÿâëÿeòcÿ ÷ècëo òèïa INTEGER*4

ïpeäcòaâëÿþùee coáoé ceãìeíòèpoâaííûé aäpec.

LOC B ýòoé âepcèè, ýêâèâaëeíò LOCFAR.

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èè.

ÖEÏO×KA escape

CÈMBOË

\n

\t

\v

\b

\r

\f

\\

\ddd

íoâaÿ còpoêa

ãopèçoíòaëüíaÿ òaáóëÿöèÿ

âepòèêaëüíaÿ òaáóëÿöèÿ

backspace

âoçâpaò êapeòêè

ïoäa÷a còpoêè

oápaòíûé cëeø

áëoê áèòoâ

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".