ftd
.pdf
<служебное слово>::= begin end if then else for next и т.д.
<спецсимвол>::= <знак арифметической операции>|<разделитель>|<служебное слово>
<основной символ>::=<буква>|<цифра>|<спецсимвол> <комментарий>::= <любая последовательность символов>
Несмотря на значительные различия между языками программирования, ряд фундаментальных понятий в большинстве из них схожи. Приведем часть из них.
Оператор – одно из ведущих понятий всех языков программирования (теоретически, за исключением чисто декларативных; но в действительности и они используют родственное понятие).
Оператор представляет собой законченную фразу языка и однозначно трактуемый этап обработки данных.
В соответствии с теорией алгоритмов выделяют основные (базисные) операторы языка: присвоения, условный и безусловный переход, пустой оператор. К производным не основным, относят составной оператор, оператор выбора, оператор цикла и оператор присоединения.
Все операторы языка в тексте программы отделяются друг от друга явными или неявными разделителями, например:
S1; S2;…..Sn
Операторы выполняются в порядке их следования в тексте программы. Лишь с помощью операторов перехода этот естественный порядок может быть нарушен.
Большая часть операторов ведет обработку величин. Величины могут быть постоянными и переменными. Значения постоянных величин не изменяются в ходе выполнения программы. Величина характеризуется типом, именем и значением. Наиболее распространенные типы величин – числовые (целые и вещественные), символьные, логические. Тип величины определяется ее значением.
Другая важная классификация величин – простые и структурированные. Простая величина в каждый момент может иметь не более одного значения. Ей соответствует одна ячейка памяти (поскольку термин «ячейка» несколько устарел, часто говорят «машинное слово») или ее эквивалент во внешней памяти компьютера. Структурированная величина, имея одно имя, может иметь разом несколько значений. Эти значения представляют собой элементы (компоненты) величины. Самый широкоизвестный пример – массив, у которого элементы различаются по индексам (номерам). Вопрос о структурировании величин – входных, выходных и промежуточных – для успеха решения прикладной задачи не менее важен, чем вопрос о правильном написании последовательности операторов.
Важнейшие характеристики структурированной величины таковы:
•упорядоченность (да или нет),
•однородность (да или нет),
•способ доступа к элементам,
•фиксированность числа элементов.
Так, массив является упорядоченной однородной структурой с прямым доступом к элементам и фиксированным их количеством.
Всем программным объектам в языках даются индивидуальные имена.
Идентификатор - имя программного объекта (от слова «идентифицировать.
Чаще всего идентификатором является любая конечная последовательность букв и цифр, начинающаяся с буквы:
<идентификатор>::=<буква>|<идентификатор>|<буква><идентификатор><цифра>
Как правило, в большинстве языков программирования в качестве идентификатора запрещается использовать служебные слова языка.
Многим слово «идентификатор» не нравится, и в настоящее время чаще употребляют слово «имя», поскольку
<имя>::=<идентификатор>.
Программисты выбирают имена по своему усмотрению. Принципы выбора и назначения имен программным объектам естественны. Следует избегать мало выразительных обозначений, не гоняться за краткими именами. Имена должны быть понятны, наглядны, отображать суть обозначаемого объекта. Например,
Summa, Time, I, j ,integral, init и т.д.
Некоторым идентификаторам заранее предписан определенный смысл и их называют стандартными, например, Sin – имя известной математической функции.
Описания или объявления программных объектов связаны с правилами обработки данных.
Данные бывают разные, и необходимо для каждого из них определить свойства. Например, если в качестве данных выступает массив, то необходимо задать его размерность, границы индексов, тип элементов массива.
Описательная часть языков программирования является необходимой как для системных программистов – разработчиков трансляторов, которые должны, в частности, проводить синтаксическую и семантическую диагностику программ,
– так и для «прикладного» программиста, которому объявления программных объектов часто облегчают процесс разработки и отладки программ.
В некоторых языках стандартные описания простых числовых и символьных данных опускают (описания по умолчанию), или в них задаются правила описания по имени объекта.
Особый интерес представляют описания нестандартных структур данных, таких как запись, файл, объект, список, дерево и т.д. Наиболее употребимые обозначения типов данных, используемых в описаниях:
Целый – Integer,
Вещественный – Real, Логический – Boolean, Символьный – Char, Строковый – String,
Массив – Array,
Множество – Set
Файл – File, Запись – Record, Объект – object.
Переменные играют важнейшую роль в системах программирования. понятие «переменная» в языках программирования отличается от общепринятого в математике.
Переменная – это программный объект, способный принимать некоторое значение с помощью оператора присваивания.
В ходе выполнения программы значения переменной могут неоднократно изменяться. Каждая переменная после ее описания отождествляется с некоторой ячейкой памяти, содержимое которой является ее значением. Синтаксис переменной, точнее, ее идентификатора, как правило, имеет вид:
<имя переменной>::= →<буква>→ →<буква>→ →<цифра>→ →<спецсимвол>→
Семантический смысл переменной заключается в хранении некоторого значения, соответствующего ее типу (например, переменная целого типа может принимать значение произвольного целого числа), а также в выполнении с ней операций пересылки в нее и извлечения из нее этого значения.
Функция – это программный объект, задающий вычислительную процедуру определенного значения, зависимого от некоторых аргументов.
Вводится в языки программирования для задания программистом необходимых ему функциональных зависимостей. В каждом языке высокого уровня имеется в наличии библиотека стандартных функций: арифметических, логических, символьных, файловых и т.п. Функции – стандартные и задаваемые программистом - используются в программе в выражениях.
Выражения строятся из величин – постоянных и переменных, функций, скобок, знаков операций и т.д. Выражение имеет определенный тип, определяемый типом принимаемых в итоге его вычисления значений.
Возможны выражения арифметические, принимающие числовые значения, логические, символьные, строковые и т.д. выражение 5 + 7 является, несомненно, арифметическим, выражение А + В может иметь разный смысл - в зависимости от того, что стоит за идентификаторами А и В.
Процедура – это программный объект, представляющий некоторый самостоятельный этап обработки данных.
По сути, процедуры явились преемниками подпрограмм, которые были введены для облегчения разработки программ еще на ранних стадиях формирования алгоритмических языков. Процедура имеет входные и выходные параметры, называемые формальными. При использовании процедуры формальные параметры заменяются на фактические.
Модуль (Unit) – это специальная программная единица, предназначенная для создания библиотек и разделения больших программ на логически связанные блоки.
По сути, модуль – это набор констант, типов данных, переменных, процедур
ифункций. В состав модуля входят разделы:
•Заголовок, необходимый для ссылок на модуль,
•Интерфейс, содержащий объявления, включая процедуры и функции,
•Реализации, содержащий тела процедур и функций, перечисленных в интерфейсной части
•Инициализации, содержащий операторы, необходимые для инициализации модуля.
Каждый модуль компилируется отдельно, и каждый элемент модуля можно использовать в программе без дополнительного объявления.
Технология программирования языков высокого уровня является предметом специальной дисциплины.
ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ
1.Какие преимущества имеют языки программирования высокого уровня по сравнению с машинно-ориентированными языками?
2.Каковы основные составляющие языка программирования высокого уровня?
3.В чем различия понятий языков программирования от аналогичных понятий математического языка?
4.В чем различие между постоянными и переменными величинами? Чем характеризуется величина?
5.В чем принципиальная разница между величинами простыми и структурированными?
6.Для чего служит описание величин в программах?
7.В чем состоит назначение функций? Процедур? Модулей?
ГЛОССАРИЙ
Алфавит – фиксированный для данного языка набор основных символов,
допускаемых для составления текста программы на этом языке.
Выражения строятся из величин – постоянных и переменных, функций, скобок, знаков операций и т.д. Выражение имеет определенный тип, определяемый типом принимаемых в итоге его вычисления значений.
Идентификатор - имя программного объекта (от слова идентифицировать).
Модуль – это специальная программная единица, предназначенная для создания библиотек и разделения больших программ на логически связанные блоки.
Оператор представляет собой законченную фразу языка и однозначно трактуемый этап обработки данных.
Описания или объявления программных объектов связаны с правилами обработки
данных.
Переменная – это программный объект, способный принимать некоторое значение с помощью оператора присваивания.
Понятие – некоторая синтаксическая конструкция и определяемые ею свойства
программных объектов или процесса обработки данных.
Процедура – это программный объект, представляющий некоторый самостоятельный
этап обработки данных.
Семантика – система правил однозначного толкования отдельных языковых
конструкций, позволяющих воспроизвести процесс обработки данных. Синтаксис – система правил, определяющих допустимые конструкции языка
программирования из букв алфавита.
Трансляция – это создание программы в машинных кодах, которую можно выполнить. Функция – это программный объект, задающий вычислительную процедуру
определенного значения, зависимого от некоторых аргументов.
Языки программирования – это формальные языки, специально созданные для общения человека с компьютером.
6
ГЛАВА
БАЗЫ ДАННЫХ
6.1.Основные понятия.
•База данных,
•Виды моделей данных.
6.2.Реляционный подход к построению инфологической модели.
•Понятие информационного объекта,
•Нормализация отношений,
•Структурные связи,
•Архитектура СУБД,
•Понятие информационно-логической модели,
•Понятие логической модели
6.3.Функциональные возможности СУБД.
6.4.Данные и знания.
6.5.Модели представления знаний.
Цель главы – познакомить с функциональными возможностями баз данных, общей методологией использования этих программных средств в профессиональной работе, связанной с организацией хранения и обработки данных, дать понятие о базах знаний.
ПОСЛЕ ИЗУЧЕНИЯ ГЛАВЫ ВЫ ДОЛЖНЫ ЗНАТЬ:
Понятие и назначение базы данных (БД) и системами управления базами данных (СУБД),
различие архитектур баз данных, виды моделей данных,
понятие и назначение инфологической модели, типы реальных связей информационных объектов, нормализацию отношений и виды отношений, понятие и назначение баз знаний.
|
КЛЮЧЕВЫЕ ПОНЯТИЯ |
Архитектура |
Предметная область |
Граф |
Продукционная модель |
Данные |
Реляционный |
Знания |
Семантика |
Информационный объект |
Структурирование |
Клиент-сервер |
Узел |
Ключ |
Файл-сервер |
Модель данных |
Фрейм |
Нормализация |
Целостность данных |
Предикат |
|
6.1. ОСНОВНЫЕ ПОНЯТИЯ
Современные информационные системы, основанные на концепции интеграции данных, характеризуются огромными объемами хранимых данных, сложной организацией, необходимостью удовлетворять разнообразные требования многочисленных пользователей.
База данных
Хранение информации - одна из важнейших функций компьютера. Одним из распространенных средств такого хранения являются базы данных.
База данных - это файл специального формата, содержащий информацию, структурированную заданным образом.
В широком смысле слова база данных – это совокупность сведений о конкретных объектах реального мира в какой-либо предметной области.
Предметная область - часть реального мира, подлежащего изучению для организации управления и, в конечном счете, автоматизации, например, предприятие, вуз и т.д.
Создавая базу данных, пользователь стремится упорядочить информацию по различным признакам и быстро извлекать выборку с произвольным сочетанием признаков.
Простейшие базы можно создавать, не прибегая к специальным программным средствам. Чтобы файл считался базой данных, информация в нем должна иметь структуру (поля) и быть форматирована так, чтобы содержимое соседних полей легко различалась, т.е. данные структурированы.
Структурирование – это введение соглашений о способах представления данных.
Простейшие базы можно создавать даже в текстовом редакторе. Существуют два формата текстовых баз данных: С заданным разделителем, например,
Фамилия, Имя, Отчество, дата рождения. |
|
||
Иванов, Иван, Петрович, 1942/12/2. |
|
||
и с фиксированной длиной поля |
|
||
Фамилия |
Имя |
Отчество |
Дата рождения |
Иванов |
Иван |
Петрович |
1942/12/2 |
Пример неструктурированных данных:
Личное дело №123445, Сергеев Петр Михайлович, дата рождения 1 января 1978, Личное дело №456738, Петрова Анна Владимировна, дата рождения 15 марта 1976 года; и т.д.
Таким образом, база данных (БД) – это поименованная совокупность структурированных данных, относящихся к определенной предметной области.
В современной технологии баз данных предполагается, что создание базы данных, ее поддержка и обеспечение доступа пользователей к ней осуществляется централизованно с помощью специального программного инструментария – системы управления базами данных.
Система управления базами данных (СУБД) - это комплекс программных и языковых средств, необходимых для создания баз данных, поддержания их в актуальном состоянии и организации поиска в них необходимой информации.
Централизованный характер управления данными в базе предполагает необходимость существования некоторого лица (или группы лиц), на которое возлагаются функции администрирования данными, хранимыми в базе.
Классификация баз данных
По технологии обработки данных базы данных подразделяются на централизованные и распределенные.
Централизованная база данных хранится в памяти одной вычислительной системы. Если эта вычислительная система является компонентом сети ЭВМ, возможен распределенный доступ к такой базе. Такой способ использования баз данных часто применяют в локальных сетях ПК.
Распределенная база данных состоит из нескольких, возможно пересекающихся или даже дублирующих друг друга частей, хранимых в различных ЭВМ вычислительной сети. Работа с такой базой осуществляется с помощью системы управления распределенной базой данных (СУРБД).
По способу доступа к данным базы данных разделяются на базы данных с локальным доступом и базы данных с удаленным (сетевым) доступом.
Системы централизованных баз данных с сетевым доступом предполагают различные архитектуры подобных систем:
•файл-сервер;
•клиент-сервер.
Файл-сервер. Архитектура систем БД с сетевым доступом предполагает выделение одной из машин сети в качестве центральной (сервер файлов). На такой машине хранится совместно используемая централизованная БД. Все другие машины сети выполняют функции рабочих станций, с помощью которых поддерживается доступ пользовательской системы к централизованной базе данных. Файлы базы данных в соответствии с пользовательскими запросами передаются на рабочие станции, где в основном и производится обработка. При большой интенсивности доступа к одним и тем же данным производительность информационной системы падает. Пользователи могут создавать также на рабочих станциях локальные БД, которые используются ими монопольно. Концепция файл-сервер условно отображена на рис. 6.1а).
Клиент-сервер. В этой концепции подразумевается, что помимо хранения централизованной базы данных центральная машина (сервер базы данных) должна обеспечивать выполнение основного объема обработки данных. Запрос на данные, выдаваемый клиентом (рабочей станцией), порождает поиск и
извлечение данных на сервере. Извлеченные данные (но не файлы) транспортируются по сети от сервера к клиенту. Спецификой архитектуры клиент-сервер является использование языка запросов SQL. Концепция клиентсервер условно изображена на рис. 6.1б).
|
– Хранение |
Сервер базы |
|
|
|
|
|
Файл-сервер |
– Обработка |
данных |
|
|
|||
Передача файлов БД для обработки |
|
Транспортировка извлеченных данных из БД |
|
Рабочие станции |
|
|
Рабочие станции |
а) Схема обработки информации в БД |
б) Схема обработки информации в БД |
||
по принципу файл-сервер |
|
|
по принципу клиент-сервер |
Рис. 6.1
Виды моделей данных
Ядром любой базы данных является модель данных. Модель данных представляет собой множество структур данных, ограничений целостности и операций манипулирования данными. С помощью модели данных могут быть представлены объекты предметной области и взаимосвязи между ними.
Модель данных — совокупность структур данных и операций их обработки
СУБД основывается на использовании иерархической, сетевой или реляционной модели, на комбинации этих моделей или на некотором их подмножестве.
Иерархическая модель данных
Иерархическая структура представляет совокупность элементов, связанных между собой по определенным правилам. Объекты, связанные иерархическими отношениями, образуют ориентированный граф (перевернутое дерево), вид которого представлен на рис. 6.2.
Уровень 1 |
А |
Уровень 2 В1 В2 |
ВЗ |
В4 |
В5 |
Уровень 3 С1 С2 СЗ С4 С5 С6 С7 С8
Рис. 6.2. Графическое изображение иерархической структуры БД
К основным понятиям иерархической структуры относятся: уровень, элемент (узел), связь.
Узел — совокупность атрибутов данных, описывающих некоторый объект.
На схеме иерархического дерева узлы представляются вершинами графа. Каждый узел на более низком уровне связан только с одним узлом, находящимся на более высоком уровне. Иерархическое дерево имеет только одну вершину (корень дерева), не подчиненную никакой другой вершине и находящуюся на самом верхнем (первом) уровне. Зависимые (подчиненные) узлы находятся на втором, третьем и т.д. уровнях. Количество деревьев в базе данных определяется числом корневых записей.
К каждой записи базы данных существует только один (иерархический) путь от корневой записи. Например, как видно из рис.6.2, для записи С4 путь проходит через ВЗ.
Пример, представленный на рис. 6.3, иллюстрирует использование иерархической модели базы данных.
Для рассматриваемого примера иерархическая структура правомерна, так как каждый студент учится в определенной (только одной) группе, которая относится к определенному (только одному) институту.
Рис.6.3. Пример иерархической структуры БД
