Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

System programming / Задания заочникам_2 сем

..doc
Скачиваний:
30
Добавлен:
08.05.2015
Размер:
64 Кб
Скачать

(c) 2002, Максим Волк 4

Задания по курсу СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ

2 семестр

Вариант 1

Задание 1 Написать программу, содержащую в файле ресурсов три иконки. Используя таймер, осуществить периодическую смену трех данных иконок в приложении и в "трейе". Программа должна содержать диалоговое окно, вызываемое по нажатию комбинации клавиши, в котором пользователь может изменить время смены иконок.

Задание 2 Написать программу, порождающую поток по нажатию одной из клавиш клавиатуры. Каждому созданному таким образом потоку соответствует окружность в окне приложения, которая появляется в случайном месте окна приложения и движется либо во вертикали, либо по горизонтали. При достижении границы окна, окружность меняет направление своего движения на противоположное.

Задание 3 Создать динамически подключаемую библиотеку, содержащую графические процедуры: рисования вписанных в прямоугольную область равностороннего пятиугольника и звезды. Прямоугольник задается объектом RECT. Использовать созданную DLL в другой программе.

Задача 4. (Ассемблер) Написать функцию, которая ищет максимум и минимум в массиве чисел. Известно, что все числа являются 16-и разрядными. Параметры функции – указатель массива и число элементов. Функция возвращает 32 битное значение, младшее слово которого является минимумом, а старшее – максимумом.

Вариант 2

Задание 1 В файл ресурсов поместить три собственных изображения курсора. Разделить рабочую область окна приложения на три части. При попадании мыши в каждую из этих областей, курсор меняет свой вид на одно из трех изображений, заданных в файле ресурсов. Программа должна содержать меню, в котором есть пункт "О программе", выбрав который, пользователь получает информацию о создателе программы. Пункты меню должны иметь «горячие клавиши».

Задание 2 В программе создать два потока. Назначение одного из них – периодическое чтение системного времени и заполнение глобальной структуры (часы, минуты, секунды), второго – вывод данной структуры на экран. При помощи критического раздела организовать раздельный доступ потоков к структуре данных.

Задание 3 Создать динамически подключаемую библиотеку функций поворота изображения на 90, 180, 270 градусов. Использовать созданную DLL в другой программе.

Задача 4. (Ассемблер) Написать функцию, осуществляющую перекодировку массива символов. Параметры функции – указатель на строку символов, указатель на 256-байтную таблицу перекодировки.

Вариант 3

Задание 1 Написать программу с меню, в котором можно установить цвет фона приложения, изменить размер окна приложения, получить информацию о создателе программы. При выборе пункта меню открывается соответствующее диалоговое окно.

Задание 2 Написать программу, содержащую два потока, каждый из которых управляет движением одного из двух шаров. Первый шар двигается горизонтально, второй – вертикально. Скорость шаров различна. При достижении границы клиентской области окна, шар меняет направление движения на противоположное. При помощи объектов синхронизации (семафоров или событий) реализовать алгоритм движения шаров без столкновений.

Задание 3 Создать динамически подключаемую библиотеку функций рисования текстур на основе типа заполнения и параметров заполнения (например, количества точек на единицу площади). Предложить два-три типа текстур. Использовать созданную DLL в другой программе.

Задача 4. (Ассемблер) Написать функцию, выводящую максимальное число из матрицы М[100][300].

Вариант 4

Задание 1 Написать программу с меню, которое содержит пункт "О программе" со сведениями об авторе и пункт управления цветом фона окна приложения. По активизации последнего, выводится окно диалога, в котором пользователь задает три значения (R,G,B,) при помощи полос скроллинга с одновременным изменением цвета фона. Пункты меню должны иметь «горячие клавиши».

Задание 2 Написать программу, которая запускает новый поток при нажатии левой клавиши мыши. Поток начинает выводить возрастающую числовую последовательность в текущую позицию курсора мыши. При нажатии левой клавиши мыши программа удаляет поток, координаты которого ближе всего к положению мыши.

Задание 3 Создать многооконное приложение, каждое из создаваемых окон которого является часами реального времени. Время выводится в аналоговой или цифровой форме, которая определяется пользователем перед созданием окна.

Задача 4. (Ассемблер) Написать функцию, которая переводит строку символов типа "10010101001" в десятичное число.

Вариант 5

Задание 1 Написать программу, содержащую меню и три диалоговых окна. Окна открываются через меню. Реализовать возможность управления представлением текста в одном из окон посредством другого окна, в котором задаются размеры цвет шрифта, цвет фона, толщина букв. Третье окно предоставляет информацию об авторе программы. Пункты меню должны иметь «горячие клавиши».

Задание 2 Создать многопоточную программу, формирующую потоки трех типов. Каждый из потоков запускается соответствующим пунктом меню и захватывает соответственно 1,2,3 ресурса (максимальное число ресурсов по умолчанию – 8 и может меняться пользователем в окне диалога, вызываемом через меню). Количество, вид потоков, а также их состояние выводится на экран. Если число ресурсов не позволяет работать потоку, он находится в состоянии ожидания. Удаление потоков осуществляется через меню в порядке запуска (первым удаляется поток, запущенный первым).

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

Задача 4. (Ассемблер) Написать функцию, вычисляющую N! (N факториал).

Вариант 6

Задание 1 Создать в ресурсе приложения три битовых образа (иконки). Вывести данные образы в клиентскую область окна приложения. Пользователь при помощи мыши выбирает необходимую ему иконку, которая отображается как иконка приложения и в трейе приложения. Меню программы содержит пункт "О программе" со сведениями об авторе.

Задание 2 Написать программу, которая позволяет запускать процессы, используя для этого выбранные на диске файлы. Пользователь может задавать имя запускаемого файла и командную строку. Программа следит за всеми запущенными ею процессами и выводит по требованию пользователя следующую информацию: имя процесса, значение указателя и идентификатора процесса, время выполнения процесса.

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

Задача 4. (Ассемблер) Написать функцию, вычисляющую числа Фиббоначи.

Вариант 7

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

Задание 2 Написать программу, которая читает с диска *.bmp файл и выводит его в окно приложения. При помощи потока организовать поворот изображения на 90 градусов. Операцию можно прервать при помощи диалогового окна, возникающего на время выполнения операции.

Задание 3 Написать простой многооконный графический редактор, позволяющий при помощи мыши рисовать полигоны. Точки задаются левой клавишей мыши, последняя точка полигона – по нажатию правой клавиши мыши. Редактор должен иметь возможность записи и чтения изображения в метафайл.

Задача 4. (Ассемблер) Написать функцию, которая обнуляет в массиве все числа больше 255.

Вариант 8

Задание 1 Определить в ресурсном файле ресурс пользователя – массив чисел, соответствующий битовому изображению иконки. В приложении использовать этот массив для создания новой иконки и поместить созданную иконку в заголовок приложения. Меню программы содержит пункт "О программе" со сведениями об авторе.

Задание 2 Написать программу, которая по нажатию мыши создает потоки: по нажатию правой клавиши – поток, производящий вывод возрастающего ряда в позицию курсора, левой – поток с убывающим рядом. Поток выгружается из памяти по окончанию счета. Число потоков ограничивается пользователем через контекстное меню и находится в диапазоне [4,8].

Задание 3 Написать многооконное приложение, которое позволяет открывать от 1 до 8 дочерних окон. Все окна при создании имеют собственный оригинальный заголовок. Реализовать возможности упорядочения дочерних окон: показать все окна, «черепица», выбрать окно из списка.

Задача 4. (Ассемблер) Написать функцию, которая находит сумму всех элементов массива целых чисел. Если сумма не помещается в 32-битовый регистр, функция возвращает 0.

Вариант 9

Задание 1 Написать программу, которая содержит в файле ресурсов альтернативные варианты названия приложения (title), иконки приложения, иконки трея и размеров окна приложения. Используя меню, обеспечить пользователю возможность изменения этих элементов окна приложения. Меню программы содержит пункт "О программе" со сведениями об авторе.

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

Задание 3 Написать простейший многооконный «просмотрщик» текстовых файлов. Организовать скроллинг текста.

Задача 4. (Ассемблер) Написать функцию, которая переводит 6-и разрядное десятичное число из системы ASCII в систему BBD.

Вариант 10

Задание 1 Написать программу, порождающую четыре потока, каждому из которых выделяется четвертая часть окна приложения. Первый поток выводит в свою область возрастающую числовую последовательность 0,1,2,…, второй – последовательность чисел Фибоначчи. Третий поток заполняет свой участок окна прямоугольниками случайного размера и цвета, четвертый поток фиксирует в трех переменных и выводит их в своей области окна число запусков каждого из предыдущих трех потоков.

Задание 2 Написать простейший многооконный текстовый редактор, позволяющий вводить текст, сохранять его на диске в формате *.txt и читать в новое окно приложения.

Задание 3 Написать многооконный «просмотрщик» графических файлов битового формата. Организовать скроллинг изображений.

Задача 4. (Ассемблер) Написать функцию, подсчитывающую количество единиц в 32-х разрядном слове.

