WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!


Pages:     | 1 |   ...   | 3 | 4 || 6 | 7 |

3. Даны два действительных числа. Необходимо получить их сумму, разность и произведение. Результат вывести на консоль.

4. Определить время свободного падения материального тела с заданной высоты h. Результат вывести в консоль.

5. Составьте программу для нахождения длины катета прямоугольного треугольника (b), если известны длины гипотенузы (c) и катета (a). Результат вывести на консоль.

Лабораторная работа №Тема работы. Алгоритмизация и использование управляющих структур в Java.

Цель работы. Использование элементов организации ветвления в Java.

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

П р о г р а м м а 1. Вычисления числа Пи.

public class Pi { static double pi;

static void leibnic(){ for(double i=1;i<100000000;i+=1){ if (i%2==0){ pi-=1/(2*i-1);

}else{ pi+=1/(2*i-1);

} 13 } pi*=4;

System.out.print("\nЧисло Пи, подсчитанное по методу Лейбница равно: "+pi);

} static void vallis(){ double pi1=1, pi2=1;

for(double i=2;i<100000000;i+=2){ С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse 20 pi1*=i/(i+1);

21 pi2*=i/(i-1);

22 } pi=pi1*pi2*2;

System.out.print("\nЧисло Пи, подсчитанное по методу Валлиса равно: "+pi);

} public static void main(String[] args) { leibnic();

vallis();

29 } 30 } В данной программе описаны два метода нахождения числа Пи:

метод Лейбница (ряд Лейбница) и метод Валлиса (формула Валлиса).

В данной программе в строках 02 и 03 описываются static переменная класса pi типа double. Расчеты методом Лейбница вызываются в строке 27 благодаря использованию имени метода leibnic(). Аналогично в строке 28 вызываем метод Валлиса vallis().

В методе Лейбница для вычисления числа Пи используется ряд:

1 1 1 1 - + - +... = 1 3 5 7 9 Для вычисления данного ряда мы использовали цикл с условным оператором, где проверяется условие на четность i%2==0, если оно верно, то дробь имеет положительный знак pi+=1/(2*i-1), если нет, то ставим знак минус. В конце, для получения приближенного значения числа Пи, переменная pi умножается на 4 и выводится на консоль.

Расчет по формуле Валлиса 2 2 4 4 6 6 8... = 1 3 3 5 5 7 7 9 происходит немного по-другому. В методе объявляются две переменные pi1 и pi2 типа double в строке 18, первая хранит произведение четных дробей, вторая — нечетных, затем их удвоенное произведение присваивается переменной pi и выводится на консоль.

П р о г р а м м а 2. Нахождение решения уравнения A3B3C3= ABC public class Sol { public static void work(){ long x=0;

for(int i=1;i<10;i++){ for (int j=0;j<10;j++){ for (int k=0;k<10;k++){ 07 x=i*100+j*10+k;

if (x==(Math.pow(i,3)+Math.pow(j, 3) + Math.pow(k,3))){ System.out.println(i+"^3+"+j+"^3+"+k+"^3+"+" = "+x);

С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse 10 } 11 } 12 } 13 } 14 } public static void main(String[] args) { work();

17 } 18 } Данная программа находит такие цифры A, B и C, сумма кубов которых равна числу, составленному из этих цифр.

В программе имеются три цикла, вложенные друг в друга, каждый цикл выполняется десять раз, таким образом тело цикла 07-09 выполняется одну тысячу раз (10x10x10). Переменная x, составленная из кубов счетчиков циклов, где первый счетчик играет роль сотен числа, второй десятков, третий единиц. Если полученное x равно сумме кубов счетчиков, то на консоль выводится информация о полученных цифрах и числе x. Нахождение кубов чисел осуществляется с помощью метода pow() класса Math, в качестве первого параметра выступает само число, а вторым параметром служит показатель степени Math.pow(i,3). Можно использовать более знакомую и привычную запись i*i*i, j*j*j и k*k*k.

