Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Posobie_po_Delphi_2008.doc
Скачиваний:
92
Добавлен:
06.06.2015
Размер:
3 Мб
Скачать
☆

Компонент Memo

TMemo ― иная форма компонента TEdit. Memo находится на вкладке Standard. Подразумевает работу с большими текстами и может выполнять основные функции редактора (ввод и редактирование текста). Memo имеет ограничения на объем текста в 32Кб, это составляет 10-20 страниц.

Главные свойства компонента Memo

Свойство

Назначение

Name

Имя компонента

Text

Текст, находящийся в поле Memo. Рассматривается как единое целое

Lines

Текст, находящийся в поле Memo. Рассматривается как совокупность строк. Доступ к строке осуществляется по номеру

Lines.Count

Количество строк в поле Memo

Например, присвоить переменной ST весь текст, находящийся в компоненте Memo можно так:

ST:=Memo1.Text;

Добавить строку:

Memo1.Lines.Add(Еще одна строка);

Переменной можно присвоить содержимое одной строки:

Stroke:=Memo1.Lines[i];

Практика

Задача

Составить программу для вычисления таблиц значений квадратов, кубов, квадратных и кубических корней, n, /(4n2),1/n.

Компоненты

Имя

компонента

Свойства

компонента

Значение

Назначение

Form1

Caption

Квадраты, кубы, кв. и куб. корни, пи*n, пи/4*(n в кв.), 1/n

Заголовок формы

Label1

Caption

Программа вычисляет по вашему желанию таблицы значений в заданном интервале натуральных чисел n

Справочная информация для пользователя программы

Label2

Caption

Задайте интервал значений натурального числа n

Подсказка пользователю

Label3

Caption

Поле для вывода результатов

Edit1

Text

Поле для ввода начального значения n

Edit2

Text

Поле для ввода

конечного значения n

ComboBox1

Text

Items

Выберите нужное математическое выражение

Квадраты

Кубы

Квадратные корни

Кубические корни

Пи*n

Пи/[4*(n в кв.)]

1/n

Текст в заголовке списка

Значения строк в списке

Button1

Caption

Вычислить

Кнопка для вычисления

Button2

Caption

Выход

Кнопка закрытия формы и выхода из программы

Переменные

Обозначение в программе

Содержание

Тип

n

Текущее значение числа

Целый

n1

Начальное значение интервала натуральных чисел

Целый

n2

Конечное значение интервала натуральных чисел

Целый

Проект формы

Текст модуля

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics,

Controls, Forms, Dialogs, StdCtrls, Math;

// обязательно к стандартному списку подключить библиотеку

// математических функций Math

………………………

var

Form1: TForm1;

n1,n2:Integer;{начальное и конечное значения интервала

натуральных чисел}

n:integer; // текущее значение числа

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);

begin

// процедура закрывает форму и осуществляет

// выход из программы

Form1.Close

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

// ввод начального и конечного значений интервала

// натуральных чисел

n1:=StrToInt(Edit1.Text);

n2:=StrToInt(Edit2.Text);

Case ComboBox1.ItemIndex of

0: begin

// очистка поля ввода от предыдущих значений

label3.Caption:=' ';

// если в поле со списком выбрано значение Квадраты

// в цикле от n1 до n2 с шагом 1 вычисляются значения

// квадратов чисел

For n:=n1 To n2 Do

Begin

Label3.Caption:= Label3.Caption+ #13+

IntToStr(n)+' '+IntToStr(Sqr(n));

end;

end;

1:begin

// очистка поля ввода от предыдущих значений

label3.Caption:=' ';

// если в поле со списком выбрано значение Кубы

// в цикле от n1 до n2 с шагом 1 вычисляются значения

// кубов чисел

For n:=n1 To n2 Do

Begin

Label3.Caption:= Label3.Caption+ #13+

IntToStr(n)+ ' ' + IntToStr(n*n*n);

end;

end;

2:begin label3.Caption:=' ';

// если в поле со списком выбрано значение Квадратные корни

// в цикле от n1 до n2 с шагом 1 вычисляются значения

// квадратных корней чисел

