Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Порядок выполнения работы. 1. Открыть проект Delphi Structures.




 

1. Открыть проект Delphi Structures.

2. Добавить в управляющее главное меню пункт «Лабораторная работа №1», при выборе которого должно появляться окно модуля «Set» (модуль «Set» с формой добавить в проект).

3. Установить на форму модуля Set компоненты, обеспечивающие ввод исходных данных, управляющую кнопку (класса TButton или TBitBtn) и компоненты для вывода результатов на экране в соответствии с вариантом задания таблицы №1.

4. В обработчике события onClick управляющей кнопки на языке

Object Pascal написать фрагмент программы для реализации алгоритма в соответствии с вариантом задания.

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

5. Составить отчет и защитить работу преподавателю. В отчете обязательно представить блок-схему алгоритма решения задачи.

 

 

Таблица 8.1

№ вар. Текст задачи
  1.   Type Stroka= string[80]; Var s:stroka; Описать функцию Schet(s), подсчитывающую общее кол-во цифр и знаков '+', '-', '*',входящих в строку s. Организовать Windows- приложение в Delphi, в котором исходная строка вводится с клавиатуры с помощью объекта класса TEdit, а результаты обращения к Function Schet вывести в объект класса TLabel.
  2. Type month= 1..12; Описать функцию CountDays (m:month), определяющую количество дней в месяце m (невисокосного типа). Организовать Windows- приложение в Delphi, в котором номер месяца вводить с помощью объекта класса TEdit,а результат обращения к функции CountDays для введенного месяца вывести в объект класса TLabel.  
  3. В языке Паскаль нет стандартной операции, позволяющей узнать, сколько и какие именно элементы входят в некоторое множество. Как реализовать эту операцию другими средствами языка? Пусть имеем описание: Type Lat = set of 'a'.. 'z'; Var А:Lat; Описать: 1)функцию count(А),подсчитывающую количество элементов в множестве А (например: count(['d','q','s']) =3). 2)процедуру print(A),которая выводит на экран в алфавитном порядке все элементы множества А.  
  4. Не используя дополнительных переменных, поменять местами значения переменных- множеств А и В.  
  5. Дан текст из цифр и малых латинских букв, за которым следует точка. Определить, каких букв- гласных(а, е, i, o, u) или согласных больше в этом тексте. Использовать тип множество.  
  6. Описать функцию Digits(n: integer),подсчитывающую количество различных(значащих) цифр в десятичной записи натурального числа n. Организовать Windows- приложение, в котором с помощью объекта класса TEdit ввести натуральное n, обратиться к функции Digits для подсчета количества различных цифр в записи числа и вывести полученный результат в объект на форму.   Рекомендация. Сначала выделить цифры из числа n и записвть их в множество sd.  
  7. Дан текст из малых латинских букв, за которым следует точка. Организовать программу, которая ищет и выводит: 1) первое вхождение каждой буквы в текст, сохраняя их исходный порядок. 2) все буквы, входящие в текст(на выводе все буквы по одному разу, независимо от того, сколько раз они встречаются в тексте.   Рекомендация. В цикле посимвольной обработки текста формируйте множество, в которое войдут все буквы, встречающиеся в этом тексте.  

 

Контрольные вопросы

 

 

1. Что представляет собой структура данных множество?

2.Какие операции допустимы при работе с множествами?

3.Как добавить элемент в множество?

4.Как убрать элемент из множества?

5.Что представляет собой пустое множество?

6.С помощью какой функции можно извлечь порядковый номер элемента в множестве?

 

 

Лабораторная работа № 9
Организация и использование статической библиотеки (Unit) в Delphi. Использование списков выбора

 

 

Цель работы:

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

 

Домашнее задание:

1 Изучить структуру модуля Unit в DELPHI и состав его разделов.

2 Освоить назначение и структуру оператора Uses.

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

Порядок выполнения работы:

1.Организовать статическую библиотеку, обратившись к репозиторию DELPHI(File-New-Unit).

2.Организовать в модуле подпрограммы в соотвктствии с вариантом задания.

3.Организовать вызывающее приложение в DELPHI,в которое подключить откомпилированный модуль-библиотеку.

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

5.Оформить отчет по лабораторной работе и защитить ее преподавателю.

Варианты заданий для выполнения работы:

1. Пусть точки заданы последовательностью координат: x1,y1,x2,y2, …,xn,yn.

C помощью подпрограмм статической библиотеки (Unit) найти:

а) точку с наибольшим значением функции;

