Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
RPUD-PI-Informatika-v30.doc
Скачиваний:
2
Добавлен:
27.08.2019
Размер:
604.67 Кб
Скачать

1. Еженедельный отчет студента

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

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

Тема письма задается согласно шаблону

MM-2011au-XXX-Reading-YY-LapelurikZK, где XXX — номер группы студента, YY — номер темы из таблицы, а LapelurikZK замещается фамилией и инициалами студента на латинице. Например:

MM-2011au-171-Reading-01-GrandivanihovaLL,

MM-2011au-211-Reading-05-ZadubikoliayevNM

Письмо направляется на почтовый адрес, выданный преподавателем.

Каждое сообщение о прочитанной теме отправляется отдельно.

Дата и время получения письма регистрируется по моменту его поступления в п/я преподавателя. Рекомендуется осваивать материал и, затем, направлять письма заблаговременно.

2. Регулярный контроль на аудиторном занятии

На одном или нескольких последующих занятиях осуществляется контроль прочитанного. В начале пары предлагаются вопросы по содержанию темы, на которые нужно будет ответить письменно в течение ограниченного времени (5–15 мин.).

Исполнение задания по чтению зачитывается только в случае своевременного попадания письма с уведомлением об успешно прочитанном на п/я преподавателя и прохождения контроля непосредственно на занятии.

3. Итоговый контроль на зачетных и экзаменационных мероприятиях

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

Приложение с1-2

Домашние задания первого семестра

Домашнее задание № 00

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

e-mail (основной): …

дом.т. (основной):…

моб.т. (основной): …

допустимое время для звонка:…

Например:

Исильфида Ивановна Лапелурик

e-mail (основной): isylphida.lapelurik@mail.to

дом.т. (основной): (812)888-88-88

моб.т. (основной): (921)000-00-00

допустимое время для звонка: 09:30--23:00

Технология сдачи домашнего задания описана в конце приложения. Её требуется строго соблюдать.

Домашнее задание № 01

Домашнее задание состоит в создании программы на Free Pascal’e, которая выводит на консоль сведения о студенте, ее написавшем: фамилию, имя, отчество, номер группы, место учебы.

Конечным результатом является файл с корректно работающей программой (имя файла с расширением .pas).

Домашнее задание № 02

Домашнее задание состоит в создании программы (с графическим пользовательским интерфейсом) в среде Lazarus, которая выводит в главное окно программы сведения о студенте, ее написавшем: фамилию, имя, отчество, номер группы, место учебы.

Конечным результатом является проект среды Lazarus.

Домашнее задание № 03

Разработать в среде Lazarus приложение с графическим пользовательским интерфейсом. Интерфейс предусматривает расположенные друг под другом три компоненты для редактирования строк (TEdit), каждая с подходящей надписью (TLabel). Рядом с каждой компонентой TEdit располагается соответствующая ей кнопка (компонента TButton).

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

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

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

Домашнее задание № 04

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

2. В главном окне размещены горизонтально друг за другом две компоненты TLabel c надписями «First» и «Second». Под каждой из двух указанных TLabel размещено по одной компоненте TEdit с начальным содержимым «1» и «2» соответственно. Под каждой из двух указанных TEdit размещено по одной компоненте TButton с надписями «1 + 2» и «2 + 1» соответственно.

3. Под указанными выше двумя компонентами TButton размещена компонента TLabel с надписью «Result», а под ней — еще одна компонента TEdit (самая нижняя).

4. По нажатию на кнопку в самую нижнюю компоненту TEdit требуется выводить конкатенацию содержимого двух других компонент TEdit. Последовательность строк в конкатенации определяется надписью на нажатой кнопке.

5. Каждая кнопка для формирования результата пользуется специально написанной функцией, первый аргумент которой — содержимое компоненты TEdit слева, а второй — содержимое TEdit справа. Функции возвращают конкатенацию своих аргументов. Эти две функции описаны и реализованы в отдельном модуле uCalculations (файл umCalculations). Модуль главной формы использует функции из uCalculations.

Домашнее задание № 05

1. Сформировать новый проект для разработки приложения с графическим пользовательским интерфейсом. Все появившиеся объекты и файлы, а также те, которые появятся позже, не забывать именовать правильно.

2. Разместить на форме одну компоненту TMemo, одну компоненту TStringGrid (пять столбцов, шесть строк, первый столбец и первая строка — фиксированные), четыре кнопки TButton с надписями «Делай раз», «Делай два», «Делай три», “Делай четыре”, а также одну компоненту TEdit, снабдив ее подходящей надписью в компоненте TLabel.

3. Обеспечить следующие действия по нажатию кнопок:

«Делай раз»: из компоненты TEdit текст добавляется в конец текста TMemo, а также этот текст помещается в ячейку (1,2) компонента TStringGrid; кроме того, в ячейках (2,2) и (4,4) компоненты TStringGrid появляются строки «44».;

«Делай два»: из компоненты TEdit текст помешается в ячейку (3,2) компонента TStringGrid, а также этот текст помещается в начало текста компонента TMemo;

«Делай три»: тексты в ячейках (1,1), (3,2), (1,2) циклически перемещаются, содержимое компонента TMemo помещается одной строкой в компоненту TEdit, а сама компонента TMemo сначала очищается от текста, а затем в нее вносятся последовательно строки из ячеек TStringGrid (1,1), (3,2), (1,2), а также строка «<Operation Completed>»;

«Делай четыре»: переносит допустимое число начальных строк из TMemo в четвертый столбец TStringGrid, причем каждая строка переносится в соответствующую отдельную ячейку, а содержимое ячеек (1,1), (3,2), (1,2) заполняет первую, вторую и третью строку компонента TMemo соответственно. Содержимое TEdit присоединяется в конец TMemo, а в ячейках (2,2) и (4,4) компонеты TStringGrid появляются строки «88».

Домашнее задание № 06

Расположить на форме TEdit для ввода вещественного числа, TEdit для вывода результатов операции, TRadioGroup для выбора операций (вычислить синус, вычислить косинус, вычислить экспоненту, вычислить корень квадратный), TButton, при нажатии на которую выполняется выбранная операция, TEdit для вывода сообщений об ошибке. Кроме того, разместить компоненту TCheckBox; если флажка в ней нет, выводить сообщение об ошибку в строку статуса; если флажок в ней есть, то выводить сообщение об ошибке в виде диалогового окна (например, с помощью функции ShowMessage).

Реализовать кнопки с меняющимися надписями Enable/Disable, Make Visible/Make Invisible, и применить соответствующую им функциональность к TCheckBox и TRadioGroup, имеющимся на форме.

Внести необходимое число компонент TLabel с поясняющими надписями.

Реализовать требующуюся (подразумеваемую) функциональность.

Домашнее задание № 07

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

Пользователь заполняет (возможно, не полностью; возможно, с ошибками) первый столбец.

С главной формой ассоциировано главное меню. В главном меню — две опции «Таблица», «Функции». В «Таблице» — подопции «Очистить всё» (чистится всё содержимое таблицы), «Очистить результаты» (чистится столбец с результатами), «Очистить комментарии» (чистится столбец с комментариями). В «Функции» — подопции “Sin”, “Cos”, “Exp”,”Ln”, “Sq. root”, “arcsin”. В столбец результатов заносятся результаты применения функции к аргументу, указанному пользователем в соответствующих строках. Если возникает ошибка вычислений, то текст сообщения об ошибке заносится в строку с комментарием.

Добавить на форму компоненту TCheckBox. Если в ней есть флажок, то при ошибке помимо сообщения об ошибке в поле «Комментарий», в поле «Результат» вносится надпись ‘Error’/

Добавить на форму компоненту TMemo. Ассоциировать с ней контекстное меню с опциями «Аргумент», «Результат» и «Комментарий». В зависимости от выбора опции контекстного меню, копировать содержимое соответствующих столбцов из TStringGrid в компоненту TMemo.

Внести необходимое число компонент TLabel с поясняющими надписями.

Реализовать требующуюся (подразумеваемую) функциональность.

Домашнее задание № 08

Добавить на форму компоненту TMemo. В начальном состоянии компонента TMemo содержит 9 строк: «Red, Orange, Yellow, Green, Cyan, Aquamarine, Violet, Black, White». Пользователь может изменить этот список.

Добавить на форму компоненту TListBox. По нажатию на кнопку TButton скопировать список строк из TMemo как список опций этого TListBox. Разрешить множественный выбор опций.

Добавить на форму компонент TComboBox. Список его опций — числа от 2 до 16. Начальный выбор — число 8.

По нажатию на еще одну кнопку TButton настраивается таблица TStringGrid. Столбцов у нее столько же, сколько выбранных элементов в TListBox, заголовки столбцов совпадают с названиями выбранных элементов из TStringGrid. Строк — столько, сколько указано в компоненте TComboBox.

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

Сообщения об ошибках, если такие могут возникнуть, выводятся в специальную строку со статусом.

Внести необходимое число компонент TLabel с поясняющими надписями.

Реализовать требующуюся (подразумеваемую) функциональность.

Домашнее задание № 09

В графическом режиме в окно неглавной формы вывести таблицу умножения в восьмеричной системе счисления. Внутри каждого столбца таблицы текст окрашен одинаково, причем окраска текста столбцов пробегает семь цветов спектра. Окраска фона в строках чередуется: светло-серый и просто серый. Требуется подобрать оттенки цвета, размер и начертание шрифтов так, чтобы текст таблицы легко читался.

Домашнее задание № 10

Обеспечить вывод сетки а) декартовых координат, б) полярных координат, а также необходимых текстовых пометок на холст компоненты TPanel. Обеспечить рисование графиков функций (с настройкой параметров функций и масштабированием) как в полярной, так и в декартовой системе координат. Пользователь должен иметь возможность для каждой системы координат выбрать масштабирующий коэффициент, класс функций (не менее, чем из 7 классов, включая полиномы до 6-й степени, тригонометрические функции и др.) и параметры класса функций.

Графический пользовательский интерфейс должен быть удобным и продуманным; он может поддерживать более широкую функциональность, чем указано выше.

Домашнее задание № 11

Указание: может потребоваться функция Format.

Основная цель: вывод таблиц значений аргумента и функции (или функций) в компоненту TMemo. При этом предполагается, что ширина компоненты TMemo достаточна для вывода строки таблицы.

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

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

Обеспечить построение и вывод таблиц. Некорректные значения аргумента должны обрабатываться; если значение функции для конкретного значения аргумента не определено, то должна выводиться запись N/A.

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

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

Всю вышеуказанную функциональность реализовать для компонента TStringGrid. (Адаптация некоторых операций потребует некоторых интеллектуальных усилий).

Домашнее задание № 12

Развить функциональность приложения, использовавшегося на занятии 09.

В окне, которое вызывается по кнопке [Draw text on canvas] обеспечить возможности настройки цвета фона текста, цвета букв текста, вида и свойств фонта текста, причём с использованием стандартных диалоговых окон. Также обеспечить пользователю возможность выбора ориентации текста.

По нажатию на кнопку [Show text] выводить текст с назначенными пользователем настройками; учесть, что координаты текста заданы в полях с метками X и Y.

Домашнее задание № 13

Развить функциональность приложения, использовавшегося на занятии 09.

В окне, которое вызывается по кнопке [Another test], завершить разработку кода обработчика нажатия на кнопку [Test formats]: по имеющемуся образцу завершить формирование строки формата и вывести результаты ее использования в функции Format с аргументами, введенными на форме.

Корректно обработать исключительные ситуации, которые могут возникнуть.

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

Допускается добавить на форму новые компоненты. Каждую компоненту снабдить содержательной всплывающей подсказкой.

Домашнее задание № 14

На панели, помещенной в главной форме приложения, нарисовать циферблат часов со стрелками. Предоставить пользователю выбрать один из двух режимов: отображать часы от 1 до 12 либо от 0 до 23. Обеспечить возможность ввода часов, минут и секунд. Устанавливать часовые стрелки в соответствии с введенными значениями.

Домашнее задание № 15

Развить приложение из домашнего задания № 14.

Пользователь должен иметь возможность настроить цвет панели, цвет цифр и линий, а также цвета стрелок часов. Кроме того, пользователь должен иметь возможность выбрать размер и начертание (вид шрифта) цифр на циферблате часов.

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

Допускается установить ограничение на размеры главной формы: не менее 250×250 по ширине и высоте соответственно.

Домашнее задание № 16

Развить приложение из домашнего задания № 14 и 15.

Обеспечить сохранения всех настроек приложения в файл и их восстановление из файла. Для выбора файла использовать стандартные диалоговые окна.

Дать возможность пользователю указать (и отменить это указание), что часы должны отображать системное время компьютера. Это должно происходить динамически: с изменением времени должны меняться и показания часов.

Вариантов реализации динамического отображения времени несколько. В частности, можно воспользоваться компонентой TTimer (вкладка System), а также функцию Time, процедуру DecodeTime и проч.

См., например, дискуссию http://forum.lazarus.freepascal.org/index.php?topic=14007.0

Также могут оказаться полезными для повышения креативности ряд роликов:

http://www.youtube.com/watch?v=tE0fjTDJ9nQ&feature=related

http://www.youtube.com/watch?NR=1&v=lwtcCBUHH-k

http://www.youtube.com/watch?v=Q3BqEpmQZls&feature=relmfu

Домашнее задание № 17

Создать приложение, позволяющее пользователю задать цвет через значения модели RGB (например, тремя числовыми параметрами; приветствуется реализация через компоненты TSlider). Приложение должно определить заданный цвет и сообщить этот цвет пользователю. Приложение должно уметь различать не менее 8 цветов, среди которых обязательно должны встречаться «белый», «черный» и «красный».

Приложение должно хранить историю запросов пользователя и вести файл History.txt, в который записывает все запросы.

Приложение должно подсказывать пользователю о том, за что отвечает каждый вводимый им параметр, а также допустимый диапазон значений параметров (при помощи всплывающих подсказок).

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

Домашнее занятие № 18

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

Приложение должно содержать:

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

2) Поле, куда пользователь вводит число наименований ценных бумаг, которые пользователь рассматривает как объект инвестиций (целое число, меньшее 20).

3) Таблицу, в которой 5 столбцов и число срок, на единицу более чем число наименований ценных бумаг, введенное на предыдущем шаге. Таблица формируется после того, как пользователь ввел предыдущее число. Первая строка таблицы состоит из полей, заполненных следующим образом: «Цена», «Доходность», «Риск», «Количество», «В портфеле».

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

4) Группу из двух радиокнопок, благодаря которым пользователь указывает, является ли он консервативным или агрессивным инвестором.

5) Два поля для вывода.

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

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

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

Подсказка 2. Задача решается жадным алгоритмом: каждый раз необходимо выбирать бумагу с максимальной доходностью/минимальным риском и скупать эту бумагу в максимально большом количестве.

Домашнее задание № 19

Реализовать простейший калькулятор, который состоит из кнопок, обозначающих 1) цифры, 2) открывающую и закрывающую скобки, 3) действия сложения и вычитания 4) знак равенства, а так же двух компонентов, первый из которых отображает вводимые операции («компонент ввода»), а второй — результат этих операций («компонент вывода»).

Нажатие на каждую из кнопок вида 1)–3) приводит к добавлению в компонент ввода соответствующего символа. Нажатие на кнопку вида 4) приводит к появлению в компоненте вывода результата или описания ошибки.

После нажатия кнопки вида 4) любое последующее нажатие кнопок вида 1)-3) приводит к предварительной очистке обеих компонент и добавление соответствующего символа в компоненту ввода.

Изменение компонент ввода и вывода должно осуществляться только путем нажатия кнопок (но не через клавиатуру).

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

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

Приложение должно различать не менее 4 ошибок ввода (например, два подряд идущих знака и появление скобки между числами).

Добавить выпадающее меню, в котором пользователь может выбрать пару операций, с которыми он хочет работать: аддитивную («+» и «-») или мультипликативную («*» и «/»). При выборе обновить соответствующие кнопки. Для мультипликативной пары должна отдельно различаться ошибка деления на 0.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]