È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.
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è Ècïoëüçoâaíèe coãëaøeíèÿ Ôîðòðàíà Ïàñêàëü Ôîðòðàí Cè Ècïoëüçoâaíèe coãëaøeíèÿ Ïàñêàëÿ Ïàñêàëü Ôîðòðàí Cè |
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 |
CÈ |
Ï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 VARSVARS 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 |
Cè |
Ïàñêàëü |
Ôîðòðàí |
äëèííûé 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 |
Cè |
Ïàñêàëü |
Ôîðòðàí |
äëèííûé 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.
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è.
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 |
|||
Cè |
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 |
|||
Cè |
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 |
|||
Cè |
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íèþ) |
|||
Cè |
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 |
|
Cè |
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 |
|
Cè |
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 |
|
Cè |
unsigned char x |
|
Ôîðòðàí |
CHARACTER X |
Taáëèöa 7-6. Ýêâèâaëeíòíûe òèïû äaííûx
Áóëeâcêèe è Cèìâoëüíûe.
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 |
||
Cè |
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 |
|
Cè |
double x |
|
Ôîðòðàí |
REAL*8 X èëè DOUBLE PRECISION X |
Taáëèöa 7-7 : Ýêâèâaëeíòíûe òèïû äaííûx.
Ïàñêàëü, Ôîðòðàí è 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] |
|||
Cè |
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 |
|
Cè |
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êè.
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 |
||||||
Cè |
t near |
x |
||||
Ôîðòðàí |
TOBJECT INTEGER*2 X X = LOCNEAR(OBJECT) |
|||||
ÓKAÇATEËÈ FAR |
||||||
ÿçûê |
òèï äaííûx |
ïpèìe÷aíèe |
||||
Ïàñêàëü |
ADS t |
|||||
Cè |
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 |
||||||
Cè |
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è è Ôîðòðàíà.
M ACCÈBÛ: HÈÆHßß ÃPAHÈÖA MACCÈBA ÏACKAËß PABHA 0 |
||||||||
ÿçûê |
òèï äaííûx |
ïpèìe÷aíèe |
||||||
Ïàñêàëü |
x:array[0..j,0..m] of type |
|||||||
Cè |
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 |
|||||||
Cè |
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ÈBO B |
||
ÿçûê |
òèï äaííûx |
ïpèìe÷aíèe |
Ïàñêàëü |
type v=super array [0..*,0..*] of type x: ^V |
|
Cè |
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â.
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; |
|||
Cè |
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 |
|||
Cè |
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 |
|||
Cè |
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; |
|||
Cè |
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;
Ô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é.
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è.
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û".
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è ìac
cèâû íèê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æäûé C
OMMON.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è.
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íäû).
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òp
oêoé Ôîðòðàíà (cì.ãëa- âó 2). Còpoêa "\abcd"C, íaïpèìep, cooòâeòcòâóeò còpoêe "\abcd".