Файл: Понятие переменной в программировании (Виды и типы переменных).pdf
Добавлен: 17.05.2023
Просмотров: 123
Скачиваний: 3
Так и программирование от калькуляторов перешло к вычислительным машинам благодаря переменным величинам. Чего стоило разработчикам языков программирования реализовать возможности для применения переменных величин? Это уже отдельная тема. Одно могу сказать, стоило дорого, само собой, не только в деньгах. Дорого в расходовании (применении) интеллекта для изобретения подобных вещей. Другой уровень абстракции требует принципиально иных решений, новой конфигурации «железа», новых команд для нового «железа». Но это уже, что называется, другая история.
1.2 Переменная с индексами массивов
Имея представление о том, что такое переменная в программировании, давайте попробуем решить небольшую задачку. А именно, задачу про суммирование веса всех товаров в супермаркете. Заодно немного углубимся в секреты составления программ и выясним для себя, что такое переменная с индексами, массив в программировании, а также комментарий, цикл и счетчик.[8] Итак, вернемся к задаче. Зачем мерить сумму веса товаров? Наверное, в супермаркете это не очень нужно, но вот, скажем, на складе, откуда осуществляются поставки товаров в супермаркеты, это надо делать. Зачем? Ну, хотя бы для того, чтобы потом посчитать, каким количеством рейсов можно эти товары вывезти автомобильным транспортом. Ведь в каждый автомобиль влезает строго определенный вес, не более.
Задачу чуть усложним. Будем считать, что товаров у нас, например, миллион единиц. И у каждого товара есть вес нетто (это чистый вес без упаковки), есть дополнительный вес упаковки и суммарный вес брутто. Нас будет интересовать вес каждого товара: нетто, вес упаковки, брутто, – а также общий вес всех товаров на складе.
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. Комментарии в программировании, что это такое и как их пишут
В запоминании смысла того, что мы запрограммировали, нам могут помочь комментарии, которые программисты имеют возможность писать в своих программах.
Комментарии – это ничего не значащий для компьютера текст, который понятен только программистам. Этот текст можно писать прямо в тексте программы, но чтобы его отделить от текста программы, нужны некоторые правила.[9]
В разных языках программирования правила для написания комментариев могут несколько отличаться, но суть от этого не меняется. Например, давайте комментарии писать сразу после слова (или выражения, команды) Comment (в переводе на русский язык означает Комментарии). Такое слово, такая команда будет для нас означать, что это комментарий, а для компьютера это будет означать, что далее после этой команды на данной строке программы ничего нет, чтоб представляло бы интерес для ее исполнения. Тогда наша программа может выглядеть следующим образом:
Рис. 2. Комментарий в программировании пишут в конце строки для пояснения содержимого строки
Неплохо, правда? С комментариями текст в программе понятен. Но, как говорилось в старой присказке, «так-то так, да вон-то как?!» – это про того, кто строил телегу прямо в избе, и не думал о том, как он ее будет выносить из избы на улицу через маленькие низкие двери и совсем маленькие окошки.
В чем проблема? В миллионе товаров. Их – целый миллион, а мы только добрались до второго товара. И сколько же времени мы будем идти к миллиону? Наверное, при таком подходе, всю жизнь.
3. Сложные имена и идентификаторы переменных в программировании
Попробуем подойти к решению задачи иначе. Переменная величина в программировании обозначается своим именем, или иными словами, у переменной есть идентификатор имени, или просто идентификатор. Вообще-то, идентификаторы в программировании – это не только идентификаторы имен переменных. Это могут быть, например, идентификаторы меток и других объектов программ, но сейчас мы не будем об этом говорить, ограничимся идентификаторами переменных.[10]
- В качестве идентификатора переменной могут выступать любые сочетания латинских букв и цифр, но первым символом идентификатора обязательно должна быть латинская буква.
- С цифры начинать имя переменной нельзя.
- Также имя переменной, ее идентификатор должен иметь ограниченную длину. Скажем, не более 8 символов, хотя в разных языках программирования эти ограничения разные. Может быть и 255 символов, например, и даже больше. Но мы пока остановимся на 8-и символах.
Назовем иначе вес нетто первого товара, скажем, обозначим его идентификатором VESNET01, подразумевая, что VES – это «вес», NET – это «нетто», а 01 – это первый товар. Аналогично можем обозначить VESUP01 – вес упаковки первого товара и VESBRT01 – вес брутто 1-го товара. Получаем тогда следующую программу:
Рис. 3. Программа суммирует вес брутто 99 товаров
Ура, мы теперь смогли просуммировать вес аж 99 товаров! Продвинулись мы так далеко, так как стали применять сложные идентификаторы переменных, чем просто привычные переменные A, B, C, D и т.п., которые скорее похожи на алгебраические, чем на программистские.
4. Переменные с индексами или массивы в программировании
Но мы все равно не просуммировали миллион весов товаров. Нас хватило только на 100. Потому что нам не хватило длины имени переменной. Мы ограничены 8-ю символами. Конечно, VES можно сократить до V, BRT – до B, NET – до N, и тем самым высвободить еще поля. Тогда, конечно, можно будет сложить миллион весов товаров, ибо высвободится 5 знаков, которых хватит как раз на 99999 вариантов, а с пятизначным нулем 00000 хватит на миллион вариантов наименования имени переменной.[11]
Но и программа станет огромной, в ней будет миллион строк. Это нереально, и я слабо представляю себе программиста, у которого хватило бы терпения эти строки ввести. Даже если это можно делать простым копированием с исправлением отдельных цифр. 1 миллион исправлений, если одно исправление делать за 1 секунду займет у нас 1 миллион секунд или 1 000 000 / 3 600 = 278 часов / 24 часа = 11,5 суток !!!
А ведь для современных компьютеров миллион данных – это пустяк. Они оперируют триллионами и более данных. Что же делать? Надо двигаться дальше в освоении переменных величин. Для таких больших массивов данных простые переменные величины не годятся. Нужны так называемые переменные с индексами.
В алгебре, например, есть такие записи, как a1, a2, a3, b1, b2, b3 и т.д. Так почему бы этому не быть в программировании? Конечно, такое там есть. Такие переменные в программировании называются переменными с индексами.
Переменная с индексом – это переменная, имеющая одно и то же имя, но которая может иметь не единственное значение, а множество разных значений. Под одним именем переменной с индексом скрывается целый массив данных. Каждое отдельное значение этого массива отличается от остальных значений массива своим уникальным индексом.[12]
Индексы в языках программирования обычно указывают в круглых скобках сразу после имени переменной, например, 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 меняется от единицы до миллиона. Это записать просто с помощью команд циклического выполнения программы или проще с помощью цикла, как говорят программисты:
Рис. 8. Цикл в программировании суммирует товары от 1 до 1000000
В переводе на русский:
Рис. 9. Цикл в программировании на русском языке
Или иными словами, для всех значений переменной I от единицы с шагом по одному до миллиона просуммируйте A(I) и B(I), результат запишите в C(I). Миллион суммирований! С помощью лишь одной строки программы! А вот это уже и есть настоящее программирование. Что нам теперь миллион? Можем и миллиард сумм сделать в одной программной строке! А если надо, то и больше.[13]