Пример простейшей программы.
Чтобы выполнить обработку данных на компьютере, пользователь должен спланировать процедуру обработки с помощью имеющихся программ. Чтобы правильно это сделать, необходимо уметь разбить сложное действие на ряд простых шагов и описать последовательность выполнения этих шагов. Лучше всего этому научиться, освоив основы программирования на любом языке высокого уровня. Операторы языков высокого уровня мало отличаются друг от друга.
Прежде чем написать программу, пользователь описывает обычными словами, что должна сделать компьютер, то есть составляет алгоритм работы компьютера. Алгоритм будущей программы никак не связан с языком программирования. Программа пишется на конкретном языке программирования и не годится для другого языка.
Составим алгоритм вычисления площади треугольника:
1) вывести на экран: «Ввести два числа: a, h – основание и высоту треугольника»;
2) ввести с клавиатуры два числа: a, h;
3) вычислить: S = a * h / 2;
4) вывести на экран: «Площадь треугольника равна», а затем вывести на экран вычисленное значение S.
В этом алгоритме все действия выполняются подряд, линейно. Это – линейный алгоритм.
Теперь составим программу на языке высокого уровня Pascal, соответствующую вышеприведённому алгоритму. Здесь и далее все программы набраны шрифтом, похожим на тот, что использует среда программирования при выводе текста на экран (шрифт Curier New).
Program A1;
Var a,h,s:real;
Begin
WriteLn('Ввести два числа: основание и высоту треугольника');
Read(a,h);
s:=a*h/2;
WriteLn('Площадь треугольника =',s:8:2);
ReadLn;
End.
Разберём, из чего состоит и как записывается программа на языке Pascal.
Как уже говорилось, программа состоит из операторов. В качестве названий операторов, функций и процедур используются служебные (зарезервированные) слова языка Pascal, которые необходимо выучить для быстрого и безошибочного составления программ.
· Для записи операторов можно использовать любые латинские буквы, не зависимо от их регистра; программа не различает строчные (маленькие) и прописные (большие) буквы.
· В конце каждого оператора, кроме отдельных случаев, должен стоять символ “ ; ” (точка с запятой). Символ “ ; ” никогда не ставится после Begin и после последнего End (там ставится точка), а также может не ставиться перед End.
· Оператор можно писать с любой позиции строки и продолжать на следующие строки, разрывая оператор по словам (по пробелам).
· В одной строке можно писать несколько операторов, хоть всю программу. Но удобнее работать с программой, когда в одной строке записан один оператор, или даже когда один оператор продолжается на несколько строк.
· Точка после последнего End – признак окончания текста программы. После точки на следующих строках можно писать что угодно, программа туда «не заглядывает». Если программа сложная, обычно после неё пишут комментарий.
Теперь рассмотрим, как работают отдельные операторы программы.
ОператорProgram A1 представляет собой заголовок программы. Он даёт программе имя A1. Имя программы является идентификатором, в качестве которого может использоваться любая последовательность латинских букв, цифр и других символов, кроме пробела и специальных символов (точка, запятая, слеш, табуляция и т.п.), обязательно начинающаяся с латинской буквы. Идентификатор может состоять не более чем из 64 символов. В качестве идентификатора не могут использоваться служебные (зарезервированные) слова языка Pascal.
Те же правила распространяются на имена ячеек оперативной памяти (названия переменных), которые также являются идентификаторами.
ОператорVar a,h,s:real представляет собой блок описания переменных. Он отводит в ОП три ячейки с именами a, h, s для трёх переменных. Во время работы программы в эти ячейки будут записываться значения переменных. Для краткости записи каждую переменную (ячейку ОП) мы обозначили одной буквой.
После символа “ : ” (двоеточие) указывается тип переменной. В языке Pascal много типов переменных. Но мы, чаще всего, будем использовать только два типа переменных.
Первый тип – real – вещественные числа (с десятичной дробной частью). Диапазон изменения от 10-38 до 10+38. Программа отводит под каждое вещественное число 6 байт в соответствующей ячейке ОП.
В рассматриваемой нами программе после двоеточия указан тип real, так как в программе присутствует операция деления, результатом которого может оказаться не целое (дробное) число.
В компьютере действительные числа хранятся в так называемом научном, или, как его ещё называют, в экспоненциальном формате. В этом формате действительное число состоит из мантиссы, числа от 1 до 10 с 12-ю значащими цифрами, и так называемой экспоненты, степени числа 10. При выводе на экран степень числа 10 заменяется прописной буквой E с последующим двузначным числом со своим знаком, которое является показателем степени числа 10. Такое представление позволяет легко записывать очень большие и очень маленькие числа. Если пользователь не задал формат, на экран или на печать действительное число будет выведено в своем внутреннем представлении. Например, на экране число Авогадро 6,02*1023 будет выглядеть так: 6.020000000000E+23.
О формате и способе его задания мы поговорим в конце этого раздела.
Второй тип – integer – целые числа. Диапазон изменения от -32768 до +32767 (215). Ёмкость отводимой под него ячейки в ОП – 2 байта.
С первого оператора Begin начинается собственно программа, называемая блоком операторов программы. Все операторы до первого Begin образуют блок описания программы. Вся последовательность операторов между первым Begin и последним End образует тело программы.
Мы специально подчеркиваем «первый», «последний», потому что в теле программы, как мы скоро убедимся, могут быть другие пары операторов Begin и End.
Операторы можно писать с любой позиции строки. Но обычно операторы блока описания программы записывают с первой позиции строки, а операторы тела программы записывают с отступом от начала строки, чтобы выделить тело программы.
Оператор WriteLn('Ввести два числа: основание и высоту треугольника') выводит на чёрный пользовательский экран надпись – цепочку символов, стоящую в круглых скобках после оператора и заключенную в апострофы, подсказывающую пользователю, что ему необходимо сделать. В нём объединены два оператора. Первый – Write – оператор вывода на экран. Второй – Ln, сокращение от английского line (строка) – оператор перевода курсора в начало новой строки экрана после окончания работы оператора Write. Иными словами, оператор Write выводит символы на экран, тогда как оператор WriteLn после вывода символов ещё и переводит курсор на следующую экранную строку.
Ввода данных с клавиатуры осуществляет оператор Read(a,h). В данном случае это два числа, которые вводятся в ячейки c именами a, h.
Вводимые с клавиатуры числа разделяются хотя бы одним пробелом, например, 3 6. Если ввести их без пробела, то будет прочитано одно число 36. При вводе с клавиатуры каждая нажатая символьная клавиша попадает в буфер (специально отведённую для этого часть ОП) клавиатуры и отображается на экране. Но программа прочитает буфер клавиатуры только после нажатия клавиши Enter. До этого набранные символы можно удалять частично или полностью, вводить новые, то есть редактировать.
После нажатия клавиши Enter программа вводит значения из буфера клавиатуры и расшифровывает их по списку ввода оператора Read (каковым являются символы, стоящие в круглых скобках после оператора и отделённые друг от друга запятой). В данном случае в списке ввода стоят две переменные: a, h. Программа ищет в строке два числа, разделенные пробелом. Первое число помещается в ячейку ОП, отведенную для переменной с именем a, второе число – в ячейку ОП, отведенную для переменной с именем h.
Если в строке найдено только одно число, например, числа 3 и 6 были введены без пробела как 36, то число 36 помещается в ячейку a, и программа будет ждать ввода с клавиатуры еще одного числа, чтобы переслать его в ячейку h. При этом бесполезно нажимать клавишу Enter: программа не перейдёт к следующему шагу (например, к исполнению) до тех пор, пока не будет введено числовое значения второй переменной.
Оператор присваиванияs:=a*h/2 – инструкция для компьютера выполнить действия, указанные в правой части оператора, и результат поместить в ячейку ОП, записанную слева от символа оператора присваивания “:=”.
В данном случае из ячеек ОП a и h будут извлечены хранящиеся там числа, и отправлены в ЦП. Только ЦП может производить действия над числами. Результат будет помещен в ячейку s.
В программе нам ещё раз встречается оператор выводаWriteLn('Площадь треугольника =',s:8:2). Теперь посредством него на экран будет дословно выведен текст, заключенный в апострофы: 'Площадь треугольника =', а затем будет выведено число из ячейки s с форматом :8:2.
Задание формата числа позволяет вывести это число на экран в привычном виде, с десятичным разделителем между целой и дробной (десятичной) частями. Следует помнить, что в языке Pascal в качестве десятичного разделителя используется точка, запятая же используется для других целей. Форматом называется количество текстовых позиций экрана (знакомест), отводимое под данное число, включая десятичный разделитель. Формат вещественного числа состоит из двух чисел, отделённых двоеточиями от имени переменной и друг от друга – s:8:2. Формат целого числа состоит из одного числа, отделённого от обозначения переменной двоеточием. Формат вывода (печати) задает пользователь. В рассмотренном случае число будет занимать 8 текстовых позиций экрана (знакомест), из них 2 правых позиции будет отведено под 2 цифры десятичной дроби, одна позиция – под десятичную точку, оставшиеся 4 позиции – под целую часть, причем свободные левые позиции будут заполнены пробелами.
Например, число 2,6 будет выведено как _ _ _ _2.60.
Следует обратить внимание на то, что количество значащих цифр после десятичной точки оказалось меньшим, чем задано форматом, и недостающее число было заменено нулём. При формате s:8:4 это же число 2,6 будет выведено как _ _ 2.6000.
Если задать формат s:8:0, то число выведется без десятичных знаков, и на экране будет выглядеть как целое.
В общем виде формат можно обозначить как X:m:n, где X – переменная, m – общее число текстовых позиций экрана (знакомест) для вывода числа, n – число текстовых позиций экрана (знакомест) для вывода его десятичной части.
Пустой оператор ввода ReadLn временно приостанавливает работу программы до нажатия клавиши Enter, чтобы пользователь мог оценить полученные результаты в «черном» окне выполнения. Когда нет этого оператора, по окончанию работы программы на экране сразу появляется «синее» окно редактирования, где был создан текст программы, и приходится нажимать комбинацию клавиш Alt-F5, чтобы вернуться в окно выполнения.
Конец тела программы – это оператор End. Точка после оператора End – конец текста программы.
Все последующие программы будут содержать такие же операторы языка Pascal. Будут меняться имена переменных, ячеек оперативной памяти, операторы внутри тела программы. В дальнейшем будем разбирать только те фрагменты текстов программ, которые будут включать новые операторы.
Дата добавления: 2016-04-06; просмотров: 709;