Лекции по программированию на Java. 1 курс 2 семестр, Математика с доп. спец. Информатика
Программирование (на языке java).
Лектор: Костин Алексей Николаевич.
Java – универсальный объектно-ориентированный язык программирования высокого уровня,
со строгой типизацией данных и С-подобным синтаксисом. Программы, созданные на Java,
транслируются в байт-код, который затем выполняется виртуальной машиной.
История развития языков программирования.
Изначально программирование происходило в машинных кодах (0 и 1). Данные и команды для их обработки записывались в двоичном коде и помещались в память компьютера.
Управление передавалось первой из команд и далее последовательно выполнялась вся программа.
Затем машинные коды заменили мнемоническими сокращениями, т.е командами на английском языке из понятных человеку слов. Так появился язык ASSEMBLER. Команды этого языка по-прежнему управляли напрямую микропроцессором, заставляя выполнить его одно из допустимых действий, или периферийными устройствами. ASSEMBLER считается ЯП низкого уровня.
Программа на ассемблере состояла из команд для конкретного микропроцессора и могла выполняться только на нём. Программу без изменений (иногда очень существенных) нельзя было запустить на другом микропроцессоре (например, на более современных), т.е программа была непереносимой, и успех – только при совместимости процессоров и идентичном наборе команд.
Программу перед запуском из понятных человеку слов всё равно нужно было переводить в машинные коды.
В 1956 году появился язык FORTRAN. Он также обладал мнемоническими командами, но они были ориентированы на предметную область решаемых задач (например, команда могла сохранять что-то в файл или вычислять какую-нибудь математическую функцию). Происходит переход от работы с железом к работе с практическими задачами.
Обучаться программированию стало проще. Исходный текст программ стал более понятным для неопытных программистов. Фортран был первым ЯП высокого уровня, то есть не привязанному к конкретному процессору.
Программы на Фортране перед запуском также надо было транслировать в машинные коды.
Этим занималась специальная программа, называемая компилятором. Компиляторы могли создаваться для разных платформ (процессоров и ОС0, поэтому написанную на Фортране программу можно было без изменений (или с небольшими изменениями) компилировать для каждой платформы, т.е программы стали переносимыми на уровне исходного кода.
В большинстве случаев программы на Фортране занимали больше памяти, работали медленнее, не могли использовать все особенности процессоров и периферии, в отличие от программ на Ассемблере. После любого изменения в исходном коде перед запуском программу нужно было откомпилировать, что для больших программ требовало много времени.
В конце 60-х – начале 70-х появился ЯП С. Он был ЯП высокого уровня, но при необходимости позволял обращаться к аппаратному обеспечению с помощью собственных Набрано: Котомина Эмилия aka Eeemilen Asmodea Wwwolandia Лекции по программированию на Java. 1 курс 2 семестр, Математика с доп. спец. Информатика команд и включения кода на Ассемблере. С завоевал огромную популярность и позволил создать целые новые ОС. На базе С был создан ЯП С++, он обратно совместим с С (т.е программы, написанные на С, являются корректными с точки зрения С++), но при этом включает новые возможности и позволяет создавать объектно-ориентированные программы.
С++ до сих пор самый популярный язык системного программирования (низкоуровневого).
Но для создания прикладных программ (высокого уровня) он уже не так популярен в силу сложной переносимости (тоже только на уровне исходного кода) и необходимости компилировать программу после всякого изменения и под всякую платформу.
В 1995 году появилась первая версия ЯП java, которая была лишена некоторых названных недостатков.
Подходы к программированию.
Первые программы представляли собой линейный алгоритм, где все действия выполнялись от начала до конца в строгой последовательности.
Из-за того, что в сложных программах было много однотипных и повторяющихся действий, их стали выделять в отдельные подпрограммы, которые назвали процедурами. Процедуру можно было многократно вызывать в разных местах программы, при этом передавая ей разные параметры. Таким образом, создание сложной программы сводилось к описанию нужных процедур и их вызову в нужном порядке и с подходящими параметрами. Такой подход называется процедурным программированием.
Объектно-ориентированное программирование (ООП) – подход к созданию программ, основанный на использовании классов и объектов, взаимодействующих между собой.
Класс описывает устройство и поведение объектов. Устройство описывается через набор характеристик (свойств), а поведение – через набор доступных для объектов операций (методов).
Классы можно создавать на основе уже имеющихся, добавляя или переопределяя свойства и методы.
Классы можно представлять себе как шаблоны, по которым строятся объекты.
Объекты – это элементы программы, обладающие схожим набором характеристик и поведением (т.е это элементы, построенные на основе одного класса).
Каждый объект имеет некоторое состояние, оно определяется значением всех его свойств.
В одной программе могут существовать несколько классов, и объекты разных классов могут взаимодействовать между собой (через методы).
Создание программы в рамках ООП происходит так:
1. Из предметной области задачи выделяются существенные характеристики, с учётом которых создаются классы.
2. От классов порождаются объекты, обладающие некоторым начальным состоянием (значениями свойств).
3. Объекты начинают взаимодействовать между собой с помощью методов, изменяя своё состояние.
4. Так, мы получаем модель некоторого явления или процесса. Чтобы получить Набрано: Котомина Эмилия aka Eeemilen Asmodea Wwwolandia Лекции по программированию на Java. 1 курс 2 семестр, Математика с доп. спец. Информатика полезный результат, надо оценить состояние этой модели в нужный момент.
Платформа Java.
ЯП является лишь частью платформы, в состав которой также входят:
1) Набор классов, собранных в библиотеку для решения многих стандартных задач.
(библиотека класса Java), 2) Виртуальная машина Java. Которая исполняет байт-код, полученный в результате компиляции программ.
Существует несколько редакций платформы:
1) Java SE (Standard Edition) для настольных приложений.
2) Java ME (Micro Edition) для приложений под мобильные и встраиваемые устройства.
3) Java EE (Enterprise Edition) для клиент-серверных приложений корпоративного назначения.
Процесс создания простейшей программы на Java.
В общем случае новую программу можно начать писать в любом текстовом редакторе, но удобнее это делать в редакторе с подсветкой синтаксиса языка или в интегрированной среде разработки (IDE), которая, кроме редактора кода, содержит различные заготовки и полезные функции для ускоренного создания программы.
После того, как исходный код программы написан, она сохраняется с именем имя_программы.java, где имя_программы – имя одного из классов, представленных в исходном коде.
Далее программу необходимо откомпилировать. Это можно сделать командой javac имя_програмы.java После запуска этой команды происходят 2 важных процесса:
1) Специальный отладчик ищет возможные ошибки в программе. Например, он выявляет синтаксические ошибки, но почти не анализирует сам алгоритм.
2) Если отладчик не выявил ошибок, то запускается компилятор, он превращает исходный код программы в так называемый байт-код – это двоичные данные, непонятные человеку, но готовые к выполнению на JVM.
Если корректно прошли отладка и компиляция, то появляется файл имя_программы.class Теперь мы можем запустить полученный байт-код на JVM с помощью команды java имя_программы JVM – это программа, которая запускается внутри ОС и создана специально под конкретную архитектуру (например, для Win и 32-разрядного процессора или для Linux и 64-разрядного процессора или для мобильного телефона).
В JVM происходят запуск и выполнение байт-кода. Указанная выше команда заставит JVM искать в текущей директории файл с именем имя_программы.class, в этом файле – класс имя_программы, а в этом классе – метод Main. Дальше будут выполняться все инструкции, указанные в методе Main. Если класс был назван неправильно или метод Main в нём Набрано: Котомина Эмилия aka Eeemilen Asmodea Wwwolandia Лекции по программированию на Java. 1 курс 2 семестр, Математика с доп. спец. Информатика отсутствует, то программа выполняться не сможет.
Если какие-то изменения были внесены в исходный код, то перед запуском программы её код необходимо сохранить и перекомпилировать, иначе выполняться будет старая версия байт-кода.
Переменные и типы данных.
Переменной называется некоторая область памяти, которой присвоена уникальное и понятное для программиста имя и в которых могут быть записаны данные определённого рода и объёма. Данные из переменной могут быть также прочитаны, и старые данные могут заменяться новыми.
В ЯП Java до того, как переменная будет использована (до записи или чтения данных) необходимо определить её тип – один из возможных вариантов, описывающих, какие данные могут помещаться в переменную, какова область допустимых значений и какие опреации смогут применяться к этим данным.
Тип каждой переменной Java задаётся однажды и не может быть изменён по ходу программы. Такой набор характеристик и называется статической строгой типизацией. В других ЯП тип переменной может определяться теми значениями, которые в неё записываются, и даже изменяться по ходу программы (PHP).
Для того. Чтобы объявить переменную, надо указать существующий тип данных и после – имя данной переменной. Имя может состоять из латинских букв, цифр и некоторых символов, но начинаться должно с буквы. По традиции имена переменных и методов начинают с маленькой буквы, а имена классов – с большой. В одной части программы не может существовать двух и более переменных с одинаковыми именами (в одном блоке).
Имена Primer, primer, PRIMER различны. Имена переменных рекомендуется придумывать так, чтобы из имени следовало назначение переменной.
Sum – сумма, например, а не произведение.
Логический тип.
Тип может хранить 2 значения в своих переменных: истину (true) и ложь (false). Для объявления переменной логического типа требуется boolean a;
После этого можно присваивать и читать значения из переменных.
a=true ;
boolean b;
b=a;
Для данного типа применима следующая операция:
a && b – операция пересечения (логическая И), даёт истинный результат оба аргумента истинны.
a || b — логическое ИЛИ, даёт истинный результат тогда, когда хотя бы один из операндов Набрано: Котомина Эмилия aka Eeemilen Asmodea Wwwolandia Лекции по программированию на Java. 1 курс 2 семестр, Математика с доп. спец. Информатика истинен.
!а – отрицание, возвращает результат, противоположный значению переменной а.
a^b – исключающее ИЛИ, возвращает истинный результат один из аргументов истинен, а другой ложен.
С участием описанных операций, а также операция присваивания, которая обозначается операцией =, можно составлять и вычислять сложные операции.
boolean a, b, c ;
a = true;
b = !a;
c = a || b && !a;
Приоритет операций таков:
!, &&, ||. но приоритет можно регулировать с помощью (). Выражение в скобках выполняется в первую очередь. () можно вкладывать друг в друга, первым будет выполняться выражение во внутренних ().
Операция присваивания (=) работает однозначно по следующему принципу:
Сначала вычисляется выражение, стоящее справа от =, потом оно присваивается переменной, стоящей слева от =.
Числовые целые типы данных.
Тип char хранит не просто целые числа, а номера символов по кодовой таблице Unicode, которая содержит специальные символы, символы псевдографики и буквы различных национальных алфавитов, в т.ч и кириллицей, а также популярные иероглифы.
Условные операторы Для организации ветвления в программах на Java моет также использоваться оператор switch.
Он попал в Java по наследству из более старых языков программирования, и любая конструкция с его использованием может быть заменена с помощью набора связок else if.
Более того, оператор switch позволяет работать только с одной переменной, проверяя её точное совпадение с некоторым набором констант и потому является менее универсальным, чем if.
switch (n) { Лекции по программированию на Java. 1 курс 2 семестр, Математика с доп. спец. Информатика Операторы организации цикла.
Циклом в ЯП Java называется некоторый фрагмент программного кода, который повторяется многократно. При этом цикл может состоять даже из одного выражения или вообще быть пустым.
Выделяют 2 типа циклов: Цикл типа «пока» и цикл типа «n раз».
Цикл типа «n раз».
Данный вид циклов используется в том случае, когда заранее известно, какое количество повторений потребуется. Обычно цикл типа «n раз» связан с каким-то счётчиком, который и отмеряет количество повторений.
Общая схема цикла:
for (инициализация; условие повторения; итерация) { Инициализация -- создание некоторого счётчика и указание его начального значения. Для одного цикла при необходимости может быть создано сразу несколько счётчиков.
Инициализация выполняется один раз до самого первого шага цикла.
Итерация – некоторое выражение, описывающее, каким образом будет изменяться счётчик/счётчики цикла после каждого его шага.
Условия повторения – некоторое логическое выражение, переменная или константа, значение которой будет проверяться перед началом каждого шага цикла (в том числе и самого первого). Если условие истинно, то очередной шаг цикла будет выполняться, иначе цикл остановится.
Тело цикла – набор каких-то операций ЯП Java, который и будет повторяться на каждом шаге цикла. Все значения переменных, полученных на текущем шаге, будут переданы в следующий шаг.
Пример 1:
for (int i=1; i 0; j =j-2) { System.out.println (j + « »);
//99 97 95 … Пример 3:
for (int a = 5; b = 5; a-b>=0; a--, b++) { System.out.println (a*b);
// - - Пример 4 (вычисление факториала) int n = 6, f = 1;