Программирование на языке Java и Pascal
Федеральное агентство по образованию
Государственное образовательное учреждение высшего профессионального
образования
«ПОЛИТЕХНИЧЕСКИЙ
УНИВЕРСИТЕТ»
Факультет -
Специальность -
Кафедра -
Курсовая работа по информатике
и программированию
Руководитель
доцент, канд. техн.
наук
Федеральное агентство по образованию
Государственное образовательное учреждение высшего профессионального образования
«ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Кафедра ОСУ
ЗАДАНИЕ
на выполнение курсовой работы
1. Тема задания:
Программирование на языке Java и Pascal.
2. Основная
задача работы: закрепить теоретические
знания и практические навыки
программирования на языке Java и Pascal
3. Содержание
пояснительной записки (
3.1 Алгоритмизация 6-ти задач и программирование на языке Java и Pascal.
3.2. Обработка записей в файле на языке Java и Pascal.
3.3 Графический
интерфейс на Java
4. Дата выдачи
задания 15.02.10
5. Срок сдачи
студентом законченной работы 1.06.10
Руководитель:
Задание
принял к исполнению:
Содержание
Введение
Языки программирования, программное обеспечение и практика не стоят на месте слишком долго. Часто оказывается, что методы и технические приемы, которые мы применяли вчера, сегодня уже устарели. Конечно, большая скорость изменений – это также одно из обстоятельств, которые делают программирование весьма привлекательным занятием. Всегда есть что-то новое на горизонте. Никакой язык не иллюстрирует предшествующие утверждения лучше, чем Java.
В последние несколько лет Java вырос из концепции в один из всемирно-доминирующих языков программирования. В узком смысле слова, Java – это объектно-ориентированный язык, напоминающий C++, но более простой для освоения и использования. В более широком смысле Java – это целая технология программирования, изначально рассчитанная на интеграцию с Web-сервисом, то есть на использование в сетевой среде.
Данная
курсовая работа выполнена в объектно-
В курсовой работе рассмотрены следующие вопросы:
- теоретические положения, касающиеся конкретного раздела;
- описание алгоритмов задач;
- тексты программ с подробными комментариями.
- скриншоты результатов выполнения программ.
- выводы по каждому разделу;
- CD с решенными задачами.
Основной целью курсовой является решение выданных заданий и подробное описание решений.
Для реализации цели необходимо выполнить следующие задачи:
- Показать умение работать с операторами циклов, строками, матрицами и, как частный случай, массивами. Результат – небольшие программы написанные на Java и Pascal
- Создать файл соответствующей предметной области
- Реализовать задачу II на Java с графическим интерфейсом и максимальным использованием всех компонентов пакета Swing
Глава 1. Алгоритмизация - работа с массивами на Pascal и Java
- Массивы в Pascal
Массивы в Turbo Pascal во многом схожи с аналогичными типами данных в других языках программирования. Отличительная особенность массивов заключается в том, что все их компоненты суть данные одного типа (возможно, структурированного).
Описание типа массива задается следующим образом:
<имя типа> = ARRAY [ <список индексных типов> ] OF <тип> ;
Здесь <имя типа> - идентификатор;
ARRAY, OF - зарезервированные слова (массив, из);
< список индексных типов > - список из одного или нескольких индексных типов, разделенных запятыми; квадратные скобки, обрамляющие список, - требование синтаксиса;
<тип>
- любой тип Turbo Pascal.
Обычно
в качестве индексного типа используется
тип-диапазон, в котором задаются
границы изменения индексов. Так как тип <тип>,
идущий за словом OF, - любой тип Turbo Pascal,
то он может быть, в частности, и другим
массивом, например:
type
mat = array [0..5] of array [-2..2] of array [Char] of Byte;
Такую запись можно заменить более компактной:
type
mat = array [0..5,-2..2,Char] of Byte.
В Turbo Pascal можно одним оператором присваивания передать все элементы одного массива другому массиву того же типа, например:
var а,b:array [1..5] of Integer;
begin
a := b;
end.
После этого присваивания все пять элементов массива А получат те же значения, что и в массиве В. Однако над массивами не определены операции отношения. Нельзя, например, записать
if a = b then ...
Сравнить
два массива можно поэлементно.
Решение
задач на работу с
массивами на алгоритмическом
языке Pascal
Задание 1.
Дана последовательность чисел Фибоначчи, определяемая соотношением чисел u[1]=1, u[2]=1, u[n] = u[n-1]+u[n-2],n>2. Проверить, будет ли u[5k](k=1,2,...) делиться на 5.
Решение:
Рис. 1
Рисунок кода программы
Алгоритм программы заключается в том, что пока переменная fn_2 меньше или равна разности максимального числа в типе инт и переменной fn_1, то тогда переменной fn присваивается сумма переменных fn_2 и fn_1. Если n будет кратна числу 5 и если fn будет кратна числу 5, то ответ будет положительным. В противном случае – отрицательным.
Результат работы исполняемого кода программы можно увидеть на Рис. 2
.
Рис. 2. Результат работы программы
Задание 2
В квадратной матрице найти наибольший и наименьший элементы среди элементов главной и побочной диагоналей.
Решение:
Рис. 3 Рисунок кода
программы
Рис. 4.
Рисунок кода программы
Алгоритм
программы аналогичен алгоритму программы
на Java.
Результат работы исполняемого кода программы можно увидеть на Рис. 5.
Рис. 5. Результат
работы программы
Задание 3
Имеются
два массива. Один упорядочен по возрастанию
другой по убыванию. Из этих массивов образовать
третий, слиянием элементов, упорядоченный
по убыванию.
Решение:
Рис. 6. Рисунок кода программы
Рис. 7. Рисунок кода
программы
Алгоритм программы заключается в том, что мы заполняем два одномерных массива. Один мы сортируем по возрастанию, другой по убыванию. Сливаем эти два массива в один одномерный массив, размерность которого должна быть соответственно больше в два раза размерности этих массивов. После того, как мы организовали третий массив, вы сортируем его по убыванию.
Результат работы
исполняемого кода программы можно
увидеть на Рис. 8.
Рис. 8. Результат
работы программы
Задание 4
Вычислить произведение двух квадратных матриц. А[1..4].
Решение:
Рис. 9. Рисунок кода
программы
Рис. 10. Рисунок
кода программы
Алгоритм этой программы состоит в том, что мы заполняем два двумерных одинаковых по размерности массива случайным образом. С помощью трех циклов умножаем первую матрицу на вторую матрицу и присваиваем произведение переменной S. Затем нашей третьей матрице присваиваем переменную S, тем самым образуем новую матрицу, которая является произведением двух наших квадратных матриц.
Результат работы
исполняемого кода программы можно
увидеть на Рис. 11.
Рис. 11. Результат
работы программы
Задание 5
В массиве X[1..N] элементы равны 0, 1, или 2. Переставить все элемнеты массива так. Чтобы сначала располагались нули, потом единицы и, наконец, двойки(дополнительного массива не заводить!).
Решение:
Рис. 12. Рисунок
кода программы
Алгоритм
решения состоит в том, что сначала
мы заполняем одномерный массив числами
от 0 до 3, затем сортируем его по возрастанию.
Результат
работы исполняемого кода программы
можно увидеть на Рис. 13.
Рис. 13. Результат
работы программы
Задание 6
Элементы вещественного массива Х[1..N] вычисляются по формуле X[n]=1/n!, n =1,...,N.
Написать программу вычисления элементов массива: а) с использованием процедуры (метода) вычисления факториала; б) без использования процедуры(метода).
Решение:
Рис. 14. Рисунок
кода программы
С помощью подпрограммы:
Рис. 15. Рисунок
кода программы
Алгоритм решения этой программы состоит в том, что создаем массив от 1 до 10 и перебираем его от 1 до 10, заполняя каждый элемент массива переменной s, которая равняется произведению себя на переменную j, изменяющуюся столько же раз, сколько и переменная i. Выводим на экран номер элемента и результат деления 1 на s.
Результат работы
исполняемого кода программы можно
увидеть на Рис. 16.
Рис. 16. Результат работы программы
1.2 Массивы в Java
Массивы
в языке 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] и т. д.
Решение задач на
работу с массивами
на алгоритмическом
языке Java
Задание 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
Введение файлового типа в язык 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 - тип компоненты файла.
Примеры описания файловой переменной компонентного типа: