Теперь усложним задачу, пусть компьютер обратится к вам вот с таким пышным приветствием:
------------------------
Мой повелитель!
Поздравляю тебя с первой программой!
Твой верный слуга Паскаль
------------------------
Здесь в первой и последней строках для красоты печатается горизонтальный прочерк.
Создадим новый файл и сохраним его под именем «P_07_1.PAS». Напомню, что новый файл создается через пункт меню File –> New, а сохраняется нажатием клавиши F2. Покончив с этим, приступим к сочинению программы. Поразмыслив немного, вы наверняка напишите следующие строки.
begin
Writeln(’------------------------’)
Writeln(’Мой повелитель!’)
Writeln(’Поздравляю тебя с первой программой!’)
Writeln(’Твой верный слуга Паскаль’)
Writeln(’------------------------’)
end.
Ход вашей мысли ясен: уж если компилятор читает программу слева направо и сверху вниз, то и компьютер будет выполнять её в том же порядке. Вы угадали, так оно и есть! Ну что ж, пробуем скомпилировать свое детище, жмем F9 и что? Опять видим сообщение об ошибке (рис. 20)!
В чем дело? Компилятор утверждает, что где-то пропущена точка с запятой. В скобках указано место ошибки: третья строка, первый символ. Значит, точку с запятой надо ставить здесь? И зачем она нужна?
Познакомьтесь с важным понятием языка – оператором. Оператор – это наименьший смысловой «кусочек» программы. Он заключает в себе либо небольшое действие – шаг программы, либо описание каких-то данных. В Паскале есть много разных операторов, процедура печати – один из них. В целом программа – это последовательность операторов и ключевых слов. Читая программу, компилятор должен уяснить, где кончается один оператор и начинается следующий. И здесь он нуждается в вашей помощи! Ему нужна подсказка – разделитель операторов, которым служит точка с запятой (;).
Вернемся к нашей программе. Хотя процедуры печати расположены в разных строках, этого мало, чтобы компилятор воспринял их как отдельные операторы. Порой длинный оператор не помещается в одной строке и пишется на нескольких. А бывает наоборот – в одной строке пишут несколько операторов. Вот почему нужен разделитель.
Итак, между операторами надо поставить точку с запятой, программисты обычно ставят разделитель после оператора. Теперь наша программа станет такой.
begin
Writeln(’------------------------’);
Writeln(’Мой повелитель!’);
Writeln(’Поздравляю тебя с первой программой!’);
Writeln(’Твой верный слуга Паскаль’);
Writeln(’------------------------’)
end.
А где разделитель за последним оператором, то есть перед словом END? Здесь он не нужен, поскольку END – не оператор, а ключевое слово. Но, если вы поставите лишнюю точку с запятой или даже несколько подряд, в этом не будет ошибки. Теперь можно запустить программу нажатием Ctrl+F9 и полюбоваться на результат её работы, нажав Alt+F5.
Как хотите, а мне надоело всякий раз нажимать сочетание Alt+F5 для того лишь, чтобы увидеть результат. Пора избавиться от этого неудобства.
Познакомьтесь с новой процедурой, она называется ReadLn. Это слово, как и слово Writeln, тоже состоит из двух: Read – «чтение», Line – «линия, строка», что значит «чтение строки». Действует процедура ReadLn очень просто: дойдя до её исполнения, компьютер остановится в ожидании, пока вы не нажмете клавишу Enter. Вот и все. И пока он ждет, вы спокойно разглядываете консольное окно. Ясно? Тогда подскажите, где поместить эту процедуру? Ну, очевидно же – самым последним оператором! В результате получим новый вариант программы.
begin
Writeln(’------------------------’);
Writeln(’Мой повелитель!’);
Writeln(’Поздравляю тебя с написанием первой программы!’);
Writeln(’Твой верный слуга Паскаль’);
Writeln(’------------------------’);
Readln
end.
Про точку с запятой не забыли? Отлично! Запускаем программу и убеждаемся, что Паскаль нас снова не подвел (не забудьте нажать Enter!).
Взгляните на программу ещё разок: печатая строки, компьютер выполняет отдельные действия – шаги программы. Такую последовательность шагов называют алгоритмом. Вам следует привыкнуть к этому слову, ведь алгоритм – основное понятие в программировании. Вот слегка упрощенное определение алгоритма, запишите: «Алгоритм – это точное предписание исполнителю совершить определенную последовательность действий для достижения поставленной цели за конечное число шагов». Под исполнителем мы понимаем компьютер.
В этом определении угадывается что-то знакомое, не так ли? Ещё бы! То и дело мы получаем указания: сделай то, да сделай это. За что ни возьмись, надо выполнять некий алгоритм. Так, например, одеваясь на улицу, вы соображаете, что и за чем следует напялить на себя: сначала белье, затем рубашку, брюки, носки и ботинки. Даже при ходьбе выполняем простейший алгоритм: левой, правой, левой, правой…
Разбивая сложное действие на ряд простых шагов, вы создаете алгоритм. Алгоритм нашей программы состоит из шагов, выполняемых друг за другом, последовательно. Линейная последовательность – это одна из трех базовых управляющих структур, на которых строится вся гигантски сложная архитектура современных программ (о двух других базовых управляющих структурах я расскажу позднее).
Как видите, с алгоритмами связан любой из нас, а не только программисты. Создание напичканных компьютерами сложных систем – заводов, электростанций и тому подобного – требует согласованных усилий специалистов разных профессий. Они объясняют программистам требования к создаваемым системам. Иными словами, эти специалисты заказывают алгоритмы. Увы, не все они владеют программированием. Как быть?
Кто-то догадался изображать алгоритмы графическими схемами, картинками. Этот прием оказался наглядным и понятным даже людям, далеким от программирования. Блок-схемы – так называют эти картинки – стали средством общения между специалистами разных профессий с одной стороны, и программистами с другой.
Впрочем, программисты и между собой общаются посредством блок-схем. Эти схемы помогают обнаружить ошибки в программах. В чем отличие блок-схемы программы от её текста? Текст показывает то, что фактически делает программа, а блок-схема – то, что она должна делать. Сравнивая одно с другим, можно найти ошибки в программном воплощении алгоритма.
Перед вами блок-схемы трех созданных нами программ (рис. 21).
Скругленные прямоугольники означают начало и конец алгоритма, – они соответствуют ключевым словам BEGIN и END. Исполняемые операторы – это прямоугольники с пояснениями внутри, а стрелки показывают порядок выполнения операторов. Все просто! Скоро мы изучим другие базовые управляющие структуры, и вы увидите их блок-схемы.
• Наименьшая смысловая часть программы называется оператором. Процедура печати Writeln и процедура ввода Readln – это операторы.
• Программа – это последовательность ключевых слов и операторов.
• Для разделения операторов используют точку с запятой.
• Точное предписание порядка выполняемых действий называется алгоритмом.
• Линейная последовательность – это один из трех базовых алгоритмов.
• Алгоритм может быть представлен словесным описанием, рисунком (блок-схемой), или текстом программы.
А) В нашей программе остался маленький изъян. Со временем вы забудете о том, что для завершения программы надо нажать клавишу Enter. Пусть программа сама напомнит об этом, печатая после приветствия напоминание:
Для завершения программы нажмите Enter
Внесите это изменение в программу. Или слабо?
Б) Измените программу так, чтобы в каждой строке разместилось по два оператора. Откомпилируйте и проверьте программу в действии. Изменилось ли что-то в её поведении?
В) Нарисуйте две блок-схемы, поясняющие, как вы обычно проводите свой будний и выходной день.