Чтение онлайн

на главную - закладки

Жанры

Шрифт:

Вернемся к Паскалю. Превращая вашу программу в исполняемый файл, компилятор, подобно учителю, читает её слева направо и сверху вниз, зорко изучая вашу писанину. Обнаружив синтаксическую ошибку, он сообщит об этом и остановится. Исполняемый EXE–файл будет создан только при отсутствии синтаксических ошибок. К чему такая строгость? Мы склонны прощать друг другу мелкие огрехи, если понимаем смысл сказанного. Но компьютер не так умен, чтобы додумывать наши человеческие мысли, – вот почему так строг компилятор.

Обратимся к практике. Откройте файл с нашей первой программой и внесите ошибку в первой строке.

Например, уберите первую букву в слове BEGIN.

egin

Writeln(’Привет!’)

end.

Запустите компиляцию этой программы – нажмите F9, – и что же? В окне сообщений вы увидите: «BEGIN expected…». Это значит, что компилятор не нашел обязательного в начале программы ключевого слова BEGIN. Компилятор может обнаружить много разных ошибок, вы найдете их перечень в справке по IDE (Appendix C, Compiler messages), а также в приложении Д.

Исправим эту ошибку и сделаем другую, – уберем закрывающую кавычку в тестовой константе (после восклицательного знака).

begin

Writeln(’Привет!)

end.

Попытавшись скомпилировать, получим сообщение: «String exceeds line». Это значит, что строковая константа превышает допустимый размер. Стало быть, компилятор не всегда точно определяет место ошибки, и тогда не худо самим «шевельнуть извилинами», – здесь полезна тренировка. Поупражняйтесь в поиске ошибок, внося их в программу сознательно. Запускайте компиляцию, и наблюдайте результат. Так накопите бесценный опыт исправления ошибок, и «ужасные» сообщения уже не запугают вас.

А найдет ли компилятор ошибку внутри апострофов? Как он воспримет слова «прЫвет» и «мАлАко»? Ничего не заметил? Это и понятно, ведь слова внутри апострофов компилятор не проверяет. Не его это дело, – он вообще не знает русского языка! В строковых константах он проверяет, как мы уже убедились, только парность апострофов.

Итоги

• В редакторе IDE можно одновременно открывать несколько исходных файлов с программами.

• При запуске IDE Free Pascal автоматически открывает файлы, открытые в предыдущем сеансе (точнее, окна, не закрытые при выходе из сеанса).

• Элементы управления окном редактора изменяют его размеры, перемещают по экрану, распахивают, сворачивают и закрывают окно.

• Компилятор Pascal проверяет текст программы при каждой компиляции. Обнаружив синтаксическую ошибку, он не создает исполняемый файл, а выводит краткое описание ошибки.

Глава 7

Развиваем успех

Теперь усложним задачу, пусть компьютер обратится к вам вот с таким пышным приветствием:

– -----------------------

Мой повелитель!

Поздравляю тебя с первой программой!

Твой верный слуга Паскаль

– -----------------------

Здесь в первой и последней строках для красоты печатается горизонтальный прочерк.

Операторы

и разделители

Создадим новый файл и сохраним его под именем «P_07_1.PAS». Напомню, что новый файл создается через пункт меню File –> New, а сохраняется нажатием клавиши F2. Покончив с этим, приступим к сочинению программы. Поразмыслив немного, вы наверняка напишите следующие строки.

begin

Writeln(’------------------------’)

Writeln(’Мой повелитель!’)

Writeln(’Поздравляю тебя с первой программой!’)

Writeln(’Твой верный слуга Паскаль’)

Writeln(’------------------------’)

end.

Ход вашей мысли ясен: уж если компилятор читает программу слева направо и сверху вниз, то и компьютер будет выполнять её в том же порядке. Вы угадали, так оно и есть! Ну что ж, пробуем скомпилировать свое детище, жмем F9 и что? Опять видим сообщение об ошибке (рис. 20)!

