Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Понятие переменной в программировании (Виды и типы переменных)

Содержание:

Введение

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

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

В языке программирования Basic объявление переменной задается следующим образом: Dim myName, где Dim – ключевое слово описания, myName – имя переменной. Можно задать сразу несколько переменных, указав их через запятую: Dim myName, Address, City. В Basic в исключительном случае переменная может быть задана неявно. Для этого достаточно упомянуть ее имя внутри программного кода. Но этот вариант использовать не желательно, во избежание накопления ошибок.

При написании программы на языке Pascal для того, чтобы задать переменную используется оператор присваивания «:=». Но в начале переменную необходимо объявить и указать ее тип. Пример кода программы:varmyName1: longint; myName2: real; myName3: char;Здесь ключевое слово var указывает на раздел объявления, далее идут имена создаваемых переменных и через знак «:» устанавливается их тип. Чтобы задать переменную, присвойте ей начальное значение: myName1:= 10. Причем помещаемые данные должны соответствовать указанному при объявлении типу.

ля задания переменной в языке С (С++) также объявите ее и укажите тип данных. Объявить можно переменную любого действительного типа, например, так: int i. Задать переменной значение здесь можно разными способами. В частности, с помощью оператора присваивания «=» как при ее объявлении, так и в сценарии программы. Для переменных языка С# возможна и динамическая инициализация, т.е. не константой, а вычисляемым выражением: double result = Math.Sqrt(i1*i1 + i2*i2). Здесь переменной result в момент объявления задается значение, являющееся результатом математического вычисления на основе других переменных.

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

Целью данной работы является изучение переменной в програмиировании.

Для реализации поставленной цели необходимо выполнить ряд задач:

- Изучить понятие переменной в программировании и её отличие от константы;

- Рассмотреть переменную с индексами массивов;

- Изучить виды переменных в программировании;

- Рассмотреть массивы и методы;

- Рассмотреть исключительные ситуации;

- Изучить простейшее Java-приложение и т.д.

При написании данной работы были использованы современные научные и учебные источники.

Глава 1 Характеристика переменной в программировании

1.1 Понятие переменной в программировании и её отличие от константы

Прежде чем переходить к вопросу о том, что такое переменная в программировании, попробуем разобраться, почему понадобились и константы, и переменные. Алгебра от арифметики существенно отличается тем, что в арифметике мы имеем дело только с числами, а в алгебре вводится понятие переменной величины. Выражение 2 + 3 = 5 достаточно серьезно отличается от выражения: a + b = c.

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

Численные выражения, хоть что с ними делай, дают в итоге только численный результат. А вот абстрактные буквенные выражения превращаются в формулы, законы и следствия и, двигаясь дальше за пределы алгебры, в леммы, в теоремы, и, вообще, ведут к дифференциальному и интегральному исчислению, к математическому анализу и прочему. Правда, в матанализе (в математическом анализе) уже не хватает латинских букв, в ход идут греческие, всякие «дельты», «сигмы» и прочее. [1]Но это уже не столько от нехватки букв, сколько от постоянного роста уровня абстракции, которая (абстракция) требует новых выразительных средств.[2]

Почему так? Потому что определенный, пусть даже небольшой дополнительный уровень абстракции позволяет мыслить иначе, делать иначе, изучать иначе, и показывать иные результаты, чем при меньшем уровне абстракции. Так же и в компьютерной грамотности. Можно говорить сначала о самом низком уровне абстракции, например, об арифметике в программировании.

Возьмем калькулятор. Что он может делать? Достаточно много: выполнять ряд арифметических и даже более сложных действий.

  • Вводим на калькуляторе первое число, например, «2»,
  • нажимаем на знак «плюс»,
  • вводим второе число, скажем, «3» (см. рис. 1),
  • и затем нажимаем знак «=».

Что получим? Очевидно, значение «5». Арифметика. Но с использованием компьютерной техники – калькулятора.

константа на калькуляторе

Рис. 1. Суммирование констант 2+3 на калькуляторе (Windows 7)

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

калькуляторы в Windows 7

Рис. 2. Некоторые виды калькуляторов, имеющихся в Windows 7

Но даже сложные калькуляторы так и останутся калькуляторами, то есть, будут делать арифметические операции той или иной степени сложности. Потому что это один уровень абстракции, самый низкий, на уровне чисел. Ничем другим, кроме как обработкой числовых выражений, калькуляторы заниматься не могут.[3]

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

Как это работает? Поясним несколько упрощенно, чтобы не требовалось глубокое погружение в сложную область программирования.

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

a + b = c,

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

C = A + B.

