Skip to main content

1. Целые числа

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

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

В ведении мы рассмотрели простейшую программу на Java:

package com.company;

public class Main {

public static void main(String[] args) {
// write your code here
}
}

Для выполнения любого из заданий все команды нужно писать между public static void main(String[] args) { и }. Эта конструкция называется главный метод.

Сейчас внутри главного метода всего одна команда:

    // write your code here

Это - команда комментария. Она ничего не делает. Если в начале команды стоит две косых черты //, то всё, что написано после них до конца строки при компиляции не учитывается. Комментарии очень полезны в больших программах, чтобы было проще разбираться в исходниках.

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

Важно: после каждой команды в Java ставится ;.

Например, строчка создаёт переменную с названием a типа int.

   int a;

Хотя в Java есть несколько целочисленных типов данных, пока что мы рассмотрим только один. Этот тип данных называется int. Он занимает 44 байта. Диапазон его значений равен [2147483648, 2147483647][-2147483648,~ 2147483647].

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

   int a;
a = 5;

В этом коде написано две команды: первая - это объявление переменной, вторая - присваивание ей значения.

Эти две команды можно заменить одной:

   int a = 5;

Новой командой мы сразу же и создаём переменную, и инициализируем её значением 55.

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

   int a = 5;
int b;
b = a;

Этот фрагмент кода объявляет переменную a, инициализирует её значением 55. После этого объявляется переменная b и следующей командой в переменную b сохраняется значение, которое сохранено в a, т.е. 55.

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

   int a;
a = 7;
int b = 5;
int c = a + b;

Сначала мы объявили переменную a типа int, потом присвоили ей значение 77, потом создали переменную b и инициализировали её значением 55. После этого мы создали третью переменную c и инициализировали её значением, равным сумме значений, лежащих в переменных a и b.

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

  • * - умножение
  • - - разность
  • / - частное от целочисленного деления (div)
  • % - остаток от деления

Хотя есть и другие, более сложные, но мы их рассматривать в этом задании не будем.

Обратите внимание: % - знаковая функция, т.е. -11 % 2 = -1.

Основной смысл программирования заключается в автоматизации рутинной работы.

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

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

   Scanner sc = new Scanner(System.in);

После этого каждая команда вида

   a = sc.nextInt();

Будет считывать с консоли очередное целое число и помещать его в переменную a.

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

Перепишем теперь нашу программу так, чтобы она считывала два числа с клавиатуры в переменные a и b, а после сохраняла в переменную c их сумму.

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c;
c = a + b;
}
}

Обратите внимание: в первой строке исходников появилась строчка import java.util.Scanner;

Она тоже обязательна при использовании сканера. Пока что её тоже придётся выучить.

Теперь мы можем ввести с клавиатуры два числа:

xor

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

Это делается при помощи команды System.out.print():

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c;
c = a + b;
System.out.print(c);
}
}

xor

Подробнее о команде System.out.print() написано во введении.

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

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();`
int c = a + b;
int d = a - b;
int e = a * b;
int f = a / b;
int g = a % b;
System.out.println(c);
System.out.println(d);
System.out.println(e);
System.out.println(f);
System.out.println(g);
}
}

Введём числа 5050 и 2020, получим ответ:

70
30
1000
2
10

Если нам нужно записать более сложное выражение, например: a+10bc(d+20)a+10b-c(d+20), то для записи его на языке java, нужно учитывать порядок действий.

Порядок арифметических действий определяется их приоритетом. Самый высокий приоритет имеют скобки, как в математике. Следующими в порядке понижения приоритета идут операции *, /, %. Самый низкий приоритет у + и -.

Задание

  1. Даны целые числа AA и BB. Найти их сумму.
  2. Даны целые числа AA и BB. Найти их произведение.
  3. Дано расстояние в сантиметрах. Найти число полных метров в нем.
  4. Дано целое число. Выведите на экран:
    • следующее в порядке возрастания число,
    • удвоенное значение числа,
    • противоположное число,
    • квадрат числа.
  5. Дано двузначное число. Найти:
    • число десятков в нем;
    • число единиц в нем;
  6. Дано двузначное число. Найти:
    • сумму его цифр;
    • произведение его цифр.
  7. Дан прямоугольник с размерами nn и mm мм. Сколько квадратов со стороной kk мм можно отрезать от него?

Ссылка на контест