| 12.02.2010, 17:42 | |
|
Ответы с готовыми решениями:
259
Создать дистрибутив для надстройки Word Excel 2000. Самокопирование надстройки при первом запуске Редактирование надстройки EXCEL |
|
1082 / 523 / 141
Регистрация: 27.02.2013
Сообщений: 1,508
|
|
| 04.05.2014, 16:57 | |
|
0
|
|
|
1082 / 523 / 141
Регистрация: 27.02.2013
Сообщений: 1,508
|
|
| 04.05.2014, 17:04 | |
|
Черно белое фото
0
|
|
|
1082 / 523 / 141
Регистрация: 27.02.2013
Сообщений: 1,508
|
|
| 04.05.2014, 17:13 | |
|
Коррекция цвета
0
|
|
|
1082 / 523 / 141
Регистрация: 27.02.2013
Сообщений: 1,508
|
|
| 04.05.2014, 19:22 | |
|
Анекдот программиста
0
|
|
|
|
|||||||||||
| 27.05.2014, 10:57 | |||||||||||
|
DllErr
нативная dll (используется без регистрации) для создания своих собственных обработчиков ошибки с описанием ошибки, дескриптором и источником Как использовать !? просто перенесите эту dll в свою папку, где будет находиться Ваш проект
Решил немного адаптировать под VBA перенесите эту dll в свою папку, где будет находиться Ваш документ
3
|
|||||||||||
|
|
|
| 27.05.2014, 11:08 | |
|
...
0
|
|
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 25.06.2014, 17:19 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Предлагаемая вашему вниманию статья дает краткий обзор массивов и операций над массивами, а также содержит проект "Библиотека AksiArrays".
Часть первая: "Введение в массивы" Вступление
С самого зарождения вселенной жизнь - это удивительное сочетание единственного и множественного чисел. Мы живем во вселенной, которую представляем единственным числом (хотя на самом деле очень даже может, что вселенных несколько, просто они существуют в параллельных измерениях), а внутри этой вселенной - множество солнц, планет, астероидов и других небесных объектов. На одной из планет - на планете Земля климатические условия оказались наиболее благоприятными для эволюции, и в итоге на ней возникло множество рыб, зверей, птиц и, наконец, людей. А каждый человек в свою очередь - мини-вселенная, состоящая из множества клеток организма, пищевых бактерий, помогающих нам усваивать пищу, и других микроорганизмов... Данный процесс перехода от единственного числа к множественному можно повторять, наверное, до бесконечности, и поэтому так важно, чтобы программы умели обрабатывать однородные совокупности, представленные множеством элементов. Необходимость в такой обработке привела к появлению в языках программирования массивов. Введем определение массива:
Если вернуться к нашей картине вселенной и рассмотреть массив планет Солнечной системы, то мы обнаружим, что все они имеют одинаковое имя (планета), но разные номера. Если вести отсчет планет от Солнца, то планетой №1 будет Меркурий, планетой №2 - Венера и т.д. Наша планета, Земля, в этом массиве займет третий номер. В памяти компьютера для массивов выделяется непрерывная область памяти, в которой элементы следуют непосредственно друг за другом. Благодаря этому доступ к каждому элементу массива осуществляется очень быстро: для этого компьютеру нужен лишь указатель на первый элемент массива (определяемый именем массива) и смещение искомого элемента массива относительно первого элемента (определяемое индексом элемента). Ввиду того, что область памяти, занимаемая массивом, выделяется заранее, массив перед его использованием необходимо объявить. Делается это с помощью ключевого слова Dim, которое расшифровывается как Dimension - "размерность". Данное ключевое слово было введено специально для объявления массивов, но, что любопытно, сейчас с его помощью объявляются не только переменные типа массив, но и все прочие переменные - настолько удобным оно оказалсь. Формат объявления статистического массива (есть еще динамические массивы, но они будут упоминаться позже - в спецглавах).
Здесь <имя_массива> - имя, под которым мы будем обращаться к элементам массива. Размер массива определяется так: количество элементов = <верхний_индекс> - <нижний_индекс> + 1. Таким образом, если мы определили массив как Dim arr(10), и не задавали Option Base, то массив arr будет содержать 10 - 0 + 1 = 11 элементов. <тип> - определяет тип элементов массива. Хотя его можно не указывать, лучше это сделать, так как в качестве типа элементов массива по умолчанию берется довольно ресурсоемкий тип Variant. Обратите внимание, что мы можем объявить несколько размерностей через запятую. Чаще всего объявляется массив с одной размерностью, который называется одномерным массивом, или вектором. Также применяются массивы с двумя размерностями (двухмерные массивы, или матрицы) и с тремя размерностями (трехмерные массивы, или кубы). Массивы с более чем тремя размерностями также возможны, но на практике применяются редко. Глава первая: "Одномерные массивы"
Подробный разбор массивов и их использования мы начнем с одномерных массивов, так как именно такие массивы чаще всего используются на практике. Мы помним, что общий формат объявления массивов таков:
Одномерные массивы имеют только одну размерность, поэтому формат их объявления короче:
Примеры объявления одномерного массива:
В первом примере объявляется массив целых чисел (массив элементов типа Long: тип Long определяет целые числа от -2147483648 до 2147483647). Нижняя граница массива равна 0, а верхняя - 9, таким образом, массив состоит из 9 - 0 + 1 = 10 элементов. Во втором примере объявляется массив, эквивалентный предыдущему в том случае, если опция Option Base установлена равной 0 или не установлена (так как по умолчанию считается, что массивы индексируются с нуля). Если же опция Option Base установлена равной 1, то будет объявлен массив, нижняя граница которого равна 1, а верхняя граница - 9. Ввиду подобной неоднозначности эту форму записи объявления можно рекомендовать к использованию только в личных проектах или программах, в которых значение опции Option Base точно известно. Если же проект выполяется в расчете на то, что им будут пользоваться другие лица, то, пожалуй, лучше будет использовать первую форму записи объявления массива. В третьем примере указание типа элементов массива опущено, поэтому элементы массива имеют тип Variant. Индексы массива, как и в первом примере, находятся в диапазоне от 0 до 9. Рассмотрим несколько задач, для которых характерно использование массивов: Задача №1
Предположим, что члены кружка природоведения дали нам набор показаний температуры, которые снимались ежедневно в течение января, и попросили составить программу, которая поможет проанализировать эти данные, например, определить среднюю температуру января. Будь количество измерений в наборе невелико, можно было бы, например, воспользоваться следующей программой:
Однако, наш набор показаний температуры состоит из 31 числа. И если бы мы воспользовались программой, подобной той, что приведена выше, нам пришлось бы объявить тридцать одну переменную. Соответствующие строки нашей программы оказались бы очень длинными и неудобными при вводе, кроме того, при вводе таких строк легко сделать ошибки. При небольшом наборе данных вполне приемлемо использовать несколько переменных для записи его элементов. Когда же набор данных большой, использовать такой подход явно неблагоразумно. Для того, чтобы преодолеть подобные трудности, мы и используем массивы. Вспомним основные правила использования массива:
Вернемся к задаче определения средней температуры января. Дадим массиву для записи ежедневных температур имя Т. Массив будет выглядеть так, как показано на следующей таблице:
Обратите внимание на то, что имена элементов массива отличаются лишь индексами. Поэтому мы можем обратиться ко всем его элементам, просто перебрав их индексы с помощью цикла For.
Благодаря массивам, нам удалось помочь членам кружка природоведения получить то, что они хотели! Задача №2
В классе 20 учащихся писали контрольную работу по математике. Составьте программу, которая помогла бы определить, сколько из них получили оценку 2, оценку 3, оценку 4, оценку 5. Решение: нам нужно осуществить поиск в массиве заданных чисел. Поиск - это одна из фундаментальных операций, производимых над наборами данных. В случае массива поиск производится путем перебора всех его элементов и их сравнения с заданным значением (или набором значений). Предположим, что классный журнал выглядит следующим образом:
Тогда программа перебора с поиском будет выглядеть примерно так:
Задача №3
Дан числовой массив, в котором записано 80 чисел. Найти наибольший элемент этого массива. Решение: для того, чтобы лучше понять решение этой задачи, представим себе следующую ситуацию. У нас имеется длинный-предлинный стол, и на нем разложены 100 камней, из которых нужно выбрать самый большой. Как это можно сделать? Берём первый камень и идем вдоль стола. Когда мы видим камень, который больше имеющегося у нас - мы заменяем старый камень новым, а старый - убираем. Если мы пройдем вдоль всего стола, перебрав все камни таким образом, то на финише у нас будет самый большой камень. Аналогичным образом можно поступить и при обработке числового массива. Сначала записываем в переменную для хранения максимального элемента первый элемент массива, затем сравниваем значения всех остальных элементов массива со значением этой переменной. Если какой-то из элементов массива окажется больше - запишем его значение в переменную, и т.д. Соответствующая программа будет иметь вид: Код программы
Задача №4
Дан массив размера N. Преобразовать этот массив таким образом, чтобы значения элементов этого массива не убывали. Решение: при решении задач с помощью компьютера, упорядочивание массивов приходится выполнять так часто, что по оценкам специалистов, более четверти времени работы компьютеров приходится на выполнение этого процесса, который называют также сортировкой. По этой причине для решения задачи сортировки с помощью компьютера придумано много различных алгоритмов, но мы для начала рассмотрим только один - «Метод пузырька». Суть этого метода состоит в следующем: просматриваем массив в порядке возрастания индексов элементов до тех пор, пока не найдём пару соседних элементов (индексы этих элементов отличаются на единицу), таких, что значение второго элемента меньше, чем значение первого: если такая пара найдена, то меняем местами значения этих элементов и продолжаем просмотр массива, пока не дойдём до элемента массива с наибольшим индексом. После такого просмотра значение этого элемента будет наибольшим. Следующий просмотр записывает в предпоследний элемент массива (элемент с индексом п-1) второе по величине значение. Очевидно, что повторение указанных действий n-1 раз приводит к упорядочиванию массива. Движение элементов в массиве, происходящее во время этого процесса, напоминает движение пузырьков воздуха в жидкости, откуда этот метод и получил свое название. Программа, реализующая этот метод, имеет следующий вид: Код программы
Итак, рассмотрев всего лишь несколько задач, мы пришли к выводу, что использование массивов позволяет значительно облегчить решение многих важных проблем, таких, как:
Кроме того, как будет показано во второй части статьи, решение рассмотренных задач можно еще более упростить, используя методы библиотеки AksiArrays.
4
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 25.06.2014, 17:20 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Глава вторая: "Многомерные массивы"
Многомерные массивы - это массивы, количество измерений в которых (а следовательно, и количество индексов) больше одного. Формат их объявления:
Примеры:
В первом примере объявляется массив с двумя измерениями, который также часто называют матрицей. Первое измерение матрицы имеет нижнюю границу 0 и верхнюю границу 3, а второе измерение матрицы имеет нижнюю границу 0 и верхнюю границу 4. Следовательно, матрица имеет 3 - 0 + 1 = 4 строки и 4 - 0 + 1 = 5 столбцов. Всего матрица имеет 4 * 5 = 20 элементов (количество строк умножаем на количество столбцов, получаем колчество элементов матрицы). Во втором примере приводится сокращенная запись объявления матрицы из первого примера (в предположении, что опция Option Base установлена равной 0 или не установлена). В третьем примере объявляется массив с тремя измерениями: его можно называть кубом. При этом куб содержит 2 - 0 + 1 = 3 элемента вдоль своего первого измерения, 3 - 0 + 1 = 4 элемента вдоль второго измерения и 4 - 0 + 1 = 5 элементов вдоль третьего измерения. Всего получается 3 * 4 * 5 = 60 элементов. На практике среди многомерных массивов чаще всего встречаются двухмерные (матрицы) - их мы рассмотрим более подробно. Также в статье мы кратко коснемся трехмерных массивов (кубов), а многомерные массивы, число измерений которых более трех, рассматривать не будем. Итак, двухмерные массивы отличаются от одномерных тем, что обладают одним дополнительным измерением. Что это дает нам? В-первых, мы можем анализировать данные сразу по двум параметрам. Например, в задаче №2 из предыдущей главы можно было бы организовать классный журнал в виде двумерного массива, где по строкам откладываются фамилии учащихся, а по столбцам - предметы. И тогда, проанализировав всего лишь один массив, мы можем подвести итоги не только по математике, но и, допустим, по русскому языку и литературе. Ниже - пример программы, которая за один проход по матрице определяет как среднюю оценку учащихся по каждому предмету, так и средний балл каждого учащегося по всем предметам. Задача №5
В классе 20 учащихся и 3 предмета (например, математика, русский язык и литература). Определить среднюю оценку каждого учащегося и среднюю оценку по каждому предмету. Решение: объявим матрицу, количество строк которой равно количеству учащихся, а количество столбцов - количеству предметов. Далее объявим цикл обработки строк и внутри этого цикла будем обрабатывать элементы, находящиеся на пересечении исследуемой строки и каждого из столбцов матрицы. Обратите внимание, что цикл обработки столбцов матрицы вложен в цикл обработки ее строк. При обработке многомерных массивов использование вложенных циклов - обычное дело. Код программы
Во-вторых, наличие дополнительного измерения придает матрице форму. У нее появляется как бы своя "география". Например, можно говорить об обходе матрицы по строкам, обходе по столбцам и даже обходе по спирали. В случае квадратной матрицы очень часто говорят о следующих "географических объектах":
Если нужно обработать подобный "географический объект", то можно пойти двумя путями. В-первых, можно перебрать все элементы матрицы и в ходе перебора проверять, удовлетворяют ли они определению обрабатываемого географического объекта. Если удовлетворяют - производим необходимую обработку. Достоинством такого пути является простота понимания и, соответственно, реализации. А недостатком - неэффективность (приходится перебирать все элементы матрицы помимо интересущих нас). Во-вторых, можно построить цикл (циклы) таким образом, чтобы они проходили только по интересующим нас объектам. Этот путь более эффективен, но реализовать его для таких географических объектов, как треугольники матрицы, не так просто: нужно четко представлять себе, как определяются в каждом случае начальные и конечные значения переменных цикла. Начинающим трудно освоить такой путь. Рассмотрим задачу, в которой стоит задача обработки "географических объектов" матрицы: Задача №6
Выяснить, насколько максимальный элемент в треугольнике над главной диагональю больше минимального элемента в треугольнике под главной диагональю. Решение: будем использовать первый подход из вышеизложенных - полный перебор с проверкой определения треугольника. Код программы
Подведем итог: матрицы, с одной стороны, значительно расширяют область применения массивов, а с другой - требуют большего объема программирования. К счастью, замечательные способности библиотеки AksiArrays по агрегированию данных и по ориентации в географии матрицы значительно облегчат вам задачу разработки приложений, обрабатывающих данные с использованием матриц. Как обещалось, упомянем про трехмерные массивы. Они применяются в основном тогда, когда требуется обрабатывать объекты физической природы. Нахождение формы и положения тела в пространстве, расчет электромагнитных и гравитационных полей, определение энергии излучения или освещенности поверхности в той или иной точке - все эти задачи требуют применения трехмерных массивов. Без успешного решения проблем обработки трехмерных массивов были бы невозможны такие достижения современности, как разработка трехмерных графических редакторов (примеры: AutoCAD, 3D Max) или появление роботов, способных ориентироваться в пространстве (пример: робот-собака Aibo, которая способна следовать за хозяином по сложным трехмерным объектам наподобие лестницы в доме). Спецглавы по массивам
Изложенная здесь информация с равным успехом может быть применена как к одномерным, так и к многомерным массивам. Было принято решение не относить ее к одной из предыдущих глав, а выделить в отдельную главу. Динамические массивы
Основное преимущество статических массивов - то, что память под элементы этих массивов выделяется заранее. Таким образом, обеспечивается максимально быстрая скорость доступа к данным и их обработка. Но иногда возникают задачи, в которых мы не знаем заранее, сколько элементов надо выделять. В таком случае массив объявляется без размерности:
В объявлении <имя_массива> - это имя, под которым мы будем обращаться к элементам массива, а <тип> - тип элементов массива. Когда мы определились относительно количества элементов в массиве, нам нужно выделить необходимый для их хранения объем памяти с помощью оператора ReDim.
Здесь ReDim - ключевое слово, дающее указание интерпретатору перераспределить память, выделенную под динамический массив (если память для него уже выделялась), либо выделить под него новый участок памяти (если память выделяется в первый раз). Ключевое слово Preserve означает, что при перераспределении памяти, выделенной под динамический массив, значения, которые в нем хранятся, должны быть сохранены (перенесены в новый участок памяти). Если это ключевое слово не указать, то при перераспределении памяти вся информация, которая хранилась в динамическом массиве, будет утеряна, а сам массив будет проинициализирован значениями по умолчанию. <имя_массива> - имя массива, для которого мы производим выделение/перераспределение памяти. После выделения памяти динамический массив готов к употреблению. Освободить выделенную под него память можно с помощью ключевого слова Erase.
Память будет освобождена для массива с именем <имя_массива>. В библотеке AksiArrays, построенной именно на динамических массивах, для аналогичной ключевому слову ReDim цели используются процедура Init. Функция Array
Array - это удобная функция, которая выполняет сразу несколько задач:
Формат вызова функции Array:
где <значение_1>, <значение_2> ... <значение_N> - список значений, которыми функция инициалирует массив. Вызов функции без параметров, т.е. следующим образом:
Эквивалентен объявлению динамического массива типа Variant:
Если же в функцию переданы параметры, то она, в-первых, выделяет в динамическом массиве объем памяти, необходимый для хранения всех значений, переданных в качестве параметров. А, во-вторых, присваивает эти значения элементам массива. Таким образом, следующий вызов:
Заменяет следющие строчки кода:
Как видите, экономия кода налицо. Отметим, что <Option_Base_Value> - это значение, заданное опцией Option Base (если опция не использована, то это значение равно нулю). Что касается библиотеки AksiArrays, то в ней для быстрой и удобной инициализации массива используется ряд методов, начинающихся с префикса GetData_. Определение границ массива: функции LBound и UBound
Функция LBound используется для определения минимального индекса, доступного в массиве (т.е. его нижней границы). Функция UBound используется для определения максимального индекса, доступного в массиве (верхней границы массива). Функции имеют следующий синтаксис:
где <имя_массива> - имя массива, для которого требуется определить нижнюю (верхнюю) границу. Копирование значений из одного массива в другой
В старых версиях VBA для копирования значений из одного массива в другой приходилось писать цикл For...Next или For Each...Next. Версии VBA, начиная с версии 6.0, предлагают для этого более удобный способ, который выглядит точно так же, как присваивание одной переменной значения другой переменной. Но при этом налагаются следующие ограничения:
Пример использования данного способа копирования значений:
Заключение
Мы начали со сравнения, отражающего предположение автора о том, что могло вдохновить людей на изобретение массивов, и затем изучили эти массивы во всей их красе и многообразии - и одномерные, и многомерные, и статические, и динамические. Был рассмотрен ряд примеров использования массивов, а также несколько полезных вспомогательных функций для работы с ними. По изложенному материалу можно видеть, насколько удобным и эффективным инструментом для решения большинства повседневных задач программирования являются массивы. Библиотека AksiArrays, обсуждаемая в следующей части, призвана сделать этот инструмент еще более мощным и удобным. Часть вторая: "Обзор библиотеки AksiArrays" Вступление
Участвуя во многих темах и обсужениях раздела VBA, автору не раз приходилось замечать, что большинство из них так или иначе связаны с применением массивов. Кроме того, массивы являются популярной темой студенческих заданий. О чем говорить, если поиск слова "массив" только в одном разделе форума (в разделе VBA) выдает упирающееся в лимит количество результатов? В ходе решения упомянутых задач часто приходится писать повторяющийся или почти повторяющийся код. Это натолкнуло на мысль создать библиотеку, которая позволила бы заменить написание такого кода вызовами подходящих функций/процедур. Однако написание такой библиотеки представлялось весьма трудоемкой и скучной задачей. И тут очень кстати в ходе самообразования автор изучил статью про пользовательские классы объектов. Идея библиотеки воедино с возможностью освоить пользовательские классы объектов на серьезном практическом материале оказались достаточным вызовом, чтобы взяться за работу. Надо сказать, вызов оказался более чем достойным! На труд в перерывах между основной работой было потрачено полгода, и то этого оказалось недостаточно, чтобы реализовать все имевшиеся задумки. А что же тогда удалось реализовать, спросите вы? Об этом и пойдет разговор в следующих главах.
3
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
|
| 25.06.2014, 17:20 | |
|
О структуре библиотеки AksiArrays
Итак, библиотека AksiArrays, как вы уже, наверное догадались из вступления, основана на пользовательских классах объектов. Их довольно много, но каждый из них можно отнести к одной из трех основных групп:
Каждая из этих групп подробно рассматривается в следующих главах.
2
|
|
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
||||||
| 25.06.2014, 17:21 | ||||||
|
Глава первая: "Обзор базовых структур массивов"
Как уже говорилось, базовые структуры массивов организуют данные в определенном порядке. Задача организации данных в виде одномерного массива возложена на класс AksiVector, в виде двухмерного массива - на класс AksiMatrix, и, наконец, задача организации трехмерного массива возложена на класс AksiCube. Листинги для этих классов приводится ниже: Код класса AksiVector
2
|
||||||
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
||||||
| 25.06.2014, 17:21 | ||||||
|
Глава первая: "Обзор базовых структур массивов" (продолжение)
Код класса AksiVector (продолжение)
2
|
||||||
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
||||||
| 25.06.2014, 17:23 | ||||||
|
Глава первая: "Обзор базовых структур массивов" (продолжение)
Код класса AksiVector (продолжение)
2
|
||||||
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
|||||||||||
| 25.06.2014, 17:24 | |||||||||||
|
Глава первая: "Обзор базовых структур массивов" (продолжение)
Код класса AksiVector (продолжение)
Код класса AksiMatrix
1
|
|||||||||||
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
||||||
| 25.06.2014, 17:26 | ||||||
|
Глава первая: "Обзор базовых структур массивов" (продолжение)
Код класса AksiMatrix (продолжение)
2
|
||||||
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
||||||
| 25.06.2014, 17:27 | ||||||
|
Глава первая: "Обзор базовых структур массивов" (продолжение)
Код класса AksiMatrix (продолжение)
2
|
||||||
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
||||||
| 25.06.2014, 17:27 | ||||||
|
Глава первая: "Обзор базовых структур массивов" (продолжение)
Код класса AksiMatrix (продолжение)
2
|
||||||
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
||||||
| 25.06.2014, 17:28 | ||||||
|
Глава первая: "Обзор базовых структур массивов" (продолжение)
Код класса AksiCube
3
|
||||||
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
||||||
| 25.06.2014, 17:29 | ||||||
|
Глава первая: "Обзор базовых структур массивов" (продолжение)
Код класса AksiCube (продолжение)
3
|
||||||
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
||||||
| 25.06.2014, 17:31 | ||||||
|
Глава первая: "Обзор базовых структур массивов" (продолжение)
Код класса AksiCube (продолжение)
2
|
||||||
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
||||||
| 25.06.2014, 17:32 | ||||||
|
Глава первая: "Обзор базовых структур массивов" (продолжение)
Код класса AksiCube (продолжение)
Исследовав вышеприведенные листинги, вы прежде всего можете отметить самые важные свойства базовых структур массивов:
Кроме того, базовые структуры массивов осуществляют управление данными, что включает выделение памяти, необходимой для их хранения, освобождение этой памяти, ввод-вывод данных, их обработку. Сначала, конечно, выполняется операция выделения памяти, необходимой для хранения элементов массива. Для этого базовые структуры массивов представляют процедуру Init, которая представлена в трех версиях - по одной для каждой структуры, но все эти версии по логике очень схожи: они принимают на вход шаблон элемента и размерность (размерности) массива, а в ходе работы размещают в памяти массив ссылок на объекты того же класса, что и класс объекта-шаблона. Помимо выделения памяти для массива, довольно востребованной операцией является ввод-вывод данных в массив, и не случайно при разработке библиотеки AksiArrays было уделено столько внимания методам ввода-вывода данных. Их вы можете легко распознать по приставкам GetData_ (методы для ввода данных в массив) или PutData_ (методы для вывода данных из массива). После ввода данных в массив их можно обработать с использованием процедур сортировки, поиска максимума/минимума, вычисления суммы и произведения элементов, а также ряда других методов.
2
|
||||||
| 25.06.2014, 17:32 | |
|
Надстройки AddIns. Кто-нибудь работал с этим? Функция из надстройки приводит к ошибке: ошибка: "Sub or Function not defined"
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов.
Логика кажется понятной:
1. Находим ключевые слова.
2. Добавляем их на. . .
|
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302
Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
|