Главная страница
Навигация по странице:

  • ЛАБОРАТОРНАЯ РАБОТА №5 126 ЛАБОРАТОРНАЯ РАБОТА №6 186 ЛАБОРАТОРНАЯ РАБОТА №7 207 ЛАБОРАТОРНАЯ РАБОТА №8 230

  • Вимоги до оформлення звітів. 322

  • Лабораторная работа 1 2 лабораторная работа 2 31 лабораторная работа 3 44 лабораторная работа 4 74


    Скачать 1.76 Mb.
    НазваниеЛабораторная работа 1 2 лабораторная работа 2 31 лабораторная работа 3 44 лабораторная работа 4 74
    Дата12.03.2021
    Размер1.76 Mb.
    Формат файлаdoc
    Имя файлаOOP_Lab_Rus.doc
    ТипЛабораторная работа
    #184105
    страница1 из 31
      1   2   3   4   5   6   7   8   9   ...   31

    СОДЕРЖАНИЕ


    ЛАБОРАТОРНАЯ РАБОТА №1 2

    ЛАБОРАТОРНАЯ РАБОТА №2 31

    ЛАБОРАТОРНАЯ РАБОТА №3 44

    ЛАБОРАТОРНАЯ РАБОТА №4 74

    ЛАБОРАТОРНАЯ РАБОТА №5 126

    ЛАБОРАТОРНАЯ РАБОТА №6 186

    ЛАБОРАТОРНАЯ РАБОТА №7 207

    ЛАБОРАТОРНАЯ РАБОТА №8 230

    ЛАБОРАТОРНАЯ РАБОТА №9 256

    ЛАБОРАТОРНАЯ РАБОТА №10. 278

    ЛАБОРАТОРНАЯ РАБОТА №11. 301

    Правила техніки безпеки 321

    Вимоги до оформлення звітів. 322


    ЛАБОРАТОРНАЯ РАБОТА №1



    Тема: Обзор языка программирования java.

    Цель: ознакомится с языком программирования java.

    Теоретические сведенья

    Обзор языка java

    Рассматриваемые вопросы:

    1.1 Первый пример простой программы

    1.2 Типы данных

    1.3 литералы

    1.4 Переменные

    1.5 Операции
    Объектно-ориентированное программирование (ООП) ­ это основная характеристи­ка языка java. Фактически все jаvа­программы являются, по меньшей мере, частично, объектно-ориентированными.

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

    Для преодоления увеличивающейся сложности была начата разработка подхода, на­званного объектно-ориентированным программированием. Объектно­-ориентированное программирование организует программу вокруг ее данных (т.е. объектов) и набора под­робно определенных интерфейсов к этим данным. Объектно-­ориентированную програм­му можно характеризовать как данные, управляющие доступом к коду.
    1.1 Первый пример простой программы

    /*

    Это простая программа Java.

    Назовите этот файл "Example. j ava" .

    */

    class Example {

    // Программа начинается с обращения к main().

    public static void main(String args[]) {

    Sуstеm.оut.рriпtln("Простая Jаvа­программа.");

    }

    }

    ­Для большинства языков программирования имя файла, который одержит исход­ный код программы, не имеет значения. Однако в java это не так. Прежде всего, следует твердо усвоить, что присваиваемое исходному файлу имя очень важно. В данном случае именем исходного файла должно быть Example.java. В java исходный файл официально называется модулем компиляции. Он представ­ляет собой текстовый файл, который содержит определения одного или более классов.

    Компилятор java требует, чтобы исходный файл имел расширение .jаvа. Как видно из кода программы, именем определенного программой класса является также Example. И это не случайно. В java весь код должен размещаться внутри класса. В соответствии с принятым соглашением имя этоrо класса должно совпадать с именем файла, содержащего программу. Необходимо также, чтобы употребление строчных и про­писных букв имени файла соответствовало их употреблению в имени класса. Это обусловлено тем, что jаvа­код чувствителен к регистру символов. Пока что со­глашение о соответствии имен файлов и имен классов может казаться произвольным. Однако оно упрощает поддержку и организацию программ.


        1. Более подробное рассмотрение первого примера программы

    Хотя программа Example.java достаточно коротка, с ней связано несколько важных особенностей, характерных для всех jаvа­программ. Программа начинается со следующих срок:

    /*

    Это простая проrрамма Java.

    Назовите этот файл "Example. j ava" .

    */

    Этот фрагмент кода ­ комментарий. Подобно большинству других языков про­граммирования, java позволяет вставлять примечания в исходный файл программы. Компилятор игнорирует содержимое комментариев. Эти комментарии служат описани­ем или пояснением действий программы для любого, кто просматривает исходный код. В данном случае комментарий описывает программу и напоминает, что исходный файл должен быть назван Examplе.jаva. Конечно, в реальных приложениях комментарии слу­жат главным образом для пояснения работы отдельных частей программы или действий, выполняемых отдельной функцией.

    В java поддерживаются три стиля комментариев. Комментарий, приведенный в нача­ле программы, называют многострочным комментарием. Этот тип комментария должен начинаться с символов / * и заканчиваться символами * /. Весь текст, помещенный между этими двумя символами комментария, компилятором игнорируется. Как следует из его названия, многострочный комментарий может содержать несколько строк.

    Следующая строка программы имеет такой вид:

    ­class Example {

    В этой строке ключевое слово class используется для объявления о том, что выполняется определение нового класса. Example ­ это идентификатор, являющийся именем класса. Все определение класса, в том числе его членов, будет размещаться между открывающей ( {) и закрывающей (}) фигурными скобками. В среде java все действия программы осуществляются внутри класса. В этом состоит одна из причин того, что все jаvа­прoграммы (по крайней мере, частично) являются объектно­-ориентированными.

    Следующая строка программы ­ однострочный комментарий:

    ­/ / Программа начинается с обращения к mаin () .

    ­Это второй тип комментариев, поддерживаемый языком java. Однострочный комментарий начинается с символов / / и завершается концом строки. Как правило, про­граммисты используют многострочные комментарии для вставки длинных примечаний, а однострочные комментарии ­ для помещения коротких, построчных описаний.

    Следующая строка кода выглядит так:

    public static void main(String args[])

    Она начинается с метода main (). Как видно из предшествующего ей комментария, выполнение программы начинается с этой строки. Выполнение всех jаvа­приложений начинается с вызова метода main ( ).

    ­ Ключевое слово public ­- спецификатор доступа, который позволяет программисту управлять видимостью членов класса. Когда члену класса предшествует ключевое сло­во public, этот член доступен коду, расположенному вне класса, в котором определен данный член. (Противоположное ему по действию ключевое слово ­ private, которое препятствует использованию члена класса кодом, определенным вне eгo класса.) В данном случае метод main () должен быть определен как public, поскольку при запуске программы он должен вызываться кодом, определенным вне eгo класса. Ключевое сло­во static позволяет вызывать метод main () без конкретизации экземпляра класса. Это необходимо потому, что метод main () вызывается виртуальной машиной java до созда­ния каких-либо объектов. Ключевое слово void просто сообщает компилятору, что метод main () не возвращает никаких значений. Как будет показано в дальнейшем, методы могут также возвращать значения.

    Как было отмечено, main () -­ метод, вызываемый при запуске jаvа­приложений. Необходимо помнить, что язык java чувствителен к регистру символов. Следовательно, строка Main не эквивалентна строке main.

    Для передачи любой информации, необходимой методу, служат переменные, указы­ваемые в скобках, которые следуют за именем метода. Эти переменные называют параметрами. Если для данного метода никакие параметры не требуются, следует указывать пустые скобки. Метод main () содержит только один параметр, но достаточно сложный.

    Параметр String args [] объявляет параметр args, который представляет собой массив экземпляров класса String. (Массивы - ­это коллекции аналогичных объектов.) Объекты типа String хранят символьные строки. В данном случае параметр args принимает лю­бые аргументы командной строки, присутствующие во время выполнения программы.

    Последним символом строки является символ фигурной скобки ( {). Он обозначает начало тела метода main () . Весь код, образующий метод, будет располагаться между открывающей и закрывающей фигурными скобками метода.

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

    Следующая строка кода приведена ниже внутри метода main ( ):

    ­Sуstеm.оut.рrintln("Простая Jаvа­программа.");

    ­Эта строка выводит на экран строку текста " Простая Jаvа­программа. ", за кото­рой следует новая строка. В действительности вывод выполняется встроенным методом println (). В данном случае метод println () отображает переданную ему строку. Оператор println () завершается символом точки с запятой. В java все операторы заканчиваются этим символом. Причина отсутствия символа точки с запятой в конце остальных строк программы в том, что с технической точки зрения они не являются операторами.

    Первый символ } завершает метод main (), а последний ­ определение класса Example.
    1.2 Типы данных

    Java — это язык со строгой типизацией. Каждая пере­менная и каждое выражение имеют тип, и каждый тип строго определен. Все назначения — явные или через передачу параметров в вызо­вах методов, проверяются на совместимость типов. Не имеется никаких ав­томатических приведений или преобразований конфликтующих типов, как в некоторых языках. Компилятор Java проверяет все выражения и парамет­ры, чтобы гарантировать, что типы совместимы. Любые несоответствия ти­пов — ошибки, которые должны быть исправлены прежде, чем компилятор закончит компилировать.
    1.2.1 Простые типы

    Java определяет восемь простых (или элементных) типов данных: byte,

    short, int, long, char, float, double И boolean. Их можно объединить в че­тыре группы.

    - Целые (Integers). Эта группа включает типы byte, short, int и long, ко­торые являются полнозначными целыми числами со знаком.

    - Числа с плавающей точкой (Floating-point number). Эта группа включает типы float и double, которые представляют числа с дробной точностью.

    - Символы (Characters). Эта группа включает тип char, который представ­ляет символы в наборе символов, подобные буквам и цифрам.

    - Логические или булевские (Boolean). Эта группа включает тип boolean, ко­торый является специальным типом для представления значений true/false (истина/ложь).

    Можно использовать указанные типы сами по себе, создавать массивы или новые классы типов. Таким образом, они формируют осно­ву для всех других типов данных.

    Простые типы представляют одиночные (не множественные) значения. Хотя Java во всем остальном полностью объектно-ориентирован, простые типы не являются таковыми. Они аналогичны простым типам, которые можно найти в большинстве других не объектно-ориентированных языков. Причи­на этого кроется в эффективности. Выполнение простых типов в виде объ­ектов слишком ухудшило бы эффективность.

    Простые типы определены так, чтобы знать их явный диапазон и математи­ческое поведение. Из-за требования мобильности, все типы данных имеют строго определенный диапазон. Например, int — всегда 32-битный, независимо от специфической платформы. Это позволяет программам быть записанными так, чтобы гарантировать ее выполнение без переводана любой машинной архитектуре. Тогда как строгая спецификация размера целого числа может вызывать небольшую потерю производительности, в некоторых средах это необходимо, чтобы достичь мобильности.
    1.2.2 Целые типы

    Java определяет четыре целых типа: byte, short, int и long. Вес они со знаками — положительные и отрицательные значения. Java не поддерживает беззнаковых и только положительных целых. Не смотря на это, проектировщики Java чувствовали, что целые числа без знака все таки нужны. В частности, что концепция целых без знака(unsigned) использовалась главным образом, чтобы специфициро­вать поведение старшего бита, который определял знакцелого типа (int), когда он выражен как число. Java управляет зна­чением старшего бита иначе, предоставляя специальную операцию "беззна­кового правого сдвига". Таким образом, потребность в типе целого числа без знака была устранена.

    О ширине(или количестве бит, отводимых для хранения значения) целочис­ленного типа нельзя думать как о количестве памяти, которую он занимает, а скорее, как о поведении, которое она определяет для переменных и выра­жений этого типа. Исполнительная среда Java вольна использовать любой размер, какой она хочет, тогда как типы ведут себя согласно их объявлению. Существует, по крайней мере, одна реализация исполнительной среды, ко­торая хранит числа типа byte и short как 32-разрядные (а не 8- и 16-раз­рядные) значения, чтобы улучшить эффективность, потому что этим зна­чением выражается размер слова большинства используемых в настоящее время компьютеров.

    Ширина и диапазоны этих целых типов широко изменяются, как показано в табл. 1.

    Табл. 1

    Имя

    Ширина

    Диапазон

    Long

    64

    От-9 223 372 036 854 775 808 до 9 223 372 036 854 775 807

    Int

    32

    от-2 147 483 648 до 2 147 483 647

    short

    16

    от -32 768 до 32 767

    Byte

    8

    от-128 до 127


    Тип byte

    Тип byte - самый маленький целый тип. Это 8-разрядный тип со знаком, значения которого изменяются в диапазоне от —128 до 127. Переменные типа byte особенно полезны, когда вы работаете с сетевым или файловым потоком данных. Они также могут использоваться при работе с рядами дво­ичных данных, которые не могут быть непосредственно совместимы с дру­гими встроенными типами Java.

    Байтовые переменные объявляются при помощи ключевого слова byte. На­пример, следующее предложение объявляет две байтовые переменные с именами b и с:

    byte b,c;

    Тип short

    Тип short — 16-разрядный тип данных со знаком. Диапазон изменения его значений от -32,768 до 32,767. Пожалуй, это наименее используемый тип Java, так как он определен со старшим байтом в начале (в так называемом формате big-endian). Этот тип главным образом применим к 16-разрядным компьютерам, которые становятся все более и более редкими. пример объявления short переменной:

    short s;

    Тип Int

    Чаще всего используется тип int. Это 32-разрядный тип со знаком, который имеет диапазон от -2,147,483,648 до 2,147,483,647. В дополнение к другим применениям, переменные типа int обычно используются для управления циклами и индексирования элементов массива. Всякий раз, когда появляет­ся целочисленное выражение, включающее операнды типа byte, short, int и целочисленные константы, тип полного выражения расширяется (или по­вышается) до типа int прежде, чем выполняется вычисление.

    Тип int наиболее универсален и эффективен и должен быть использован для расчетов, индексации элементов массива или выполнения целочислен­ных операций. Может показаться, что использование short или byte эко­номит память, но нет никакой гарантии, что Java не будет внутренне так или иначе расширять эти типы до int.

    Тип long

    Тип long — 64-разрядный тип со знаком. Он полезен в тех случаях, когда тип int недостаточен (по размеру памяти), чтобы хранить желаемое значе­ние. Диапазон значений long весьма велик. Это делает его полезным при работе с большими целыми числами. Например, вот программа, которая вычисляет мили, пройденные светом за указанное число дней.

    // Вычисляет расстояние, пройденное световым сигналом

    // используя long-переменные

    class Light {

    public static void main(String args[]) {

    int lightspeed; long days; long seconds; long distance;

    // аппроксимация скорости света в мили в секунду lightspeed = 186000;

    days = 1000; // задать количество дней

    seconds = days * 24 * 60 * 60; // преобразовать в секунды distance = lightspeed * seconds;

    // вычислить расстояние

    System.out.print("За " + days);

    System.out.print(" дней световой сигнал пройдет около "); System.out.println(distance + " миль.");

    }

    }

    Эта программа генерирует следующий вывод:

    За 1000 дней световой сигнал пройдет около 16070400000000 миль. Ясно, что результат не мог быть получен в int-переменной.
    1.2.3 Типы с плавающей точкой

    Числа с плавающей точкой, также известные как вещественные числа, ис­пользуются при оценке выражений, которые требуют дробной точности. Например, вычисления квадратного корня или трансцендентных функций типа синуса и косинуса приводят к вещественному значению с определен­ной точностью, что и требует типа с плавающей точкой. Java реализует стандартный набор типов с плавающей точкой и соответствую­щие операции с ними. Существует два вида типов с плавающей точкой fidat и double, которые представляют числа с одинарной и двойной точ­ностью, соответственно. Их ширина и диапазоны представлены в табл. 2.

    Табл. 2

    Имя

    Ширина в битах

    Диапазон

    double

    64

    от 1.7е-308 до 1 7е+308

    float

    32

    от 3.4е-038 до 3.4е+038

    ­

    Тип float

    Тип float определяет значение с одинарной точностью, которое использует 32 бита памяти. Вычисления с одинарной точностью быстрее на некоторых процессорах, а значения занимают половину пространства значений двой­ной точности. Но тип оказывается неточным, когда его значения становятся или очень большими, или очень маленькими. Переменные типа float по­лезны, когда нужен дробный компонент, но не требуется большой степени точности. Например, тип float может быть полезен при представлении долларовых цен с учетом центов.

    Пример объявления float-переменных:

    float hightemp, lowtemp;

    Тип double

    Тип двойной точности, обозначаемый ключевым словом double, для хране­ния значений использует 64 бита памяти. На некоторых современных про­цессорах, которые были оптимизированы для высокоскоростных математи­ческих вычислений, операции с двойной точностью на самом деле выпол­няются быстрее, чем с одинарной. Все трансцендентные математические функции, типа sin , cos и sqrt, возвращают double-значения. Когда нужно поддержать точность во многих итерационных вычислениях или ма­нипулировать с многозначными числами, double — лучший выбор.

    Ниже представлена короткая программа, которая использует переменные двойной точности, чтобы вычислить площадь круга.

    // Вычислить площадь круга, class Area {

    public, static void main (String args []){
    double pi, r, a;

    r = 10.8 ; // радиус кpyгa.

    Pi = 3.14 ; // пи приближенно.

    a = pi * r * r; // вычисляет площадь

    System.out.println("Площадь круга равна " + a);

    }

    }

    1.2.4 Символьный тип (char)

    Для хранения символов Java использует тип char. Однако, программисты C/C++, остерегайтесь: тип char в Java — не тот же, что в С или С++. В C/C++ char — целочисленный тип шириной в 8 бит. В Java это не так. Вместо этого, для представления символов Java использует Unicode. Unicodeопределяет полный набор интернациональных символов, который может представлять все символы, находящиеся во всех человеческих языках. Он объединяет множество наборов символов, таких как латинский, греческий, арабский, кириллица, иврит, Katakana, Hangul и многие другие. Для этой цели он требует 16 бит. Таким образом, char в Java — 16-разрядный тип данных. Диапазон его значений варьируется от 0 до 65 536. Нет никаких от­рицательных символов. Стандартный набор символов, известный как ASCII, все еще располагается в интервале значений от 0 до 127, как обычно, а рас­ширенный 8-разрядный набор символов, ISO-Latin-1, в диапазоне от 0 до 255. Так как язык Java разработан для записи апплетов "всемирного ис­пользования", то имеет смысл, чтобы для представления символов он ис­пользовал Unicode. Конечно, использование Unicode несколько неэффек­тивно для языков, подобных английскому, немецкому, испанскому или французскому, чьи символы могут легко содержаться в 8 битах. Но такова цена, которая должна быть заплачена за глобальную мобильность.
    1.2.5 Булевский тип (boolean)

    Java имеет простой тип, называемый boolean (булевый или булевский), для логических значений. Он может иметь только одно из двух возможных зна­чений true (истина) или false (ложь). Это тип, возвращаемый всеми опе­рациями отношений, такими как a1.3 Литералы

    1.3.1 Целочисленные литералы

    Целые числа, вероятно наиболее часто используемый тип в обычных про­граммах. Любое полное числовое значение — целый литерал. Например, 1, 2, 3 и 42. Это все десятичные значения, т. е. числа с основанием 10. Имеются два других основания, которые можно использовать в целых литералах — восьмеричное (octal), с основанием 8, и шестнадцатеричное (hexadecimal), с основанием 16. Восьмеричные значения обозначены в Java ведущим ну­лем. Обычные десятичные числа не могут иметь ведущий нуль. Таким обра­зом, казалось бы, правильное значение 09 даст ошибку компилятора, так как 9 — вне восьмеричного диапазона от 0 до 7. Более обычное основание для чисел, используемых программистами — шестнадцатеричное, которое четко согласуется с размерами слов по модулю 8, такими как 8, 16, 32 и 64 бита. Шестнадцатеричную константу обозначают с ведущими нулями. Для представления шестнадцатеричного значения используются цифры от 0 до 9 и буквы латинского алфавита от А до F или от а до f (для значений от 10 до 15).

    Целые литералы создают значение типа int, которое в Java является 32-раз­рядным целым числом. Так как Java строго типизирован, возникает вопрос, как можно назначить целый литерал одному из целых типов, такому как byte или long, без генерации ошибки несоответствия типов? К счастью, такие ситуации легко управляемы. Когда литеральное значение назначается byte- или short-переменной, никакая ошибка не генерируется, если это значение находится в пределах диапазона целевого типа. Аналогично, целый литерал может всегда назначаться переменной типа long. Однако, чтобы определить длинный литерал, нужно будет явно сообщить компилятору, что его значение имеет тип long. Это осуществляется добавлением в конец ли­терального значения символа L (в верхнем или нижнем регистре).
    1.3.2 Литералы с плавающей точкой

    Числа с плавающей точкой представляют десятичные значения с дробным компонентом. Они могут быть выражены или в стандартной или научной (экспоненциальной) форме. Стандартная форма состоит из числового ком­понента, за которым следует десятичная точка, а далее — дробная компо­нента. Например, 2.0, 3.14159 и 0.6667 представляют правильные числа с плавающей точкой в стандартной системе обозначений. Научная форма представления использует стандартные обозначения — число с плавающей запятой плюс суффикс, который определяет степень 10, на которую должно быть умножено число. Экспонента обозначается буквой Е или е, за которой следует положительное или отрицательное десятичное число. Например: 6.022Е23, 314159Е-05 и 2е+100.

    По умолчанию литералы с плавающей точкой Java имеют double-точность. Чтобы определить float-литерал, следует добавить в конец его записи сим­вол F или f. Можно также явно определить double-литерал, добавляя D или d, но подобное определение будет избыточным. По умолчанию тип double занимает 64 бита памяти, в то время как менее точный тип с плавающей точкой требует только 32 бита.
    1.3.3 Булевые литералы

    Булевы литералы просты. Имеются только два логических значения — true и false. Значения true и false не конвертируются в какое-либо числовое представление. Литерал true в Java не равняется 1, а литерал false не рав­няется 0. В Java они могут быть назначены только переменным, объявленным типом boolean, или использоваться в выражениях с булевскими операциями.
    1.3.4 Символьные литералы

    Символы в Java — это индексы в наборе символов Unicode. Они являются 16-разрядными значениями, которые можно преобразовывать в целые числа и с которыми можно манипулировать целочисленными операциями, такими как сложение и вычитание. Литеральный символ представляется внутри па­ры одиночных кавычек. Все видимые символы ASCII могут быть непосред­ственно введены внутри кавычек, например: 'я', 'г' и '@'. Для символов, ко­торые невозможно ввести непосредственно, существуют несколько escape-последовательностей, позволяющих ввести нужный символ. Име­ется также механизм для прямого ввода значения символа в восьмеричном или шестнадцатеричном представлении. Для восьмеричной формы исполь­зуют обратный слэш (\), за которым следует число из трех цифр. Для шестнадцатеричного представления нужно ввести обратный слэш с символом и (\и), затем четыре шестнадцатеричных цифры. В табл. 3 представлены символьные escape-последовательности

    Табл. 3

    \ddd

    Восьмеричный символ (ddd)

    \xxxx

    Шестнадцатеричный символ UNICODE (хххх)

    \’

    Одиночная кавычка

    \"

    Двойная кавычка

    \\

    Обратный слэш

    \t

    Символ табуляции (Tab)

    /b

    Возврат на один символ (Backspace)

    \f

    Перевод страницы
      1   2   3   4   5   6   7   8   9   ...   31


    написать администратору сайта