Читать книгу «Объектно-ориентированное программирование на Java. Платформа Java SE» онлайн полностью📖 — Тимура Машнина — MyBook.
image

Выражения


Теперь каким способом можно хорошо представить, что такое компьютер?

И какие есть концепции языка программирования?

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

И мы постепенно преобразуем простой калькулятор в компьютер.

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

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

Вы использовали калькулятор много раз.

И вы знаете из чего он состоит.



Здесь есть клавиши с цифрами, которые помогут вам составить число.

Составленные числа отображаются на дисплее.

И тогда вы можете выполнять операции с этими числами,

Для которых вы используете другие клавиши, которые представляют эти операции.

Мы начнем с рассмотрения базового калькулятора.

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

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

Теперь, используя цифры, вы можете писать выражения и запрашивать их вычисления.

Выражение содержит числа и арифметические операции.

Эти выражения называются числовыми выражениями.

Теперь давайте улучшим этот калькулятор.

Но сначала давайте поговорим о выражениях.

Как правило, мы думаем о выражениях математически.

Это выражение равно другому выражению или какому-либо значению.

И это очень хорошая абстракция в большинстве случаев.

Но на самом деле мы знаем, что вычисление выражения требует усилий и времени.

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

И вычисление более сложного выражения может занять больше времени.

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

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

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

Поэтому, рассмотрим такой калькулятор, где у нас есть запоминание.

Здесь у нас есть несколько клавиш для хранения или получения значений из этой памяти.



Функция запоминания позволяет нам сохранить значение для будущего использования.

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

Иногда есть третья клавиша, MC для очистки памяти,

Назовем эти две клавиши для работы с памятью set и get.

Сейчас ячейки памяти названы предопределенными именами, M1, M2 и т. д.

Но мы хотели бы назвать их x и y, как мы привыкли в математике.

И мы будем присваивать этим ячейкам памяти имена переменных.



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

Мы можем сказать, что значение переменной неопределенно.

Поэтому, если мы попытаемся получить это значение, мы получим ошибку.

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

Теперь мы хотим, чтобы дисплей показывал что-то, когда мы нажимаем кнопки Set или Get.

Давайте сначала поговорим о Set.

Предположим, что дисплей показывает число 3, и что мы нажимаем кнопку set переменной x.

Теперь значение 3 будет храниться в переменной x.



И дисплей может показать что-то вроде x равно 3 точка с запятой,

Чтобы записать то, что мы только что сделали.

Мы говорим, что мы назначили значение 3 переменной X, и записали это как x равно 3 в инструкции присваивания.

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

Например, представьте, что у нас есть 5 на дисплее,

И мы хотим добавить значение x.

Мы нажимаем символ плюса, а затем кнопку Get х.

Таким образом, мы увидим на дисплее 5 плюс x.



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

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

Поэтому на дисплее написано d равно перед выражением.

Таким образом мы преобразуем выражение в операцию.

На слайде показаны различные выражения присваивания.



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

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

Теперь может оказаться, что одна и та же переменная появляется как слева, так и справа от присваивания.

Давайте проанализируем это более подробно.

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

Представьте, что мы имеем три переменные x, y и z.



Мы не знаем их начальных значений.

У нас есть первая операция, которая присваивает 1 переменной x.

Поэтому после выполнения содержимое переменной x равно 1.

Следующая операция присваивания y равно x плюс 1.

Сначала мы должны оценить выражение справа, x плюс 1.

Для этого нам нужно получить значение, сохраненное в x.

Поэтому мы получаем 2 и 2 сохраняем в y.

Мы всегда работаем справа налево.

Сначала вычисляем выражение, а затем сохраняем результат в переменной.

Теперь мы сначала получаем значения x и y, складываем их вместе, получаем 3 и сохраняем 3 в x.

Переменные вместе со значениями – это то, что мы называем состоянием.

Таким образом, оператор присваивания преобразует одно состояние в другое состояние.

Здесь состояния обозначены фигурными скобками.



Коллекция значений переменных – это состояние.

Поэтому присваивание приводит к изменению состояния.

Теперь представьте, что вы сегодня делаете расчеты, и вы хотите повторить те же самые вычисления завтра.

Для этого вам нужно будет ввести все выражения снова.

Поэтому мы хотели бы иметь возможность записывать вычисления.

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

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

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

Мы называем эту запись программой.

На данный момент программа является последовательностью простых вычислений.

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

Теперь наш калькулятор становится все больше похож на компьютер.

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

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

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

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



На дисплее теперь отображается история операций.

Это то, что мы называем программой.

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

Таким образом, мы получим простой компьютер.

В общем и целом, программа является не чем иным, как записанным вычислением.

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

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

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


Основные операторы


Калькулятор, которые мы рассматривали, работал с числами.

Мы использовали числа и операции с числами для получения чисел.

Теперь, что делать, если вы хотите сравнить два числа?

Если мы хотим проверить, например, 5 меньше 6 или нет.

Ответ может быть положительным или отрицательным, – да или нет.

Это будет утверждение истинное или ложное.

В этом случае true и false также являются значениями, но они не являются числовыми значениями.

Их называют булевыми значениями в честь математика Джорджа Була.

Существует шесть операций сравнения – меньше чем, больше чем, меньше или равно, больше или равно.



И наконец, мы должны проверить, являются ли два значения равными или разными.

Результатом проверки будет булево значение true или false.

Булевы значения представляют собой тип данных с двумя значениями true и false.

Мы могли бы назвать их да или нет, или один и ноль, но мы будем называть их true и false, как это делает Java.

И так же, как у нас были арифметические операции, теперь мы имеем несколько булевых операций.

Давайте посмотрим на некоторые из них.



Отрицание, которое также называется «нет» и представлено восклицательным знаком.

Эта операция принимает одно логическое значение, один аргумент, и возвращает другое логическое значение.

Конъюнкция – это еще одна операция, также называемая «и», и она представлена двумя амперсандами.

Эта операция принимает два значения, два аргумента.

И еще одна операция – дизъюнкция, также называемая «или», и она представлена двумя вертикальными полосами.

Эта операция также принимает два аргумента.

Операция отрицания принимает одно логическое значение и возвращает также логическое значение, а именно другое.

Таким образом, отрицание true, это false и наоборот.

Операция «и» принимает два boolean значения в качестве аргумента и возвращает boolean значение.

И результат true, если оба аргумента true, и false в противном случае.

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

Теперь результат true, если какой-либо аргумент true, и false, если оба аргумента являются false.

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

Таким образом, суммируя, в Java мы имеем следующие основные операторы.



А также оператор присваивания = равно.




Переменные

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

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

Объявление должно включать сначала тип данных переменной.



В Java существует несколько типов данных, предусмотренных для чисел.

На данный момент для упрощения, представьте себе, что у нас есть один тип данных, называемый «int».

«int» включает в себя как положительные, так и отрицательные целые числа, в некоторых пределах.



Таким образом, объявление переменной состоит из имени типа, затем имени переменной и точки с запятой.

Имя переменной можно выбирать с некоторыми ограничениями.

В некоторых случаях мы также называем имя переменной идентификатором переменной.

Теперь, как мы можем создавать имена для переменных?

По сути, имена – это слова, которые должны следовать некоторым правилам.

И вот некоторые правила.



Имена должны начинаться с буквы или символа подчеркивания.

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

Другие специальные символы не допускаются.

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

Итак, «n» и «_n» являются правильными именами, тогда как «n?» не может использоваться.

И вы не можете использовать цифру в начале имени.

«n1» является правильным именем, а «1n» – нет.