Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Структурные (структурированные) типыСодержание книги
Поиск на нашем сайте
· Массивы в Delphi и их характеристики. · Допустимые размерности. · Распределение массивов в памяти. · Объявление статических массивов В отличие от переменных простых типов, переменные структурных типов имеют более одного значения. К переменным структурного типа относят множества, массивы, записи, файлы. Массивы Массив представляет собой структуру данных, состоящую из совокупности данных под одним именем и одного типа. При этом каждая совокупность может иметь свой (допустимый в Delphi) тип. Характеристики массивов: · Имя. Формируется (как и для простых переменных) по правилам Delphi. · Тип хранимых элементов. · Размер (число хранимых элементов). · Нумерация элементов (порядковый номер элемента в массиве). · Размерность (число измерений). Распределение массивов в памяти (статическое и динамическое). Допустимые размерности: · Одномерные. · Многомерные. Объявление статических массивов Объявление одномерного массива: Var <имя массива>:array[<ограниченный тип>] of <тип элементов>; Примеры: Var Массив: array[1..15] of Integer; Var Символ: array[1..25] of chr; Var Строка: array[1..25] of String[15]; При работе со строковыми элементами необходимо указывать допустимую длину элементов. Массив можно определить следующим образом: Type color= (red, yellow, green); В качестве индекса выбран перечисляемый тип. Var Acol: array[color] of integer; Тогда обращение к элементам - к первому – Acol [red], ко второму -Acol [yellow] и к третьему соответственно - Acol[green]. Объявление массива можно совмещать с заданием элементам их начальных значений в том случае, если массив не является локальным, т. е. объявлен не в процедуре обработки события, а в разделе переменных модуля. В этом случае одновременно с объявлением массива можно выполнить его инициализацию. Объявление массива в общем виде выглядит так: Имя:array [нижний_индекс..верхний_индекс] of <тип> = (список); где список — разделенные запятыми значения элементов массива. Например: a: array[10] of integer = (0,0,0,0,0,0,0,0,0,0); b: array[1..5] of String[10]=('Зенит','Динамо','Спартак','Ротор','СКА'); Var Массив: array[0..10] of Integer=(1,2,3,4,5,6,7,8,9,10,11); Аналогично объявляется и типизированная константа: const A: array[1..5] of integer=(1,2,3,4,5); Примечание. Если статический массив создан, но заданы не все значения его элементам, то неиспользованные элементы принимают произвольные значения в занимаемой ими памяти, поэтому перед заполнением массива его следует обнулить. Для обработки статических массивов можно использовать в циклах следующие функции: Length(< идентификатор >) – возвращает количество элементов в массиве,, High(< идентификатор >) – возвращает самое большое значение индекса массива (равное Length -1), Low(< идентификатор >) - возвращает 0. Пример: for i:=0 to High(идентификатор) do <оператор>;
Способы обнуления массива, например, для массивов с именами MemoMas и ms: 1. For i:=1 to 25 do MemoMas[i]:=0; 2. Для другого массива- for i:=0 to High(ms) do ms[i]:=0;
Многомерные массивы Компактное объявление двумерного массива: Var BМассив: array[1.. 5,1..3] of Integer; Массив с элементами целого типа, расположенными в 5 строках и 3 столбцах(таблица). Данный двумерный массив может быть также объявлен следующим образом: Var BМассив: array[1.. 5] of array 1..3] of Integer; Динамическое распределение массива в памяти · Объявление и переопределение динамических массивов. · Действия над массивами. · Использование функций, определенных в модуле math. · Некоторые алгоритмы обработки динамических массивов. Объявление и переопределение динамических массивов Динамический массив в разделе объявлений содержит только ссылку на тип без указания размерности, например: var ms:array of integer; Далее, при выполнении процедуры, происходит переопределение массива с заданием его размерности с помощью процедуры: SetLength. Пример. SetLength(А,25), где выделяется место в памяти для 25 элементов массива А. В последующем возможно повторное применение указанной процедуры с изменением размера в сторону его увеличения или уменьшения. Var mas:array of integer; K,i:integer; Begin K:=5; SetLength(ms,k), // массив ms(0,0,0,0,0) For i:=0 to k do ms[i]:=i+1; // массив ms(1,2,3,4,5) K:=7; SetLength(ms,k), // массив ms(1,2,3,4,5,0,0) K:=3; SetLength(ms,k), // массив ms(1,2,3) K:=7; SetLength(ms,k), // массив ms(1,2,3,0,0,0,0) End; Для обработки статических и динамических массивов можно использовать в циклах следующие функции: Length(< идентификатор >) – возвращает количество элементов в массиве,, High(< идентификатор >) – возвращает самое большое значение индекса массива(равное Length -1), Low(< идентификатор >) - возвращает 0. Пример: for i:=0 to High(идентификатор) do <оператор>; Например, если в разделе объявлений указан динамический массив DMas: of array of integer; то в исполняемой части кода можно записать перераспределение памяти SetLength( DMas, 15 ); For i:= low( DMas) to High( DMas ) do …. далее выполнить соответственно алгоритму код. Действия над массивами: · Ввод массива; · Вывод массива; · Суммирование элементов массива. Поиск MAX и MIN и прочих статистических характеристик совокупностей среди элементов в массиве · Поиск заданного элемента и его порядкового номера в массиве · Сортировка по возрастанию и убыванию. · Присваивание значений в однотипных элементах и обработка многих других алгоритмов. Использование функций, определенных в модуле math Для числовых массивов допустимо использование следующих функций, определенных в модуле math:
Синтаксис обращения к функции:
Например: S:=SumInt(Massiv); Переменная S в данном примере должна быть объявлена целочисленной, как и имя массива – Massiv. Во всех случаях обращения к функциям должно выполняться соответствие между типами аргументов и результатов. Обработка массивов производится с помощью операторов цикла любой структуры (предпочтительнее - For). Ввод /вывод массива Значения элементов в массив могут быть введены/выведены различными способами, например из файла (в файл), используя в процессе работы с массивом различные компоненты, такие как: StringGrid, Memo, ListBox, а также кроме указанных выше компонентов для обработки массивов, можно использовать и однострочные редакторы Edit, а также Label для отображения массивов. Поиск в массиве заданного элемента При решении многих задач возникает необходимость определить, содержит ли массив определенную информацию или нет. Например, проверить, есть ли элемент массива, содержащий, определенный артикул товара. Задачи такого типа называются поиском в массиве. Для организации поиска в массиве могут быть использованы различные алгоритмы. Наиболее простой — это алгоритм простого перебора. Поиск осуществляется последовательным сравнением элементов массива с образцом до тех пор, пока не найдется элемент, равный образцу, или не будут проверены все элементы. Алгоритм простого перебора применяется, если элементы массива не упорядочены. Сортировка по возрастанию и убыванию Для сортировки массивов могут быть использованы различные алгоритмы: · Простым перебором; · Включениями (простыми, бинарными); · Обменом (простым, шейкер -сортировка); · Сортировка Шелла; · Сортировка подсчетом. Приложение 2. Задание 3. 1. Текст кода модуля проекта «Возраст» procedure TForm1.BitBtn1Click(Sender: TObject); var T1,T2:TDateTime; i:integer; Begin T1:=EnCodeDateTime(1984,10,15,0,0,0,300); T2:=EnCodeDateTime(2012,12,15,0,0,0,300); i:=YearsBetween(T2,T1); Label1.Caption:='Мне исполнилось'+' '+ IntToStr(i)+' лет'; end; procedure TForm1.BitBtn2Click(Sender: TObject); Begin Form1.Hide end; End. Задание 3. 2. Текст кода модуля проекта «Светофор» procedure TForm1.Button1Click(Sender: TObject); type tLightState=0..2; var LightState:tLightState; Begin label1.Caption:=''; LightState:=random(3); if LightState=0 then label1.Caption:= label1.Caption+ 'Цвет светофора:Red - Стоп!'; if LightState=1 then label1.Caption:= label1.Caption+ 'Цвет светофора:Yellov – Приготовься! '; if LightState=2 then label1.Caption:= label1.Caption+ 'Цвет светофора: Green-Поехали!'; end; procedure TForm1.BitBtn1Click(Sender: TObject); Begin form1.Hide; end; end. Задание 3. 3. Текст кода модуля проекта «Скорость движения» procedure TForm1.Button1Click(Sender: TObject); const MaxSpeed=100; var CurrentSpeed:integer; Begin Label1.caption:=''; CurrentSpeed:=60; //Начальная скорость While CurrentSpeed < MaxSpeed do Begin Label1.caption:=Label1.caption+'Вы едете со скоростью'+ IntToStr(CurrentSpeed)+'км/ч'+#13;
|
||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-04-08; просмотров: 305; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.214.16 (0.007 с.) |