 |
íèé. 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 ïa-
paì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 ³ íoâaÿ còpoêa ³
³ \t ³ ãopèçoíòaëüíaÿ òaáóëÿöèÿ ³
³ \v ³ âepòèêaëüíaÿ òaáóëÿöèÿ ³
³ \b ³ backspace ³
³ \r ³ âoçâpaò êapeòêè ³
³ \f ³ ïoäa÷a còpoêè ³
³ \\ ³ oápaòíûé cëeø ³
³ \ddd ³ áëoê áèòoâ ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Taáëèöa 7-15. Còpo÷íûe öeïo÷êè escape
|