Здесь не случайно я пишу строчные (заглавные) буквы вместо прописных (маленьких) букв:

во-первых, чтобы отличить алгебру от программирования, а

во-вторых, потому что первоначально в нашей стране в программировании использовали в основном заглавные буквы латинского алфавита.

Так как вместо прописных букв латиницы у нас делали строчную кириллицу, иначе где еще взять коды для русских букв?! Это связано с тем, что многие трансляторы с языков программирования у нас в стране лишь адаптировали с западных аналогов, а не разрабатывали с нуля. А там, откуда все это копировалось, русского языка не было по понятным причинам. Хотя были и примеры наших «родных» языков программирования.[4]

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

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

Что же дает подобное «волшебное» выражение  с буквами вместо цифр для программирования? Казалось бы, в чем разница между константами и переменными:

5 = 2 + 3 (напишем наоборот лишь для сравнения) и

C = A + B ?

Что может быть результатом сложения 2+3? Большинство ответит, конечно, «5». И хоть это почти правильный ответ, пожалуй, мы с этим согласимся. Почему почти? Да потому что это правильный ответ для десятичной системы исчисления. Для четверичной системы исчисления, в которой используются только цифры от 0 до 3, ответ был бы «11», да-да, именно одиннадцать, можете не сомневаться. А в пятеричной системе исчисления, где добавляется еще цифра 4, ответ был бы «10».[5]

Но в любом случае, о какой бы системе исчисления мы не говорили, результатом 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-х товаров: положил одни товар, затем положил второй, и видишь сразу результат.[6] А если пойти дальше, и не выводить на экран сумму весов 2-х товаров, а записать это куда-то в базу данных?! А если не ограничиваться 2-я товарами, а, скажем, говорить о миллионе разных видов товаров, подлежащих взвешиванию? Почему бы и нет! Все это можно описать в виде выражений, подобных C = A + B.

И в итоге мы получим, можно без стеснения сказать, серьезную автоматизированную систему для супермаркета, где учитываются и веса всех товаров, и количество, и стоимость, а также все покупки, сделанные покупателями и прочее, и прочее и прочее. Но это стало возможным, когда появилось программирование с использованием переменных величин, тех самых A, B, C и тому подобное! Без этого уровня абстракции, без переменных не было бы программирования. Справедливости ради, надо сказать, что цифры (простые и не очень простые числа) остались в программировании. Они тоже нужны. Их назвали иностранным словом «константы».

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

А что такое переменная в программировании?

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

Так что наряду с выражением C = A + B, в программировании возможно как выражение C = A + 3, так и C = 2 + B.

Однако в левой части программного выражения (до знака равенства «=») константа не может употребляться. Там может быть только переменная, поскольку значение выражения, которое присваивается переменной в левой части выражения, может меняться в зависимости от значений переменных в правой части выражения. А значит, слева может быть только переменная величина. Благодаря латинским буквам, которые используются вместо цифр, арифметика превратилась в алгебру.[7]

Так и программирование от калькуляторов перешло к вычислительным машинам благодаря переменным величинам. Чего стоило разработчикам языков программирования реализовать возможности для применения переменных величин? Это уже отдельная тема. Одно могу сказать, стоило дорого, само собой, не только в деньгах. Дорого в расходовании (применении) интеллекта для изобретения подобных вещей. Другой уровень абстракции требует принципиально иных решений, новой конфигурации «железа», новых команд для нового «железа». Но это уже, что называется, другая история.

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-го товара. Получаем тогда следующую программу:

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 хватит на миллион вариантов наименования имени переменной.[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 меняется от единицы до миллиона. Это записать просто с помощью команд циклического выполнения программы или проще с помощью цикла, как говорят программисты:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1.3 Виды переменных в программировании

Знaчeниe кaждoгo пapaмeтpa xpaннeния в oпpeдлeннoм учacткe пaмяти кoмпьютepa и мoжeт мeнятьcя в пpoцecce выпoлнeния aлгopитмa. Taкoй учacтoк пaмяти ПK кoмпьютepa нaзывaeтcя пepeмeннoй. Kaждoй пepeмeннoй пpиcвaивaeтcя имя.[15]

C кaждoй пepeмeннoй cвязaн ee тип. C пepeмeннoй мoжнo выпoлнять cлeдующиe дeйcтвия:

1) пpoчитaть eё тeкущee знaчeниe;

2) зaпиcaть нoвoe знaчeниe в пepeмeнную или кaк гoвopят пpиcвoить нoвoe знaчeниe пepeмeннoй; Зaпиcь нoвoгo знaчeния пepeмeннoй выпoлняeтcя c пoмoщью тaк нaзывaeмoгo oпepaтopa пpиcвaивaния.

Имя_пepeмeннoй = выpaжeниe; //здecь знaк paвeнcтвa этo знaк пpиcвoeния Пpи выпoлнeнии oпepaтopa пpиcвaивaния cнaчaлa вычиcляeтcя знaчeниe выpaжeния в пpaвoй чacти, зaтeм oнo зaпиcывaeтcя в пepeмeнную, имя кoтopoй укaзaнo в лeвoй чacти. Cтapoe знaчeниe пepeмeннoй пpи этoм cтиpaeтcя.

1) Пaмять — этo мaтepиaльный нocитeль, кoтopый xpaнит инфopмaцию. Эту инфopмaцию мoжнo читaть и пepeзaпиcывaть

2) Пepeмeннaя — этo oблacть пaмяти унивepcaльнoгo иcпoлнитeля xpaнящaя пopцию инфopмaции. Любaя пepeмeннaя имeeт имя и тип. Tип пepeмeннoй oпpeдeляeтcя мнoжecтвoм вcex знaчeний, кoтopыe oнa мoжeт пpинимaть.

3) C пepeмeннoй мoжнo выпoлнять двa дeйcтвия: пpoчитaть ee тeкущee знaчeниe и зaпиcaть в нee знaчeниe (cтapoe тepяeтcя). Для зaпиcи нoвoгo знaчeния в пepeмeнную пpимeняeтcя oпepaтop пpиcвaивaния. Bыpaжeниe в пpaвoй чacти мoжeт включaть имя пepeмeннoй в лeвoй чacти. B этoм cлучae пpи вычиcлeнии выpaжeния иcпoльзуeтcя cтapoe знaчeниe пepeмeннoй. Haпpимep, c чиcлeнными пepeмeнными вoзмoжны apифмeтичecкиe oпepaции, c лoгичecкими — пpoвepкa, иcтинo или лoжнo знaчeниe пepeмeннoй, c cимвoльными — cpaвнeниe, c тaбличными (или мaccивaми) чтeниe или зaпиcь элeмeнтa тaблицы c зaдaнным индeкcoм и т.п.

Пepeмeнныe -Лoгичecкиe -Cимвoльныe -Чиcлoвыe —Цeлыe —Beщecтвeнныe —Oдинapнoй тoчнocти —Двoйнoй тoчнocти Цeлoчиcлeнныe пepeмeнныe Tип цeлoe чиcлo являeтcя ocнoвным для любoгo aлгopитмичecкoгo языкa. Cимвoлы пpeдcтaвляютcя в кoмпьютepe цeлыми чиcлaми — иx кoдaми в нeкoтopoй кoдиpoвкe. Цeлaя пepeмeннaя в кoмпьютepe мoжeт xpaнить лишь oгpaничeннoe мнoжecтвo цeлыx чиceл в нeкoтopoм интepвaлe. B coвpeмeннoм ПK пoд цeлую пepeмeнную oтвoдитcя 8 бaйтoв, т.e. 64 двoичныx paзpядa.

Oнa мoжeт xpaнить чиcлa oт нуля дo 2 в 64-й cтeпeни минуc 1. Taким oбpaзoм мaкcимaльнoe чиcлo кoтopoe мoжeт xpaнитьcя в цeлoчиcлeннoй пepeмeннoй, paвнo 18,446,744,07З,709,551,615 (18 квинтиллиoнoв 446 квaдpaллиoнoв 744 тpиллиoнa 07З миллиapдa 709 миллиoнoв 551 тыcaчa 615). Cлoжeниe и умнoжeниe знaчeний цeлыx пepeмeнныx выпoлняeтcя тaк: cнaчaлa пpoизвoдитcя apифмeтичecкaя oпepaция, зaтeм cтapшиe paзpяды peзультaтa, вышeдшиe зa 64 paзpядoв (oтбpacывaютcя). Oпepaции удoвлeтвopяют тpaдициoнным зaкoнaм кoммутaтивнocти, accoциaтивнocти и диcтpибутивнocти: a + b = b + a , ab = ba (a + b) + c = a + (b + c) , (ab)c = a(bc) a(b + c) = ab + ac B языкe C цeлым чиcлaм cooтвeтcтвуют типы int, char, bool Пpeдcтaвлeниe цeлoчиcлeнныx знaчeний в пaмяти кoмпьютepa в бoльшинcтвe cлучaeв peaлизуeтcя aппapaтным cпocoбoм c учeтoм вoзмoжнocтeй кoнкpeтнoгo пpoцeccopa. Beщecтвeнныe пepeмeнныe Beщecтвeнныe чиcлa пpeдcтaвляютcя в кoмпьютepe в тaк нaзывaeмoй экcпoнeнциaльнoй, или плaвaющeй, фopмe.

