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

Учебное пособие 1958

.pdf
Скачиваний:
4
Добавлен:
30.04.2022
Размер:
3.16 Mб
Скачать

-в режиме редактирования осуществить щелчок по пункту «Выход»;

-в открывшейся процедуре набрать Form1.Close.

Привязка пункта меню к вызову соответствующей фор-

мы:

-создать новую форму (кнопка NewForm, 4-я слева на панели инструментов);

-вызвать список модулей кнопкой ViewUnit (1-я слева) и выбрать в списке unit1, в тексте процедуры найти слово implementation, для доступа к модулю unit2 ниже этого слова набрать uses unit2;

-переключиться на главную форму (F12);

-щелкнуть по привязываемому пункту меню и в открывшейся процедуре ввести: имя формы. ShowModal; (например: Form2.ShowModal;);

-проверить вызов формы при выборе пункта меню (кнопка Запуск на панели инструментов или F9).

1.6.Описание основных стандартных процедур и функций

диалога

Процедура ShowMessage(const Msg: String);

Процедура используется для вывода панели сообщений с кнопкой Ok. Параметр Msg содержит текст сообщения. Например:

ShowMessage(‘Это простое окно диалога’);

Функция MessageDlg (const Msg: String; AType: TMsgDlgType; AButtons: TMsgDlgButtons; HelpCtx: Longint): Word;

Функция отображает окно сообщений в центре экрана и получает ответ пользователя. Параметры:

Msg – текст сообщения;

9

AType – тип окна, принимающий одно из значений mtWarning – окно предупреждения с заголовком Warning,

содержащее черный восклицательный знак в желтом треугольнике,

mtError – окно ошибки с заголовком Error, содержащее белый крест в красном круге,

mtInformation – информационное окно с заголовком Information, содержащее синюю букву I в белом круге,

mtConfirmation – информационное окно с заголовком Confirmation, содержащее синий вопросительный знак в белом круге,

mtCustom – окно с заголовком названия приложения, не содержащее картинку.

AButtons – задает набор кнопок окна: mbYes – кнопка с надписью Yes, mbNo – кнопка с надписью No, mbOK – кнопка с надписью OK, mbCancel – кнопка с надписью Cancel, mbHelp – кнопка с надписью Help, mbAbort – кнопка с надписью Abort, mbRetry – кнопка с надписью Retry, mbIgnore – кнопка с надписью Ignore, mbAll – кнопка с надписью All.

Так как кнопок может быть несколько, то можно задавать наборы кнопок. Для некоторых наборов созданы константы

mbYesNoCancel=[mbYes, mbNo, mbCancel] mbOKCancel=[mbOK, mbCancel].

При нажатии на любую кнопку, кроме Help, диалог закрывается, и функция MessageDlg возвращает ModalResult, соответствующий нажатой кнопке.

HelpCtx – задает тему справки при нажатии на F1. Обычно это 0.

Пример. MessageDlg(‘Ошибка, числа не введены ', mtError, [mbOK],0);

10

2. ЗАДАНИЕ № 1. ПРОГРАММИРОВАНИЕ ЛИНЕЙНОЙ ФУНКЦИИ

При реализации задания № 1 необходимо выполнить следующее.

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

2.Задать заголовок формы (Caption) – Реализация вычислительных программ, фамилия студента и инициалы.

3.Задать: цвет формы; расположение окна формы по центру экрана.

4.Можно создать надпись по центру формы, указав фамилию, имя, отчество студента, шифр группы, номер зачетки, номера вариантов заданий.

5.Создать меню:

Вычисления, Графики, Массивы, Выход.

Меню Вычисления имеет выпадающее меню:

Линейная функция; Разветвляющаяся функция.

Меню Массивы имеет выпадающее меню:

Одномерный массив; Матрица.

Примерный вид главного окна представлен на рис.2.

Рис. 2. Главное окно с меню

11

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

7.Реализовать на второй форме вычисление линейной функции. Варианты заданий приведены в табл. 1.

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

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

свойства Caption задать текст надписи «Реализация линейных вычислений»;

значения false свойства AutoSize запретить автоматическую коррекцию размера надписи по размеру текста надписи;

значения taCenter свойства Alignment выровнять надпись по центру формы;

значения true свойства WordWrap установить автоматический перенос слов надписи на другую строку, если весь текст не помещается в отведенный размер;

свойства Font изменить цвет и размер шрифта.

Создать строки для ввода и редактирования данных с помощью компонента Edit. Инициализировать значения компонентов Edit пробелами (Text – пробелы).

Компоненты снабдить пояснительными надписями (компоненты Label).

Возможный вид пользовательского интерфейса представлен на рис.3.

12

Рис.3. Интерфейс для вычисления линейной функции

Дополнительные общие требования к программе.

1.Обеспечить перевод курсора из первого поля ввода в

следующее поле ввода при нажатии клавиши Enter.

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

3.Если поля ввода пусты, то сообщить об этом (использовать функцию MessageDlg(‘Ошибка, данные не введены ’, mtError, [mbOK],0);)). Данная функция выводит сообщение и кнопку ОК.

4.Осуществить форматированный вывод результата.

