Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Вывод численных значений

Читайте также:
  1. I. ВЫВОДЫ ИЗ ОЦЕНКИ ПРОТИВНИКА
  2. IV. Общие выводы
  3. Snow Brand Milk не делает выводов из собственных ошибок
  4. V. ВЫВОДЫ
  5. VI. ВЫВОДЫ. ПРЕДЛОЖЕНИЯ. ЗАДАЧИ
  6. VII. ВЫВОДЫ
  7. Английские фразовые глаголы с объяснением их значений (на английском языке) и примерами употребления

В модуле Graph нет процедур, предназначенных для вывода численных данных. Поэтому для вывода чисел сначала нужно преобразовать их в строку с помощью процедуры Str, а затем подключить посредством ‘+’ к выводимой строке.

Например: Max:=34.56;

Str(Max: 6: 2, Smax);{результат преобразования находится в Smax}

OutTextXY(400, 40, ‘Максимум=’ + Smax);

Для удобства преобразование целочисленных и вещественных типов данных в строку лучше осуществлять специализированными пользовательскими функциями IntSt и RealSt:

function IntSt(Int: integer): string;

var Buf: string[10];

begin

Str(Int, Buf);

IntSt:= Buf;

end;

function RealSt(R: real, Dig, Dec: integer): string;

var Buf: string[20];

begin

Str(R: Dig: Dec, Buf);

RealSt:= Buf;

end;

Эти функции указываются как параметры в процедурах OutText и OutTextXY.

Например:

x:= 5.295643871;

OutTextXY(20, 20, ‘x=’+RealSt(x,11,9));

В результате на экране появится x=5.29564443871

Шрифты

Вывод текста в графическом режиме может осуществляться различными стандартными (таблица 5) и пользовательскими шрифтами. Различают два типа шрифтов: растровые и векторные. Растровый шрифт задается матрицей точек, а векторный – рядом векторов, составляющих символ.

По умолчанию после инициализации графического режима устанавливается растровый шрифт DefaultFont, который, как правило, является шрифтом, используемым драйвером клавиатуры.

Стандартные шрифты

Шрифт Файл
TriplexFont Trip.chr
SmallFont Litt.chr
SansSerifFont Sans.chr
GothicFont Goth.chr

 

Большинство стандартных шрифтом не содержат русских символов. Разработка же собственных шрифтов – довольно сложный и трудоемкий процесс. Он может быть ускорен, если воспользоваться специализированными пакетами TurboFont, BgiToolKit.

Установить нужный шрифт можно процедурой SetTextStyle(Font,d,c:word), где Font – выбранный шрифт, d – направление (горизонтальное или вертикальное), с – размер выводимых символов. Возможные значения двух первых параметров представлены в таблице 5. При организации вертикального вывода необходимо учитывать, что если не установить точку начала вывода с помощью MoveTo, то текст начинается с нижней строки экрана и продолжается вверх. Величина символов устанавливается коэффициентом с. Если с=1, то символ строится в матрице 8´8, если с= 2, то матрица 16´16 и т.д. до 10-кратного увеличения.

Например выведем 2 строки (вертикальную и горизонтальную) шрифтом DefaultFont разной величины:

SetTextStyle(0,11); {буквы стандартной величины}

OutTextXY(200,200, ‘Вертикальная строка’);

SetTextStyle(0,0,2); {размер букв увеличен}

OutTextXY(200,220, ‘Горизонтальная строка’);

Выравнивание текста

В некоторых случаях требуется в пределах одной строки выводить символы выше или ниже друг друга. Выравнивание текста выполняется с помощью процедуры SetTextJustify(Horiz, Vert: word) как по вертикали, так и по горизонтали посредством задания параметров Horiz и Vert (возможные значения в таблице 6).

Параметры выравнивания

Параметр Значение Комментарий
Горизонтальное выравнивание
LeftText   Выровнять влево
CenterText   Центрировать
RightText   Выровнять вправо
Вертикальное выравнивание
BottomText   Переместить вниз
CenterText   Центрировать
TopText   Переместить вверх

В качестве примера выведем x2:

SetTextJustify(1, 1);

OutTextXY(100,100, ‘X’);

SetTextJustify(1, 0);

OutTextXY(108,100, ‘2’);

 


