
- •Технологии разработки программного обеспечения
- •Реляционное представление данных
- •Типы субд
- •Место и роль субд Microsoft Access®
- •Объекты
- •Особенности интерфейса
- •Режимы работы с бд
- •Порядок выполнения работы
- •Контрольные вопросы
- •Свойства полей. Обзор
- •Регистронезависимость Access
- •Свойства полей Тип данных и Размер поля
- •Приоритеты при разработке субд
- •Проектировочный режим: средства создания объектов
- •Эксплуатационный режим таблиц
- •Порядок выполнения работы
- •Варианты заданий
- •Контрольные вопросы
- •Реализация разделения данных. Ключевые поля
- •Вид связи один-к-одному
- •Вид связи один-ко-многим
- •Вид связи многие-ко-многим
- •Механизм создания ключей
- •Механизм подтаблиц
- •Порядок выполнения работы
- •Варианты заданий
- •Контрольные вопросы
- •Фильтры по выделенному
- •Запросы
- •Классификация запросов
- •Запросы на выборку
- •Отличия фильтров от запросов на выборку
- •Понятие предиката
- •Константы и переменные в запросах
- •Операторы в запросах
- •Бланк запроса в Access
- •Запросы с параметрами
- •Порядок выполнения работы
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Контрольные вопросы
- •Групповые операции
- •Запрос на обновление
- •Встроенные функции
- •Язык sql
- •Порядок выполнения работы
- •Вариант 10
- •Контрольные вопросы
- •Компилируемые и интерпретируемые языки программирования
- •Написание программы на языке Perl
- •Синтаксис языка Perl
- •Функции Perl
- •Порядок выполнения работы
- •Регулярные выражения
- •Операция поиска в строке
- •Оператор замены в строке
- •Обратные ссылки
- •Предопределённые переменные
- •Замена в текстовом файле
- •Функции работы со строками
- •Порядок выполнения работы
- •Подчинённая таблица «Корреспонденция»
- •Вариант 2 Главная таблица «Партнёры»
- •Подчинённая таблица «Сделки»
- •Вариант 3 Главная таблица «Сотрудники»
- •Подчинённая таблица «Поручения»
- •Вариант 4 Главная таблица «Товары»
- •Подчинённая таблица «Сертификаты»
- •Вариант 5 Главная таблица «Заказы»
- •Подчинённая таблица «Заказчики»
- •Вариант 6 Главная таблица «Поставки»
- •Подчинённая таблица «Посредники»
- •Вариант 7 Главная таблица «Терминалы»
- •Подчинённая таблица «Покупки»
- •Вариант 8 Главная таблица «Плательщики»
- •Подчинённая таблица «Счета»
- •Вариант 9 Главная таблица «Проекты»
- •Подчинённая таблица «Исполнители»
- •Вариант 10 Главная таблица «Мероприятия»
- •Подчинённая таблица «Персонал»
Функции Perl
Операции с папками.
#--- Открытие папки
opendir (DD, "Labwork #6") || die "Couldn't open directory: $!";
#--- Чтение ВСЕХ имён файлов из папки (положим, что других папок в ней нет)
@names = readdir DD;
splice @names, 0, 2; # Первые 2 строки всегда "." и ".." – удалим их
# --- Печать имён ВСЕХ файлов
foreach $name (@names)
{
print $name . "\n";
}
# --- Закрытие папки
closedir DD;
#--- Создание папки
#mkdir "TEST_DIR" || die "Couldn't create directory: $!";
#--- Удаление пустого каталога
#rmdir "TEST_DIR" || die "Couldn't delete directory: $!";
#--- Переименование каталогов и файлов
#rename "LabWork #6", "LabWork #7";
# ===========================
Операции с файлами.
#--- Открытие/создание файла.
# Атрибуты: "<" - read-only (default); ">" - write-only (create file if not exists);
# '>>' - append; '+>' or '+<' - read-write; "+>>" read-append.
#open (FD, ">>", "TEST.txt") || die "Couldn't open file: $!";
#--- Закрытие файла.
#close FD;
#--- Удаление файла
#unlink ("TEST.txt") || die "Couldn't open directory: $!";
# --- Копирование/перемещение/переименование файла
#use File::Copy;
#copy "TEST.txt", "LabWork #6/TEST2.txt";
#move "TEST.txt", "LabWork #6/TEST2.txt";
# --- Определение размера файла (в байтах)
use File::stat;
$file_owner = stat("TEST.txt")->size;
print $file_owner;
Порядок выполнения работы
В соответствии с заданием написать и отладить программу, протестировав её на предложенном наборе файлов, имеющих одинаковую структуру имён: <группа><номер версии>_<номер подверсии>. Если это первая (начальная) подверсия, то её номер не ставится.
Шаблон программы можно взять следующим:
use File::Copy;
use File::stat;
opendir(DIR, "LabWorkFiles#6") || die($!);
@names = readdir(DIR);
splice(@names, 0, 2);
closedir(DIR);
chdir("LabWorkFiles#6");
$OutputValue = 0;
# You may WRITE CODE HERE
foreach $name (@names)
{
# You may WRITE CODE HERE
}
# You may WRITE CODE HERE
print($OutputValue);
Варианты заданий
Вариант 1
Создать папку с именем B внутри текущей папки. Переместить туда все файлы группы b, приписав к их именам в конце .bak. Вывести на экран общее число таких файлов.
Вариант 2
Создать папку с именем 1_8 на один уровень выше папки и интересующими нас файлами, скопировать туда файлы размером 1 или 8 байт. Вывести на экран число скопированных файлов.
Вариант 3
Скопировать основную папку в любое другое доступное для записи место (но чтобы скопированная папка сохранила то же имя) вместе со всеми файлами, кроме файлов второй подверсии. Приписать в начале имён скопированных файлов New_. Вывести на экран число нескопированных файлов.
Вариант 4
Добавить расширение .arj в конец имён файлов групп a и c, остальные файлы удалить. Вывести на экран число удалённых файлов.
Вариант 5
Создать папку с именем 2_3 рядом с папкой с нашими файлами, переместить туда все файлы версий со второй по третью. Вывести на экран число оставшихся файлов.
Вариант 6
Вывести на экран средний размер всех файлов, кроме файлов группы b, которые скопировать в любое другое доступное для записи место без создания отдельной папки для таких файлов.
Вариант 7
Переместить основную папку в любое другое доступное для записи место. Вывести на экран общий размер всех восьмибайтовых файлов.
Вариант 8
Разнести файлы по двум папкам с именами V#1 и OtherVs: в первую переместить все файлы первой версии, добавив к их именам в конце приписку _old, во вторую – остальные версии. Исходный каталог удалить. Вывести на экран число файлов в первой папке.
Вариант 9
Файлам первой подверсии проставить её номер. Файлы второй и последующих подверсий размером 2 или 4 байта удалить. Вывести на экран число удалённых файлов.
Вариант 10
Удалить файлы группы c первой подверсии, если их размер меньше 4 байт, в противном случае (если эти файлы размером от 4 байт и больше) – переместить в любое другое место. Вывести на экран суммарный размер удалённых файлов.
Контрольные вопросы
Для чего главным образом разрабатывался язык Perl?
В каких случаях целесообразно написание скриптов?
К какой группе языков относится Perl? Fortran? Назвать основное отличие между этими двумя группами языков, перечислить их достоинства и недостатки.
Каков синтаксис переменных в Perl?
Дать определение идентификатору. Какова связь между идентификатором и константой, между идентификатором и переменной?
Дать определение литералу. Какова связь между литералом и константой, между литералом и переменной?
Каков синтаксис массивов в Perl? Как узнать число его элементов?
Возможно ли в процессе выполнения программы увеличить размерность массива? А уменьшить?
Какие составные операторы цикла вы знаете?
Что такое регулярные выражения и для чего они служат?
Что такое метасимволы в выражениях? Приведите пример метасимволов в Perl.
Рассказать про один или несколько метасимволов в Perl подробно.
Каким образом осуществляется поиск в строке в Perl?
ЛАБОРАТОРНАЯ РАБОТА №7 Скрипты. Язык Perl. Операции со строками
Цель работы
Получение навыков автоматической обработки текстовых файлов: построковая и внутристроковая модификация.
Описание
Чтение содержимого файла
В данной работе мы рассмотрим только построчное считывание и модификацию текстовых файлов. Для работы с такими файлами (главным образом, чтением из файла и записью в файл) предусмотрены так называемые дескрипторы файлов. Дескрипторы в Perl реализованы оператором < >. Пример построчного чтения из файла с именем дескриптора FILE в массив @str:
$i = 0;
while ($s = <FILE>)
{ $Str[$i] = $s;
$i++;
}
Выражение само примет ложное значение, когда прочитается последняя строка. Если мы хотим прочитать все строки файла последовательно в один и тот же массив, то тогда запись сокращается до
@Str = <FILE>;