- •Содержание
- •4. 5. Контрольные вопросы....................................................................44
- •7. 1. Краткие теоретические сведения..................................................59
- •8. 1. Краткие теоретические сведения...................................................70
- •Введение
- •1. 1. Главное окно
- •2. Лабораторная работа №1 Тема: Ввод и вывод
- •2. 1. Экранная форма (Form)
- •2. 1. 1. Таблица свойств (Form)
- •2. 2. Кнопка (Button)
- •2. 2. 1. Таблица свойств для Button
- •2. 3. Однострочный редактор (Edit)
- •2. 3. 1. Таблица свойств для Edit
- •2. 4. Контрольные вопросы
- •2. 5. Задания к лабораторной работе
- •3. Лабораторная работа №2 Тема: Программирование алгоритмов линейной структуры
- •3. 1. Классификация типов данных
- •3. 2. Константы
- •“Это начало строки, ” “а это ее продолжение”
- •“Это начало строки, а это ее продолжение”
- •3. 3. Задания к лабораторной работе
- •4. Лабораторная работа №3 Тема: Программирование алгоритмов циклической структуры
- •4. 1. Условный оператор if... Else
- •4. 1. 1. Об условиях в операторе if
- •4. 2. Цикл while
- •4. 3. Цикл do while
- •4. 4. Цикл for
- •4. 5. Контрольные вопросы
- •5. Лабораторная работа №4 Тема: Работа с массивами
- •5. 1. Контрольные вопросы
- •5. 2. Задания к лабораторной работе
- •6. Лабораторная работа №5
- •Изучение утилит Database Desktop (dbd), bd Administrator Использование компонентов tDataModule, tTable, tDataSet
- •6. 1. Краткие теоретические сведения
- •6. 2. Модуль данных
- •6. 3. Доступ к содержимому поля
- •6. 4. Поиск записей
- •6. 5. Фильтры
- •6. 6. Задание
- •6. 7. Ход выполнения работы
- •6. 8. Контрольные вопросы
- •7. Лабораторная работа №6 Тема: Программирование объекта tQuery
- •7. 1. Краткие теоретические сведения
- •7. 2. Задание
- •7. 3. Ход выполнения работы
- •7. 4. Контрольные вопросы
- •8. Лабораторная работа №7 Тема: Создание связей между таблицами
- •8. 1. Краткие теоретические сведения
- •8. 2. Задание
- •8. 3. Ход выполнения работы
- •8. 4. Контрольные вопросы
- •9. Лабораторная работа №8 Тема: Работа с полями
- •9. 1. Краткие теоретические сведения
- •9. 2. Задание
- •9. 3. Ход выполнении работы
- •9. 4. Контрольные вопросы
- •10. Задания к базам данных
4. 2. Цикл while
Синтаксис оператора while выглядит так: while (условие продолжения) оператор
Сначала оценивается условие_продолжения. Если оно истинно, выполняется оператор, после чего управление возвращается заголовку цикла, и все повторяется снова. Когда условие оказывается ложным, управление передается следующему после цикла оператору. Как обычно, одиночный оператор тела цикла можно заменить блоком, заключенным в фигурные скобки:
whi1е (условие_продолжения)
{
операторы_тела цикла
}
4. 3. Цикл do while
Этот цикл имеет такой вид:
do оператор while (условие продолжения);
Здесь сначала выполняется оператор, а затем производится проверка условия_продолжения. Если условие истинно, управление возвращается в начало цикла; если ложно, цикл завершается и управление переходит к оператору, следующему за циклом.
Отличие от предыдущей конструкции очевидно — тело цикла do... while исполняется хотя бы один раз вне зависимости от каких-либо условий, в то время как в цикле while при ложном условии тело не исполняется вообще. Хотя конкретную программную задачу можно решить, применив любую из этих конструкций, чаще всего одно из двух решений оказывается более экономным.
4. 4. Цикл for
Цикл for, наиболее универсальный из всех циклов языка С, выглядит так:
for ([инициализация]; [условие]; [модификация]) оператор
Прежде всего выполняется инициализация цикла; секция инициализации может содержать любое выражение. Инициализация производится только один раз перед началом работы цикла. Оценивается выражение условия. Если оно истинно, выполняется оператор тела цикла; если условие ложно, происходит выход из цикла и управление передается следующему оператору.
После исполнения тела цикла производится модификация, после чего управление возвращается заголовку цикла и все повторяется снова. Секция модификации может содержать любое выражение; обычно в ней изменяют значения управляющих переменных цикла.
Как видно из синтаксического описания, любую секцию заголовка цикла for можно опустить, но разделители — точки с запятой — все равно должны присутствовать.
Если опущено условие, цикл будет выполняться бесконечно. Простейшей и самой популярной конструкцией на основе цикла for является цикл с управляющей переменной-счетчиком:
int i;
for (i =0; i < REPEAT; i++)
DoSomething (i);
Счетчик инициализируется значением 0. В начале каждого прохода цикла проверяется, не достиг ли он значения REPEAT. Как только i станет равным REPEAT, тело цикла пропускается и управление передается следующему оператору. В конце каждого прохода i увеличивается на единицу [1].
Любую конкретную структуру повторения, требуемую для решения некоторой задачи, можно реализовать на основе любого из циклов С, однако всегда какой-то из них подходит к данному случаю наилучшим образом, позволяя написать более ясный и компактный код. Так, если необходимое число итераций цикла известно заранее (как при обработке массива), проще всего применить цикл for. Если же число итераций заранее определить нельзя, как в нашем примере обработки команд (момент завершения цикла определяется пользователем) или при операциях поиска в списке, применяют цикл while или do. . .while.
У структур повторения в ряде ситуаций есть альтернатива. Это рекурсия, заключающаяся в том, что функция вызывает саму себя. Естественно, такой вызов должен быть условным, т. е. обязательно должен наступить такой момент, когда на очередном шаге рекурсивного вызова не происходит. Есть классический пример рекурсии — вычисление факториала:
unsigned Fac(unsigned n)
{
if (n)
return n * Fac(n - 1);
else
return 1;
}
Пример 1. Протабулировать функцию в заданном интервале [2,3] с шагом 0,1 [3].
1. Поместите на форму объекты: Edit1, Edit2, Edit3, Label1, Label2, Label3, Memo1, Button1, Button2.
2. Присвойте объектам свойства согласно таблице:
Объект |
Свойства |
Значение |
Edit1 |
Text |
‘’ |
Edit2 |
Text |
‘’ |
Edit3 |
Text |
‘’ |
Label1 |
Caption |
A= |
Label2 |
Caption |
B= |
Label3 |
Caption |
H= |
Memo1 |
Lines |
‘’ |
Button1 |
Caption |
Выполнить |
Button2 |
Caption |
Выход |
3. Дважды щёлкнув по кнопке “Выход”, впишите в месте, где мигает курсор
Close();
4. Дважды щёлкнув по кнопке “Выполнить”, впишите следующий код:
5. Сохраните проект в папке и выполните его.
Пример 2. Найти минимальное и максимально значение данной функции в заданном интервале: [2; 3].
1. Поместите на форму объекты: Edit1, Edit2, Edit3, Label1, Label2, Label3, Memo1, Button1, Button2.
2. Присвойте объектам свойства согласно таблице:
Объект |
Свойства |
Значение |
Edit1 |
Text |
|
Edit2 |
Text |
|
Edit3 |
Text |
|
Edit4 |
Text |
|
Edit5 |
Text |
|
Label1 |
Caption |
A= |
Label2 |
Caption |
B= |
Label3 |
Caption |
H= |
Label4 |
Caption |
Max |
Label5 |
Caption |
Min |
Button1 |
Caption |
Выполнить |
Button2 |
Caption |
Выход |
3. Дважды щёлкнув по кнопке “Выход”, впишите в месте, где мигает курсор
Close();
4. Дважды щёлкнув по кнопке “Выполнить”, впишите следующий код:
|
|
|
|
5. Сохраните проект в папке и выполните его.
Результат выполнения программы: