Главная страница
Навигация по странице:

  • DO WHILE ENDDO

  • LOOP 33Это нужно, чтобы при необходимости избежать выполнения некоторых команд, предшествующих фразе END, и сразу перейти к следующему циклу. Цикл с параметром.

  • FOR = ТО [STEP ] ENDFOR В цикл FOR могут включаться команды EXIT и LOOP. Цикл сканирования базы данных.

  • SCAN [ ] [FOR ] [WHILE ] ENDSCAN


  • DECLARE | DIMENSION ( [, ]) [, ( [, ])]

  • Обмен данными с базой данных

  • Работа с одномерными массивами/переменными.

  • SCATTER [FIELDS ][МЕМО] ТО | ТО BLANK | BLANK | MEMVAR BLANK

  • GATHER FROM | MEMVAR [FIELDS ] [MEMO]

  • DO [WITH ] [IN ]

  • PARAMETERS

  • RETURN

  • RETURN [ТО MASTER | | ]

  • PROCEDURE Для обозначения конца процедуры с возвратом в вызывающий модуль может использоваться команда RETURN, хотя она и не обязательна. Процедурный файл

  • SET PROCEDURE TO

  • SET UDFPARMS TO VALUE | REFRENCE

  • Область действия переменных

  • PUBLIC [, ] Например, команда PUBLIC А, В, R(10), 2(2,6)

  • PRIVATE Возможно объявление локальными групп переменных без их поименного перечисления. PRIVATE ALL LIKE | EXCEPT

  • Создание баз данных CREATE DBF ( [( [, ]) [, ...]]) | FROM ARRAY

  • Методичка. Базы данных (ПОВТ) 2009. Методические указания для студентов дневного отделения специальности "Программное обеспечение вычислительной техники" Барнаул 2009 2


    Скачать 2 Mb.
    НазваниеМетодические указания для студентов дневного отделения специальности "Программное обеспечение вычислительной техники" Барнаул 2009 2
    АнкорМетодичка. Базы данных (ПОВТ) 2009.pdf
    Дата04.10.2019
    Размер2 Mb.
    Формат файлаpdf
    Имя файлаМетодичка. Базы данных (ПОВТ) 2009.pdf
    ТипМетодические указания
    #13290
    страница5 из 11

    Подборка по базе: Программа обучения студентов (Syllabus) по дисциплине Основы пра, методичка по цитологии 2019 для студентов.pdf, Методические указания к самостоятельной работе по дисциплине «Ме, Метод указания-19.docx, Методические указания по практике .doc, Методические указания по практике .doc, ГАОУ СПО Десмургия - Методические рекомендации для студентов по .
    1   2   3   4   5   6   7   8   9   10   11
    Цикл с условием. Реализация так называемых итерационных циклов, т.е. циклов с заранее известным условием их окончания и неизвестным числом повторов, выполняется следующей конструкцией:
    DO WHILE <условие>
    <команды>
    ENDDO
    Команды, заключенные между DO WHILE и ENDDO, будут выполняться до тех пор, пока
    <условие> истинно. Если оно ложно или становится ложным, осуществляется переход к команде, следующей за ENDDO.
    В языке FoxPro отсутствует понятие "метка", т.е. нет естественной возможности перейти в другое место программы. Это создает некоторые (кажущиеся) сложности, которые легко преодолеть. Так, если требуется выйти за пределы цикла, необходимо использовать команду
    EXIT
    которая передаст управление команде, следующей за ENDDO.
    Следующая команда осуществляет передачу управления в цикле, но в противоположную сторону - в его начало, на саму команду цикла:
    LOOP

    33
    Это нужно, чтобы при необходимости избежать выполнения некоторых команд, предшествующих фразе END, и сразу перейти к следующему циклу.
    Цикл с параметром. Арифметический цикл предполагает наличие переменной, ограничивающей число циклов.
    FOR <переменная>=<вырН1> ТО <вырН2> [STEP <вырN>]
    <команды>
    ENDFOR
    В цикл FOR могут включаться команды EXIT и LOOP.
    Цикл сканирования базы данных. Следующая команда применяется для перемещения в базе данных и выполнения <команд> для каждой встреченной записи, которая отвечает условиям.
    SCAN [<границы>] [FOR <условие>] [WHILE <условие>]
    <команды>
    ENDSCAN
    При отсутствии границ и условий сканируется вся база данных. Команда SCAN является исключительно удобным средством перемещения в базе.
    SCAN-цикл может быть завершен как по достижении <границ> его действия, так и при встрече конца базы данных. Выяснить это обстоятельство можно с помощью функции EOF()-
    Если EOF()=.t., цикл завершен раньше времени. Исключение составляет цикл с FOR- условием - такой цикл всегда продолжается до достижения конца файла.
    Следует заметить, что выполнение каждой команды ENDSCAN перемещает указатель записей.
    Это значит, что завершение SCAN-цикла с WHILE-условием переносит нас за пределы действия этого условия.
    Аналогично выполняется построение циклов сканирования Для организации обработки данных с любой глубиной их группировки. Важно только, чтобы они были упорядочены соответствующим образом.
    функция анализа условий
    ПF(<условие>,<выр1>,<выр2>) - выдает значение <выр1>, если <условие> истинно, и <выр2> - если ложно. Функция удобна для применения в командах индексирования, в ко- манде BROWSE, при печати, при описании меню и т.д., поскольку ее можно непосредственно включать в команды (например, ?, @...SAY и др.). Вообще, функция IIF() может быть помещена практически вместо любого <выражения>, присутствующего в команде или другой функции. Важно только, чтобы тип этого выражения соответствовал разрешенному в данном месте.
    Функции подстановки
    Функции подстановки позволяют интерпретировать символьную переменную как отображаемый ею объект программы. Они дают возможность формировать имена переменных, функции и даже целые команды непосредственно в программе.
    &<символьная переменная>
    Функция называется функцией макроподстановки и превращает содержимое <символьной переменной> или мемо-поля непосредственно в объект, который она изображает.
    МАССИВЫ ПЕРЕМЕННЫХ
    Одним из важных инструментов программиста является возможность работы с массивами временных переменных.
    Описание массивов
    В FoxPro разрешается работа с одномерными и двумерными массивами переменных. Для этого они предварительно должны быть описаны специальной командой
    DECLARE | DIMENSION <переменная> (<вырН1> [,<вырН2>]) [,<переменная>
    (<вырН1> [,<вырН2>])]
    Нумерация элементов массива начинается с единицы. Н а п р и м е р :
    DIMENSION a ( 3 , 8 ) , b(4)

    34
    Здесь описываются два массива: двумерный массив А (размерностью 3 х 8) и одномерный В (длиной четыре элемента). Сразу после описания массивов командой
    DIMENSION все их элементы получают логический тип со значением .F. В дальнейшем элементы в результате присваиваний могут получать новые типы и значения. Тип каждого отдельного элемента определяется результатом последней команды присваивания (=, STORE, SCATTER).
    При описании массива и обращении к его элементам разрешено использовать круглые или квадратные скобки. Разрешается повторное описание существующего массива, причем имеющиеся данные не будут утрачены. Это может иметь смысл, если после заполнения массива оказалось, что ранее было зарезервировано больше элементов, чем необходимо.
    Каждый массив использует для своего имени одну переменную и может иметь до
    3600/65000 элементов (стандартная/расширенная версии). Разрешено использовать до 3600/65000 массивов. Практические ограничения зависят от доступной памяти компьютера.
    Обмен данными с базой данных
    Обмен данными между массивами и базами данных может выполняться посредством двух пар команд, которые реализуют считывание записей в массив и занесение массива в записи базы данных.
    Работа с одномерными массивами/переменными. Следующая команда последовательно переносит значения полей только из текущей записи активного файла базы данных в последовательные элементы одномерного массива (если указана опция <массив>) или временные
    (если указано MEMVAR). Все такие переменные получают те же типы и размеры, что и поля базы данных. С опцией BLANK создаются пустые переменные.
    SCATTER [FIELDS <поля>][МЕМО] ТО <массив> | ТО <массив> BLANK | BLANK |
    MEMVAR BLANK
    Если массив ранее не был описан или его длина недостаточна, он будет создан командой.
    Если переменные ранее не существовали, они будут созданы с теми же именами, что и соответствующие поля. Для того чтобы СУБД могла отличить одинаковые имена полей и переменных, к последним нужно обращаться с префиксом "М". Например, М->Х или М.Х для переменной X. В случаях, если префикса нет, СУБД сначала ищет поле с указанным именем, и только или его не находит - переменную.
    Если использовано слово BLANK, то создается множество незаполненных переменных или элементов массива, имеющих те же типы, что и поля базы данных.
    Если режим FIELDS не указан, переносятся все поля записи.
    Опция MEMO указывает на то, что и мемо-поля будут копироваться. При этом необходимо следить, чтобы размер копируемого мемо-поля не был больше разрешенной длины переменной.
    Действие команды GATHER обратно действию команды SCATTER:
    GATHER FROM | MEMVAR [FIELDS <поля>] [MEMO]
    Команда переписывает в <поля> текущей записи активного файла базы данных элементы <массива> или одноименные переменные (опция MEMVAR), созданные ранее командой SCATTER, включая мемо-поля (если указана опция MEMO).
    Типы соответствующих полей и элементов массива должны совпадать. Если отсутствует слово FIELDS, элементы переносятся в последовательные поля, начиная с первого.
    Если число элементов массива и полей не совпадает, лишние игнорируются.
    Рассмотренная пара команд очень удобна, если предстоит сложная обработка полей записи базы данных. В этом случае лучше перенести их в переменные, а затем, после обработки, вернуть в базу. Часто ввод/редактирование данных приходится сочетать с некоторой их трансформацией, сложными проверками и сопутствующими вычислениями, например данные из текущей записи могут понадобиться для просмотра других записей в этой же базе.

    35
    МОДУЛЬНОСТЬ ПРОГРАММ
    В FoxPro предусмотрена широкая возможность использования процедур, которые могут быть как внешними (в виде отдельных программных файлов), так и внутренними
    (внутри программы). Частным случаем процедуры является процедура-функция.
    Эти средства удобно использовать для реализации некоторых одинаковых процессов обработки данных. Тогда такой процесс программируется один раз в виде одного из перечисленных выше средств и вызывается в системе по мере необходимости.
    Кроме того, модульное программирование позволяет разработчику гораздо лучше ориентироваться в своей системе, а также сделать более эффективным процесс ее написания и отладки.
    Встречая обращение к процедуре, FoxPro ищет ее в следующей последовательности:
    1. В текущей процедуре;
    2. В процедурном файле, если он подключен;
    3. Снизу вверх в старших процедурах относительно текущей, если они есть;
    4. На диске в виде отдельной программы. Рассмотрим средства структурирования.
    Внешние процедуры
    Внешняя процедура - это совокупность команд, осуществляющих обычно какие-то законченные действия по обработке данных и образующих отдельный командный файл, т.е. отдельную программу (модуль).
    Обращение к процедуре выполняется командой DO:
    DO <имя командного файла> [WITH <список параметров>] [IN <файл>]
    Если не указано расширение имени файла, процедура ищется СУБД на диске в следующей последовательности: сначала в ЕХЕ, затем в АРР, FXP и, наконец, в PRG-файле.
    Процедура вообще может находиться внутри другого IN <файла> как его внутренняя процедура.
    В процедуру могут быть переданы и из нее получены некоторые величины, указанные в списке параметров после слова WITH. Этими величинами могут быть не только переменные и константы, но любые разрешенные выражения. В таком случае первой командой в вызываемой процедуре должна быть команда, воспринимающая их:
    PARAMETERS <список параметров>
    Параметры, указанные в команде DO после слова WITH в вызывающей программе, как принято в алгоритмических языках, называются фактическими, а соответствующие им параметры в вызываемой процедуре (в команде PARAMETERS) - формальными. Программист должен заботиться о том, чтобы передаваемые параметры по типу соответствовали друг другу. Число формальных и фактических параметров может и не совпадать. Если формальных параметров больше, избыточные параметры получают значения .F., если меньше, последует сообщение об ошибке.
    Распознать число фактически переданных параметров можно с помощью функции
    PARAMETERS()
    Завершаются файлы-процедуры одним из следующих образов:
    1. Достижением последней команды файла - осуществляется возврат в старшую вызвавшую программу или на командный уровень, если это самый старший модуль;
    2. Командой RETURN - возврат в старшую программу;
    3. Командой CANCEL - выход на командный уровень;
    4. Командой QUIT - выход из FoxPro в DOS.
    Команда RETURN может содержать опции
    RETURN [ТО MASTER | <процедура> | <выр>]
    Здесь фраза RETURN TO MASTER указывает на переход к самому верхнему уровню вызывающих процедур, a RETURN TO <Процедура> - возврат на процедуру с указанным

    36
    именем. Элемент <выр> применяется для передачи в вызывающую программу результата, если процедура используется как процедура-функция.
    В первом и втором случаях возврат в старшую программу выполняется на команду, следующую за той, от которой произошел вызов подпрограммы. Однако, при некоторых обстоятельствах бывает желательно вернуться именно на команду вызова. Это можно сделать командой
    RETRY
    Подчиненность модулей в общем довольно условна. В FoxPro допускаются даже рекурсии, т.е. обращение процедуры к самой себе.
    Внутренние процедуры
    Использование внешних процедур означает необходимость загрузки в память компьютера соответствующего командного модуля всякий раз, когда он вызывается командой
    DO. Очевидно, что это неэффективно для часто повторяющихся действий, и в этом случае лучше воспользоваться внутренними процедурами.
    Совокупность команд, составляющих внутреннюю процедуру, должна начинаться командой
    PROCEDURE <имя процедуры>
    Для обозначения конца процедуры с возвратом в вызывающий модуль может использоваться команда RETURN, хотя она и не обязательна.
    Процедурный файл
    Множество внешних, обычно "родственных" процедур иногда удобно объединить в один процедурный файл (также типа PRG), который вызывается (загружается в память) командой
    SET PROCEDURE TO <имя процедурного файла>
    Только после этого можно командой DO вызывать из него отдельные процедуры.
    В каждый момент может быть открыт только один процедурный файл. Чтобы его закрыть, нужно использовать команду SET PROCEDURE TO без параметров.
    Процедуры-функции
    Часто встречающиеся процессы, результатом которых является значение единственной переменной, удобно оформить в виде процедуры-функции, т. е. функции, определяемой пользователем.
    После имени ПФ должны стоять обязательные для всех функций в FoxPro скобки - пустые или с аргументами.
    Внутренняя ПФ должна начинаться с команды
    FUNCTION <Имя функции>
    Если в ПФ передаются параметры, второй командой обязательно должна быть команда
    PARAMETERS.
    Завершается ПФ командой RETURN вида RETURN <выр>, где <выр> является результатом функции. Если эта команда опущена, подразумевается RETURN .Т. .
    FoxPro не делает различий между процедурами и процедурами-функциями. К ПФ можно обращаться и как к процедуре - командой DO. В этом случае при возврате в исходную программу значение <выр> в команде RETURN игнорируется.
    Параметры, передаваемые в функцию через команду PARAMETERS, хотя и могут изменяться внутри функции, в вызывающей программе останутся неизменными, поскольку они передаются "по значению". Способом передачи параметров управляет команда
    SET UDFPARMS TO VALUE | REFRENCE
    По умолчанию VALUE. Если мы хотим передать назад не только основной результат через команду RETURN, но и какие-то из измененных параметров, следует воспользоваться установкой REFRENCE ("по ссылке").
    В процедуры и программы параметры всегда передаются "по ссылке", если только они не взяты в скобки, тогда - "по значению".

    37
    Область действия переменных
    Переменные могут передаваться в программы и процедуры не только списком фактических параметров, которые заменяются в них на формальные, но и непосредственно.
    Переменные, введенные в старшем модуле, существуют также во всех подчиненных модулях и могут быть в них обработаны нужным образом, т. е. специально параметры можно не передавать.
    Рассмотрим статус и область действия переменных.
    Глобальные переменные. Переменные и массивы, будучи объявленными как глобальные, имеют силу всюду в среде СУБД - во всех ее программах, подпрограммах и процедурах. Более того, они остаются в СУБД, даже если создавшая их программа закончена и удалена из памяти.
    Такие переменные объявляются командой
    PUBLIC <переменные> [,<массивы переменных>]
    Например, команда ''
    PUBLIC А, В, R(10), 2(2,6)
    объявляет глобальными переменные А и В и массивы R и Z. Применение команды
    DIMENSION для объявления этих массивов больше не требуется. Подобный же эффект имеет использование имен переменных в командном окне. После выполнения, например, команд
    А=3
    В='КНИГА' переменные А и В будут считаться глобальными (PUBLIC) и останутся в памяти в случае загрузки в нее программ, где могут быть изменены.
    Этот эффект удобен, например, для раздельной отладки командных модулей.
    Предположим, что некоторый отлаживаемый модуль нуждается в данных, вырабатываемых другим модулем, который еще не существует или имеется, но мы не хотим тратить каждый раз вргмя на его загрузку и исполнение. В этом случае лучше задать исходные данные вручную в командном окне, и они остаются в памяти. Затем вызываем отлаживаемый модуль на исполнение, выявляем ошибки, запускаем его снова и т.д. При этом исходные данные для него всегда доступны.
    Локальные переменные. Переменные, объявляемые локальными (PRIVATE), существуют только в данном модуле и всех младших по отношению к нему модулях в моменты их вызова.
    PRIVATE <переменные>
    Возможно объявление локальными групп переменных без их поименного перечисления.
    PRIVATE ALL LIKE | EXCEPT <маска>
    Параметры LIKE и EXCEPT разъяснены ранее в команде SAVE.
    Команда PRIVATE применяется для временного (только внутри данной и подчиненных ей процедур) освобождения переменных, существующих в старших модулях или имеющих статус PUBLIC. При этом указанные переменные не уничтожаются, но делаются как бы невидимыми для данного модуля, и их имена могут быть использованы программистом по своему усмотрению. При выходе из указанного модуля все PRIVATE-переменные утрачиваются, а старые переменные восстанавливаются.
    КОМАНДЫ ЯЗЫКА ЗАПРОСОВ SQL
    В язык FoxPro включен ряд команд из языка запросов SQL (Structured Query Language).
    Он хорошо известен многим пользователям, работавшим на больших ЭВМ, и считается стандартом. Хотя первоначально включение SQL в пакет FoxPro было вызвано желанием скорее придать формальную полноту средствам СУБД, чем потребностями программистов, рассматриваемые ниже команды являются полезным и быстрым инструментом обработки данных.
    Команды SQL могут непосредственно включаться в программы наряду с собственными командами
    FoxPro.
    Создание баз данных
    CREATE DBF (<имя поля> <тип> [(<размер>[,<дробных разрядов>])
    [,<имя поля>...]])
    | FROM ARRAY <массив>

    38
    Команда создает новую базу данных с указанным именем. Для каждого поля задаются его имя, тип (одной из букв С, N, D, M, F, L), длина и число десятичных разрядов. Длина и точность не задаются для типов дата (D), логический (L) и примечаний (М), а точность - для символьного типа (С). Все требования к описанию поли базы данных - стандартные. Созданная база сразу открывается.
    Описание полей может быть задано и из <массива> при использовании опции FROM
    ARRAY. Такой двумерный массив из четырех столбцов и строк в количестве, совпадающем с количеством полей, должен иметь указанное выше наполнение. Например, функция AFIELDSO как раз генерирует такой массив из открытой базы данных.
    П р и м е р . Создание базы KADR.DBF.
    CREATE DBF Jcadr (FAM С (25), TAB N ( 3 ) , DTK D, POL C(l), ;
    SEM C(l), DET N(l), POOR С (15), SZAR N(7), PER M )
    He исключено, что такой способ покажется вам более удобным механизмом создания баз данных из программы (чем с помощью команды CREATE FROM). Команда допускает использование макроподстановки.
    1   2   3   4   5   6   7   8   9   10   11


    написать администратору сайта