Ãëàâà 6. Âûðàæåíèÿ

             Âûðàæåíèÿ ñîñòîÿò èç îïåðàöèé è îïåðàíäîâ.  Áîëüøèíñòâî îïå-

        ðàöèé  â  ÿçûêå Ïàñêàëü ÿâëÿþòñÿ áèíàðíûìè,  òî åñòü ñîäåðæàò äâà

        îïåðàíäà.  Îñòàëüíûå îïåðàöèè ÿâëÿþòñÿ óíàðíûìè è ñîäåðæàò òîëüêî

        îäèí îïåðàíä.  áèíàðíûõ îïåðàöèÿõ èñïîëüçóåòñÿ îáû÷íîå àëãåáðàè-

        ÷åñêîå ïðåäñòàâëåíèå, íàïðèìåð: a+b.  óíàðíûõ îïåðàöèÿõ îïåðàöèÿ

        âñåãäà ïðåäøåñòâóåò îïåðàíäó, íàïðèìåð: -b.

 

             Â áîëåå  ñëîæíûõ  âûðàæåíèÿõ ïîðÿäîê,  â êîòîðîì âûïîëíÿþòñÿ

        îïåðàöèè, ñîîòâåòñòâóåò ïðèîðèòåòó îïåðàöèé (ñì. Òàáëèöó 6.1).

 

                              Ñòàðøèíñòâî îïåðàöèé            Òàáëèöà 6.1

        ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

        ³    Îïåðàöèÿ        ³      Ïðèîðèòåò      ³     Âèä îïåðàöèè   ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  @, not            ³   ïåðâûé (âûñøèé)   ³   óíàðíàÿ îïåðàöèÿ ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  *, /, div, mod,   ³       âòîðîé        ³ îïåðàöèÿ óìíîæåíèÿ,³

        ³  and, shl, shr     ³                     ³ äåëåíèÿ, ñäâèãà... ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  +, -, or, xor     ³       òðåòèé        ³  îïåðàöèÿ ñëîæåíèÿ ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³  =, <>, <, >,      ³  ÷åòâåðòûé (íèçøèé) ³ îïåðàöèÿ îòíîøåíèÿ ³

        ³  <=, >=, in        ³                     ³                    ³

        ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

             Äëÿ îïðåäåëåíèè ñòàðøèíñòâà îïåðàöèé  èìååòñÿ  òðè  îñíîâíûõ

        ïðàâèëà:

 

             1.  Âî-ïåðâûõ, îïåðàíä, íàõîäÿùèéñÿ ìåæäó äâóìÿ îïåðàöèÿìè ñ

                 ðàçëè÷íûìè ïðèîðèòåòàìè,  ñâÿçûâàåòñÿ ñ îïåðàöèåé, èìåþ-

                 ùåé áîëåå âûñîêèé ïðèîðèòåò.

 

             2.  Âî-âòîðûõ,  îïåðàöèÿ, íàõîäÿùàÿñÿ ìåæäó äâóìÿ îïåðàöèÿìè

                 ñ ðàâíûìè ïðèîðèòåòàìè, ñâÿçûâàåòñÿ ñ òîé îïåðàöèåé, êî-

                 òîðàÿ íàõîäèòñÿ ñëåâà îò íåãî.

 

             3.  Â-òðåòüèõ, âûðàæåíèå, çàêëþ÷åííîå â ñêîáêè, ïåðåä âûïîë-

                 íåíèåì âû÷èñëÿåòñÿ, êàê îòäåëüíûé îïåðàíä.

 

             Îïåðàöèè ñ ðàâíûì ïðèîðèòåòîì îáû÷íî âûïîëíÿþòñÿ  ñëåâà-íàï-

        ðàâî,  õîòÿ èíîãäà êîìïèëÿòîð ïðè ãåíåðàöèè îïòèìàëüíîãî êîäà ìî-

        æåò ïåðåóïîðÿäî÷èòü îïåðàíäû.

