- •Предисловие
- •Основные навыки и умения
- •Логическая культура: знание логики, логическая интуиция.
- •Языковые знания и умения.
- •Поисковые знания и умения.
- •Алгоритмические навыки и умения.
- •Общие подходы к построению алгоритмов
- •Тестирование и сопровождение программ
- •Обязательный минимум содержания среднего (полного) общего образования
- •Технология обработки текстовой информации
- •Введение в информатику
- •Системы счисления
- •Перевод из десятичной системы счисления
- •Перевод в десятичную систему счисления
- •Перевод чисел из двоичной системы счисления в восьмеричную, шестнадцатеричную системы и обратно
- •Выполнение арифметических операций в позиционных системах счисления
- •Элементы математической логики
- •Логические законы
- •Алгоритм и его свойства
- •Исполнители. Компьютер - универсальный исполнитель
- •Работа компьютера
- •Turbo pascal - исполнитель паскаль-программ
- •Конструкции Паскаля
- •Типы данных
- •Целый тип данных
- •Вещественный тип данных
- •Символьный тип данных
- •Логический тип данных
- •Выражения
- •Операторы ввода-вывода
- •Оператор присваивания
- •Общий вид программы на Паскале
- •Условный оператор
- •If логическое_выражение then оператор1 else оператор2;
- •If логическое_выражение then оператор1;
- •Операторы цикла
- •Построение линейных алгоритмов
- •Построение ветвящихся алгоритмов
- •Построенние циклических алгоритмов
- •Нахождение суммы
- •Вложенные циклы
- •Переборный метод решения задач
- •Численные методы
- •Метод итераций
- •Метод половинного деления
- •Вычисление определенного интеграла методом трапеций
- •Случайные числа
- •Метод Монте-Карло (метод статистических испытаний)
- •Массивы Одномерные массивы
- •Перебор элементов массива
- •Перебор подмассивов
- •Классы задач по обработке массивов
- •Задачи первого класса
- •Задачи второго класса
- •Задачи третьего класса
- •Задачи четвертого класса
- •Сортировка массивов
- •Сортировка вставками
- •Сортировка пузырьком (обменом)
- •Сортировка выбором
- •Сортировка фон Неймана (слиянием)
- •Двумерные массивы
- •Обработка строк
- •Процедуры и функции
- •Рекурсия
- •Работа с графикой
- •Классы программного обеспечения
- •Компиляция и интерпретация
- •Текстовый редактор
- •Электронные таблицы
- •Системы управления базами данных (субд)
- •Пример решения экзаменационного билета
- •Контрольные работы
- •Контрольная работа №1
- •Контрольная работа № 2
- •Контрольная работа № 3
- •Контрольная работа № 4
- •Контрольная работа № 5
- •Библиографический список
Системы управления базами данных (субд)
База данных - интегрированное хранилище разнородной информации, позволяющее совместное использование, применимое для разных приложений.
Примером простейшей базы данных может служить записная книжка, телефонный справочник. Если записей в базе данных мало, то ей можно управлять с помощью карандаша и бумаги. Но если база данных содержит сотни и более записей, то необходимо переходить к автоматизированному ведению такой базы. Главное преимущество, которое дает такой подход - это быстрый поиск необходимых сведений и представление их в удобной форме. Причем поиск информации в автоматизированной базе данных может осуществляться по алфавиту, по адресу или по любой совокупности признаков, характеризующих искомые объекты.
Состав базы данных:
-
база данных;
-
СУБД;
-
администратор базы данных;
-
словарь-справочник.
СУБД - прикладная программа, позволяющая формировать базу данных, производить поиск требуемых данных по информационным запросам, вносить изменения в базу, обрабатывать данные, хранящиеся в базе, и др.
СУБД дает возможность:
-
организовать интегральное множество данных, доступное широкому кругу пользователей;
-
поддерживать достоверность и непротиворечивость данных;
-
обеспечивать централизованные средства защиты памяти (сохранение записей);
-
продлить неопределенно долго срок существования данных.
В настоящее время наиболее популярны СУБД семейства 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.
Упражнения:
-
Приведите пример конкретной СУБД и команд для работы с ней.
-
Покажите, как в этой СУБД будет записан запрос: «Найти школьников, имеющих первый спортивный разряд и знающих информатику не менее, чем на 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.