Скачиваний:
0
Добавлен:
07.06.2026
Размер:
371.9 Кб
Скачать

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»

Факультет информационных систем и технологий

Кафедра безопасности информационных систем

ОТЧЕТ

по практике №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

Соседние файлы в папке ЛР