l

Программа «Hello, World»

15.05.2018 3914 Программируем на Паскале Ваш комментарий

В один прекрасный день я решил снимать видео для собственного канала на Youtube. И к выбору темы роликов подошёл ответственно. С одной стороны, хотелось, чтобы эти «фильмы» были полезными для зрителей, с другой — хотелось, чтобы тема роликов была интересной мне самому. Со временем, мне захотелось создать ещё и серию статей на эту тему. Вышло так, что я вспомнил о языке программирования Паскаль. Он был одним из первых языков, с которым я познакомился ещё в 1994 году. Я неплохо изучил его в своё время и написал на Паскале большое количество программ, а значит, мой практический опыт может сослужить кому-то добрую службу.

Николаус Вирт

Рисунок 1. Николаус Вирт

Как язык программирования, Паскаль был придуман Николаусом Виртом в 1968-1969 годах. К моменту, когда я изучал его на первом курсе института, это уже была полноценная среда разработки программ под названием Turbo Pascal 7.0. Номер версии может рассказать о богатой и активной истории развития языка. Паскаль изначально создавался, как строго-формализованный (описательный) и структурный язык. А с версии Turbo Pascal 5.5 он стал и объектно-ориентированным, за что стоит сказать отдельное спасибо компании Apple. Иную историческую информацию вы при желании легко найдёте в сети, а я возвращаюсь к нашей теме.

Итак, Паскаль развивался очень активно, и во второй половине девяностых годов XX века версий и сред разработки программ на этом языке имелось полтора десятка. В наше время их количество никак не уменьшилось. Так в какой же среде стоит нам с вами разрабатывать программы? В какой среде мне обучать вас этому языку? Ведь даже если отбросить те из них, что работали исключительно под MS DOS, всё равно останется приличное количество вариантов.

Для себя на этот вопрос я ответил — буду использовать среду разработки PascalABC.NET. Для такого решения имеются сразу несколько причин.

Во-первых, этот пакет выпускается для операционной системы Windows (у меня, да и многих других, стоят именно «Окна» разных версий). Программу удалось протестировать на семёрке, на Windows 8.1 и на Windows 10. Везде пакет прекрасно устанавливается и корректно работает. Есть на сайте разработчика также информация о версии пакета под Linux. Так что любители юникса обижены не будут.

Вторая причина, по которой я выбрал этот пакет, заключается в том, что разработан он у нас. Приятно, что интерфейс программы — все её меню, кнопочки и системные сообщения — выводятся на русском языке. Кто изучал язык в среде Turbo Pascal 7.0, меня бы поняли. Мне приятно поддержать именно отечественных разработчиков.

В-третьих, команда постоянно работает над своим продуктом и у него регулярно выходят всевозможные обновления.

В-четвёртых, у пакета свободная лицензия. Важно, что это позволяет нам бесплатно скачивать и использовать его для написания программ.

Ну и наконец, я не собираюсь диктовать, какую среду разработки программ на Паскале выбрать именно вам, но если мы будем пользоваться единой средой, то при возникновении ошибок — а они неминуемы — отлаживать программы будет куда легче.

С момента выхода первых версий Паскаля прошло 50 лет. За это время выпущены десятки (если не сотни), учебников по этому языку программирования. В интернете имеется огромное количество сайтов, посвященных этой теме, так кому же будут нужны мои видеоролики или статьи? Просто изучить Паскаль, как, впрочем, и любой другой предмет, можно было бы и самостоятельно по учебникам. Я в своём курсе буду не просто рассказывать о тех или иных конструктивах языка, а делиться своим, более чем двадцатилетним, опытом практикующего программиста. Так что, свою роль в этом процессе, я вижу как раз в таких вот лирических отступлениях, которых будет довольно много. И мои наработки, надеюсь, окажутся полезными для новичков, которые только-только приступают к изучению Паскаля.

Здесь, например, мне хочется сказать, что скачивание и установка среды разработки, я надеюсь, не вызовет проблем и вы с этим справитесь. Однако, если это не так — напишите об этом в комментариях под статьёй и мы это обсудим. Отвлекаться на это в самой статье не хотелось бы.

Традиционно в качестве первой программы в любом языке пишут программу, выводящую на экран фразу «Hello, World!», но мы выведем её русский эквивалент «Привет, мир!».

Пока мы «ещё на берегу» — в начале нашего курса — имеет смысл договориться о терминах. Когда я говорю Паскаль, то имею в виду, конечно, не Блеза Паскаля, а изучаемый нами язык программирования. Если же я говорю PascalABC, то имею в виду PascalABC.NET — среду разработки программ на этом языке.

