• Исправление информации (также с контролем правильности ввода).
• Удаление устаревшей информации.
• Контроль целостности и непротиворечивости данных. Под термином "целостность" обычно понимают то, что данные, хранящиеся в разных частях базы данных, не противоречат друг другу, например, дата поступления в школу явно не может быть позже даты ее окончания.
• Защита данных от разрушения. Помимо контроля за целостностью, который только что обсуждался, субд должна иметь средства защиты данных от выключения электропитани'я, сбоев оборудования и других аварийных ситуаций, а также возможности последующего восстановления информации. Особую актуальность данный пункт приобретает в сложных многопользовательских системах.
• Поиск информации с необходимыми свойствами. Одна из наиболее важных в практическом отношении задач, ради которой ставятся все остальные.
• Автоматическое упорядочивание информации в соответствии с требованиями человека. Сюда относится сортировка данных, распределение их между несколькими базами и другие подобные процедуры.
• Обеспечение коллективного доступа к данным. В современных информационных системах возможен параллельный доступ к одним и тем же данным нескольких пользователей, поэтому субд должны поддерживать такой режим.
• Защита от несанкционированного доступа. Не только ввод новой информации, но даже ее просмотр должны быть разрешены только тем пользователям, у которых есть на это права. Причем речь идет не только о сохранении военной или коммерческой тайны. Например, казалось бы, такой безобидный факт, извлеченный из БД, как неоднократная покупка человеком определенного лекарства в аптеке, в принципе может привести к тому, что при приеме на работу будет взят другой претендент.
• Удобный и интуитивно понятный пользователю интерфейс.
13.Понятие алгоритма. Свойства алгоритмов. Возможность автоматизации деятельности человека. Привести примеры.
Алгоритм — это понятное и точное указание исполнителю совершить последовательность действий, направленных на решение поставленной задачи.
Термин имеет интересное историческое происхождение. В IX веке великий узбекский математик Аль Хорезми разработал правила арифметических действий над десятичными числами. Совокупность этих правил в Европе стали называть "алгоризм". Впоследствии слово трансформировалось до известного нам сейчас вида и, кроме того, расширило свое значение: алгоритмом стали называть любую последовательность действий (не только арифметических), которая приводит к решению той или иной задачи. Можно сказать, что понятие вышло за рамки математики и стало применяться в самых различных областях.
Для того чтобы произвольное описание последовательности действий было алгоритмом, оно должно обладать следующими свойствами.
Дискретность
Процесс решения задачи должен быть разбит на последовательность отдельных шагов, каждый из которых называется командой. Примером команд могут служить пункты инструкции, нажатие на одну из кнопок пульта управления, рисование графического примитива (линии, дуги и т. п.), оператор языка программирования. Наиболее существенным здесь является тот факт, что алгоритм есть последовательность четко выделенных пунктов, — такие "прерывные" объекты в науке принято называть дискретными.
Понятность
Каждая команда алгоритма должна быть понятна тому, кто исполняет алгоритм; в противном случае эта команда и, следовательно, весь алгоритм в целом не могут быть выполнены. Данное требование можно сформулировать более просто и конкретно. Составим полный список команд, которые умеет делать исполнитель алгоритма, и назовем его системой команд исполнителя (СКИ). Тогда понятными будут являться только те команды, которые попадают в этот список. Именно из такой формулировки становится ясно, почему компьютер такой "привередливый" при приеме введенных в него команд: даже если неверно написана всего одна буква, команда уже не может быть обнаружена в СКИ.
Приведем теперь несколько примеров. Рядовой школьник вряд ли сможет найти статистическое среднее, но не потому, что это очень сложно, а просто из-за незнакомого термина. Переформулируйте задачу (найти сумму чисел и поделить на их количество), и ученик немедленно с ней справится. Или еще. Казалось бы, что может быть проще, чем нарисовать на экране точку. Но, пока вы не будете знать команду, которая это делает, получить результат будет невозможно. Обратите внимание, что совсем не обязательно речь идет об операторе языка программирования. Определенную СКИ, оформленную в форме панели инструментов, имеет и графический редактор.
Определенность (или детерминированность)
Команды, образующие алгоритм (или, можно сказать, входящие в СКИ), должны быть предельно четкими и однозначными. Их результат не может зависеть от какой-либо дополнительной информации извне алгоритма. Сколько бы раз вы не запускали программу, для одних и тех же исходных данных всегда будет получаться один и тот же результат.
При наличии ошибок в алгоритме последнее сформулированное свойство может иногда нарушаться. Например, если не было предусмотрено присвоение переменной начального значения, то результат в некоторых случаях может зависеть от случайного состояния той или иной ячейки памяти компьютера. Но это скорее не опровергает, а подтверждает правило: алгоритм должен быть определенным, в противном случае это не алгоритм.
Результативность
Результат выполнения алгоритма должен быть обязательно получен, т. е. правильный алгоритм не может обрываться безрезультатно из-за какого-либо непреодолимого препятствия в ходе выполнения. Кроме того, любой алгоритм должен завершиться за конечное число шагов. Большинство алгоритмов данным требованиям удовлетворяют, но при наличии ошибок возможны нарушения результативности. В качестве первого примера возьмем случай, когда алгоритм по тем или иным причинам получит в качестве номера символа в строке отрицательное число. При попытке найти такой символ выполнение алгоритма, естественно, завершится аварийным образом. Теперь пример другой ситуации. Рассмотрим алгоритм деления некоторого числа п "столбиком" на 3. При п == 4,2 он благополучно получает результат, а вот для простейшего значения п = 1 процесс деления оказывается бесконечным. Впрочем, достаточно дополнить алгоритм условием на количество требуемых в ответе знаков после запятой, и результативность немедленно будет восстановлена.
Корректность
Любой алгоритм создан для решения той или иной задачи, поэтому нам необходима уверенность, что это решение будет правильным для любых допустимых исходных данных. Указанное свойство алгоритма принято называть его корректностью. В связи с обсуждаемым свойством большое значение имеет тщательное тестирование алгоритма перед его использованием. Как показывает опыт, грамотная и всесторонняя отладка для сложных алгоритмов часто требует значительно больших усилий, чем собственно разработка этих алгоритмов. При этом важно не столько количество проверенных сочетаний входных данных, сколько количество их типов. Например, можно сделать сколько угодно проверок для положительных значений аргумента алгоритма, но это никак не будет гарантировать корректную его работу в случае отрицательной величины аргумента. Кстати говоря, именно результатом недостаточной тщательности тестирования чаще всего объясняются многочисленные сюрпризы, преподносимые современным программным обеспечением в процессе эксплуатации.
Массовость
Алгоритм имеет смысл разрабатывать только в том случае, когда он будет применяться многократно для различных наборов исходных данных. Например, если составляется алгоритм обработки текстов, то вряд ли целесообразно ограничивать его возможности только, русскими буквами — стоит предусмотреть также латинский алфавит, цифры, знаки препинания и т. п. Тем более что такое обобщение особых трудностей не вызывает. Заметим, что массовость алгоритма в отдельных случаях может нарушаться: к числу подобных исключений можно отнести алгоритмы пользования некоторыми простыми автоматами (для них входными данными служит единственный тип монет) или довольно яркий и впечатляющий алгоритм поиска клада, который бессмысленно выполнять повторно.
Пример.
Рассмотрим пример алгоритма для нахождения середины отрезка при помощи циркуля и линейки.
Алгоритм деления отрезка АВ пополам:
1) поставить ножку циркуля в точку А;
2) установить раствор циркуля равным длине отрезка АВ;
3) провести окружность;
4) поставить ножку циркуля в точку В;
5) провести окружность;
6) через точки пересечения окружностей провести прямую;
7) отметить точку пересечения этой прямой с отрезком.
14. «Линейная» алгоритмическая структура. Команда присваивания. Привести примеры.
Для представления алгоритма в виде, понятном компьютеру, служат языки программирования. Сначала разрабатывается алгоритм действий, а потом он записывается на одном из таких языков. В итоге получается текст программы - полное, законченное и детальное описание алгоритма на языке программирования. Затем этот текст программы специальными служебными приложениями, которые называются трансляторами, либо переводится в машинный код (язык нулей и единиц), либо исполняется.
Языки программирования - искусственные языки. От естественных они отличаются ограниченным числом "слов", значение которых понятно транслятору, и очень строгими правилами записи команд (операторов).
Существует большое количество алгоритмов, в которых команды должны быть выполнены одна за другой. Такие алгоритмы называются линейными.
Программа имеет линейную структуру, если все операторы (команды) выполняются последовательно друг за другом.