Задания к работе 1. Создайте приложение, которое покажет, что для выражения (теорема Ферма) нет натуральных решений от 1 до anbn=cn и n>2. Убедитесь, что есть решения для n=2, и выведите их в консоль.

1 1 1 1 1- + - +... + -, используя 2. Вычислить выражение 2 3 4 9999 оператор условия.

Лабораторная работа №Тема работы. Алгоритмизация и использование управляющих структур в Java.

Цель работы. Организация ветвления в Java.

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

П р о г р а м м а 1. Перевод чисел из десятичной системы счисления в двоичную и шестнадцатеричную.

public class Trans { public static String fromdectobin(int x){ String res="";

С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse short q = 0;

while(x>0){ q=(short)(x%2);

07 x/=2;

08 res=q+res;

09 } return res;

11 } public static String fromdectohex(float x){ 13 String res="";

short q = 0;

int c = 2;

while(c>0){ q=(short)(16*(x/16-Math.floor(x/16)));

c=(int) Math.floor(x/16);

19 x=c;

if(q<10){ 21 res=q+res;

}else{ switch(q){ case 10:

25 res="A"+res;

break;

case 11:

28 res="B"+res;

break;

case 12:

31 res="C"+res;

break;

case 13:

34 res="D"+res;

break;

case 14:

37 res="E"+res;

break;

case 15:

40 res="F"+res;

break;

42 } 43 } 44 } return res;

46 } public static void main(String[] args) { System.out.println(fromdectobin(90367));

System.out.println(fromdectohex(90367));

} 51 } С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse В данной программе приведены два метода, один переводит десятичное число в двоичную систему счисления, второй — в шестнадцатеричную.



Для перевода десятичного числа в двоичное представление используется стандартный метод — деление исходного числа на 2 с сохранением остатка, в нашем примере остаток прибавляется к строке res с левой стороны (08). В данном методе используется цикл с предусловием while(), который каждый раз получает остаток от деления на 2, затем делит исходное число на 2 и заносит полученный в первом действии остаток слева в строку. В конце, после цикла, метод возвращает полученную строку.

Способ перевода из десятичного в шестнадцатеричное представление использует аналогичный прием, производя последовательно деление на 16, за одним исключением — остаток в нашей программе вычисляется с помощью функции floor(), которая возвращает целую часть дробного числа. В результате получим целочисленный остаток от деления. Процесс записи остатков в строку более сложный, чем в случае двоичной системы счисления, так как в шестнадцатеричной для представления числа недостаточно базового набора цифр от 0 до 9 и необходимо использовать буквы A-F. Для того чтобы в строку результата добавлять буквы, в программе используется оператор множественного выбора switch(), в котором производится проверка остатка. В зависимости от величины остатка, в строку результата добавляется необходимая буква (строки 23-42).

Методы fromdectobin, fromdectohex возвращают значения типа String, которые можно непосредственно использовать в качестве аргумента метода print() для вывода на консоль (строки 48, 49). В качестве аргументов этих методов берутся числа, которые требуется перевести в заданную систему счисления.

Задания к работе 1. Для произвольной цифры от 0 до 9 вывести на консоль ее значение прописью. Например, для цифры 9 на консоли должна быть напечатана строка «Девять».

С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse Лабораторная работа №Тема работы. Массивы и строки.

Цель работы. Научиться использовать массивы и строки в Java.

Содержание работы. Работа с массивами: поиск минимального элемента и сортировка массива, а также простейшие приемы работы со строками.

