Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЯП / ЯП / Yap_Alyona

.docx
Скачиваний:
56
Добавлен:
11.05.2015
Размер:
97.2 Кб
Скачать

Министерство образования и науки РФ

Томский Государственный университет систем управления и радиоэлектроники (ТУСУР)

Кафедра комплексной информационной безопасности электронно-вычислительных систем (КИБЭВС)

ОТЧЕТ

по лабораторной работе №1

Тема: “Анализ задачи. Абстракция программ и данных. Синтаксис языка программирования”

Выполнил студент гр. 521

Ингинен А.И.

______________ 26.12.12

Принял: Романов А. С.

___________­­­___ 26.12.12

Томск 2012

  1. Цель работы

Цель работы: знакомство с основными элементами языка программирования, расширенной формой записи Бэкуса-Наура для записи синтаксиса языка программирования.

  1. Задание

  1. Изучить теоретические сведения.

  2. Получить вариант задания у преподавателя.

  3. Для предложенной абстрактной программы описать входные и выходные данные программы, определить типы данных, их диапазон и размерность.

  4. Декомпозировать программу на модули. Описать основные модули программы, их взаимосвязь.

  5. Определить возможные ошибки, которые могут произойти при выполнении блоков программы.

  6. Записать в простейшей форме синтаксис языка, позволяющего реализовать программу. Использовать для этого расширенную форму Бэкуса-Наура.

  7. Написать отчет и защитить у преподавателя.

  1. Теоретический материал

Язык программирования - набор правил, описывающих, какие последовательности символов составляют программу, и какое вычисление производит программа.

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

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

Прежде всего, необходимо определить входные и выходные данные программы, их типы, диапазоны минимальные и максимальные значения.

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

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

Синтаксис языка программирования - это набор правил, которые определяют, какие последовательности символов являются допустимыми.

Синтаксис задается с помощью формальной нотации. Самая распространенная нотация - расширенная форма Бекуса-Наура (РФБН). Описание грамматики в РБНФ представляет собой набор правил, определяющих отношения между терминальными символами (терминалами) и нетерминальными символами (нетерминалами).

Терминальные символы - это минимальные элементы грамматики, не имеющие собственной грамматической структуры.

Нетерминальные символы - это элементы грамматики, имеющие собственные имена и структуру. Каждый нетерминальный символ состоит из одного или более терминальных и/или нетерминальных символов, сочетание которых определяется правилами грамматики.

Общий вид записи грамматики:

Синтаксическая категория ::= описание

Здесь синтаксическая категория представляет ту конструкцию языка программирования, которая описывается, а описание задает формальные правила. Для описания этих правил используются следующие обозначения:

'…' - текстовый элемент - символ или группа символов;

[А] - элемент А входит или не входит;

(А В) - группировка элементов;

{А} - ноль или более элементов А;

| - или;

Общую форму грамматики РБНФ-описания можно описать в виде РБНФ следующим образом:

Синтаксис = { СинтОператор }.

СинтОператор = идентификатор=” СинтВыражение "

СинтВыражение = СинТерм {"|" СинТерм}.

СинТерм = СинтФактор {СинтФактор }.

СинтФактор = идентификатор | цепочка

| "{"СинтВыражение ")"| "["СинтВыражение "]" | "{"СинтВыражение "}".

Например, типичный идентификатор языка программирования (последовательность букв, цифр и знаков подчеркивания, начинающаяся с буквы) с помощью РФБН можно записать в следующем виде:

Идент = Буква{Буква|Цифра| "_"}.

  1. Ход выполнения работы

Выбор алгоритма

Ввод файлов

Распознавание типа файлов (архивный/не архивный)

Не архивный файл

Не архивный файл

Архивный файлл

Извлечение файлов из архива

Добавление файлов в архив

Создание архивных файлов

Архивный файл

Архивный файл

Удаление файлов из архива

Просмотр архивных файлов

Вывод разархивированных файлов

Вывод архивного файла

Рис. 1 Декомпозиция программы «Архиватор»

Опишем несколько модулей из программы.

Модуль 1:

  1. Наименование – «Извлечение файлов из архива»; назначение – распаковка архива.

  2. Входные данные: файлы с расширением .zip.

  3. Выходные данные: текстовые и бинарные файлы.

  4. Ошибки – попытка извлечь файлы из пустого архива.

Рис 1. Ошибка извлечения файла из пустого архива.

Модуль 2:

  1. Наименование – «Добавление файлов в архив»; назначение – добавление файлов в архив.

  2. Входные данные: текстовые и бинарные файлы.

  3. Выходные данные: файлы с расширением .zip.

  4. Ошибки – попытка добавления в zip-архив файлов с украинской буквой «i».

Рис 2. Ошибка добавления в zip-архив файлов с украинской буквой «i».

Модуль 3:

  1. Наименование – «Создание архивных файлов»; назначение – упаковка одного или более файлов в архив или серию архивов.

  2. Входные данные: текстовые и бинарные файлы.

  3. Выходные данные: файлы с расширением .zip.

  4. Ошибки – попытка добавления в zip-архив файлов с украинской буквой «i».

Модуль 4:

  1. Наименование – «Удаление файлов из архива»; назначение – удаление файлов из архива.

  2. Входные данные: файлы с расширением .zip.

  3. Выходные данные: файлы с расширением .zip.

  4. Ошибки – попытка удаления файлов, к которым закрыт доступ.

Расширенная форма Бэкуса — Наура:

архиватор::==(имя, файл, команда, операция)

имя::= (знак, число, буква)

файл::==(текстовый, бинарный, сжатый)

команда::==( ”добавление в архив”, ”извлечение”, ”просмотр”, ”удаление” )

операция::=(”поиск”, ”восстановление”)

"удаление"::==[имя, {файл}, удалить]

"добавление в архив"::==[имя, {файл}, добавить]

"извлечение"::==[имя, {файл} извлечь]

"просмотр"::==[имя, {файл}, просмотреть]

  1. Вывод

В ходе выполнения лабораторной работы я познакомилась с основными элементами языка программирования, расширенной формой записи Бэкуса-Наура для записи синтаксиса языка программирования.

Соседние файлы в папке ЯП