б) точку с наименьшим значением функции;

в) поменять найденные точки местами.

Выбор действия в главной программе организовать с помощью списка выбора(ComboBox).

 

2. Пусть а1, …,аn – количество осадков в мм, выпавшее в Москве в течение последних n лет. С помощью подпрограмм статической библиотеки(Unit) вычислить:

а) среднее количество осадков для заданного отрезка времени

(от 1 до n);

б) отклонение от среднего для каждого заданного года;

в) наименьшее и наибольшее из отклонений.

Выбор действия в главной программе организовать с помощью списка выбора(ComboBox).

 

3. Дан двумерныймассив А(2 * N),в котором первая строка- абсциссы точек, вторая- ординаты точек. С помощью подпрограмм статической библиотеки (Unit) проверить:

а) является ли массив упорядоченным по возрастанию значений

абсцисс?

б) является ли массив упорядоченным по убыванию значений ординат?

в) переставить местами две заданные точки.

Выбор действия в главной программе организовать с помощью списка выбора(ComboBox).

 

 

4. Дан двумерный массив с числом строк N и с числом столбцов M.

Седловая точка- это элемент наименьший в своей строке и одновременно наибольший в своем столбце.

C помощью подпрограмм статической библиотеки (Unit) найти:

а) все седловые точки в заданном массиве;

б) седловую точку(ее значение и местоположение) с наибольшим

значением.

Выбор действия в главной программе организовать с помощью списка выбора(ComboBox).

5. Организовать статическую библиотеку (Unit), в подпрограммах которой реализовать простейшие действия над комплексными числами(+,-,*, /).

Обратиться к ее подпрограммам из главной программы

(procedure TForm1.Button1Click), в которой выбор действия организовать динамически, используя компонент класса TCombobox.

Использовать:

Type

Complex=record

re,im:real;

end;

Правила выполнения действий над комплексными числами:

z1=a+i*b; z2=c+i*d;

z1+z2=(a+c)+i*(b+d);

z1-z2=(a-c)+i*(b-d);

z1*z2=(a*c-b*d)+i*(a*d+b*c);

z1/z2=((a*c+b*d)/(c*c+d*d))+i*((b*c-a*d)/(c*c+d*d));

 

6. Система N материальных точек на плоскости задана с помощью действительных чисел:x1,y1,m1,x2,y2,m2,...,xn,yn,mn, где xi,yi-координаты i-той точки, mi- ее масса. С помощью подпрограмм статической библиотеки Unit вычислить:

a) координаты центра масс:

x=(x1*m1+x2*m2+...+xn*mn)/(m1+m2+...+mn);

y=(y1*m1+y2*m2+...+yn*mn)/(m1+m2+...+mn);

б) расстояния от каждой точки до центра масс;

в) наименьшее из расстояний.

Выбор действия в главной программе-- с использованием компонента класса TCombobox.

 

Контрольные вопросы:

1.Какова структура модуля Unit в DELPHI

2.Какова разница при использовании величины,объявленной в разделе Interface или в разделе Implementation.

3 .Есть ли фиксированное место для оператора Uses в программе в DELPHI.

4.Правила организации и использования глобальных величин в DELPHI.

5.Способы передачи параметров в подпрограмму в DELPHI.

 

Лабораторная работа №10
Графические средства в DELPHI

(4 часа)

 

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

 

Домашнее задание:

1.Изучить для графических компонентов классов TForms, TImage, TPaintBox использование канвы(свойство Canvas) и процедур, реализующих отображение графических примитивов на канве.

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

 

Порядок выполнения работы:

1.Программно исследовать область определения заданной функции(см. вариант).

2.C учетом проведенных исследований(точек разрыва) протабулировать функцию на заданном отрезке изменения аргумента от Хначального до Хконечного(Хн и Хк вводить в процессе работы программы).

3. Cохранить полученную таблицу значений функции в текстовом файле(выбор имени файла осуществлять динамически с помощью компонент страницы VCL DIALOGS.

4. Построить график заданной функции:

а) с использованием визуального компонента класса TChart;