П р о г р а м м а 1. Работа с массивами public class Arrays { public static short minX(){ short x=0;

short[] array = new short[10];

System.out.print("Исходный массив: ");

for (int i=0;i<10;i++){ array[i]=(short)Math.round(50*Math.random());

System.out.print(array[i]+", ");

09 } 10 x=array[0];

for(int i=1;i<10;i++){ if(x>array[i]){ 13 x=array[i];

14 } 15 } return x;

17 } public static void sort(){ short temp;

short[] array = new short[10];

System.out.print("\nИсходный массив: ");

for (int i=0;i<10;i++){ array[i]=(short)Math.round(50*Math.random());

System.out.print(array[i]+", ");

} System.out.print("\nМассив отсортированный: ");

for(int i=0;i<9;i++){ for(int j=9;j>i;j--){ if(array[j-1]>array[j]){ 30 temp=array[j];

31 array[j]=array[j-1];

32 array[j-1]=temp;

33 } 34 } System.out.print(array[i]+", ");

36 } 37 } public static void main(String[] args) { System.out.print("\nМинимальный элемент: "+minX());

sort();

41 } С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse 42 } В данной программе используются два метода — minX() и sort().

В каждом из представленных методов описывается по одному массиву, выделяя память на десять элементов для каждого массива (04, 20). Затем происходит заполнение массивов случайными числами с помощью метода Math.random() (06-09, 22-25). Явным преобразованием (short) приводим полученные значения типа double к значениям типа short (7,23).

После того, как массивы готовы, можно производить над ними различные действия. Метод minX() ищет минимальный элемент в полученном массиве (11-15).

Второй метод производит сортировку полученного массива (27-34) методом пузырька. Затем выводит значения его элементов (35).

В методе main() вызываем minX() и sort(). Поскольку метод minX() возвращает значение строкового типа, его можно использовать в качестве аргумента конструкции System.out.print().

П р о г р а м м а 2. Работа со строками public class Strings { public static String compare(String s1, String s2){ 03 String s3="";

if (s1.equals(s2)){ s3="Строки \""+s1+"\" и \""+s2+"\" равны";

} else { 07 s3="Строки \""+s1+"\" и \""+s2+"\" не равны";

} return s3;

10 } public static String add(String s1, String s2){ System.out.print("\nРезультат сложения строк \""+s1+"\" и "+"\""+s2+"\": ");

s1+=" "+s2;

return s1;

15 } public static void main(String[] args) { System.out.println(compare("АБВГ","АБВ"));

System.out.print(compare("АБВ","АБВ"));

System.out.print(add("Hello","World"));

} 21 } В приложении имеется два метода, которые сравнивают и склеивают две строки. Первый метод compare() производит сравнение двух строк и выводит результат на консоль. Сравнение производится с помощью функции equals() в строке (04). Если строки совпадают, данная функция возвращает значение true. Если строки равны (имеют одинаС.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse ковый набор символов), выводится соответствующее сообщение (05), иначе сообщение (07). В конструкции присвоения строке s3 (05, 07) были использованы символы Escape-последовательности, приведенные в лабораторной работе №2.

Во втором методе происходит простое склеивание строк с помощью операции «+»(13).





Задания к работе 1. Дан массив из целых чисел A(n), где n=1,25. Необходимо поменять местами его максимальный и минимальный элемент.

2. Дан массив из целых чисел B(n), где n=1,25. Необходимо упорядочить массив по возрастанию.

3. Дан массив из целых чисел С(n), где n=1,20. Необходимо найти среднее значение и вывести его на консоль.

4. Дан массив из целых чисел D(n), где n=1,30. Посчитайте сумму четных и нечетных элементов массива.

5. Напишите программу, выводящую на консоль таблицу 3хслучайных элементов (a(i,j)< 10).

6. Измените программу 1 так, чтобы она выводила на консоль еще и максимальный элемент (с помощью описания нового метода, например maxX()).

7. Даны 5 строк s1, s2, s3, s4 и s5, на основе условия: если строка s4 равна строке s5, нужно сложить строки s1 и s2, иначе нужно сложить строки s1 и s3.

Лабораторная работа №Тема работы. Введение в объектно-ориентированное программирование.

Цель работы. Изучение основ объектно-ориентированного программирования на языке Java.

Содержание работы. В работе рассматриваются приложения, демонстрирующие основные принципы объектно-ориентированного программирования.

П р о г р а м м а 1. Инкапсуляция полей и наследование.

