Одну инструкцию от другой отделяют точкой с запятой или, другими словами, в конце каждой инструкции ставят точку с запятой.
Хотя в одной строке программы можно записать несколько инструкций, как правило, каждую инструкцию программы записывают в отдельной строке.
Некоторые инструкции (if, case, repeat, while и др.) принято записывать в несколько строк, используя для выделения структуры инструкции отступы. Ниже приведен пример инструкции, которая записана в несколько строк и с использованием отступов:
if d >= 0 then begin
x1:=(-b+Sqrt(d))/(2*a);
x2:=(-b-Sqrt(d))/(2*a);
ShowMessage('x1='+FloatToStr(xl) +
'x2='+FloatToStr(x2));
End
Else
ShowMessage('Уравнение не имеет корней.');
Следует обратить внимание на то, что слова then и else записаны одно под другим (с одинаковым отступом) и с отступом относительно слова if. Слово end располагается под словом begin, а инструкции между begin и end размещаются одна под другой, но с отступом относительно begin.
Приведенную выше инструкцию можно записать и так:
if d >= 0 then begin
x1:=(-b+Sqrt(d))/(2*a);
x2:=(-b-Sqrt(d))/(2*a);
ShowMessage('x1='+FloatToStr(x1)+'x2='+FloatToStr(x2));
End
else ShowMessage('Уравнение не имеет корней.');
Однако первый вариант лучше, т. к. он отражает структуру алгоритма, реализуемого инструкцией. С первого взгляда видна группа инструкций, которая будет выполнена, если условие d >= о выполняется (в этом случае будут вычислены значения переменных xl и х2), и инструкция, которая будет выполнена, если условие d >=o не выполняется.
Длинные выражения тоже могут быть записаны в несколько строк. Разорвать выражение и перенести оставшуюся часть на следующую строку можно практически в любом месте. Нельзя разрывать имена переменных, числовые и строковые константы, а также составные операторы, например, оператор присваивания.
|
Ниже приведен пример записи выражения в несколько строк:
st:= 'Корни уравнения'+ #13
+'x1=' + FloatToStr(x1)+ #13 +'х2=' + FloatToStr(x2);
Еще один момент, на который следует обратить внимание. Компилятор игнорирует "лишние" пробелы и пустые строки. Так, он игнорирует все пробелы в начале строки. Кстати, это и позволяет записывать инструкции с отступами. Не требуются пробелы при записи арифметических и логических выражений (условий), списков параметров. Однако при их использовании программа легче воспринимается. Сравните два варианта записи инструкции присваивания:
x1:=(-b+Sqrt(d))/(2*a);
и
x1:= (-b + Sqrt(d)) / (2 * а);
Очевидно, что второй вариант воспринимается лучше.
Для облегчения понимания логики работы программы в текст программы нужно включать поясняющий текст — комментарии. В общем случае комментарии заключают в фигурные скобки. Открывающая скобка помечает начало комментария, закрывающая — конец. Если комментарий однострочный или находится после инструкции, то перед комментарием ставят две наклонные черты.
Ниже приведен пример раздела объявления переменных, в котором использованы оба способа записи комментариев:
Var
{ коэффициенты уравнения }
a:real; // при второй степени неизвестного
b:real; // при первой степени неизвестного
с:real; // при нулевой степени неизвестного
{ корни уравнения } x1,x2:real;
Стиль программирования
Работая над программой, программист, особенно начинающий, должен хорошо представлять, что программа, которую он разрабатывает, предназначена, с одной стороны, для пользователя, с другой — для самого программиста. Текст программы нужен прежде всего самому программисту, а также другим людям, с которыми он совместно работает над проектом. Поэтому для того, чтобы работа была эффективной, программа должна быть легко читаемой, ее структура должна соответствовать структуре и алгоритму решаемой задачи. Как этого добиться? Надо следовать правилам хорошего стиля программирования. Стиль программирования — это набор правил, которым следует программист (осознано или потому, что "так делают другие") в процессе своей работы. Очевидно, что хороший программист должен следовать правилам хорошего стиля.
|
Хороший стиль программирования предполагает:
· использование комментариев;
· использование несущих смысловую нагрузку имен переменных, процедур и функций;
· использование отступов;
· использование пустых строк.
Следование правилам хорошего стиля программирования значительно уменьшает вероятность появления ошибок на этапе набора текста, делает программу легко читаемой, что, в свою очередь, облегчает процессы отладки и внесения изменений.
Четкого критерия оценки степени соответствия программы хорошему стилю программирования не существует. Вместе с тем достаточно одного взгляда, чтобы понять, соответствует программа хорошему стилю или нет.
Сводить понятие стиля программирования только к правилам записи текста программы было бы неверно. Стиль, которого придерживается программист, проявляется во время работы программы. Хорошая программа должна быть прежде всего надежной и дружественной по отношению к пользователю.
|
Надежность подразумевает, что программа, не полагаясь на "разумное" поведение пользователя, контролирует исходные данные, проверяет результат выполнения операций, которые по какой-либо причине могут быть не выполнены, например, операций с файлами.
Дружественность предполагает хорошо спроектированные диалоговые окна, наличие справочной системы, разумное и предсказуемое, с точки зрения пользователя, поведение программы.
Инструкции write и writeln
Инструкция write предназначена для вывода на экран монитора сообщений и значений переменных. После слова write в скобках задается список переменных, значения которых должны быть выведены. Кроме имен переменных в список можно включить сообщение — текст, заключенный в одиночные кавычки.
Например:
write(Summa);
write('Результат вычислений');
write('Корни уравнения. xl=', xl, ' х2=', х2);
После имени переменной через двоеточие можно поместить описание (формат) поля вывода значения переменной.
Для переменной типа Integer формат — это целое число, которое задает ширину поля вывода (количество позиций на экране).
Например, инструкция
write(d:5);
показывает, что для вывода значения переменной d используется 5 позиций.
Если значение переменной такое, что его изображение занимает меньше позиций, чем указано в формате, то перед первой цифрой числа будут выведены пробелы так, чтобы общее количество выведенных символов было равно указанному в формате.
Например, если значение переменной Koi типа integer равно 15, то в результате выполнения инструкции
write('Всего изделий:', Kol:5);
на экран будет выведено:
Всего изделий: 15
Для переменных типа Real формат представляет собой два целых числа, разделенных двоеточием. Первое число определяет ширину поля вывода, второе — количество цифр дробной части числа. Если задать только ширину поля, то на экране появится число, представленное в формате с плавающей точкой.
Например, пусть переменные x1 и х2 типа real имеют значения 13.25 и -0.3401, тогда в результате выполнения инструкции
write('xl=',x1:5:2,' х2=',х2:12)
на экран будет выведено:
x1=13.25 х2=-3.40100Е-01
Если ширины поля, указанной в формате, недостаточно для вывода значения переменной, то выводится число в формате с плавающей точкой и десятью цифрами после запятой (все поле вывода в этом случае занимает 17 позиций).
После выполнения инструкции write курсор остается в той позиции экрана, в которую он переместился после вывода последнего символа, выведенного этой инструкцией. Следующая инструкция write начинает вывод именно с этой позиции. Например, в результате выполнения инструкций
х:=-2.73;
write('Значение перем');
write('енной:');
write('х=');
write(x:8:5);
на экран будет выведено:
Значение переменной: х=-2.73000
Инструкция writein отличается от инструкции write только тем, что после вывода сообщения или значений переменных курсор переводится в начало следующей строки. Например, если значением переменной x1 является число -3.561, а значением переменной х2 — число 10.345, то результатом выполнения инструкций
writein('Значения корней уравнения:');
writeln('x1=',x:7:3);
writein('х2=',х:7:3);
на экран будет выведено:
Значения корней уравнения:
xl=-3.5610
х2= 10.345
Инструкции read и readln
Инструкция read предназначена для ввода с клавиатуры значений переменных (исходных данных). В общем виде инструкция выглядит следующим образом:
read (Переменная1, Переменная2,... ПеременнаяN)
где переменнаяы — имя переменной, значение которой должно быть введено с клавиатуры во время выполнения программы.
Приведем примеры записи инструкции read:
read(a); read(Cena,Kol);
При выполнении инструкции read происходит следующее:
1. Программа приостанавливает свою работу и ждет, пока на клавиатуре будут набраны нужные данные и нажата клавиша <Enter>.
2. После нажатия клавиши <Enter> введенное значение присваивается переменной, имя которой указано в инструкции.
Например, в результате выполнения инструкции
read(Temperat);
и ввода с клавиатуры строки 21, значением переменной Temperat будет число 21.
Одна инструкция read позволяет получить значения нескольких переменных. При этом вводимые числа должны быть набраны в одной строке и разделены пробелами. Например, если тип переменных а, ь и с — real, то в результате выполнения инструкции read(a,b,c); и ввода с клавиатуры строки:
4.5 23 0.17
переменные будут иметь следующие значения:
а = 4,5; b = 23,0; с = 0,17.
Если в строке набрано больше чисел, чем задано переменных в инструкции read, то оставшаяся часть строки будет обработана следующей инструкцией read. Например, в результате выполнения инструкций
read(А,В); read(С);
и ввода с клавиатуры строки
10 25 18
переменные получат следующие значения: А=10, B = 25. Инструкция read (С); присвоит переменной с значение 18.
Инструкция readln отличается от инструкции read тем, что после выделения очередного числа из введенной с клавиатуры строки и присваивания его последней переменной из списка инструкции readin, оставшаяся часть строки теряется, и следующая инструкция read или readin будет требовать нового ввода.
Например, в результате выполнения инструкции
readin(А,В); read(С);
и вводе с клавиатуры строки
10 25 18
переменные получат следующие значения: А=10, B = 25. После чего программа будет ожидать ввода нового числа, чтобы присвоить его переменной с.
Перед каждой инструкцией read или readin следует располагать инструкцию write, для того чтобы подсказать пользователю, какие данные ожидает от него программа. Например, фрагмент программы вычисления стоимости покупки может иметь вид:
writeln('Введите исходные данные.');
write('Цена изделия:');
readln(Сеnа);
write('Количество в партии:');
readln(Kol);
write('Скидка:');
readln(Skidka);
Если тип данных, вводимых с клавиатуры, не соответствует или не может быть приведен к типу переменных, имена которых указаны в инструкции read (readin), то программа аварийно завершает работу (инструкции, следующие за read, не выполняются), и на экран выводится сообщение об ошибке.