• FaceBook
  • Google Plus
  • Twitter
  • Vkontakte
  • RSS via FeedBurner
  • Email FeedBurner

Что такое переменная с индексами, массив, комментарий, цикл и счетчик в программировании на конкретном примере



что такое массив в программированииИмея представление о том, что такое переменная в программировании, давайте попробуем решить небольшую задачку. А именно, задачу про суммирование веса всех товаров в супермаркете. Заодно немного углубимся в секреты составления программ и выясним для себя, что такое переменная с индексами, массив в программировании, а также комментарий, цикл и счетчик.

Содержание:
1. Решение задачи суммирования весов с использованием переменных в программировании
2. Комментарии в программировании, что это такое и как их пишут
3. Сложные имена и идентификаторы переменных в программировании
4. Переменные с индексами или массивы в программировании
5. Понятие размерности для переменных с индексами или для массивов в программировании
6. Цикл или Многократное циклическое выполнение команд в программировании
7. Счетчик в программировании или Многократное суммирование данных в одной переменной

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

Задачу чуть усложним. Будем считать, что товаров у нас, например, миллион единиц. И у каждого товара есть вес нетто (это чистый вес без упаковки), есть дополнительный вес упаковки и суммарный вес брутто. Нас будет интересовать вес каждого товара: нетто, вес упаковки, брутто, — а также общий вес всех товаров на складе.

1. Решение задачи суммирования весов с использованием переменных в программировании

Можно определять вес брутто как сумму весов нетто и веса упаковки
(брутто=нетто+вес_упаковки). Обозначим:

  • переменной A – чистый вес товара (нетто),
  • переменной B – вес упаковки.

Тогда выражение C = A + B даст нам, очевидно, вес брутто. Здорово, задача почти решена.

Но не все так просто. Ведь товаров у нас миллион. Мы посчитали только вес брутто одного товара. Что делать с остальными? Очевидно, их тоже надо суммировать.

Например, обозначим

  • переменной D – вес второго товара,
  • переменной E – вес упаковки второго товара.

Тогда выражение F = D + E даст нам вес брутто второго товара. Хорошо, теперь мы можем просуммировать веса брутто двух товаров, например, в таком выражении, как G = C + F, где C – вес брутто первого товара, F – вес брутто второго товара.

Мы получили с Вами небольшую программу, которая суммирует вес 2-х товаров из миллиона. Она выглядит следующим образом:

программа суммирует вес двух товаров

Рис. 1. Программа суммирует вес 2-х товаров

В итоге в значении переменной G мы получим вес 2-х товаров из миллиона. Но даже в такой самой небольшой программе мы можем со временем запутаться. Посмотрим на нее, скажем, через полгода. Разве мы вспомним, что означает A, B, C, D, E, F? Маловероятно.

2. Комментарии в программировании, что это такое и как их пишут

В запоминании смысла того, что мы запрограммировали, нам могут помочь комментарии, которые программисты имеют возможность писать в своих программах.

Комментарии – это ничего не значащий для компьютера текст, который понятен только программистам. Этот текст можно писать прямо в тексте программы, но чтобы его отделить от текста программы, нужны некоторые правила.

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

что такое комментарий в программировании

Рис. 2. Комментарий в программировании пишут в конце строки для пояснения содержимого строки

Неплохо, правда? С комментариями текст в программе понятен. Но, как говорилось в старой присказке, «так-то так, да вон-то как?!» – это про того, кто строил телегу прямо в избе, и не думал о том, как он ее будет выносить из избы на улицу через маленькие низкие двери и совсем маленькие окошки.

В чем проблема? В миллионе товаров. Их – целый миллион, а мы только добрались до второго товара. И сколько же времени мы будем идти к миллиону? Наверное, при таком подходе, всю жизнь…

3. Сложные имена и идентификаторы переменных в программировании

Попробуем подойти к решению задачи иначе. Переменная величина в программировании обозначается своим именем, или иными словами, у переменной есть идентификатор имени, или просто идентификатор. Вообще-то, идентификаторы в программировании – это не только идентификаторы имен переменных. Это могут быть, например, идентификаторы меток и других объектов программ, но сейчас мы не будем об этом говорить, ограничимся идентификаторами переменных.

  • В качестве идентификатора переменной могут выступать любые сочетания латинских букв и цифр, но первым символом идентификатора обязательно должна быть латинская буква.
  • С цифры начинать имя переменной нельзя.
  • Также имя переменной, ее идентификатор должен иметь ограниченную длину. Скажем, не более 8 символов, хотя в разных языках программирования эти ограничения разные. Может быть и 255 символов, например, и даже больше. Но мы пока остановимся на 8-и символах.

