Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Гладков_Кулютникова.doc
Скачиваний:
8
Добавлен:
03.11.2018
Размер:
1.36 Mб
Скачать

Системы управления базами данных (субд)

База данных - интегрированное хранилище разнородной информации, позволяющее совместное использование, применимое для разных приложений.

Примером простейшей базы данных может служить записная книжка, телефонный справочник. Если записей в базе данных мало, то ей можно управлять с помощью карандаша и бумаги. Но если база данных содержит сотни и более записей, то необходимо переходить к автоматизированному ведению такой базы. Главное преимущество, которое дает такой подход - это быстрый поиск необходимых сведений и представление их в удобной форме. Причем поиск информации в автоматизированной базе данных может осуществляться по алфавиту, по адресу или по любой совокупности признаков, характеризующих искомые объекты.

Состав базы данных:

  • база данных;

  • СУБД;

  • администратор базы данных;

  • словарь-справочник.

СУБД - прикладная программа, позволяющая формировать базу данных, производить поиск требуемых данных по информационным запросам, вносить изменения в базу, обрабатывать данные, хранящиеся в базе, и др.

СУБД дает возможность:

  • организовать интегральное множество данных, доступное широкому кругу пользователей;

  • поддерживать достоверность и непротиворечивость данных;

  • обеспечивать централизованные средства защиты памяти (сохранение записей);

  • продлить неопределенно долго срок существования данных.

В настоящее время наиболее популярны СУБД семейства dBase, Knowledgeman, FoxPro, FoxBase, Paradox, Clipper, Clarion, db-Vista, Microsoft Access, СУБД с SQL - доступом (фирмы Oracle, Centura, Sybase, Informix и др.).

Пример. Спроектируйте базу данных друзей, которая содержит следующую информацию: фамилия, имя, домашний адрес, телефон, день рождения, наличие домашнего животного.

ФИО

Дом. адрес

Дом. телефон

Д.р.

Дом. жив.

Иванов Иван

ул. Краснова, 1-11

11-11-11

1.01.80

2

Петров Петр

ул. Ленина, 2-22

22-22-22

2.02.80

3

Сидоров Сидор

ул. Попова, 3-33

33-33-33

3.03.80

0

Запрос к этой базе данных: «Найти друзей, родившихся в марте и имеющих не более одного домашнего животного» будет выглядеть следующим образом:

display fields фио, for д.р. = 03 and дом.жив. <= 1.

Упражнения:

  1. Приведите пример конкретной СУБД и команд для работы с ней.

  2. Покажите, как в этой СУБД будет записан запрос: «Найти школьников, имеющих первый спортивный разряд и знающих информатику не менее, чем на 4» к базе данных учащихся некоторой школы.

Пример решения экзаменационного билета

вступительного экзамена в ПГТУ 1 9997 году

ВАРИАНТ 1-97.

1. Привести пример алгоритма. 1 балл

Показать его свойства. 1 балл

2. Найти X из условия: 135x + 250X=1X110. 2 балла

3. Установить, какую задачу решает приведенный ниже фрагмент программы.

1 балл.

Изменится ли результат работы программы, если отмеченную точку с запятой заменить символом else? Почему? 1 балл.

Переписать фрагмент с использованием оператора while. 1 балл.

max:=a[1]; min:=a[1];

for i:=2 to n do

begin if max<a[i]

then max:=a[i] ( ; )

if min>a[i]

then min:=a[i]

end;

4. У каждого из N предпринимателей есть денежный капитал, размер которого они друг от друга скрывают. Все они хранят деньги в одном банке. Служащие банка имеют доступ только к следующей информации:

1) сумма капиталов всех предпринимателей, кроме первого;

2) сумма капиталов всех предпринимателей, кроме второго;

. . . и так далее;

n) сумма капиталов всех предпринимателей, кроме n-ого.

Определить размер капитала каждого предпринимателя. Необходимо:

1) словесно описать идею решения задачи 1 балла

2) написать программу с комментариями на Паскале 2 балла

3) разработать тесты для программы 1 балл.

5. Инопланетянин с Тау Кита, сразу после прибытия на Землю, в понедельник, воскликнул: "А", во вторник - "АУ", в среду - "АУУА", в четверг - "АУУАУААУ". Что он воскликнет на n-й день?

Необходимо:

1) словесно описать идею решения задачи 2 балла

2) написать программу с комментариями на Паскале 2 балла.

Р Е Ш Е Н И Я

Задание 1. Алгоритм - последовательность действий, ведущая от исходных данных к нужному результату, и удовлетворяющая трем основным свойствам: детерминированности, массовости и конечности.

Пример: алгоритм "Варка картофеля"

1) Взять кастрюлю такого объема, чтобы в нее вместился картофель, который требуется сварить.

2) Пока картофель не закончился, повторять:

2.1) Взять одну картофелину;

2.2) Вымыть ее;

2.3) Очистить от кожуры;

2.4) Положить вычищенную картофелину в кастрюлю.

3) Налить в кастрюлю воды так, чтобы она закрыла картофель.

4) Поставить кастрюлю на огонь.

5) Снять через 20 минут.

Этот алгоритм может выполнить исполнитель, понимающий и умеющий выполнять любую из команд, имеющихся в данном алгоритме. Если исполнитель не умеет мыть картофель, то произойдет авост (автоматический останов) и алгоритм не будет завершен. В этом состоит свойство детерминированности алгоритма.

Свойство массовости заключается в том, что используя этот алгоритм можно сварить различное количество картофеля: одну - две штуки, один или несколько килограммов и т.п.

