Статьи
Що таке змінна в програмуванні і чим вона відрізняється від константи
- Калькулятори дружать з константами
- Програми дружать зі змінними величинами
- Як можуть використовуватися вирази зі змінними величинами
- Змінні і константи - разом назавжди
Перш ніж переходити до питання про те, що таке змінна в програмуванні, спробуємо розібратися, чому знадобилися і константи, і змінні. Алгебра від арифметики істотно відрізняється тим, що в арифметиці ми маємо справу лише з числами, а в алгебрі вводиться поняття змінної величини.
зміст:
1) Калькулятори дружать з константами
2) Програми дружать зі змінними величинами
3) Як можуть використовуватися вирази зі змінними величинами
4) Змінні і константи - разом назавжди
Погодьтеся, що вираз
2 + 3 = 5
досить серйозно відрізняється від виразу:
a + b = c
В чому різниця? Не тільки в тому, що в алгебрі замість цифр застосовуються літери латинського алфавіту, але відмінність і в рівні абстракції.
Чисельні вираження, хоч що з ними роби, дають в результаті тільки чисельний результат.
І це абстрактні літерні вирази перетворюються в формули, закони і слідства і, рухаючись далі за межі алгебри, в леми, в теореми, і, взагалі, ведуть до диференціального і інтегрального числення, до математичного аналізу, і до решти. Правда, в Матаналіз (в математичному аналізі) вже не вистачає латинських букв, в хід йдуть грецькі, всякі «дельти», «сигми» та інше. Але це вже не стільки від нестачі букв, скільки від постійного зростання рівня абстракції, яка (абстракція) вимагає нових виразних засобів.
Чому так? Тому що певний, нехай навіть невеликий додатковий рівень абстракції дозволяє мислити інакше, робити інакше, вивчати інакше, і показувати інші результати, ніж при меншому рівні абстракції.
Так само і в комп'ютерній грамотності. Можна говорити спочатку про найнижчому рівні абстракції, наприклад, про арифметику в програмуванні .
Калькулятори дружать з константами
Наприклад, візьмемо калькулятор. Що він може робити? Досить багато: виконувати ряд арифметичних і навіть більш складних дій.
- Вводимо на калькуляторі перше число, наприклад, «2»,
- натискаємо на знак «плюс»,
- вводимо друге число, скажімо, «3» (див. рис. 1),
- і потім натискаємо знак «=».
Що отримаємо? Очевидно, значення «5». Арифметика. Але з використанням комп'ютерної техніки - калькулятора.
Мал. 1. Підсумовування констант 2 + 3 на калькуляторі (Windows 7)
Не будемо далі заглиблюватися в можливості калькуляторів . Наприклад, можна було б розглянути більш складні калькулятори: для інженерів, для програмістів, для обробки статистичних даних та ін. (Див. Рис. 2).
Мал. 2. Деякі види калькуляторів, наявних в Windows 7
Але навіть складні калькулятори так і залишаться калькуляторами, тобто, будуть робити арифметичні операції тій чи іншій мірі складності. Тому що це один рівень абстракції, найнижчий, на рівні чисел. Нічим іншим, окрім як обробкою числових виразів, калькулятори займатися не можуть.
Програми дружать зі змінними величинами
І якби наступний, новий рівень абстракції не увійшов до ужитку в комп'ютерній грамотності, то тоді не з'явилося б програмування в тому вигляді, як воно існує в наш час. Програмування, яке дозволяє робити програмне забезпечення, що називається, на всі випадки життя, і з дружнім інтерфейсом, тобто, зручним для подальшого користування.
Як це працює? Пояснимо дещо спрощено, щоб не було потрібно глибоке занурення в складну область програмування.
Для початку зазначимо, що в програмуванні все вираження пишуть як би навпаки в порівнянні з тим, як їх пишуть в алгебрі. Якщо в алгебрі спочатку вказують операнди (змінні), над якими слід провести дії, а потім після знака рівності вказують результат, як в прикладі
a + b = c,
то в програмуванні роблять все навпаки: спочатку вказують результат, а потім дію, тобто:
C = A + B.
Тут не випадково я пишу рядкові (заголовні) букви замість прописних (маленьких) букв:
по-перше, щоб відрізнити алгебру від програмування, а
по-друге, тому що спочатку в нашій країні в програмуванні використовували в основному великі літери латинського алфавіту.
Так як замість великих літер латиниці у нас робили малу кирилицю, інакше де ще взяти коди для російських букв ?! Це пов'язано з тим, що багато транслятори з мов програмування у нас в країні лише адаптували з західних аналогів, а не розробляли з нуля. А там, звідки все це копіювалося, російської мови не було зі зрозумілих причин. Хоча були і приклади наших «рідних» мов програмування .
І пишу я комп'ютерні виразу не посередині рядка, як це прийнято в алгебрі, а пишу на початку рядка так, як це прийнято в програмуванні. Це вже питання синтаксису мов програмування, правил написання вираження цих мов. В алгебрі одні правила, в програмуванні - інші, хоча букви і там, і там можуть бути однакові.
Чому стали в програмуванні писати навпаки, а саме стали писати C = A + B? Важко сказати. Так склалося, що спочатку треба було вказувати результат, і лише потім дію.
Що ж дає подібне «чарівне» вираз з буквами замість цифр для програмування? Здавалося б, у чому різниця між константами і змінними:
5 = 2 + 3 (напишемо навпаки лише для порівняння) і
C = A + B?
Давайте розберемося. Що може бути результатом складання 2 + 3? Більшість відповість, звичайно, «5». І хоч це майже правильну відповідь, мабуть, ми з цим погодимося.
Чому майже? Та тому що це правильна відповідь для десяткової системи числення . Для четверичной системи обчислення, в якій використовуються тільки цифри від 0 до 3, відповідь була б «11», так-так, саме одинадцять, можете не сумніватися. А в пятеричной системі числення, де додається ще цифра 4, відповідь була б «10».
Але в будь-якому випадку, про який би системі числення ми не говорили, результатом 2 + 3 завжди буде одне і те ж число (константа). У десятковій системі (повернемося до неї тепер надовго), це «5», і тільки «п'ять».
А скільки буде A + B? Відповідь очевидна: все залежить від того, чому дорівнюють A і B. Значить, результатом 2 + 3 завжди буде 5, а результатом A + B будуть різні значення в залежності від величин A і B.
Досить очевидно. Ну і що, що 5 - константа, а тут змінна? А то, що змінні - це інший рівень абстракції. За рахунок A + B ми тепер можемо отримувати безліч різних значень.
Як можуть використовуватися вирази зі змінними величинами
Припустимо, A - це вага одного товару, а B - це вага іншого товару. Значить, A + B - це сумарна вага обох товарів. Значить, використовуючи вираз C = A + B, програміст може запрограмувати автоматичне підсумовування двох ваг.
Як він це зробить?
- Наприклад, спочатку програміст попросить ввести з клавіатури вага першого товару (описую, як це можна зробити в мові програмування, повіримо, що так можна зробити), і присвоює введене значення змінної з ім'ям A.
- Потім він робить те ж саме з вагою другого товару, і привласнює це вже змінної B.
- А потім пише в своїй програмі тепер уже зрозуміле нам вираз:
C = A + B
Що виходить в результаті? Звичайно, ви відразу здогадалися, що змінної C буде присвоєно значення суми ваг, збережених в змінних A і B.
І далі програміст напише в своїй програмі (теж прошу повірити, що це можна зробити засобами мови програмування): вивести на екрані дисплея значення змінної C. Що ми побачимо на екрані? Звичайно, суму ваг першого і другого товарів!
І тепер цю, один раз написану програму, можна використовувати знову, але вже для підсумовування наступної пари ваги.
Якщо ще прибрати ручне введення ваги товару, і відразу автоматично ввести вагу, скажімо, з електронних ваг (які зараз широко застосовуються в тих же супермаркетах), то на екран дисплея буде автоматично виводитися сума ваг 2-х товарів: поклав одні товар, потім поклав другий, і бачиш одразу результат.
А якщо піти далі, і не виводити на екран суму ваг 2-х товарів, а записати це кудись в базу даних ?! А якщо не обмежуватися 2-я товарами, а, скажімо, говорити про мільйон різних видів товарів, що підлягають зважуванню? Чому б і ні! Все це можна описати у вигляді виразів, подібних C = A + B.
І в результаті ми отримаємо, можна без сорому сказати, серйозну автоматизовану систему для супермаркету, де враховуються і ваги всіх товарів, і кількість, і вартість, а також всі покупки, зроблені покупцями та інше, і таке інше. Але це стало можливим, коли з'явилося програмування з використанням змінних величин, тих самих A, B, C тощо! Без цього рівня абстракції, без змінних не було б програмування.
Змінні і константи - разом назавжди
Справедливості заради, треба сказати, що цифри (прості і не дуже прості числа) залишилися в програмуванні. Вони теж потрібні. Їх назвали іноземним словом «константи».
Константи - це величини, які ніколи і ні за яких обставин не змінюють свої значення.
А що таке змінна в програмуванні?
Змінні, на відміну від констант, раз у раз змінюють свої значення, постійно їх змінюють, тому вони і називаються змінними величинами.
Так що поряд з виразом C = A + B, в програмуванні можливо як вираз C = A + 3, так і C = 2 + B.
Однак в лівій частині програмного вираження (до знака рівності «=») константа не може вживатися. Там може бути тільки змінна, оскільки значення виразу, яке присвоюється змінної в лівій частині виразу, може змінюватися в залежності від значень змінних в правій частині виразу. А значить, зліва може бути тільки змінна величина.
Завдяки латинським буквах, які використовуються замість цифр, арифметика перетворилася в алгебру. Так і програмування від калькуляторів перейшло до обчислювальних машин завдяки змінним величинам.
Чого коштувало розробникам мов програмування реалізувати можливості для застосування змінних величин? Це вже окрема тема. Одне можу сказати, коштувало дорого, само собою, не тільки в грошах. Дорого у витрачанні (застосуванні) інтелекту для винаходу подібних речей.
Інший рівень абстракції вимагає принципово інших рішень, нової конфігурації «заліза», нових команд для нового «заліза». Але це вже, як то кажуть, інша історія ...
Інші матеріали:
1. Що таке змінна з індексами, масив, коментар, цикл і лічильник в програмуванні на конкретному прикладі
2. Мови програмування: чому з'явилися, яскраві представники, як вибрати мову
3. Кодування інформації кольорів
Автор: Юрій Воробйов
Що він може робити?
Що отримаємо?
Як це працює?
Чому стали в програмуванні писати навпаки, а саме стали писати C = A + B?
Що ж дає подібне «чарівне» вираз з буквами замість цифр для програмування?
Що може бути результатом складання 2 + 3?
Чому майже?
А скільки буде A + B?
Ну і що, що 5 - константа, а тут змінна?