WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!


Pages:     || 2 | 3 |
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПРАКТИКУМ НА ЭВМ Задания для студентов 2 курса факультета ПММ Воронеж 2004 УДК 681.3.06 ББК 32.973.26 Практикум на ЭВМ. Задания для студентов 2 курса факультета ПММ / Ускова О.Ф., Огаркова Н.В., Воронина И.Е., Бакланов М.В., Мельников В.М. – Воронеж, Воронежский государственный университет, 2004 - 27 с.

Печатается по рекомендации научно-методического совета факультета ПММ Рецензент – кандидат физико-математических наук, доцент Л.С.

Миловская 2 СОДЕРЖАНИЕ Задания на тему «Модульное программирование»......................................... 4 Задания на тему «Объектно-ориентированное программирование»......... 6 Задания на тему «Рекурсивные алгоритмы».................................................... 9 Задания на тему «Алгоритмы с возвратом»....................................................13 Задания на тему «Внутренние сортировки»....................................................16 Задания на тему «Внешние сортировки».........................................................19 Задания на тему «Хеширование».......................................................................23 Задания на тему «Сильно ветвящиеся деревья»............................................24 Список литературы................................................................................................26 3 Задания на тему «Модульное программирование» 1. Составить модуль, реализующий следующие операции над векторами:

• ввод компонент вектора с клавиатуры и из файла;

• вывод компонент вектора на дисплей и в файл;

• вычисление нормы вектора в различных метриках;

• определение минимальной (максимальной) координаты вектора и ее порядкового номера;

• вычисление скалярного произведения двух векторов;

• проверка на возрастание или убывание последовательности координат.

2. Даны два вектора Х и Y размерности n = 30. Используя составленный в задании 1 модуль, вычислить xn yii - xi yi а) ;

xn ( xii )2 )(( n yi2 -- ( yi )2 ) xn yii - xi yi б), xk ( xii )2)(( p yi2 -- ( yi) где k — порядковый номер максимальной координаты вектора Х, p — порядковый номер минимальной компоненты вектора Y.

3. Даны три вектора X, Y, Z, каждый размерности n = 30. Используя составленные в задании 1 модули, вычислить а) minX * (A, A) + maxY * (B, C), где А — тот из данных трех векторов, минимальный элемент которого имеет самый большой номер (считать, что такой вектор единственный), В и С — два других вектора; minX — минимальный элемент вектора X, maxY — максимальный элемент вектора Y;

б) k * (A, A) + p * (B, C), где А — тот из данных трех векторов, координаты которого упорядочены по возрастанию (считать, что такой вектор единственный), В и С — два других вектора; k — номер минимального элемента вектора Z, p — номер максимального элемента вектора Y.

4. Создать модуль для операций с комплексными числами и вычислить значение квадратного трехчлена с комплексными коэффициентами ax2 + bx + c в комплексной точке х.

5. Создать модуль для операций с комплексными числами и вычислить с заданной точностью е значение комплексной функции zz zn ez 1+= + +... +.

1! 2! n! 6. Реализовать модуль для работы с множеством, число элементов в котором больше, чем 256. Примените представление «большого» множества в виде массива множеств. Модуль должен содержать процедуры инициализации множества, включения, исключения элементов и проверки принадлежности элемента множеству.

7. Используя модуль для работы с множеством, описанный в предыдущей задаче, составить программу нахождения целых чисел из диапазона 1..10000, удовлетворяющих представлению n2 + m2, где n и m — целые числа.

8. Реализовать модуль для работы со стеком. Напечатать в обратном порядке символы слова наибольшей длины из заданного текстового файла.

9. Реализовать модуль для работы с очередью. Напечатать наибольшее по длине предложение из заданного текстового файла.

10. Создать модуль, реализующий следующие операции над символьными строками:

• поиск первого вхождения в строку заданного символа;

• поиск последнего вхождения в строку заданного символа;

• поиск последнего вхождения в строку заданной подстроки;

• поиск в строке первого символа, отличного от пробела;

• поиск в строке последнего символа, отличного от пробела.

Написать программу, иллюстрирующую работу полученного модуля.

11. Создать модуль, содержащий описание типа «Дата» и операций над ним:

• проверка корректности совокупности полей (день, месяц, год);

• увеличение даты на заданное число дней;

• уменьшение даты на заданное число дней;

• преобразование типа «строка» «дата»;

• преобразование типа «дата» «строка».

Написать программу, иллюстрирующую работу полученного модуля.

12. Создать модуль, реализующий представление длинного целого числа в виде строки символов, а также операции *, /, –, +. Написать программу, иллюстрирующую работу полученного модуля.

13. Создать модуль, реализующий представление полиномов в виде списка, а также операции *, /, –, +. Написать программу, иллюстрирующую работу полученного модуля.

14. Создать модуль, реализующий построение четырехвидов диаграмм:

• столбчатая;

• круговая;

• 3D столбчатая;

• график.

Написать программу, иллюстрирующую работу полученного модуля.

15. Создать модуль для работы с файлом сотрудников, где каждая запись содержит поля «фамилия», «имя», «отчество», «должность», «оклад» и признак удаленности записи. Реализовать следующие операции с файлом:



• добавление;

• удаление;

• поиск по фамилии, имени, отчеству должности и окладу;

• расчет суммарного и среднего оклада всех сотрудников.

Задания на тему «Объектно-ориентированное программирование» 1. Выбор нужной точки экрана обычно выполняется подводом курсора к этой точке и нажатием клавиши . Иногда бывает полезно видеть и предыдущую выбранную точку — последнюю точку, зафиксированную клавишей , и новую точку, на которую указывает курсор. Для этого используются метод «резиновой» нити и метод «резинового» прямоугольника.

а) В методе «резиновой» нити один конец отрезка зафиксирован и указывает последнюю выбранную точку, второй конец перемещается в соответствии с изменением указываемой точки.

б) В методе «резинового» прямоугольника один угол прямоугольника зафиксирован и указывает последнюю выбранную точку, а противолежащий угол перемещается в соответствии с изменением указываемой точки.

2. Построить окружность по двум заданным точкам: центру и одной из точек окружности. Обе точки указываются с клавиатуры по методу «резинового» прямоугольника. Составить программу для управления размерами окружности и ее положением на экране Управление выполняется клавишами:

• < + > увеличивает радиус окружности;

• < – > уменьшает радиус окружности;

• клавиши управления курсором вызывают перемещение окружности в соответствующем направлении;

завершает работу программы.

3. Получить на экране какую-либо фигуру и «оживить» ее: пусть цыпленок летает и ходит, рыба плывет, подводная лодка поднимает и опускает перископ, сова машет крыльями, стрелки будильника и колесо вращаются, велосипед катится, телефонный диск крутится и так далее.

4. В рисованных мультфильмах иллюзия движения создается последовательной сменой кадров, каждый из которых фиксирует очередное положение движущегося объекта. Используя этот принцип, получить мультфильм, показывающий:

а) бегущего человечка;

б) идущего человечка;

в) человечка, выполняющего приседания;

г) человечка, выполняющего сигнализацию флажком.

Для построения отдельных кадров мультфильма воспользоваться фигурками, описанными в рассказе Конан Дойля «Пляшущие человечки».

5. Аналогично предыдущей задаче создать спортивный мультфильм:

а) о метании диска;

б) о беге с барьерами;

в) о подтягивании на перекладине;

г) о прыжках в длину;

д) о гребле;

е) о поднятии штанги.

Построение отдельных кадров выполнить на основе олимпийской символики.

6. Смоделировать компоненты Delphi. Каждый компонент должен являться объектом и быть размещен в отдельном модуле. Написать программу, которая демонстрирует работу этого компонента. Вместо событий использовать свойства и методы. Моделируемые компоненты:

• Edit, MaskEdit;

• RadioButton, RadioGroup;

• ListBox;

• ComboBox;

• StringGrid;

• OpenDialog;

• SaveDialog;

• ColorDialog (ColorGrid);

• FindDialog (FindNext);

• Calendar;

• SpinButton, SpinEdit.

7. «Жизнь». Игра моделирует жизнь поколений гипотетической колонии живых клеток, которые выживают, размножаются или погибают в соответствии со следующими правилами. Клетка выживает тогда и только тогда, когда она имеет двух или трех соседей из восьми возможных. Если у клетки только один сосед или ни одного, она погибает в изоляции. Если клетка имеет четырех или более соседей, она погибает от перенаселения. В любой пустой позиции, у которой ровно три соседа, в следующем поколении появляется новая клетка.

8. Составить программу для обучения работе с клавиатурой. Программа должна выдавать на экран буквы, цифры, слова и фразы, которые следует набрать на клавиатуре.

9. Составить программу для тренировки памяти. Программа должна высветить на экране несколько точек, играющий — указать, в каком порядке эти точки были высвечены. Координаты точек выбираются в программе с помощью датчика случайных чисел.

10. «Сбей самолет». По экрану летят вражеские самолеты. Цель — сбить их.

Пусковая установка находится в нижней строке экрана. Пусковую установку можно перемещать по строке вперед и назад.

11. Написать программу, реализующую простейший вариант игры «Тетрис».

12. Библиотека графических примитивов содержит точку, круг, прямоугольник, линию, треугольник, ломаную, дугу. Реализовать возможность создания с помощью этих графических примитивов картинки.

Предусмотреть выбор цвета фона и элементов картинки, а также возможность размещения картинки в кадре. Для этого создать специальный объект «рамка», который может охватывать и сохранять сцену.

13. «Морской бой». Есть пушка. Пользователь может управлять направлением ствола пушки, может стрелять. Если пушка выстрелила, то летит снаряд. В это время где-то по экрану плывет кораблик, в который играющий должен попасть. Если снаряд попадает в кораблик, то он взрывается и кораблик исчезает (и так, например, 10 раз). Если пользователь успешно использовал все выстрелы, то ему в качестве приза предлагается еще три выстрела.

x2 y2 z14. Реализовать построение двуполостного гиперболоида -+ = -1, a2 b2 cc — действительная полуось, a и b — мнимые полуоси. Пусть a = b, тогда гиперболоид может быть получен вращением гиперболы с полуосями а и с вокруг оси 2 · с. Иерархия объектов: точка гипербола гиперболоид.





x2 y15. Реализовать построение эллиптического параболоида z +=. Пусть a2 ba = b, тогда имеем параболоид вращения, получаемый при вращении параболы z = x 2 / a 2, лежащей в плоскости x, z вокруг ее оси. Иерархия объектов: точка парабола параболоид.

16. Описать семейство объектов, описывающих файлы различных типов и действия над ними. Упрощенно первичный объект можно представить как совокупность данных:

• длина файла;

• текущая позиция указателя в файле;

• дата создания файла;

и совокупность методов работы с файлами:

• прочитать байт из файла;

• записать байт в файл;

• установить дату создания файла.

а) Написать программу, с помощью которой осуществляется форматированный ввод чисел.

б) Написать программу, с помощью которой осуществляется форматированный ввод булевских значений.

в) Написать программу, с помощью которой осуществляется форматированный ввод строк.

17. Написать программу, реализующую некоторые функции работы с электронной таблицей, например, суммирование значений по строкам, столбцам, использование простейших формул и т. д.

18. Реализовать построение динамического списка, информационное поле которого содержит ссылки на объекты разных уровней иерархии. Описать необходимые подпрограммы для работы с таким списком.

19. Описать объект ЭЛЕКТРОННАЯ КНИГА, предполагая его объектом нижнего уровня иерархии, например, раздел-глава-часть и т. п. Придумать и описать набор методов такого объекта для реализации эффективной работы с электронной книгой.

20. Описать на простейшем уровне объект СКЛАД.

Задания на тему «Рекурсивные алгоритмы» 1. Описать рекурсивную функцию, которая по заданным вещественному x и,1 n = целому n вычисляет величину xn согласно формуле xn = n < 0,.

n x n- (xx ) n > 0, 2. Написать программу вычисления функции Аккермана для всех неотрицательных целых аргументов m и n:

(,0 nA ) n += (mA, n)= (mA 0, ) A(m -= 1,1), m > 0.

(mA n) A(m -= 1,, A(m, n - 1)), m, n > k 3. Написать рекурсивную функцию, которая вычисляет = xy по x - yn k - yn следующей формуле: ;1 yy == ynn +, n = 0, 1, 2, ….

+k За ответ принять приближение, для которого выполняется следующее условие yy <-, где = 0.0001.

+1 nn 3 aa +- 4. По вещественному числу a > 0 вычислить величину. Корни 1 + 3 + a k = xy вычислять с точностью = 0.00001 по следующей итерационной x - yn k - yn формуле: ;1 yy == ynn +, n = 0, 1, 2, …, приняв за ответ +k приближение yn+1, для которого yy <-.

+1 nn 5. Подсчитать число узлов в заданном двоичном дереве.

6. Подсчитать число узлов на k-ом уровне заданного двоичного дерева (корень считать узлом 1-го уровня).

7. Даны два текстовых файла: А и В. Максимальная длина слова — 20 символов. Занести в файл С те слова файла А, которых нет в файле В. Для хранения слов файла В и ускорения поиска среди них воспользуйтесь деревом двоичного поиска.

8. Реализовать рекурсивную процедуру печати всех элементов заданного двоичного дерева.

9. Описать логическую функцию, проверяющую на равенство два заданных двоичных дерева.

10. Описать логическую функцию, определяющую, есть ли в заданном двоичном дереве хотя бы два одинаковых элемента.

11. Описать процедуру, которая для заданного N строит двоичное дерево с количеством уровней N, где на каждом уровне i располагаются узлы, информационные части которых равны i.

12. Описать рекурсивную функцию, для определения максимального элемента вектора, состоящего из вещественных чисел, введя вспомогательную рекурсивную функцию, зависящую от k, находящую минимум среди k последних элементов вектора.

13. Дана строка текста, оканчивающаяся точкой. Напечатать этот текст в обратном порядке.

14. Дана последовательность ненулевых чисел, за которой следует 0.

Напечатать сначала все отрицательные члены этой последовательности, а затем положительные в любом порядке.

15. Описать рекурсивную логическую функцию, которая проверяет, является ли симметричной часть заданной строки, начинающаяся i-ым и кончающаяся j-ым символом.

16. Для заданных границ интегрирования a и b вычислить значение определенного интеграла следующего вида:

cosn-1 sin xx n -n-+ cos dxx, n > n n x а) cosn dxx = sin 2, nx =+ 2 ;

2 sin, nx = 1 cos x n - 2 dx n 2, - n - 1 sin x + nn -- n -1 sin x dx x б) = ln tg n =1, ;

n sin x nx = 0, 1 sin x n - 2 dx n 2, n -1 cos x + -- n -1 cosnn x dx x в) = ln tg + n =1, ;

cosn x nx = 0, axn ex n -1 axn ex dx n >- 1, a a axn г) ex dx = ;

ax e (ax ),1 n =- amxn ax n -1 mxn 1, ax dx n >ln an ln am mxn д) ax dx = ;

xamx amx n =- 1, ln am (ln am ) ax - cosn xe (a cos x + n sin x) (nn -1) ax - + cosn xe dx, n 22 2 + na + na ax е) ;

(sin xe +- a cos x) ax cosn xe dx = n = 1, + na ean n = 0, a ax sinn-1 bxe (asin x - nbcosbx) (nn -1)b2 ax + sinn-2 bxe dx, n 22 + na b2 + na b ax (ae sinbx -- bcosbx) ax ж) ;

sinn bxe dx = n =1, + ba ean n = 0, a - ln xx n x dx, n >- lnnn з) lnn dxx = ;

ln xxx, n =- xm+1 n mn ln x - lnn-1 xx dx, n > m + m + и) lnnm xx dx = ;

xm+1 ln x - 1 n =1, m + (m +1) 1 x ( n -+ 32 ) dx22 nn, n > 2 1 -- dx - 12 )an ( к) () () ;

+ xa + xa = n ( + xa ) x arctg n = 1, a a n- tg x tgn-2x dx n - 2, n - л) x dx = ln cos, nx =- 1 ;

tg n nx = 0, n- ctg x ctgn-2x dx n - 2, - n - м) ctgnx dx = sin, nx = 1 ;

Pages:     || 2 | 3 |










© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.