Оператор присваивания — один из самых простых и наиболее часто используемых операторов в любом языке программирования. Он предназначен для вычисления нового значения некоторой переменной, а также для определения значения, возвращаемого функцией.
В общем виде оператор присваивания можно записать так:
<переменная> < знак команды присваивания > <выражение>
Оператор выполняется следующим образом. Вычисляется выражение в правой части присваивания. После итого переменная, указанная в левой части, получает вычисленное значение. При этом тип выражения должен быть совместим по присваиванию с типом переменной.
Свойства присваивания:
• пока переменной не присвоено значение, она остается неопределенной;
• значение, присвоенное переменной, сохраняется в ней вплоть до выполнения следующего присваивания этой переменной нового значения;
• новое значение, присвоенное переменной, заменяет ее предыдущее значение.
выражения предназначаются для выполнения необходимых вычислений, состоят из операндов (констант, переменных, вызовов функций), объединенных знаками операций. Выражения записываются в виде линейных последовательностей символов (без подстрочных и надстрочных символов, обыкновенных дробен и т. д.), что позволяет вводить их в компьютер.
s = 1
….
s:= s + 1
15. Алгоритмическая структура «ветвления». Команда ветвления. Привести примеры
Ветвления играют в алгоритмах очень большую роль, поскольку предусматривают корректную реакцию на самые разнообразные ситуации, возникающие в процессе обработки информации. Благодаря этой структуре алгоритм приобретает способность выбирать, один из существующих вариантов работы, наиболее подходящий к сложившейся в данный момент ситуации. В частном случае речь может идти о выполнении или игнорировании при определенных условиях того или иного участка алгоритма.
Команду ветвления чаще всего называют по первому слову конструкции — если. Вся команда обычно записывается в форме одного из приведенных ниже вариантов:
если логическое выражение
то серия команд 1
иначе серия команд 2
конец ветвления
если логическое выражение
то серия команд
конец ветвления
Первый вариант принято называть полным, а второй — неполным.
Команда ветвления, как и любая другая, может быть:
• записана на естественном языке;
• изображена в виде блок-схемы;
• записана на алгоритмическом языке;
• закодирована на языке программирования.
вариант ветвления):
|

Глядя на рисунок, легко понять, почему ветвление часто называют развилкой.
Приведем также полную форму ветвления в различных алгоритмических языках.
Бейсик, Паскаль
if <AB> then < серия команд 1>
else < серия команд 2>
Примеры
Во многих случаях требуется, чтобы при одних условиях выполнялась одна последовательность действий, а при других - другая.

program maximum_3x; {задача на нахождение максимального из трех чисел}
var a, b,с,m: real ;
begin
readin(a, b,c) ;
if a > b then m := a else m := b;
if с > m then m := c;
writeIn ('maximum’ ,m: 9: 4)
end.
Из книги Григория Остера "Вредные советы"; например, такой:
Если друг на день рожденья
Пригласил тебя к себе,
То оставь подарок дома —
Пригодится самому.
16. Алгоритмическая структура « цикл». Команда повторения. Привести примеры.
Достаточно часто при организации алгоритма решения задачи необходимо одну и ту же определенную последовательность команд выполнить несколько раз подряд. Конечно, самый простой способ — записать эти команды несколько раз друг за другом, и необходимое повторение действий будет организовано. Но как быть в тех случаях; когда количество команд, которые исполняются несколько раз, слишком велико? Или само количество повторений команд огромно? Или вообще неизвестно, а сколько же раз нужно повторить последовательность команд? Решить все эти проблемы можно, если использовать алгоритмическую структуру цикл.
Командой повторения, или циклом, называется такая форма организации действий в алгоритме, при которой выполнение одной и той же последовательности команд повторяется до тех пор, пока истинно некоторое логическое выражение.
Различают циклы с известным числом повторений (цикл с параметром) и итерационные (с пред - и постусловием).
Приведем обозначение каждого из видов циклов на блок-схемах алгоритмов.
![]()
Цикл с параметром Цикл с предусловием Цикл с постусловием
![]()



![]()



![]()



На схемах "Серия" обозначает один или несколько любых операторов (команд); ЛВ есть логическое выражение (если его значение истина, переход происходит по ветви, обозначенной да, иначе — по нет). На схеме цикла с параметром использованы обозначения: ПЦ — параметр цикла, НЗ — начальное значение параметра цикла, КЗ — конечное значение параметра цикла, Ш — шаг изменения параметра цикла. Серию команд, которые выполняются в цикле, называют телом цикла.Опишем схематично, как выполняется каждый из циклов.
Цикл с предусловием:
а) вычисляется значение логического выражения;
6) если значение логического выражения истина, переход к следующему пункту, иначе к п. д);
в) выполняется тело цикла;
г) переход к п. а);
д) конец цикла.
Цикл с постусловием:
а) выполняется тело цикла;
6) вычисляется значение логического выражения;
в) если значение логического выражения ложь, переход к п. а), иначе к следующему пункту;
г) конец цикла.
Замечание. Таким образом, цикл с постусловием организован, в частности, в алгоритмических языках Паскаль и QBasic. В языке Си переход к повторению вычислений, как и в цикле с предусловием, осуществляется в случае истинности логического выражения.
Цикл с параметром:
а) вычисляются значения выражений, определяющие начальное и конечное значения параметра цикла;
б) параметру цикла присваивается начальное значение;
в) параметр цикла сравнивается с конечным значением;
г) если параметр цикла превосходит (при положительном шаге) конечное значение параметра цикла (или, наоборот, меньше конечного значения параметра цикла при отрицательном шаге), переход к п. з), иначе к следующему пункту;
д) выполняется тело цикла;
е) параметр цикла автоматически изменяется на значение шага;
ж) переход к п. в);
з) конец цикла.
Циклы с предусловием и постусловием в большинстве случаев (за исключением отдельных реализации алгоритмических языков) являются более универсальными по сравнению с циклом с параметром, поскольку в последнем требуется заранее указать число повторений, в то время как в первых двух это не требуется. Цикл с параметром в любом случае может быть преобразован к циклу с пред - или постусловием. Обратное верно не всегда
Например, на уроке физкультуры вы должны пробежать некоторое количество кругов вокруг стадиона.

В субботу вечером вы смотрите телевизор. Время от времени поглядываете на часы и если время меньше полуночи, то продолжаете смотреть телевизор, если это не так, то вы прекращаете просмотр телепередач.

Циклы такого вида называют - циклы с предусловием.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 |