Свойство конечности состоит в том, что вареный картофель будет получен за конечное время, после того, как исполнителем будут выполнены все шаги данного алгоритма.

Задание 2. Представим все заданные числа в многочленной форме.

1x2+3x+5+2x2+5X+0=101+10x

Приведем подобные члены: 3x2-2x-96=0

Решим полученное квадратное уравнение.

.

Из двух найденных корней: x1=6 и x2=-5.33 отберем первый корень, т.к. основание системы счисления и цифры в представлении числа могут быть только целыми. Правильность найденного значения можно проверить непосредственной его подстановкой в заданное условие:

1356 = 1*36+3*6+5*1 = 59;

2506 = 2*36+5*6+0*1 =102;

59 + 102 = 161; 161 = 161; Ответ: x = 6.

Задание 3. Заданный фрагмент программы находит максимальный и минимальный элементы одномерного массива а[i]. Если точку с запятой заменить на else, то проверка на минимальность будет проводиться только тогда, когда текущий элемент массива не удовлетворяет условию максимальности. Преобразованный фрагмент будет выполняться быстрее, т.к. на некоторых шагах цикла будет выполняться не две проверки условий, а одна. Переписанный фрагмент может иметь такой вид:

max:=a[1]; min:=a[1];

i:=2;

while i<=n do

begin if max<a[i] then max:=a[i];

if min>a[i] then min:=a[i];

i:=i+1

end;

Задание 4. Обозначим неизвестную пока нам сумму всех капиталов как , а отдельные капиталы через К1, К2, . . . КN. Тогда известные нам разности 1, 2, ... N могут быть выражены следующим образом: 1= - К1, 2= - К2, . . . N =  - КN. Просуммируем полученные уравнения, общее количество которых, очевидно, равняется N: +1 =  - К1

+2 =  - К2

+ . . .

N =  - КN

1+2+3+ . . . +N = (N*) - (K1+K2+K3+. . . +KN)

Поскольку (К1+К2+К3+. . . +КN) = , то

1+2+3+ . . . +N = (N*) - ,

1+2+3+ . . . +N = (N -1) * .

Полученное выражение позволяет выразить неизвестную сумму  через сумму известных частичных разностей i.

 = 1+2+3+. . . +N / (N-1),

а каждый из искомых капиталов через найденную сумму и известные частичные разности:

Ki =  - i.

Программа осуществляет следующие действия. В ответ на приглашение оператор должен последовательно ввести известные ему разности, всякий раз завершая ввод нажатием на клавишу «Enter». По мере ввода разности сохраняются в массиве Raznost и суммируются в переменной Summa. Цикл повторяется, пока очередная разность не окажется равной нулю. Поскольку переменная i увеличивается на 1 в каждом цикле, ее итоговая величина на 2 больше, чем число капиталистов. Расчеты, связанные с определением каждого капитала, очевидны.

var Summa : real;

i,n : integer;

Raznost : array [1..100] of real;

begin

i := 1; Summa := 0;

repeat write ('Введите ',i,'-ю разность ');

readln(Raznost[i]);

Summa := Summa + Raznost[i];

i:=i+1;

until Raznost[i-1] = 0;

n:=i-2;

Summa := Summa/(n-1);

for i:=1 to n do

writeln (i,'-й капитал равен ', Summa - Raznost[i]:5:2);

readln;

end.

Предположим, что капиталы трех капиталистов равны соответственно 1, 2 и 3 денежным единицам. Последовательно введены будут числа 5, 4 и 3. По окончанию ввода значение переменной Summa станет равной 12, переменной i - 5, a n - 3. Тогда истинная сумма равна Summa/n-1 = 6, а искомые капиталы определены как соответствующие разности.

Задание 5. Введем операцию «инверсии символа» как замену символа «А» на символ «У» и наоборот. Определим также операцию «инверсии строки символов» как результат инверсии всех символов, составляющих строку. Используя предлагаемую терминологию, опишем идею решения задачи следующим образом. Восклицание инопланетянина в день N, представленное в виде строки символов, образуется в результате операции конкатенации (слияния) двух строк, первая из которых является восклицанием инопланетянина в день N-1, а вторая - результатом инверсии этой строки.

Представленная ниже программа реализует предлагаемый алгоритм. Переменная N служит для хранения количества дней, прожитых инопланетянином на Земле. Переменные строкового типа str1, str2 и str служат для хранения соответственно восклицания инопланетянина в предыдущий день, инверсии этой строки и восклицания в последующий день. Переменные i и j необходимы для посимвольного просмотра строк.

Помимо основной работы по преобразованию информации, программа контролирует общее количество символов в строке (оно не должно превышать 255) Конечно, вместо этого можно ограничить диапазон изменения переменной N (подумайте, какое максимальное количество дней инопланетянин может прожить на Земле?), но предлагаемый вариант программы позволяет инопланетянину встретить первый день восклицанием, состоящим из произвольной последовательности звуков А и У.

program TAYKITA;

var

str, str1, str2: string[255];

n: integer;

i,j: integer;

BEGIN

write('Сколько дней прожил инопланетянин на земле?');

readln(n);

write('Что он воскликнул в первый день?');

readln(str);

writeln('В первый день инопланетянин воскликнул : ',str);

for i := 1 to n do

begin

for j := 1 to length (str) do

if str[j] = 'A' then str1[j] := 'Y' else str1[j] := 'A';

if (length(str) + length(str1)) > 255 then

begin

str:='не хватило длины строки';

break;

end

else

begin

str := concat(str,str1);

str1:=str;

end;

end;

writeln('В заданный день инопланетянин воскликнул: ',str);

readln;

END.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]