4.33M
Категория: ПрограммированиеПрограммирование

Java. Основы языка программирования Java. Синтаксис. Типы данных. Структуры данных. Простейшие алгоритмические задачи

1.

Java.
Основы языка программирования Java.
Синтаксис.
Типы данных.
Структуры данных.
Простейшие алгоритмические задачи.

2.

Кто придумал Java и зачем.
Создателем языка программирования Java считается Джеймс Гослинг.
23 мая 1995 года — дата официального выпуска Java.
Язык Java и сегодня остается одним из самых востребованных
языков программирования в IT.
По данным индекса TIOBE, ранжирующего языки программирования
на основе поисковых запросов о них, Java стабильно занимает
третье место по популярности в мире с момента запуска рейтинга.
Своим возникновением
язык программирования
Java обязан компании
Sun Microsystems.
Первоначально планировалось,
Что он будет использоваться
для программирования
бытовой техники
(холодильников, микроволновых
печей, стиральных машин,
видеомагнитофонов и
других электронных
устройств

3.

Где используется Java
Java строго типизированный объектно-ориентированный язык
программирования
общего назначения, разработанный компанией Sun Microsystems
(в последующем приобретённой компанией Oracle).
Java применяется при написании программ для мобильных приложений,
для программ встроенных в бытовую технику и программных комплексов
уровня промышленных предприятий

4.

Внутри Java cуществуют
семейств технологий:
Технологии
Java. несколько
Версииосновных
Java. Актуальные
версии
1. Java SE - Java Standard Edition
подходит для создания пользовательских приложений, десктопных
программ
2. Java EE - Java Enterprise Edition
подходит для создания программного обеспечения уровня предприятия
3. Java ME - Micro Edition предназначено для использования в устройствах,
ограниченных по вычислительной мощности, например, в мобильных
телефонах, встроенных системах, карманных персональных компьютерах.
Руководство по возможностям языка Java версий 8-19
https://habr.com/ru/articles/719744/

5.

Системы счисления в программировании.
Формат записи чисел. Индексы
Люди изобрели разные способы записывать числа. Мы называем их
системами счисления. Привычный для нас способ записи называется
десятичной системой счисления.
Компьютеры, которые работали в десятичной системе, оказались сложными
и медленными. Хранение чисел в двоичной системе позволило упростить
схемы и ускорить работу компьютеров.
Обычно нам не нужно знать, как именно компьютер хранит числа, потому
что он умеет переводить их в привычную нам форму. Но если мы хотим
разрабатывать программы, которые работают с оборудованием напрямую
— системные утилиты или компьютерные игры, — нужно разобраться, как
устроены двоичная и шестнадцатеричная системы.
Существует ряд алгоритмов, которые помогают перевести число из одной
системы в другую, но они достаточно запутанные. Проще использовать
Google.
Двоичная запись чисел очень громоздкая, поэтому программисты
предпочитают записывать числа в шестнадцатеричной системе счисления.
Восьмеричная запись чисел сейчас используется очень редко.
Вы можете конвертировать числа из системы в систему на своём любимом
языке программирования.
Подробнее про системы счисления и для чего они нужны можно прочитать
здесь https://guides.hexlet.io/ru/numeral-systems/

6.

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

7.

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

8.

Основные конструкции языка Java.
Управляющие конструкции.
Управляющими конструкциями называются операторы, которые изменяют
порядок выполнения команд.
1) условный оператор
if (условие) оператор;
условие — это выражение, в результате вычисления которого получается
логическое значение.
2) оператор цикла for
for (инициализация; условие; итерация ) оператор;
3) блок кода — это логическая единица текста программы, заключенная в
фигурные скобки.

9.

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

10.

Типы данных в Java
В Java существует 8 примитивных типов данных:

11.

Логический тип данных (Boolean/ Булево значение)
Под логические значения в Java отводится тип boolean, которое может
принимать только одно из двух возможных значений true (истина) и false
(ложь).
Boolean — это тип данных, переменные которого принимают одно из
значений:
true (истина, «да», логическая единица «1»);
false (ложь, «нет», логический ноль «0»).
Булевы переменные в Java создают так:
boolean a = true; // здесь типизированной как логическая переменная
присвоено значение true/ истина
boolean b = false; // логической переменной присвоено значение ложь
a = b;
a = 78;

12.

Целочисленный тип данных
В Java целочисленный тип данных задан несколькими типами
byte
short
int
long

13.

Тип данных для вещественных чисел

14.

Символьный тип данных
Символьный тип данных - char. Для хранения символов в Java используется
тип char размером 2 байта (16 бит). Диапазон значений варьируется от 0 до
65536.
Символом считается то, что не может быть ни числом, ни буквой.
Символами выступают знаки препинания, знаки арифметических и
логических операций и другие обозначения.

15.

Символьный тип данных
Символьный тип данных - char. Для хранения символов в Java используется
тип char размером 2 байта (16 бит). Диапазон значений варьируется от 0 до
65536.
Символом считается то, что не может быть ни числом, ни буквой.
Символами выступают знаки препинания, знаки арифметических и
логических операций и другие обозначения.

16.

Объект. Понятие объекта в программировании.
Что такое объект?
Мир, в котором мы живем, состоит из объектов. Если мы посмотрим вокруг,
то увидим, что нас окружают дома, деревья, автомобили, мебель, посуда,
компьютеры. Все эти предметы являются объектами, и каждый из них
обладает набором определенных характеристик, поведением и
назначением.

17.

Свойства объектов.
Классы объектов. Свойства классов.
Класс объектов — это описание еще не созданного объекта, как бы общий
шаблон, состоящий из полей, методов и конструктора, а объект – экземпляр
класса, созданный на основе этого описания.

18.

Объектно-ориентированное программирование.
Принципы программирования.
1) Абстракция — это выделение наиболее важных характеристик и
информации об объекте.

19.

Объектно-ориентированное программирование.
Принципы программирования.
2) Инкапсуляция
С помощью абстракции мы выделяем общее для всех объектов.
базовый принцип ООП, при котором атрибуты и поведение объекта
объединяются в одном классе,
внутренняя реализация объекта скрывается от пользователя, а для работы с
объектом предоставляется открытый интерфейс.
Задача программиста — определить, какие атрибуты и методы будут
доступны для открытого доступа,
а какие являются внутренней реализацией объекта и должны быть
недоступны для изменений.
В мире Java состояние будущих объектов описывается в классе с помощью
полей,
а их поведение – с помощью методов. Возможность же изменения
состояния и поведения осуществляется
с помощью модификаторов доступа к полям и методам – private, protected,
public, а также default (доступ по умолчанию).

20.

Инкапсуляция. Принцип программирования.
Пример программной реализации на Java

21.

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

22.

23.

24.

4) Полиморфизм
Принцип в ООП, когда программа может использовать объекты с
одинаковым интерфейсом без информации о внутреннем устройстве
объекта, называется полиморфизмом.

25.

Структуры данных
Основные структуры данных.
1) Массивы
2) Стеки
3) Очереди
4) Связанные списки
5) Графы
6) Деревья
7) Префиксные деревья
8) Хэш таблицы
Подробнее https://habr.com/ru/articles/422259/

26.

Структура данных Массив.
Массив — это самая простая и широко используемая структура данных.
Другие структуры данных, такие как стеки и очереди, являются
производными от массивов.
Каждому элементу данных присваивается положительное числовое
значение (индекс), который соответствует позиции элемента в массиве.
Большинство языков определяют начальный индекс массива как 0.
Бывают
Одномерные ( например, 1,2,3,4)
Многомерные, массивы внутри массивов.
Основные операции
Insert-вставляет элемент по заданному индексу
Get-возвращает элемент по заданному индексу
Delete-удаление элемента по заданному индексу
Size-получить общее количество элементов в массиве

27.

Структура данных Стек
Стек — абстрактный тип данных, представляющий собой список элементов,
организованных по принципу LIFO (англ. last in — first out, «последним
пришёл — первым вышел»).
Примером стека может быть куча книг, расположенных в вертикальном
порядке. Для того, чтобы получить книгу, которая где-то посередине, вам
нужно будет удалить все книги, размещенные на ней. Так работает метод
LIFO (Last In First Out). Функция «Отменить» в приложениях работает по LIFO.
Стек, в котором три элемента (1, 2 и 3), где 3 находится наверху и 3 будет
удалено первым.
Основные операции стека
Push-вставляет элемент сверху
Pop-возвращает верхний элемент после удаления из стека
isEmpty-возвращает true, если стек пуст
Top-возвращает верхний элемент без удаления из стека