For n:=n1 To n2 Do

Begin

Label3.Caption:= Label3.Caption+ #13+

IntToStr(n)+' ' + FloatToStrF(Sqrt(n),Fffixed,10,6);

end;

end;

3:begin label3.Caption:=' ';

// функция логарифм не определена при нуле,

// поэтому сдвигаем интервал значений на единицу

If n1=0 Then begin label3.Caption:='0';n1:=n1+1; end;

// если в поле со списком выбрано значение Кубические корни

// в цикле от n1 до n2 с шагом 1 вычисляются значения

// кубических корней чисел

For n:=n1 To n2 Do

Begin

Label3.Caption:= Label3.Caption+ #13+

IntToStr(n)+' ' + FloatToStrF(exp(1/3*ln(n)),Fffixed,10,6);

end;

end;

4:begin label3.Caption:=' ';

For n:=n1 To n2 Do

Begin

// если в поле со списком выбрано значение пи*n

// в цикле от n1 до n2 с шагом 1 вычисляются значения

// пи*n чисел

Label3.Caption:= Label3.Caption+ #13+

IntToStr(n)+' '+ FloatToStrF((pi*n),Fffixed,10,6);

end;

end;

5:begin label3.Caption:=' ';

// если в поле со списком выбрано значение пи/[4*(n в кв.)]

// в цикле от n1 до n2 с шагом 1 вычисляются значения

// пи/[4*(n в кв.)]

If n1=0 Then begin

Label3.Caption:='Бесконечность'; n1:=n1+1

End;

For n:=n1 To n2 Do

Begin

Label3.Caption:= Label3.Caption+ #13+

IntToStr(n)+' '+ FloatToStrF((pi/(4*n*n)),Fffixed,10,6);

end;

end;

6:begin label3.Caption:=' ';

If n1=0 Then begin

Label3.Caption:=' Бесконечность'; n1:=n1+1

end;

// если в поле со списком выбрано значение 1/n

// в цикле от n1 до n2 с шагом 1 вычисляются значения 1/n

For n:=n1 To n2 Do

Begin

Label3.Caption:= Label3.Caption+ #13+

IntToStr(n)+' '+ FloatToStrF(1/n,Fffixed,10,6);

end;

end;

Else Exit;

end;

end;

end.

Задача

Составить программу для вычисления таблицы уклонов местности. Уклоны местности определяют при проектировании каналов, дорог, направления движения тракторных агрегатов на пашне, изучении эрозии почв. Уклоном i называют отношение превышения h между точками к горизонтальному проложению S между ними. Для вычислений воспользоваться следующими формулами:

Компоненты

Имя

компонента

Свойства

компонент

Значение

Назначение

Form1

Caption

Таблица уклонов

Заголовок формы

Label1

Caption

При проектировании каналов, дорог, направления движения тракторных агрегатов на пашне, изучении эрозии почв определяют уклоны местности. Уклоном i называют отношение превышения h между точками к горизонтальному проложению S между ними.

Справочная информация для пользователя программы

Label2

Caption

Интервал изменения превышений

Подсказка пользователю

Edit1

Text

Нижняя граница интервала превышений

Edit2

Text

Верхняя граница интервала превышений

Label3

Caption

Шаг изменения превышений

Подсказка пользователю

Edit3

Text

Поле для ввода шага изменения превышений

Label4

Caption

Интервал изменения горизонтальных проложений

Подсказка пользователю

Edit4

Text

Нижняя граница интервала горизонтальных проложений

Edit5

Text

Верхняя граница интервала горизонтальных проложений

Label5

Caption

Шаг изменения горизонтальных проложений

Подсказка пользователю

Edit6

Text

Поле для ввода шага изменения горизонтальных проложений

Label6

Caption

В это поле программа выводит шапку таблицы уклонов

Memo1

Lines

ScrollBars

…..

ssBoth

Компонент для вывода значений таблицы уклонов

Выводить обе полосы прокрутки (вертикальную и горизонтальную)

Button1

Caption

ВЫЧИСЛИТЬ

Кнопка для выполнения

Button2

Caption

ВЫХОД