Задания к курсовому проектированию по курсу "Системное программирование для WINDOWS"

  1. Разработать графический редактор для растровых изображений. Редактор должен выполнять следующие функции:

  • чтение/запись/воспроизведение файлов битовых образов *.bmp;

  • масштабирование выбранного изображения;

  • инверсию цветов изображения;

  • перевод изображения в монохромный вид и в вид "градации серого";

  • поворот изображения на задаваемый угол.

  1. Разработать графический редактор для векторных изображений. Редактор должен содержать следующие функции:

  • ввод элементарных векторных примитивов (линия, прямоугольник, эллипс, ломаная линия, текст) и т.п.

  • сохранение/чтение векторного изображения в метафайлы (*.wmf).

  • выбор цвета рисования;

  • масштабирование изображения;

  • поворот изображения на задаваемый угол.

  1. Разработать приложение "Калькулятор" со следующими характеристиками:

  • два возможных вида калькулятора – научный и обычный;

  • набор операций, поддерживаемых калькулятором, согласовывается с преподавателем;

  • возможность выполнения арифметических и логических операций над числами в любой системе счисления (двоичной, шестнадцатеричной, десятичной);

  1. Создать программу, позволяющую отображать графики функций, заданных таблично (чтение из файла) и простейшими математическими выражениями. В процессе выполнения реализовать:

  • формат файла для хранения табличных функций;

  • окно работы с табличными функциями с возможностями чтения/записи файла, редактирования таблиц;

  • возможность отображения графиков функций;

  • создания таблиц элементарных функций, набор которых согласовывается с преподавателем.

  1. Разработать приложение, позволяющее создавать круговые диаграммы со следующими возможностями:

  • задание параметров диаграммы, включающих таблицу параметров диаграммы, цвета каждой области диаграммы, размеры диаграммы;

  • реализовать возможность сохранения и чтения параметров диаграммы в файл;

  • отображение диаграммы на экране;

  • экспорт диаграммы в файл формата *.bmp.

  1. Создать редактор ресурсных файлов приложения, который позволяет формировать следующие ресурсы:

  • иконки;

  • меню;

  • текст;

  • диалоговые окна.

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

  • просматривать содержимое дисков и каталогов;

  • копировать файлы из одного каталога (диска) в другой;

  • изменять имена фалов.

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

  • просматривать содержимое дисков и каталогов;

  • получать подробную информацию о файлах (размер, тип, дата последнего изменения);

  • удалять файлы с диска.

9. Написать игру "Крестики-нолики" на безграничном поле. В игру могут играть два человека, которые поочередно ставят крестики и нолики. Выигрывает тот, кто выстроит подряд пять ноликов или пять крестиков. Поле игры содержит постоянное число клеток и изменяет масштаб отображения при изменении размеров окна. Игрок может выбирать цвет игровой метки.

  1. Написать игру «Ханойские башни». Игра состоит из круглой подставки с тремя стержнями. На стержнях нанизаны диски различных диаметров. На каждом стержне диски сложены в стопку по возрастанию диаметра: никогда ни один диск не кладется на другой диск меньшего размера. Перекладывая диски по одному согласно вышепреведенному правилу, добиться того, чтобы все диски оказались на одном, указанном стержне. Программа должна обеспечивать возможность перекладывания дисков, контроль правильности ходов и счет времени выполнения.

  2. Написать игру тетрис. Скорость падения фигур устанавливается при помощи таймера. При переходе с уровня на уровень скорость увеличивается. Программа должна вести учет набранных игроком очков.

  3. Написать игру Сима. На игровом поле появляется определенное число точек, расположенных случайным образом (>=6). Поочередно два играка соединяют прямыми линиями две еще не соединенные точки. Линии двух игроков отличаются. Проигрывает тот, кто первым построит треугольник из своих собственных линий.

  4. Написать программу «Мазайка» На клеточном поле пользователь может заполнять пустоты выбранным в окне палитры цветом (16 доступных цветов). Пользователь может менять палитру цветов, при этом изменяются палитра уже созданного рисунка. Обеспечить возможность записи и чтения рисунка с диска.

  5. Написать программу «кроссворд». Пользователь может вводить выбранные буквы слова. Если слово введено правильно, оно отображается черным цветом, иначе – красным. Разработать формат текстового файла, где хранятся заготовки крассвордов. Пользователь могжет открыть любой из файлов, содержащий кроссворд.

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

  7. Написать программу-игру «Змея». Змея двигается по полю, собирая объекты, увеличивающие количество очков. Со временем тело змеи удлиняется. Змея не должна пересикать свое тело и объекты типа «стена».

  8. Написать MDI приложение, позволяющее просматривать текстовые файлы и файлы формата rtf. Приложение должно давать возможность одновременного просмотра нескольких файлов, а также возможность получения информации о файле.

  9. Разработать программу «Часы». Пользователь может изменять размеры часов, а также их вид (обычный и цифровой), выбирать цвет фона и цвет элементов часов (цифр – для цифровых и стрелок – для обычных часов).

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

  11. Разработать программу статистики текстовых файлов. Пользователь имеет возможность выбрать текстовый файл, после чего программа выдает информацию о количестве байт (размере файла), количестве букв, слов, предложений, а также предположительно язык (русский или английский) текста.

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

  13. Разработать программу-игру типа "Арканоид". Игрок с помощью клавиатуры или мыши управляет площадкой, которая отбивает мяч. Мяч отражается от стенок поля и площадки игрока. Если игрок не отбивает мяч, он теряется. Игрок может менять скорость полета мяча.

  14. Разработать программу “Японский кроссворд”. Игрок имеет возможность создавать новый кроссворд, после чего программа сохраняет его на диске. Игрок может загрузить игру, сохранить ее и прочитать в любое время.