Рис.20 – Сообщение о синтаксической ошибке

В чем дело? Компилятор утверждает, что где-то пропущена точка с запятой. В скобках указано место ошибки: третья строка, первый символ. Значит, точку с запятой надо ставить здесь? И зачем она нужна?

Познакомьтесь с важным понятием языка – оператором. Оператор – это наименьший смысловой «кусочек» программы. Он заключает в себе либо небольшое действие – шаг программы, либо описание каких-то данных. В Паскале есть много разных операторов, процедура печати – один из них. В целом программа – это последовательность операторов и ключевых слов. Читая программу, компилятор должен уяснить, где кончается один оператор и начинается следующий. И здесь он нуждается в вашей помощи! Ему нужна подсказка – разделитель операторов, которым служит точка с запятой (;).

Вернемся к нашей программе. Хотя процедуры печати расположены в разных строках, этого мало, чтобы компилятор воспринял их как отдельные операторы. Порой длинный оператор не помещается в одной строке и пишется на нескольких. А бывает наоборот – в одной строке пишут несколько операторов. Вот почему нужен разделитель.

Итак, между операторами надо поставить точку с запятой, программисты обычно ставят разделитель после оператора. Теперь наша программа станет такой.

begin

Writeln(’------------------------’);

Writeln(’Мой повелитель!’);

Writeln(’Поздравляю тебя с первой программой!’);

Writeln(’Твой верный слуга Паскаль’);

Writeln(’------------------------’)

end.

А где разделитель за последним оператором, то есть перед словом END? Здесь он не нужен, поскольку END – не оператор, а ключевое слово. Но, если вы поставите лишнюю точку с запятой или даже несколько подряд, в этом не будет ошибки. Теперь можно запустить программу нажатием Ctrl+F9 и полюбоваться на результат её работы, нажав Alt+F5.

Поделиться:
Популярные книги

Сотник

Ланцов Михаил Алексеевич
4. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Сотник

Миф об идеальном мужчине

Устинова Татьяна Витальевна
Детективы:
прочие детективы
9.23
рейтинг книги
Миф об идеальном мужчине

Имя нам Легион. Том 7

Дорничев Дмитрий
7. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 7

Черный Маг Императора 4

Герда Александр
4. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 4

Вторая невеста Драконьего Лорда. Дилогия

Огненная Любовь
Вторая невеста Драконьего Лорда
Любовные романы:
любовно-фантастические романы
5.60
рейтинг книги
Вторая невеста Драконьего Лорда. Дилогия

Жена по ошибке

Ардова Алиса
Любовные романы:
любовно-фантастические романы
7.71
рейтинг книги
Жена по ошибке

Законы рода

Flow Ascold
1. Граф Берестьев
Фантастика:
фэнтези
боевая фантастика
аниме
5.00
рейтинг книги
Законы рода

Зауряд-врач

Дроздов Анатолий Федорович
1. Зауряд-врач
Фантастика:
альтернативная история
8.64
рейтинг книги
Зауряд-врач

Двойник Короля

Скабер Артемий
1. Двойник Короля
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Двойник Короля

В семье не без подвоха

Жукова Юлия Борисовна
3. Замуж с осложнениями
Фантастика:
социально-философская фантастика
космическая фантастика
юмористическое фэнтези
9.36
рейтинг книги
В семье не без подвоха

Бандит 2

Щепетнов Евгений Владимирович
2. Петр Синельников
Фантастика:
боевая фантастика
5.73
рейтинг книги
Бандит 2

Убивать чтобы жить 5

Бор Жорж
5. УЧЖ
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 5

Связанные Долгом

Рейли Кора
2. Рожденные в крови
Любовные романы:
современные любовные романы
остросюжетные любовные романы
эро литература
4.60
рейтинг книги
Связанные Долгом

Чайлдфри

Тоцка Тала
Любовные романы:
современные любовные романы
6.51
рейтинг книги
Чайлдфри