- •Основы программирования
- •Введение
- •Основы delphi
- •Общая технология программирования
- •Язык программирования
- •Объектно-ориентированное программирование
- •Визуальное программирование
- •Событийно управляемое программирование
- •Windows-приложение
- •Среда программирования
- •Первоначальные сведения о проекте приложения
- •Встроенный отладчик
- •Использование встроенных классов
- •Иерархия классов
- •Использование палитры компонентов и инспектора объектов
- •Использование графики
- •Основные инструменты
- •Основные характеристики шрифтов
- •Графические данные и палитра
- •Некоторые общие свойства компонентов
- •Сохранение проекта
- •Построение простейшего проекта
- •Понятие исключительной ситуации
- •Введение в object pascal
- •Структура приложения
- •Структура программы-проекта
- •Структура модуля
- •Пример 1
- •Описания программных элементов
- •Программные элементы и адреса памяти
- •Области видимости
- •Правила записи имен
- •Время жизни идентификаторов
- •Использование локальных переменных в примере 1
- •Использование глобальных переменных в примере 1
- •Простые типы
- •Целые типы
- •Целые типы
- •Некоторые операции с целым типом
- •Символьные типы
- •Логические типы
- •Тип перечень
- •Интервальный тип
- •Вещественный тип
- •Вещественные типы
- •Некоторые операции с вещественным типом
- •Тип дата-время
- •Выражения
- •Константы
- •Типизированные константы.
- •Переменные
- •Операции
- •Унарная операция not (отрицание)
- •Логические операции and, or, xor
- •Функции
- •Порядок вычисления выражений
- •Виды операторов
- •Простые операторы
- •Составной оператор
- •Операторы условного перехода
- •Оператор if
- •Пример 2
- •Оператор case
- •Пример 3
- •Использование enter в примере 3
- •Операторы цикла
- •Оператор цикла for
- •Пример 4
- •Оператор цикла while
- •Пример 5
- •Оператор цикла repeat
- •Пример 6
- •Использование процедур break и continue
- •Пример 7
- •Массивы
- •Статические массивы
- •Динамические массивы
- •Пример 8
- •Пример 9
- •Записи (объединения)
- •Оператор with
- •Пример 10
- •Совместимость и преобразование типов данных
- •Идентичность типов
- •Совместимость типов
- •Совместимость по присваиванию
- •Преобразование типов
- •Операторы обработки исключительных ситуаций
- •Пример 11
- •Множества
- •Операции над множествами
- •Пример 12
- •Вариантный тип данных
- •Процедуры и функции
- •Процедура
- •Функция
- •Рекурсия
- •Формальные и фактические параметры
- •Параметры-значения
- •Параметры-переменные
- •Параметры-константы
- •Параметры без типа
- •Массивы открытого типа
- •Парамеры по умолчанию
- •Процедура exit
- •Директивы подпрограммы
- •Соглашения по передаче данных
- •Директива forward
- •Директива external
- •Директива assembler
- •Перегруженные подпрограммы
- •Пример 13
- •Инкапсуляция
- •Класс как объектный тип
- •Наследование
- •Области видимости
- •Операции is и as
- •Виды методов
- •Методы virtual и полиморфизм
- •Методы dynamic
- •Методы message
- •Методы abstract
- •Методы override
- •Методы class
- •Пример 14
- •Динамическое создание компонентов
- •Использование класса со счетчиком объектов
- •Отслеживание разрушения объектов
- •События
- •Указатели на методы
- •Пример 15
- •Типы ссылки на класс
- •Свойства
- •Свойства simple
- •Свойства enumerated
- •Свойства set
- •Свойства object
- •Свойства array
- •Задание начальных значений свойствам
- •Пример 16
- •Файловые типы
- •Текстовые файлы
- •Типизированные файлы
- •Файлы без типа
- •Дополнительные процедуры и функции
- •Пример 17
- •Компонент tmainmenu
- •Указатели
- •Пример 18
- •Динамические структуры данных
- •Однонаправленные списки
- •Двунаправленные списки
- •Стеки, очереди
- •Бинарные деревья
- •Пример 19
- •Процедурный тип
- •Программные единицы dll
- •Пример 20
- •Технологии программирования
- •Потоки данных
- •Пример 21
- •Пример 22
- •Интерфейс drag and drop
- •Пример 23
- •Технология drag and dock
- •Пример 24
- •Использование функций windows api при работе с файлами
- •Пример 25
- •Использование отображаемых файлов
- •Пример 26
- •Программные потоки
- •Приоритеты потоков
- •Класс tthread
- •Пример 27
- •Использование блокировки в примере 27
- •Многопоточное приложение в примере 28
- •Проблемы синхронизации потоков
- •Список используемых в примерах компонентов
- •Список используемых компонентов и других классов
- •Библиографический список
- •Оглавление
Оператор цикла repeat
Оператор цикла Repeat записывается следующим образом: Repeat
<Оператор1>;
. . . . . . . . . . .
<ОператорN>;
Until <логическое выражение>;
В этом цикле выполняются все операторы между Repeat и Until, пока логическое выражение не станет истинным. В отличие от оператора While, в котором логическое выражение определяет условие продолжения итераций, в операторе Repeat логическое выражение определяет условие окончания цикла. Независимо от значения логического выражения, хотя бы одна итерация обязательно должна выполниться. Как и в случае с циклом While, программист должен сам организовать управление итерациями в цикле Repeat.
Пример 6
Рассчитать с точностью сумму следующего ряда:
,
где X – какое-либо число из диапазона –1 <= X <= 1.
Точность
означает следующее. Обозначим
член ряда; суммирование (вычисление Y)
продолжать до тех пор, пока значение а
не станет меньше .
В
Рис. 20 Алгоритм расчета суммы ряда.
На рис. 20 построен алгоритм расчета суммы ряда. В этом алгоритме введена дополнительная переменная b для отслеживания знака очередного члена ряда.
На рис. 21 приводится форма с вариантом расчета. Расположенные на форме компоненты можно определить, исходя из текста программы, который приводится ниже.
Для решения данной задачи был использован компонент TMemo. Этот элемент управления служит для получения какого-либо текста пользователя и его отображения на экране. TMemo называют многострочным редактором (однострочным редактором является компонент TEdit.).
Доступ ко всему тексту может быть получен через свойство Text. Свойство Lines представляет весь текст в виде совокупности строк. Все строки в TMemo пронумерованы, начиная от нуля. Если на экране строки полностью не отображаются (задана маленькая ширина Width), то с помощью свойства WordWrap можно управлять переносом строк. TMemo имеет свойство ScrollBars – можно устанавливать полосы прокрутки. По умолчанию: ScrollBars установлено равным ssNone. Можно задать центрирование строк с помощью свойства Alignment. Свойство Lines содержит методы Add (добавить), Delete (удалить), Insert (вставить).
Рис. 21 Форма с вариантом решения примера 6.
Для Memo1 в инспекторе объектов установлено свойство WordWrap равным true, а свойство ScrollBars – ssVertical. Далее приводится программа.
unit prim6;
interface
uses Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs,
StdCtrls, Buttons, ExtCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
Button1: TButton;
BitBtn1: TBitBtn;
Bevel1: TBevel;
Memo1: TMemo;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Label3: TLabel;
procedure Edit1KeyPress(Sender: TObject;
var Key: Char);
procedure Button1Click(Sender: TObject);
procedure Edit1Exit(Sender: TObject);
end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Edit1KeyPress(Sender: TObject;
var Key: Char);
begin
if not (key in ['0'..'9','-','.',#8]) then key:=#0;
end;
procedure TForm1.Button1Click(Sender: TObject);
var x,y,a,b,eps:real;
n:byte;
begin
Memo1.Lines.Clear;
y:=0.0;
n:=0;
b:=-1.0;
x:=StrToFloat(Edit1.Text);
eps:=StrToFloat(Edit2.Text);
Repeat
b:=-b*x;
inc(n);
a:=b/n;
y:=y+a;
Memo1.Lines.Add('Итерация'+IntToStr(n)+' a=' +
FormatFloat('0.00000',a)+' y='+
FormatFloat('0.0000',y));
Until abs(a) < eps;
end;
procedure TForm1.Edit1Exit(Sender: TObject);
begin
if Abs(StrToFloat(Edit1.Text))>1.0 then
if Application.MessageBox('Введите число X',
'Число /X/<=1', MB_OK)=IDOK then Edit1.SetFocus;
end;
end.
В приведенной программе обработчик события Button1Click написан по алгоритму рис. 20, кроме одного дополнения – внутрь цикла добавлена процедура формирования истории расчета с помощью объекта Memo1. Обработчик Edit1Exit отслеживает условие: X по модулю должно быть не больше 1. В случае невыполнения этого условия вызывается стандартное диалоговое окно объекта Application MessageBox. Синтаксически подпрограмма MessageBox оформлена в виде функции. При вызове функции MessageBox необходимо указать три параметра:
текст-подсказка, что надо делать;
заголовок диалогового окна;
вариант внешнего вида окна – константа MB_OK указывает, что окно с одной кнопкой.
Значение функции вызова диалогового окна сравнивается с константой IDOK. В данном случае любой вариант ответа пользователя приводит к возврату операции ввода числа X (Edit1.SetFocus – установить фокус на объект Edit1).
