Книга: Песни о Паскале
Глава 5 Программа номер один
Разделы на этой странице:
Глава 5
Программа номер один
Постановка задачи
Отныне мы будем повелевать компьютером, а он – исполнять наши капризы. Чем бы таким озадачить его? Ответ на подобный вопрос программисты называют постановкой задачи. Никто из них и пальцем не шевельнет, не прояснив суть предстоящей работы. Пусть наша первая программа выведет на экран слово «Привет!», – славно, когда тебя приветствует собственный компьютер!
Создание файла
Запустите IDE Free Pascal, – воспользуйтесь для этого ярлычком, который мы настроили в предыдущей главе. Затем создайте новый файл, выбрав пункт меню File –> New (рис. 13). В области редактора появится пустое окно с заголовком «NONAME00.PAS», – это так называемый безымянный файл; две цифры в конце имени (00, 01, 02 и т.д.) помогают различать такие файлы.
Рис.13 – Пункт меню для создания нового файла
Сохраните пока ещё пустой файл в своей рабочей папке, у меня это папка «C:UserPascal». При сохранении файлу надо придумать подходящее имя. Здесь ваша фантазия ограничена лишь требованиями к именам файлов. Пока вы учитесь, придерживайтесь правил, принятых в MS–DOS: имя файла должно содержать не более восьми символов, не считая расширения имени PAS. В имени используйте только латинские буквы, цифры и знак подчеркивания (пробелы и русские буквы я запрещаю!).
Из этих «кирпичиков» можно составить миллионы имен, – и запутаться в них! Но мы избежим хаоса, применив некоторую систему. Пусть в имени файла содержится номер главы, где была создана программа. Тогда по имени файла вы найдете надлежащую главу, а по номеру главы – файл.
Итак, имя файла начнем с латинской буквы «P» (от слова «Pascal»), далее последуют две цифры с номером главы и одна цифра – с порядковым номером программы в этой главе. Элементы имени разделим знаками подчеркивания, и тогда для 1-й программы 5-й главы файл получит имя «P_05_1.PAS».
Сохраним его под этим именем. Нажмите клавишу F2, – на экране появится диалоговое окно (рис. 14). В верхней строке напечатайте имя файла, а расширение PAS можете не печатать, – оно будет добавлено автоматически. После нажатия клавиши Enter или кнопки OK файл будет сохранен в рабочей папке, и в заголовке окна появится его новое имя «P_05_1.PAS».
Рис.14 – Диалог сохранения файла
Наполнение файла
Теперь обратимся к содержимому файла, ведь он пока чист, как белый снег. Нацарапайте на этом снегу парочку английских слов, что показаны ниже.
begin
end.
Возможно, вам известен их перевод: BEGIN – «начало», а END – «конец». Зачем они тут? При переводе программы с «человеческого» языка на язык процессора компилятор должен видеть границы программы. Слова BEGIN и END для того и предназначены, их называют ключевыми. Паскаль содержит десятки ключевых слов, они перечислены мною в приложении Г. Ключевые слова служат поводырями для компилятора, помогая ему разбираться в программе. Эти слова запрещено использовать по иному назначению!
Итак, слова BEGIN и END указывают компилятору начало и конец программы. Пару BEGIN–END применяют и в иных случаях, как скобки в математике. То есть, после слова BEGIN где-то далее в программе обязательно следует слово END. Но слово END используют и для завершения некоторых других конструкций языка, о которых вы узнаете позже.
Ключевые слова можно печатать и маленькими (строчными) и большими (заглавными) буквами, например: Begin, BEGIN, begiN, – это дело вкуса. То же относится к другим «волшебным» словам языка, о которых вы узнаете позже. Важно помнить, что в этих словах разрешены только латинские буквы. Будьте внимательны: некоторые латинские буквы по начертанию совпадают с русскими («А», «Е», «О»), но для компилятора эти буквы разные, и он обязательно заметит подмену!
Теперь взгляните на точку после слова END, – она отмечает конец программы. Без нее нельзя, иначе компилятор попытается читать текст после слова END, и, не найдя ничего, сообщит об ошибке.
Итак, напечатав эти две строки с точкой в конце, нажмите ещё раз клавишу F2 для сохранения файла. Поскольку ранее мы уже дали имя файлу, IDE сохранит его под этим именем, не докучая лишними вопросами.
Примечание. В начале программы иногда пишут необязательное ключевое слово PROGRAM, после которого указывают имя программы. Это имя должно совпадать с именем файла без расширения, например:
program P_05_1;
begin
end.
В наших примерах я не буду вставлять это необязательное ключевое слово.
Теперь поздравьте себя, – вы написали первую программу! И пусть она ещё ни на что не годна, зато синтаксически правильна, – так полагает компилятор. А это важно, – ведь теперь можно создать исполняемый файл, надо лишь откомпилировать этот текст! Раз так, дадим слово компилятору.
Компиляция
А где тут компилятор? Куда спрятался? Не ищите, для создания исполняемого EXE–файла просто нажмите клавишу F9. Если две строчки программы были напечатаны верно, появится сообщение об успешной компиляции (рис. 15).
Рис.15 – Сообщение об успешной компиляции
Закройте окно нажатием любой клавиши, или щелчком по иконке в верхнем левом углу. Заглянув теперь в свою рабочую папку, вы обнаружите там наряду с файлом «P_05_1.PAS» ещё и файл «P_05_1.EXE».
Запустите на выполнение новорожденный EXE–файл и поделитесь своим наблюдением. Зоркий охотник заметит лишь мелькнувшее консольное окно. Чем это объяснить? Запуская консольную программу (именно такую мы сейчас сотворили), Windows создаёт для нее консольное окно, а по завершении программы закрывает его. Поскольку наша программа пока ещё пуста и завершается, ничегошеньки не сделав, консольное окно вмиг исчезает.
Процедура вывода (печати)
Вернемся в IDE и продолжим наполнять нашу программу с тем, чтобы напечатать на экране приветствие. Вообще-то печатать можно только на бумаге, а на экране – высвечивать. Но, со времен пишущих машинок – консолей – слово «печатать» настолько укоренилось, что вывод на экран или файл я иногда буду называть «печатью».
Итак, для вывода приветствия добавим между ключевыми словами BEGIN и END ещё одну строчку, вот она.
Writeln(’Привет!’)
Разберем строку «по косточкам». Прежде всего, мы видим слово Writeln. Это сокращение из двух слов: Write – «записывать», и Line – «линия, строка», что вместе значит «написать строку». Слово Writeln в Паскале не ключевое – это имя процедуры. В отличие от ключевых слов – поводырей для компилятора, – процедуры определяют выполняемые программой действия. На пути к вершинам Паскаля мы встретим немало ключевых слов и процедур, и всякий раз я буду объяснять, где что.
Вернемся к процедуре Writeln, которая дает указание напечатать что-либо на экране. Но, что именно? Ответ находится внутри круглых скобок, где содержатся параметры процедуры. В этих скобках мы видим слово «Привет!», заключенное в апострофы (иногда их называют одинарными кавычками). В Паскале строку, заключенную в апострофы, называют строковой константой. Вот несколько примеров строковых констант.
’Привет, Мартышка!’
’--- Free Pascal ---’
’Я понял, что такое строковая константа!’
Как видите, любой текст обращается в строковую константу, если заключить его в апострофы. Внутри такой константы компилятор не различает ни ключевых слов, ни процедур, а воспринимает строку «как есть». Длина применяемых нами строк будет ограничена 255 знаками, включая пробелы. А вот примеры «незаконных», ошибочных строковых констант:
Нет первого апострофа’
’Нет последнего апострофа
’Апостроф ’ внутри строки’
Совсем без апострофов
А когда надо вставить апостроф внутрь строки? Тогда ставят два апострофа подряд, например:
’Один апостроф ’’ внутри строки’
И, хотя в середине строки поставлены два апострофа, компилятор учтет только один из них, – такая вот хитрость!
Теперь, с оператором печати, наша программа выглядит следующим образом:
begin
Writeln(’Привет!’)
end.
Постарайтесь ввести её без ошибок, ведь вы пока не умеете бороться с ними. Готово? Тогда сохраните файл нажатием F2 и скомпилируйте нажатием F9. Если все нормально, появится знакомое окно успешной компиляции. В противном случае найдите ошибку, исправьте её и повторите компиляцию.
Запуск программы
Теперь мы создали новую версию файла «P_05_1.EXE», запустите его, пожалуйста. Что увидели? Опять мелькнувшее окно? Причина все та же: операционная система быстренько закрыла консольное окно, поскольку программа завершилась сразу после вывода сообщения, – вы просто не успели его разглядеть! Скоро мы найдем способ притормозить программу, но ждать нам недосуг, – не терпится посмотреть результат! И я покажу, как его увидеть.
Готовую программу мы запустим, не покидая IDE, – нажатием сочетания клавиш Ctrl+F9. Нажали? И что, опять ничего?! Спокойно, сейчас разберемся. Дело в том, что IDE закрывает собою всю площадь консольного окна, пряча то, что вывела в это окно наша программа. Чтобы увидеть результат, надо временно убрать IDE нажатием комбинации клавиш Alt+F5. Сделайте так, и тогда вам явится долгожданная картинка (рис. 16).
Рис. 16 – Вид консольного окна после скрытия IDE
Первые строки содержат служебное сообщение о запуске IDE Free Pascal, – не смотрите туда. Нам важна последняя строка, где мы видим долгожданный «Привет!». Полюбовавшись на него, вернитесь в IDE, для чего нажмите любую клавишу. Хотите повторить удовольствие? Так запустите программу ещё пару раз (Ctrl+F9) и полюбуйтесь на результат (Alt+F5).
Итоги
• Создание программы начинается с подготовки текстового файла.
• Программа на Паскале содержит, по меньшей мере, одну пару ключевых слов Begin – End с точкой в конце. Между этими ключевыми словами помещают операторы, выполняющие нужные действия.
• Вывод информации на экран выполняется процедурой Writeln с параметрами внутри круглых скобок; таким параметром может быть строковая константа.
• Строковая константа – это последовательность символов, заключенная в апострофы. Наши строки будут содержать не более 255 символов.
• Для создания исполняемого EXE-файла вызывают компилятор, это делается нажатием клавиши F9. Если программа не содержит синтаксических ошибок, компилятор создаст исполняемый файл и сообщит об успешной компиляции, а иначе доложит об ошибке.
• Запустить исполняемый файл можно непосредственно в IDE. Для этого следует нажать сочетание клавиш Ctrl+F9.
• Для просмотра выводимых на экран результатов (временного скрытия IDE) нажимают комбинацию клавиш Alt+F5, а для восстановления IDE – любую клавишу.
А слабо?
Начиная с этой главы и далее, я буду предлагать вам каверзные вопросы и задачки. Некоторые из них решаются в уме, другие – на компьютере. Если вы справитесь с большинством задач, спите спокойно – ваша совесть чиста, а голова не пуста. Вот вам первые задания.
А) Найдите ошибки в следующей программе.
begn
Writeln(ПрЫветик!)
end
Сначала проделайте это в уме, а затем на компьютере. Объясните, почему компилятор не нашел ошибки в слове «ПрЫветик». Или слабо?
Б) Будет ли работать следующая программа?
begin Writeln(’Begin End.’) end.
В) Попытайтесь написать программу, выводящую на экран не одну, а две строки, например:
Без труда
Не выловишь калошу из пруда
Здесь нужны две процедуры печати, следующие друг за другом. Подсказка: между процедурами требуется специальный разделитель – точка с запятой (;).
- Только для взрослых
- Детям до 16–ти
- Глава 1 Путь далек у нас с тобою…
- Глава 2 Вместо теории
- Глава 3 Консольный интерфейс
- Глава 4 Оружие – к бою!
- Глава 5 Программа номер один
- Глава 6 Подготовка к следующему штурму
- Глава 7 Развиваем успех
- Глава 8 Постоянные и переменные
- Глава 9 Переменные: продолжение знакомства
- Глава 10 Условный оператор
- Глава 11 Операторный блок
- Глава 12 Цикл с проверкой в конце
- Глава 13 Правда и кривда
- Глава 14 Дважды два – четыре
- Глава 15 Айда в Монте-Карло!
- Глава 16 Делу время, а потехе час
- Глава 17 И вновь за парту
- Глава 18 Аз, Буки
- Глава 19 Процедуры и функции: разделяй и властвуй
- Глава 20 Процедуры: первый опыт
- Глава 21 Отладка
- Глава 22 О передаче параметров
- Глава 23 Функции
- Глава 24 Криптография
- Глава 25 Текстовые файлы
- Глава 26 Я не читатель, – я писатель!
- Глава 27 Дайте кораблю минутный отдых!
- Глава 28 Редактор и справочная система
- Глава 29 Читайте по-новому
- Глава 30 Журнальная история
- Глава 31 Финал журнальной истории
- Глава 32 Порядковые типы данных
- Глава 33 Вещественные числа
- Глава 34 Структура программы
- Глава 35 Множества
- Глава 36 Множества в Паскале
- Глава 37 Ввод и вывод множеств
- Глава 38 Множества в «бою»
- Глава 39 Командная игра (массивы)
- Глава 40 Пристрелка на знакомых мишенях
- Глава 41 По порядку, становись!
- Глава 42 Кто ищет, тот всегда найдет
- Глава 43 Сортировка по-взрослому
- Глава 44 Строки
- Глава 45 Очереди и стеки
- Глава 46 Огромные числа
- Глава 47 Системы счисления
- Глава 48 Железная логика
- Глава 49 Сложные массивы
- Глава 50 Неспортивные рекорды (записи)
- Глава 51 Указатели в море памяти
- Глава 52 Динамические переменные
- Глава 53 Массив указателей
- Глава 54 Односвязные списки
- Глава 55 Слова, слова, слова…
- Глава 56 И снова очереди, и снова стеки…
- Глава 57 Графомания
- Глава 58 По графу шагом марш!
- Глава 59 Крупные проекты
- Глава 60 Мелкие хитрости
- Глава 61 «Кубики» программиста (ООП)
- Глава 62 Самое интересное только начинается!
- Приложение А Установка и настройка IDE Borland Pascal
- Приложение Б Консольная программа в среде Delphi
- Приложение В Особенности IDE Pascal ABCNet
- Приложение Г Зарезервированные слова
- Приложение Д Ошибки компиляции
- Приложение Е Ошибки исполнения
- Приложение Ж Директивы управления компиляцией
- Приложение З Назначение пунктов меню
- Приложение И Стандартная кодировка символов MS–DOS
- Приложение К Некоторые встроенные процедуры и функции
- Приложение Л Перечень программ
- Приложение М Пример олимпиадной задачи
- Библиография
- Содержание книги
- Популярные страницы
- Группировка по номеру столбца
- ОДНОМЕРНЫИ КОНТРАСТ
- Я работаю на компьютере не один. Как настроить Windows для нескольких пользователей?
- Бывает, что много файлов удаляется быстро, а один файл может удаляться несколько минут. В чем причина?
- ДЖОН ФОН НЕЙМАН: ОДИН ИЗ САМЫХ БЛЕСТЯЩИХ УМОВ XX ВЕКА
- Я установил еще один винчестер, однако Windows XP его не распознает. Что можно сделать?
- Материнская плата имеет возможность организации RAID-массивов из двух SATA-дисков. Можно ли подключить к ней только один...
- Что обозначают номера ошибок?
- Программа Data Doctor Recovery – SIM Card
- Неисправность контроллера
- Программа MHDD
- Программирование диалогов