Кроме того, я буду не просто показывать код тех или иных программ, я буду также использовать свои наработки в написании кода. Конечно же, я буду объяснять что и почему я использую. А также, почему использую именно так. Здесь самое место сказать о такой особенности Паскаля, как его нечувствительность к регистру — команды языка можно набирать хоть строчными, хоть прописными буквами, а также чередовать их в любой последовательности. И я этим буду активно пользоваться.

Любые программы на компьютере хранятся на жёстких дисках, флешках и других носителях. В момент запуска, программа помещается в оперативную память компьютера, где также отводится место для всех данных, которые хранит и использует программа.

Паскаль является компиляционным языком программирования. Это означает, что любые тексты (листинги) программ на языке, PascalABC превратит в машинные коды — откомпилирует. Наряду с файлами, имеющими расширение «.pas» появятся исполняемые (executable) файлы с расширением «.exe». Благодаря этому вы сможете делиться своими программами с друзьями. Не обязательно даже, чтобы на их компьютерах находилась среда разработки. Достаточно будет поделиться exe-файлом программы.

Инструкции Паскаля, или как ещё говорят команды или операторы, выполняет процессор. Любой оператор языка — это законченная фраза, команда, которую нужно исполнить. Один оператор от другого всегда отделяется точкой с запятой — «;». Это своеобразный конец предложения. Операторы и ключевые слова Паскаля имеют корни в английском языке. Он является, кроме всего прочего, языком с жёсткой структурой программ. И этой структуре мы будем уделять много времени. Любая программа на Паскале начинается с ключевого слова program, после которого идёт название программы, а заканчивается оператор точкой с запятой. Итак, запускаем среду разработки и в новом файле пишем:

program HelloWorld;

Первый оператор первой программы на Паскале написан. В нём передана информация, что перед нами именно программа и назвали мы её «HelloWorld». Мы могли бы написать так: «PrivetMir», то есть записать русское название программы траслитом, но вообще, здесь и далее нельзя использовать символы русского алфавита, а также пробел, знаки препинания и другие специальные символы. Вместе с тем, название программы ни на что особенно не влияет. Однако, малоинформативные названия, типа «p1», «p2» и так далее, я не использую и вам не советую. Пусть из этого заголовка будет ясно, какие задачи решает программа. Опять же, все включаемые в название программы слова я пишу с прописных букв для лёгкости чтения, так как отсутствие между словами пробелов это чтение затрудняет. Пользоваться ли вам этими правилами, решайте сами, но эта статья написана именно для того, чтобы я мог делиться с вами своими наработками.

Старайтесь чаще сохранять изменения в программе. Идём в меню «Файл», выбираем команду «Сохранить как…» и указываем место и имя файла программы. Я именую файлы обычно также, как и программы. Так что у меня в папке с листингами программ появляется файл с именем «HelloWorld.pas». При втором и следующих сохранениях программы можно в меню «Файл» выбирать команду «Сохранить» или пользоваться комбинацией клавиш «Ctrl + S».

Многие опытные программисты не придерживаются в написании программ никаких стилей — не форматируют код для лёгкости чтения. И, хотя это не влияет на работоспособность программы, читать неформатированные листинги программ тяжело. Это часто приводит к гораздо большему количеству ошибок.

Продолжая программу, после первого оператора я обычно делаю отступ — пустую строку. Программа на Паскале должна помещаться между двумя ключевыми словами: «begin» — начало и «end» — конец. Оба эти слова не являются операторами, операторы будут размещены между ними. Вся программа заканчивается, когда после ключевого слова «end» ставится точка. Не точка с запятой, как в операторах, а именно точка, после которой никакой код исполняться не будет. Кроме того, главные «begin» и «end» программы я записываю полностью прописными. Так их будет гораздо легче обнаружить, когда бегинов и эндов в программе станет много. То есть теперь наша программа выглядит так:

program HelloWorld;

BEGIN

END.

Между «началом» и «концом» тоже оставлена пустая строка. Собственно, в этом месте и будут располагаться операторы программы. Кроме этого, операторы будут сдвинуты вправо на два пробела, с тем, чтобы наши ключевые слова казались своеобразными скобками, в роли которых часто выступают «begin» и «end».

Для вывода информации на экран мы воспользуемся внутренней процедурой Паскаля «writeln». Когда мы имеем дело с процедурами или функциями, им для работы могут передаваться различные данные. Собственно данные называют аргументами и передают в круглых скобках, идущих после имени процедуры или функции.

