Операция присваивания. Типы данных, арифметические операции.




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

Согласно ГОСТ 34.003-90, алгоритм – конечный набор предписаний для получения решения задачи посредством конечного количества операций [1].

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

С точки зрения информационных технологий, можно ввести иное определение алгоритма. Алгоритм (algorithm) – это формально описанная вычислительная процедура, получающая исходные данные (input), называемые также входом алгоритма или его аргументом, и выдающая результат вычислений на выход (output) [2].

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

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

Согласно ГОСТ 28397-98, переменная – языковый объект, который может принимать различные значения. Приведем аналогию на примере решения арифметического уравнения.

Пусть дано уравнение:

(1)

Здесь – неизвестная величина, корень уравнения, которая также называется переменной. Очевидно, что – некоторое число (для нашего уравнения это 9), которое записано в виде символа.

Мы можем заменить и другие числа в данном уравнении на символы. Пусть:

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

(2)

Опишем теперь процесс решения уравнения с помощью алгоритма. Будем описывать процесс решения с помощью формул, которые мы будем получать из уравнений (1) и (2).

Прежде всего перенесем известные величины в правую часть со сменой знака. В (1) это число 17, а в (2) это символ c:

Теперь мы можем провести вычитание в правой части. Пусть результат этого действия будет также в процессе описания алгоритма вычисления (2) представлен как d:

Очевидно, что:

Остается только выразить x и найти тем самым корень уравнения:

Очевидно, что (1) является частным случаем (2): если на месте a, b и c подставить другие значения, то получится другое уравнение, которое, тем не менее может быть решено с помощью описанного нами алгоритма.

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

Введем, наконец, определения объявления и присваивания.

Согласно ГОСТ 28397-89, объявление – это соглашение о характеристике языкового объекта или выполняемом действии при отсутствии их явного описания.

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

Согласно этому же ГОСТу, присваивание – это механизм придания значения переменной в языке программирования.

В нашем случае присваивание значит то, что переменная получит какое-либо значение.

Закончим ввод определений понятием типа данных.

Снова обратившись к ГОСТу, мы обнаружим следующее определение:

тип данных - множество значений вместе с множеством допустимых над ними операций.

В случае программирования мы имеем ввиду следующее:

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

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

Объявление переменной на языке Java имеет следующий вид:

Рассмотрим эту конструкцию.

1. Сперва записывается список модификаторов – ключевых слов, которые могут добавить дополнительные свойства для переменной: например, модификатор final запрещает дальнейшее изменение переменной. Важно: модификаторы не являются обязательными прим объявлении, а потому их может и не быть!

2. Затем записывается тип данных переменной. Подробнее с типами данных мы познакомимся ниже.

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

4. Команда заканчивается точкой с запятой.

Конструкция присваивания имеет следующий вид:

Рассмотрим эту конструкцию.

1. Сперва записывается имя той переменной, котором мы собираемся присвоить значение.

2. После имени записывается знак «=».

3. После знака «=» записывается само значение переменной.

4. Команда заканчивается точкой с запятой.

Важно: объявление и присваивание могут быть записаны в виде одной команды:

Рассмотрим, как это выглядит на примере.

Листинг 1 – Объявления переменных

int a;
float b;
double c, d, e; byte f = 1; e = 2.2; long g, h = 202;
final String s = "FINAL";

В строке 1 листинга 1 мы видим объявление целочисленной переменной a. Сперва записан тип данных int, затем имя переменной. Операция (как и почти все другие операции в Java) заканчивается точкой с запятой.

В строке 2 мы видим аналогичное объявление переменной b типа floatчисла с плавающей запятой (дробного числа – ознакомьтесь с понятием плавающей запятой самостоятельно).

В строке 3 представлено объявление нескольких переменных типа double. Переменные перечислены через запятую.

В строке 4 показано одновременной объявление переменной и присваивание ей значения. Как и в случае объявления, сперва записывается тип данных, затем имя, после чего пишется знак «=», после чего записывается присваиваемое значение.

В строке 5 показано присваивание значения переменной. Слева от знака «=» записывается имя переменной, справа – присваиваемое значение.

В строке 6 мы видим присваивание значения переменной во время их перечисления. Синтаксис такого действия во многом аналогичен предыдущим.

Наконец, в строке 7 записано одновременное объявление и присвоение значения строковой переменной s с модификатором final. Сперва записан модификатор, затем тип данных, затем имя переменной. После этого записан знак «=», после чего записано значение переменной.

Опишем теперь типы данных, доступные в языке Java.

