Учебное_пособие_заочное (брошюра)
.pdf5.Используя язык запросов QBE (язык запросов по образцу) выполнить согласно варианту задания запросы:
a)на удаление, обновление, создание таблицы;
b)на выборку данных из одной или более таблиц;
c)на выборку данных с использованием агрегатных функций;
d)перекрестные запросы.
6.Открыть все выполненные запросы в режиме Конструктора, изменить вид запроса на запрос в режиме SQL (структурированный язык запросов), просмотреть запросы и объяснить используемые фразы и операторы языка SQL.
7.Написать отчет о выполнении лабораторной работы, который должен содержать:
a)описание таблиц с указанием типа атрибутов, первичных
ивнешних ключей;
b)схему связей между таблицами;
c)протокол работы с результатами;
d)краткие выводы.
3.5.3.Пример выполнения работы.
В качестве примера рассмотрим отношение, соответствующее варианту:
Таблицы
1.Код_сотрудника, ФИО, Должность, Оклад, Дом_адрес
2.Код_товара, Наименование_товара
3.Код_сотрудника, Код_товара, Цена_приходная, Приход, Дата_поступления
Определим типы значений атрибутов:
Код_сотрудника – |
INT |
ФИО - |
CHAR(20) |
Должность - |
CHAR(15) |
Оклад – |
FLOAT |
|
82 |
#include <stdio.h> #include <math.h> #include <stdlib.h>
int main() |
|
|
|
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
float a = 3.14, b = 3.14, x = a, y, h = 0.2; |
|
|
|
|
||||||
|
while (x <= b) |
|
|
|
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
if (sin(x) > 0.2) |
y = x x +1; |
|
|
|
|||||
|
if (sin(x) < = 0.2) |
y = pow(1/tan(x), 2); |
|
|||||||
|
printf(”\ny(%f) = %f”, x, y); |
|
|
|
||||||
|
x += h; |
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
system(“PAUSE”); |
|
|
|
|
|
||||
} |
return 0; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3.2.4. Варианты заданий. |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
№ |
Интервал |
h |
|
|
|
|
f(x) |
|
|
|
вариан |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|||
та |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0.5x2 , |
если cos(x) 0 |
||||
1 |
[1, 1.2] |
0.1 |
|
3x2 /cos x, |
если |
cos(x) 0 |
||||
|
|
|
|
|
|
|
||||
2 |
[0.1, 2.1] |
0.2 |
|
sin(x), |
если |
tan(x) 0,1 |
||||
|
|
|
если |
tan(x) 0,1 |
||||||
|
|
|
|
cos(x), |
||||||
3 |
[0.5, 1.2] |
0.1 |
|
tan2 (x), если |
ctan(x) 0,3 |
|||||
|
|
|
если |
ctan(x) 0,3 |
||||||
|
|
|
|
ctan(x), |
||||||
|
|
|
|
sin(x/2), |
если |
e2sin(x) |
0,5 |
|||
4 |
[0, 1.6] |
0.2 |
|
|
|
|
если e2sin(x) |
0,5 |
||
|
cos(x/2), |
|||||||||
|
|
|
71 |
|
|
|
|
|
|
№ |
Интервал |
h |
|
|
|
|
|
|
|
|
f(x) |
|
|
вариан |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|||
та |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
4 |
|
|
|
|
|
|||
|
|
|
|
x |
|
, |
если |
cos(x) 0,2 |
|||||
|
|
|
|
|
|
|
|||||||
5 |
[0.2, 1] |
0.1 |
|
2 |
x |
|
|
|
|
||||
|
4 |
|
|
|
|
||||||||
|
|
|
|
x |
|
если cos(x) 0,2 |
|||||||
|
|
|
|
|
|
|
, |
||||||
|
|
|
|
|
x |
|
|
|
|
||||
6 |
[2, 3.1] |
0.1 |
(x 1)4 , |
если |
sin(x) 0,1 |
||||||||
(x 1)4 , |
если sin(x) 0,1 |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||
7 |
[3.0, 6.1] |
0.3 |
x2 |
2x 5, |
если |
tan(x) 0 |
|||||||
|
2 |
2x 5, |
если tan(x) 0 |
||||||||||
|
|
|
x |
||||||||||
|
|
|
(x 1)sin(x), |
если |
ctan(x) 0,1 |
||||||||
8 |
[3.2, 3.9] |
0.1 |
(x 1)sin(x), если |
ctan(x) 0,1 |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
sin 2 (x) sin(x) 1, |
если cos(x) 0 |
|||||||||
9 |
[0.2, 1.4] |
0.2 |
cos2 (x) cos(x) 1, |
если cos(x) 0 |
|||||||||
|
|
|
|
|
|||||||||
|
|
|
(sin(x) 1)2 , |
если sin(x) 0 |
|||||||||
10 |
[5.7, 9.4] |
0.3 |
(cos(x) 1)2 , |
если sin(x) 0 |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
tan2(x) tan(x) 4, |
если tan(x) 0 |
|||||||||
11 |
[6.5, 7.1] |
0.1 |
ctan2(x) 2ctan(x) 3, |
еслиtan(x) 0 |
|||||||||
|
|
|
cos(x)/sin2 (x), |
если ecos(x) 0 |
|||||||||
12 |
[0.3, 0.9] |
0.1 |
sin(x)/cos2 (x), |
если ecos(x) 0 |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
72
3.5. Лабораторная работа 5. Работа с базой данных.
3.5.1. Цель работы.
Научиться создавать базы данных (БД) и манипулировать с ними при помощи запросов к ним на языках запросов QBE и SQL.
3.5.2.Практическое задание.
1.На основе группы атрибутов согласно варианту задания спроектировать две таблицы со справочной информацией и одну таблицу учетного характера, для этого следует:
a)определить типы значений атрибутов и их размерность;
b)определить первичные и внешние ключи в таблицах и необходимые связи между ними для обеспечения целостности БД.
2.Создать файл БД в какой-либо среде (например, MS Access)
исохранить его в своей сетевой папке.
3.Создать таблицы БД, при этом обязательно:
a)при создании справочных таблиц обозначить ключевые поля;
b)при создании учётной таблицы для внешних ключей использовать столбцы подстановок (код и характеризующий его столбец) из справочных таблиц, при этом следует отменить опцию: «скрыть ключевой столбец» и выбрать основной столбец подстановки;
c) просмотреть схему данных со связями |
между |
таблицами. |
|
4.Внести данные в таблицы (не менее 10 кортежей в каждой таблице) и убедиться, что система поддержки целостности БД функционирует.
81
№ |
Массив |
Задание |
Условия и |
|
ограничения |
||||
|
|
|
||
|
|
|
|
|
4 |
В[6][2] |
Определить максимальный |
Bij – |
|
|
|
элемент массива В и его |
действитель- |
|
|
|
порядковый номер |
ные числа |
|
5 |
С[4][3] |
Вычислить минимальный |
Cij– |
|
|
|
элемент массива С и его |
действитель- |
|
|
|
порядковый номер |
ные числа |
|
6 |
D[2][6] |
Найти максимальный и |
Dijцелые |
|
|
|
минимальный элементы |
числа |
|
|
|
массива D и поменять их |
|
|
|
|
местами |
|
|
7 |
Y[4][2] |
Вычислить среднее геомет- |
Yijцелые |
|
|
|
рическое положительных |
числа |
|
|
|
элементов массива Y |
|
|
8 |
Z[5][3] |
Найти сумму и количество |
Zij- |
|
|
|
четных чисел, меньших 10. |
натуральные |
|
|
|
|
числа |
|
9 |
N[5][2] |
Определить сумму |
Nij - |
|
|
|
элементов массива N, |
натуральные |
|
|
|
кратных трем |
числа |
|
|
|
|
|
|
10 |
A[3][5] |
Найти сумму и количество |
Aij – целые |
|
|
|
отрицательных элементов |
числа |
|
|
|
массива А |
|
|
|
|
|
|
|
11 |
X[3][3] |
Найти сумму и количество |
Xij – целые |
|
|
|
целых положительных |
числа |
|
|
|
чисел, больших 20, меньших |
|
|
|
|
50. |
|
|
|
|
|
|
|
12 |
X[4][4] |
Найти сумму целых |
Xij – целые |
|
|
|
положительных чисел, |
числа |
|
|
|
кратных 2 и меньших 50. |
|
|
|
|
|
|
|
|
|
80 |
|
3.3. Лабораторная работа 3.
Одномерные массивы.
3.3.1. Цель работы.
Научиться использовать в программах одномерные массивы данных.
3.3.2.Практическое задание.
1.Дан вектор x={x1, … , xn}. В соответствии с вариантом задания изменить значения некоторых его компонентов.
2.Составить отчет о выполнении лабораторной работы, в который включить:
a.Название и цель работы;
b.Индивидуальное задание;
c.Текст программы;
d.Результат решения задачи;
e.Блок-схему алгоритма решения задачи.
3.3.3.Пример выполнения работы.
Среди компонент вектора x={x1, … , xn} (n<20) найти максимальный элемент и поменять его местами с элементом x1.
Исходные данные:
n = 10, x = {-1.6, 0.9, 1.3, 1.8, -0.2, -0.3, 4.1, 5.5, 1.4, -1.5}
Будем хранить элементы вектора x в одномерном массиве x[10], а текущие значения максимального элемента и его номера в переменных max и k соответственно.
Предположим, что максимальный элемент массива есть его первый элемент. Далее в теле цикла будем сравнивать это значение с остальными элементами и, когда очередной элемент массива окажется больше значения max, переменной max
73
присвоим значение этого элемента. Одновременно в переменной k будем сохранять номер максимального элемента. И, наконец, если найденный максимальный элемент не является первым элементом массива, переставим их местами.
/* Лабораторная работа 3 */
#include <stdio.h> #include <stdlib.h>
int main()
{
int i, k = 0; float x[10], max;
/*Ввод элементов массива*/ for (i = 0; i < 10; i++ )
{
printf(”\nx[%d]=”, i+1); scanf( ” %f ”, &x[i]);
}
/*Поиск максимального элемента и его номера*/ max = x[0];
for (i = 1; i < 10; i++) if (x[i] > max) {
max = x[i]; k = i;
}
/*Перестановка местами максимального и первого элементов массива*/
if (k != 0)
{
x[k] = x[0];
x[0] = max;
}
/*Вывод элементов массива*/ for (i = 0; i < 10; i++ )
74
}
if (a[i][j] < min)
{
min = a[i][j]; m2 = i; n2=j;
}
}
/*Вывод значений максимального и минимального элементов и их индексов/
printf(”\nmax=a[%d][%d]=%f”, m1+1, n1+1, max);
printf(”\nmin=a[%d][%d]=%f”, m2+1, n2+1, min);
system(“PAUSE”); return 0;
}
3.4.4. Варианты заданий.
№ |
Массив |
Задание |
Условия и |
|
ограничения |
||||
|
|
|
||
|
|
|
|
|
1 |
Х[5][5] |
Вычислить сумму и |
Xij – |
|
|
|
количество положительных |
действитель- |
|
|
|
элементов массива Х |
ные числа |
|
|
|
|
|
|
2 |
А[4][3] |
Вычислить среднее арифме- |
Aij - целые |
|
|
|
тическое значение |
числа |
|
|
|
положительных элементов |
|
|
|
|
массива А |
|
|
3 |
Х[3][5] |
Найти сумму целых |
Xij - целые |
|
|
|
положительных чисел, |
числа |
|
|
|
кратных 4. |
|
79
элементами и, когда очередной элемент массива окажется больше или меньше значения max и min соответственно, исправим их на новые значения. Одновременно в переменных m1, m2 и n1, n2 будем сохранять номер строки и номер столбца этих элементов. И, наконец, выведем найденные значения максимального и минимального элементов и их индексов на экран.
/* Лабораторная работа 4 */
#include <stdio.h> #include <stdlib.h>
int main()
{
int i, j, m1 = 0, n1=0, m2=0, n2= 0; float a[10][10], max, min;
/*Ввод элементов матрицы*/ for(i = 0; i < 10; i++)
{
printf(”\n”);
for(j = 0; j < 10; j++) scanf(”%f”, &a[i][j]);
}
/*Поиск максимального и минимального*/ /*элементов матрицы и номеров их строк и столбцов*/
max = min = a[0][0];
for(i = 0; i < 10; i++)
for(j = 0; j < 10; j++)
{
if (a[i][j] > max)
{
max = a[i][j]; m1 = i; n1=j;
78
printf (”\nx[%d]=%f ”, i+1, x[i]);
|
system(“PAUSE”); |
|
|
|
|
||
} |
return 0; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3.3.4. Варианты заданий. |
|
|
|
|
|
||
|
|
|
|
|
|
||
№ варианта |
|
Задание |
|
|
|
||
1 |
Заменить первый элемент массива суммой |
||||||
|
максимального и минимального элементов. |
|
|||||
2 |
Заменить |
последний |
элемент |
массива |
|||
|
суммой |
максимального |
и |
минимального |
|||
|
элементов. |
|
|
|
|
|
|
3 |
Заменить |
первый |
элемент |
массива |
|||
|
произведением |
максимального |
и |
||||
|
минимального элементов. |
|
|
|
|
||
|
|
|
|
|
|||
4 |
Заменить |
последний |
элемент |
массива |
|||
|
произведением |
максимального |
и |
||||
|
минимального элементов. |
|
|
|
|
||
5 |
Заменить первый элемент массива частным |
||||||
|
максимального и минимального элементов. |
|
|||||
|
|
|
|
|
|||
6 |
Заменить |
последний |
элемент |
массива |
|||
|
частным |
максимального |
и |
минимального |
|||
|
элементов. |
|
|
|
|
|
|
|
|
||||||
7 |
Заменить первый элемент массива средним |
||||||
|
арифметическим |
максимального |
и |
||||
|
минимального элементов. |
|
|
|
|
||
|
|
|
|
|
|||
8 |
Заменить |
последний |
элемент |
массива |
|||
|
средним арифметическим максимального и |
||||||
|
минимального элементов. |
|
|
|
|
||
|
|
||||||
9 |
Заменить первый элемент массива средним |
||||||
|
геометрическим |
максимального |
и |
||||
|
минимального элементов. |
|
|
|
|
||
|
|
|
|
|
|||
10 |
Заменить |
последний |
элемент |
массива |
|||
|
средним геометрическим максимального и |
||||||
|
минимального элементов. |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
75 |
|
|
|
|
|
№ варианта |
|
Задание |
|
|
|
11 |
Заменить |
первый |
элемент |
массива |
|
|
половиной |
разности |
максимального |
и |
|
|
минимального элементов. |
|
|
||
|
|
|
|
|
|
12 |
Заменить |
последний |
элемент |
массива |
|
|
половиной |
разности |
максимального |
и |
|
|
минимального элементов. |
|
|
||
|
|
|
|
|
|
76
3.4. Лабораторная работа 4. Вложенные циклы и разветвления в матричных
задачах.
3.4.1. Цель работы.
Научиться использовать в программах многомерные массивы и сложные сочетания циклов и разветвлений.
3.4.2.Практическое задание.
a11 ... a1n
1. Дана квадратная матрица A= ... |
вещественных |
|
|
an1 ... |
ann |
чисел размера NxN. В соответствии с вариантом задания произвести вычисления с элементами матрицы A.
2.Составить отчет о выполнении лабораторной работы, в который включить:
a.Название и цель работы;
b.Индивидуальное задание;
c.Текст программы;
d.Результат решения задачи;
e.Блок-схему алгоритма решения задачи.
3.4.3. Пример выполнения работы.
Найти значения и номера строк и столбцов максимального и минимального элементов квадратной матрицы
A (N=10).
Будем хранить элементы матрицы A в двумерном массиве a[10][10], а текущие значения максимального и минимального элементов и номера их строк и столбцов в переменных max, min, m1, m2 и n1, n2 соответственно.
Предположим, что максимальный и минимальный элементы массива есть его первый элемент. Далее во вложенных циклах будем сравнивать эти значения с остальными
77