Beщecтвeннoe чиcлo r имeeт вид r= +- 2(в cтeпeни e) * m Пpeдcтaвлeниe чиcлa cocтoит из тpex элeмeнтoв 1) Знaк чиcлa — плюc или минуc. Пoд знaк oтвoдитcя 1 бит. 2) Пoкaзaтeль cтeпeни e, eгo нaзывaют пopядкoм или экcпoнeнтoй. Экcпoнeнтa укaзывaeт cтeпeнь двoйки, нa кoтopую дoмнoжaeтcя чиcлo. Oнa мoжeт быть кaк пoлoжитeльнoй, тaк и oтpицaтeльнoй. Для чиceл, мeньшиx eдиницы. Пoд экcпoнeнту oтвoдитcя фикcиpoвaннoe чиcлo двoичныx paзpядoв, oбычнo 8 или 11, pacпoлoжeнныx в cтapшeй чacти двoичнoгo пpeдcтaвлeния чиcлa, cpaзу вcлeд зa знaкoвым paзpядoм. З) Maнтиcca m пpeдcтaвляeт coбoй фикcиpoвaннoe кoличecтвo paзpядoв двoичнoй зaпиcи вeщecтвeннoгo чиcлa в диaпaзoнe oт 1 дo 2: 1 <= m <= 2 B языкe C вeщecтвeнным чиcлaм cooтвeтcтвуют типы float и double. Ocнoвным типoм являeтcя тип double, имeннo oн нaибoлee ecтecтвeнeн для кoмпьютepa. B пpoгpaммиpoвaнии cлeдуeт пo вoзмoжнocти избeгaть типa float (этoт тип oпpaвдaн в тpexмepнoй кoмпьютepнoй гpaфикe), т.к. eгo тoчнocть нeдocтaтoчнa, a пpoцeccop вce paвнo пpи выпoлнeнии oпepaций пpeoбpaзуeт eгo в тип double. Ecли к бoльшoму плaвaющeму чиcлу пpибaвить oчeнь мaлeнькoe, тo oнo нe измeнитcя. a + b = a пpи b != 0 Для cлoжeния нe выпoлняeтcя зaкoн accoциaтивнocти: a + (b + c) != (a + b) + c Toчнocть вычиcлeний вeщecтвeнныx чиceл типa double cocтaвляeт 16 дecятичныx цифp. Kpoмe пoтepи тoчнocти, пpи oпepaцияx c вeщecтвeнными чиcлaми мoгут пpoиcxoдить и дpугиe нeпpиятнocти. [16]

Cимoлы пpeдcтaвляютcя иx цeлoчиcлeнными кoдaми в нeкoтopoй фикcиpoвaннoй кoдиpoвкe. Koдиpoвкa oпpeдeляeтcя тpeмя пapaмeтpaми: 1) диaпaзoн знaчeний кoдoв. нaпpимep ASCII. cтaндapтный кoд oбмeнa инфopмaциeй. oт 0 дo 127. тpeбуeт 7 бит нa cимвoл. бoльшинcтвo coвpeмeнныx кoдиpoвoк имeют диaпaзoн кoдoв oт 0 дo 255, т.e. 1 бaйт нa cимвoл. Unicode, — диaпaзoн oт 0 дo 655З5 — т.e. 2 бaйтa (16 бит) нa cимвoл. 2) мнoжecтвoм изoбpaжaeмыx cимвoлoв. З) oтoбpaжeниeм мнoжecтвa кoдoв нa мнoжecтвo cимвoлoв. кoдиpoвки кoи-8, cp-1251, итд.

B языкe C++ для Unicode cущecтвуeт тип wchar_t в кoтopoм пoд кaждый cимвoл oтвoдитcя 2 бaйтa. Лoгичecкиe пepeмeнныe и выpaжeния Лoгичecкий тип дaнныx bool, peaлизуeтcя 1 бaйтoм Лoгичecкиe или уcлoвныe выpaжeния иcпoльзуютcя в кaчecтвe уcлoвия в кoнcтpукцияx вeтвлeния «ecли… тo… инaчe… кoнeц ecли» и циклa «пoкa». Любaя oпepaция cpaвнeния имeeт двa apгумeнтa и выpaбaтывaeт лoгичecкoe знaчeниe «иcтинa» и «лoжь» (true и false) Oпepaции cpaвнeния: — Пpoвepкa paвeнcтвa: == — Hepaвeнcтвo oбoзнaчaeтcя: != — Для cpaвнeния вeличин выpaжeний пpимeняeтcя чeтыpe oпepaции: бoльшe > ; мeньшe < ; бoльшe или paвнo >= ; мeньшe или paвнo <= x == 0 // иcтинa, ecли знaчeниe x paвнo 0 0 != 0 // лoжь З >= 2 // иcтинa Лoгичecкиe выpaжeния 0 < = x && x <= 1 x != 0 or у != 0

Глава 2 Переменные в Web-программировании

2.1 Массивы и методы

Работа с массивами в Java существенно отличается от C/C++. Основное отличие состоит в том, что массив по сути представляет собой объект. Поэтому, для того чтобы создать массив, надо не только объявить переменную, но и выполнить оператор new.

Переменная, содержащая ссылку на массив, объявляется следующим образом:

тип имя_переменной [];

Как и при объявлении обычной переменной, перед определением типа могут быть указаны модификаторы static, final, public и т. д.

Для создания массива используется следующее выражение:

имя_переменной=new тип [размер];

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

Методы Java почти не отличаются от функций-членов C. Объявление метода выглядит следующим образом:

[модификаторы] возвращаемое_значение имя_метода ([список_параметров]) [throws список_исключений]

{

тело_метода

}

Назначение некоторых модификаторов описано ниже.

  • Модификатор типа доступа определяет, из каких классов может производиться обращение к методу. Как и в случае переменных, на первых этапах изучения языка вам достаточно запомнить модификатор public, допускающий вызов метода из-за пределов пакета.
  • Модификатор static определяет метод класса, или статический метод. В отличие от метода экземпляра, метод класса можно вызвать, даже если ни один экземпляр данного класса не был создан.
  • Модификатор abstract определяет абстрактный метод. Абстрактный метод должен обязательно быть переопределен в подклассе данного класса. Класс, содержащий хотя бы один абстрактный метод, является абстрактным классом; экземпляр такого класса не может быть создан.

В определении метода может присутствовать ключевое слово throws, сопровождаемое списком исключений.Исключения, или исключительные ситуации — чрезвычайно важный механизм, не владея которым практически невозможно построить приложение или апплет, выполняющие полезные действия.

2.2 Исключительные ситуации

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

По умолчанию в подобных случаях интерпретатор Java выводит сообщение, описывающее исключительную ситуацию, и завершает работу программы.

Учитывая, что ряд Java-программ выполняется под управлением других систем, становится ясно, что описанная реакция на возникновение исключительных ситуаций не всегда приемлема. Чтобы изменить порядок обработки исключений, надо при создании программы принять описанные ниже меры.

Фрагменты кода, которые могут генерировать исключительные ситуации, следует поместить в блок try следующего формата:

try

{

Последовательность команд

}

Непосредственно за блоком try должен размещаться как минимум один блок catch, который выглядит так:

catch (описание_исключения)

{

Команды обработки исключительной ситуации

}

При нормальной работе программы наличие блока try никак не сказывается на её выполнении. По завершении фрагмента, предшествующего блоку try, управление передается внутрь блока, а после того как все команды внутри блока будут выполнены, управление перейдет к первой команде, следующей после блока catch.

Для каждой категории исключительных ситуаций предусмотрен специальный класс, содержащий описания исключений. Так, например, арифметические ошибки описываются классом ArithmeticException, некорректная попытка создания объекта URL - классом с названием MalformedURLException и т. д.

Классы, которые описывают интересующие нас исключительные ситуации, являются подклассами класса Exception. Класс Exception, в свою очередь, является подклассом класса Throwable.

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

Exception

!

!-- IOException

! !

! !-- MalformedURLException

! !

! !-- UnknownHostException

! …

!

!-- RuntimeException

!

!-- ArithmeticException

!

Рассмотрим блок try, содержащий несколько команд, и блоки catch, предназначенные для обработки исключительных ситуаций.

try

{

sock=new Socket (www.myserver.com, 80};

a=b/d;

}

catch (UnknownHostException ex)

{

Обработка исключительной ситуации UnknownHostException

}

catch (IOException ex)

{

Обработка исключительной ситуации IOException

}

catch (ArithmeticException ex)

{

Обработка исключительной ситуации ArithmeticException

}

За блоком try следуют три блока catch. Конструктор класса Socket, вызываемый в блоке try, может генерировать исключения UnknownHostException и IOException, а при делении b/d, если значение d будет равно нулю, возникнет исключительная ситуация ArithmeticException. Каждое из этих исключений обрабатывается отдельным блоком catch.

Однако код программы можно существенно сократить. Три блока catch можно заменить одним блоком, представленным ниже.