Кнопка для завершения работы программы

Переменные

Обозначение в

программе

Содержание

Тип

h

Текущее значение превышения

Вещественный расширенный

h1

Нижняя граница интервала превышений

Вещественный расширенный

h2

Верхняя граница интервала превышений

Вещественный расширенный

s

Текущее значение горизонтального проложения

Вещественный расширенный

s1

Нижняя граница интервала горизонтальных проложений

Вещественный расширенный

s2

Верхняя граница интервала горизонтальных проложений

Вещественный расширенный

Dh

Шаг изменения превышений

Вещественный расширенный

Ds

Шаг изменения горизонтальных проложений

Вещественный расширенный

i

Текущее значение уклона в тангенсах

Вещественный расширенный

ig

Градусная часть уклона

Целый

im

Минутная часть уклона

Целый

Ari

Текущее значение уклона в градусах

Вещественный расширенный

Проект формы

Текст модуля

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Math;

// библиотека математических функций Math

// подключается программистом

……………

var

Form1: TForm1;

h1,h2: Extended; // границы интервала изменения превышений

Dh:Extended;// шаг изменения превышений

s1,s2:Extended;// интервал изменения горизонтальных проложений

Ds: Extended; // шаг изменения горизонтальных проложений

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);

begin

Form1.Close

end;

procedure TForm1.Button1Click(Sender: TObject);

Var i:Extended;// текущее значение уклона в тангенсах

ig:Integer; // градусная часть уклона

im:Integer; // минутная часть уклона

h,s:Extended;// текущее значение превышения и

// горизонтального проложения

ARi:Extended;// текущее значение уклона в градусах

begin

// ввод исходных данных для программы

h1:=StrToFloat(Edit1.Text);

h2:=StrToFloat(Edit2.Text);

Dh:=StrToFloat(Edit3.Text);

s1:=StrToFloat(Edit4.Text);

s2:=StrToFloat(Edit5.Text);

Ds:=StrToFloat(Edit6.Text);

// вывод шапки таблицы уклонов

Label6.Caption:='Превышение Горизонтальное проложение Уклон в тангенсах'

+ ' Уклон в гр., мин.';

// текущее значение превышения принимает значение нижней границы

h:=h1;

{ цикл выполняется, пока текущее значение превышения

не превысит значение правой верхней границы}

While h <= h2 Do

Begin

// текущее значение горизонтального проложения принимает значение

// нижней границы

s:=s1;

{ цикл выполняется, пока текущее значение горизонтального проложения

не превысит значение правой верхней границы}

While s <= s2 Do

begin

// вычисление текущего значения уклона в тангенсах

i:=h/s;

// перевод уклона в градусную меру

ARi:=ArcTan(i)/pi*180;

// выделение целой части — градусная часть уклона

ig := Trunc(ARi);

// вычисление минутной части значения уклона

im:=Round((ARi-ig)*60);

// вывод строки таблицы уклонов

Memo1.Lines.Add(' '+ FloatToStrF(h,Fffixed,6,1) +

' | '

+ FloatToStrF(s,Fffixed,15,2) + ' | '

+ FloatToStrF(i,Fffixed,15,5) + ' | ' +

' ' + IntToStr(ig) + ' ' + IntToStr(im));

// увеличение горизонтального проложения на величину шага

s:=s+Ds;

end;

// увеличение превышения на величину шага

h:=h+Dh;

end;

end;

end.

Один из возможных результатов работы программы

Задача

Составить программу для вычисления числа е.

Известно, что сумма ряда 1+1/1!+1/2!+...+1/n! стремится к числу е. Число е=2,71828 играет важную роль в качестве основания натуральных логарифмов.

Компоненты

Имя

компонента

Свойства

компонента

Значение

Назначение

Form1

Caption

Число е

Заголовок формы

Label1

Caption

Известно, что сумма ряда 1+1/1!+1/2!+...+1/n! стремится к числу е. Число е=2,71828 играет важную роль в качестве основания натуральных логарифмов

Справочная информация для пользователя программы

Label2

Caption

Точность вычисления числа е

Подсказка пользователю

