Пожалуйста, не блокируйте рекламу!

0 Пользователей и 1 Гость просматривают эту тему.

*

Оффлайн iamdi

  • начинающий
  • *
  • 13
  • Репутация: +1/-0
  • Пол: Мужской
  • арх-р с глубинки
Массивы
« : Января 31, 2010, 17:11:06 »

Test

Как пользоваться, для чего они, и прочее...Уж очень тяжко с ними ...или (что более вероятно) я туплю




Информация от модератора.
Другие темы про массивы:
- Как изменить размерность массива ?
- Создание массива с переменным числом значений
- Сложение элементов массива
« Последнее редактирование: Марта 30, 2013, 20:00:50 от Valery W »

*

Оффлайн ALAKK

  • *****
  • 625
  • Репутация: +55/-7
  • Пол: Мужской
  • Он спорил с модером...
Re: Массивы
« Ответ #1 : Февраля 01, 2010, 11:58:25 »
Никакой тупости - просто ты немного не в курсе и, видимо, давно забыл школьный курс математики, где рассказывали о матрицах.
Для простоты понимания применительно к программированию: это форма хранения однотипной (как правило) информации. Сложного тут нет ничего.
ГДЛ позволяет хранить в массивах только один тип информации - либо численный, либо символьный. Некоторые другие языки позволяют описать массивы смешанного типа, включая фотоизображения и ппрочие удовольствия, наиболее мощные (языки более низкого уровня) позволяют запихать в массив описание любимой тещи со всеми ее закидонами.
Массивы хранятся в мозгах компа при загрузке проги (объекта ГДЛ в нашем понимании) и доступны всегда без дополнительного обращения. Поэтому они работают быстрее, чем всякие прочие примочки, типа внешних подпрограмм или внешних файлов с данными. Размеры массивов (многомерность) и их число не ограничено.
« Последнее редактирование: Февраля 01, 2010, 13:05:29 от ALAKK »

*

Оффлайн Valery W

  • *****
  • 5987
  • Репутация: +634/-14
  • Пол: Мужской
Re: Массивы
« Ответ #2 : Февраля 22, 2010, 13:43:48 »
ГДЛ позволяет хранить в массивах только один тип информации - либо численный, либо символьный.

Это если запись массива происходит в окне "Параметры". Там не смешанные типы параметров. А если параметр с массивом записывать в скрипте, то можно смешивать. Помнится, где-то это обсуждали.

*

Оффлайн ALAKK

  • *****
  • 625
  • Репутация: +55/-7
  • Пол: Мужской
  • Он спорил с модером...
Re: Массивы
« Ответ #3 : Февраля 22, 2010, 17:41:56 »
Валера. Ничего не перепутал?
А если параметр с массивом записывать в скрипте, то можно смешивать. Помнится, где-то это обсуждали.
Найди, плз
Очень интересно. Никогда такого не получалось и Н. Кол об этом писал. Найди, пож, кто делал.
Просто бейсик всегда был одномерным языком - непонятно как такое в нем можно сделать, если не прибегать к предварительной обработке инфы и обработке после ее поднятия из массива в скрипте

*

Оффлайн Valery W

  • *****
  • 5987
  • Репутация: +634/-14
  • Пол: Мужской
Re: Массивы
« Ответ #4 : Февраля 22, 2010, 21:14:49 »
Навряд ли уже найду.

Но вот из Справочного руководства GDL.

глава: СИНТАКСИС GDL: ПРОИЗВОДНЫЕ ТИПЫ
"Массивами называются одномерные или двумерные таблицы числовых и/или строковых значений, каждое из которых имеет свой индекс, посредством которого и осуществляется доступ."

Видишь, "и" тут поставили?

А тут говорят, что элементы массива могут быть любого простого типа, но тип всего массива определяется по первому элементу. Ну и в конце оговорка есть.

ВЫРАЖЕНИЯ И ФУНКЦИИ: DIM
"Элементы массива могут быть любого простого типа (числовой, строковый, группа). Тип всего массива (‘основной’ тип) - это тип его первого элемента ([1] или [1][1]). Массивы параметров и глобальных переменных не могут быть смешанного типа."


*

Оффлайн ALAKK

  • *****
  • 625
  • Репутация: +55/-7
  • Пол: Мужской
  • Он спорил с модером...
Re: Массивы
« Ответ #5 : Февраля 23, 2010, 04:53:20 »
Я читаю это абсолютно иначе.
Неплохо бы пример
Разбирал много скриптов других написателей, в том числе и сложных ссылочных, типа "Бревен". Нигде такого чуда не видал.
Если ты имеешь в виду массивы, объявленные непосредственно в скрипте, то они в любом случае преобразуются в одномерные с прямыми простыми ссылками друг на друга. Это как взаимная индексация таблиц. Чудес тут, к сожалению, не бывает...

*

Оффлайн Valery W

  • *****
  • 5987
  • Репутация: +634/-14
  • Пол: Мужской
Re: Массивы
« Ответ #6 : Февраля 23, 2010, 09:03:25 »
Да, я имел ввиду массивы, объявленные непосредственно в скрипте.

*

Оффлайн Александр Ани

  • ****
  • 412
  • Репутация: +78/-0
  • Архитектор
