Файл: Лекция 1 Переменные и основные типы данных. Операторы. Циклы. Массивы Типы данных Типы переменных.pptx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 05.02.2024

Просмотров: 16

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Лекция 1 Переменные и основные типы данных. Операторы. Циклы. Массивы

Типы данных

Типы переменных

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

Типы переменных:

Простые типы (передаются по значению)

Ссылочные типы (передаются по ссылке)

Классы-оболочки

Явное приведение типов

Пример:

byte x = 100;

byte y = 50;

byte z = x+y; //Ошибка!!

byte z = (byte) (x+y) //Все работает, но неправильно

int z = x + y; // Все работает правильно

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

Базовые операторы

Арифметические операторы

Логические операторы Java

Тернарный оператор

условие ? выражение1 : выражение2 (a : b ? с)

Если первый операнд равен true , то в качестве результата возвращается значение второго операнда b, если же a равно false, то возвращается значение с.

Пример:

int number = new Random().nextInt();

String text = number%2 == 0 ? "четное" : "нечетное";

Сделать задания 1, 2

Управляющие конструкции

Условный оператор if

if (условие_1) {

команды_1

} else if (условие_2) {

команды_2

} else {

команды_3

}

Switch-case

switch(выражение) {

case значение_1:

команды_1;

break;

case значение_2:

команды_2;

break;

default:

команды;

}

Цикл while и do-while

While (условие) {

команды;

}

do {

команды;

} while (условие);

Цикл for

for (инициализация; условие; изменение_значений) {

команды

}

break и continue

Оператор break завершает последовательность операторов в операторе switch, позволяет выйти из цикла и может использоваться в качестве оператора безусловного перехода (goto):

while(true) {

double d = Math.random();

if(d > 0.8)

break;

System.out.println("d = " + d);

}

Массивы

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

// объявление переменной массива

int[] myArray;

// Создание массива и запись ссылки на массив в переменную массива

myArray = new int[10];

Присваивание и сравнение массивов

Фактическим значением переменной массива является адрес области памяти, где расположен массив.

double[] firstArray;

double[] secondArray;

firstArray[] = new double[10];

secondArray = firstArray;

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

Двумерные массивы

Двумерный массив – это одномерный массив, элементами которого являются одномерные массивы.

int[][] doubleArray = new int[3][4];

Инициализация двумерного массива:

char[][] symbols = new char[][]{{‘a’}, {‘b’, ’c’}, {‘d’, ‘e’, ‘f’}};

Вывод:

a

b с

d e f

Пример создания и инициализации массива

System.out.println("Введите размер матрицы: ");

Scanner sc = new Scanner(System.in);

int size = sc.nextInt();

int[][] nums = new int[size][size];

for (int i=0; i for (int j=0; j nums[i][j] = new Random().nextInt(10); System.out.print(nums[i][j]+" "); } System.out.println(); } java.util.Arrays Arrays – это вспомогательный класс для управления массивами. Он содержит инструменты сортировки, вывода, копирования, сравнения массивов. Основные методы этого класса: copyOfRange() equals() fill() sort() toString() Пример // Создаем массив типа int int[] firstArray = new int[10]; // Заполняем его числом 42 Arrays.fill(firstArray, 42); // Заполняем вручную случайнми числами for (int i = 0; i < firstArray.length; i++) firstArray[i] = new Random().nextInt(10); // Создаем новый массив и копируем туда первые 5 элементов первого //массива int[] secondArray = Arrays.copyOfRange(firstArray, 0, 5); // Сортируем получившийся массив Arrays.sort(secondArray); // Выводим на экран отсортированный массив System.out.println(Arrays.toString(secondArray)); Цикл foreach for(тип_переменной переменная : массив) { команды } Пример: byte[][] array = new byte[][]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; for (byte b : array) { System.out.println(b); } Сделать задания 5, 6 Задания Объявить String-переменную, содержащую число и преобразовать в число используя Integer.parseInt() и Double.parseDouble(). Выделить их в отдельные методы, которые в качестве аргумента будут получать строку и преобразовывать ее в число. Сложить эти 2 числа так, чтобы получилось целое число. Написать методы, которые вычисляют объемы параллелепипеда, шара и цилиндра. В качестве аргументов им должны передаваться необходимые параметры, в качестве результата они должны возвращать объем фигуры. Объявить 2 переменные типа double, значения которых будут началом и концом отрезка. Ввести с клавиатуры число. Программа должна определить, принадлежит число отрезку или нет. Модифицировать предыдущую задачу так, чтобы программа после вывода результата предлагала выполнить операцию еще раз (y/n). И так до тех пор пока не ввести“n”. Реализовать проверку на наличие символов, отличных от y и n. Объявить два массива одинакового размера. Выполнить поэлементное сравнение массивов. После сравнения программа должна вывести на экран номера отличающихся элементов. Объявить и инициализировать символьный массив длиной 15 символов. Вывести его на экран, затем отсортировать и снова вывести на экран. Вырезать средние 5 элементов и вывести на экран. Домашнее задание Написать простой калькулятор (4 арифметические операции). После вычисления результата программа должна предлагать выполнить еще одну операцию (y/n). Объявить массив типа String и записать в него несколько имен. Ввести с клавиатуры имя. Если оно содержится в массиве, вывести сообщение о том, что имя есть в массиве, если нет – о том, что имени нет. Для сравнения двух строк использовать метод String.equals(). Пример: if (string1.equals(string2)) doSomething();