Ñèíòàêñèñ âûðàæåíèé

             Ïðàâèëà, îïðåäåëÿþùèå  ïîðÿäîê âûïîëíåíèÿ îïåðàöèé, âûòåêàþò

        èç ñèíòàêñèñà âûðàæåíèé, êîòîðûå ñòðîÿòñÿ èç ìíîæèòåëåé, òåðìîâ è

        ïðîñòûõ âûðàæåíèé.

 

             Ìíîæèòåëü èìååò ñëåäóþùèé ñèíòàêñèñ:

 

                                        ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

           ìíîæèòåëü ÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄ>³  ññûëêà íà    ÃÄÄÄÄÄÄÄÄÄÄÄ>

                        ³               ³  ïåðåìåííóþ   ³      ^

                        ³               ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ      ³

                        ³     ÚÄÄÄÄÄÄÄÄÄ¿                      ³

                        ÃÄÄÄÄ>³êîíñòàíòàÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

                        ³     ³áåç çíàêà³                      ³

                        ³     ÀÄÄÄÄÄÄÄÄÄÙ                      ³

                        ³     ÚÄÄÄ¿     ÚÄÄÄÄÄÄÄÄÄ¿    ÚÄÄÄ¿   ³

                        ÃÄÄÄÄ>³ ( ÃÄÄÄÄ>³âûðàæåíèå³ÄÄÄ>³ ) ÃÄÄÄ´

                        ³     ÀÄÄÄÙ     ÀÄÄÄÄÄÄÄÄÄÙ    ÀÄÄÄÙ   ³

                        ³     ÚÄÄÄ¿     ÚÄÄÄÄÄÄÄÄÄ¿            ³

                        ÃÄÄÄÄ>³notÃÄÄÄÄ>³ìíîæèòåëüÃÄÄÄÄÄÄÄÄÄÄÄÄ´

                        ³     ÀÄÄÄÙ     ÀÄÄÄÄÄÄÄÄÄÙ            ³

                        ³     ÚÄÄÄÄ¿    ÚÄÄÄÄÄÄÄÄÄ¿            ³

                        ÃÄÄÄÄ>³çíàêÃÄÄÄ>³ìíîæèòåëüÃÄÄÄÄÄÄÄÄÄÄÄÄ´

                        ³     ÀÄÄÄÄÙ    ÀÄÄÄÄÄÄÄÄÄÙ            ³

                        ³     ÚÄÄÄÄÄÄÄÄÄ¿                      ³

                        ÃÄÄÄÄ>³  âûçîâ  ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

                        ³     ³ ôóíêöèè ³                      ³

                        ³     ÀÄÄÄÄÄÄÄÄÄÙ                      ³

                        ³     ÚÄÄÄÄÄÄÄÄÄÄÄ¿                    ³

                        ÃÄÄÄÄ>³êîíñòðóêòîðÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

                        ³     ³ ìíîæåñòâà ³                    ³

                        ³     ÀÄÄÄÄÄÄÄÄÄÄÄÙ                    ³

                        ³     ÚÄÄÄÄÄÄÄÄÄÄÄ¿                    ³

                        ÃÄÄÄÄ>³  àäðåñíûé ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

                        ³     ³ ìíîæèòåëü ³                    ³

                        ³     ÀÄÄÄÄÄÄÄÄÄÄÄÙ                    ³

                        ³     ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿                 ³

                        ÀÄÄÄÄ>³  ïðèâåäåíèå  ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

                              ³òèïà çíà÷åíèÿ ³

                              ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

             Âûçîâ ôóíêöèè àêòèâèçèðóåò ôóíêöèþ è ïðåäñòàâëÿåò ñîáîé çíà-

        ÷åíèÿ,  âîçâðàùàåìûå ôóíêöèåé (ñì. äàëåå â ýòîé ãëàâå ðàçäåë "Âû-

        çîâû  ôóíêöèé").  Îïèñàòåëü ìíîæåñòâà ïðåäñòàâëÿåò ñîáîé çíà÷åíèå

        ìíîæåñòâåííîãî òèïà (ñì.  ðàçäåë,  îçàãëàâëåííûé,  êàê  "Îïèñàíèå

        ìíîæåñòâ").  Ïðèâåäåíèå òèïà èçìåíÿåò òèï çíà÷åíèÿ (ñì. "Ïðèâåäå-

        íèå òèïà").

 

             Àäðåñíûé ìíîæèòåëü  âû÷èñëÿåò  àäðåñ ïåðåìåííîé,  ïðîöåäóðû,

        ôóíêöèè èëè ìåòîäà. Ñì. ðàçäåë "Îïåðàöèÿ @".

             Áåççíàêîâàÿ êîíñòàíòà èìååò ñëåäóþùèé ñèíòàêñèñ:

 

                                           ÚÄÄÄÄÄÄÄÄÄ¿

             êîíñòàíòà áåç çíàêà  ÄÄÄÂÄÄÄÄ>³  ÷èñëî  ÃÄÄÄÄÄÄÄÄÄÄÄÄÄ>

                                     ³     ³áåç çíàêà³         ^

                                     ³     ÀÄÄÄÄÄÄÄÄÄÙ         ³

                                     ³     ÚÄÄÄÄÄÄÄÄÄÄ¿        ³

                                     ÃÄÄÄÄ>³ñèìâîëüíàÿÃÄÄÄÄÄÄÄÄ´

                                     ³     ³  ñòðîêà  ³        ³

                                     ³     ÀÄÄÄÄÄÄÄÄÄÄÙ        ³

                                     ³     ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿     ³

                                     ÃÄÄÄÄ>³èäåíòèôèêàòîðÃÄÄÄÄÄ´

                                     ³     ³  êîíñòàíòû  ³     ³

                                     ³     ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ     ³

                                     ³     ÚÄÄÄ¿               ³

                                     ÀÄÄÄÄ>³nilÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

                                           ÀÄÄÄÙ

 

             Íåêîòîðûå ïðèìåðû ìíîæèòåëåé ìîãóò âêëþ÷àòü â ñåáÿ:

 

            Õ                                    { ññûëêà íà ïåðåìåííóþ }

                                            { óêàçàòåëü íà ïåðåìåííóþ }

            15                                    { êîíñòàíòà áåç çíàêà }

            (Õ+Y+Z)                                      { ïîäâûðàæåíèå }

            SIN(Õ/2)                                    { âûçîâ ôóíêöèè }

            ['0..''9','À'..'Z']                   { îïèñàòåëü ìíîæåñòâà }

            not Done                   { îòðèöàíèå áóëåâñêîé ïåðåìåííîé }

            ñhar(Digit+48)                            { íàçíà÷åíèå òèïà }

             Òåðìû èñïîëüçóþòñÿ â îïåðàöèÿõ óìíîæåíèÿ íà ìíîæèòåëü:

 

                                  ÚÄÄÄÄÄÄÄÄÄ¿

                    òåðì ÄÄÄÄÄÄÄÄ>³ìíîæèòåëüÃÄÄÄÂÄÄÄÄÄÄ>

                            ^     ÀÄÄÄÄÄÄÄÄÄÙ   ³

                            ³     ÚÄÄÄ¿         ³

                            ÃÄÄÄÄÄ´ * ³<ÄÄÄÄÄÄÄÄ´

                            ³     ÀÄÄÄÙ         ³

                            ³     ÚÄÄÄ¿         ³

                            ÃÄÄÄÄÄ´ / ³<ÄÄÄÄÄÄÄÄ´

                            ³     ÀÄÄÄÙ         ³

                            ³     ÚÄÄÄ¿         ³

                            ÃÄÄÄÄÄ´div³<ÄÄÄÄÄÄÄij

                            ³     ÀÄÄÄÙ         ³

                            ³     ÚÄÄÄ¿         ³

                            ÃÄÄÄÄÄ´mod³<ÄÄÄÄÄÄÄij

                            ³     ÀÄÄÄÙ         ³

                            ³     ÚÄÄÄ¿         ³

                            ÃÄÄÄÄÄ´and³<ÄÄÄÄÄÄÄij

                            ³     ÀÄÄÄÙ         ³

                            ³     ÚÄÄÄ¿         ³

                            ÃÄÄÄÄÄ´shl³<ÄÄÄÄÄÄÄij

                            ³     ÀÄÄÄÙ         ³

                            ³     ÚÄÄÄ¿         ³

                            ÀÄÄÄÄÄ´shr³<ÄÄÄÄÄÄÄÄÙ

                                  ÀÄÄÄÙ

             Ïðèâåäåì íåñêîëüêî ïðèìåðîâ òåðìîâ:

 

             Õ * Y

             Z / (1 - Z)

             Done or Error

             (Õ <= Y) and (Y < Z)

 

             Â ïðîñòûõ âûðàæåíèÿõ ê òåðìàì ïðèìåíÿþòñÿ  îïåðàöèè ñëîæåíèÿ

        è ïðèñâàèâàíèÿ çíàêà:

 

                                           ÚÄÄÄÄÄÄÄ¿

                ïðîñòîå âûðàæåíèå ÄÄÄÄÄÄÄÄ>³ òåðì  ÃÄÄÄÂÄÄÄÄ>

                                     ^     ÀÄÄÄÄÄÄÄÙ   ³

                                     ³     ÚÄÄÄ¿       ³

                                     ÃÄÄÄÄÄ´ + ³<ÄÄÄÄÄÄ´

                                     ³     ÀÄÄÄÙ       ³

                                     ³     ÚÄÄÄ¿       ³

                                     ÃÄÄÄÄÄ´ - ³<ÄÄÄÄÄÄ´

                                     ³     ÀÄÄÄÙ       ³

                                     ³     ÚÄÄÄ¿       ³

                                     ÃÄÄÄÄÄ´ or³<ÄÄÄÄÄij

                                     ³     ÀÄÄÄÙ       ³

                                     ³     ÚÄÄÄ¿       ³

                                     ÀÄÄÄÄÄ´xor³<ÄÄÄÄÄÄÙ

                                           ÀÄÄÄÙ

 

             Ïðèâåäåì íåñêîëüêî ïðèìåðîâ ïðîñòûõ âûðàæåíèé:

 

             Õ + Y

            

             Hue1 + Hue2

             I * J + 1

             Â âûðàæåíèÿõ ê ïðîñòûì âûðàæåíèÿì ïðèìåíÿþòñÿ îïåðàöèè îòíî-

        øåíèÿ.

 

                        ÚÄÄÄÄÄÄÄÄÄ¿

         âûðàæåíèå ÄÄÄÄ>³ ïðîñòîå ÃÄÄÂÄÄ>

                        ³âûðàæåíèå³  ³                           ^

                        ÀÄÄÄÄÄÄÄÄÄÙ  ³  ÚÄÄÄ¿       ÚÄÄÄÄÄÄÄÄÄ¿  ³

                                     ÃÄ>³ < ÃÄÄÄÄÄÄ>³ ïðîñòîå ÃÄÄÙ

                                     ³  ÀÄÄÄÙ  ^    ³âûðàæåíèå³

                                     ³  ÚÄÄÄ¿  ³    ÀÄÄÄÄÄÄÄÄÄÙ

                                     ÃÄ>³<= ÃÄÄ´

                                     ³  ÀÄÄÄÙ  ³

                                     ³  ÚÄÄÄ¿  ³

                                     ÃÄ>³ > ÃÄÄ´

                                     ³  ÀÄÄÄÙ  ³

                                     ³  ÚÄÄÄ¿  ³

                                     ÃÄ>³>= ÃÄÄ´

                                     ³  ÀÄÄÄÙ  ³

                                     ³  ÚÄÄÄ¿  ³

                                     ÃÄ>³ = ÃÄÄ´

                                     ³  ÀÄÄÄÙ  ³

                                     ³  ÚÄÄÄ¿  ³

                                     ÃÄ>³<> ÃÄÄ´

                                     ³  ÀÄÄÄÙ  ³

                                     ³  ÚÄÄÄ¿  ³

                                     ÀÄ>³in ÃÄÄÙ

                                        ÀÄÄÄÙ

 

             Ïðèâåäåì íåêîòîðûå ïðèìåðû âûðàæåíèé:

 

             Õ = 1.5

             Done <> Error

             (I < J) = (J < Ê)

             C in Huel

Îïåðàöèè

             Îïåðàöèè ïîäðàçäåëÿþòñÿ íà àðèôìåòè÷åñêèå îïåðàöèè, ëîãè÷åñ-

        êèå îïåðàöèè,  îïåðàöèè ñî ñòðîêàìè,  îïåðàöèè  íàä  ìíîæåñòâàìè,

        îïåðàöèè îòíîøåíèÿ è îïåðàöèþ @ (îïåðàöèÿ ïîëó÷åíèÿ àäðåñà).

Àðèôìåòè÷åñêèå îïåðàöèè

             Â ñëåäóþùåé òàáëèöå ïðèâåäåíû òèïû  îïåðàíäîâ  è  ðåçóëüòàòû

        äëÿ áèíàðíûõ è óíàðíûõ àðèôìåòè÷åñêèõ îïåðàöèé:

 

                        Áèíàðíûå àðèôìåòè÷åñêèå îïåðàöèè      Òàáëèöà 6.2

        ÚÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

        ³  Îïåðàöèÿ ³  Äåéñòâèå    ³  Òèïû îïåðàíäîâ  ³  Òèï ðåçóëüòàòà ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³       +   ³  Ñëîæåíèå    ³     Öåëûé        ³      Öåëûé      ³

        ³           ³              ³  Âåùåñòâåííûé    ³   Âåùåñòâåííûé  ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³       -   ³  Âû÷èòàíèå   ³     Öåëûé        ³      Öåëûé      ³

        ³           ³              ³  Âåùåñòâåííûé    ³   Âåùåñòâåííûé  ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³       *   ³  Óìíîæåíèå   ³     Öåëûé        ³      Öåëûé      ³

        ³           ³              ³  Âåùåñòâåííûé    ³   Âåùåñòâåííûé  ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³      /    ³  Äåëåíèå     ³     Öåëûé        ³   Âåùåñòâåííûé  ³

        ³           ³              ³  Âåùåñòâåííûé    ³   Âåùåñòâåííûé  ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³     div   ³ Öåëî÷èñëåííîå³                  ³                 ³

        ³           ³  äåëåíèå     ³     Öåëûé        ³      Öåëûé      ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³     mod   ³  Îñòàòîê     ³     Öåëûé        ³      Öåëûé      ³

        ÀÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

                   Ïðèìå÷àíèå: Îïåðàöèÿ + èñïîëüçóåòñÿ òàêæå,  êàê îïåðà-

              öèÿ äëÿ ðàáîòû ñî ñòðîêàìè è ìíîæåñòâàìè. Îïåðàöèè +, - è *

              èñïîëüçóþòñÿ òàêæå äëÿ îïåðàöèé íàä ìíîæåñòâàìè.

Óíàðíûå àðèôìåòè÷åñêèå îïåðàöèè

                                                            Òàáëèöà 6.3

        ÚÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

        ³  Îïåðàöèÿ ³   Äåéñòâèå   ³  Òèï îïåðàíäà    ³ Òèï ðåçóëüòàòà  ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³       +   ³  Ñîõðàíåíèå  ³      Öåëûé       ³     Öåëûé       ³

        ³           ³    çíàêà     ³   Âåùåñòâåííûé   ³   Âåùåñòâåííûé  ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³       -   ³   Îòðèöàíèå  ³      Öåëûé       ³     Öåëûé       ³

        ³           ³    çíàêà     ³   Âåùåñòâåííûé   ³   Âåùåñòâåííûé  ³

        ÀÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

             Ëþáàÿ îïåðàöèÿ,  âêëþ÷àþùàÿ îïåðàíä,  òèï êîòîðîãî  ÿâëÿåòñÿ

        ïîäìíîæåñòâîì ïîðÿäêîâîãî òèïà, îáðàáàòûâàåòñÿ òàêæå, êàê åñëè áû

        îí áûë ïîðÿäêîâîãî òèïà.

 

             Åñëè îáà îïåðàíäà â îïåðàöèÿõ +,  -, *, div èëè ìîd ÿâëÿþòñÿ

        îïåðàíäàìè öåëîãî òèïà, òî òèï ðåçóëüòàòà áóäåò òàêèì æå, êàê îá-

        ùèé òèï îáîèõ îïåðàíäîâ.  (Îïðåäåëåíèå îáùåãî òèïà ñì.  â ðàçäåëå

        "Öåëûé òèï" â Ãëàâå 3).

 

             Åñëè îäèí èëè áîëåå îïåðàíäîâ â îïåðàöèÿõ +,  -, èëè * èìåþò

        âåùåñòâåííûé òèï,  òî òèï ðåçóëüòàòà áóäåò âåùåñòâåííûì, åñëè èñ-

        ïîëüçîâàíà äèðåêòèâà êîìïèëÿòîðà {$N-},  èëè òèïîì  ñ  ïîâûøåííîé

        òî÷íîñòüþ ïðè èñïîëüçîâàíèè äèðåêòèâû êîìïèëÿòîðà {$N+}.

 

             Åñëè ïðè èñïîëüçîâàíèè îïåðàöèè ñîõðàíåíèÿ çíàêà èëè  îïåðà-

        öèè  îòðèöàíèÿ çíàêà îïåðàíä èìååò öåëûé òèï,  òî ðåçóëüòàò áóäåò

        òîæå öåëîãî òèïà. Åñëè îïåðàíä âåùåñòâåííîãî òèïà, òî òèï ðåçóëü-

        òàòà   áóäåò   âåùåñòâåííûì  èëè  òèïîì  ñ  ïîâûøåííîé  òî÷íîñòüþ

        (extended).

 

             Çíà÷åíèå âûðàæåíèÿ  õ/ó  âñåãäà  áóäåò  âåùåñòâåííîãî   òèïà

        (real) èëè ñ ïîâûøåííîé òî÷íîñòüþ (extended), íåçàâèñèìî îò òèïîâ

        îïåðàíäîâ. Åñëè ó ðàâíî 0, òî ðåçóëüòàò áóäåò îøèáî÷íûì.

 

             Çíà÷åíèå âûðàæåíèå i div j ïðåäñòàâëÿåò ñîáîé ìàòåìàòè÷åñêîå

        ÷àñòíîå îò i/j,  îêðóãëåííîå â ìåíüøóþ ñòîðîíó äî çíà÷åíèÿ öåëîãî

        òèïà. Åñëè j ðàâíî 0, ðåçóëüòàò áóäåò îøèáî÷íûì.

 

             Îïåðàöèÿ mod  âîçâðàùàåò  îñòàòîê,  ïîëó÷åííûé ïóòåì äåëåíèÿ

        äâóõ åå îïåðàíäîâ, òî åñòü:

 

             i mod j = i - (i div j) * j

 

             Çíàê ðåçóëüòàòà îïåðàöèè mod áóäåò òåì æå, ÷òî è çíàê i. Åñ-

        ëè j ðàâíî íóëþ, òî ðåçóëüòàòîì áóäåò îøèáêà.

Ëîãè÷åñêèå îïåðàöèè

             Òèïû ëîãè÷åñêèõ îïåðàöèé ïîêàçàíû â Òàáëèöå 6.4.

 

                               Ëîãè÷åñêèå îïåðàöèè            Òàáëèöà 6.4

        ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

        ³ Îïåðàöèÿ ³     Äåéñòâèå        ³Òèïû îïåðàíäîâ³ Òèï ðåçóëüòàòà³

        ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³     not  ³ Îòðèöàíèå (áèòîâîå) ³  Öåëûé       ³    Öåëûé      ³

        ³     and  ³    È (áèòîâîå)      ³  Öåëûé       ³    Öåëûé      ³

        ³     or   ³    ÈËÈ (áèòîâîå)    ³  Öåëûé       ³    Öåëûé      ³

        ³     xor  ³ Èñêëþ÷àþùåå ÈËÈ     ³  Öåëûé       ³    Öåëûé      ³

        ³          ³    (áèòîâîå)        ³              ³               ³

        ³     shl  ³   Ñäâèã âëåâî       ³  Öåëûé       ³    Öåëûé      ³

        ³     shr  ³   Ñäâèã âïðàâî      ³  Öåëûé       ³    Öåëûé      ³

        ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

                   Ïðèìå÷àíèå: Îïåðàöèÿ not ÿâëÿåòñÿ óíàðíîé îïåðàöèåé.

 

             Åñëè îïåðàíäîì îïåðàöèè not ÿâëÿåòñÿ îïåðàíä öåëîãî òèïà, òî

        ðåçóëüòàò áóäåò òàêæå öåëîãî òèïà.

 

             Åñëè îáà  îïåðàíäà â îïåðàöèÿõ or,  and èëè xor öåëîãî òèïà,

        òî òèï ðåçóëüòàòà áóäåò òàêèì æå, êàê òèï îáîèõ îïåðàíäîâ.

 

             Îïåðàöèè i shl j è i shr j ñäâèãàþò  çíà÷åíèå  i  âëåâî  èëè

        âïðàâî íà j áèòîâ. Òèï ðåçóëüòàòà áóäåò òàêèì æå, êàê òèï i.

Áóëåâñêèå îïåðàöèè

             Òèïû îïåðàíäîâ è ðåçóëüòàò äëÿ áóëåâñêèõ îïåðàöèé ïîêàçàíû â

        Òàáëèöå 6.5.

 

                         Òàáëèöà 6.5 Áóëåâñêèå îïåðàöèè

        ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

        ³ Îïåðàöèÿ ³  Äåéñòâèå        ³ Òèïû îïåðàíäîâ  ³ Òèï ðåçóëüòàòà³

        ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³     not  ³     Îòðèöàíèå    ³   Áóëåâñêèé     ³     Áóëåâñêèé ³

        ³     and  ³   Ëîãè÷åñêîå È   ³   Áóëåâñêèé     ³     Áóëåâñêèé ³

        ³     or   ³  Ëîãè÷åñêîå ÈËÈ  ³   Áóëåâñêèé     ³     Áóëåâñêèé ³

        ³     xor  ³   Ëîãè÷åñêîå     ³                 ³               ³

        ³          ³ èñêëþ÷àþùåå ÈËÈ  ³   Áóëåâñêèé     ³     Áóëåâñêèé ³

        ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

                   Ïðèìå÷àíèå: Îïåðàöèÿ not ÿâëÿåòñÿ óíàðíîé îïåðàöèåé.

 

             Ðåçóëüòàòû ýòèõ îïåðàöèé ñîîòâåòñòâóþò îáû÷íîé áóëåâîé ëîãè-

        êå. Íàïðèìåð, âûðàæåíèå a and b ÿâëÿåòñÿ èñòèííûì (ïðèíèìàåò çíà-

        ÷åíèå Òruå) òîëüêî â òîì ñëó÷àå,  åñëè îáà îïåðàíäà a è  b  èìåþò

        èñòèííîå çíà÷åíèå (Òruå).

              Borland Pascal ïîääåðæèâàþòñÿ äâå ðàçëè÷íûå ìîäåëè ãåíåðà-

        öèè  êîäà  äëÿ îïåðàöèé or è and - ïîëíîå âû÷èñëåíèå è âû÷èñëåíèå

        ïî êîðîòêîé ñõåìå (÷àñòè÷íîå âû÷èñëåíèå).

 

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

        áóëåâñêîãî âûðàæåíèÿ,  ïîñòðîåííûé ñ ïîìîùüþ îïåðàöèé or  è  and,

        âñåãäà áóäåò âû÷èñëÿòüñÿ, äàæå åñëè ðåçóëüòàò âñåãî âûðàæåíèÿ óæå

        èçâåñòåí.  Ýòà ìîäåëü ïîëåçíà â òîì ñëó÷àå,  êîãäà îäèí èëè áîëåå

        îïåðàíäîâ  â âûðàæåíèè ïðåäñòàâëÿþò ñîáîé ôóíêöèè ñ ïîáî÷íûìè ýô-

        ôåêòàìè, êîòîðûå èçìåíÿþò ñìûñë ïðîãðàììû.

 

             Âû÷èñëåíèå ïî êîðîòêîé ñõåìå îáåñïå÷èâàåò ñòðîãîå âû÷èñëåíèå

        ñëåâà íàïðàâî.  Ýòî âû÷èñëåíèå ïðåêðàùàåòñÿ, êàê òîëüêî ðåçóëüòàò

        âñåãî âûðàæåíèÿ ñòàíîâèòñÿ î÷åâèäåí. Âî ìíîãèõ ñëó÷àÿõ ýòà ìîäåëü

        óäîáíà,  ïîñêîëüêó  îíà îáåñïå÷èâàåò ìèíèìàëüíîå âðåìÿ âûïîëíåíèÿ

        è,  êàê ïðàâèëî,  ìèíèìàëüíûé îáúåì êîäà.  Âû÷èñëåíèå ïî êîðîòêîé

        ñõåìå  äåëàåò òàêæå âîçìîæíûìè òàêèå êîíñòðóêöèè,  êîòîðûå â ïðî-

        òèâíîì ñëó÷àå áûëè áû íåäîïóñòèìû, íàïðèìåð:

 

             while (I<=Lenght(S)) and (S[I]<>' ') do

                Inc(I);

             while (P<>nil) and (P^.Value<>5) do

                P:=P^.Next;

 

              îáîèõ  ñëó÷àÿõ,  åñëè ðåçóëüòàòîì ïåðâîãî âû÷èñëåíèÿ áóäåò

        çíà÷åíèå False, âû÷èñëåíèå âòîðîãî âûðàæåíèÿ íå âûïîëíÿåòñÿ.

 

             Ñõåìó âû÷èñëåíèÿ ìîæíî çàäàâàòü ñ ïîìîùüþ äèðåêòèâû êîìïèëÿ-

        òîðà $B.  Çíà÷åíèåì ïî óìîë÷àíèþ ÿâëÿåòñÿ ñîñòîÿíèå  {$B-}  (ïîêà

        îíî íå áóäåò èçìåíåíî ñ ïîìîùüþ "ìåíþ" âîçìîæíîñòåé êîìïèëÿòîðà).

         ýòîì ñëó÷àå ãåíåðèðóåòñÿ êîä ñ âû÷èñëåíèåì ïî êîðîòêîé ñõåìå. Â

        ñëó÷àå äèðåêòèâû {$B+} ãåíåðèðóåòñÿ êîä ñ ïîëíûì âû÷èñëåíèåì.

 

             Ïîñêîëüêó â ñòàíäàðòíîì Ïàñêàëå íå îïðåäåëÿåòñÿ, êàêóþ ñõåìó

        ñëåäóåò èñïîëüçîâàòü äëÿ âû÷èñëåíèÿ áóëåâñêèõ âûðàæåíèé, òî ïðîã-

        ðàììû, çàâèñÿùèå îò äåéñòâèÿ êàêîé-ëèáî êîíêðåòíîé ñõåìû, â äåéñ-

        òâèòåëüíîñòè íå ÿâëÿþòñÿ ïåðåíîñèìûìè.  Îäíàêî, åñëè ïîæåðòâîâàòü

        ïåðåíîñèìîñòüþ,  òî î÷åíü ÷àñòî ìîæíî ïîëó÷èòü çíà÷èòåëüíûé âûèã-

        ðûø âî âðåìåíè âûïîëíåíèÿ è ïðîñòîòå,  êîòîðóþ ïîçâîëÿåò ïîëó÷èòü

        âû÷èñëåíèå ïî êîðîòêîé ñõåìå.

Îïåðàöèÿ ñî ñòðîêàìè

             Òèïû îïåðàíäîâ è ðåçóëüòàòû äëÿ îïåðàöèè ñî ñòðîêàìè ïîêàçà-

        íû â Òàáëèöå 6.6.

 

                              Îïåðàöèè ñî ñòðîêàìè            Òàáëèöà 6.6

        ÚÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

        ³ Îïåðàöèÿ  ³ Äåéñòâèå     ³  Òèïû îïåðàíäîâ     ³Òèï ðåçóëüòàòà³

        ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³      +    ³ Êîíêàòåíàöèÿ ³    Ñòðîêîâûé,       ³ Ñòðîêîâûé    ³

        ³           ³              ³  ñèìâîëüíûé èëè     ³              ³

        ³           ³              ³óïàêîâàííûé ñòðîêîâûé³              ³

        ÀÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

             Borland Pascal ïîçâîëÿåò èñïîëüçîâàòü îïåðàöèþ + äëÿ îáúåäè-

        íåíèÿ äâóõ ñòðîêîâûõ îïåðàíäîâ. Ðåçóëüòàòîì îïåðàöèè s + t, ãäå s

        è t èìåþò ñòðîêîâûé òèï,  ñèìâîëüíûé òèï (Char)  èëè  óïàêîâàííûé

        ñòðîêîâûé òèï,  áóäåò êîíêàòåíàöèÿ s è t. Ðåçóëüòàò áóäåò ñîâìåñ-

        òèì ñ ëþáûì ñòðîêîâûì òèïîì (íî íå ñ ñèìâîëüíûì Char è íå ñ  óïà-

        êîâàííûì ñòðîêîâûì òèïîì).  Åñëè äëèíà ðåçóëüòèðóþùåé ñòðîêè ïðå-

        âûøàåò 255 ñèìâîëîâ, òî îíà óñåêàåòñÿ äî 255 ñèìâîëîâ.

Îïåðàöèè íàä ñèìâîëüíûìè óêàçàòåëÿìè

             Ðàñøèðåííûé ñèíòàêñèñ  (ðàçðåøåííûé ïî äèðåêòèâå êîìïèëÿòîðà

        {$X+}) ïîääåðæèâàåò íåñêîëüêî îïåðàöèé ñ  óêàçàòåëÿìè  íà  PChar.

        Äëÿ óâåëè÷åíèÿ è óìåíüøåíèÿ ñìåùåíèÿ óêàçàòåëÿ ìîæíî èñïîëüçîâàòü

        îïåðàöèè + è -.  Ìèíóñ ìîæíî òàêæå  èñïîëüçîâàòü  äëÿ  âû÷èñëåíèÿ

        ðàññòîÿíèÿ (ðàçíîñòè) ìåæäó äâóìÿ ñèìâîëüíûìè óêàçàòåëÿìè. Åñëè P

        è Q - ýòî çíà÷åíèÿ òèïà PChar,  à I - çíà÷åíèå òèïà Word,  òî äî-

        ïóñòèìû ñëåäóþùèå êîíñòðóêöèè:

 

                          Äîïóñòèìûå êîíñòðóêöèè PChar        Òàáëèöà 6.7

        ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

        ³    Îïåðàöèÿ   ³                    Ðåçóëüòàò                  ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³    P + I      ³       Ñëîæåíèå I ñî ñìåùåíèåì P.              ³

        ³    I + P      ³       Ñëîæåíèå I ñî ñìåùåíèåì P.              ³

        ³    P - I      ³       Âû÷èòàíèå I èç ñìåùåíèÿ P.              ³

        ³    P - Q      ³       Âû÷èòàåò ñìåùåíèå Q èç ñìåùåíèÿ P.      ³

        ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

             Îïåðàöèè P  + I è I + P ñêëàäûâàåò I c àäðåñîì,  çàäàííûì P,

        ñîçäàâàÿ óêàçàòåëü, ññûëàþùèéñÿ íà I ñèìâîëîâ ïîñëå P. Îïåðàöèÿ P

        - I âû÷èòàåò I èç àäðåñà, çàäàííîãî P, ñîçäàâàÿ óêàçàòåëü, ññûëà-

        þùèéñÿ íà I ñèìâîëîâ ïåðåä P.

 

             Îïåðàöèÿ P - Q âû÷èòàåò ðàññòîÿíèå ìåæäó Q (ìëàäøèé àäðåñ) è

        P (ñòàðøèé àäðåñ),  ñîçäàâàÿ â ðåçóëüòàòå çíà÷åíèå òèïà Word, ïî-

        êàçûâàþùåå ÷èñëî ñèìâîëîâ ìåæäó Q è P.  Ýòà îïåðàöèÿ ïîäðàçóìåâà-

        åò, ÷òî P è Q ññûëàþòñÿ íà îäèí ñèìâîëüíûé ìàññèâ.  Åñëè äâà ñèì-

        âîëüíûé óêàçàòåëÿ ññûëàþòñÿ íà ðàçíûå ìàññèâû, òî ðåçóëüòàò áóäåò

        íå îïðåäåëåí.

Îïåðàöèè íàä ìíîæåñòâàìè

             Òèïû îïåðàíäîâ äëÿ îïåðàöèé íàä ìíîæåñòâàìè ïîêàçàíû â  Òàá-

        ëèöå 6.7.

 

                            Îïåðàöèè íàä ìíîæåñòâàìè          Òàáëèöà 6.7

        ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄ¿

        ³    Îïåðàöèÿ   ³  Äåéñòâèå   ³              Òèïû îïåðàíäîâ     ³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄ´

        ³       +       ³ Îáúåäèíåíèå ³ Ìíîæåñòâà ñ ñîâìåñòèìûìè òèïàìè ³

        ³       -       ³  Ðàçíîñòü   ³ Ìíîæåñòâà ñ ñîâìåñòèìûìè òèïàìè ³

        ³       *       ³ Ïåðåñå÷åíèå ³ Ìíîæåñòâà ñ ñîâìåñòèìûìè òèïàìè ³

        ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÙ

 

             Ðåçóëüòàòû îïåðàöèé ñîîòâåòñòâóþò ïðàâèëàì ëîãèêè  ðàáîòû  ñ

        ìíîæåñòâàìè:

 

             1.  Ïîðÿäêîâîå  çíà÷åíèå  c  ñîäåðæèòñÿ  â a+b òîëüêî òîãäà,

                 êîãäà îíî ñîäåðæèòñÿ â a èëè â b.

 

             2.  Ïîðÿäêîâîå çíà÷åíèå c ñîäåðæèòñÿ  â  a-b  òîëüêî  òîãäà,

                 êîãäà îíî ñîäåðæèòñÿ â a è íå ñîäåðæèòñÿ â b.

 

             3.  Ïîðÿäêîâîå  çíà÷åíèå  c  ñîäåðæèòñÿ  â a*b òîëüêî òîãäà,

                 êîãäà îí ñîäåðæèòñÿ â îáîèõ ìíîæåñòâàõ a è b.

 

             Åñëè íàèìåíüøèì ïîðÿäêîâûì çíà÷åíèåì,  êîòîðîå ÿâëÿåòñÿ ÷ëå-

        íîì ðåçóëüòàòà îïåðàöèé íàä ìíîæåñòâàìè, ÿâëÿåòñÿ a, à íàèáîëüøèì

        - b, òî òèïîì ðåçóëüòàòà áóäåò ìíîæåñòâî a..b.

Îïåðàöèè îòíîøåíèÿ

             Òèïû îïåðàíäîâ  è  ðåçóëüòàòû îïåðàöèé îòíîøåíèÿ ïðèâåäåíû â

        Òàáëèöå 6.8.

 

                         Òàáëèöà 6.8 Îïåðàöèè îòíîøåíèÿ

        ÚÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÂÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

        ³ Îïåðàöèÿ³  Äåéñòâèå  ³    Òèïû îïåðàíäîâ      ³ Òèï ðåçóëüòàòà³

        ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³     =   ³     Ðàâíî  ³ Ñîâìåñòèìûé ïðîñòîé,   ³    Áóëåâñêèé  ³

        ³         ³            ³ óêàçàòåëü, ìíîæåñòâåí- ³               ³

        ³         ³            ³ íûé ñòðîêîâûé èëè óïà- ³               ³

        ³         ³            ³ êîâàííûé ñòðîêîâûé     ³               ³

        ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³    <>   ³  Íå ðàâíî  ³ Ñîâìåñòèìûé ïðîñòîé,   ³    Áóëåâñêèé  ³

        ³         ³            ³ óêàçàòåëü, ìíîæåñòâåí- ³               ³

        ³         ³            ³ íûé, ñòðîêîâûé èëè óïà-³               ³

        ³         ³            ³ êîâàííûé ñòðîêîâûé     ³               ³

        ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³    <    ³ Ìåíüøå ÷åì ³ Ñîâìåñòèìûé ïðîñòîé,   ³    Áóëåâñêèé  ³

        ³         ³            ³ óêàçàòåëü, ìíîæåñòâåí- ³               ³

        ³         ³            ³ íûé, ñòðîêîâûé èëè óïà-³               ³

        ³         ³            ³ êîâàííûé ñòðîêîâûé     ³               ³

        ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³    >    ³ Áîëüøå ÷åì ³ Ñîâìåñòèìûé ïðîñòîé,   ³    Áóëåâñêèé  ³

        ³         ³            ³ óêàçàòåëü, ìíîæåñòâåí- ³               ³

        ³         ³            ³ íûé ñòðîêîâûé èëè óïà- ³               ³

        ³         ³            ³ êîâàííûé ñòðîêîâûé     ³               ³

        ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³   <=    ³  Ìåíüøå    ³ Ñîâìåñòèìûé ïðîñòîé,   ³    Áóëåâñêèé  ³

        ³         ³ èëè ðàâíî  ³ óêàçàòåëü, ìíîæåñòâåí- ³               ³

        ³         ³            ³ íûé ñòðîêîâûé èëè óïà- ³               ³

        ³         ³            ³ êîâàííûé ñòðîêîâûé     ³               ³

        ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³   >=    ³  Áîëüøå    ³ Ñîâìåñòèìûé ïðîñòîé,   ³    Áóëåâñêèé  ³

        ³         ³ èëè ðàâíî  ³ óêàçàòåëü, ìíîæåñòâåí- ³               ³

        ³         ³            ³ íûé ñòðîêîâûé èëè óïà- ³               ³

        ³         ³            ³ êîâàííûé ñòðîêîâûé     ³               ³

        ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³   <=    ³Ïîäìíîæåñòâî³ Ìíîæåñòâà ñîâìåñòèìûõ  ³     Áóëåâñêèé ³

        ³         ³            ³      òèïîâ             ³               ³

        ÃÄÄÄÄÄÄÄÄÄÅÄÄÄ´

        ³   >=    ³Íàäìíîæåñòâî³ Ìíîæåñòâà ñîâìåñòèìûõ  ³     Áóëåâñêèé ³

        ³         ³            ³      òèïîâ             ³               ³

        ÃÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³   in    ³  Ýëåìåíò   ³ Ëåâûé îïåðàíä: ëþáîé   ³     Áóëåâñêèé ³

        ³         ³  ìíîæåñòâà ³ ïåðå÷èñëèìûé òèï t;    ³               ³

        ³         ³            ³ ïðàâûé: ìíîæåñòâî,     ³               ³

        ³         ³            ³ ñîâìåñòèìîå ñ t.       ³               ³

        ÀÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÁÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

Ñðàâíåíèå ïðîñòûõ òèïîâ

             Êîãäà îïåðàöèè =,  <>,  <, >, >= èëè <= ïðèìåíÿþòñÿ äëÿ îïå-

        ðàíäîâ ïðîñòûõ òèïîâ,  òî ýòî äîëæíû áûòü ñîâìåñòèìûå òèïû. Îäíà-

        êî, åñëè  îäèí  îïåðàíä  èìååò âåùåñòâåííûé òèï,  òî äðóãîé ìîæåò

        áûòü öåëîãî òèïà.

Ñðàâíåíèå ñòðîê

             Îïåðàöèè îòíîøåíèÿ =,  <>,  <, >, >= èëè <= ìîãóò ïðèìåíÿòñÿ

        äëÿ ñðàâíåíèÿ ñòðîê ñîãëàñíî ïîðÿäêó ðàñøèðåííîãî íàáîðà ñèìâîëîâ

        êîäà  ASÑII.  Ëþáûå äâà çíà÷åíèÿ ñòðîêîâûõ äàííûõ ìîæíî ñðàâíèòü,

        ïîñêîëüêó âñå çíà÷åíèÿ ñòðîêîâûõ äàííûõ ñîâìåñòèìû.

 

             Çíà÷åíèÿ ñèìâîëüíîãî òèïà ñîâìåñòèìû ñî çíà÷åíèÿìè ñòðîêîâî-

        ãî  òèïà,  è  ïðè èõ ñðàâíåíèè ñèìâîëüíîå çíà÷åíèå îáðàáàòûâàåòñÿ

        êàê ñòðîêîâîå çíà÷åíèå ñ äëèíîé 1.  Êîãäà ñî çíà÷åíèåì ñòðîêîâîãî

        òèïà  ñðàâíèâàåòñÿ óïàêîâàííîå ñòðîêîâîå çíà÷åíèå èç N ýëåìåíòîâ,

        òî îíî îáðàáàòûâàåòñÿ, êàê çíà÷åíèå ñòðîêîâîãî òèïà äëèíîé N.

Ñðàâíåíèå óïàêîâàííûõ ñòðîê

             Îïåðàöèè îòíîøåíèÿ =,  <>,  <, >, >= èëè <= ìîãóò ïðèìåíÿòñÿ

        òàêæå äëÿ äâóõ óïàêîâàííûõ çíà÷åíèé ñòðîêîâîãî òèïà, åñëè îíè ñî-

        äåðæàò îäèíàêîâîå ÷èñëî ýëåìåíòîâ.  Åñëè ÷èñëî ýëåìåíòîâ ðàâíî n,

        òî îïåðàöèÿ ñîîòâåòñòâóåò ñðàâíåíèþ äâóõ ñòðîê, êàæäàÿ èç êîòîðûõ

        èìååò äëèíó n.

Ñðàâíåíèå óêàçàòåëåé

             Îïåðàöèè = è <> ìîãóò èñïîëüçîâàòüñÿ äëÿ ñðàâíåíèÿ îïåðàíäîâ

        òèïà óêàçàòåëü. Äâà óêàçàòåëÿ ðàâíû òîëüêî â òîì ñëó÷àå, åñëè îíè

        ññûëàþòñÿ íà îäèí è òîò æå îáúåêò.

Ñðàâíåíèå ñèìâîëüíûõ óêàçàòåëåé

             Ïðè ðàçðåøåíèè ïî äèðåêòèâå êîìïèëÿòîðà  {$X+}  ðàñøèðåííîãî

        ñèíòàêñèñà îïåðàöèè =,  <>,  <,  >,  >= èëè <= ìîãóò ïðèìåíÿòñÿ ê

        çíà÷åíèÿì PChar.  Çàìåòèì,  îäíàêî,  ÷òî ýòè  îïåðàöèè  îòíîøåíèÿ

        ïðåäïîëàãàþò, ÷òî  äâà ñðàâíèâàåìûå óêàçàòåëÿ ññûëàþòñÿ íà îäèí è

        òîò æå ñèìâîëüíûé ìàññèâ..  Ïî ýòîé ïðè÷èíå â ñðàâíåíèè ó÷àñòâóþò

        òîëüêî ñìåùåíèÿ äâóõ çíà÷åíèé-óêàçàòåëåé. Åñëè óêàçàòåëè ññûëàþò-

        ñÿ íà ðàçíûå ñèìâîëüíûå ìàññèâû, ðåçóëüòàò áóäåò íå îïðåäåëåí.

Ñðàâíåíèå ìíîæåñòâ

             Åñëè îïåðàíäàìè ÿâëÿþòñÿ ìíîæåñòâà a è b,  òî ïðè èõ ñðàâíå-

        íèè ïîëó÷àþòñÿ ñëåäóþùèå ðåçóëüòàòû:

 

             1.  Âûðàæåíèå a=b èñòèííî (= True) òîëüêî êîãäà a è b ñîäåð-

                 æàò îäíè è òå æå ýëåìåíòû, â ïðîòèâíîì ñëó÷àå a<>b.

 

             2.  Âûðàæåíèå a = b èñòèííî,  êîãäà êàæäûé ýëåìåíò ìíîæåñòâà

                 à ÿâëÿåòñÿ òàêæå ýëåìåíòîì ìíîæåñòâà b.

 

             3.  Âûðàæåíèå a = b èñòèííî,  êîãäà êàæäûé ýëåìåíò ìíîæåñòâà

                 b ÿâëÿåòñÿ òàêæå ýëåìåíòîì ìíîæåñòâà a.

Ïðîâåðêà íà ïðèíàäëåæíîñòü ê ìíîæåñòâó

             Îïåðàöèÿ in âîçâðàùàåò èñòèííîå çíà÷åíèå (True),  êîãäà çíà-

        ÷åíèå ýëåìåíòà ïîðÿäêîâîãî òèïà ÿâëÿåòñÿ ýëåìåíòîì îïåðàíäà  ìíî-

        æåñòâåííîãî  òèïà,  â  ïðîòèâíîì  ñëó÷àå  îí  âîçâðàùàåò çíà÷åíèå

        False.

Îïåðàöèÿ @

             Îïåðàöèÿ @ èñïîëüçóåòñÿ â àäðåñíîì êîýôôèöèåíòå äëÿ âû÷èñëå-

        íèÿ àäðåñà ïåðåìåííîé,  ïðîöåäóðû,  ôóíêöèè èëè ìåòîäà. Â Òàáëèöå

        6.9 ïîêàçàí îïåðàíä è òèïû ðåçóëüòàòà.

 

         àäðåñíûé êîýôôèöèåíò

         ³  ÚÄÄÄ¿        ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

         ÀÄij @ ÃÄÄÂÄÄÄÄij ññûëêà íå ïåðåìåííóþ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ>

            ÀÄÄÄÙ  ³     ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ              ^

                   ³     ÚÄ¿           ³

                   ÃÄÄÄÄ>³ èäåíòèôèêàòîð ïðîöåäóðû ÃÄÄÄÄÄÄÄÄÄÄÄ´

                   ³     ÀÄÙ           ³

                   ³     ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿             ³

                   ÃÄÄÄÄ>³ èäåíòèôèêàòîð ôóíêöèè ÃÄÄÄÄÄÄÄÄÄÄÄÄÄ´

                   ³     ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ             ³

                   ³     ÚÄÄÄÄ¿   ³

                   ÀÄÄÄÄ>³ óòî÷íåííûé èäåíòèôèêàòîð ìåòîäà ÃÄÄÄÙ

                         ÀÄÄÄÄÙ

 

                           Îïåðàöèÿ ñîçäàíèÿ óêàçàòåëÿ        Òàáëèöà 6.9

        ÚÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

        ³   Îïåðàöèÿ ³ Äåéñòâèå  ³   Òèïû îïåðàíäîâ      ³Òèï ðåçóëüòàòà³

        ÃÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

        ³       @    ³ Ïîëó÷åíèå ³ Ññûëêà íà ïåðåìåííóþ, ³   Óêàçàòåëü  ³

        ³            ³ óêàçàòåëÿ ³ ïðîöåäóðó èëè èäåíòè- ³  (ñîâìåñòè-  ³

        ³            ³           ³ ôèêàòîð ôóíêöèè.      ³  ìûé ñ nil)  ³

        ÀÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

             Îïåðàöèÿ @ âîçâðàùàåò àäðåñ îïåðàíäà,  òî åñòü ñòðîèò çíà÷å-

        íèå-óêàçàòåëü, ññûëàþùååñÿ íà ýòîò îïåðàíä.

Èñïîëüçîâàíèå îïåðàöèè @ äëÿ ïåðåìåííîé

             Èñïîëüçîâàíèå îïåðàöèè @ äëÿ îáû÷íîé ïåðåìåííîé (íå ïàðàìåò-

        ðà) íå âûçûâàåò íèêàêèõ ñëîæíîñòåé.  Ïðèìåíåíèå @ ê ññûëêå íà ïå-

        ðåìåííóþ âîçâðàùàåò óêàçàòåëü íà ïåðåìåííóþ. Ââåäåì îïèñàíèÿ:

 

             type

               TwoChar = array[0..1] of char;

             var

               Int: integer;

               TwoCharPtr: ^TwoChar;

 

        òîãäà îïåðàòîð:

 

             TwoCharPtr := @Int;

 

        ïðèâîäèò ê   òîìó,   ÷òî   TwoCharPtr  äëÿ  ïîëó÷åíèÿ  ññûëêè  íà

        TwoCharPtr^ ñòàíîâèòñÿ ïîâòîðíîé èíòåðïðåòàöèåé çíà÷åíèÿ Int, êàê

        åñëè áû îíî áûëî ñèìâîëüíûì ìàññèâîì array[0..1].

 

             Òèï ïîëó÷àåìîãî â ðåçóëüòàòå óêàçàòåëü óïðàâëÿåòñÿ  äèðåêòè-

        âîé êîìïèëÿòîðà  $T:  â  ñîñòîÿíèè {$T-} (ïî óìîë÷àíèþ) òèïîì ðå-

        çóëüòàòà áóäåò Pointer.  Äðóãèìè ñëîâàìè,  ðåçóëüòàò îì  ÿâëÿåòñÿ

        íåòèïèçèðîâàííûé óêàçàòåëü,  ñîâìåñòèìûé  ñî âñåìè äðóãèìè òèïàìè

        óêàçàòåëåé. Â ñîñòîÿíèè {$T+} òèïîì ðåçóëüòàòà áóäåò ^T,  ãäå T -

        òèï ññûëêè íà ïåðåìåííóþ.  Òî åñòü òèï ðåçóëüòàòà áóäåò ñîâìåñòèì

        ñî âñåìè äðóãèìè óêàçàòåëÿìè íà òèï ýòîé ïåðåìåííîé.

 

                   Ïðèìå÷àíèå: Ê èñïîëüçîâàíèþ îïåðàöèè @  ñ  ïðîöåäóðíûì

              òèïîì  ïðèìåíÿþòñÿ  ñïåöèàëüíûå  ïðàâèëà.  Ñì.  íèæå ðàçäåë

              "Ïðîöåäóðíûé òèïû â âûðàæåíèÿõ".

Èñïîëüçîâàíèå îïåðàöèè @ äëÿ ïðîöåäóðû èëè ôóíêöèè èëè ìåòîäà

             Âû ìîæåòå ïðèìåíÿòü îïåðàöèþ @ ê ïðîöåäóðå,  ôóíêöèè èëè ìå-

        òîäó. Ïðè ýòîì âû ïîëó÷èòå óêàçàòåëü íà òî÷êó âõîäà ïîäïðîãðàììû.

        Íåçàâèñèìî îò ñîñòîÿíèÿ $T, òèïîì ïîëó÷åííîãî â ðåçóëüòàòå óêàçà-

        òåëÿ âñåãäà  áóäåò Pointer.  Äðóãèìè ñëîâàìè,  ðåçóëüòàòîì âñåãäà

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

        ññûëî÷íûìè òèïàìè.

 

             Ïðè ïðèìåíåíèè îïåðàöèè @ ê ìåòîäó ìåòîä äîëæåí çàäàâàòüñÿ ñ

        ïîìîùüþ óòî÷íåííîãî èäåíòèôèêàòîðà (èäåíòèôèêàòîðà îáúåêòíîãî òè-

        ïà, çà êîòîðûì ñëåäóåò òî÷êà è èäåíòèôèêàòîð ìåòîäà).

Âûçîâû ôóíêöèè

             Âûçîâû ôóíêöèè ïðèâîäÿò ê àêòèâèçàöèè  ôóíêöèè,  çàäàííîé  ñ

        ïîìîùüþ èäåíòèôèêàòîðà ôóíêöèè.  Èäåíòèôèêàòîðîì ôóíêöèè ÿâëÿåòñÿ

        ëþáîé èäåíòèôèêàòîð, èñïîëüçîâàííûé äëÿ îáîçíà÷åíèÿ ôóíêöèè.

 

             Åñëè â ñîîòâåòñòâóþùåì îïèñàíèè  ôóíêöèè  ñîäåðæèòñÿ  ñïèñîê

        ôîðìàëüíûõ ïàðàìåòðîâ òî â âûçîâå ôóíêöèè äîëæåí ñîäåðæàòüñÿ ñïè-

        ñîê ôàêòè÷åñêèõ ïàðàìåòðîâ.  Êàæäûé ïàðàìåòð ïîäñòàâëÿåòñÿ âìåñòî

        ñîîòâåòñòâóþùåãî  ôîðìàëüíîãî  ïàðàìåòðà â ñîîòâåòñòâèè ñ íàáîðîì

        ïðàâèë, êîòîðûé ââîäèòñÿ â Ãëàâå 9 ("Ïðîöåäóðû è ôóíêöèè").

 

                   Ïðèìå÷àíèå: Ñì.  âûøå ðàçäåëû  "Àêòèâèçàöèÿ  ìåòîäîâ",

              "Àêòèâèçàöèÿ óòî÷íåííûõ ìåòîäîâ" è "Ïðîöåäóðíûå òèïû".

 

                           ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

         âûçîâ ôóíêöèè ÄÂÄ>³èäåíòèôèêàòîðÃÄÂÂÄÄÄ>

                        ³  ³   ôóíêöèè   ³ ³³                         ^

                        ³  ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³³   ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿  ³

                        ³  ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ÀÄÄ>³ñïèñîê ôàêòè÷åñêèõÃÄÄÙ

                        ÃÄ>³ äåñèãíàòîð  ÃÄ´    ³  ïàðàìåòðîâ      ³

                        ³  ³   ìåòîäà    ³ ³    ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

                        ³  ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³

                        ³  ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³

                        ³  ³  óòî÷íåííûé ³ ³

                        ÃÄ>³  äåñèãíàòîð ÃÄ´

                        ³  ³    ìåòîäà   ³ ³

                        ³  ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³

                        ³  ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³

                        ÀÄ>³  ññûëêà íà  ÃÄÙ

                           ³  ïåðåìåííóþ ³

                           ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

                                 ÚÄÄÄ¿      ÚÄÄÄÄÄÄÄÄÄÄÄ¿     ÚÄÄÄ¿

         ñïèñîê ôàêòè÷åñêèõ ÄÄÄÄ>³ ( ÃÄÄÄÄÄ>³ôàêòè÷åñêèéÃÄÄÂÄ>³ ) ÃÄÄÄ>

         ïàðàìåòðîâ              ÀÄÄÄÙ   ^  ³ ïàðàìåòð  ³  ³  ÀÄÄÄÙ

                                         ³  ÀÄÄÄÄÄÄÄÄÄÄÄÙ  ³

                                         ³   ÚÄÄÄ¿         ³

                                         ÀÄÄÄ´ , ³<ÄÄÄÄÄÄÄÄÙ

                                             ÀÄÄÄÙ

 

                                    ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿

         ôàêòè÷åñêèé ïàðàìåòð ÄÄÂÄÄ>³ âûðàæåíèå  ÃÄÄÄÄÄÄÄÄ>

                                ³   ÀÄÄÄÄÄÄÄÄÄÄÄÄÙ   ^

                                ³   ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿   ³

                                ÀÄÄ>³ ññûëêà íà  ÃÄÄÄÙ

                                    ³ ïåðåìåííóþ ³

                                    ÀÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

             Ïðèâåäåì íåêîòîðûå ïðèìåðû âûçîâîâ ôóíêöèé:

 

             Sum(A,63)

             Maximum(147,J)

             Sin(X+Y)

             Eof(F)

             Volume(Radius, Height)

 

             Â ðåæèìå  ðàñøèðåííîãî ñèíòàêñèñà ($X+) âûçîâû ôóíêöèé ìîæíî

        èñïîëüçîâàòü â êà÷åñòâå  îïåðàòîðîâ,  òî  åñòü  ðåçóëüòàò  âûçîâà

        ôóíêöèè ìîæåò îòáðàñûâàòüñÿ.

Îïèñàòåëè ìíîæåñòâà

             Îïèñàòåëü ìíîæåñòâà  îïðåäåëÿåò çíà÷åíèÿ ìíîæåñòâåííîãî òèïà

        è ïîëó÷àåòñÿ ïóòåì çàïèñè  âûðàæåíèé,  çàêëþ÷åííûõ  â  êâàäðàòíûå

        ñêîáêè ([]). Êàæäîå âûðàæåíèå îïðåäåëÿåò çíà÷åíèå ìíîæåñòâà.

 

                       ÚÄÄÄ¿                            ÚÄÄÄ¿

         îïèñàòåëü ÄÄÄ>³ [ ÃÄÄÂ>³ ] ÃÄÄÄ>

         ìíîæåñòâà     ÀÄÄÄÙ  ³    ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿    ^  ÀÄÄÄÙ

                              ÀÄÄÄ>³   ãðóïïà   ÃÄÄÂÄÙ

                                ^  ³  ýëåìåíòîâ ³  ³

                                ³  ÀÄÄÄÄÄÄÄÄÄÄÄÄÙ  ³

                                ³    ÚÄÄÄ¿         ³

                                ÀÄÄÄÄ´ , ³<ÄÄÄÄÄÄÄÄÙ

                                     ÀÄÄÄÙ

 

                             ÚÄÄÄÄÄÄÄÄÄÄÄ¿

         ãðóïïà ýëåìåíòîâ ÄÄ>³ âûðàæåíèå ÃÄÄÂÄÄÄ>

                             ÀÄÄÄÄÄÄÄÄÄÄÄÙ  ³                       ^

                                            ³  ÚÄÄ¿   ÚÄÄÄÄÄÄÄÄÄÄÄ¿ ³

                                            ÀÄ>³..ÃÄÄ>³ âûðàæåíèå ÃÄÙ

                                               ÀÄÄÙ   ÀÄÄÄÄÄÄÄÄÄÄÄÙ

 

             Îáîçíà÷åíèå [ ] îçíà÷àåò ïóñòîå ìíîæåñòâî, òèï êîòîðîãî ñîâ-

        ìåñòèì  ïî  ïðèñâàèâàíèþ  ñ òèïîì ëþáîãî ìíîæåñòâà.  Ëþáàÿ ãðóïïà

        ýëåìåíòîâ,  îïèñàííàÿ,  êàê õ..ó,  îáúÿâëÿåò ýëåìåíòàìè ìíîæåñòâà

        âñå çíà÷åíèÿ â äèàïàçîíå õ..ó.  Åñëè õ áîëüøå,  ÷åì ó, òî õ..ó íå

        îïèñûâàåò íèêàêèõ ýëåìåíòîâ è [x..y] îáîçíà÷àåò ïóñòîå ìíîæåñòâî.

 

              êîíêðåòíîì îïèñàòåëå ìíîæåñòâà âñå  çíà÷åíèÿ  âûðàæåíèÿ  â

        ãðóïïàõ ýëåìåíòîâ äîëæíû áûòü îäíîãî ïîðÿäêîâîãî òèïà.

 

             Ïðèâåäåì íåêîòîðûå ïðèìåðû îïèñàòåëåé ìíîæåñòâ:

 

             [red, C, green]

             [1,5,10..K mod 12, 13, 23]

             ['A'..'Z', 'a'..'z', Chr(Digit+48)]

Ïðèâåäåíèå òèïà çíà÷åíèé

             Òèï âûðàæåíèÿ ìîæíî èçìåíèòü íà äðóãîé òèï ñ ïîìîùüþ  ïðèâå-

        äåíèÿ òèïà çíà÷åíèé.

 

                          ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿   ÚÄÄÄ¿   ÚÄÄÄÄÄÄÄÄÄ¿   ÚÄÄÄ¿

         ïðèâåäåíèå   ÄÄÄ>³èäåíòèôèêàòîðÃÄÄ>³ ( ÃÄÄ>³âûðàæåíèåÃÄÄ>³ ) ÃÄ>

         òèïà çíà÷åíèÿ    ³    òèïà     ³   ÀÄÄÄÙ   ÀÄÄÄÄÄÄÄÄÄÙ   ÀÄÄÄÙ

                          ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

             Òèï âûðàæåíèÿ è çàäàâàåìûé òèï äîëæíû îáà èìåòü ïåðå÷èñëèìûé

        òèï èëè òèï óêàçàòåëåé.  Äëÿ  ïåðå÷èñëèìûõ  òèïîâ  ðåçóëüòèðóþùåå

        çíà÷åíèå  ïîëó÷àåòñÿ  ïóòåì ïðåîáðàçîâàíèÿ âûðàæåíèÿ (è âîçìîæíîé

        ïðîâåðêè íà íàõîæäåíèå â äîïóñòèìûõ ãðàíèöàõ). Ïðåîáðàçîâàíèå ìî-

        æåò ïðèâåñòè ê óñå÷åíèþ èëè óâåëè÷åíèþ ðàçìåðà èñõîäíîãî çíà÷åíèÿ

        â òîì ñëó÷àå,  åñëè âíîâü îïðåäåëÿåìûé òèï îòëè÷àåòñÿ îò òèïà âû-

        ðàæåíèÿ.  òîì ñëó÷àå, êîãäà çíà÷åíèå ðàñøèðÿåòñÿ, åãî çíàê âñåã-

        äà ñîõðàíÿåòñÿ.  Òàêèì îáðàçîì,  çíà÷åíèå ÿâëÿåòñÿ ðàñøèðÿåìûì ïî

        çíàêó.

 

             Ñèíòàêñèñ ïðèâåäåíèÿ òèïà çíà÷åíèé ïî÷òè ñîâïàäàåò ñ ñèíòàê-

        ñèñîì ïðèâåäåíèÿ òèïà ïåðåìåííûõ (ñì. ðàçäåë "Ïðèâåäåíèå òèïà ïå-

        ðåìåííûõ" â Ãëàâå 5).  Îäíàêî ïðè ïðèâåäåíèè òèïà çíà÷åíèé îïåðà-

        öèè ïðîèçâîäÿòñÿ ñî çíà÷åíèÿìè,  à  íå  ñ  ïåðåìåííûìè  è,  òàêèì

        îáðàçîì, ìîãóò íå ó÷àñòâîâàòü â ññûëêàõ íà ïåðåìåííûå. Òî åñòü çà

        ïðèâåäåíèåì òèïà çíà÷åíèÿ íå îáÿçàòåëüíî ñëåäóþò êâàëèôèêàòîðû. Â

        ÷àñòíîñòè, ïðèâåäåíèå òèïà çíà÷åíèé íå äîëæíî âñòðå÷àòüñÿ â ëåâîé

        ÷àñòè îïåðàòîðà ïðèñâàèâàíèÿ.

 

             Íåêîòîðûå ïðèìåðû ïðèâåäåíèÿ òèïà çíà÷åíèé âêëþ÷àþò  â ñåáÿ:

 

             Intereg('A')

             Char(48)

             Boolean(0)

             Color(2)

             IntPtr(@Buffer)

             BytePtr(Ptr($40,$49))

Ïðîöåäóðíûå òèïû â âûðàæåíèÿõ

              îáùåì ñëó÷àå èñïîëüçîâàíèå ïðîöåäóðíîé ïåðåìåííîé â îïåðà-

        òîðå  èëè âûðàæåíèè îçíà÷àåò âûçîâ ïðîöåäóðû èëè ôóíêöèè,  õðàíÿ-

        ùåéñÿ â ýòîé ïåðåìåííîé. Îäíàêî, èìååòñÿ èñêëþ÷åíèå. Êîãäà êîìïè-

        ëÿòîð âèäèò,  ÷òî ïðîöåäóðíàÿ ïåðåìåííàÿ íàõîäèòñÿ â ëåâîé  ÷àñòè

        îïåðàòîðà ïðèñâàèâàíèÿ,  îí çíàåò, ÷òî ïðàâàÿ ÷àñòü äîëæíà ïðåäñ-

        òàâëÿòü ñîáîé ïðîöåäóðíîå çíà÷åíèå. Ðàññìîòðèì â êà÷åñòâå ïðèìåðà

        ñëåäóþùóþ ïðîãðàììó:

 

             type

                IntFunc = function: Integer;

             var

                F: IntFunc;

                N: Integer;

 

             function ReadInt: Integer; far;

             var

                I: Integer;

             begin

                Read(I);

                ReadInt := I;

             end;

             begin

                F := ReadInt;      { ïðèñâàèâàíèå ïðîöåäóðíîãî çíà÷åíèÿ }

                N := ReadInt;      { ïðèñâàèâàíèå ðåçóëüòàòà ôóíêöèè }

             end.

 

             Ïåðâûé îïåðàòîð  îñíîâíîé  ïðîãðàììû ïðèñâàèâàåò ïðîöåäóðíîå

        çíà÷åíèå (àäðåñ ïðîöåäóðû) ReadInt ïðîöåäóðíîé ïåðåìåííîé F, âòî-

        ðîé îïåðàòîð âûçûâàåò ReadInt è ïðèñâàèâàåò N âîçâðàùàåìîå çíà÷å-

        íèå.  Ðàçëè÷èå ìåæäó ïîëó÷åíèåì ïðîöåäóðíîãî çíà÷åíèÿ èëè âûçîâîì

        ôóíêöèè îñóùåñòâëÿåòñÿ ïî òèïó ïåðåìåííîé,  êîòîðîé ïðèñâàèâàåòñÿ

        çíà÷åíèå (F èëè N).

 

             Ê ñîæàëåíèþ,  åñòü ñèòóàöèè, êîãäà êîìïèëÿòîð íå ìîæåò îïðå-

        äåëèòü èç êîíòåêñòà æåëàåìîå äåéñòâèå. Íàïðèìåð, â ñëåäóþùåì îïå-

        ðàòîðå äëÿ êîìïèëÿòîðà íå î÷åâèäíî,  ÷òî íóæíî ñäåëàòü:  ñðàâíèòü

        ïðîöåäóðíîå  çíà÷åíèå â F ñ ïðîöåäóðíûì çíà÷åíèåì ReadInt,  ÷òîáû

        îïðåäåëèòü,  ÷òî F óêàçûâàåò â äàííûé ìîìåíò íà ReadInt, èëè âûç-

        âàòü F è ReadInt, à çàòåì ñðàâíèòü âîçâðàùàåìûå çíà÷åíèÿ:

 

             if F = ReadInt then

               WriteLn('Equal');

 

             Îäíàêî, ñòàíäàðòíûé ñèíòàêñèñ Ïàñêàëÿ îïðåäåëÿåò,  ÷òî âõîæ-

        äåíèå  â  âûðàæåíèå  èäåíòèôèêàòîðà  ôóíêöèè  îçíà÷àåò âûçîâ ýòîé

        ôóíêöèè,  ïîýòîìó â ðåçóëüòàòå ïðåäûäóùåãî îïåðàòîðà áóäåò âûïîë-

        íåí  âûçîâ  F è ReadInt,  à çàòåì áóäóò ñðàâíèâàòüñÿ âîçâðàùàåìûå

        çíà÷åíèÿ.  ×òîáû ñðàâíèòü ïðîöåäóðíîå çíà÷åíèå â F ñ  ïðîöåäóðíûì

        çíà÷åíèåì â ReadInt, íóæíî èñïîëüçîâàòü ñëåäóþùóþ êîíñòðóêöèþ:

             if @F = @ReadInt then

               WriteLn('Equal');

 

             Ïðè ïðèìåíåíèè ê ïðîöåäóðíîé ïåðåìåííîé, èäåíòèôèêàòîðó ïðî-

        öåäóðû èëè ôóíêöèè îïåðàöèè ïîëó÷åíèÿ àäðåñà @, ýòà îïåðàöèÿ ïðå-

        äîòâðàùàåò  âûçîâ êîìïèëÿòîðîì ïðîöåäóðû è â òî æå âðåìÿ ïðåîáðà-

        çóåò àðãóìåíò â óêàçàòåëü.  Òàêèì îáðàçîì, @F ïðåîáðàçóåò F â íå-

        òèïèçîâàííûé   óêàçàòåëü-ïåðåìåííóþ,   êîòîðàÿ   ñîäåðæèò   àäðåñ

        ReadInt.  Äëÿ îïðåäåëåíèÿ òîãî,  ÷òî F ññûëàåòñÿ íà ReadInt ìîæíî

        ñðàâíèòü äâà çíà÷åíèÿ-óêàçàòåëÿ.

 

             Îïåðàöèÿ @ ÷àñòî èñïîëüçóåòñÿ ïðè  ïðèñâàèâàíèè  ïðîöåäóðíîé

        ïåðåìåííîé íåòèïèçèðîâàííîãî çíà÷åíèÿ-óêàçàòåëÿ.  Íàïðèìåð, îïðå-

        äåëåííàÿ â Windows (â  ìîäóëå  WinProcs)  ôóíêöèÿ  GetProcAddress

        âîçâðàùàåò àäðåñ  ýêñïîðòèðóåìîé ôóíêöèè â DLL êàê íåòèïèçèðîâàí-

        íîé çíà÷åíèå-óêàçàòåëü. Ñ ïîìîùüþ îïåðàöèè @ âûçîâ GetProcAddress

        ìîæíî ïðèñâîèòü ïðîöåäóðíîé ïåðåìåííîé:

 

             type

               TStrComp = function(Str1, Str2: PChar): Integer;

             var

               StrComp: TStrComp:

                 .

                 .

                 .

             begin

              .

              .

              .

              @StrComp := GetProcAddress(KernelHandle, 'Lstrcmpi');

                  .

                  .

                  .

             end.

 

             ×òîáû ïîëó÷èòü àäðåñ â ïàìÿòè ïðîöåäóðíîé ïåðåìåííîé,  à  íå

        àäðåñ,  â  íåé  çàïèñàííûé,  èñïîëüçóéòå äâîéíóþ îïåðàöèþ @ (@@).

        Íàïðèìåð,  @P îçíà÷àåò ïðåîáðàçîâàíèå P â íåòèïèçèðîâàííûé óêàçà-

        òåëü-ïåðåìåííóþ,  â  @@P  îçíà÷àåò âîçâðàùåíèå ôèçè÷åñêîãî àäðåñà

        ïåðåìåííîé P.