Re: Массивы
« Ответ #7 : Февраля 23, 2010, 10:08:23 »
Александр и Валерий, а я как раз в последних разработках заметил, что предварительно определить одну ячейку массива, например, числовой, то он все-равно другую может за текстовую считать и наоборот. Долго мучился, пока не понял вышесказанное про массивы, объявленные в скрипте.

*

Оффлайн Sahasg552

  • ***
  • 153
  • Репутация: +43/-0
  • Пол: Мужской
  • Глупый кот
Re: Массивы
« Ответ #8 : Декабря 24, 2012, 11:44:12 »
Немного начал разбираться в массивах, и возник такой вопрос. Создал массив данных st для массива диаметров цилиндра, один столбец, несколько строк с данными. dia - диаметр цилиндрав окне параметров завожу:
values "dia" st[1][1], st[2][1]  ...
if dia=st[1][1] then i=1
if dia=st[2][1] then i=2
...
parameters dia=st[ай][1]
скрипт параметров выдает ошибку "использование типов real может привести к проблемам...". Я понимаю, что значит эта ошибка, она не критична, но немного напрягает. Можно ли как то обойти этот момент?
« Последнее редактирование: Марта 30, 2013, 19:43:56 от Valery W »

*

Оффлайн Sahasg552

  • ***
  • 153
  • Репутация: +43/-0
  • Пол: Мужской
  • Глупый кот
Re: Массивы
« Ответ #9 : Апреля 15, 2013, 19:53:15 »
Люди добрые, отзовитесь. Пытаюсь создать редактируемый многоугольник в плоскости. В данный момент идет борьба с хотспотами. Создал массив с координатами X и Y для контура многоугольника, хотспоты по углам редактируются как положено. Создаю массив с координатами центров сегментов многоугольника (для дальнейшего добавления новых точек редактирования). Все точки центров вроде выставляются правильно, но при редактировании первого угла многоугольника последняя центральная точка не реагирует. Реагирует только на редактирование предпоследнего (4-го) угла.
Понимаю, что звучит, как ахинея, прилагаю скрины, надеюсь поймете о чем я.

*

Оффлайн Александр Ани

  • ****
  • 412
  • Репутация: +78/-0
  • Архитектор
Re: Массивы
« Ответ #10 : Апреля 16, 2013, 20:05:55 »
Понимаю-понимаю...

процесс сложен,  для начала я опишу к чему пришли мои долгие опыты. Сами объекты смотри на сайте. Их много.
http://alexander-ani.narod.ru/biblio_ani/biblio_ani.html (прошу прощения, сегодня русское описание на сайте глючит, но скачать кликнув по картинкам можно) Возьми фигурное окошко, например, или "по пути Ани". Они отлажены были хорошо, и внутри упорядочен скрипт.

Чтобы точки себя вели правильно, мне пришлось пользоваться следующим алгоритмом:

а. мастер скрипт проходит обработку за два раза. в своих скриптах я отсеиваю двойные действия созданием переменной dummy, которая либо 1 либо 0. первый или второй проход.

б. мне пришлось создать массив-дубляж точек. Каждый раз после передвижки все точки запоминаются-дублируются. таким образом отсеиваются передвижения "зависимых" точек от "пользовательского" передвижения.
В первом проходе скрипта проверяются все изменения точек относительно дубляжа.  Во втором все записывается в массив-дубляж.

в. Координаты точек в отдельном массиве, нумерация по кругу в отдельном. Т.е изначально 1-2-3-4. Затем вставляем внутрь и получим 1-2-5-3-4. Затем удалим что-нибудь. Получим 1-5-3-4. Порядок точек прописывается в отдельной переменной. 
 Это позволяет промежуточной точке с тем же номером превратиться в угловую, перепрописавшись в общем списке-массиве.

Г. Если двигаем угловую точку, то обращаемся в под функцию (gosub ...), передавая ей предыдущий и последующий промежуточные номера, а также соседние угловые точки Далее функция изменяет координаты этих точек в соответствии с заложенным алгоритмом (находит середину).
Вот тут-то и ответ на заданный вопрос: при крайних угловых точках (первой или последней) в качестве соседней надо указывать другую с конца (последнюю или первую), а возможно и другую промежуточную. Все зависит от твоего списка-массива номеров точек.

*

Оффлайн Sahasg552

  • ***
  • 153
  • Репутация: +43/-0
  • Пол: Мужской
  • Глупый кот
Re: Массивы
« Ответ #11 : Апреля 17, 2013, 09:42:19 »
Спасибо, Александр. С вашими объектами знаком, и когда возникла задача создать редактируемый многоугольник, первым делом стал копаться в ваших объектах (надеюсь это не возбраняется =)). Для меня это был темный лес, до того, как вы написали пост выше. Теперь все более менее ясно. Но пока ожидал ответа, решил заново перестроить код, сейчас более менее выходит то, что задумывалось, алгоритм немного отличается от вашего. Позже выложу, буду очень признателен, если укажете на недочеты и ошибки. 

*

Оффлайн Sahasg552

  • ***
  • 153
  • Репутация: +43/-0
  • Пол: Мужской
  • Глупый кот
Re: Массивы
« Ответ #12 : Августа 03, 2013, 17:30:34 »
Извините, вам запрещён просмотр содержимого спойлеров.
Вопрос более не актуален. Спасибо SABRUS.
« Последнее редактирование: Августа 08, 2013, 12:03:31 от Sahasg552 »