Типы данных в Java могут быть разделены на две большие группы:

1. примитивные;

2. ссылочные.

Примитивные типы данных – это 8 простейших типов данных, которые должны быть инициализированы (иметь присвоенное значение) перед использованием. К ним относятся:

· byte;

· short;

· int;

· long;

· float;

· double;

· boolean;

· char.

Примитивные типы данных имеют заданные размеры объектов (переменных) и ведут себя одинаково в различных реализациях Java. Разрядности и пределы числовых типов представлены в таблице 1.

Таблица 1 – характеристики числовых примитивов

Тип Разрядность MIN MAX
byte 8 бит -128  
short 16 бит -32768  
int 32 бит -2147483648  
long 64 бит -9223372036854775808  
float 32 бит -3.4E+38 3.4E+38
double 64 бит -1.7E+308 1.7E+308

Тип данных boolean имеет только два доступных значения: true и false. Этот тип не является числовым – в отличии от, например языка C++, где за ложь отвечает 0, а за истину другое число, в Java тип boolean не представляется с помощью чисел, а его размер зависит от виртуальной машины.

Тип данных char представляет собой представление 16-битного символа Юникода. Этот тип может быть представлен с помощью числа и может быть задействован в арифметических операциях.

Важно: имея ввиду понятие «символ», мы подразумеваем не только те символы, которые нам видны, но также и рядом управляющих символов:

· ‘\n’ – перенос строки;

· ‘\t’ – табуляция;

· ‘\r’ – перемещает каретку (позицию печати) в крайнюю левую позицию строки без перехода на новую строку;

· и т.д.

Рассмотрим пример присваивания значения типа char на примере листинга 2.

Листинг 2 – Объявления символов

char a=’a’;
char b=97;

В строке 1 показана первая форма присвоения записи символа «a» переменной a. Символы отмечаются одинарными кавычками.

В строке 2 показано представление символа «a» в виде числа. Это возможно в силу того, что символы закодированы с помощью таблиц кодировок (рассмотрите это понятие самостоятельно).

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

Важно: названия ссылочных типов данных в большинстве случаев начинаются с прописной (большой) буквы. Например: Scanner, String, PrintWriter.

Важным примером ссылочных типов данных является String.

String – строковой тип данных, представляющие собой последовательность символов. Рассмотрим пример присвоения строки:

Листинг 3 – Объявления строк

String s = "string";

String s2 = new String("String 2");

String s3 = new String();

System.out.print(s+"\n"+s2+"\n"+s3+"\n");

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

В строках 2 и 3 показано создание строки с помощью оператора new (аналогично созданию сканера)– подробнее об этом будет рассказано в модуле 2.

Важно: строка 3 корректна – мы не указали, какое значение должна принять строка, поэтому она примет значение по умолчанию – пустая строка.

В строке 4 показан вывод трех строк с помощью символа перевода строки и команды System.out.print. Аналогичный вывод можно было бы получить, выведя каждую строку отдельно с помощью команды System.out.println (проверьте это самостоятельно).

Важно: для строк определена операция сложения, называемая конкатенацией. При её выполнении к концу первой строки дописывается вторая строка. Синтаксис сложения строк аналогичен сложению чисел. Другие арифметические операции для строк не определены.

Арифметические операции в Java:

· сложение;

· вычитание;

· умножение;

· деление;

· остаток от деления (деление по модулю).

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

Листинг 4 – Примеры арифметики

int x = 4+3;

int b;

b = 7*x;

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

Таблица 1 – характеристики числовых примитивов

Операция Обычная запись Сокращенная запись
Сложение int a=a+b; a+=b;
Вычитание int a=a-b; a-=b;
Умножение int a=a*b; a*=b;
Деление int a=a/b; a/=b;
Деление по модулю int a=a%b; a%=b;

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

Листинг 5 – Пример потери точности

int x = 7/2;//сохранится 3, будет потеряно 0.5

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

Рисунок 1 – Схема приведения типов

Типы с меньшей размерностью приводятся к типам с большей размерностью автоматически:

Листинг 6 – Пример автоматического приведения типов

float x=1;

double y=x;

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

Листинг 7 – Пример автоматического приведения типов

float x=1;

long y=(long) x;

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

Листинг 8 – Приведение к строке

String x = “Answer: “+(1+2);

Задание: повторить материал презентаций и учебника ИТ-школы, выполнить задания (включая доп. задания) пунктов 1.2; задачник «1000 задач по программированию», том 1, блок Integer – минимум 7 задач.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-03-12 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: