Создание и обработка массивов.

 

Цель: Совершенствование приложения. Изучение методов создания и обработки массивов. Табулирование функции в массив и печать из массива.

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

 

Краткие теоретические сведения.

 

Можно отметить два недостатка проекта, разработанного в лабораторной работе № 3:

· если объем таблицы превышает размеры окна формы Form2, не поместившаяся часть таблицы просто теряется и ее нельзя никак увидеть, т.к. в проекте не предусмотрена работа с полосами прокрутки;

· при изменении размеров окна с таблицей ее содержимое не приводится в соответствие с новыми размерами.

Данная работа нацелена на устранение этих недостатков.

В форму Form2 включается вертикальная полоса прокрутки VscrollBar (горизонтальная полоса используется аналогично). В процедуре обработки события Change, возникающем при изменении позиции бегунка в полосе прокрутки, осуществляется перерисовка формы в соответствии с новой позицией бегунка. Позиция бегунка определяется значением его свойства Value. Диапазон прокрутки (т.е. минимальное и максимальное значения позиции Value) определяются значениями свойств Max и Min соответственно. Если величину этого диапазона определить равной количеству строк в таблице, то можно связать позицию бегунка в полосе с номером первой выводимой на экран строки, перерисовывая форму каждый раз при изменении позиции бегунка.

Перерисовка формы осуществляется также и в процедуре обработки события Resize формы, которое возникает при любом изменении размеров формы (т.е. ее окна).

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

Вывод таблицы на экран осуществляется в другой процедуре – PrntFunc (печать таблицы значений функции).

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

Массив – это структура, состоящая из фиксированного числа компонент одного типа, каждый из которых имеет свой порядковый номер, называемый индексом. Массив характеризуется своим именем и размерностью. Описывается с помощью инструкции Dim или Public с указанием в круглых скобках после имени массива его границ - максимального индекса (или через запятую максимальных индексов, если их несколько):

 

Public │Dim <имя> (<границы>) As <тип>

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

Если при объявлении массива его размер неизвестен, следует использовать динамический массив, что позволяет изменять размер массива в процессе выполнения приложения. Динамический массив создается в два этапа. Cначала в cекции (General) (Declaration) контейнера (формы или модуля) массив определяется без указания размера (но пустые скобки должны присутствовать). Затем с помощью оператора Redim устанавливается фактический размер массива:

 

Redim <имя> (<границы>)[As<тип>]

 

В отличие от обычного Dim оператор Redim используется только в процедурах. При этом тип данных указывать необязательно, если он уже определен в операторе Dim.








Дата добавления: 2014-11-29; просмотров: 927;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.