Автор работы: Пользователь скрыл имя, 11 Декабря 2012 в 13:50, доклад
В FoxPro имеются развитые средства организации программных циклов, которые в зависимости от постановки задачи могут быть классифицированы на циклы с условием (итерационные циклы) и циклы с параметром (арифметические циклы).
****************
Доклад
По дисциплине: «Базы данных»
На тему: «Организация циклической обработки записей»
проверил преподаватель
Город 20**
В FoxPro имеются развитые средства организации программных циклов, которые в зависимости от постановки задачи могут быть классифицированы на циклы с условием (итерационные циклы) и циклы с параметром (арифметические циклы).
Цикл с условием.
Реализация так называемых итерационных циклов, т.е. циклов с заранее известным условием их окончания и неизвестным числом повторов, выполняется следующей конструкцией:
• DO WHILE <условие>
<команды>
ENDDO
Команды, заключенные между DO WHILE и ENDDO, будут выполняться до тех пор, пока <условие> истинно. Если оно ложно или становится ложным, осуществляется переход к команде, следующей за ENDDO.
Пример. Ввести с клавиатуры и суммировать числа Х в переменную S до тех пор, пока сумма не превысит 1000.
s=0
DO WHILE s<=1000
INPUT 'ВВЕДИТЕ X' TO x
s=s+x
ENDDO
В языке FoxPro отсутствует понятие "метка", т.е. нет естественной возможности перейти в другое место программы. Это создает некоторые (кажущиеся) сложности, которые легко преодолеть. Так, если требуется выйти за пределы цикла, необходимо использовать команду
•EXIT которая передаст управление команде, следующей за ENDDO.
Следующая команда осуществляет передачу управления в цикле, но в противоположную сторону - в его начало, на саму команду цикла:
•LOOP
Это нужно, чтобы при необходимости избежать выполнения некоторых команд, предшествующих фразе END, и сразу перейти к следующему циклу.
Рассмотренные команды действуют не только в структуре DO WHILE, но и во всех других командах организации циклов (FOR и SCAN).
Цикл с параметром.
Арифметический цикл предполагает наличие переменной, ограничивающей число циклов.
• FOR <переменная>=<ВырN1> ТО <BыpN2> [STEP <BыpN3>]
<команды>
ENDFOR
Допускается также использование вместо команды ENDFOR команды NEXT (как в Бейсике).
Здесь <переменная> используется в качестве управляющего параметра цикла, для которого <BыpNl> является начальным значением, <BыpN2> - конечным, a <BыpN3> - шагом изменения <переменной>. Если последний параметр отсутствует, шаг равен 1.
Таким образом, цикл будет выполняться столько раз, сколько нужно, чтобы <переменная> от значения, равного <BыpNl>, достигла <BыpN2> с шагом <BыpN3>. <Переменная> в каждом цикле сначала получает новое значение и затем сравнивается с <BыpN2>. Если она меньше или равна <BыpN2>, продолжается выполнение цикла, если больше, выполнение цикла заканчивается и программа продолжается с команды, следующей за ENDFOR. Если
<BыpN3> отрицательно, переменная
в каждом цикле будет
Хотя все параметры команды FOR допускается менять внутри цикла, это никак не влияет на число циклов или значение <переменной>. Исключение составляет сама <переменная>, изменение которой влечет изменение числа циклов. В цикл FOR могут включаться команды EXIT и LOOP. Наиболее частое применение команды FOR - организация циклов с заранее известным их числом. Тогда <переменная> имеет смысл счетчика циклов.
Примеры. Текущие значения переменной I показаны после знаков &&.
FOR i=2 TO 5 FOR i=12 TO 3 STEP -2
? i &6 2,3,4,5 ? i && 12,10,8,6,4 END FOR END FOR ? i && 6 ? i && 2
Как видим при завершении цикла переменная цикла получает значение неравное предельно установленной величине. Этим фактором следует воспользоваться для выяснения причины завершения цикла, который может быть осуществлен как естественным образом (после выполнения всех предписанных циклов), так и при помощи команды EXIT по некоторому внутреннему <условию>.
Положим организован следующий цикл:
FOR I=K TO M
<команды>
IF <условие> EXIT
END IF
<команды> END FOR
Тогда если 1<=М, цикл был завершен принудительно, иначе - естественно:
IF K=M
<обнаружен выход по ЕХ1Т> ELSE
<обнаружен естественный выход> ENDIF
Сказанное справедливо для циклов с возрастанием переменной цикла.
Для отрицательного шага рассуждения в точности обратные (IF I>=M).
Команда IF.
В зависимости от условия команда выполняет те или иные <команды>, находящиеся внутри конструкции IF...ENDIF.
• IF <условие> <команды> [ELSE <команды>]
ENDIF
Если условие истинно, выполняются все <команды>, следующие от IF до ELSE, если ложно, то <команды> от ELSE до ENDIF. Если необязательная фраза ELSE отсутствует и условие ложно, все внутренние <команды> пропускаются и выполняется команда, следующая за ENDIF. Допустимо вложение друг в друга конструкций типа IF ... ENDIF и других структурных команд.
Замечание. В одной строке программы разрешается записывать только одну команду, и ее положение в строке произвольно. Для наглядности лучше записывать их не в столбец, а уступами, подчеркивающими вложенность команд.
Команда DO CASE.
Конструкция DO CASE ... ENDCASE решает задачи, аналогичные команде IF, но в ней может быть указано сразу несколько условий, которые последовательно проверяются во всех фразах CASE.
• DO CASE
CASE <условие 1 >
<команды>
CASE <условие 2>
<команды>
[OTHERWISE
<команды>]
ENDCASE
Если встретилось истинное <условие>, выполняются нижеследующие <команды> до следующей фразы CASE, или OTHERWISE, или ENDCASE, и конструкция завершается. Если ни одно из CASE-условий не истинно, выполняются <команды>, стоящие за фразой OTHERWISE до ENDCASE, если фраза OTHERWISE отсутствует, не выполняется ни одна команда. Пример для условий предыдущей задачи показан ниже.
DO CASE
CASE а=b ,
?'ЧИСЛА РАВНЫ' CASE а>Ь
?' а=',а CASE a<b
?'b=',b
ENDCASE
Команда очень удобна для обработки выбора из меню в программах. Разрешается вложение команд DO CASE, IF.
В случае, если найдено истинное CASE-условие, остальные условия не проверяются и выполняется команда, стоящая за ENDCASE. Кроме перечисленных команд IF и DO CASE, в СУБД FoxPro имеется очень полезная функция анализа условия – IIF().
Информация о работе Организация циклической обработки записей