Лекция 1 Переменные и основные типы данных. Операторы. Циклы. Массивы

Типы данных

Типы переменных

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

Типы переменных:

  • Простые (примитивные)
  • Классовые (ссылочные)

Простые типы (передаются по значению)

  • boolean
  • char
  • byte, short, int, long
  • float, double

Пример:

int a = 3;

int b = a;

b++;

// b = 4, a = 3

Ссылочные типы (передаются по ссылке)


Пример 1:

Phone firstPhone = new Phone("Samsung");

Phone secondPhone = firstPhone;

secondPhone.setName("iPhone");

// firstPhone.getName() -> “iPhone”

// secondPhone.getName() -> “iPhone”

Пример 2

String str1 = “Some string”;

String str2 = “Some string”;

// (str1 == str2) -> false

// (str1.equals(str2) -> true

Классы-оболочки


Базовый тип

Класс-оболочка

byte

Byte

short

Short

int

Integer

long

Long

float

Float

double

Double

char

Character

boolean

Boolean

Явное приведение типов

Пример:

byte x = 100;

byte y = 50;

byte z = x+y; //Ошибка!!

byte z = (byte) (x+y) //Все работает, но неправильно

int z = x + y; // Все работает правильно

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

  • Если в выражении есть операнд типа double, то другой операнд приводится к типу double
  • Если в выражении нет операндов типа double, но есть операнд типа float, то второй операнд также приводится к типу float
  • Если в выражении действительных операндов нет, но есть операнд типа long, то другой операнд также приводится к этому типу
  • Если в выражении операндов типа long нет, то операнды типа byte, short и char расширяются типа int. Результат вычисления выражения также имеет тип int.

Базовые операторы

Арифметические операторы




Оператор

Результат

Оператор

Результат

1

+

Сложение

+ =

Сложение с присваиванием

2

-

Вычитание (также унарный минус)

- =

Вычитание с присваиванием

3

*

Умножение

* =

Умножение с присваиванием

4

/

Деление*

/ =

Деление с присваиванием

5

%

Деление по модулю

% =

Деление по модулю с присваиванием

6

++

Инкремент

--

Декремент


*Если операнды – целые числа то результатом будет целая часть от деления!

Логические операторы Java




Оператор

Результат



Оператор

Результат

1

&

логическое И (AND)

7

>

Больше

2

|

логическое ИЛИ (OR)

8

>=

Больше или равно

3

^

логическое исключающее ИЛИ(XOR)

9

<

Меньше

4

||

оператор OR быстрой оценки выражений (shortcircuit OR)

10

<=

Меньше или равно

5

&&

оператор AND быстрой оценки выражений (shortcircuit AND)

11

!=

не равно

6

!

логическое унарное отрицание (NOT)

12

==

равно

Тернарный оператор

условие ? выражение1 : выражение2 (a : b ? с)

Если первый операнд равен true , то в качестве результата возвращается значение второго операнда b, если же a равно false, то возвращается значение с.

Пример:

int number = new Random().nextInt();

String text = number%2 == 0 ? "четное" : "нечетное";

Сделать задания 1, 2

Управляющие конструкции

Условный оператор if

if (условие_1) {

команды_1

} else if (условие_2) {

команды_2

} else {

команды_3

}


Пример:

if (a < -5) {

a++;

} else if (a >= -5 && a < 5) {

a--;

} else {

if (b != 0) {

a = a*b;

}

}

Switch-case

switch(выражение) {

case значение_1:

команды_1;

break;

case значение_2:

команды_2;

break;

default:

команды;

}


Пример:

switch(month) {

case “September”:

beSad();

break;

case “July”:

beCheerful();

break;

default:

keepCalm();

}

Цикл while и do-while

While (условие) {

команды;

}

do {

команды;

} while (условие);


int x = 0;

While (x < 5) {

x++;

}

do {

x--;

} while (x < -5);

Цикл for

for (инициализация; условие; изменение_значений) {


команды

}


