Просто программа
Пишем в редакторе
program kuku;
begin
end.
Что интересно, некоторые слова после написания
сами окрашиваются в другой цвет, в зависимости от настроек редактора – скорее
всего белый. В связи с трудностью отображения на бумаге шрифта белого цвета, у
нас эти слова будут полужирными.
Это так называемые зарезервированные слова.
Зарезервированность их в том, что эти слова нельзя использовать в качестве
идентификаторов. Идентификатор – то же самое, что имя, но звучит научно. Имена
бывают у переменных, процедур, функций, конствнт, у самой программы, в конце
концов. Сейчас мы к этому перейдём.
Вместо kuku можно написать любое слово,
главное английскими буквами. Kuku – это имя нашей программы.
Действительность немного сложнее – это слово может
состоять из английских букв, цифр и знака подчёркивания, но начинаться должно с
буквы или подчеркивания - с цифры начинаться оно не имеет права.
Большие буквы, или маленькие – это никакой роли не
играет (кстати, немцам о рентгене - это в сторону программистов на языке C).
Точно так же, все остальные маленькие буквы по желанию могут быть заменены на
большие, от этого ничего для компилятора не изменится.
На самом деле всё вышесказанное имеет гораздо большее
значение - эти правила распространяются на все идентификаторы языка Pascal.
Идентификаторами являются все имена в программе. В данном случае имя только
одно: kuku – имя программы.
Остальное должно быть в точности как написано.
Ну, почти – так где стоит один пробел, можно поставить сколько угодно, это
общее правило. Но лучше не увлекаться. Но там, где стоит хотя бы один пробел –
хотя бы один пробел и должен быть.
Сокровенный смысл написанной выше программы.
То, что находится между строчками program <её имя>;
и begin является частью не выполняющейся, а декларативной. Говоря по другому,
эта часть ничего не делает, а объясняет, как понимать написанное далее
(понимать не программисту - компьютеру). А вот то, что написано между begin и end.
как раз что-то делает. Даже если какая-то строка не делает (как будто) ничего,
на самом деле это не так - она указывает как, в каком порядке, при каких
условиях должны выполняться остальные строки.
Да, впервые упомянуто новое слово - оператор. Что это
такое?
Ну, как ни странно, если короче – обычно это одно такое
слово в языке Паскаль, которое что-то делает. Но есть, например, оператор
цикла, который много слов, и оператор присваивания, который вообще не слово.
Как ни печально, про оператор все понимают, но никто
объяснить не может. И Вы поймёте. Наверное.
Экран сейчас должен выглядеть вот так:
Теперь нажимаем клавишу F2. Да, конечно, можно и
мышью. Но ещё раз, Паскаль создавался в древние безмышовые времена и без мыши,
как ни странно, действительно будет проще. Привыкайте.
Зачем F2? Сохранить текст нашей
программы
Появится вот такое окошко:
Остаётся только указать имя файла, в котором
будет сохранена наша программа, и нажать клавишу Enter.
В каталоге, откуда мы запускали Турбо Паскаль,
появился файл kuku.pas.
Для упрощения жизни настоятельно рекомендую давать
файлу то же имя, что и программе, то есть тот идентификатор, что стоит после
слова program. И не забывать, что по техническим причинам (смотри выше
примечание для любознательных) имя должно быть не длиннее восьми символов, не
содержать пробелов, и т.д. и т.п.
Теперь клавиша F9. Это трансляция нашей
программы – перевод её из исходного текста в исполняемый машинный код. И, что
на данном этапе даже важнее, проверка исходного текста на правильность и
отсутствие в нём ошибок.
Экран должен теперь выглядеть вот так:
Нам сообщают, что пока всё идёт хорошо.
Теперь нажимаем (как нас собственно и просят)
любую клавишу.
Итак, в программе ошибок нет – да и откуда им
взяться – программа-то ма-аа-аленькая.
А теперь программу – запускаем!!!
Жмём Ctrl/F9. Происходит быстрое мелькание экрана – и всё. Что случилось? Да
ничего, собственно. Программа наша маленькая, ничего не делает. Соответственно
при запуске она ничего и не сделала.
Сейчас в каталоге, где находится исходный текст нашей
программы, появился файл kuku.exe. Точнее, появился чуть раньше, после нажатия F9. Его (kuku.exe) можно
запустить на исполнение обычным способом, через проводник, например. Результат
его исполнения, будет в точности тот же, что и после запуска через Ctrl/F9.
А теперь мы завершили работу, и вышли из Турбо
Паскаля. Выйти, кстати, можно или через меню, или нажав Alt/X. При выходе нас, естественно, спросят, не
забыли ли мы сохранить наш текст – если мы забыли. Обратите внимание на
звёздочку слева внизу. Если она есть, значит, сохраниться забыли.
А теперь мы запустили Турбо Паскаль снова.
Если всё настроено правильно, у нас автоматически загрузится та самая
программа, с которой мы работали, и на том самом месте, где мы с ней работу
прекратили. А если нет? Или если программ у нас уже много и нам надо загрузить
совсем другую?
Очень просто. Нажимаем F3 и выбираем то, что нам
надо.
Каждая новая открытая программа занимает в
окне редактирования чуть меньшее пространство – чтобы были видны заголовки всех
открытых программ. Если окошко стало уж очень маленьким, нажмите F5 – текущая
программа займёт всё доступное место.
Ранее открытые программы никуда не делись –
они где-то там, только сзади. Вывести их на передний план можно клавишей F6 – она переберёт
поочерёдно все загруженные программы.
Как уже раньше упоминалось, если мы хотим,
чтобы программа что-то делала, это что-то должно быть выражено в тесте,
находящемся в исполняемой части программы – между begin и end.
Например:
program kuku;
begin
write(‘Au!’);
end.
Вместо Au!, естественно, можно написать всё,
что угодно, но по-английски. И ещё одно ограничение – текст не должен содержать
кавычек.
Если хочется писать по-русски. Придётся постараться.
Сначала надо раздобыть русификатор для DOS. Рекомендую keyrus
Дмитрия Гуртяка. Как найти? Наберите в Яндексе keyrus и выбирайте подходящий источник. Возможно, в скачанном архиве будет
несколько файлов, нам понадобится только один – keyrus.com. Скопируем его в c:\bpascal\bin\. Можно в другое место, только не забудьте куда. Как написано в
дополнении, хотя Вы, возможно, обошлись без него, мы предполагаем, что Турбо
Паскаль установлен в каталог c:\bpascal.
Теперь нам надо, чтобы перед запуском Турбо Паскаля
(то есть turbo.exe) запускался keyrus.com. Будем писать командный файл, известный также
как пакетный. Заходим в notepad.exe,
или что-нибудь аналогично текстовое и набираем:
c:\bpascal\bin\keyrus.com
c:\bpascal\bin\turbo.exe
Сохраняем то, что набрали под именем r.bat. Можно не r, но расширение
.bat обязательно.
Теперь там, где у нас вызывался turbo.exe, меняем его вызов на вызов r.bat. Пробуем. Всё должно заработать.
Внешне всё выглядит так же. Нажимаем правый Shift и пишем – теперь пишется
по-русски. Снова правый Shift – пишется по-английски. При нажатом Shift’е в полноэкранном
режиме вокруг экрана появляется тонкая синяя рамочка. Обратите внимание –
переключение на русский язык с помощью Shift’а необходимо только
для набора текста по-русски, отображаться по-русски текст будет и без этого,
достаточно загруженного русификатора.
Если очень хочется кавычек.
Очень просто - дайте две! В смысле вместо одной
кавычки поставьте две. Не двойную кавычку вместо одинарной, а именно две. Видно
в тексте программы будет две, но восприняты они будут не как две, а как одна.
При подсчете символов в строке (об этом дальше) обе они будут восприняты как
один символ. При выводе такой строки на экран видно будет тоже только одну
кавычку.
Далее снова то же самое:
F2 –
сохранить.
F9 –
скомпилировать.
Ctrl/F9 – выполнить.
Опять на экране что-то промелькнуло и исчезло.
Обидно, да?
Учим новое слово, в смысле сочетание клавиш – Alt/F5. Нажимаем и видим приблизительно
вот такую картинку:
Много всего непонятного, и среди этого
непонятного наше Au!
Нажимаем любую клавишу и возвращаемся в
привычный (уже) редактор Турбо Паскаля.
Вывод из произошедшего – оператор write
выводит текст на экран. Текст в кавычках, кавычки в скобках. Кавычки и скобки
всегда ходят парами – если есть открывающая (кавычка/скобка), где-то неподалёку
должна быть и закрывающая.
Лично мне нажимать Alt/F5 как-то не очень нравится. Хотелось бы автоматизировать процесс. Ну,
или хотя бы полуавтоматизировать.
Добавим в программу ещё одну строчку. Вот так:
program kuku;
begin
write(‘Au!’);
readln;
end.
Опять - F2, F9, Ctrl/F9.
И сразу, безо всяких Alt/F5 видим знакомую уже картинку. Или, скорее всего, вот такую:
Но теперь чтобы вернуться в редактор Турбо
Паскаля надо нажать клавишу Enter.
Вывод – оператор readln занимается тем, что
ничего не делает, ожидая нажатия клавиши Enter (внимание – не любой
клавиши, а именно клавиши Enter).
И ещё вывод – каждый оператор заканчивается
точкой с запятой.
Ведутся глубокие философские дискуссии, ставится ли
точка с запятой после оператора, или она является его неотъемлемой частью.
Вообще-то, что совой об пень, что пнём об сову.
Тем не менее, полного удовлетворения как-то
нет. На экране кроме нашего Au! куча какого-то левого мусора. Мало того, Au! от
предыдущего запуска тоже висит на экране. А если запустим программу на
выполнение ещё раз-другой, Au! размножатся в соответствующем количестве.
Так что предлагаю при запуске программы
очищать экран от всего ранее на него выведенного. Правда здесь одним
словом-оператором уже не обойтись, новых слов придётся добавить побольше.
В результате программа приобретает такой вид:
program kuku;
uses
Crt;
begin
ClrScr;
write(‘Au!’);
readln;
end.
Запускаем программу – и имеем чистенькую
картинку с одной только нашей надписью, как и хотелось.
Волшебное слово ClrScr очищает экран, а чтобы
оно заработало, надо написать ещё два волшебных слова – uses Crt.
Если написать ClrScr, но
забыть про uses Crt, то получим вот такое
несимпатичное сообщение об ошибке:
Error 3: Unknown identifier
Означает оно, что Паскаль не знает и даже не
догадывается, кто такой ClrScr и где его искать (искать
надо в Crt).
ClrScr очень похож на оператор, но не оператор - это
вызов внешней подпрограммы или процедуры (об этом позже), кому как больше
нравится. Впрочем, для всех практических целей это можно считать оператором
Для расширения кругозора.
Невразумительное словцо ClrScr – сокращение от Clear Screen,
очистить экран.
Внешние процедуры содержатся в модулях (об этом тоже
позже). Имя модуля – Crt. Переводится ЭЛТ – электронно-лучевая трубка. В этом
модуле содержатся подпрограммы для работы с экраном в текстовом режиме.
Используемые модули перечисляются через запятую после
слова uses. Трудолюбивые это слово переведут сами.
А теперь очень важное! Если кому-то это
покажется само собой очевидным, заранее извиняюсь – как показывает опыт, очень
даже многим это далеко не очевидно.
Вот так работает:
ClrScr;
write(‘Au!’);
Имеем чистый экран и надпись на нём. Что и
требовалось.
Вот так нет:
write(‘Au!’);
ClrScr;
Чистый экран имеем, но, собственно, и всё.
Операторы выполняются по порядку. Сверху вниз.
В порядке написания. Сначала первый, потом второй. Как ещё объяснить?
Ещё раз приношу извинения, если кому-то
кажется это тривиальным. До многих почему-то не доходит.
А теперь вместо
write(‘Au!’);
напишем
write(‘Au!’);
write(‘Au!’);
После запуска программы получим:
Au!Au!
А теперь слегка изменим программу
writeln(‘Au!’);
write(‘Au!’);
Картинка после запуска изменится на вот такую –
Au!
Au!
После недолгого размышления приходим к выводу,
что отличие оператора writeln от оператора write заключается в том, что writeln
ещё и переходит на новую строку после вывода текста.
А если написать вот так:
writeln(‘Au!’);
writeln;
write(‘Au!’);
то между нашими Au! появится пустая строка.
Запомним на всякий случай – оператор writeln
без параметров (параметрами здесь называется то, что в скобках) обеспечивает
переход на новую строку.
А теперь ещё раз – каждый оператор
заканчивается точкой с запятой. Или – операторы между собой разделяются точкой
с запятой. Это уж как Вам больше нравится. Естественно, начинающие программисты
регулярно эти точки с запятой пропускают. Программисты продвинутые тоже, хотя и
не так регулярно. Компилятор это замечает и выдает тревожное сообщение “Error 85: “;”expected”. Сообщение в целом понятное, но
вот курсор при этом указывает не на то место, где пропущена точка с запятой, а
на начало следующего оператора. То есть, если у нас вот такой текст
writeln(‘a’);
writeln(‘b’)
writeln(‘c’);
то курсор будет мигать в начале третьей строки:
writeln(‘a’);
writeln(‘b’)
_writeln(‘c’);
Будьте внимательны.
А теперь несколько дополнительных возможностей
и несколько новых слов.
Вот такая программа
TextColor(Green);
Writeln(‘Au!’);
Получили текст зелёного цвета. Пустяк, а
приятно.
Обратите внимание, что Green пишется без
кавычек.
Можно задать и другие цвета. Вот полный
список. Ну, почти полный.
Black
Blue
Green
Cyan
Red
Magenta
Brown
LightGray
DarkGray
LightBlue
LightGreen
LightCyan
LightRed
LightMagenta
Yellow
White
Запомните на всякий случай. Ещё пригодится.
Попозже, в процессе освоения графики, научимся красить и в более экзотические
цвета.
А если сделать вот так:
TextColor(Green+Blink);
Writeln(‘Au!’);
то оно будет ещё и моргать.
Вот так тоже неплохо:
GoToXY(10,10);
Writeln(‘Au!’);
Надпись переехала.
Первая десятка – номер строки, на которую мы
отправились. Всего строк 24. Вторая десятка – номер столбца, или, говоря
по-другому, номер символа в строке. Всего их 80.
Поэкспериментируйте.
Строки нумеруются сверху вниз. Это, конечно,
естественно – пока мы не доберемся до графики. Там нумерующиеся сверху вниз
строки пикселов вызывают некоторое неудобство у обладающих начальными
математическими познаниями.
Текст, заключённый в фигурные скобки, - это
комментарии. Компилятор этот текст игнорирует, как будто его нет вовсе. То есть
пишется он не для компьютера, а для человека – для Вас, когда завтра Вы
забудете, что насочиняли вчера или для того неизвестного программиста, которому
достанется сопровождение Вашей программы.
Например:
{ Переходим в центр экрана}
GoToXY(40,12);
Writeln(‘Au!’);
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.