Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Практическое занятие № 3

Читайте также:
  1. Анализ бизнес среды: практическое использование моделей STEP/PEST, SLEPT
  2. ВЫШИВАНИЕ – ДОМАШНЕЕ ЗАНЯТИЕ, РЕМЕСЛО И ПРОМЫСЕЛ
  3. Глава 6. Первое занятие
  4. Гоулд С.Э., Рубин Р. Бизнес в стиле дзен: Практическое руководство для дзен - предпринимателя / Пер. – 2 – е изд. М.: Добрая книга, 2006. – 207 с. 3000 экз.
  5. Занятие 1
  6. Занятие 1. Манера речи Синдарин.
  7. Занятие 10-е. Тема: "Умение хоронить свои потери".
  8. Занятие 10. Одноатомные спирты. Тест по теме «Одноатомные спирты». Задачи и упражнения на одноатомные спирты.
  9. ЗАНЯТИЕ 11
  10. Занятие 12-е. Тема: "Я имею право".

 

Тема: «Программирование линейных алгоритмов с различными типами данных».

Целью лабораторной работы является освоение навыков:

· объявления в программе констант и переменных различных типов: целого, вещественного, логического, символьного и строкового;

· изменения характеристик именованных констант и переменных следующих типов: логических, символьных, строковых;

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

· применения операндов, операций и результатов операций логических отношений, над символами и строками и приоритетов операций.

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

 

Текст Java – программы

 

public class lab3

{

public static void main(String[] args)

{

final int h1=23, h2=17;

System.out.println(" 1.Работа с целыми числами");

int i=h1%3;

System.out.println("Дано: h1="+h1+" h2="+h2);

System.out.println("Остаток от деления h1 на 3="+i);

int i2=h1+h2;

System.out.println("h1+h2="+i2);

int i3=h1*h2;

System.out.println("h1/h2="+i3);

System.out.println(" 2.Работа с логикой");

boolean b=false,a=false;

System.out.println(" A B A|B A&B A^B");

boolean p=a|b, p1=a&b, p2=a^b;

System.out.println (""+a+" "+b+" "+p+" "+p1+" "+p2);

b=false; a=true; p=a|b; p1=a&b; p2=a^b;

System.out.println (""+a+" "+b+" "+p+" "+p1+" "+p2);

b=true; a=false; p=a|b; p1=a&b; p2=a^b;

System.out.println (""+a+" "+b+" "+p+" "+p1+" "+p2);

b=true; a=true; p=a|b; p1=a&b; p2=a^b;

System.out.println (""+a+" "+b+" "+p+" "+p1+" "+p2);

System.out.println(" 3.Работа со строками:");

String m1="РГТЭУ", m2="11", m3="группа", m4=" ";

System.out.println("Дано: m1="+m1+" m2="+m2+" m3="+m3+" m4=' '");

String m5=m1+m4+m2+m4+m3;

System.out.println("m5="+m1+"+"+m2+"+"+m3+"="+m5);

}

}

 

Пример: Этот класс не является самостоятельной программой, но определяет метод расчета факториала числа, который можно использовать в других программах.

 

public class Factorial {

/** Вычисление и возвращение x!, факториала числа x */

public static int factorial(int x) {

if (x < 0) throw new IllegalArgumentException("x должен быть >= 0");

int fact = 1;

for(int i = 2; i <= x; i++) // Цикл

fact *= i; // краткая запись факториала: fact = fact * i;

return fact;

}

}

 

Пример: Демонстрирует рекурсивный алгоритм, когда метод вызывает сам себя, вычисления факториала, основанный на том, что n!=n*(n-1)!.

 

public class Factorial2 {

public static long factorial(long x) {

if (x < 0) throw new IllegalArgumentException("x должен быть >= 0");

if (x <= 1) return 1; // Завершение рекурсии

else return x * factorial(x-1); // Шаг рекурсии

}

}

 

Пример: Демонстрирует вычисление факториала с промежуточным кэшированием результатов. В примере используются статические поля – это род переменных, сохраняющих свои значения между вызовами метода factorial(), создаются массивы и генерируются исключения.

 

public class Factorial3 {

// Создание массива для хранения факториалов от 0! до 20!.

static long[] table = new long[21];

// "Статический инициализатор": инициализируем 1-й элемент массива

static { table[0] = 1; } // факториал 0 = 1.

// Запомнить номер последнего вычисленного факториала

static int last = 0;

 

public static long factorial(int x) throws IllegalArgumentException {

// Проверка x. Генерация исключения.

if (x >= table.length) // ".length" возвращает длину любого массива

throw new IllegalArgumentException("Переполнение: x большой.");

if (x<0) throw new IllegalArgumentException("x должен быть >=0.");

 

// Вычисление и кэширование значений.

while(last < x) {

table[last + 1] = table[last] * (last + 1);

last++;

}

// Возвращение кэшированного факториала x.

return table[x];

}

}

 

