Лабораторная работа № 2 по СППО
Разработать программу Windows-95 работы с клавиатурой и таймером, которая:
1) отображает в окне символы нажатых клавиш, особенных для задачи (для управляющих клавиш и их комбинаций отображает их символические обозначения в уголковых скобках; например, <Ctrl> или <Shft-F2>; нажатия всех остальных клавиш отображает символом *); при этом каждое новое введение пароля, если это есть в задаче, отображается с новой строки; также с новой строки отображается текущее время, если это требуется в задаче;
2) реагирует на особые сочетания клавиш (пароль), выполняя указанные действия;
3) запускает в необходимых случаях таймеры для определения интервалов времени, отображая на экране с новой строки текущее время начала интервала для каждого таймера; определяет в необходимых случаях текущее время и дату для проверки необходимости выполнения действий, указанных в задании.
Отчет должен содержать:
1) задание, конкретизирующее общее задание на основе индивидуального задания;
2) программу главной процедуры и оконной процедуры;
3) полный набор тестов (исходные данные и ожидаемые результаты).
Задания
1. При нажатии подряд ровно 3 клавиш «А» в течение 10-секундного интервала вывести текущее время.
2. Если время между 13:00 и 14:00 или введен пароль «ВРЕМЯ» вывести текущее время и время, увеличенное на 1 час.
3. При вводе пароля «ТОРТ», если день месяца четный, выводится текущий год.
4. При нажатии более 3 клавиш «Б» в течение 12-секундного интервала вывести текущую дату.
5. Если клавиши в течение 5 секунд не нажимались, вывести «Жду…» и текущее время.
6. Если в течение двух подряд идущих 10-секундных интервалов нажималось одинаковое число клавиш, то вывести наименование текущего месяца (нажатия клавиш для каждого 10-секундного интервала выводятся на экран символами * в отдельной строке).
7. Если в течение двух подряд идущих 7-секундных интервалов ровно по 2 раза подряд нажималась клавиша «В» (для каждого интервала нажатия клавиш отображать в отдельной строке), то вывести текущую дату и дату, уменьшенную на 1 год.
8. Если между нажатиями клавиш 3 раза подряд интервал превысит 5 секунд, то вывести «Редко…» и текущую дату.
9. Если месяц четный и введен пароль «ИНВЕРТ», то вывести дополнительно в обратном порядке только те символы, которые вводились в течение 8 секунд и дату.
10. Если в течение подряд идущих 10-секундных интервалов число нажатий клавиш возрастает, то вывести время начала каждого интервала и число нажатий клавиш (до тех пор, пока условие будет соблюдаться; нажатия каждого интервала отображать в отдельной строке).
11. Если с начала года прошло более 100 дней, то в течение каждого 10-секундного интервала только первые 3 нажатия клавиш не выводить, а остальные вывести (время начала интервала и символы нажатых клавиш отображать в отдельной строке для каждого интервала).
12. Если в течение первого 7-секундного интервала введен пароль «ОДИН», а в течение следующего – введен пароль «ДВА», то вывести текущее время и время, остающееся до ближайшего четного часа.
13. Если до конца дня осталось более 3 часов, то на ввод каждого слова «СТАРТ» выдавать на экран накопленное к этому моменту число таких событий и текущее время.
14. Если месяц нечетный, то после каждых трех подряд идущих нажатий клавиши «F1» вывести «Помощь идет…” и текущую дату, очищая экран через 8 секунд после этого.
15. Если между нажатиями двух пробелов число нажатий других клавиш превысило длину интервала в секундах, то вывести текущую дату и число дней прошедших с начала года.
16. Вывести число нажатий клавиш в течение интервала, длина которого в секундах на 60 меньше числа, определяемого кодом первой нажатой клавиши (перед этим вывести длину интервала).
17. Подсчитать в течение интервала в 10 секунд число нажатий символьных клавиш, определяемых по первому слову до Пробела, исключая его, и вывести это число.
18. В течение интервала в секундах, определяемого первым введенным символом цифры, определить число нажатий клавиши Shift и вывести текущую дату и дату, увеличенную на это число дней.
19. В течение 20-секундного промежутка, разбитого на 5-секундные интервалы, определить, в какой по счету из этих интервалов было больше всего нажато клавиш, и выдать его номер на экран (нажатия клавиш для каждого интервала отображать в отдельной строке).
20. В течение первой половины каждого из 10-секундных интервалов, начинающегося нажатием Пробела, подсчитать число нажатий функциональных клавиш и вывести текущее время и время, увеличенное на такое число секунд (нажатия клавиш для каждой половины каждого интервала отображать в отдельной строке).
21. При вводе любого симметричного пароля из 5 букв (1-я буква совпадает с 5-й, 2-я – с 4-й) вывести на экран текущую дату и дату, которая отстоит от начала года на число дней равное месяцу текущей даты.
22. Если число нажатий клавиш в течение каждого из 4-секундных интервалов 16-секундного промежутка не изменяется монотонно, то выдать на экран текущее время и время, уменьшенное на число минут равное числу часов (нажатия клавиш каждого интервала отображать в отдельной строке).
23. В течение интервала, длина которого в секундах определяется числом часов текущего времени (вывести текущее время), подсчитать число нажатий символов цифр и вывести его.
24. Подсчитать число ввода пароля «БАЗА» в течение 15 секунд и, если оно больше нуля, то вывести текущую дату и дату, увеличенную на такое число дней.
25. Если введен пароль «БАБА», то в течение 20-секундного интервала подсчитать повторное число ввода этого пароля и вывести его.
26. Если введен пароль «СТОП», то в течение 15-секундного интервала подсчитать число ввода слова «ПОСТ» и вывести его.
27. Подсчитать число ввода пароля «ШАШКА» в течение 18 секунд и, если оно меньше 3, то вывести текущее время и время, уменьшенное на подсчитанное число часов.
28. В течение интервала, длина которого в секундах определяется номером дня текущей даты (вывести текущую дату), подсчитать число нажатий символов букв и вывести его.
29. Если число нажатий клавиш в течение каждого из 4-секундных интервалов 12-секундного промежутка изменяется монотонно, то вывести на экран текущую дату и дату, увеличенную на число месяцев равное номеру дня месяца.
30. При нажатии подряд ровно 4 клавиш «Г» в течение 9-секундного интервала вывести текущую дату.
31. При вводе любого симметричного пароля из 6 букв (1-я буква совпадает с 6-й, 2-я – с 5-й, 3-я – с 4-й) вывести на экран текущее время и время, которое отстоит от начала дня на число минут равное числу часов текущего времени.
32. В течение первой четверти каждого из 3 12-секундных промежутков, идущих подряд, подсчитать число нажатий функциональных клавиш и выдать на экран текущее время и время, уменьшенное на такое число секунд (нажатия клавиш для каждой четверти каждого промежутка выдавать в отдельной строке; выдать на экран время перед уменьшением и с нажатием любой клавиши – время после уменьшения).
33. Если время между 13:00 и 13:30 или введен пароль «ДЕНЬ» выводится текущая дата и дата, уменьшенная на 1 день.
34. В течение 20 секунд, разбитых на 4-секундные интервалы определить, в какой по счету из этих интервалов было меньше всего нажато клавиш, и выдать его номер на экран (нажатия клавиш каждого интервала выводить в отдельной строке).
35. При вводе пароля «ТОСТ»выводится текущая дата и, если день месяца нечетный, выводится текущее время.
36. В течение интервала в секундах, определяемого первым введенным символом цифры, определить число нажатий клавиши Ctrl и вывести текущее время и время, уменьшенное на это число минут.
37. Если клавиши в течение 15 секунд нажимались, вывести «Принято…» и текущее время.
38. При нажатии более 2 клавиш «Я» в течение 8-секундного интервала вывести текущее время.
39. Подсчитать в течение интервала в 20 секунд число нажатий функциональных клавиш, определяемых по первому слову до Enter, исключая его, и вывести это число.
40. Если между нажатиями клавиш 4 раза подряд интервал меньше 1 секунды, то вывести «Часто…» и текущее время.
41. Если в течение двух подряд идущих 8-секундных интервалов нажималось разное число клавиш, то вывести наименование текущего месяца и время в минутах до конца текущего дня.
42. Если в течение трех подряд идущих 7-секундных интервалов число нажатий клавиш убывает, то вывести время начала первого интервала и число нажатий клавиш последнего интервала (нажатия клавиш каждого интервала отображать в отдельной строке).
43. Вывести число нажатий клавиши Alt в течение интервала, длина которого в секундах равна числу, определяемому кодом первой нажатой клавиши, уменьшенному на 50 (длину интервала вывести перед выводом нажатых клавиш).
44. Если в течение двух подряд идущих 6-секундных интервалов ровно по 3 раза подряд нажималась клавиша «Д», то вывести текущее время и время, уменьшенное на 1 час.
45. Если день нечетный и введен пароль «СИММ», то вывести дополнительно в удвоенном числе каждый из тех символов, которые вводились в течение 3 секунд.
46. Если с начала года прошло менее 100 дней, то в течение каждого 5-секундного интервала только последние 3 нажатия клавиш не выводить, а остальные вывести.
47. Если между нажатиями двух функциональных клавиш число нажатий других клавиш меньше длины интервала в секундах, то вывести число дней оставшихся до конца года (после нажатия каждой функциональной клавиши вывести текущее время).
48. Если в течение первого 6-секундного интервала введен пароль «ПЛЮС», а в течение следующего – введен пароль «МИНУС», то вывести дату, округленную до ближайшего нечетного дня.
49. Если до конца дня осталось более 1000 минут, то на ввод каждого слова «ФИНИШ» выдавать на экран накопленное к этому моменту число таких событий (в отдельной строке).
50. Если месяц четный, то после каждых двух подряд идущих нажатий клавиши «F10» вывести «Все пройдет…” и дату, очищая экран через 3 секунды после этого.