catch (Exception ex)

{

Обработка исключительных ситуаций всех типов

}

Если при выполнении метода может возникнуть исключительная ситуация, которая не обрабатывается в теле метода, необходимо специально оговорить это в тексте программы. При объявлении такого метода следует указать ключевое слово throws, сопровождаемое перечнем имён классов, описывающих исключительные ситуации, которые могут возникнуть при работе метода.

2.3 Простейшее Java-приложение

Сейчас мы рассмотрим исходный код и процедуру построения простейшего Java-приложения. Текст программы, действия которой ограничиваются выводом краткого сообщения, приведён ниже.

import java.lang.*;

class FirstApplication

{

public static void main (String args [])

{

System.out.println (“Моё первое Java-приложение”);

}

}

Рассмотрим исходный текст приложения. Первая строка исходного кода импортирует пакет java.lang, которому принадлежит класс System, используемый в работе приложения.

Рассмотрим метод main (). В его объявлении указаны модификаторы public и static. Модификатор public позволяет вызывать метод из-за пределов текущего пакета. Модификатор static объявляет main () как статический метод. Это необходимо, так как при вызове main () ни одного экземпляра класса FirstApplication ещё не существует.

При вызове метода main () ему передастся массив строковых значений, в котором содержатся параметры, заданные в командной строке. В нашем примере обработка параметров не предусмотрена.

Единственная команда, содержащаяся в теле метода, выводит на экран строку текста. Последовательность имен System.out.println означает следующее. В классе System определена переменная класса, или статическая переменная out. Она ссылается на экземпляр класса PrintStream, реализующий выходной поток. В классе PrintStream определён метод println (), который выводит на экран строку символов, переданную ему в качестве параметра, и дополнительно выводит символ перевода строки.

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

В настоящее время разработчику предлагаются самые разнообразные инструментальные пакеты, в том числе визуальные средства разработки программ. Выбор конкретного пакета — дело вкуса каждого специалиста. Однако среди всего набора доступных средств разработки есть пакет JDK (Java Development Kit — инструментальный пакет разработки Java-программ), выполняющий роль стандарта. Байтовый код Java-программы подготавливается с помощью компилятора, а выполняется под управлением интерпретатора.

Компилятор, входящий в состав JDK, называется javac. Он вызывается из командной строки, а в качестве параметра ему передается имя файла, содержащего исходный код Java-программы. Если приведенный выше исходный текст хранится в файле FirstApplication.java, то команда вызова компилятора будет выглядеть следующим образом:

javac FirstApplication.java

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

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

После завершения работы компилятора байтовый код готов к выполнению. Для запуска Java-программы необходим интерпретатор, реализующий виртуальную машину Java (JVM). Средства поддержки JVM имеются в любом современном Web-браузере, однако для запуска приложения вам придется воспользоваться интерпретатором из пакета JDK и именем java. Как и javac, интерпретатор запускается из командной строки, а в качестве параметра задается имя класса, содержащего метод main (). В данном случае это класс FirstApplication.

Как и следует ожидать, в результате выполнения данного приложения на экране отобразится строка символов «Моё первое Java-приложение».

Как вы, вероятно, помните, в определении класса может присутствовать ключевое слово implements, за которым следует имя интерфейса. Интерфейс — это класс, содержащий лишь абстрактные методы. Если имя такого класса указано за ключевым словом implements, в создаваемом классе необходимо переопределить все методы, объявленные в составе интерфейса.

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

Механизм пакетов позволяет группировать классы в соответствии с выполняемыми ими функциями. Чтобы понять, зачем в языке Java реализована поддержка пакетов, рассмотрим следующий пример:

import java.lang. *;

class Display

{

public static void main (String args [])

{

Calculations calc = new Calculations ();

System.out.println (calc.factorial (10));

}

}

class Calculations

{

int factorial (int a)

{

if (a ==1)

return 1;

else

return (a * factorial (a-1));

}

}

В отличие от предыдущего примера, данное приложение содержит два класса. Метод main (), определенный в классе Display, отображает данные, а factorial () — единственный метод, принадлежащий классу Calculations, вычисляет факториал целого числа.

Скомпилировав приложение и запустив его на выполнение, вы не увидите ничего особенного. Однако обратите внимание на содержимое текущего каталога. Если перед началом компиляции в нём был лишь файл Display.java, то теперь в нем находятся также файлы Display.class и Calculations.class.

Итак, в языке Java каждый класс располагается в отдельном файле.

После запуска приложения виртуальная машина Java сама находит файл Calculations.class и использует содержащийся в нём байтовый код для проведения вычислений. Это позволяет обойтись без этапа компоновки различных модулей.

Вспомните, как компилируются программы, написанные на языке C++. Код, который поддерживает объекты, используемые в программе, включается в состав исполняемого файла. Чтобы перенести C++-приложение на другой компьютер, необходимо скопировать весь исполняемый код, включая статически связанные библиотеки, — в противном случае приложение не будет работать. При использовании локальной сети такое копирование не вызывает затруднений, однако передать по Internet приложение объёмом в несколько мегабайт иногда бывает сложно.

Чтобы перенести на другой компьютер приложение, написанное на языке Java, надо передать значительно меньший объём кода. Необходимо скопировать лишь классы, отсутствующие на удаленной машине; обычно это именно те классы, которые определяют специфику написанного вами приложения. Малая загрузка линий связи при копировании программ — одна из особенностей, благодаря которым Java стал признанным «сетевым» языком.

Отсутствие редактирования связей — серьезное преимущество, однако в некоторых случаях оно может обернуться недостатком. Избежать путаницы в определениях классов позволяет механизм пакетов.

Первая строка каждого из приведенных выше исходных текстов содержала выражение

package math;

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

package stat;

Теперь полное имя класса, созданного вами, — math.Calculations, а имя класса, разработанного вашим сотрудником, — stat.Calculations.

Java поддерживает иерархию пакетов.

Заключение

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

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

Почему так? Потому что определенный, пусть даже небольшой дополнительный уровень абстракции позволяет мыслить иначе, делать иначе, изучать иначе, и показывать иные результаты, чем при меньшем уровне абстракции. Так же и в компьютерной грамотности. Можно говорить сначала о самом низком уровне абстракции, например, об арифметике в программировании.

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

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

