Автор работы: Пользователь скрыл имя, 20 Декабря 2011 в 11:21, курсовая работа
Основной целью курсовой является решение выданных заданий и подробное описание решений.
Для реализации цели необходимо выполнить следующие задачи:
Показать умение работать с операторами циклов, строками, матрицами и, как частный случай, массивами. Результат – небольшие программы написанные на Java и Pascal
Создать файл соответствующей предметной области
Реализовать задачу II на Java с графическим интерфейсом и максимальным использованием всех компонентов пакета Swing
Введение 4
Глава 1. Алгоритмизация - работа с массивами на Pascal и Java 5
Массивы в Pascal 5
Решение задач на работу с массивами на алгоритмическом
языке Pascal 6
1.2 Массивы в Java 17
Решение задач на работу с массивами на алгоритмическом
языке Java 19
На Turbo Pascal 28
Глава 3. Разработка графического интерфейса на Java 60
Заключение 67
Литература 68
Приложение А 69
Приложение Б 70
Приложение В 71
Приложение Г 73
Приложение Д 74
Приложение Е 75
Приложение Ж 76
Приложение З 77
Приложение И 78
Приложение К 80
Приложение Л 81
Приложение М 82
Приложение Н 83
Приложение О 87
Приложение П 91
Пояснительная записка 104
Рис. 16. Результат работы программы
Массивы
в языке Java относятся к ссылочным
типам и описываются
Первый этап — объявление (declaration). На этом этапе определяется только переменная типа <ссылка> (reference) на массив, содержащая тип массива. Для этого записывается имя типа элементов массива, квадратными скобками указывается, что объявляется ссылка на массив, а не простая переменная, и перечисляются имена переменных типа ссылка, например,
double[] а, b;
Здесь определены две переменные — ссылки a и b на массивы типа double. Можно поставить квадратные скобки и непосредственно после имени. Это удобно делать среди определений обычных переменных:
int i = 0, ar[], k = -1;
Второй этап — определение (installation). На этом этапе указывается количество элементов массива, называемое его длиной, выделяется место для массива в оперативной памяти, переменная-ссылка получает адрес массива. Все эти действия производятся еще одной операцией языка Java — операцией new <тип>, выделяющей участок в оперативной памяти для объекта указанного в операции типа и возвращающей в качестве результата адрес этого участка. Например:
а = new double[5];
Индексы массивов всегда начинаются с 0. Массив a состоит из пяти переменных а[0], а[1],…,а[4]. Элемента а[5] в массиве нет. Индексы можно задавать любыми целочисленными выражениями, кроме типа long, например, a[i+j], a[i%5], a[++i]. Исполняющая система Java следит за тем, чтобы значения этих выражений не выходили за границы длины массива.
Третий этап — инициализация (initialization). На этом этапе элементы массива получают начальные значения. Например,
а[0] = 0.01; а[1] = -3.4; а[2] = 2.89; а[3] = 4.5; а[4] = -6.7;
for (int i = 0; i < b.length; i++) b[i] = 1.0 /i;
Первые два этапа можно совместить:
double [] a = new double[5] int i = 0, ar[] = new int[50]
Можно совместить второй и третий этап:
а = new double [] {0.1, 0.2, -0.3, 0.45, -0.02};
Можно даже создать безымянный массив, сразу же используя результат операции new, например, так:
System.out.println(new char[] {'H', 'e', '1', '1', 'o'});
Массивы в Java всегда определяются динамически, хотя ссылки на них задаются статически.
Кроме ссылки на массив, для каждого массива автоматически определяется целая константа с одним и тем же именем length. Она равна длине массива. Для каждого массива имя этой константы уточняется именем массива через точку. Так, после наших определений, константа a.length равна 5.
Последний элемент массива а можно записать так: a [a. length - 1], предпоследний — a [a. length - 2] и т. д.
Задание 1
Дана
последовательность чисел Фибоначчи,
определяемая соотношением чисел u[1]=1,
u[2]=1, u[n] = u[n-1]+u[n-2],n>2. Проверить, будет
ли u[5k](k=1,2,...) делиться на 5.
Решение:
Рис. 17. Рисунок кода программы
Алгоритм решения этой задачи аналогичен решению на языке Pascal.
Результат работы исполняемого кода программы можно увидеть на Рис. 7.
Рис. 18. Результат
работы программы
Задание 2
В квадратной матрице найти наибольший и наименьший элементы среди элементов главной и побочной диагоналей.
.
Решение:
Рис. 19. Рисунок
кода программы
Алгоритм решения этой задачи заключается в том, что создается и заполняется случайными числами квадратная матрица размером 5х5, далее осуществляется поиск максимальных и минимальных зачений диагоналей данной матрицы следующим образом:
к переменных максимальных и минимальных значений берутся первые элементы диагоналей, далее в цикле эти значения сравниваются с остальными из соответствующих диаголаней, в итоге получаем максимальные и минимальные значения для главной и побочной диагоналей квадратной матрицы..
Результат работы исполняемого кода программы можно увидеть на Рис. 20
.
Рис. 20. Результат
работы программы
Задание 3
Имеются два массива. Один упорядочен по возрастанию другой по убыванию. Из этих массивов образовать третий, слиянием элементов, упорядоченный по убыванию.
Решение:
Рис. 21. Рисунок
кода программы
Рис. 22. Рисунок
кода программы
Алгоритм заключается в том, что для упрощения задачи были введены методы для заполнения массива(заполняется случайными числами), сортировки по убыванию и сортировки по возрастанию создаются 3 целочисленных массива, при том что размер третьего массива равен сумма первых двух массивы с помощью выше описанных методов заполняются и сортитуются соотвествующим требованиям способами, т.е. первый по возрастанию, второй по убыванию для слияния массивов используются циклы, в которых сначала переписываются значения из первого массива, а потом и из второго, далее происходит сортировка полученного - третьего массива методом "пузырька" по убыванию.
Результат работы исполняемого кода программы можно увидеть на Рис. 23.
Рис. 23. Результат
работы программы
Задание 4
Вычислить произведение двух квадратных матриц. А[1..4].
Решение:
Рис. 24. Рисунок
кода программы
Алгоритм решения этой задачи заключается в том, что для упрощения задачи и сокращения кода, были созданы методы: для заполнения массивов случайными числами,
для вывода
массива на экран и для умножения
двух матриц, т.к. матрицы квадратны
и имеют одинаковую размерность
проверка на компланарность не нужна.
В методе "main" создаются 3 квадратные
матрицы одинакового размера, заполняются
случайными числами с помощью описанных
выше методов и выполняется умножения
матриц, снова с помощью доп. созданого
метода..
Результат
работы исполняемого кода программы
можно увидеть на Рис. 25.
Рис. 25. Результат работы программы
Задание 5
В массиве X[1..N] элементы равны 0, 1, или 2. Переставить все элемнеты массива так. Чтобы сначала располагались нули, потом единицы и, наконец, двойки(дополнительного массива не заводить!).
Решение:
Рис. 26. Рисунок
кода программы
Алгоритм
решения этой задачи аналогичен алгоритму
решения ее на языке программирования
Pascal.
Результат работы исполняемого кода программы можно увидеть на Рис. 27.
Рис. 27. Результат
работы программы
Задание 6
Элементы вещественного массива Х[1..N] вычисляются по формуле X[n]=1/n!, n =1,...,N.
Написать программу вычисления элементов массива: а) с использованием процедуры (метода) вычисления факториала; б) без использования процедуры(метода).
Решение:
Рис. 28. Рисунок
кода программы
Алгоритм решения этой задачи аналогичен алгоритму решения ее на языке программирования Pascal.
Результат работы исполняемого кода программы можно увидеть на Рис. 29.
Рис. 29. Результат
работы программы
Глава 2. Работа с файлами записей на Pascal и Java
Введение файлового типа в язык Turbo Pascal вызвано необходимостью обеспечить возможность работы с периферийными (внешними) устройствами ЭВМ, предназначенными для ввода, вывода и хранения данных.
Файловый тип данных или файл определяет упорядоченную совокупность произвольного числа однотипных компонент.
Понятие файла достаточно широко. Это может быть обычный файл на диске, коммуникационный порт ЭВМ, устройство печати, клавиатура или другие устройства.
При работе с файлами
Файлы на внешних устройствах часто называют физическими файлами. Их имена определяются операционной системой. В программах на языке Паскаль имена файлов задаются с помощью строк. Например, имя файла на диске может иметь вид:
'A:LAB1.DAT'
'c:\ABC150\pr.pas'
'lab3.pas'.
С файловой системой Turbo Pascal связано понятие буфера ввода - вывода. Ввод и вывод данных осуществляется через буфер. Буфер – это область в памяти, которая выделяется для каждого файла. При записи в файл вся информация сначала направляется в буфер и там накапливается до тех пор, пока весь объем буфера не будет заполнен. Только после этого или после специальной команды сброса происходит передача данных
на внешнее устройство. При чтении из файла данные вначале считываются в буфер, причем данных считывается не столько, сколько запрашивается, а сколько поместится в буфер.
Механизм буферизации позволяет более быстро и эффективно обмениваться информацией с внешними устройствами.
Для работы с файлами в программе необходимо определить файловую переменную. Turbo Pascal поддерживает три файловых типа: текстовые файлы, компонентные файлы, бестиповые файлы.
Описание файловых переменных текстового типа производится с помощью служебного слова Text, например:
var tStory: Text;
Описание компонентных файлов имеет вид:
var fComp: File of T; где T - тип компоненты файла.
Примеры описания файловой переменной компонентного типа: