Методические указания по лабораторным работам по ПП. Создание и сохранение проектов, форм, модулей
Скачать 1.04 Mb.
|
Тема: Работа со строковыми данными Цель: закрепить теоретические знания и получить практические навыки по работе со строковыми данными. Студент должен: знать: - язык Delphi; - свойства формы; - состав проекта Delphi; - компоненты Delphi; - среду Delphi; - объект Delphi – CheckBox; уметь: - писать программы на языке Паскаль; - изменять свойства компонент и формы; - прописывать код в оболочке Delphi; - использовать функции преобразования типов данных; - работать с компонентом CheckBox. Литература: Шумаков П.В. Delphi 7: руководство разработчика / П.В. Шумаков. - М.: Нолидж, 2011 Бобровский С. Delphi 7: учебный курс / С. Бобровский. - М.: Питер, 2010 Фленов М. Библия Delphi / М. Фленов. – СПб: БХВ-Петербург, 2012 Хомоненко А. Delphi 7 / А. Хоменко. - СПб: БХВ-Петербург, 2011 Подготовка к работе: повторить лекционный материал Задание: Создайте приложение, предлагающее пользователю ввести строку текста, а затем заменяющее символы в тексте и подсчитывающее количество замененных символов. Вариант замены символов должен определяться по положению соответствующего флажка CheckBox (см. рисунок 1). Рисунок 1 – Вид окна приложения, выполняющего замену символов в тексте Порядок выполнения: 1. Создайте форму, для свойства Caption задайте значение «Подсчет и замена символов». 2. На форме поместите компоненты: Edit1, Edit2, Edit3, CheckBox1, CheckBox2, СпескВохЗ, Label1, Label2, Label3, Button1. 3. Задайте значения свойств Label1.Caption — «Исходный текст на русском языке», Label2.Caption — «Измененный текст», Label3.Caption — «Число замен», CheckBox1.Caption — «Подсчитать число замен», CheckBox2.Caption — «Заменить "а" на "б"», CheckВохЗ. Caption — «Заменить пробелы на тире», Button1.Caption — «Выполнить». 4. Удалите текст Edit1, Edit2, Edit3 из соответствующих компонентов. 5. Выровняйте компоненты на форме, как показано на рисунке 1. 6. Замену символов в тексте и подсчет количества замененных символов опишите в процедуре обработчика события щелчка мышью на кнопке Button1. Для создания процедуры обработчика события выберите в окне Инспектора объектов объект Button1, затем на странице События произведите двойной щелчок на пустом поле списка в событии OnClick. После этого в окне Редактора кода в заготовку процедуры обработчика события procedureTForm1.Button1Click(Sender:TObject) введите следующее описание переменных: S : string; {строка текста} N : byte; {количество замен символов} Если флажок CheckBox1 установлен, то свойство CheckBox1.Checked приобретает значение True. С учетом вышесказанного тело процедуры может быть записано следующим образом: N:=0; Edit3.Text := ' '; Edit2.Text := ' '; S:=Edit1.Text; {присвоить S значение текстовой строки} if CheckBox2.Checked then {если включен флажок CheckBox2} while Pos('a', S) > 0 do {если в строке найдена буква а} begin N:=N+1; S[Pos('a', S)] := 'б'; {заменить букву а буквой б} end; if CheckBox3.Checked then while Pos( ' ', S) > 0 do {если в строке найден пробел} begin N:=N+1; S[Pos( ' ', S)] := '-' ; end; if CheckBox1.Checked then Edit3.Text := IntToStr(N); {вывод числа замен символов} Edit2.Text:=S; {вывод измененного текста} end; 7. Сохраните файлы проекта и программного модуля, откомпилируйте и запустите программу на выполнение. 8. Проверьте работу приложения, задавая различный текст на русском языке с разным количеством букв «а» и пробелов. 9. Проверьте правильность вывода результатов работы и закройте окно приложения. 10. На этой же форме добавьте кнопку, определяющую количество символов в исходной строке и выводящее результат, согласуя окончание слова «символов» с числом символов, например, «В тексте 1 символ», «В тексте 32 символа», «В тексте 47 символов». Контрольные вопросы и задания: 1. Элементы интерфейса среды Delphi. 2. Основные файлы проекта. 3. Основные компоненты Delphi. 5. Компонент CheckBox. 6. Функция преобразования типов данных. Лабораторная работа № 11 Тема: Вычисления в таблице - проект «Расчет средней температуры» Цель: закрепить теоретические знания и получить практические навыки по работе с таблицами. Студент должен: знать: - язык Delphi; - свойства формы; - состав проекта Delphi; - компоненты Delphi; - среду Delphi; - объект Delphi – StringGrid; уметь: - писать программы на языке Паскаль; - изменять свойства компонент и формы; - прописывать код в оболочке Delphi; - вводить данные в таблицу; - заполнять таблицу с помощью метода случайных чисел; - обрабатывать данные в таблице. Литература: Шумаков П.В. Delphi 7: руководство разработчика / П.В. Шумаков. - М.: Нолидж, 2011 Бобровский С. Delphi 7: учебный курс / С. Бобровский. - М.: Питер, 2010 Фленов М. Библия Delphi / М. Фленов. – СПб: БХВ-Петербург, 2012 Хомоненко А. Delphi 7 / А. Хоменко. - СПб: БХВ-Петербург, 2011 Подготовка к работе: повторить лекционный материал Задание: 1. Программа вводит в таблицу фактическую дневную температуру за 30 дней, начиная с первого числа месяца. 2. Вычисляет и выводит среднюю дневную температуру за прошедший период месяца и отклонения фактической температуры по дням от средней дневной температуры. Порядок выполнения: 1. Установите на форму компонент StringGrid. 2. Зафиксируйте у StringGrid верхнюю строку, в которой перечислите дни: от 1 до 30. 3. В следующей строке вводится температура 4. Температура вводится двумя способами: - с помощью функции Randomize. Значения брать от -10 до 15. - ввод температуры вручную. В этом случае ввод температур осуществляется с контролем на пустую ячейку, отсутствующее значение вводится отдельно. Предусмотреть ввод только числовых данных от -10 до 15. 5. В третьей строке вычисляется и выводится отклонение фактической температуры от средней температуры. 6. Для вычисления средней температуры установите кнопку «Вычислить». 7. Среднюю температуру выдавайте в подписанную метку. 8. Поставьте на форме еще одну метку и выдавайте в нее количество дней с отрицательной температурой из самой длинной последовательности таких дней. 8. В заголовке форму подпишите название программы и кто выполнил. Контрольные вопросы и задания: 1. Элементы интерфейса среды Delphi. 2. Основные файлы проекта. 3. Основные компоненты Delphi. 5. Компонент StringGrid. 6. Заполнение таблицы вручную и методом случайных чисел. 7. Подсчет среднего значения элементов в таблице. 8. Процедуры обработки события KeyPress. Лабораторная работа № 12 Тема: Обработка таблиц - проект «Олимпиада». Цель: закрепить теоретические знания и получить практические навыки по обработке таблиц. Студент должен: знать: - язык Delphi; - свойства формы; - состав проекта Delphi; - компоненты Delphi; - среду Delphi; - объект Delphi – StringGrid; уметь: - писать программы на языке Паскаль; - изменять свойства компонент и формы; - прописывать код в оболочке Delphi; - заполнять таблицу с помощью метода случайных чисел; - обрабатывать данные в таблице; - сортировать строки в таблице. Литература: Шумаков П.В. Delphi 7: руководство разработчика / П.В. Шумаков. - М.: Нолидж, 2011 Бобровский С. Delphi 7: учебный курс / С. Бобровский. - М.: Питер, 2010 Фленов М. Библия Delphi / М. Фленов. – СПб: БХВ-Петербург, 2012 Хомоненко А. Delphi 7 / А. Хоменко. - СПб: БХВ-Петербург, 2011 Подготовка к работе: повторить лекционный материал Задание: Программа должна вычислить общее количество медалей, завоеванных представителями каждой страны, и соответствующее количество очков (баллов). Затем, используя метод простого выбора, программа выполняет сортировку таблицы по убыванию количества набранных очков. Порядок выполнения: Создать исходную таблицу количеством 5 строк. Заполнить ее методом случайных чисел с диапазоном от 0 до 30 Нажав на кнопку «Итог» заполнить столбцы «Общее количество медалей» и «Количество очков» по приведенной ниже формуле и отсортировать таблицу с порядком построения от большего к меньшему по количеству очков (см. таблицу 1). Таблица 1 - Исходная таблица количества медалей
Количество очков k, завоёванных страной считается по формуле: k = 7 * kz + 5 * ks + 3 * kb, где: kz – количество золотых медалей, ks – количество серебряных медалей, kb – количество бронзовых медалей. Исходную таблицу формировать во время активизации формы приложения. Для сортировки воспользуйтесь следующим кодом и разберитесь в нем: procedure TForm1.Button1Click(Sender: TObject); var c,r : integer; // номер колонки и строки таблицы s : integer; // всего медалей у команды p : integer; // очков у команды m : integer; // номер строки с максимальным количеством очков buf : array [0..5] of string; // буфер для обмена строк i : integer; // номер строки. Используется во время сортировки begin for r := 1 to tab1.rowcount do // обработать все строки begin s := 0; // вычисляем общее кол-во медалей . . . самостоятельно // вычисляем количество очков . . . самостоятельно // вывод результата . . . Самостоятельно // выводим всего медалей . . . Самостоятельно // выводим всего очков . . . Самостоятельно // сортировка таблицы по убыванию в соответствии с количеством баллов (по содержимому 5-го столбца) методом выбора for r := 1 to tab1.rowcount-1 do begin m := r; // максимальный элемент — в r-й строке for i := r to tab1.rowcount-1 do if StrToInt (tab1.cells [5,i]) > StrToInt (tab1.cells[5,m]) then m := i; if r <> m then begin // обменяем г-ю и m-ю строки таблицы for c := 0 to 5 do begin buf[c] := tab1.Cells[c,r]; tab1.Cells[c,r] := tab1.Cells[c,m]; tab1.Cells[c,m] := buf[c]; end; Необходимое количество end добавить, где нужно самостоятельно. Самостоятельно: 1 Добавить еще 2 страны. 2 Сделать сортировку в обратном порядке. 3 Вывести ниже в метки страны занявшие первое и последнее место. Контрольные вопросы и задания: 1. Элементы интерфейса среды Delphi. 2. Основные файлы проекта. 3. Основные компоненты Delphi. 4. Для чего нужны элемент “StringGrid”? 5. Как использовать выше упомянутый элемент? 6. Какими элементами можно заменить “StringGrid”? Лабораторная работа № 13 Тема: Элементы пользовательского интерфейса Цель: закрепить теоретические знания и получить практические навыки проектирования интерфейса приложения, получить навыки использования стандартных диалоговых окон и буфера обмена. Студент должен: знать: - язык Delphi; - свойства формы; - состав проекта Delphi; - среду Delphi; - компоненты Delphi - RichEdit многострочный редактор, SpinEditor окно редактирования со счетчиком, ImageList, компоненты стандартных диалогов; уметь: - писать программы на языке Паскаль; - изменять свойства компонент и формы; - прописывать код в оболочке Delphi; - работать с многострочным редактором для работы с форматированным текстом в формате RTF; - работать с раскрывающимся списком с образцами цвета; - работать с окном редактирования со счетчиком для задания и показа значения; - работать с набором пиктограмм, хранящихся на диске; - работать с компонентами стандартных диалогов. Литература: Шумаков П.В. Delphi 7: руководство разработчика / П.В. Шумаков. - М.: Нолидж, 2011 Бобровский С. Delphi 7: учебный курс / С. Бобровский. - М.: Питер, 2010 Фленов М. Библия Delphi / М. Фленов. – СПб: БХВ-Петербург, 2012 Хомоненко А. Delphi 7 / А. Хоменко. - СПб: БХВ-Петербург, 2011 Подготовка к работе: повторить лекционный материал Задание: Разработать приложение, реализующее основные функции текстового редактора: - форматирование шрифта для выделенного контекста; - копирование и перемещение выделенного контекста; - выравнивание абзацев; - поиск и замена в тексте; - открытие и сохранение текстового файла. Все функции приложения должны быть доступны через главное меню и панель инструментов. Порядок выполнения: Создать новый проект и сохранить его под именем MainEditor. Создать на форме меню: - установить на форме компонент MainMenu (Standard); - присвоить ему имя mmMain. Каждому пункту меню задать информативное имя:
Создать панель инструментов: - расположить на форме компонент ToolBar (Win32), присвоить имя tlbMain, для свойства EdgeBorders добавить значение ebBotton True; - щелкнуть на созданной панели правой кнопкой мыши и выполнить NewButton, установить кнопке следующие свойства: Hint - создать файл MenuItem - miNewFile Name - btnNewFile ShowHint - True - аналогичным образом создать еще кнопки и изменить им свойства: Открыть, Сохранить, Копировать, Вырезать, Вставить, Найти, Заменить; - для добавления изображений командам и кнопкам добавить на форму компонент ImageList (Win32); - дважды щелкнуть по компоненту, появится редактор, щелкните по кнопке Add и указать размещение требуемых графических файлов Program Files\Common Files\Borland Shared\Images\Buttons, добавить соответствующий файл, в момент добавления на экране появится запрос о разбиении одной пиктограммы на две, ответьте утвердительно. Связать набор пиктограмм с панелью инструментов и основным меню: для компонентов mmMain и tlbMain для свойства Images из списка выбрать ImageList1. Изменить значения свойства ImageIndex для соответствующих пунктов меню и кнопок панели инструментов. Добавить на панель инструментов компонент ColorBox (Additional) для выбора цвета шрифта, изменить значения свойств: Name cobFontColor, Selected clBlack, Style cbExtendedColors False cbSystemColors False Добавить на панель инструментов компонент SpinEditor (Samples) для ввода размеров шрифта, изменить значения свойств: Name - sdFontSize, MaxValue - 70, MinValue - 80. Добавить на панель инструментов три компонента CheckBox (Standard) для изменения начертания шрифта, изменить значения свойств для каждого: Name chBold, chItalic, chUnderLine Caption Ж К Ч На форме установить компонент RichEdit (Win32), изменить значения свойств для этого объекта: Name - Document, ScrollBars - ssBoth. Для объекта sdFontSize выбрать событие OnChange и ввести следующий код: document.Font.Size := sdFontSize.Value ; Для объекта chBold выберите событие OnClick и ввести следующий код: if chBold.Checked Then document.Font.Style := document.Font.Style + [fsBold] Else document.Font.Style := document.Font.Style - [fsBold]; Сохранить проект и проверить его работу: - ввести произвольный текст; - изменить размер шрифта и начертание Полужирный. Самостоятельно ввести код для объектов chItalic и chUnderline (использовать константы fsItalic, fsUnderline), проверить работу приложения. Для объекта cobFontColor выбрать событие OnChange и ввести следующий код: document.font.Color := cobFontColor.Selected ; Сохранить и проверить работу программы. Для пункта меню и кнопки панели инструментов Вырезать ввести код: document.CutToClipboard ; Для пункта меню и кнопки панели инструментов Копировать ввести код: document.CopyToClipboard ; Для пункта меню и кнопки панели инструментов Вставить ввести код: document.PasteFromClipboard ; В пункт меню Правка добавить подпункт Выделить все и ввести для него следующий код: document.SelectAll ; Проверить работу приложения. Для того чтобы форматировать только выделенный фрагмент текста, внести изменения в код для объекта chBold If chBold.Checked Then document.SelAttributes.Style := document.SelAttributes.Style + [fsBold] Else document.SelAttributes.Style := document.SelAttributes.Style - [fsBold]; Проверить работу приложения и внести соответствующие изменения для других элементов форматирования. Добавить на панель инструментов комбинированный список, задать ему имя cbFontName, для свойства Items ввести несколько значений, например: Times New Roman Courier New Garamond Arial Comic Sans MS Самостоятельно написать код, позволяющий изменять тип шрифта выделенного фрагмента. Для выравнивания абзацев добавить на панель инструментов еще три кнопки, задать им имена btnLeft, btnCenter, btnRight и соответствующее изображение и ввести код в соответствии с назначением: document.Paragraph.Alignment := TaLeftJustify; document.Paragraph.Alignment := TaRightJustify; document.Paragraph.Alignment := TaCenter; Проверить работу приложения. Для форматирования абзацев маркированным списком добавить на панель инструментов еще одну кнопку, задать имя btnSpisok, изменить изображение и ввести для нее код: document.Paragraph.Numbering := nsBullet; Проверьте работу приложения. Самостоятельно изменить работу приложения, чтобы была возможность отменять маркированный список при повторном щелчке. Добавить на форму компонент FontDialog (Dialogs)., присвоить имя fontD_1. Для пункта меню Формат/Шрифт ввести следующий код: If fontd_1.Execute Then Begin Document.SelAttributes.Name := FONTd_1.Font.Name ; Document.SelAttributes.Size := FONTd_1.Font.Size ; End; Самостоятельно дополнить код, чтобы все выбранные атрибуты шрифта были применены к выделенному тексту. Добавить на форму компонент ColorDialog (Dialogs), присвоить имя ColorD_1. Добавить в пункт меню Формат подпункт Цвет. Самостоятельно ввести код для изменения цвета шрифта выделенного текста. Проверить работу приложения. Добавить компоненты FindDialog и ReplaceDialog, изменить имена fd_1 и rd_1 соответственно. Для пункта меню Правка/Найти ввести код: If fd_1.Execute Then Begin End; Для объекта Fd_1 выбрать событие OnFind и ввести код: FinStr := fd_1.FindText ; K := pos (FinStr,document.Text ); If k<>0 Then Begin document.SelStart := k -1; //начало выделения текста document.SelLength := length(finstr); //выделение текста document.SetFocus; End Else ShowMessage (‘Текст не найден’); Для пункта меню Правка/Заменить ввести код: If rd_1.Execute Then Begin End; Для объекта rd_1 выбрать событие OnReplace и ввести код: FinStr := rd_1.FindText ; K := pos(FinStr,document.Text ); If k <> 0 Then Begin document.SelStart := k -1 document.SelLength := length(finstr); document.SelText := rd_1.replaceText;. // замена End Else ShowMessage ('Текст не найден’); Добавить на форму компонент SaveDialog (Dialogs), присвоить имя sd_1, а свойству Filter значение - Документ|*.Txt. Самостоятельно ввести программу для сохранения содержимого текстового окна в файл. Добавить на форму компонент OpenDialog (Dialogs), присвоить имя od_1, а свойству Filter значение - Документ|*.Txt. Самостоятельно ввести программу для открытия файла и вывода его содержимого в текстовое окно. Проверить работу приложения. Задания для самостоятельного выполнения Доработать созданное приложение для реализации новых функций. Задание №1 При изменении размера окна должен меняться размер текстового окна; Добавить в меню пункт, который позволяет вставлять в позицию курсора текущую дату и время; Изменить программный код для кнопок панели инструментов для того, чтобы форматирование (размер, цвет, начертание, тип шрифта) применялось только к выделенному фрагменту. Задание №2 Если фрагмент текста не выделен, режимы Вырезать и Копировать должны быть не доступны (в меню и на панели инструментов); Если не был выбран режим Вырезать и Копировать нет доступа к режиму Вставить; Задание №3 Разработать программный код для пункта Файл/ Новый. При выборе этого пункта текстовое окно очищается, если его содержимое было сохранено. Если сохранение не выполнялось, вывести запрос о подтверждении действия. Пример диалогового окна для выбора дальнейших действий if messagedlg('Уверены? ',mtconfirmation, [mbyes,mbno], 0) = mryes then … else …; Задание №4 После сохранения отобразить имя файла в заголовке формы; Реализовать режим печати текста на принтере; Предусмотреть перехват ошибок при обращении к принтеру. Контрольные вопросы и задания: 1. Элементы интерфейса среды Delphi. 2. Основные файлы проекта. 3. Основные компоненты Delphi. 5. Компонент ListBox. 6. Использование многострочного редактора. 7. Окном редактирования со счетчиком. 8. Компонентами стандартных диалогов. 9. Операции для работы с текстовыми файлами. Лабораторная работа № 14 |