Меню

Обратная связь

Сейчас на сайте

•Сейчас• •23 гостей• •онлайн•

Авторизация



Назад...

Массивы.

Линейные массивы.


1. Что такое массив и для чего он используется.


Представим, что в памяти компьютера необходимо хранить данные одного типа, например, возраст в годах работников предприятия. Работников много, например, 100 человек. Тогда для обработки данных и хранения информации в памяти необходимо ввести 100 переменных : a1, a2, b34, vozr124 и т.д…

 

Это не то, чтобы очень неудобно, это НЕВОЗМОЖНО, если говорить о тысячах, десятках тысяч человек. Для этого существуют различные способы организации структуирования данных для хранения. Один из них МАССИВЫ.

 

Массивы бывают разные по размерности: одномерные, двумерные, и т.д. Мы будем работать на первых этапах с ОДНОМЕРНЫМИ.

 

Массив – это структуированный набор однотипных данных.

Пример одномерного массива – рост учащихся 6 класса в сантиметрах: 154, 165, 152, …, 161

Красивее их представить в виде таблицы

1

2

3

22

Рост, см

154

165

152

161

 

Для работы с массивом, как и с переменной, мы его описываем. Описание в общем виде

Var

<имя> : array[<начальный_индекс>..<конечный_индекс>] of <тип>;

 

Для нашего примера:

Var

a : array[1..22] of integer;

 

Наш массив имеет 22 элемента, каждый из которых целое число.

 

2. Как получить доступ к каждому элементу массива.

 

Рост второго ученика a[2], рост 15-того а[15]. С каждым элементом можно работать как с отдельной переменной. ГЛАВНОЕ указать имя массива и в квадратных скобках его ИНДЕКС.

b:=a[1]+a[4];                           // сумма первого и четвертого элемента

a[7]:=145;                                // значение седьмого элемента станет 145

 

Номер элемента и номер индекса не всегда совпадают. В скобках указывается индекс (не номер) и нужно понимать, что обращение кэлементу идет через индекс, а не через номер.

Рассмотрим два примера.

 

Пример 1. Производили замеры дневной температуры с 15 по 27 сентября. Для хранения данных удобно выполнить описании по индексам дней, а не по номеру количества:

a : array[15..27] of integer;

получили, что первый элемент a[15], второй a[16] и т.д. (всего 13 элементов)

 

Пример 2. Есть многоэтажный дом с подвальными этажами. В массиве хранять площади помещений каждого этажа. По схеме:

s : array[-2..3] of integer;

получили, что первый элемент s[-2], третий s[0] и т.д. (всего 6 элементов)

 

3. Способы задания значений элементам  массива.


Их много. Рассмотрим нужные нам.

 

Способ 1. Командой присвоить

a[1]:=123;

a[2]:=43;

a[5]:=13423;

 

Способ 2. Ввод с клавиатуры

read(a[1]);

readln(a[6]);

 

Способ 3. Задания случайного целого числа (например из диапазона от 0 до 100 включительно)

a[1]:=random(101);

Обработку массивов очень удобно проводить с помощью циклов, а именно цикла for.

 

4. Способы задания значений всем элементам  массива (заполнение массива).

 

Способ 1. Ввод значений с клавиатуры

for i:=1 to 10 do

read(a[i]);

 

Способ 2. Заполнение случайными числами.

for i:=1 to 10 do               //массив из 10 чисел

a[i]:=random(21);            //случайные целые числа от 0 до 20

 

Если количество элементов в программе каждый раз может меняться, то нужно указать в переменную количество и организовать работу. При описании массива нужно брать с максимальным запасом для задачи и следить за объемом занимаемой памяти(!!!)

read(n);

for i:=1 to n do

read(a[i]);

 

5. Способы вывода элементов  массива.

 

Способ 1. Вывод значений в строку через пробел:

for i:=1 to 10 do

write(a[i],’ ‘);

writeln;

 