5.Поместить на форму кнопку и назвать ее «Выход», задав это значение свойству Caption. Создать процедуру обработки нажатия кнопки мыши на созданной кнопке «Выход». Обеспечить закрытие второй формы.

6.Связать с кнопкой «Очистить» очистку полей ввода исходных данных и вывода результата.

13

Пример программы, которая может быть связана со щелчком по кнопке «Вычислить», приведен ниже. Данная программа проверяет, введены ли данные в два поля ввода и если – да, то преобразует данные из строк в числа, вычисляет функцию y и выводит результат. Если данные не введены, то выдается сообщение об ошибке.

var a, b, x, y : real; begin

If (edit1.Text <> '') and (edit2.Text <> '') then begin

a := strtofloat(edit1.Text); x := strtofloat(edit2.Text); b := a+x;

y := cos(b*b)/abs(b)+sin(b)*b; edit3.Text := floatToStrF(y,ffFixed,6,2); end

else

MessageDlg(‘Ошибка, числа не введены ', mtError, [mbOK],0); end;

Таблица 1 Варианты для реализации линейных вычислений

Номер

Математическое выражение

Варианта

 

1y cos(x a)2 x a sin(x a) (x a)

2y (x z)4 ln x z cos(x)2

3

y x

a d

sin(d x)2

cos2 (d x)

4y cos(x p) ln x p sin(p x)

5y (x a)2 ln x a (x a)3

14

 

 

 

 

 

 

 

 

 

 

Продолжение табл. 1

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y (x2 b)

 

x2 c

 

 

 

 

x2 c

 

 

sin(x2 b)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7y x p (x a) x a (x p)

8y (x4 (x q) q2 cos(x q)) x q

9y (ex c ) ln x c (x c)2 sin2 (x c)

10y ln x2 b x2 b eb x

11y (x a) (x a) ex a (x a) ln x a

12y (x z)x z sin(x z) ln(x z)

13y (p (p a) (p b) ln |p a |) (p b)

14y ((x b)2 sin2 (x b))/ex b

15y (x a)(x a) sin2 (x a) cos(x a)2

16y (cos(a x) |sin(a x)|(a x) eax

17y ln | x b|/(x b) (x b)/ex b

18y sin(x c2 8)(x c2 8) ln | x c2 8|

19y (x b)2 /| x b| 1 ln | x b|

20y (x a)2 ln2 | x a | (x a)/ex a

21y ((x2 c) sin(x2 c))ln x2 c

22

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y tg(x

2

a

2

)

| x

2

a

2

| sin(x

2

a

2

)

 

 

 

 

 

 

 

23y (sin(x d) cos(x d))/ex d ln x d

24y (a x)(1 (a x)2 ) |sin(a x)|(a x)2

25y | x a | (x a) ln | x a | (x a) ex a

15

Окончание табл. 1

26y (x a b)sin(x a b) |cos3(x a b)|

27p x2 ln x z (x z)x2

28y (t2 x) sin(t x) cos(t2 x) tg(t x)

29y (x2 x c) (x b) x2 x c ctg(x b)

30y sin2 (a) cos(a x) (1 ea x ) a(a x)

3. ЗАДАНИЕ № 2. ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩЕЙСЯ ФУНКЦИИ

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

Возможный вид пользовательского интерфейса представлен на рис. 4.

16

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

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

var

a, x, b, c, y : real; begin

If (edit1.Text <> '') and (edit2.Text <> '') and (edit3.Text <> '') and

(edit4.Text <> '') then

 

begin

 

a := StrToFloat(edit1.Text);

x := StrToFloat(edit2.Text);

b := StrToFloat(edit3.Text);

c := StrToFloat(edit4.Text);

17

 

if x <= 10 then y := a+x*x- exp(-a*x) else y := b-x+c*x*x*x;

edit5.Text := FloatToStrF(y,ffFixed,6,2); end

else

MessageDlg('Ошибка, числа не введены ', mtError, [mbOK],0); end;

Варианты заданий приведены в табл. 2.

Таблица 2 Варианты для реализации разветвляющихся вычислений

Номер

 

 

 

 

 

 

 

 

 

 

Функция

Варианта

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

2

 

ax

 

 

y a x

e

; еслиx 10;

 

 

 

 

 

 

 

b x c x3;еслиx 10.

2

 

 

 

 

 

 

 

3

 

 

 

y a x

b x

;

еслиx 13.4;

 

 

 

 

 

eax 1.3;еслиx 13.4.

3

x ln(a x); еслиx 7.3;

 

y

x3

 

ebx ;еслиx 7.3.

 

 

 

4

b asin(b x); еслиx 12;

 

y

 

 

x bx ;еслиx 12.

 

 

 

 

5

 

 

x2/3; еслиx 4.3;

 

y

 

 

 

 

 

 

 

 

 

 

 

a x2

b;еслиx 4.3.

 

 

6

 

x

3

1; еслиx 0.1;

 

y

 

 

cos( x3 );еслиx 0.1.

7

 

 

sin x2 x3; еслиx 1;

 

y

 

 

 

 

 

 

 

 

 

 

 

a x b ln(1 x);еслиx 1.

 

 

 

 

 

 

 

 

18