int s=0;

for (int i = 0; i<10; i++) {

s+=i;

}

int s=0;

int i = 10;

for (; i>0; i--) {

s+=i;

}

Сделать задания 3, 4

int i=0;

int s=0;

for (; ;) {

s+=++i;

if (i>=10) break;

}

break и continue

Оператор break завершает последовательность операторов в операторе switch, позволяет выйти из цикла и может использоваться в качестве оператора безусловного перехода (goto):

while(true) {

double d = Math.random();

if(d > 0.8)

break;

System.out.println("d = " + d);

}


Оператор continue передаёт управление вначале итерационной части цикла, а затем условному выражению. При этом промежуточный ко, следующий в цикле за continue пропускается:

for (int i = 0; i < 10; i++) {

System.out.print(i + " ");

if (i % 2 == 0)

continue;

System.out.println();

}


Массивы

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

// объявление переменной массива

int[] myArray;

// Создание массива и запись ссылки на массив в переменную массива

myArray = new int[10];

Присваивание и сравнение массивов

Фактическим значением переменной массива является адрес области памяти, где расположен массив.

double[] firstArray;

double[] secondArray;

firstArray[] = new double[10];

secondArray = firstArray;

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

Двумерные массивы

Двумерный массив – это одномерный массив, элементами которого являются одномерные массивы.

int[][] doubleArray = new int[3][4];

Инициализация двумерного массива:

char[][] symbols = new char[][]{{‘a’}, {‘b’, ’c’}, {‘d’, ‘e’, ‘f’}};

Вывод:

a

b с

d e f

Пример создания и инициализации массива

System.out.println("Введите размер матрицы: ");

Scanner sc = new Scanner(System.in);

int size = sc.nextInt();

int[][] nums = new int[size][size];

for (int i=0; i

for (int j=0; j

nums[i][j] = new Random().nextInt(10);

System.out.print(nums[i][j]+" ");

}

System.out.println();

}

java.util.Arrays

Arrays – это вспомогательный класс для управления массивами. Он содержит инструменты сортировки, вывода, копирования, сравнения массивов. Основные методы этого класса:

    • copyOfRange()
    • equals()
    • fill()
    • sort()
    • toString()

Пример

// Создаем массив типа int

int[] firstArray = new int[10];

// Заполняем его числом 42

Arrays.fill(firstArray, 42);

// Заполняем вручную случайнми числами

for (int i = 0; i < firstArray.length; i++)

firstArray[i] = new Random().nextInt(10);

// Создаем новый массив и копируем туда первые 5 элементов первого

//массива

int[] secondArray = Arrays.copyOfRange(firstArray, 0, 5);

// Сортируем получившийся массив

Arrays.sort(secondArray);

// Выводим на экран отсортированный массив

System.out.println(Arrays.toString(secondArray));

Цикл foreach

for(тип_переменной переменная : массив) {

команды

}

Пример:

byte[][] array = new byte[][]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

for (byte b : array) {

System.out.println(b);

}

Сделать задания 5, 6

Задания

  • Объявить String-переменную, содержащую число и преобразовать в число используя Integer.parseInt() и Double.parseDouble(). Выделить их в отдельные методы, которые в качестве аргумента будут получать строку и преобразовывать ее в число. Сложить эти 2 числа так, чтобы получилось целое число.
  • Написать методы, которые вычисляют объемы параллелепипеда, шара и цилиндра. В качестве аргументов им должны передаваться необходимые параметры, в качестве результата они должны возвращать объем фигуры.
  • Объявить 2 переменные типа double, значения которых будут началом и концом отрезка. Ввести с клавиатуры число. Программа должна определить, принадлежит число отрезку или нет.
  • Модифицировать предыдущую задачу так, чтобы программа после вывода результата предлагала выполнить операцию еще раз (y/n). И так до тех пор пока не ввести“n”. Реализовать проверку на наличие символов, отличных от y и n.
  • Объявить два массива одинакового размера. Выполнить поэлементное сравнение массивов. После сравнения программа должна вывести на экран номера отличающихся элементов.
  • Объявить и инициализировать символьный массив длиной 15 символов. Вывести его на экран, затем отсортировать и снова вывести на экран. Вырезать средние 5 элементов и вывести на экран.

Домашнее задание

  • Написать простой калькулятор (4 арифметические операции). После вычисления результата программа должна предлагать выполнить еще одну операцию (y/n).
  • Объявить массив типа String и записать в него несколько имен. Ввести с клавиатуры имя. Если оно содержится в массиве, вывести сообщение о том, что имя есть в массиве, если нет – о том, что имени нет. Для сравнения двух строк использовать метод String.equals(). Пример:
  • if (string1.equals(string2))

    doSomething();