Назовем иначе вес нетто первого товара, скажем, обозначим его идентификатором VESNET01, подразумевая, что VES – это «вес», NET – это «нетто», а 01 – это первый товар. Аналогично можем обозначить VESUP01 – вес упаковки первого товара и VESBRT01 – вес брутто 1-го товара. Получаем тогда следующую программу:

programma summiruet ves brutto 99 tovarov

Рис. 3. Программа суммирует вес брутто 99 товаров

Ура, мы теперь смогли просуммировать вес аж 99 товаров! Продвинулись мы так далеко, так как стали применять сложные идентификаторы переменных, чем просто привычные переменные A, B, C, D и т.п., которые скорее похожи на алгебраические, чем на программистские.

4. Переменные с индексами или массивы в программировании

Но мы все равно не просуммировали миллион весов товаров. Нас хватило только на 100. Потому что нам не хватило длины имени переменной. Мы ограничены 8-ю символами. Конечно, VES можно сократить до V, BRT – до B, NET – до N, и тем самым высвободить еще поля. Тогда, конечно, можно будет сложить миллион весов товаров, ибо высвободится 5 знаков, которых хватит как раз на 99999 вариантов, а с пятизначным нулем 00000 хватит на миллион вариантов наименования имени переменной.

Но и программа станет огромной, в ней будет миллион строк. Это нереально, и я слабо представляю себе программиста, у которого хватило бы терпения эти строки ввести. Даже если это можно делать простым копированием с исправлением отдельных цифр. 1 миллион исправлений, если одно исправление делать за 1 секунду займет у нас 1 миллион секунд или 1 000 000 / 3 600 = 278 часов / 24 часа = 11,5 суток !!!

А ведь для современных компьютеров миллион данных – это пустяк. Они оперируют триллионами и более данных. Что же делать? Надо двигаться дальше в освоении переменных величин. Для таких больших массивов данных простые переменные величины не годятся. Нужны так называемые переменные с индексами.

В алгебре, например, есть такие записи, как a1, a2, a3, b1, b2, b3 и т.д. Так почему бы этому не быть в программировании? Конечно, такое там есть. Такие переменные в программировании называются переменными с индексами.

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

Индексы в языках программирования обычно указывают в круглых скобках сразу после имени переменной, например, A(1), A(2), A(3), B(1), B(2), B(3) и т.д.

Индексов может быть не один, а несколько, которые указывают через запятую, например A(1,1), A(1,2), A(1,3), A(2,1), A(2,2), A(2,3) и т.д.

Что такое массив в программировании?

Переменные с индексами, независимо от количества индексов, довольно часто еще называют массивами, это даже как-то проще и короче звучит.

Чем отличается массив от переменной? В массиве под одним идентификатором переменной хранится не одно число, а целый массив данных.

Массив, в котором переменная имеет один индекс, называют линейным или одномерным массивом. Пример одномерного массива: A(1), A(2), A(3).

Массив, где переменная может иметь два индекса, называют двумерным. Пример двумерного массива: A(1,1), A(1,2), A(1,3), A(2,1) A(2,2), A(2,3).

Также могут быть 3-х мерные, 4-х мерные и более мерные массивы (или иными словами массивы большей  размерности), если они нужны для решения тех или иных задач в программировании. Нам же для нашей задачи суммирования веса товаров вполне достаточно линейного (одномерного) массива.

Вернемся к почти полюбившемуся и уже привычному выражению C = A + B. Напишем теперь программу суммирования, не много не мало, миллиона весов товаров, больше не задумываясь над «сочинением» имен или идентификаторов разных переменных:

программа суммирует миллион единиц товаров

Рис. 4. Программа суммирует миллион единиц товаров

5. Понятие размерности для переменных с индексами или для массивов в программировании

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

Размерность – это максимальное значение индекса для переменной с индексом, иначе транслятор с языка программирования не сможет распознать нашу запись любой неописанной переменной с индексами, и выдаст ошибку. Почему так: подумаешь индексы, зачем их надо заранее описывать?

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

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

Например, применим для обозначения размерности массива команду Dimension (в данном контексте в переводе с английского языка это означает «Размерность»):

размерность массива команда

Рис. 5. Команда для обозначения размерности массива

Или проще, в одну строку:

размерность массива

Рис. 6. Указываем в программе размерность 3-х массивов

И только потом напишем нашу программу:

программа суммирует веса товаров

Рис. 7. Программа суммирует веса товаров: в каждой строке вес одного товара

Но и этого недостаточно. Ведь не сможем мы и в данном случае написать программу из миллиона строк. А ведь придется, если в каждой строке мы суммируем данные только по одному товару. Но нам «жизни не хватит» написать такую длинную программу, поэтому такая программа возможна только теоретически, но никак не практически. Что же делать?

6. Цикл или Многократное циклическое выполнение команд в программировании

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

У нас есть массив данных веса нетто товара – массив A размерностью миллион. Также есть массив B такой же размерности. И нам надо миллион раз сложить A(I) и B(I), где значение новой переменной I меняется от единицы до миллиона. Это записать просто с помощью команд циклического выполнения программы или проще с помощью цикла, как говорят программисты:

цикл в программировании от 1 до 1000000

Рис. 8. Цикл в программировании суммирует товары от 1 до 1000000

В переводе на русский:

цикл в программировании на русском языке

Рис. 9. Цикл в программировании на русском языке

Или иными словами, для всех значений переменной I от единицы с шагом по одному до миллиона просуммируйте A(I) и B(I), результат запишите в C(I). Миллион суммирований! С помощью лишь одной строки программы! А вот это уже и есть настоящее программирование. Что нам теперь миллион? Можем и миллиард сумм сделать в одной программной строке! А если надо, то и больше.

7. Счетчик в программировании или Многократное суммирование данных в одной переменной

Так-то так, да вон-то как? А как же общая сумма? Да, согласен, нужно к этой простой и эффективной одной единственной строке программы приписать еще пару строк, например, таких, как показано ниже, и тоже с использованием цикла:

счетчик в программировании

Рис. 10. Счетчик в программировании работает по принципу счетчика в такси

Вот такое решение задачки, которую мы обозначили в начале этой статьи об именах и идентификаторах переменных в программировании, у нас получилось. Всего четыре строчки программы, и «миллион у нас в кармане»:

программа суммирует вес брутто для миллиона товаров

Рис. 11. Программа суммирует вес брутто для миллиона товаров

Кстати, обратите, пожалуйста, внимание на выражение в последней строке программы после команды Do. Речь идет о выражении G = G + C(I).

В этом выражении переменная G используется как в левой части выражения (ей присваивается результат вычисления), так и в правой части выражения, поскольку ее предыдущее значение участвует в очередном суммировании. Такая конструкция в языках программирования называется «счетчик». Как счетчик в такси: щелк-щелк-щелк и все время цифра прибавляется. В результате «набегает» общая сумма за поездочку на такси, или, в данном контексте набегает сумма всех весов товаров.

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

В итоге наша программа занимает всего 4 строки, а делает очень большое дело: суммирует миллион весов нетто, упаковки, и брутто, а также получает конечный результат – сумму весов миллиона товаров, и эта сумма становится значением переменной G.

Правда, непростая работа у программистов?!

Другие материалы:

Информационные технологии: информация или технологии?

Русский язык программирования, а почему бы и нет?

Как программисты шутят


P.P.S. Чтобы подписаться на получение новых статей, которых еще нет на блоге:
1) Введите Ваш e-mail адрес в эту форму:


2) На Ваш e-mail придёт письмо для активации подписки. Обязательно кликните по указанной там ссылке, чтобы подтвердить добровольность своей подписки: подробнее с видеоуроком

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


Комментарии: 5 к “Что такое переменная с индексами, массив, комментарий, цикл и счетчик в программировании на конкретном примере”

  • Людмила Островская:

    Мне очень понравилось! Так просто и понятно. Это мне-то, 68-летней! Молодежь — учитесь!!! Тем более такие умные ребята выкладывают замечательные уроки! Спасибо. Вроде бы и не знаю, для чего, но читаю. Потому что интересно — а кто сказал, что существуют детство и старость? Это тяга к знаниям.

    • Надежда:

      Упрощать – сложно, усложнять – просто. Спасибо за Вашу оценку!
      Когда-то сами изучали программирование. Так лучше всего шло освоение по тем книгам, где все описывалось просто и доступно. Чем по справочникам и формальным описаниям синтаксиса и семантики языков программирования.

  • Пётр:

    Надежда, здравствуйте. Мой вопрос такого порядка, прошу прощения за несколько сумбурную форму описания, сам вопрос таков: — Купил давно винду с одного сайта, типа лицензия (на сайте была выложена неккая арифметическая комбинация «правильности программы» (в моём случае тогда была ХР,.)) типа сумма чисел программы равна С+3П+АВ+КА+3П=25 как и у нормального диска с лицензией. Что значить эти контрольные цифры программы. откуда их взяли и чем одно и то же визуально отличается от лицензии?
    С уважением.

    • Надежда:

      Петр, не нужно искать смысл там, где его нет. Если Windows работает, лицензия действует, то неважно, что там стоит за комбинацией букв, цифр и знаков.