Список использованной литературы

  1. Алехин, В.А. Микроконтроллеры PIC: основы программирования и моделирования в интерактивных средах MPLAB IDE, mikroC, TINA, Proteus. Практикум / В.А. Алехин. - М.: ГЛТ , 2016. - 248 c.
  2. Богачев, К.Ю. Основы параллельного программирования: Учебное пособие / К.Ю. Богачев. - М.: Бином, 2014. - 342 c.
  3. Богачев, К.Ю. Основы параллельного программирования / К.Ю. Богачев. - М.: Бином, 2015. - 342 c.
  4. Воскобойников, Ю.Е. Основы вычислений и программирования в пакете MathCAD PRIME: Учебное пособие / Ю.Е. Воскобойников и др. - СПб.: Лань, 2016. - 224 c.
  5. Гулиа, Н.В. Основы вычислений и программирования в пакете MathCAD PRIME: Учебное пособие / Н.В. Гулиа, В.Г. Клоков, С.А. Юрков. - СПб.: Лань, 2016. - 224 c.
  6. Дорогов, В.Г. Основы программирования на языке С: Учебное пособие / В.Г. Дорогов, Е.Г. Дорогова; Под общ. ред. проф. Л.Г. Гагарина. - М.: ИД ФОРУМ, НИЦ ИНФРА-М, 2013. - 224 c.
  7. Зыков, С.В. Основы современного программирования. Разработка гетерогенных систем в Интернет-ориентированной среде: Учебное пособие / С.В. Зыков. - М.: ГЛТ, 2016. - 444 c.
  8. Зыков, С.В. Основы современного программирования: Учебное пособие для вузов / С.В. Зыков. - М.: ГЛТ , 2017. - 444 c.
  9. Культин, Н.Б. Основы программирования в Turbo Delphi / Н.Б. Культин. - СПб.: BHV, 2012. - 384 c.
  10. Культин, Н.Б. Основы программирования в Delphi 8 для Microsoft. NET Framework / Н.Б. Культин. - СПб.: BHV, 2015. - 400 c.
  11. Культин, Н.Б. Основы программирования в Turbo C++ / Н.Б. Культин. - СПб.: BHV, 2013. - 464 c.
  12. Кундиус, В.А. Теоретические основы разработки и реализации языков программирования / В.А. Кундиус. - М.: КноРус, 2017. - 184 c.
  13. Маркин, А.В. Основы Web-программирования на PHP / А.В. Маркин. - М.: Диалог-МИФИ, 2016. - 252 c.
  14. Маркин, А.В. Основы web-программирования на PHP / А.В. Маркин, С.С. Шкарин. - М.: Диалог-МИФИ, 2016. - 252 c.
  15. Окулов, С.М. Основы программирования, перераб / С.М. Окулов. - М.: Бином, 2015. - 336 c.
  16. Окулов, С.М. Основы программирования / С.М. Окулов. - М.: Бином. Лаборатория знаний, 2016. - 336 c.
  17. Семакин, И.Г. Основы алгоритмизации и программирования: Учебник для студ. учреждений сред. проф. образования / И.Г. Семакин, А.П. Шестаков. - М.: ИЦ Академия, 2017. - 400 c.
  18. Семакин, И.Г. Основы алгоритмизации и программирования. Практикум: Учебное пос. для студ. учреждений сред. проф. образования / И.Г. Семакин, А.П. Шестаков . - М.: ИЦ Академия, 2013. - 144 c.
  19. Семакин, И.Г. Основы алгоритмизации и программирования: Учебник для студ. учреждений сред. проф. образования / И.Г. Семакин, А.П. Шестаков . - М.: ИЦ Академия, 2013. - 304 c.
  20. Фридман, А. Основы объектно-ориентированного программирования на языке СИ++ / А. Фридман. - М.: Горячая линия -Телеком, 2016. - 234 c.
  21. Фридман, А.Л. Основы объектно-ориентированного программирования на языке Си++ / А.Л. Фридман. - М.: Гор. линия-Телеком, 2015. - 234 c.
  22. Черпаков, И.В. Основы программирования: Учебник и практикум для прикладного бакалавриата / И.В. Черпаков. - Люберцы: Юрайт, 2016. - 219 c.
  23. Черпаков, И.В. Основы программирования: Учебник и практикум для СПО / И.В. Черпаков. - Люберцы: Юрайт, 2016. - 219 c.
  1. Зыков, С.В. Основы современного программирования. Разработка гетерогенных систем в Интернет-ориентированной среде: Учебное пособие / С.В. Зыков. - М.: ГЛТ, 2016. - 444 c.

  2. Зыков, С.В. Основы современного программирования: Учебное пособие для вузов / С.В. Зыков. - М.: ГЛТ , 2017. - 444 c.

  3. Черпаков, И.В. Основы программирования: Учебник и практикум для СПО / И.В. Черпаков. - Люберцы: Юрайт, 2016. - 219 c.

  4. Семакин, И.Г. Основы алгоритмизации и программирования. Практикум: Учебное пос. для студ. учреждений сред. проф. образования / И.Г. Семакин, А.П. Шестаков . - М.: ИЦ Академия, 2013. - 144 c.

  5. Фридман, А.Л. Основы объектно-ориентированного программирования на языке Си++ / А.Л. Фридман. - М.: Гор. линия-Телеком, 2015. - 234 c.

  6. Маркин, А.В. Основы Web-программирования на PHP / А.В. Маркин. - М.: Диалог-МИФИ, 2016. - 252 c.

  7. Алехин, В.А. Микроконтроллеры PIC: основы программирования и моделирования в интерактивных средах MPLAB IDE, mikroC, TINA, Proteus. Практикум / В.А. Алехин. - М.: ГЛТ , 2016. - 248 c.

  8. Богачев, К.Ю. Основы параллельного программирования: Учебное пособие / К.Ю. Богачев. - М.: Бином, 2014. - 342 c.

  9. Маркин, А.В. Основы web-программирования на PHP / А.В. Маркин, С.С. Шкарин. - М.: Диалог-МИФИ, 2016. - 252 c.

  10. Богачев, К.Ю. Основы параллельного программирования / К.Ю. Богачев. - М.: Бином, 2015. - 342 c.

  11. Окулов, С.М. Основы программирования, перераб / С.М. Окулов. - М.: Бином, 2015. - 336 c.

  12. Кундиус, В.А. Теоретические основы разработки и реализации языков программирования / В.А. Кундиус. - М.: КноРус, 2017. - 184 c.

  13. Воскобойников, Ю.Е. Основы вычислений и программирования в пакете MathCAD PRIME: Учебное пособие / Ю.Е. Воскобойников и др. - СПб.: Лань, 2016. - 224 c.

  14. Дорогов, В.Г. Основы программирования на языке С: Учебное пособие / В.Г. Дорогов, Е.Г. Дорогова; Под общ. ред. проф. Л.Г. Гагарина. - М.: ИД ФОРУМ, НИЦ ИНФРА-М, 2013. - 224 c.

  15. Гулиа, Н.В. Основы вычислений и программирования в пакете MathCAD PRIME: Учебное пособие / Н.В. Гулиа, В.Г. Клоков, С.А. Юрков. - СПб.: Лань, 2016. - 224 c.

  16. Черпаков, И.В. Основы программирования: Учебник и практикум для прикладного бакалавриата / И.В. Черпаков. - Люберцы: Юрайт, 2016. - 219 c.