- •1. Нарисуйте и опишите структуру главного окна системы Delphi. Для чего нужно окно инспектора объектов и как им пользоваться?
- •2. Объясните назначение окна формы. Как на нём размещать компоненты и настраивать их параметры?
- •4. Что собой представляет программа решения задачи в системе Delphi? Как организуются процедуры обработки событий: «щелчок мыши на кнопке», «создание формы»?
- •8. Как запустить программу? Как работать с программой? Как остановить программу для её редактирования?
- •9. Какие файлы содержит программа, их структура? Как организовать запись программы в отдельный каталог? Как создать новый каталог?
- •12. Приведите примеры схем циклических алгоритмов и их программ с использованием оператора repeat.
- •13. Приведите примеры схем циклических алгоритмов и их программ с использованием оператора while.
- •14.Приведите примеры схем циклических алгоритмов и их программ с использованием оператора for.
- •15.Как организуется работа с массивами в языке Pascal: описание, обращение к элементам, операции над массивами? Проиллюстрируйте на примерах.
- •16. Понятия статического и динамического распределения памяти. Что такое указатель? Операции над указателями. Что такое динамическая переменная? Наложение переменных с помощью указателя.
- •17. Понятие множеств в языке Pascal. Как они описываются? Какие операции над ними допустимы? Привести примеры их полезного использования.
- •18. Что такое строки в языке Pascal? Как они описываются, что такое текущая и максимальная длина строки? Опишите процедуры и функции обработки строк.
- •Var [описание используемых переменных];
- •Var [описание используемых переменных];
15.Как организуется работа с массивами в языке Pascal: описание, обращение к элементам, операции над массивами? Проиллюстрируйте на примерах.
Массив- упорядоченный набор однотипных элементов, объединенных под одним именем. Характеризуются они следующим: -каждый компонент массива может быть явно обозначен и к нему имеется прямой доступ; -число компонент массива определяется при его описании и в дальнейшем не меняется.
Каждый элемент массива обозначается именем, за которым в квадратных скобках следует один или несколько индексов, разделенных запятыми, например: a[1], bb[I], c12[I,j*2], q[1,1,I*j-1]. В качестве индекса можно использовать любые порядковые типы за исключением LongInt. Чаще всего используется интервальный тип (диапазон).
Тип массива или сам массив задается соответственно в разделе типов (Type) или переменных (Var) с помощью следующей конструкции:
Type
имя типа = Array [описание индексов] of <тип элемента массива>, где имя типа - правильный идентификатор; описание индексов - список одного или нескольких индексных типов, разделенных запятыми; тип - любой тип данных. Вводить и выводить массивы можно только поэлементно.
Пример 1 описания массивов:
Const N=20; // Задание максимального значения индекса;
Type TVector=array[1..N] of word; // Описание типа одномерного массива;
Var a:TVector; // А – массив типа TVector;
Ss:array[1..10] of integer; // Ss – массив из десяти целых чисел;
Y:array[1..5,1..10] of char; // Y – двумерный массив символьного типа.
Элементы массивов могут использоваться в выражениях так же, как и обычные переменные, например:
F:=2*a[3]+a[ss[4]+1]*3;
a[n]:=1+sqrt(abs(a[n-1]));
При работе с массивами ввод и вывод информации на экран удобно организовывать в виде таблиц. Компонент TStringGrid предназначен для отображения информации в виде двумерной таблицы, каждая ячейка которой представляет собой окно однострочного редактора (аналогично окну TEdit). Доступ к информации осуществляется с помощью свойства Cells[ACol, ARow:Integer]: string, где ACol, Arow - индекс элемента двумерного массива. Свойства ColCount и RowCount устанавливают количество строк и столбцов в таблице, а свойства FixedCols и FixedRows задают количество строк и столбцов фиксированной зоны. Фиксированная зона выделена другим цветом, и в нее запрещен ввод информации с клавиатуры.
Пример 1. Ввод и вывод одномерного массива.
const
n = 5;
type
mas = array[1..n] of integer;
var
a: mas;
i: byte;
begin
writeln('введите элементы массива');
for i:=1 to n do readln(a[i]);
writeln('вывод элементов массива:');
for i:=1 to n do write(a[i]:5);
end.
Определить переменную как массив можно и непосредственно при ее описании, без предварительного описания типа массива, например:
var a,b,c: array[1..10] of integer;
Если массивы a и b описаны как:
var
a = array[1..5] of integer;
b = array[1..5] of integer;
то переменные a и b считаются разных типов. Для обеспечения совместимости применяйте описание переменных через предварительное описание типа.
Если типы массивов идентичны, то в программе один массив может быть присвоен другому. В этом случае значения всех переменных одного массива будет присвоены соответствующим элементам второго массива.
Вместе с тем, над массивами не определены операции отношения. Сравнивать два массива можно только поэлементно.
Так как тип, идущий за ключевым словом of в описании массива, - любой тип Турбо Паскаль, то он может быть и другим массивом. Например:
type
mas = array[1..5] of array[1..10] of integer;
Такую запись можно заменить более компактной:
type
mas = array[1..5, 1..10] of integer;
Таким образом возникает понятие многомерного массива. Глубина вложенности массивов произвольная, поэтому количество элементов в списке индексных типов (размерность массива) не ограничена, однако не может быть более 65520 байт.
Работа с многомерными массивами почти всегда связана с организацией вложенных циклов. Так, чтобы заполнить двумерный массив (матрицу) случайными числами, используют конструкцию вида:
for i:=1 to m do
for j:=1 to n do a[i,j]:=random(10);
Для "красивого" вывода матрицы на экран используйте такой цикл:
for i:=1 to m do begin
for j:=1 to n do write(a[i,j]:5);
writeln;
end;