|
яп. Язык программирования яп
ИНФОРМАТИКА И ПРОГРАММИРОВАНИЕ
1 Языки программирования.
Язык программирования (ЯП) — формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под ее управлением.
-
3 Понятие алгоритма, программы, команды. Свойства алгоритма. Основные качества программ.
Алгоритм – точный набор инструкций, описывающий порядок действий исполнителя для достижения результата решения задачи за конечное время.
Программа – запись алгоритма на формальном языке
Программа – конкретная реализация алгоритма, которая может быть скомпилирована и выполнена на компьютере.
Команда – описание действий, которые должен выполнить исполнитель.
Свойства алгоритма: дискретность, понятность, детерминированность, конечность, массовость, корректность, результативность.
Основные качества программ:
Корректность (правильность) – реализация корректного алгоритма решения исходной задачи.
Эффективность – уменьшение времени работы программы.
Понятность и модифицируемость
Удобство эксплуатации
Надежность
Удобство сопровождения
4 Понятие алгоритма, программы, команды. Способы записи алгоритма. Этапы разработки программ.
См.3.
Способы записи алгоритма:
Словесная запись – описание последовательных этапов обработки данных в произвольном изложении на естественном языке. (Недостатки: отсутствие строгой формализации; многословность записи; допускают неоднозначность толкования отдельных предписаний).
Графическое представление (блок-схема) – алгоритм изображается в виде последовательности связанных между собой функциональных блоков, каждый из которых соответствует выполнению одного или нескольких действий.
Псевдокод – полуформализованное описание алгоритмов на условном алгоритмическом языке, включающее в себя как элементы ЯП, так и фразы естественного языка, общепринятые математические обозначения и др.
Программа – запись на языке программирования.
Этапы разработки программ:
Постановка задачи
Анализ и исследование задачи, модели
Разработка алгоритма
Программирование
Тестирование и отладка
Анализ результатов решения задачи
Сопровождение программы
5. Язык программирования Java. Байт-код. Виртуальная машина Java.
Среда разработки NetBeans. Отладка программы.
Java – объектно-ориентированный язык программирования, разработанный Sun Microsystems в 1995 г.
Байт-код – машинно-независимый код низкого уровня, генерируемый транслятором и исполняемый виртуальной машиной.
Виртуальная машина Java (VJM) – основная часть исполняющей системы Java, интерпретирует и исполняет байт-код Java.
NetBeans IDE — свободная интегрированная среда разработки приложений (IDE) на языках программирования Java, JavaFX, Python, PHP, JavaScript, C++, Ада и ряде других.
Отладка – поиск и исправление ошибок в программе.
Методы:
вывод сигнальных сообщений
отключение части кода (в комментарии)
трассировка – пошаговое выполнения программы (выполнить одну строчку программы и остановиться)
точки останова – выполнение программы останавливается при достижении отмеченных строк (переход в пошаговый режим)
просмотр и изменение значений переменных в пошаговом режиме
6. Понятие переменной. Имена переменных. Ключевые и зарезервированные слова. Простые типы данных. Оператор присваивания. Порядок выполнения операций.
Переменная – это величина, имеющая имя, тип и значение. Значение переменной можно изменять во время работы программы.
В Java имена могут включать
Символы алфавита (латиница A-Z кириллица А-Я)
цифры
знак подчеркивания _, знак $
Имена НЕ могут включать
пробелы
скобки, знаки +, =, !, ? и др.
Ключевые (abstract, continue, for, new, switch, assert, default, goto, package, synchronized, boolean, do, if, private, this, break, double, implements, protected, throw, byte, else, import, public, throws, case, еnum, instanceof, return, transient, catch, extends, int, short, try, char, final, interface, static, void, class, finally, long, strictfp, volatile, const, float, native, super, while) и зарезервированные слова (true, false, null) в сочетании с синтаксисом операций и разделителями образуют основу языка Java. Ключевые и зарезервированные слова нельзя использовать в качестве имен переменных, классов, методов.
Простые типы данных:
char { символьный (один символ) }
byte, short, int, long {целые типы}
float, double { вещественные типы }
boolean { логический }
Оператор присваивания служит для изменения значения переменной.
Порядок выполнения операций:
вычисление выражений в скобках
умножение, деление, % слева направо
сложение и вычитание слева направо
7. Целые типы данных. Операции над величинами целого типа. Сокращенная запись арифметических операций. Особенность деления в Java. Определение цифр числа. Целочисленные константы.
В Java 4 целых типа данных: byte (8 бит), short (16 бит), int (32 бита) и long (64 бита).
Операции над величинами целого типа:
+ – сложение
- – вычитание
* – умножение
/ – деление нацело
% – получение остатка от деления
Сокращенная запись арифметических операций:
а = а + 1; а++;
а = 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;
Особенность деления в Java: при делении целых чисел остаток отбрасывается.
Определение цифр числа:
int one = x % 10;
int dec = (x / 10) % 10;
int hun = (x / 100) % 10;
Целочисленные константы:
В числовых константах используются 3 вида представления:
десятичное;
восьмеричное;
шестнадцатеричное;
8. Инкремент и декремент. Префиксная и постфиксная формы. Примеры.
Инкремент: а = а + 1;
Декремент: a = a – 1;
???
Инкремент - это оператор (++), который увеличивает число на 1.
Декремент - это оператор (--), который уменьшает число на 1.
Постфиксный - это означает то, что сначала над операндом (переменной) делаются какие-то операции и только после всех этих операций, действует оператор инкремента или декремента. То есть, если у нас такая строчка: A = 5 * B--;, то это будет читаться так: умножить 5 на B и присвоить полученный результат переменной A, после чего уменьшить переменную B на единицу.
Префиксный - это противоположность постфиксному. Сначала оператор инкремента или декремента увеличивает или уменьшает операнд (переменную) и только после этого над ним производятся остальные операции, если они есть. То есть, если у нас такая строчка: A = 5 * —B;, то это будет читаться так: уменьшить значение переменной B на единицу, после чего умножить 5 на B (а в это время в переменной B уже будет хранится значение, которое на единицу меньше изначального) и присвоить результат переменной A.
9. Типы данных с плавающей точкой. Константы с плавающей точкой.
Константы класса Math. Методы класса Math: прямые трансцендентные, обратные трансцендентные, гиперболические, экспоненциальные. Примеры.
Числа с плавающей точкой, называемые действительными, используются при вычислениях, которые требуют получения результата с точностью до определенного десятичного знака. float (32 бита) и double (64 бита).
Константы с плавающей точкой: Числа с плавающей точкой представляют десятичные значения с дробной частью. Стандартная форма записи десятичного числа состоит из: целого числа; десятичной точки; дробной части. Научная форма записи десятичного числа состоит из: мантиссы; символа E, суффикса,
Константы класса Math типа double:
Math.PI – число π с точностью в 15 десятичных знаков.
Math.E – основание натурального логарифма с точностью в 15 десятичных знаков.
Методы класса Math:
double sin(double arg) - Возвращает синус угла arg, переданного в радианах
double cos(double arg) - Возвращает косинус угла arg, переданного в радианах
double tan(double arg) - Возвращает тангенс угла arg, переданного в радианах
Обратные трансцендентные:
double asin(double arg) - Возвращает угол, синус которого равен arg.
double acos(double arg) - Возвращает угол, косинус которого равен arg.
double atan(double arg) - Возвращает угол, тангенс которого равен arg.
double atan2(double x, double y) - Возвращает угол, тангенс которого равен x/y.
double sinh(double arg) - Возвращает гиперболический синус угла arg, переданного в радианах.
double cosh(double arg) - Возвращает гиперболический косинус угла arg, nepeдaннoro в радианах.
double tanh(double arg) - Возвращает гиперболический тангенс угла arg, переданного в радианах.
double ехр(double arg) - Возвращает экспоненту arg.
double log(double arg) - Возвращает натуральный логарифм arg.
double log10(double arg) - Возвращает логарифм по основанию 10 от arg.
double pow(double y, double x) - Возвращает y в степени x.
double sqrt(double arg) - Возвращает квадратный корень из arg.
10. Типы данных с плавающей точкой. Константы с плавающей точкой.
Константы класса Math. Методы класса Math: функции округления.
Генерация псевдослучайных чисел. Генерация целых и вещественных
чисел в заданном интервале. Примеры.
См. 9.
Методы класса Math:
int abs(int arg) - Возвращает абсолютное значение arg.
long abs(long arg) - Возвращает абсолютное значение arg.
float abs(float arg) - Возвращает абсолютное значение arg.
double abs(double arg) - Возвращает абсолютное значение arg.
double ceil(double arg) - Возвращает наименьшее целое число, которое больше arg.
double floor(double arg) - Возвращает наибольшее целое число, которое меньше или равно arg.
int round(float arg) - Возвращает arg, округленное до ближайшего int.
long round(double arg) - Возвращает arg, округленное до ближайшего long.
int max(int x, int y) - Возвращает большее из двух чисел х и у.
long max(long x, long y) - Возвращает большее из двух чисел х и у.
float max(float x, float y) - Возвращает большее из двух чисел х и у.
double max(double x, double y) - Возвращает большее из двух чисел х и у.
int min(int x, int y) - Возвращает меньшее из двух чисел х и у.
long min(long x, long y) - Возвращает меньшее из двух чисел х и у
float min(float x, float y) - Возвращает меньшее из двух чисел х и у.
double min(double x, double y) - Возвращает меньшее из двух чисел х и у.
Генерация псевдослучайных чисел:
Метод Math.random() возвращает псевдослучайное вещественное число из промежутка [0;1).
Генерация целых и вещественных чисел в заданном интервале:
x = (int)(Math.random ()*(b – a + 1)) + a; // [a,b]
11. Форматный вывод. Спецификаторы формата. Форматирование целых чисел. Форматирование вещественных чисел. Указание минимальной ширины поля.
Форматный вывод – вывод в различные потоки значений разных типов, отформатированных согласно заданному формату (шаблону).
Спецификатор формата начинается со знака процента с последующим спецификатором преобразования.
Форматирование целых чисел: System.out.printf ("Результат: %d", c);
Форматирование вещественных чисел: System.out.printf ("%f", x);
Спецификатор минимальной ширины – целое число, помещенное между символом % и кодом преобразования формата.
Спецификатор минимальной ширины дополняет вывод пробелами, обеспечивая заданную минимальную длину.
12. Форматный вывод. Спецификаторы формата. Указание точности.
Флаги формата. Использование индекса аргументов.
См. 11.
Указание точности: Спецификатор точности может быть применен к спецификаторам формата %f, %e, %g и %s. Спецификатор точности следует за спецификатором минимальной ширины поля (если таковой имеется) и состоит из точки с последующим целым числом.
Флаги формата: позволяют управлять различными аспектами преобразования. Все флаги формата – одиночные символы, которые следуют за знаком % в спецификаторе формата.
- - выравнивание влево
0 – вывод дополняется нулями вместо пробелов
Пробел – положительным числам предшествует пробел
+ - положительным числам предшествует знак +
, - числовые значения, включающие групповые разделители
( - отрицательные числовые значения заключены в скобки
Использование индекса аргументов: Обычно порядок аргументов и спецификаторов совпадает (слева направо), т.е. первый спецификатор относится к первому аргументу, второй – ко второму и т.д. Индекс аргумента следует за % в спецификаторе формата и имеет вид n$, где n – индекс нужного аргумента, начиная с 1.
13. Разветвляющиеся алгоритмы. Условный оператор и его особенности.
Пример программы с блок-схемой.
Разветвляющиеся алгоритмы – алгоритмы, в которых последовательность шагов зависит от выполнения некоторых условий.
Условный оператор:
if (<�условие>) {
<�что делать, если условие верно>
}
else {
<�что делать, если условие неверно>
}
Особенности:
вторая часть (else …) может отсутствовать (неполная форма)
если в блоке один оператор, можно убрать фигурные скобки
14. Сложные условия. Порядок выполнения логических операций. При-
мер программы с блок-схемой.
Сложное условие – это условие, состоящее из нескольких простых условий (отношений), связанных с помощью логических операций:
! – НЕ (отрицание, инверсия)
&& – И (логическое умножение, конъюнкция,
одновременное выполнение условий)
|| – ИЛИ (логическое сложение, дизъюнкция,
выполнение хотя бы одного из условий)
Порядок выполнения (приоритет = старшинство)
выражения в скобках
! (НЕ, отрицание)
<, <=, >, >=,
==, !=
&& (И)
|| (ИЛИ)
15. Оператор выбора и его особенности. Выполнение оператора выбора.
Вложенные операторы выбора.
Операторы выбора.
В языке Java существует всего 2 оператора выбора: оператор if и оператор switch. Они позволяют управлять выполнением той или иной программы в зависимости от некоторых условий. В этом уроке мы рассмотрим оператор If.
Оператор if.
Оператор if позволяет направить выполнение программы по одному из 2-х возможных путей в зависимости от какого-либо условия. Конструкция с этим оператором имеет вид:
if (условие) оператор_1;
else оператор_2;
В этой конструкции "условие" – это значение типа "boolean". Если вы помните, то значение типа "boolean" является результатом операций сравнения или логических операций. Чаще всего, оператор "if" используется именно в операциях сравнения.
"Оператор_*" в данной конструкции – это любой из операторов, которые присутствуют в языке Java. Причем они могут быть одиночным, а могут быть составным (несколько операторов). Составной оператор необходимо заключать в фигурные скобки. После ключевого слова "if" записывается условие и оператор(ы), которые выполняются, если условие верно. После "else" записывается оператор(ы), которые выполняются, если условие ложно.
Всю конструкцию можно расшифровать следующим образом: Если (if) условие истинно, то выполняется "оператор_1", если же оно "ложно", то (else) выполняется "оператор_2". Вторая строка в данной конструкции не обязательна. Если ее не будет, то в случае если условие ложно, ни один из операторов не будет выполнен.
Рассмотрим пример.
class prog_10{
public static void main(String[] args){
int a=30;
int b=20;
if (a>b) {
System.out.println("Переменная a больше переменной b");
}
}
}
Строка №3-№4. Объявляем 2 целочисленные переменные "a" и "b" и присваиваем им значения.
Строка №5. Записываем конструкцию с оператором выбора if. В круглых скобках записывается условие (a>b). Если это условие верно, то будут выполняться операторы, находящиеся в фигурных скобках {}. У нас в фигурных скобках стоит один оператор " System.out.println", который выводит на экран сообщение.
Пример написан так, что условие (a>b) окажется верным (30>20), поэтому сработает оператор вывода на экран.
Операторы выбора в Java.
Теперь изменим пример, поменяв условие в строке №5.
class prog_10{
public static void main(String[] args){
int a=30;
int b=20;
if (a
System.out.println("Переменная a больше переменной b");
}
}
}
Строка №5. Теперь условие (a
Оператор if в Java.
Следующий пример демонстрирует действие оператора "if" с оператором "else".
class prog_10{
public static void main(String[] args){
int a=30;
int b=20;
if (a
System.out.println("Переменная a больше переменной b");
}
else {
System.out.println("b меньше a");
}
}
}
В данном примере условие ложно, поэтому оператор в строке №6 не будет выполнен. Но, здесь также присутствует оператор "else"(строка №8). После него записываются альтернативные операторы, которые выполняются только в тех случаях, если условие является ложным.
Оператор выбора if...else.
Обратите внимание, что операторы заключаются в фигурные скобки, хотя здесь это не обязательно, ведь фигурные скобки нужны при использовании составного оператора. Однако это не является ошибкой, более того, многие программисты заключают в фигурные скобки даже один оператор, чтобы исключить возможные ошибки, например, при добавлении еще одного или нескольких операторов.
Например, посмотрим на следующий пример.
class prog_10{
public static void main(String[] args){
int a=30;
int b=20;
if (a>b) {
System.out.println("Переменная a больше переменной b");
}
else
System.out.println("b меньше a");
int c=a+b;
System.out.println("Сумма чисел="+c);
}
}
После оператора "else" мы добавили еще 2 оператора:
Строка №10. Оператор присваивания, который записывает в переменную "c" значение суммы переменных "a" и "b".
Строка №11. Выводим эту сумму на экран.
В этой программе условие является истинным, т.е. выполнится оператор в строке №6, а операторы после "else" (строка №9-№11) не выполниться. Однако если посмотрим на результат, то увидим, что операторы в строке №10 и №11 тоже выполнились.
Использование составных операторов.
Переменная "c" была создана и ее значение выведено на экран. Почему так произошло?
Все дело как раз в фигурных скобках. Операторы после "else" не заключены в фигурные скобки, поэтому компилятор считает, что к "else" относится только один оператор в строке №9. Поэтому он не будет выполняться, а остальные выполняются. Чтобы компилятор считал, что все 3 оператора относятся к "else" необходимо заключить их в фигурные скобки.
class prog_10{
public static void main(String[] args){
int a=30;
int b=20;
if (a>b) {
System.out.println("Переменная a больше переменной b");
}
else {
System.out.println("b меньше a");
int c=a+b;
System.out.println("Сумма чисел="+c);
}
}
}
Вложенные операторы if.
Иногда после оператора "if" или "else" может быть записан еще один (или несколько) операторов "if", либо конструкций "if…else".
class prog_10{
public static void main(String[] args){
int a=30;
int b=20;
if (a>b) {
if (a==30) {
System.out.println("Переменная a="+a);
}
}
else {
System.out.println("a меньше b");
}
}
}
Строка №6. Здесь используется вложенный оператор "if". Фактически, он добавляет к программе еще одно условие. Сначала проверяется первое условие в строке №5 (a больше b). Если оно истинно, то проверяется второе условие в строке №6 (a равно 30). Если оно тоже истинно, то выполняется оператор в строке №7.
Вложенный оператор if.
Важно помнить: Оператор "else" всегда относится к ближайшему оператору "if", который находится с ним в одном блоке и не связан с другим оператором "if".
Пример:
class prog_10{
public static void main(String[] args){
int a=30;
int b=20;
if (a==30) {
if (b>a){
System.out.println("a меньше b");
}
if (b
System.out.println("a больше b");
}
else {
System.out.println("Переменная a="+a);
}
}
else {
System.out.println("a меньше b");
}
}
}
Фигурная скобка в строке №5 открывает блок, который заканчивается в строке №15. Если кликнуть мышкой в редакторе NetBeans по любой фигурной скобке он подсветит 2-ую фигурную скобку, относящуюся к этому блоку.
Вложенный оператор if...else.
Оператор "else" внутри этого блока (строка №12) относится к ближайшему оператору "if" (строка №9).
Оператор "else" в строке №16 не может быть связан с "if" в строке №6 или №9, поскольку не находится с ними в одном блоке. Он связан с оператором "if" в строке №5.
1
2 3 4
|
|
|