ЛР / laba_java(4)
.docxФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
Факультет информационных систем и технологий
Кафедра безопасности информационных систем
ОТЧЕТ
по практике №4
по дисциплине «Кросс-платформенное программирование»,
по теме: «Разработка и отладка программ обработки исключений».
|
Выполнили студенты группы ИСТ-223: Хакова Ю. М. Коваленко А. А.
|
|
|
|
|
|
Принял: Бородянский Ю. М. |
|
|
(подпись) |
|
|
|
|
|
|
|
Цель работы :
Получение практических навыков разработки и отладки Java-программ, обнаруживающих ошибки, которые возникают в процессе выполнения программы.
Задание 1. Вычисляется значение функции y = 285 / x. Значение x вводится с клавиатуры. Обработать исключение «Деление на ноль». (Рис. 1)
Задание 2. В методе enterArray заполняется символьный массив, что может привести к исключению (выходу за границы массива), которое обрабатывается в методе main( ). (Рис. 2)
Задание 3. Задать в программе две буквы английского алфавита – строчную и заглавную. Сдвинуть двоичный код заглавной буквы на два разряда влево, а двоичный код строчной буквы – на один разряд вправо. Спроектировать собственное исключение, как только преобразованный код любого из символов в десятичном исчислении окажется меньше 32 и больше 175. Вывести на экран полученные символы. Объяснить результат. (Рис. 3)
Ход работы:
Задание 1:
Рис. 1. Отображение меню в консоли. Нахождение значения функции y = 285 / x, обработка исключения «Деление на ноль».
Задание 2:
Рис. 2. Обработка символьного массива.
Задание 3:
Рис. 3. Побитовый сдвиг.
Вывод:
Практическое применение данного кода может реализовываться в таких сферах как:
Шифрование и безопасность: Пример сдвига символов может быть использован для создания простых алгоритмов шифрования, тестирования или демонстрации концепций криптографии.
Научные и инженерные расчеты: В научных и инженерных приложениях часто возникают ситуации, когда необходимо выполнить деление в процессе математических или физических расчетов.
Приложение 1.
Листинг кода:
import java.io.*; class CharLimit { public void CheckLimit(int bigShift, int smallShift) throws Exception { if ((bigShift < 32 || bigShift > 175) && (smallShift < 32 || smallShift > 175)) { throw new Exception("Код выходит за допустимые границы."); } } } public class lab4 { public static void main(String[] args) { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); PrintWriter writer = new PrintWriter(System.out); do { writer.println("Выберите действие:"); writer.println("1. Задание 1"); writer.println("2. Задание 2"); writer.println("3. Задание 3"); writer.println("0. Выйти из программы"); writer.flush(); String choicee = null; try { choicee = reader.readLine(); } catch (Exception e) { System.out.println("Ошибка с вводом"); } int choice = Integer.parseInt(choicee); switch (choice) { case 1: DivisionCalculator(); break; case 2: enterArray(); break; case 3: CharacterShift(); break; case 0: writer.println("Программа завершена"); writer.flush(); System.exit(0); default: writer.println("Неверный выбор"); writer.flush(); } } while (true); } public static void DivisionCalculator() { PrintWriter writer = new PrintWriter(System.out); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); writer.println("Введите значение х: "); writer.flush(); String valueX = null; try { valueX = reader.readLine(); } catch (Exception e) { writer.println("Ошибка с вводом"); writer.flush(); } int x = Integer.parseInt(valueX); try { int y = 285 / x; writer.println("Значение функции y = " + y); writer.flush(); } catch (ArithmeticException zero) { writer.println("Деление на ноль!"); writer.flush(); } } public static int[] enterArray() { PrintWriter writer = new PrintWriter(System.out); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); writer.println("Введите размер массива: "); writer.flush(); String sizeN = null; try { sizeN = reader.readLine(); } catch (Exception e) { writer.println("Ошибка с вводом"); writer.flush(); } int ArrSize = Integer.parseInt(sizeN); int[] Array = new int[ArrSize]; writer.println("Введите элементы массива: "); writer.flush(); for (int i = 0; i < ArrSize; i++) { try { Array[i] = Integer.parseInt(reader.readLine()); } catch (Exception e) { writer.println("Ошибка с вводом"); writer.flush(); } } int index = 5; if (index >= 0 && index < Array.length) { try { writer.println("Элемент массива: " + Array[index]); writer.flush(); } catch (ArrayIndexOutOfBoundsException e) { writer.println("Индекс за пределами границ массива"); writer.flush(); } } return Array; } public static void CharacterShift() { char bigChar = 'Z'; char smallChar = 'g'; int bigShift = (bigChar << 2); int smallShift = (smallChar >> 1); CharLimit limitControl = new CharLimit(); try { limitControl.CheckLimit(bigShift, smallShift); System.out.println("Преобразованные символы: " + (char) bigShift + ", " + (char) smallShift); } catch (Exception e) { System.out.println("Ошибка: " + e.getMessage()); } } }
Санкт-Петербург, 2024
