Программирование на языке Java

Содержание

Слайд 2

Программирование на языке Java Тема 3. Алгоритмы и программы

Программирование на языке Java

Тема 3. Алгоритмы и программы

Слайд 3

Алгоритм Алгоритм – точный набор инструкций, описывающий порядок действий исполнителя для

Алгоритм

Алгоритм – точный набор инструкций, описывающий порядок действий исполнителя для достижения

результата решения задачи за конечное время.
Слайд 4

Свойства алгоритма дискретность: состоит из отдельных шагов (команд) понятность: должен включать

Свойства алгоритма

дискретность: состоит из отдельных шагов (команд)
понятность: должен включать только

команды, известные исполнителю (входящие в СКИ)
детерминированность (определенность): при одинаковых исходных данных всегда выдает один и тот же результат
конечность: заканчивается за конечное число шагов
массовость: может применяться многократно при различных исходных данных
корректность: дает верное решение при любых допустимых исходных данных
результативность: завершает работу определёнными результатами
Слайд 5

Задача Является ли формула алгоритмом для вычисления числа π Не соблюдаются свойства: конечности массовости

Задача

Является ли формула алгоритмом для вычисления числа π

Не соблюдаются свойства:
конечности
массовости

Слайд 6

Программа Программа – запись алгоритма на формальном языке (часто употребляется как

Программа

Программа – запись алгоритма на формальном языке (часто употребляется как синоним

термина алгоритм).
Алгоритм – основная идея, метод, схема решения задачи.
Программа – конкретная реализация алгоритма, которая может быть скомпилирована и выполнена на компьютере.

Идея решения

Алгоритм

Программа

Слайд 7

Команды – 1 Команда – описание действий, которые должен выполнить исполнитель.

Команды – 1

Команда – описание действий, которые должен выполнить исполнитель.
откуда

взять исходные данные?
что нужно с ними сделать?
Исполнитель должен уметь выполнять все команды, составляющие алгоритм.
Множество возможных команд конечно и изначально строго задано.
Действия, выполняемые по этим командам, называются элементарными.
Слайд 8

Команды – 2 У каждого исполнителя есть конечный набор элементарных команд

Команды – 2

У каждого исполнителя есть конечный набор элементарных команд (действий),

оперирующих элементарными объектами, которых также конечное число.
Слайд 9

Способы записи алгоритма. Словесный – 1 Словесная запись – описание последовательных

Способы записи алгоритма. Словесный – 1

Словесная запись – описание последовательных этапов

обработки данных в произвольном изложении на естественном языке.
Недостатки:
отсутствие строгой формализации;
многословность записи;
допускают неоднозначность толкования отдельных предписаний.
Слайд 10

Способы записи алгоритма. Словесный – 2 Пример. задать два числа; если

Способы записи алгоритма. Словесный – 2

Пример.
задать два числа;
если числа равны,

то взять любое из них в качестве ответа и остановиться, в противном случае продолжить выполнение алгоритма;
определить большее из чисел;
заменить большее из чисел разностью большего и меньшего из чисел;
повторить алгоритм с шага 2.
Слайд 11

Способы записи алгоритма. Графический – 1 Графическое представление – алгоритм изображается

Способы записи алгоритма. Графический – 1

Графическое представление – алгоритм изображается в

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

Способы записи алгоритма. Графический – 2 Пример. начало конец ввод a,

Способы записи алгоритма. Графический – 2

Пример.

начало

конец

ввод a, b

вывод c

c = a

+ b;
Слайд 13

Способы записи алгоритма. Псевдокод – 1 Псевдокод – полуформализованное описание алгоритмов

Способы записи алгоритма. Псевдокод – 1

Псевдокод – полуформализованное описание алгоритмов на

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

Способы записи алгоритма. Псевдокод – 2 Пример. алг HELLOWORLD нач вывод ('Hello, World') кон алг HELLOWORLD

Способы записи алгоритма. Псевдокод – 2

Пример.

алг HELLOWORLD нач вывод ('Hello, World') кон алг HELLOWORLD

Слайд 15

Способы записи алгоритма. Программа Программа – запись на языке программирования. Пример

Способы записи алгоритма. Программа

Программа – запись на языке программирования.
Пример программы на

Java

public class First {
public static void main (String[] args)
{
System.out.print("Hello, World!");
}
}

Слайд 16

Основные качества программ Корректность (правильность) – реализация корректного алгоритма решения исходной

Основные качества программ

Корректность (правильность) – реализация корректного алгоритма решения исходной задачи.
Эффективность

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

Правила написания программного кода Использовать осмысленные имена для всех переменных, отличных

Правила написания программного кода

Использовать осмысленные имена для всех переменных, отличных от

счетчиков;
Константам, отличным от нуля и единицы присваивать имена;
Соблюдать принятый в языке стиль написания имен (имена классов с прописной буквы, переменных и методов – со строчной, констант – полностью из прописных);
Добавлять краткие и понятные комментарии.
Применять форматирование текста (лесенка – упорядочивание программного кода в целях повышения его читабельности).

В NetBeans автоматическое форматирование
Alt + Shift + F

Слайд 18

Этапы разработки программ – 1 Постановка задачи Анализ и исследование задачи,

Этапы разработки программ – 1

Постановка задачи
Анализ и исследование задачи, модели
Разработка алгоритма
Программирование
Тестирование

и отладка
Анализ результатов решения задачи
Сопровождение программы
Слайд 19

Этапы разработки программ – 2 1. Постановка задачи: сбор информации о

Этапы разработки программ – 2

1. Постановка задачи:
сбор информации о задаче;
формулировка

условия задачи;
определение конечных целей решения задачи;
определение формы выдачи результатов;
описание данных (их типов, диапазонов величин, структуры и т.п. ).
Слайд 20

Этапы разработки программ – 3 2. Анализ и исследование задачи, модели:

Этапы разработки программ – 3

2. Анализ и исследование задачи, модели:
анализ

существующих аналогов;
анализ технических и программных средств;
разработка математической модели;
разработка структур данных.
Слайд 21

Этапы разработки программ – 4 3. Разработка алгоритма: выбор метода проектирования

Этапы разработки программ – 4

3. Разработка алгоритма:
выбор метода проектирования алгоритма;
выбор

формы записи алгоритма (блок-схемы, псевдокод и др.);
выбор тестов и метода тестирования;
проектирование алгоритма.
Слайд 22

Этапы разработки программ – 5 4. Программирование: выбор языка программирования; уточнение

Этапы разработки программ – 5

4. Программирование:
выбор языка программирования;
уточнение способов организации

данных;
запись алгоритма на выбранном языке программирования.
Слайд 23

Этапы разработки программ – 6 5. Тестирование и отладка: синтаксическая отладка;

Этапы разработки программ – 6

5. Тестирование и отладка:
синтаксическая отладка;
отладка семантики

и логической структуры;
тестовые расчеты и анализ результатов тестирования;
совершенствование программы.
Слайд 24

Этапы разработки программ – 7 6. Анализ результатов решения задачи: уточнение

Этапы разработки программ – 7

6. Анализ результатов решения задачи:
уточнение в случае

необходимости математической модели с повторным выполнением этапов 2 — 5
7. Сопровождение программы:
доработка программы для решения конкретных задач;
составление документации к решенной задаче, к математической модели, к алгоритму, к программе, к набору тестов, к использованию.
Слайд 25

Программирование на языке Java Тема 4. Знакомство с Java

Программирование на языке Java

Тема 4. Знакомство с Java

Слайд 26

Языки программирования Машинно-ориентированные (низкого уровня) – каждая команда соответствует одной команде

Языки программирования

Машинно-ориентированные (низкого уровня) –
каждая команда соответствует одной команде

процессора (ассемблер).
Языки высокого уровня – приближены к естественному (английскому) языку, легче воспринимаются человеком, не зависят от конкретного компьютера
для обучения: Basic, ЛОГО, Pascal
профессиональные: Java, C, C++
для задач искусственного интеллекта: Prolog, LISP
для Интернета: JavaScript, Java, Perl, PHP, ASP.Net, Ruby
Слайд 27

Слайд 28

Язык Java Java – объектно-ориентированный язык программирования, разработанный Sun Microsystems в 1995 г.

Язык Java

Java – объектно-ориентированный язык программирования, разработанный Sun Microsystems в 1995

г.
Слайд 29

Почему стоит изучать Java? Один из самых популярных и востребованных ЯП.

Почему стоит изучать Java?

Один из самых популярных и востребованных ЯП. Индекс

TIOBE (https://www.tiobe.com/tiobe-index/)
Рейтинг CFF языков программирования
(https://m.habr.com/company/it-grad/blog/422057/)
На Java пишут:
высоконагруженные системы;
корпоративные приложения;
настольные приложения;
программы и игры для телефонов, в том числе под Android
апплеты для смарт-карт
Язык развивается и совершенствуется
(версия Java 10 вышла в июле 2018)
Слайд 30

Почему стоит изучать Java? Java — это не только язык программирования,

Почему стоит изучать Java?

Java — это не только язык программирования, но

и. . .
обширная стандартная библиотека;
сторонние библиотеки и фреймворки;
инструменты разработки (сборка, тестирование);
методология ООП, паттерны проектирования;
платформа для альтернативных языков;
(Clojure, Groovy, JRuby, Jython, Kotlin, Scala).
Слайд 31

Виртуальная машина и байт-код – 1 Традиционный подход: исходный код →

Виртуальная машина и байт-код – 1

Традиционный подход:
исходный код → машинный код

→ процессор
программа работает только на той платформе, под которую она скомпилирована
Подход Java:
исходный код → байт-код виртуальной машины
→ виртуальная машина → процессор
программа работает на любой платформе, где есть виртуальная машина Java
“Write once, run anywhere!” («Написано однажды, работает везде!»)
Слайд 32

Виртуальная машина и байт-код – 2 Программы транслируются в байт-код, выполняемый

Виртуальная машина и байт-код – 2

Программы транслируются в байт-код, выполняемый виртуальной

машиной Java (JVM = Java Virtual Machine).
Байт-код – машинно-независимый код низкого уровня, генерируемый транслятором и исполняемый виртуальной машиной.
Большинство инструкций байт-кода эквивалентны одной или нескольким командам ассемблера.
Слайд 33

Виртуальная машина и байт-код – 3 Виртуальная машина Java (JVM) –

Виртуальная машина и байт-код – 3

Виртуальная машина Java (JVM) – основная

часть исполняющей системы Java, интерпретирует и исполняет байт-код Java.
JVM доступны для многих аппаратных и программных платформ, что обеспечивает кросс-платформенность Java.
Слайд 34

Виртуальная машина и байт-код – 4 Насколько быстро работает виртуальная машина?

Виртуальная машина и байт-код – 4

Насколько быстро работает виртуальная машина?
Интерпретация

байткода на порядок (10–20 раз) медленнее исполнения аналогичного машинного кода. . .
но есть Just-In-Time компиляция – виртуальная машина компилирует байткод в машинный код (используется с JDK 1.1)
а также HotSpot адаптивный оптимизирующий JIT-компилятор (используется с JDK 1.3)
в результате Java 8 всего в 1.5–2 раза медленнее C, а в некоторых тестах не хуже или даже быстрее!
Слайд 35

Сборка мусора Подход C/C++: выделил память → поработал → освободил память

Сборка мусора

Подход C/C++:
выделил память → поработал → освободил память
всё управление памятью

в руках программиста
Подход Java:
выделил память → поработал → молодец
виртуальная машина считает ссылки на каждый объект
освобождает память, когда ссылок больше нет
Слайд 36

Разработка программ на Java разработка программ «сверху вниз» разнообразные структуры данных

Разработка программ на Java

разработка программ «сверху вниз»
разнообразные структуры данных (массивы, коллекции:

списки, отображения, множества)
объектно-ориентированный подход
Слайд 37

Слайд 38

Из чего состоит программа? public class { public static void main(String[]

Из чего состоит программа?

public class <имя класса>
{
public static void main(String[] args)
{

/* основная программа */
}
}

Комментарии, заключенные в «скобки» /* */ не обрабатываются

Слайд 39

Простейшая программа public class { public static void main(String[] args) {

Простейшая программа

public class <имя класса>
{
public static void main(String[] args)
{
/* основная

программа */
}
}

главный (основной) метод класса всегда имеет имя main

void = «пустой»
основной метод не возвращает никакого результата

начало метода

«тело» метода (основная часть)

конец метода

имя класса должно совпадать с именем файла

Слайд 40

Что происходит дальше? public class { ... } First.java исходный файл

Что происходит дальше?

public class
{
...
}

First.java

исходный файл

First.class

транслятор

ЪБzЦ2?|ё3БКа
n/36ШпIC+И -
ЦЗ_5 МyРЧ б
s6bд^:/@:лЖ1_

байт-код

текст программы на

Java
Слайд 41

Вывод текста на экран public class HelloWorld { public static void

Вывод текста на экран

public class HelloWorld
{
public static void main (String[] args)
{
System.out.print("Привет!");
}
}

стандартные

функции вывода

вызов стандартного метода
print (вывод)

этот текст будет выведен на экран

Слайд 42

Переход на новую строку public class HelloWorld { public static void

Переход на новую строку

public class HelloWorld
{
public static void main (String[] args)
{
System.out.print("

Привет,\nВася!");
}
}

Привет,
Вася!

на экране:

последовательность \n
код 10
переход на новую строку

Слайд 43

Задания 1. Вывести на экран текст "лесенкой" Вася пошел гулять 2.

Задания

1. Вывести на экран текст "лесенкой"
Вася
пошел
гулять
2. Вывести на

экран рисунок из букв
Ж
ЖЖЖ
ЖЖЖЖЖ
ЖЖЖЖЖЖЖ
HH HH
ZZZZZ
Слайд 44

Программирование на языке Java Тема 5. Переменные

Программирование на языке Java

Тема 5. Переменные

Слайд 45

Что такое переменная? Переменная – это ячейка в памяти компьютера, которая

Что такое переменная?

Переменная – это ячейка в памяти компьютера, которая имеет

имя и хранит некоторое значение.
Значение переменной может меняться во время выполнения программы.
При записи в ячейку нового значения старое стирается.
Типы переменных
int – целое число в интервале [-231, 231-1] (4 байта)
float – вещественное число, floating point (4 байта)
char – символ, character (2 байта)
Слайд 46

Из чего состоит программа? Переменная – изменяющаяся величина, имеющая имя (ячейка

Из чего состоит программа?

Переменная – изменяющаяся величина, имеющая имя (ячейка памяти).
Метод

– вспомогательный алгоритм, описывающий некоторые действия (например, рисование окружности) или выполняющий вычисления (например, вычисление квадратного корня, sin).
Слайд 47

Имена классов, переменных, методов В Java имена могут включать Символы алфавита

Имена классов, переменных, методов

В Java имена могут включать
Символы алфавита (латиница A-Z,

кириллица А-Я и т.д.)
цифры
знак подчеркивания _, знак $

заглавные и строчные буквы различаются

Имена НЕ могут включать
пробелы
скобки, знаки +, =, !, ? и др.

имя не может начинаться с цифры

Какие имена правильные??
AXby R&B 4Wheel Вася “PesBarbos” TU154 [QuQu] _ABBA A+B

Слайд 48

Ключевые слова Java – 1 Ключевые слова в сочетании с синтаксисом

Ключевые слова Java – 1

Ключевые слова в сочетании с синтаксисом операций

и разделителями образуют основу языка Java.
Ключевые слова нельзя использовать в качестве имен переменных, классов, методов.
Слайд 49

Ключевые слова Java – 2 Ключевые слова const и goto зарезервированы, но не используются.

Ключевые слова Java – 2

Ключевые слова const и goto зарезервированы, но

не используются.
Слайд 50

Зарезервированные слова Java true, false, null – зарезервированные слова в Java,

Зарезервированные слова Java

true, false, null – зарезервированные слова в Java, нельзя

использовать в качестве имен переменных, классов и т.п.
Слайд 51

Объявление переменных Объявить переменную – определить ее имя, тип, начальное значение,

Объявление переменных

Объявить переменную – определить ее имя, тип, начальное значение, и

выделить ей место в памяти.

public static void main(…)
{
int a;
float b, c;
int Tu104, Il86=23, Yak42;
float x=4.56, y, z;
char c, c2='A', m;
}

Целочисленная переменная a

вещественные переменные b и c

целые переменные Tu104, Il86 и Yak42
Il86 = 23

вещественные переменные x, y и z
x = 4,56

·

целая и дробная части отделяются точкой

символьные переменные c, c2 и m
c2 = 'A'

Слайд 52

Переменные Переменная – это величина, имеющая имя, тип и значение. Значение

Переменные

Переменная – это величина, имеющая имя, тип и значение. Значение переменной

можно изменять во время работы программы.

Объявление переменных (выделение памяти):

int a, b;
double Q;
char s1, s2;

Слайд 53

char { символьный (один символ) } byte, short, int, long {целые

char { символьный (один символ) }
byte, short, int, long {целые типы}
float, double {

вещественные типы }
boolean { логический }

Простые типы данных (primitive)

целая и дробная часть отделяются точкой

можно использовать русские буквы!

может принимать два значения:
true (истина, «да»)
false (ложь, «нет»)

Слайд 54

Как изменить значение переменной? Оператор – это команда языка программирования высокого

Как изменить значение переменной?

Оператор – это команда языка программирования высокого уровня.

Оператор

присваивания служит для изменения значения переменной.

{
int a, b;
a = 5;
b = a + 2;
a = (a + 2)*(b – 3);
}

a

?

5

5

b

?

5+2

7

a

5

7*4

28

Пример:

Слайд 55

Оператор присваивания Арифметическое выражение может включать имена переменных знаки арифметических операций:

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

Арифметическое выражение может включать
имена переменных
знаки арифметических операций:
+ - *

/ %
вызовы методов
круглые скобки ( )

умножение

деление

остаток от деления

<имя переменной> = <выражение>;

куда

что

Слайд 56

public static void main (String[] args) { int a, b; float

public static void main (String[] args)
{
int a, b;
float x,

y;
a = 5;
10 = x;
y = 7,8;
b = 2.5;
x = 2*(a + y);
a = b + x;
}

Какие операторы записаны неверно?

имя переменной должно быть слева от знака =

целая и дробная часть отделяются точкой

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

Слайд 57

Особенность деления в Java public static void main(…) { int a

Особенность деления в Java

public static void main(…)
{
int a = 7;
float x;
x

= a / 4;
x = 4 / a;
x = (float)a / 4;
x = 1.*a / 4;
}

1

0

1.75

1.75

Слайд 58

Сокращенная запись операций в Java инкремент декремент a = a +

Сокращенная запись операций в Java

инкремент

декремент

a = a + 1;

a++;

a = a

+ b;

a += b;

a = a - 1;

a--;

a = a – b;

a -= b;

a = a * b;

a *= b;

a = a / b;

a /= b;

a = a % b;

a %= b;

Слайд 59

Ручная прокрутка программы public static void main(…) { int a, b;

Ручная прокрутка программы

public static void main(…) {
int a, b;
a

= 5;
b = a + 2;
a = (a + 2)*(b – 3);
b = a / 5;
a = a % b;
a++;
b = (a + 14) % 7;
}

5

7

28

5

3

4

4

?

?

Слайд 60

Порядок выполнения операций вычисление выражений в скобках умножение, деление, % слева

Порядок выполнения операций

вычисление выражений в скобках
умножение, деление, % слева направо
сложение и

вычитание слева направо

z = (5*a*c+3*(c-d))/a*(b-c)/ b;

x =(a*a+5*c*c-d*(a+b))/((c+d)*(d-2*a));

2 3 5 4 1 7 8 6 9

2 6 3 4 7 5 1 12 8 11 10 9

Слайд 61

Сложение двух чисел Задача. Ввести два целых числа и вывести на

Сложение двух чисел

Задача. Ввести два целых числа и вывести на экран

их сумму.

Простейшее решение:

import java.util.Scanner;
public static void main (…) {
Scanner in = new Scanner (System.in);
int a, b, c;
System.out.print(“Введите a”);
a = in.nextInt();
System.out.print(“Введите b”);
b = in.nextInt();
c = a + b;
System.out.println(c);
}

Подключение пакета

Создание экземпляра класса

Чтение из входного потока целого числа

Слайд 62

Ввода данных с клавиатуры Scanner in = new Scanner (System.in); a

Ввода данных с клавиатуры

Scanner in = new Scanner (System.in);
a = in.nextInt

(); /* ввод целого значения и присваивание переменной a */
b = in.nextDouble (); /* ввод вещественного значения и присваивание переменной b */
Слайд 63

Оператор вывода System.out.print ( a ); /* вывод значения переменной a

Оператор вывода

System.out.print ( a ); /* вывод значения переменной a */

System.out.println

( a ); /* вывод значения переменной a и переход на новую строчку /*

System.out.println ( “Привет!” ); /* вывод текста */

System.out.println( “Ответ: ” + c ); /* вывод текста и значения переменной c */

System.out.println ( a + “+” + b+ “=” + c );

Слайд 64

Полное решение int a, b, c; System.out.println(“Введите число а”); a =

Полное решение

int a, b, c;
System.out.println(“Введите число а”);
a = in.nextInt();
System.out.println(“Введите число

b”);
b = in.nextInt();
c = a + b;
System.out.println(a+ “+”+ b+ “=”+ c );

Протокол:
Введите число a
25
Введите число b
30
25+30=55

компьютер

пользователь

компьютер

пользователь

компьютер

Слайд 65

Блок-схема линейного алгоритма начало конец c = a + b; ввод

Блок-схема линейного алгоритма

начало

конец

c = a + b;

ввод a, b

вывод c

блок «начало»

блок

«ввод»

блок «процесс»

блок «вывод»

блок «конец»