б) на канве (свойство Canvas) компонента класса TPaintbox или класса TImage.

5.Продемонстрировать все результаты работы преподавателю.

6.Оформить отчет и защитить лабораторную работу преподавателю.

 

Варианты заданий для выполнения работы:

1. y= (x+3)/(x-2);

2.y=3+2/x+3/(x*x);

3.y=1/(3*x*x+2*x+1);

4. y=1/(x*x+2*x+1);

5. y=1/(x*x+3*x+1);

6. y=x/(3*x*x+2*x+1);

7. y=x/(x*x+2*x+1);

8. y=x/(x*x+3*x+1);

9. y=x/(x*x-2*x+1);

10. y=x/(x*x-3*x+1);

Замечание.

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

 

 

Контрольные вопросы:

1.Расскажите о возможностях компонента класса TImage.

2.Визуальный компонент класса TPaintBox-- его назначение,свойства и методы.

3.Опишите возможности компонента класса TChart.

 


 

Приложение 1
Справка по работе с основным набором визуальных компонентов Delphi, требуемых при выполнении лабораторных работ

 

 

TLabel

 

Компоненты класса TLabel (метки) предназначены для размещения на форме различного рода текстовых надписей. С компонентом может быть связан оконный управляющий элемент, который выбирается при нажатии Alt+Буква, где Буква – выделенная подчеркиванием буква в тексте метки. Такие символы в терминологии Windows называются акселераторами.

 

Свойства компонента:

 

propertyAutoSize: Boolean; Указывает, будет ли метка изменять свои размеры в зависимости от помещенного в ее свойство Caption
propertyFocusControl: TWinControl; Содержит имя оконного компонента, который связан с меткой акселератором.
TTextLayout = (tlTop, tlCenter, tlBottom); propertyLayout: TTextLayout; Определяет выравнивание текста по вертикали относи­тельно границ метки: tlTop –текст располагается вверху; tlCenter – текст центрируется по вертикали; tlBottom – текст располагается внизу.
propertyShowAccelChar: Boolean; Если содержит True, символ & в тексте метки предшест­вует символу-акселератору.
propertyTransparent: Boolean; Определяет прозрачность фона метки. Если False, фон закрашивается собственным цветом Color, в противном случае используется фон родительского компонента.
propertyWordwrap: Boolean; Разрешает/запрещает разрыв строки на границе слова. Для вывода многострочных надписей задайте AuroSize = False, Wordwrap = True и установите подходя­щие размеры метки.

 


 

TEdit

 

Компонент класса TEdit представляет собой однострочный редактор текста. С его помощью можно вводить и/или отображать достаточно длинные текстовые строки.

 

Свойства компонента:

 

propertyAutoSelect: Boolean; Указывает, будет ли выделяться весь текст в момент получения компонентом фокуса ввода.
propertyAutoSize: Boolean; Если True и BorderStyle = bsSingle, высота компо­нента автоматически меняется при изменении свойства Font.Size.
TBorderStyle = bsNone..bsSingle; propertyBorderStyle: TBorderStyle; Определяет стиль обрамления компонента: bsNone - нет обрамления; bsSingle - компонент обрамляется одной линией.
TEditCharCase = (ecNormal, ecUpperCase, ecLowerCase); propertyCharCase: TEditCharCase; Определяет автоматическое преобразование высоты букв: ecNormal –нет преобразования; ecUpperCase - все буквы заглавные; ecLowerCase -все буквы строчные. Правильно работает с кириллицей.
propertyHideSelection: Boolean; Если False, выделение текста сохраняется при потере фокуса ввода.
propertyMaxLength: Integer; Определяет максимальную длину текстовой строки. Если имеет значение 0, длина строки не ограничена.
propertyModified: Boolean; Содержит True, если текст был изменен.
propertyOnChange: TNotifyEvent; Определяет обработчик события OnChange, которое возникает после любого изменения текста.
propertyOEMConvert: Boolean; Содержит True, если необходимо перекодировать текст из кодировки MS-DOS в кодировку Windows и обратно.
propertyPasswordChar: Char; Если символ PasswordChar определен, он заменяет собой любой символ текста при отображении в окне. Используется для ввода паролей.
propertyReadonly: Boolean; Если содержит True, текст не может изменяться.
propertySelLength: Integer; Содержит длину выделенной части текста.
propertySelStart:Integer; Содержит номер первого символа выделенной части текста.
property Text: String; Содержит текст.

 

 

Методы компонента:

 

procedureClear; Удаляет весь текст.
procedureClearSelection; Удаляет выделенный текст.
procedureCopyToClipboard; Копирует выделенный текст в Clipboard.
procedureCutToClipboard; Копирует выделенный текст в Clipboard, после чего удаляет выделенный текст из компонента.
functionGetSelTextBuf(Buffer: PChar; BufSize: Integer): Integer; Копирует не более BufSize символов выделенно­го текст в буфер Buffer.
procedurePasteFromClipboard; Заменяет выделенный текст содержимым Clipboard, а если нет выделенного текста, копи­рует содержимое Clipboard впозицию текстово­го курсора.
procedureSelectAll; Выделяет весь текст.
procedure SetSelTextBuf(Buffer:PChar); Заменяет выделенный текст содержимым Buffer, а если нет выделенного текста, копирует содер­жимое Buffer в позицию текстового курсора.

 

 

TButton

 

Кнопки TButton широко используются для управ­ления программами.

 

Свойства компонента:

 

propertyCancel: Boolean; Если имеет значение True, событие OnClick кнопки возникает при нажатии клавиши Esc.
propertyDefault: Boolean; Если имеет значение True, событие ОпСliсk кнопки возникает при нажатии клавиши Enter.
TModalResult = Low(Integer)..High(Integer); propertyModalResult: TModalResult; Определяет результат, с которым было закрыто модальное окно (см. ниже поясне­ние).

 

В терминологии Windows модальными окнами называются такие специальные окна, которые, раз появившись на экране, блокируют работу пользователя с другими окнами вплоть до своего закрытия. Обычно с их помощью реализуется диалог, требующий от пользова­теля принятия некоторого решения. Для этого в состав модального окна включается несколько кнопок. Если у кнопки определено свой­ство ModalResult, нажатие на нее приводит к закрытию модального окна и возвращает в программу значение ModalResult как результат диалога с пользователем. В Delphi определены следующие стандарт­ные значения ModalResult:

 

 

mrNone   mrOk mrCancel mrAbort mrRetry Модальное окно не закрывается. Была нажата кнопка ОК. Была нажата кнопка Cancel. Была нажата кнопка Abort. Была нажата кнопка Retry. mrIgnore mrYes mrNo mrAll Была нажата кнопка Ignore. Была нажата кнопка Yes. Была нажата кнопка No. Была нажата кнопка Аll.

 

 

TCheckBox

 

Независимый переключатель TCheckBox использу­ется для того, чтобы пользователь мог указать свое решение типа Да/Нет или Да/Нет/Не знаю. Это решение отражается в свойстве State компонента, доступном как для чтения, так и для записи. В составе диалогового окна может быть несколько компонентов TCheckBox. Состояние любого из них не зависит от состояния остальных, поэтому такие переключатели называются независимыми.

Свойства компонента:

 

TLeftRight = (taLeftJustify, taRightJustify); propertyAlignment: TLeftRight; Определяет положение текста: taLeftJustify – с левой стороны компонента; taRightJustify – с правой стороны.
propertyAllowGrayed: Boolean; Разрешает/запрещает использование состоя­ния cbGrayed (He знаю).
propertyChecked: Boolean; Содержит выбор пользователя типа Да/Нет. Состояния cbUnchecked и cbGrayed отража­ются как False.
TCheckBoxState = (cbUnchecked, cbChecked, cbGrayed); propertyState: TCheckBoxState; Содержит состояние компонента: cbUnchecked – нет; cbChecked – да; cbGrayed – не знаю.

 

TRadioButton

 

В отличие от TCheckBox, компоненты TRadioButton представляют собой зависимые переключатели, предназначенные для выбора одного из нескольких взаимоисключающих решений. На форму (точнее, в компонент-контейнер) помещается по меньшей мере два таких компонента. Они могут находиться в одном из двух состояний, определяемом свойством Checked. Если в одном компо­ненте это свойство принимает значение True, во всех других компо­нентах, расположенных в том же контейнере, свойства Checked при­нимают значения False.

Помимо свойства Checked компонент TRadioButton имеет еще одно специфичное свойство – Alignment, аналогичное такому же свойству TCheckBox.

 

 

TMemo

 

Обойтись простым текстовым полем удается не всегда. Если пользователь должен ввести большой объем информации (например полный почтовый адрес или произвольный комментарий), ему может понадобиться несколько строк текста. В таком случае следует использовать компонент ТМеmо.

При вводе текста для перехода на новую строку (к новому абзацу) обычно исполь­зуется клавиша ENTER. Однако в диалоговых окнах Windows эта клавиша часто применяется для завершения ввода. Способ использования клавиши ENTERопреде­ляется значением свойства WantReturns. Если оно имеет значение true, то клавиша ENTERпозволяет переходить к новой строке внутри текстовой области, в противном случае она служит для завершения ввода и перехода к следующему элементу управле­ния, а для перехода к новой строке применяется комбинация клавиш CTRL+ENTER.

Главное свойство данного компонента – Lines (Строки), имеющее тип TStrings. В нем хранится список строк, введенных пользователем. Эти строки можно обрабатывать всеми методами, доступными в классе TStrings, например сохранять в файле:

Memo1.Lines.SaveToFile('С:\Memo.TXT');

 

Наличие у текстовой области полос прокрутки задается в свойстве ScrollBars.

 

Значение Вид текстовой области
ssNone Полосы прокрутки отсутствуют
ssHorizontal Имеется горизонтальная полоса прокрутки
ssVertical Имеется вертикальная полоса прокрутки
ssBoth Имеются две полосы прокрутки

 

Если включена горизонтальная полоса прокрутки, значение свойства WordWrap игно­рируется. Это свойство определяет, будет ли выполняться автоматический перенос слов на новую строку при достижении правой границы области (при этом никаких символов новой строки в текст не добавляется – перенос отображается только на экране).

При выделении фрагмента текста в текстовой области в свойство SelStart записывается позиция первого выделенного символа, а в свойство SelLength – число выделяемых символов. Выделенный текст доступен через свойство S elText (тип string).

Для выделения всего текста применяется метод SelectAll, для удаления выделенного текста – метод ClearSelection.

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

Группа методов предназначена для работы с буфером обмена Windows. Для копирования выделенного текста в буфер обмена применяется метод CopyToClipboard, для вырезания текста – метод CutToClipboard, для вставки текста из буфера – метод PasteFromClipboard.

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

TListBox

 

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

Свойство Items имеет тип TStrings и содержит список строк, выводимых на экран. Во время разработки программист может редактировать свойство Items с помощью редакто­ра списка строк (String List editor). Во время выполнения элементы списка можно добав­лять с помощью метода Add () класса TStrings, а удалять – с помощью метода De­lete () этого же класса. Свойство ItemIndex содержит порядковый номер выделенного элемента, для первого элемента значение ItemIndex равно 0. Если ни один элемент не вы­делен, то значение ItemIndex равно – 1. Свойство MultiSelect определяет, может ли пользо­ватель выделить более одного элемента списка. Если значение MultiSelect равно True, то свойство ItemIndex является индексом выделенного элемента, имеющего фокус. По умолчанию ItemIndex имеет значение 0. Свойство SelCount содержит количество выде­ленных элементов, а свойство Selected определяет, выделен ли конкретный элемент. Свойство Sorted определяет, будут ли элементы выведены в алфавитном порядке. Свой­ство Style задает внешний вид элементов. По умолчанию элементы выводятся в виде строк, однако, изменив свойство Style, их можно вывести в графическом виде или с раз­ной высотой. Ниже приведен код, иллюстрирующий использование списка.

 

TComboBox

 

Компонент поле со списком (TComboBox) объединяет возможности поля ввода и про­кручиваемого раскрывающегося списка. Пользователь может или выбрать элемент списка или ввести его непосредственно в поле ввода. Поэтому поле со списком обладает многими свойствами и методами, входящими в рассмотренные раньше компоненты TEdit и TListBox. В поле со списком свойство Style определяет внешний вид списка и наличие поля ввода

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

 

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...