Множества. Тип "множество" является одним из сложных типов данных системыпрограммирования Turbo Pascal 7.0. Тип "множество" является множеством всевозможных сочетаний объек-тов исходного порядкового типа. Число элементов исходного множества вTurbo Pascal не должно превышать 256. Все значения базового типа, об-разующие конкретные значения множественного типа, должны быть различ-ны. Порядок "расположения" элементов в множестве никак не фиксируется.Это соответствует принятой в математике трактовке множества как бес-повторной неупорядоченной совокупности объектов. Описание (декларация) типа множество. ------------------------------------- Для задания типа "множество" следет использовать служебные словаset и of, а затем указать элементы этого множества, как правило, в ви-де перечисления или диапазона, например: Type Alfa = set of 'A'..'Z'; Ten = set of 0..9; Count = set of (Plus, Minus); Введя тип "множество", можно задать переменные этого типа. Var CAlfa: Alfa; U233: Ten; Так же как и для других структурированных типов тип множествоможно задать непостредственно при задании переменных. Var CAlfa: set of 'A'..'Z' Operation: set of (Plus, Minus); U233: set of 0..9; C: set of char; Присвоение для переменных типа множество. ----------------------------------------- Множеству можно в программе присвоить то или иное значение. Обыч-но значение задаётся с помощью так называемого конструктора множества.Конструктор задаёт множество элементов с помощью перечисления в квад-ратных скобках выражений, значения которого дают элементы этого мно-жества. Допустимо использовать диапазоны элементов. CAlfa:= ['A', 'B', 'C']; C:= [chr(0)..chr(31), 'D', 'F']; В каждое множество включается и т.н. пустое множество [], не со-держащее никаких элементов. Конструктор множества можно использовать инепосредственно в операциях над множествами. Операции над множествами. --------------------------- Так же как и в математике в системе программирования Turbo Pascal7.0 над множествами применимы следующие операции: + - объединение множеств. C:= A+B; ------------------------------------ Каждый элемент множества C является элементом либо множества A,либо множества В. +---+ +---+ A+---+ ¦ААА¦ + ¦ВВВ¦ = ¦С+-+-+B ¦ААА¦ ¦ВВВ¦ ¦С¦С¦С¦ +---+ +---+ +-+-+С¦ +---+ - - разность множеств. C:= A-B; --------------------------------- Каждый элемент множества C является элементом множества A, но неявляется элементом множества В. +---+ +---+ A+---+ ¦ААА¦ - ¦ВВВ¦ = ¦С+-+-+B ¦ААА¦ ¦ВВВ¦ ¦С¦ ¦ ¦ +---+ +---+ +-+-+ ¦ +---+ * - пересечение множеств. C:= A*B; ----------------------------------- Каждый элемент множества C является элементом множества A и B од-новременно. +---+ +---+ A+---+ ¦ААА¦ * ¦ВВВ¦ = ¦ +-+-+B ¦ААА¦ ¦ВВВ¦ ¦ ¦С¦ ¦ +---+ +---+ +-+-+ ¦ +---+ = - проверка эквивалентности двух множеств. A = B; --------------------------------------------------- Множество A равно множеству B, если каждый элемент множества Aявляется элементом множества B, и наоборот, каждый элемент множества Bявляется элементом множества A. Результат операции логическая величи-на. <> - проверка неэквивалентности двух множеств. A <> B; ------------------------------------------------------- Множество A не равно множеству B, если множество A содержит хотябы один элемент, не являющийся элементом множества B, или (и) наобо-рот, множество B содержит хотя бы один элемент, не являющийся элемен-том множества A. Результат операции логическая величина. <= - проверка, является ли левое множество подмножетвом правого. ---------------------------------------------------------------- A <= B; Множество A является подмножеством множества B, если всеэлементы множества A являются элементами множества B. Результат опера-ции логическая величина. >= - проверка, является ли правое множество подмножеством левого. ----------------------------------------------------------------- A >= B; Действие операции аналогично действию предыдущей опера-ции. Результат операции логическая величина. in - проверка, входит ли элемент (слева) в множество (справа). -------------------------------------------------------------- C in B; Результат операции логическая величина. Примеры программ. ------------------ ПРИМЕР 1. --------- Из множества целых чисел 1..20 выделить: множество чисел, деля-щихся на 6 без остатка; множество чисел делящихся на 2 или на 3 безостатка. Вывести содержимое этих множеств на экран. Program a6_23; Var N6: set of integer; {множество чисел, делящихся на 6} N23: set of integer; {множество чисел, делящихся на 2 и 3} k: integer; {параметр цикла с параметром} Begin N6:= []; {"обнуление" множества N6} N23: = []; {"обнуление" множества N23} { формирование множеств ---------------------} For k:=1 to 20 do begin if k mod 6 = 0 then N6:= N6 + [k]; if (k mod 2 = 0) or (k mod 3 = 0) then N23:= N23 + [k]; end; { вывод содержимого множеств --------------------------} Writeln(' На 6 без остатка делятся числа: '); for k:=1 to 20 do if k in N6 then write(k:3); Writeln; Writeln(' На 2 или 3 без остатка делятся числа: '); for k:=1 to 20 do if k in N6 then write(k:3); Readln; { пауза } End. ПРИМЕР 2. --------- Ввести строку символов, состоящую из латинских букв цифр и пробе-лов. Осуществить проверку правильности введённых символов. Program Verify_string; Var s: string; m: set of char; k: integer; Done: boolean; Begin { формирование контрольного множества символов -------------------------------------------- } m:= [ '0'..'9', 'A'..'Z', 'a'..'z', ' ']; { ввод строки ----------- } Writeln(' Введите строку: '); Readln(s); { проверка правильности строки ---------------------------- } done:= true; for k:=1 to Length(s) do if not (s[k] in m) then done:= false; { вывод результата ---------------- } if done then writeln('Правильная строка. '); else writeln('Неправильная строка. '); Readln; { пауза } End.

 


 

Записи.

Запись представляет собой совокупность ограниченного числа логически связанных компонент, принадлежащих к разным типам. Компоненты записи называются полями, каждое из которых определяется именем. Поле записи содержит имя поля, вслед за которым через двоеточие указывается тип этого поля. Поля записи могут относиться к любому типу, допустимому в языке Паскаль, за исключением файлового типа.

Описание записи в языке Паскаль осуществляется с помощью служебного слова record, вслед за которым описываются компоненты записи. Завершается описание записи служебным словом end.

Например, телефонный справочник содержит фамилии и номера телефонов, поэтому отдельную строку в таком справочнике удобно представить в виде следующей записи:

type TRec = Record

FIO: String[20];

TEL: String[7]

end;

var rec: TRec;

Описание записей возможно и без использования имени типа, например:

var rec: Record

FIO: String[20];

TEL: String[7]

end;

Обращение к записи в целом допускается только в операторах присваивания, где слева и справа от знака присваивания используются имена записей одинакового типа. Во всех остальных случаях оперируют отдельными полями записей. Чтобы обратиться к отдельной компоненте записи, необходимо задать имя записи и через точку указать имя нужного поля, например:

rec.FIO, rec.TEL

Такое имя называется составным. Компонентой записи может быть также запись, в таком случае составное имя будет содержать не два, а большее количество имен.

Обращение к компонентам записей можно упростить, если воспользоваться оператором присоединения with.

Он позволяет заменить составные имена, характеризующие каждое поле, просто на имена полей, а имя записи определить в операторе присоединения:

with rec do оператор;

Здесь rec - имя записи, оператор - оператор, простой или составной. Оператор представляет собой область действия оператора присоединения, в пределах которой можно не использовать составные имена. Например для нашего случая:

with rec do begin

FIO:='Иванов А.А.';

TEL:='2223322';

end;

Такая алгоритмическая конструкция полностью идентична следующей:

rec.FIO:='Иванов А.А.';

rec.TEL:='2223322';

Инициализация записей может производиться с помощью типизированных констант:

type

RecType = Record

x,y: Word;

ch: Char;

dim: Array[1..3] of Byte

end;

 

const

Rec: RecType = (x: 127;

y: 255;

ch: 'A';

dim: (2, 4, 8));

 

Подробнее..

Особой разновидностью записей являются записи с вариантами, которые объявляются с использованием зарезервированного слова case. С помощью записей с вариантами вы можете одновременно сохранять различные структуры данных, которые имеют большую общую часть, одинаковую во все структурах, и некоторые небольшие отличающиеся части.

Например, сконструируем запись, в которой мы будем хранить данные о некоторой геометрической фигуре (отрезок, треугольник, окружность).

type

TFigure = record

type_of_figure: string[10];

color_of_figure: byte;

...

case integer of

1: (x1,y1,x2,y2: integer);

2: (a1,a2,b1,b2,c1,c2: integer);

3: (x,y: integer; radius: word);

end;

var figure: TFigure;

Таким образом, в переменной figure мы можем хранить данные как об отрезке, так и о треугольнике или окружности. Надо лишь в зависимости от типа фигуры обращаться к соответствующим полям записи.

Заметим, что индивидуальные поля для каждого из типов фигур занимают тем не менее одно адресное пространство памяти, а это означает, что одновременное их использование невозможно.

В любой записи может быть только одна вариантная часть. После окончания вариантной части в записи не могут появляться никакие другие поля. Имена полей должны быть уникальными в пределах той записи, где они объявлены.

 

Динамическая память

В IBM PC-совместимых компьютерах память условно разделена на сегменты. Компилятор формирует сегменты кода, данных и стека, а остальная доступная программе память называется динамической (хипом).

Динамические переменные создаются в хипе во время выполнения программы. Обращение к ним осуществляется через указатели. С помощью этих переменных можно обрабатывать данные, объем которых до начала выполнения программы не известен. Память под такие данные выделяется блоками, которые связываются друг с другом. Этот способ хранения данных называется динамическими структурами.


Дата добавления: 2015-08-13; просмотров: 93 | Нарушение авторских прав


Читайте в этой же книге: Введение в язык Паскаль. Структура программы на Паскале. | Строки. | Описание одномерных массивов. | Поиск элементов, удовлетворяющих заданному условию. | Алгоритм быстрой сортировки. | Многомерные массивы. | Длина строки. | Параметры-значения и параметры-переменные. | Устройства LРT1, LРT2, LРT3. | Ввод строки. |
<== предыдущая страница | следующая страница ==>
Цветовая шкала| Динамические переменные

mybiblioteka.su - 2015-2024 год. (0.016 сек.)