Пример: Для вычисления факториалов больших чисел используются встроенные классы java.

 

import java.math.BigInteger; // Импорт класса BigInteger из пакета java.math import java.util.*; // Импорт всех классов пакета java.util

public class Factorial4 {

protected static ArrayList table = new ArrayList(); // Создание кэш

static { // Инициализация первого элемента кэш!0 = 1.

table.add(BigInteger.valueOf(1));

}

 

/** Метод factorial(), использующий объекты BigIntegers сохраняемые в ArrayList */

public static synchronized BigInteger factorial(int x) {

if (x<0) throw new IllegalArgumentException("x должен быть >=0.");

for(int size = table.size(); size <= x; size++) {

BigInteger lastfact = (BigInteger)table.get(size-1);

BigInteger nextfact = lastfact.multiply(BigInteger.valueOf(size));

table.add(nextfact);

}

return (BigInteger) table.get(x);

}

 

/**

* Метод main(), организующий вычисление факториала factorial().

**/

public static void main(String[] args) {

for(int i = 0; i <= 50; i++)

System.out.println(i + "! = " + factorial(i));

}

}

 

Пример: Позволяет вычислять и отображать факториал числа, заданного в командной строке, обрабатывать исключения при помощи оператора try/catch.

 

public class FactComputer {

public static void main(String[] args) {

// Пробовать вычислить factorial.

// Если не удается, то возбуждается исключение.

try {

int x = Integer.parseInt(args[0]);

System.out.println(x + "! = " + Factorial4.factorial(x));

}

// Пользователь не задал аргумент.

// Если args[0] не определено, то возбуждается исключение.

catch (ArrayIndexOutOfBoundsException e) {

System.out.println("Необходимо задать аргумент");

System.out.println("формат: java FactComputer <число>");

}

// Аргумент не является числом. Выдается методом Integer.parseInt().

catch (NumberFormatException e) {

System.out.println("Аргумент должен быть целым числом");

}

// Аргумент < 0. Выдается методом Factorial4.factorial()

catch (IllegalArgumentException e) {

// Отображение сообщения, выданного методом factorial():

System.out.println("Плохой аргумент: " + e.getMessage());

}

}

}

 

Пример: Реализует интерактивный ввод чисел и получение результата до тех пор, пока пользователь не завершит программу. Для этого используются метод readLine() объекта BufferedReader.

 

import java.io.*; // Импорт всех классов пакета java.io.

 

/**

* Расчет факториала чисел в интерактивном режиме

**/

public class FactQuoter {

public static void main(String[] args) throws IOException {

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

BufferedReader in=new BufferedReader(new InputStreamReader(System.in));

// бесконечный цикл

for(;;) {

// Отображение подсказки на экране

System.out.print("FactQuoter> ");

// считывание введенной строки пользователем

String line = in.readLine();

// Если считана последняя строка

// или пользователь завершил программу "quit"

if ((line == null) || line.equals("quit")) break;

// Попытка проанализировать строку, вычислить и вывести результат

try {

int x = Integer.parseInt(line);

System.out.println(x + "! = " + Factorial4.factorial(x));

}

// Если что-то не так, печатаем сообщение об ошибке

catch(Exception e) { System.out.println("Неверный ввод"); }

}

}

}

 

Контрольные вопросы:

1. Какие типы данных использовались в программе?

2. Какие типы переменных использовались в программе: формальные или фактические?

3. Чему равна максимальная длина строковой константы?

4. Какое количество битов резервируется под логическую переменную?

5. Каким количеством байтов кодируется символ таблицы ASCII?

6. Перечислите типы данных, применяемых в Java.

7. Как происходит объявление переменных в Java-программе?

8. Какие алгоритмы называются рекурсивными?

9. Роль объекта BufferedReader в программе?

10. Конструкция для создания исключений в программе?

 




Дата добавления: 2015-09-11; просмотров: 28 | Поможем написать вашу работу | Нарушение авторских прав

ВВЕДЕНИЕ | Глава 1.1. Особенности разработки программы на языке Java | Практическое занятие № 1 | Практическое занятие № 5 | Практическое занятие № 6 | Практическое занятие № 7 | Пример 2.1. | Пример 2.2. | Глава 2.2. Графические интерфейсы пользователя в Java | Компоненты. |


lektsii.net - Лекции.Нет - 2014-2024 год. (0.015 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав