metod_15.03.04_atppp_oaip_ump_2016 (1016599), страница 35
Текст из файла (страница 35)
е. к клавиатуре можно подключитьнесколько файлов программы: например, файл Input и файл F программы. Для этого F— файловой переменной программы надо назначить экран с помощью Assign и открытьего для чтения: Assign (F, ''); Reset (F) ;Операторы ввода данных с клавиатуры при этом могут быть ввиде: Read (А, В, С ) ; - для ввода из файла INPUT;Read (F, D, Е ); - для ввода из файла F; D, Е - переменные.Вывод данных в текстовый файлПроцедуры Write и WritelnВывод данных в текстовый файл осуществляется в основном для просмотра иподготовки к печати результатов работы программы. Вывод данных производится спомощью процедур Write и Writeln.
Форма обращения к процедуре Write:где файловая-переменная - имя текстового файла, переменная, которая должна бытьтипа TEXT и связана с файлом или логическим устройством с помощью процедурыAssign;список-данных - список, содержащий одно и более выражений, (в том числеконстант или имен скалярных переменных, элементов массива или записи) иуправляющие коды. Результатом выражений могут быть значения типа CHAR,STRING, BOOLEAN или арифметические целого или вещественного типа, и форматыдля их размещения в выводном текстовом файле. Форматы в списке данныхнеобязательны. С их помощью можно формировать выходные документы в требуемойформе.
Например:Write(F, А, В, С) ; - в файл F выводятся значения переменных А, В, С;159Write (А, В, С ) ; - для вывода А, В, С в стандартный файл Output.Здесь файловая переменная F должна быть определена как переменная типа TEXT исвязана с именем файла или логическим устройством процедурой Assign. Если файлдолжен быть создан, его надо открыть процедурой Rewrite. Если он был создан изакрыт, а его надо дополнить, то он должен быть открыт процедурой Append (см. разд.3.1).Если в качестве файла используется экран, то в общем случае (без применениясредств стандартного модуля CRT), вывод производится в нижнюю строку экрана.
А поее заполнении (в строке экрана размещается 80 символов) содержимое экранаавтоматически поднимается вверх и вывод продолжается в нижнюю строку экрана."Поднять" строки экрана, т. е. перевести курсор при выводе на следующую строку,можно с помощью процедуры Writeln.Если при выводе на экран длина значений, выводимых с помощью процедуры Write,превышает длину строки экрана (80 символов), то по достижении конца строки выводданных автоматически продолжается на следующей строке экрана. При выводе втекстовый файл длина его строки равна 248 символам.Процедура Writeln идентична процедуре Write за исключением того, что выводимаястрока завершается кодом конца строки: EOLN. При этом на экране курсор переходит вначало следующей строки, а ранее сформированные строки поднимаются вверх на однустроку.
При выполнении процедуры Writeln без списка данных в файл передаетсятолько признак EOLN.Бесформатный вывод данных в текстовый файлПоле и форма выводимого значения определяются по умолчанию или форматом.Если форматов для вывода нет, то значения результатов выражений выводятся одно задругим, без какого-либо разделения их пробелами:1) целые значения выводятся в виде: -X. . .X (выводится только минус),где X — разряды выводимого значения; при этом выделяются позиции для всехразрядов выводимого значения и его знака;2) вещественные значения типа Real выводятся в виде:-Х.Х...ХЕ±ХХмантисса порядок количество выводимых разрядов мантиссы, т.
е. разрядов числа дои после точкиравно 11: один разряд до точки и 10 после нее. Е - признак начала порядка, которыйвыводится со знаком + или -;3) символы и строки выводятся без изменения;4) значения логических выражений в зависимости от их значения выводятся в видеслов TRUE или FALSE.Пример бесформатного вывода значений различных типов:CONST А =123; AR =-45.678; В ='С'; С ='STROKA'; D =TRUE; E = FALSE;BEGINWRITELN( 'A = ', A, ' AR = ', AR, 'B=', ' " ' B, ‘’ ' ', 'C=', C, 'D=', D, 'E=', E);END.160Результатом работы приведенного оператора Writeln будет: А = 123 AR = 4.5678000000Е+01 В = 'С' С = STROKA D = TRUE E = FALSEФорма выводимого вещественного значения зависит также от используемых типоввыводимого значения: single, real, double или extended.
Для использования всехвещественных типов необходимо включение числового сопроцессора директивойкомпилятора N+. Для использования вещественных значений только типа Real это нетребуется. Далее по тексту форма вывода значений и количество выводимых разрядовчисла при использовании данных типа Real даны без скобок, а для типа Extended - вскобках.Форматный вывод данных в текстовый файлФорматы для вывода данных в текстовый файлДля формирования документа в требуемой форме надо использовать форматныйвывод.
Элемент списка данных с форматом для вывода значений может быть в виде:X:W [ : d ]где X - выражение для вычисления выводимого значения;W, d - выражения (в частном случае - имена переменных или десятичныеконстанты) целого типа; W определяет минимальное поле, в котором будет размещеновыводимое значение; d - в том числе поле для дробной части числа.Например: Write ( А : 12 : 4, В : 13 ) ;.Для всех типов значений в качестве формата можно использовать только значениеполя W.
Если W больше поля, требуемого для вывода значения любого типа, товыводимое значение прижимается в выделенном поле вправо, оставляя слева пробелы.Форматный вывод целых, символьных, строковых и логических значенийПри выводе целых чисел:1) если поле W не менее требуемого для размещения значения, то выводимое значение прижимается в этом поле вправо;2) если W недостаточно для размещения выводимого значения или знака -, то автоматически выделяется поле для размещения значения и его знака -; для знака + местоне выделяется.
Например:А :=-12345; Write ( 'А= ', А:3); выведет А =-12345.При выводе символов выделяется поле, определенное значением W, в которомзначение символа прижимается вправо. Например:В : = ' С ' ; Write ( ' В= ' , ' ' ' ' , В : 4, ' ' ' ' ) ; выведет В= 'С '.Для вывода нескольких пробелов, например между двумя выводимымиарифметическими значениями, можно использовать следующее обращениек процедуре: Write (А, ' ' : 5, В );.В примере между значениями переменных А и В будет 5 пробелов. Например: А:.=1234; В :=5678; Writeln (А, ' ' : 5, В);.В результате будет выведено: 12345678.При выводе строковых и логических значений, если поле, выделенное длявыводимого значения, меньше, чем количество символов выводимого значения, то оноувеличивается до количества выводимых символов.
Пример форматного вывода целых,символов, строк и логических значений:CONST А = 123; В = 'С'; С = 'STROKA1; D = TRUE; E = FALSE;BEGIN161WRITELN( 'A=', A:4, 'B=', ' ' ' ' : 2, В : 2, ‘’’’, 'C=',C:7, ' D = ', D : 5, 'E=', E:6)END.Результатом работы приведенного оператора Writeln будет:А = 123 В = ' С ‘ С = STROKA D = TRUE E = FALSEФорматный вывод вещественных значений в форме с плавающей точкойДля вывода вещественных значений можно использовать форматы в виде: либотолько значение W, либо значение W и значение d.
Если для вывода вещественногозначения используется формат, содержащий значения W и d, значение выводится вформе с фиксированной точкой, т. е. в виде целой и дробной части числа, разделенныхточкой. Если для вывода вещественного значения используется формат, содержащийтолько поле W, значение выводится в форме с плавающей точкой (вэкспоненциальной форме), т. е. в виде мантиссы и порядка.Порядок числа п — это показатель степени, в которую надо возвести 10 - основание системы счисления, и для получения значения числа в форме с фиксированной точкой надо 10" умножить на мантиссу.
Примеры чисел в форме сплавающей точкой (в экспоненциальной форме) и в традиционной форме (сфиксированной точкой) даны в таблице.Примеры вещественных значенийЗначение числа в формес плавающей точкой-1.2345Е+035.678Е-02Соответствующая емутрадиционная форма-1.2345 ·1035.678·10-2Значение числасфиксированной точкой-1234.50.05678Например: А := -123.456; Write ( 'А= ' , А : 12, ' А= ' , А : 9 : 3 } ;. Оператор Writeвыведет: А = -1.23456Е+02 А =-123.456При выводе вещественных значений с форматом, содержащим только W - поледля вывода значения в форме с плавающей точкой:1) если W достаточно для размещения выводимого значения, то в этом полевеще-ственное значение выводится в виде:W - размер поля для вывода_..._-Х.Х...ХЕ+ХХмантисса порядок_..._-Х.Х...ХЕ±ХХХХдля типа extendedт.
е. мантисса выводится в виде одного целого разряда и одного и более дробных;значение числа в форме с фиксированной точкой при этом можно определить спомощью порядка; причем в этом случае выводится столько дробных разрядов,сколько может вместиться в выделенном поле; при этом предельная разрядностьвыводимой мантиссы не более:а) 11 для типа Real; если поле > 17, остаются пробелыб) 17 для типа Extended; если выделенное поле равно 25, оно вмещает 17 разрядовмантиссы (один – до точки и 16 после точки); если поле более 25, то число с мантиссойиз 17 разрядов смещается в выделенном поле вправо, оставляя слева пробелы;1622) если W < 8 (10) и недостаточно для размещения всех разрядов выводимогозначения, то принимается W = 8 (10); округленное значение выводится в виде:–Х.ХЕ ± ХХ ( –Х.ХЕ ± ХХХХ)realextended3) если W > 8 (10) и оно недостаточно для размещения всех разрядов числа, то числоокругляется до количества разрядов, которое можно разместить в заданном по - ле, ивыводится в виде –Х.Х..
.ХЕ ± ХХ (–Х.Х.. .ХЕ ± ХХХХ). Например:А= 12.345; Write ('А=’, А:10);выведет А = 1.235Е+01.Выбор значения W – размера поля для размещения числа в форме с плавающейточкой с требуемой m – разрядной мантиссой производится, исходя из требуемойразрядности мантиссы. Значение W для данных типа Real можно определить поформуле W = m + 6; где m - количество разрядов мантиссы;6(8) – количество позиций для размещения порядка, знака числа и точки, для данныхтипа Real без ( 6 ) директивы N+ и с нею ( 8 ) .Таким образом, для вывода значения типа Real с 5-разрядной мантиссой необходимо W=5 + 6 = ll; для вывода числа с 8-разрядной мантиссой значение W = 8 + 6 =14.Пример вывода вещественных значений в форме с плавающей точкой:CONST А := 12.345; В := 45.6789123; С ;= 345.1234568;BEGIN WRITELN ( 'А =', А : 11, ' В =', В : 14, ' С =', С : 14 ) END.Результатом вывода будет:А = 1.2345Е+01 В = 4.5678123Е+01 С = 3.4512347Е+02Форматный вывод вещественных значений в форме с фиксированной точкойНаиболее традиционен вывод вещественных значений в форме с фиксированнойточкой, т.
е. в виде целой и дробной части. Для вывода вещественного значения вформе с фиксированной точкой надо использовать форматы в виде W и d. При этом:1) если W и d достаточны для вывода значения, то оно формируется в видеW - размер поля для_..._–Х…Х.Х...Хdмантисса– количество дробных разрядов– значение числаНапример, значение А = 3.141592 и выводится с помощьюWrite ( F, 'А = ', А : 10 : 6 );В файл F будет выведено А = __3 .141592, где__– пробелы;2) если d - количество позиций для вывода дробных разрядов мало, недостаточно длявывода всех дробных разрядов значения, то дробная часть округляется до количестваразрядов, которое определяется значением d; например: А : = 3.141592; Write ('А = ',А:7:3);в результате будет выведено А= 3 .142.3) если при выводе числа поле W недостаточно для вывода целых разрядов выводимого значения, то выделяется дополнительное поле для вывода всех целых разрядовчисла и знака -; для знака + поле не выделяется; например: А := –1234.567; Write ( ' А =',163А : 5 : 3 ); будет выведено А = –1234.567– для вывода целой части числа и знака числадополнительно выделено 4 позиции;4) если d < 0, то оно игнорируется и число выведется в формате с плавающейточкой в поле W.
Например, то же значение А выводится с помощьюWrite ( F, 'А= ' , А : 10 : – 6 ) ;В файл F будет выведено А= –1.235Е+03С помощью Write (F, 'А= ' , А : 13 : –6) ; будет выведено:А=-1.234567Е+035) если для значений типа Real d > 11(18), то оно уменьшается до d= 11 (18 -для типаextended).Например, значение типа extended А = 3 .141592 и выводится с помощьюWrite { F, 'A= ' , А : 22 : 20 ) ;В файл F будет выведено число с 18 дробными разрядами в виде:А = _3.141592000000000000Вывод символов псевдографикиВывод на экран или в текстовый файл символов псевдографики можно осуществитьнесколькими способами с помощью:1) функции CHR;2) кодов символов в списке данных оператора Write;3) самих символов в списке данных оператора Write.Если в списке данных оператора Write в качестве элемента списка данныхиспользуется обращение к функции CHR, то в файл будет выведено значение символа,код которого дан в качестве фактического параметра функции. Если в списке данныхоператора Write приведен код символа с предшествующим ему символом #, то в файлили на экран выводится значение соответствующего ему символа.