Мы собираемся вывести на экран фразу «Привет, мир!», она и послужит аргументом.

Когда вы открываете парные элементы — скобки, кавычки, ключевое слово «begin» — вам следует помнить о закрывающих скобках, кавычках, ключевом слове «end». Чтобы не наделать ошибок, пишите их сразу.

Заканчивается оператор — вызов процедуры — точкой с запятой. Наша программа приобретает вид:

program HelloWorld;

BEGIN
  writeln();
END.

В качестве аргументов нашей процедуре нужно передавать строки. Если строка передаётся в явном виде, то её необходимо обособить одинарными кавычками — апострофами. Теперь программа выглядит так:

program HelloWorld;

BEGIN
  writeln('Привет, мир!');
END.

Здесь снова неплохо бы сохранить листинг нашей программы и её можно уже запустить. Следует помнить, что PascalABC может это сделать двумя разными способами. Первый — запуск прямо в среде разработки без компиляции. Для этого достаточно нажать кнопку «Выполнить» — выполнить на панели инструментов PascalABC, или выбрать команду «Выполнить» в меню «Программа». Кроме того, можно воспользоваться клавишей «F9». Второй способ заключается в компиляции программы.

Прежде, чем компилировать программу, следует настроить нашу среду разработки. Для этого идём в меню «Сервис» и выбираем «Настройки…». В общих настройках проследите за тем, чтобы в пункте «Делать паузу после завершения консольной программы» была установлена галочка. Если это не так — исправьте настройку. Кроме того, во вкладке «Опции компиляции» установите галочки как указано на рисунке 2.

Опции компиляции

Рисунок 2. Опции компиляции

Обратите внимание на нижнюю строчку — путь к папке, где будут сохраняться откомпилированные программы. В моём случае это «D:\myprograms» — папка, куда я сохраняю все свои программы на Паскале. Чтобы применить настройки — нажмите кнопку «ОК».

Теперь можно компилировать программу. Для этого следует нажать кнопку «Компилировать» — Компилировать в панели инструментов среды разработки, выбрать одноимённую команду в меню «Программа» или воспользоваться комбинацией клавиш «Ctrl + F9».

Предположим, у нас имеется общая настройка «Делать паузу после завершения консольной программы». В этом случае просто выполним нашу программу — «F9». В среде разработки появляется нижняя панель «Окно вывода» и в нём мы видим результат работы нашей программы — фразу: «Привет, мир!».

Окно вывода можно по желанию включать и отключать. Для этого достаточно нажать клавишу «F5».

Теперь давайте откомпилируем нашу программу. Допустим, вы нажали кнопку «Компилировать» и, если ошибок нет, то в окне вывода появляется информация о том, что программа была откомпилирована. Откройте папку, которую вы указали в настройках выше, как хранилище программ. Разыщите в ней исполняемый файл, в моём случае это «HelloWorld.exe» и запустите его. На экране на долю секунды появляется консольное окно, которое тут же закрывается. Что же случилось? Ведь в среде разработки наша программа работала правильно. Не случилось ничего. Просто в ней было указано лишь одно действие — вывод фразы «Привет, мир!» на экран. Программа выполнила этот оператор и, так как других действий не было, она закрылась.

Давайте это исправим, заставим программу сделать паузу после вывода фразы на экран, чтобы мы успели увидеть и прочитать результаты её работы. Этой цели служит другая встроенная в Паскаль процедура — «readln». Чуть позже мы очень подробно разберём обе используемые в нашей программе процедуры, а пока просто оставим паузу. Вызовем readln как второй оператор. При этом, мало того, что мы не будем в скобках передавать никаких аргументов, так как нам нужна лишь задержка — пауза — мы вызовем процедуру вовсе без скобок. Теперь наша программа будет выглядеть так:

program HelloWorld;

BEGIN
  writeln('Привет, мир!');
  readln;
END.

Разумеется, в конце оператора мы снова ставим точку с запятой. Откомпилируйте программу заново и ещё раз запустите исполняемый файл. На этот раз всё как надо — окно открылось, в нём мы видим фразу «Привет, мир!» и наша консольная программа не спешит закрываться. Она сейчас в режиме паузы. Курсор расположен в следующей после фразы строке и программа ожидает ввода с клавиатуры. Не стоит ничего печатать, так как сейчас это бесполезно, — мы ещё не умеем обрабатывать введённые данные. Ввод с клавиатуры и программа завершится по нажатию на клавишу «Enter». Что ж, вот мы и написали нашу первую программу на Паскале.

Дочитавшим до конца — бонус — видео:

Оставьте ваш отзыв: