Новости           

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Благодарности

Гостевая книга

От автора

Неожиданные синтаксические ошибки 

              Иногда вы будете встречаться с синтаксическими ошибками, ко-
         торые трудно понять или даже распознать, как ошибки. В частности,
         необнаруживаемая ошибка произойдет,  когда вы пытаетесь скомпили-
         ровать данный код:
              program Errors; {данная программа не компилируется}

              var
                s: string[80];

              procedure F1(x: string[80]);
              begin
                WriteLn(s);
              end;

              begin
                ReadLn(s);
                F1(s);
              end.

              Если вы попытаетесь скомпилировать эту программу, то увидите
         следующее сообщение об ошибке:
              Error 89: ")" expected
              /ошибка 89: ожидалась ")"/

              После нажатия клавиши ESC,  вы обнаружите, что Турбо Паскаль
         указывает на строку
              procedure F1(x:string[80]);

         с курсором в позиции,  показанной стрелкой.  Это недостаток Турбо
         Паскаля?  Нет.  Турбо Паскаль не может использовать тип string  в
         вызовах процедур и функций. Вы должны явно декларировать свой тип
         и применить его.  В данном примере  вы,  во-первых,  декларируете
         тип, называемый str80 с помощью следующего предложения:

              type
                str80 = string[80];

              Затем вы используете заново созданный тип str80, как тип па-
         раметра для функции F1.  Правильная программа выглядит  следующим
         образом:

              program CorrectecError; {данная программа будет
                               скомпилирована}
              type
                str80 = string[80];
              var
                s := str80;

              procedure F1(x: str80);
              begin
                WriteLn(x);
              end;

              begin
                ReadLn(s);
                F1(s);
              end.

              Другая, вносящая путаницу, синтаксическая ошибка порождается
         следующей программой:

              program Error; {данная программа не будет скомпилирована}

              procedure F2;
              var
                t: integer;
              begin
                for t := 1 to 10 do WriteLn('hi there');
              end

              begin
                F2;
              end.

              Ошибка здесь состоит в том,  что точка с запятой отсутствует
         после end в процедуре F2.  Однако, Турбо Паскаль укажет на ошибку
         в  следующей строке.  В данной простой программе легко обнаружить
         ошибку.  Однако, в некоторых ситуациях вам пришлось бы потрудить-
         ся, чтобы найти то место, где пропущена точка с запятой.

(с)Все права защищены

По всем интересующим вопросампрошу писать на электронный адрес

    Rambler's Top100 PROext: Top 1000
    Rambler's Top100 Яндекс цитирования
Hosted by uCoz