Similar presentations:
Java. Основы языка программирования Java. Синтаксис. Типы данных. Структуры данных. Простейшие алгоритмические задачи
1.
Java.Основы языка программирования Java.
Синтаксис.
Типы данных.
Структуры данных.
Простейшие алгоритмические задачи.
2.
Кто придумал Java и зачем.Создателем языка программирования Java считается Джеймс Гослинг.
23 мая 1995 года — дата официального выпуска Java.
Язык Java и сегодня остается одним из самых востребованных
языков программирования в IT.
По данным индекса TIOBE, ранжирующего языки программирования
на основе поисковых запросов о них, Java стабильно занимает
третье место по популярности в мире с момента запуска рейтинга.
Своим возникновением
язык программирования
Java обязан компании
Sun Microsystems.
Первоначально планировалось,
Что он будет использоваться
для программирования
бытовой техники
(холодильников, микроволновых
печей, стиральных машин,
видеомагнитофонов и
других электронных
устройств
3.
Где используется JavaJava строго типизированный объектно-ориентированный язык
программирования
общего назначения, разработанный компанией 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.
Условный оператор if10.
Типы данных в 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 - max41.
Понятие Функция. Назначение функций.Запись функции. Встроенные функции (Методы)
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.
Выводы по урокуМы рассмотрели следующие темы:
что такое объект, его свойства, классы.
Принципы программирования
объектно-ориентированное программирование
Логические операции и таблицу истинности.
Сложение, вычитание, умножение и деление с разными типами данных