Edit1

Text

Поле для ввода точности вычисления числа е

Button1

Caption

Вычислить

Кнопка для вычисления

Button2

Caption

Новые данные

Кнопка для очистки введенного значения точности

Button3

Caption

Выход

Кнопка для завершения работы программы

Label3

Caption

Поле, в которое программа выводит вычисленное значение числа е

Переменные

Обозначение в программе

Содержание

Тип

n

Номер члена ряда -1

Целый

e

Число е

Вещественный, расширенный

z

Знаменатель члена ряда

Длинный целый

element

Текущий элемент ряда

Вещественный, расширенный

T

Точность вычисления числа е

Вещественный, расширенный

Проект формы

Текст модуля

unit Unit1;

……………………………

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);

begin

Edit1.Clear

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

Form1.Close

end;

procedure TForm1.Button1Click(Sender: TObject);

Var e: Extended; // число е

element:Extended; // текущий элемент ряда

T: Extended;// точность вычисления числа е

n:Integer; // номер члена ряда -1

z:LongInt; // знаменатель члена ряда

begin

// инициализируем числом 1 значения переменных e, z, n

e:=1;

z:=1;

n:=1;

// ввод точности вычисления числа e

T:=StrToFloat(Edit1.Text);

//цикл вычисления суммы ряда для числа e

Repeat

z:=Z*n;

element:=1/z ;

e:=e+element;

n:=n+1;

{ выход из цикла происходит, когда очередной член ряда

меньше или равен точности вычисления числа е}

Until T >=element ;

// вывод вычисленного числа e

Label3.Caption:='число е равно: '+FloatToStrF(e,Fffixed,10,8)

end;

end.

Задачи для самостоятельного решения

Циклы с условием

№ 4.1. Написать программу для вычисления значений Y= Z2 при изменении Z от N1 до N2 с шагом K, где K, N1, N2 — натуральные числа.

№ 4.2. Написать программу для вычисления суммы нечетных чисел натурального ряда в интервале от N1 до N2, , где N1, N2 — натуральные числа.

№ 4.3. Написать программу для вычисления значений при измененииY от N1 до N2 с шагом K, где K, N1, N2 — натуральные числа.

№ 4.4. Написать программу для вычисления суммы обратных величин чисел от N1 до N2 с шагом K, где K, N1, N2 — натуральные числа.

№ 4.5. Написать программу для вычисления выражения S=*R*R при изменении R в интервале от 1 до N с шагом K где K, N — натуральные числа.

№ 4.6. Составить программу для вычисления членов последовательности:

, где n — натуральное число.

Члены последовательности вычислять до тех пор, пока текущий член последовательности не станет меньше заданного числа  (0<<0,0001).

№ 4.7. Составить программу для вычисления суммы ряда:

, где n — натуральное число.

Сумму ряда вычислять до тех пор, пока текущий член последовательности не станет меньше заданного числа  (0<<0,0001).

№ 4.8. Составить программу для вычисления суммы ряда:

Сумму ряда вычислять до тех пор, пока текущий член последовательности не станет меньше заданного числа  (0<<0,0001).

№ 4.9. Составить программу для вычисления члена an последовательности a1, a2, …, образованной по закону

для которого выполняется условие an–an-1<,

причем n — номер члена последовательности (n2),

 — заранее заданное положительное число.

№ 4.10. Написать программу для вычисления члена bn последовательности b1, b2, …, образованной по закону

для которого выполняется условие bn–bn-1<,

где n — номер элемента последовательности (n2);

 — заданное положительное число.

Циклы с параметром

№ 4.11. Написать программу для вычисления суммы S=S+1/i, где i=1, 2,..., N.

№ 4.12. Написать программу для вычисления произведения первых N натуральных чисел.

№ 4.13. Написать программу для вычисления dx=h*h/(2*S), при значениях: 100 S  1000 м.

№ 4.14. Написать программу для вычисления суммы S из значений Y=X*X*X, где X задан в интервале от N1 до N2, где N1 и N2 — натуральные числа.

№ 4.15. Написать программу для вычисления выражения Y=N!.

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