учебник по паскалю. Программа 5 Алгоритм 5 Свойства алгоритма 6 Формы записи алгоритма 6
Скачать 2.21 Mb.
|
4.4. Управление выводом данныхВ операторе write или writeln вещественное значение (а также целое или строковое) зачастую удобнее записывать в виде: переменная:ширина:точность Здесь ширина -- целое положительное число, определяющее, сколько экранных позиций отводится для вывода всего числа. Ширина определена для числовых значений любого типа и строк. Точность -- целое положительное число, определяющее, сколько цифр из ширины отводится на вывод дробной части числа. Значение точности определено только для вещественных чисел. Оно не учитывает позицию десятичной точки. Разумные значения точности -- от 0 до ширина-2 включительно. Недопустимые значения ширины и точности не будут учтены при выводе. В качестве примера выведем на экран значения нескольких переменных: var x1,p:real; i:integer; ... x1:=2.5; p:=-3.175; i:=2; writeln ('x1=',x1:8:2,'_p=',p:9:4); write ('I=','_':5,i:2); На экране будет напечатано: x1=____2.50_p=__-3.1750 I=______2 4.5. Вывод на печатьИногда требуется, чтобы программа вывела результаты своей работы на принтер. Для этого достаточно выполнения двух условий. Первым оператором раздела описаний программы следует указать оператор uses printer;, подключающий стандартную библиотеку для работы с принтером, а первым параметром оператора write или writeln указать символическое имя принтера lst, описанное в библиотеке printer: write ('Hello'); — строка 'Hello' выведена на экран, write (lst,'Hello'); — строка выведена на принтер. Отличие между write и writeln сохраняется при выводе на принтер -- то есть, при использовании writeln позиция печати на принтере будет переведена на следующую строку. Здесь не приводится код, позволяющий проверить, готов ли принтер к печати и удалась ли операция вывода данных на него. Подобные проверки мы научимся делать, изучив стандартную функцию IoResult. 5. Структура простой программы на ПаскалеПрограмма на Паскале не просто состоит из операторов -- порядок следования этих операторов не случаен и образует определенную структуру. Структура простейшей программы описана в табл. 5.1. Табл. 5.1. Структура простой программы на Паскале
Пара операторов begin и end называется операторными скобками, они служат для того, чтобы объединить группу операторов, выполняемых вместе, например, в цикле или по условию. Ключевые слова begin и end следует рассматривать как единый оператор, поэтому после begin точка с запятой не ставится, а количество begin и end в программе всегда одинаково. Таким образом, тело программы заключено в операторные скобки, объединяющие все ее операторы. Только последний оператор программы завершается точкой: end. , все остальные -- символом ;. Если в программе нет констант, в ней будет отсутствовать раздел const, если нет и переменных -- раздел var. При написании текста программы следует соблюдать несложные правила, облегчающие его последующие чтение и модификацию:
program p1; var a,b,c:real; begin writeln ('Введите значения A и B:');read(a,b); c:=a+b; writeln ('A+B=',c); c:=a-b; writeln ('A-B=',c); end. Текст этой программы структурирован явно неудачно, гораздо лучше он воспринимается так: program p1; var a,b,c:real; begin writeln ('Введите значения A и B:'); read (a,b); c:=a+b; writeln ('A+B=',c); c:=a-b; writeln ('A-B=',c); end.
В качестве примера приведем законченную программу на Паскале, вычисляющую вещественные корни произвольного квадратного уравнения. program Equation; var a,b,c,d,x1,x2:real; begin writeln; writeln ('Введите коэффициенты a,b,c:'); read (a,b,c); d:=sqr(b)-4*a*c; x1:=(-b+sqrt(d))/(2*a); x2:=(-b-sqrt(d))/(2*a); writeln ('Корни уравнения'); writeln (x1:10:2,x2:10:2); readln; readln; end. В разделе описаний программы всем переменным, требуемым для решения задачи, присвоен тип real, и этот выбор вполне очевиден -- коэффициенты a, b и с -- не обязательно целые значения. "Лишний" оператор writeln; перед приглашением к вводу -- гарантия того, что приглашение будет напечатано с начала пустой строки, ведь мы пока не умеем очищать экран, и, возможно, при запуске нашей программы курсор находится не в начале строки. После вычисления дискриминанта и корней x1, x2 (условие d≥0 мы пока не проверяем), на экран печатается информационное сообщение "Корни уравнения", а затем с новой строки выводятся значения x1 и x2 с соблюдением указанных ширины и точности вывода. Наконец, два оператора readln; в конце программы позволяют ей дождаться, пока пользователь не нажмет клавишу Enter. "Удвоение" оператора здесь связано с тем, что один раз мы уже нажимали Enter после ввода данных, и первый readln; прочитает именно это нажатие, а второй будет ждать еще одного. Будь ввод данных организован в виде a:=1; b:=2; c:=0; или readln(a,b,c);, нам хватило бы и одного readln;. Однако, оператор readln(a,b,c); потребовал бы от пользователя ввести все 3 числа в одной строке, а задание фиксированных значений a, b, c уменьшило бы до нуля ее полезность. В дальнейшем мы узнаем более гибкие способы программирования реакции программы на действия пользователя. |