Способ 2. Вывод значений в столбец:

for i:=1 to 10 do

writeln(a[i]);

 

И!.. ЗАЧЕМ НУЖНЫ МАССИВЫ, если можно обойтись без них?..

Если данные нужно хранить в памяти компьютера постоянно, или некоторое время – массивы НУЖНЫ! Если данные вводятся, сразу обрабатываются и их значения можно не помнить, можете не использовать массив для экономии памяти!


Пример нахождения максимального числа из 10 введенных.


Без использования цикла

С использованием цикла, но без массива

С использованием массива

Var

a,max : integer;

Begin

read(a);

max:=a;

read(a);

if a>max then max:=a;

read(a);

if a>max then max:=a;

read(a);

if a>max then max:=a;

read(a);

if a>max then max:=a;

read(a);

if a>max then max:=a;

read(a);

if a>max then max:=a;

read(a);

if a>max then max:=a;

read(a);

if a>max then max:=a;

read(a);

if a>max then max:=a;

writeln(max);

end.

Var

a,max,i : integer;

Begin

read(a);

max:=a;

for i:=1 to 9 do

begin

read(a);

if a>max then max:=a;

end;

writeln(max);

end.

Var

a : array[1..10] of integer;

i,max : integer;

Begin

for i:=1 to 10 do

read(a[i]);

max:=a[1];

for i:=2 to 10 do

if a[i]>max then max:=a[i];

writeln(max);

End.

 

•Информация о профиле•

Application afterLoad: 0.001 seconds, 0.30 MB
Application afterInitialise: 0.038 seconds, 1.80 MB
Application afterRoute: 0.076 seconds, 2.16 MB
Application afterDispatch: 0.120 seconds, 3.29 MB
Application afterRender: 0.190 seconds, 3.86 MB

•Использование памяти•

4088280

•Зарегистрировано запросов: 22•

  1. SELECT *
      FROM jos_session
      WHERE session_id = 'k26stst1vcrbl293c87a9lnhj6'
  2. DELETE
      FROM jos_session
      WHERE ( time < '1733296843' )
  3. SELECT *
      FROM jos_session
      WHERE session_id = 'k26stst1vcrbl293c87a9lnhj6'
  4. INSERT INTO `jos_session` ( `session_id`,`time`,`username`,`gid`,`guest`,`client_id` )
      VALUES ( 'k26stst1vcrbl293c87a9lnhj6','1733300443','','0','1','0' )
  5. SELECT *
      FROM jos_components
      WHERE parent = 0
  6. SELECT folder AS type, element AS name, params
      FROM jos_plugins
      WHERE published >= 1
      AND access <= 0
      ORDER BY ordering
  7. SELECT *
      FROM jos_migration_backlinks
      WHERE url LIKE 'component/content/article/94.html%' OR sefurl LIKE 'component/content/article/94.html%'
  8. SELECT template
      FROM jos_templates_menu
      WHERE client_id = 0
      AND (menuid = 0 OR menuid = 0)
      ORDER BY menuid DESC
      LIMIT 0, 1
  9. SELECT a.*, u.name AS author, u.usertype, cc.title AS category, s.title AS section, CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END AS slug, CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END AS catslug, g.name AS groups, s.published AS sec_pub, cc.published AS cat_pub, s.access AS sec_access, cc.access AS cat_access 
      FROM jos_content AS a
      LEFT JOIN jos_categories AS cc
      ON cc.id = a.catid
      LEFT JOIN jos_sections AS s
      ON s.id = cc.section
      AND s.scope = "content"
      LEFT JOIN jos_users AS u
      ON u.id = a.created_by
      LEFT JOIN jos_groups AS g
      ON a.access = g.id
      WHERE a.id = 94
      AND (  ( a.created_by = 0 )    OR  ( a.state = 1
      AND ( a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2024-12-04 08:20:43' )
      AND ( a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2024-12-04 08:20:43' )   )    OR  ( a.state = -1 )  )
  10. UPDATE jos_content
      SET hits = ( hits + 1 )
      WHERE id='94'
  11. SELECT id, title, module, position, content, showtitle, control, params
      FROM jos_modules AS m
      LEFT JOIN jos_modules_menu AS mm
      ON mm.moduleid = m.id
      WHERE m.published = 1
      AND m.access <= 0
      AND m.client_id = 0
      AND ( mm.menuid = 0 OR mm.menuid = 0 )
      ORDER BY position, ordering
  12. SELECT *
                           
      FROM jos_menu
                           
      WHERE menutype='mod_maximenu_CK'
      AND published=1
                           
      ORDER BY sublevel DESC,ordering
                            ;
  13. SELECT *
                           
      FROM jos_modules
                           
      WHERE published=1
                           
      ORDER BY id
                            ;
  14. SELECT *
                           
      FROM jos_menu
                           
      WHERE menutype='uth_proc'
      AND published=1
                           
      ORDER BY sublevel DESC,ordering
                            ;
  15. SELECT *
                           
      FROM jos_modules
                           
      WHERE published=1
                           
      ORDER BY id
                            ;
  16. SELECT *
                           
      FROM jos_menu
                           
      WHERE menutype='Olimp'
      AND published=1
                           
      ORDER BY sublevel DESC,ordering
                            ;
  17. SELECT *
                           
      FROM jos_modules
                           
      WHERE published=1
                           
      ORDER BY id
                            ;
  18. SELECT *
                           
      FROM jos_menu
                           
      WHERE menutype='obr_sv'
      AND published=1
                           
      ORDER BY sublevel DESC,ordering
                            ;
  19. SELECT *
                           
      FROM jos_modules
                           
      WHERE published=1
                           
      ORDER BY id
                            ;
  20. SELECT *
                           
      FROM jos_menu
                           
      WHERE menutype='raznoe'
      AND published=1
                           
      ORDER BY sublevel DESC,ordering
                            ;
  21. SELECT *
                           
      FROM jos_modules
                           
      WHERE published=1
                           
      ORDER BY id
                            ;
  22. SELECT guest, usertype, client_id
      FROM jos_session
      WHERE client_id = 0

•Языковые файлы загружены•

  • /var/www/user13295/data/www/ssa.lel-gimnazia.by/language/ru-RU/ru-RU.ini 1
  • /var/www/user13295/data/www/ssa.lel-gimnazia.by/language/ru-RU/ru-RU.plg_system_debug.ini 1
  • /var/www/user13295/data/www/ssa.lel-gimnazia.by/language/ru-RU/ru-RU.com_content.ini 1
  • /var/www/user13295/data/www/ssa.lel-gimnazia.by/language/ru-RU/ru-RU.plg_content_pagebreak.ini 1
  • /var/www/user13295/data/www/ssa.lel-gimnazia.by/language/ru-RU/ru-RU.tpl_MY_sh.ini
  • /var/www/user13295/data/www/ssa.lel-gimnazia.by/language/en-GB/en-GB.tpl_MY_sh.ini
  • /var/www/user13295/data/www/ssa.lel-gimnazia.by/language/ru-RU/ru-RU.mod_maximenu_CK.ini
  • /var/www/user13295/data/www/ssa.lel-gimnazia.by/language/en-GB/en-GB.mod_maximenu_CK.ini 1
  • /var/www/user13295/data/www/ssa.lel-gimnazia.by/language/ru-RU/ru-RU.mod_whosonline.ini 1
  • /var/www/user13295/data/www/ssa.lel-gimnazia.by/language/ru-RU/ru-RU.mod_login.ini 1
  • /var/www/user13295/data/www/ssa.lel-gimnazia.by/language/ru-RU/ru-RU.mod_breadcrumbs.ini 1

•Диагностика непереведённых строк•

•Нет•

•Дизайнер непереведённых строк•

•Нет•