28.

Структура данных Очередь
Очередь — хранит элемент последовательным образом. Существенное
отличие от стека – использование FIFO (First in First Out) вместо LIFO.
Пример очереди – очередь людей. Последний занял последним и будешь, а
первый первым ее и покинет.
Изображение очереди, в четыре элемента (1, 2, 3 и 4), где 1 находится
наверху и будет удален первым
Основные операции структуры данных Очередь
Enqueue—) — вставляет элемент в конец очереди
Dequeue () — удаляет элемент из начала очереди
isEmpty () — возвращает значение true, если очередь пуста
Top () — возвращает первый элемент очереди

29.

Структура данных Список
Связанный список – массив где каждый элемент является отдельным
объектом и состоит из двух элементов – данных и ссылки на следующий
узел. Принципиальным преимуществом перед массивом является
структурная гибкость: порядок элементов связного списка может не
совпадать с порядком расположения элементов данных в памяти
компьютера, а порядок обхода списка всегда явно задаётся его внутренними
связями.
Бывают
Однонаправленный, каждый узел хранит адрес или ссылку на следующий
узел в списке и последний узел имеет следующий адрес или ссылку как
NULL.
1->2->3->4->NULL
Двунаправленный, две ссылки, связанные с каждым узлом, одним из
опорных пунктов на следующий узел и один к предыдущему узлу.
NULL<-1<->2<->3->NULL
Круговой, все узлы соединяются, образуя круг. В конце нет NULL.
Циклический связанный список может быть одно-или двукратным
циклическим связанным списком.
1->2->3->1

30.

Основные операции структуры данных Список
InsertAtEnd — Вставка заданного элемента в конец
списка
InsertAtHead — Вставка элемента в начало списка
Delete — удаляет заданный элемент из списка
DeleteAtHead — удаляет первый элемент списка
Search — возвращает заданный элемент из списка
isEmpty — возвращает True, если связанный список
пуст

31.

Структура данных Граф
Граф-это набор узлов (вершин), которые соединены друг с другом в виде
сети ребрами (дугами).
Бывают
Ориентированный, ребра являются направленными, т.е. существует только
одно доступное направление между двумя связными вершинами.
Неориентированные, к каждому из ребер можно осуществлять переход в
обоих направлениях.
Смешанные
Встречаются в таких формах как
Матрица смежности
Список смежности
Общие алгоритмы обхода графа
Поиск в ширину – обход по уровням
Поиск в глубину – обход по вершинам

32.

Структура данных Дерево
Дерево-это иерархическая структура данных, состоящая из узлов (вершин)
и ребер (дуг). Деревья представляют собой связанные графы без циклов.
Типы деревьев
N дерево
Сбалансированное дерево
Бинарное дерево
Дерево Бинарного Поиска
AVL дерево
2-3-4 деревья
Бинарное дерево самое распространенное.
Бинарное дерево — это иерархическая структура данных, в которой каждый
узел имеет значение (оно же является в данном случае и ключом) и ссылки
на левого и правого потомка.
Три способа обхода дерева
В прямом порядке (сверху вниз) — префиксная форма.
В симметричном порядке (слева направо) — инфиксная форма.
В обратном порядке (снизу вверх) — постфиксная форма.

33.

Структура данных Префиксное дерево
Trie ( префиксное деревое )
Разновидность дерева для строк, быстрый поиск. Словари.

34.

Структура данных Хеш-таблица
Хэш таблицы
Хэширование — это процесс, используемый для уникальной идентификации
объектов и хранения каждого объекта в заранее рассчитанном уникальном
индексе (ключе).
Объект хранится в виде пары «ключ-значение», а коллекция таких
элементов называется «словарем». Каждый объект можно найти с помощью
этого ключа.
По сути это массив, в котором ключ представлен в виде хеш-функции.
Эффективность хеширования зависит от
Функции хеширования
Размера хэш-таблицы
Метода борьбы с коллизиями

35.

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

36.

Какие бывают циклы в программировании
1) цикл с предварительным условием
2) цикл с постусловием
3) цикл со счетчиком
4) безусловный цикл (для каждого)
https://javarush.com/groups/posts/cikly-java

37.

Цикл с предварительным условием
while <условие> do
begin
<тело цикла>
end;

38.

Цикл с пост условием
do {
<тело цикла>
} while (<условие продолжения цикла>)

39.

Цикл со счетчиком (цикл «для каждого...»)

40.

Задача на min - max

41.

Понятие Функция. Назначение функций.
Запись функции. Встроенные функции (Методы)

42.

Арифметические и логические операторы в Java
Арифметические операторы +, -, * (умножить), / (вещественное деление), //
(целочисленное деление).

43.

Таблица истинности. Понятие и базовые операции
Подробнее по ссылке https://ru.wikipedia.org/wiki/Таблица_истинности
& - символ, обозначающий логическое И
| - символ, обозначающий логическое ИЛИ
^ - символ, обозначающий конъюнкция (логическое И)
! - символ, обозначающий, логическое НЕ или ОТРИЦАНИЕ

44.

Модульная запись программ

45.

Задачи
Компиляция в онлайн редакторе https://www.online-java.com/

46.

// Сложение чисел (тип данных числовой).
System.out.println(1 + 2);
// Вывод: 3

47.

Примеры задач по конкатенации (или сложение
переменных строкового типа)
Когда переменная задана как строка, а не число, то
интерпретатор воспринимает её как строку или две
строки и присоединяет по порядку записи в
выражении.
// Конкатенация (Склеивание) строк
System.out.println("С" + "D"); // Вывод: CD
System.out.println("С1" + "D2"); // Вывод: C1D2
System.out.println("Об" + "лако"); // Вывод: Облако

48.

Простейшие алгоритмические задачи
Это задачи на самостоятельное построение алгоритма, который НЕ является
классическим алгоритмом. Данные задачи направлены на развитие логики у
учащихся и в дальнейшем очень часто применяются в обычных рабочих
задачах.
1. Написать программу, которая выводит максимальное число из n заданных
чисел. В первой строчке входа дано число n, а в следующей строчке указано
n целых чисел.
Решение: строим два поля ввода, это две переменные принимающие на
вход числовые данные заданного типа (целочисленного, например), во
второе поле вводятся числа через запятую, в первое число, обозначающее
количество чисел.

49.

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

50.

// Сложение двух переменных типа 'char'
System.out.println('a' + 'b'); // Вывод: 195

51.

Задачи по массивам
1) Найти второй минимальный элемент массива
2) Первые 5 неповторяющихся целые числа в
массиве
3) Объединить два отсортированных массива

52.

Задачи по разделу Структуры данных. Стек.
1) Реализовать очередь с помощью стека
2) Сортировка значений в стеке
3) Реализация двух стеков в массиве
4) Реверс строки с помощью стека

53.

Задачи по разделу Структуры данных. Очередь.
1) Реализовать cтек с помощью очереди
2) Реверс первых N элементов очереди
3) Генерация двоичных чисел от 1 до N с помощью очереди

54.

Задачи по разделу Структуры данных. Списки
1) Реверс связанного списка
2) Определение цикла в связанном списке
3) Возврат N элемента из конца в связанном списке
4) Удаление дубликатов из связанного списка

55.

Задачи по разделу Структуры данных. Графы.
1) Реализовать поиск по ширине и глубине
2) Проверить является ли граф деревом или нет
3) Посчитать количество ребер в графе
4) Найти кратчайший путь между двумя вершинами

56.

Задачи по разделу Структуры данных. Хеш-таблица
1) Найти симметричные пары в массиве
2) Найти, если массив является подмножеством другого массива

57.

58.

59.

60.

Выводы по уроку
Мы рассмотрели следующие темы:
что такое объект, его свойства, классы.
Принципы программирования
объектно-ориентированное программирование
Логические операции и таблицу истинности.
Сложение, вычитание, умножение и деление с разными типами данных
English     Русский Правила