public class Encapsulate { public int field1 = 100;

protected int field2 = 150;

int field3 = 200;

private int field4 = 250;

public int getField4(){ return this.field4;

С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse 08 } public static void main(String[] args) { new Class2().method1();

11 } 12 } class Class2 extends Encapsulate { public void method1(){ System.out.println("Значение открытого public поля - field1: "+this.field1);

System.out.println("Значение защищенного protected поля - field2: "+this.field2);

System.out.println("Значение поля без модификатора - field3: "+this.field3);

System.out.println("Значение инкапсулированного закрытого private поля - field4: "+getField4());

} 20 } В приведенном примере демонстрируются два основных принципа объектно-ориентированного программирования: инкапсуляция и наследование. Создается класс Encapsulate (01-12), в котором объявляются и инициализируются поля filed1, filed2, filed3 и filed4. Каждое поле имеет различный уровень доступа, поскольку при описании использованы модификаторы доступа к элементам класса: public, protected, private. Затем описывается новый класс Class2, который наследуется от класса Encapsulate с помощью зарезервированного слова extends. В данном классе описывается новый метод, расширяющий суперкласс, в котором выводятся значения полей, описанных в суперклассе. Вы видите, что в классе Class2 нет описания этих полей, они наследуются из суперкласса Encapsulate, так же как и метод getField4(). Поскольку метод main() находится в классе Encapsulate, то для проверки работы метода method1() нужно создать экземпляр класса Class2 и вызвать этот метод, что и происходит в строке 10.

Интересно отметить особенность инкапсуляции, когда поле filed4, объявленное с ключевым словом private, не доступно в классах потомках, хотя и наследуется. Для проверки этого факта измените строку 18, заменив вызов getField4() на прямой запрос значения поля this.filed4. В данном случае Eclipse сообщит об ошибке, а именно, что поле Encapsulate.field4 не доступно. Принцип инкапсуляции применяется для сокрытия переменных или методов класса от внешних клиентов (классов, методов).

П р о г р а м м а 2. Полиморфизм.

public class Polymorph { void method1(){ System.out.println("Это был вызван метод суперкласса С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse Polymorph");

} public static void main(String[] args) { new NewClass1().method1();

new NewClass2().method1();

08 } 09 } class NewClass1 extends Polymorph { void method1(){ System.out.println("Это был вызван метод класса потомка NewClass1");

} 15 } class NewClass2 extends Polymorph { void method1(){ System.out.println("Это был вызван метод класса потомка NewClass2");

19 } 20 } В приложении демонстрируется простейший пример полиморфизма. Имеется три класса Polymorph, NewClass1, NewClass2, причем Polymorph является суперклассом по отношению к NewClass1, NewClass2. В классе Polymorph описан метод method1() (02), который выводит сообщение в консоль. Классы NewClass1, NewClass2 наследуют этот метод и переопределяют его (override), осуществляя тем самым перегрузку метода. Далее в методе main() суперкласса создается два объекта экземпляра классов.

В результате оба класса наследуют один и тот же метод, но выполняется он у каждого из них по-разному или в разной форме. Таким образом, вызывая один и тот же метод, с помощью разных объектов можно получить разные по форме результаты, тогда более понятным становится смысл термина «полиморфизм».

Задания к работе 1. Создайте приложение, в котором имеются три класса:

fclass1, fclass2, fclass3. В классе fclass1 содержится метод main(). Класс fclass3 наследуется от fclass1, а fclass2 — от fclass3.

2. Создайте приложение, в котором имеются два класса:

fclass1, fclass2. В классе fclass1 содержится метод main().

Создайте методы в fclass2 для доступа к закрытым переменным класса fclass1.

С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse Лабораторная работа №Тема работы. Работа с графическим интерфейсом пользователя.

Обработка событий.

Цель работы. Знакомство с элементами разработки графического интерфейса пользователя. Создание приложения из нескольких файлов.

Pages:     | 1 |   ...   | 3 | 4 || 6 | 7 |










© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.