Контрольная работа по предмету "Программирование, программное обеспечение, СУБД"


Разработка и стандартизация

Министерство общего и профессионального образования Московский Государственный Университет Экономики Статистики и Информатики Институт экономических информационных систем и программирования Контрольная работа по дисциплине “Разработка и стандартизация программных средств и информационных технологий”
Руководитель: Смирнов А. А. Студентка: Волкова А. В. Группа: ЗКП-401 Зачетная книжка № 97122 Москва 2001г. Содержание:
1. Руководство пользователя. __________________________3 1. 1. Назначение программы. _______________________________ 3 1. 2. Описание предметной области в табличной форме. _____________ 3 1. 3. Граф предметной области. ____________________________ 4 1. 4. Грамматика входного языка. ____________________________ 5 1. 5. Примеры задания программ на входном языке. ________________ 5 2. Описание программы. ______________________________ 6 2. 1. Общие сведения. ___________________________________ 6 2. 2. Описание логической структуры программы. _________________ 6 2. 3. Вызов и загрузка. ___________________________________ 8 2. 4. Входные данные. ___________________________________ 8 2. 5. Выходные данные. ___________________________________ 8 2. 6. Модуль лекси ческого разбора. ___________________________ 8 3. Приложения. ____________________________________10
3. 1. Результаты выполнения программы. _____________________ 10 3. 2. Тексты модулей. __________________________________ 11 3. 3. Распечатка экрана. _________________________________17 4. Список использованной литературы. ___________________18 1. Руководство пользователя. 1. 1. Назначение программы.
Данная программа предназначена для создания упорядоченного каталога книг (каталог упорядочиваетсяпо названию книги). В программе предусмотрен ввод данных о книгах, просмотр и редактирование ранее введенной информации, сохранение информации на жестком диске компьютера, а также обработка информации иупорядочение ее в алфавитном порядке по названию книг, вывод каталога на экран и его распечатка на принтере. Таким образом, посредством перечисленных операций создается каталог книг. 1. 2. Описание предметной области в табличной форме.
Область деятельности, к которой относятся задачи, решаемые ППП, называется предметной областью пакета. Для разработки пакета прикладных программ предметная область представляется в виде модели. Модель предметной области может быть представлена следующими вариантами: - с помощью таблиц; - с помощью графа предметной области.
Использование табличного варианта предполагает формирование нескольких таблиц (табл. №1, табл. №2, табл. №3). Таблица №1. Таблица данных. I Количество книг KolKn Целое 2 Наименование книги Name Текстовый 3 Автор книги Avtor Текстовый 4 Издательство Izdat Текстовый 5 И т. д. Таблица №2. Таблица связей по определению, ||||И||11||в: ;: ; Старшее даккоё II ^ШШШШЩ^Ш^З'Й^Й^^: )! !: ^^^ ЁЙЙЧИ1№Н^^: ^ 1 Name KolKn, Avtor, Izdat Таблица №3. Таблица задач. Ш^^^ШШ|: ШШв^^Ш11111Ш ШШШШШШЩЩЖ* 1||111|11ШШЩ||Ж Ш|||||Щррр|||; IE 1 Модуль обмена OBMEN VHST INFORM 2 Лексический разбор LEXRAZ VHST INFORM, YPST 3 Синтаксический анализ SINAN YPST PRST, INFORM 4 Модуль управления YPRAVL YPST, PRST INFORM 5 Информатор INFORM INFORM KODV б Модуль помощи HELPER 1. 3. Граф предметной области.
Граф предметной области (в дальнейшем ГПО) используется для описания взаимосвязи различных элементов предметной области. Стадии обработки обозначаются вершинами, а модули, которые позволяют выполнить требуемую обработку - соответствующимидугами. Вершинами обозначены следующие стадии обработки: 1. Ввод информации о книгах; 2. Работа с уже введенной информацией; 3. Сохранение информации; 4. Обработка информации; 5. Выдача результатов обработки; 6. Завершение работы. Дугами обозначены следующие алгоритмы: 1. Ввод данных с клавиатуры; 2. Просмотр введенной информации; 3. Редактирование введенной информации; 4. Сохранение каталога на жестком диске;
5. Упорядочение данных о книгах в алфавитном порядке для получения каталога; 6. Вывод на экран сформированного каталога; 7. Вывод на печать готового каталога. Массив ГПО имеет вид: 1 2 2 3 2 3 3 4 4 5 5 б 5 6 7. 4. Грамматика входного языка.
Входной язык ППП представляет собой специально разработанный программный язык. Как правило, он ориентируется на терминологию, привычную для пользователя прикладного программного обеспечения. Правильность предложений входного языка определяется специальным набором правил, так называемой формальной грамматикой. Для описания формальной грамматики используем метаязык и нотацию Бэкуса-Наури. Эта нотацияпредусматривает использование следующих символов: : := - по описанию есть; | - логическое сложение (или); - скобка для обозначения нетерминального символа; [.... ] - обозначение необязательного элемента. Формальная грамматика G задается четырьмя элементами:

G={N, Z, T, F}, где N - множество нетерминальных символов (нетерминальный словарь); Z - начальный символ (аксиома); Т - множество терминальных символов (терминальный словарь); F - множество порождений.
Формальная грамматика позволяет описать входной язык пакета. 1. 5. Примеры задания программ на входном языке. : :=[] : := [] : :=ввод| проем| ред сохр| упоряд| экр | печ : := = : := : :=[|] : :=А Б...Я : :=0|1...9 : := ; Пример: ВВОД=КЛАВИАТУРА; ПРОСМ=ЛЕРМОНТОВ; СОХР-С: \KATALOG_BOOK; УПОРЯД=АВТОР; ЭКР=ЭКРАН; 2. Описание программы. 2. 1. Общие сведения.

Данная программа выполняет необходимые действия в соответствии с командной информацией, заданной пользователем. Командная (управляющая) информация представляется на входном языке пакета. Программа на входном языке обрабатывается специальной управляющей программой, которая обеспечивает вызов необходимыхпрограммных модулей. Управляющая программа составлена из следующих модулей: 2. 2. Описание логической структуры программы.
Управляющая программа состоит из следующих модулей: 1. Ведущий блок, который обеспечивает выполнение требуемой последовательности других модулей. Является центральным элементом управляющей программы. 2. Модуль обмена предназначен для обеспечения связи ППП с источниками и получателями информации. Он обеспечивает: ввод ПВЯ; ввод словарей; ввод данных и вывод результатов решения.
3. Модуль лексического разбора предназначен для распознавания лексических конструкций (лексем) и преобразования ПВЯ в вид, удобный для дальнейшейобработки.
4. Модуль синтаксического анализа предназначен осуществлять проверку грамматической правильности программы на входном языке посредством анализа управляющего вектора. Он обеспечивает следующие действия: контролирует соответствие управляющего вектора графу предметной области; обеспечиваетиспользование аппарата умолчания; обеспечивает использование макрокоманд. 5. Модуль управления обеспечивает выполнение обращений к обрабатывающим программам. Порядок обращения к обрабатывающим программам задается в управляющем векторе. При вызове обрабатывающей программы осуществляется передача параметров, часть из которыхявляется входными данными, а остальные параметры являются результатными, для которых вычисляются новые значения. 6. Модуль информатора предназначен для выдачи сообщений о ходе решения задачи. 7. Модуль помощи предназначен для руководства действиями пользователя. Организация помощи пользователю является непременным условием эффективного функционирования прикладного программного обеспечения. Программные модульные пакеты, реализующие алгоритмы обработки данных, затребованные в ПВЯ, реализуются в обрабатывающем модуле. Поддержание пакета в рабочем состоянии обеспечивается обслуживающими модулями. ПППпредставляет собой объединение входного языка, информационной базы, управляющих, обслуживающих и обрабатывающих модулей. 2. 3. Вызов и загрузка.
Вызов и загрузка осуществляется запуском файла “KATALOG. PAS” из среды Turbo Pascal. 2. 4. Входные данные. 2. 5. Выходные данные. 2. 6. Модуль лексического разбора.
Модуль лексического разбора предназначен для распознавания лексических конструкций (лексем) и преобразования ПВЯ в вид, удобный для дальнейшейобработки.
Лексический разбор представляет собой сложный алгоритм, для реализации которого может быть использована модель с конечным числом состояний, то есть конечный автомат. Детерминированным конечным автоматом называется упорядоченная система из пяти символов: А = (X, S, S0, B, F) , где X - множество входных символов; S - множество внутренних состояний; S0 - начальное состояние; В - функция, отображающая переход в новое состояние; F - заключительное состояние. Таблица конечного автомата представлена далее: Таблица №4. Таблица конечного автомата. Ввод Проем Редакт Сохр Упоря дочен Экр Печ — Пробел ; Конец строки Неопозн символ SOST=0 l/Fl 1/F1 1/F1 1/F1 1/F1 0 KODV =0 KODV= 4 SOST=1 2/F2 1 KODV =5 KODV= 6 SOST=2 2 0/F3 KODV =7 2 F1 - соответствует формированию управляющего вектора; F2 - поиск начала параметра; F3 - формирование вектора параметров.
Таблица описывает модель конечного автомата, состоящую из следующей системы символов: X = {ВВОД, ПРОСИ, РЕДАКТ, УПОРЯД, ЭКР, ПЕЧ, =, ,; } S={SOST=0, SOST=1, SOST=2} S0={SOST=0} B={F1, F2, F3} F={SOST=0} 3. Приложения. 3. 1. Результаты выполнения программы. Пример 1:
Пользователем введена следующая программа: ВВОД=КЛАВИАТУРА; ПРОСМ=КИНГ; СОХР=С: /МОИ ДОКУМЕНТЫ; УПОРЯД=АВТОР; ЭКР=ВЫВОД; Массив ГПО имеет вид: 1 2 2 3 3 4 4 5 5 6 YPST: 1; 2; 4; 5; 6;
KODV=0 - операторы введены грамматически правильно и в нужной последовательности. Пример 2:
Пользователем введена следующая программа: ПРОСМ=ТЮТЧЕВ; ВВОД=КЛАВИАТУРА; ПЕЧ=ПРИНТЕР; YPST: 2; 1; 7;
KODV=8 - операторы введены грамматически правильно, но их последовательность не соответствует ГПО. 3. 2. Тексты модулей. program katalog; uses printer, crt; type zapis=record prizn: integer; {признак блока} kodvlv: integer; {код возврата} end;
masvhst=array [1...40] of string; masypst=array [1...80] of integer; masprst=array [1...80] of string; var vhst: masvhst; {исходный текст ПВЯ) ypst: masypst; {управляющий вектор} prst: masprst; {вектор параметров} kolzap: integer; {количество записей ПВЯ} rash: integer; {количество расшифрованных слов ПВЯ} ko: integer; {ключ окончания} tabl: zapis; {таблица информатора} {Заглушки} procedure input (xistring; kodvl: integer); {Процедура ввода данных о книгах} begin
writeln('Выполнилась процедура ввода. '); writeln('Для продолжения нажмите любую клавишу! '); readkey; end; procedure prosm (x: string; kodvl: integer); {Процедура просмотра данных о книгах} begin
writeln('Выполнилась процедура просмотра. '); writeln('Для продолжения нажмите любую клавишу! '); readkey; end; procedure korr (x: string; kodvl: integer); {Процедура редактирования данных о книгах} begin
writeln('Выполнилась процедура редактирования. '); writeln('Для продолжения нажмите любую клавишу! '); readkey; end; procedure soxr (x: string; kodvl: integer); {Процедура сохранения данных о книгах} begin
writeln('Выполнилась процедура сохранения. '); writeln('Для продолжения нажмите любую клавишу! '); readkey; end; procedure uporyad (x: string; kodvl: integer); {Процедура упорядочивания данных по книгам} begin
writeln('Выполнилась процедура упорядочивания. '); writeln('Для продолжения нажмите любую клавишу! '); readkey; end; procedure ekran (x: string; kodvl: integer); {Процедура просмотра каталога} begin
writeln ('Выполнилась процедура просмотра каталога. '); writeln(IДля продолжения нажмите любую клавишу! '); readkey; end; procedure pechat (x: string; kodvl: integer); {Процедура печати каталога} begin
writeln('Выполнилась процедура печати каталога. '); writeln('Для продолжения нажмите любую клавишу! '); readkey; end; {Процедуры управляющей программы} procedure HELPER;
procedure OBMEN (var vhst: masvhst); procedure INFORM (tabl: zapis); procedure LEXRAZ (vhstimasvhst); procedure SINAN (ypst: masypst); procedure YPRAVL (ypst: masypst); {Конец описаний} {Модуль обмена}
procedure OBMEN (var vhst: masvhst; var kolzap: integer; var tabl: zapis); var fl: boolean; i: integer; vvod: string; begin {procedure} with tabl do begin {with} kodvlv: =0; prizn: =l; fl: =true; writeln('ввод проем ред сохр обр экр печ'); 1: =0;
while (not fl) and (kodvlv=0) do begin {while} i: =i+l; readln(vvod); if vvod='конец' then begin {первый if) fl: =false; kolzap: =i-l; end {первый if} else begin {первый else} if vvod='выход' then begin {второй if} fl: =false; kodvlv: =8; kolzap: =i-l; end {второй if} else vhst[i]: =vvod; end; {первый else} end; {while}
{проверка на пустую порграмму} if (kolzap=0) and (kodvlv=0) then kodvlv: =16; if (kolzap
procedure LEXRAZ (vhst: masvhst; kolzap: integer; var ypst; var prst: masprst; var ks: integer; var tabl: zapis); var termsl: array [1...7] of string; {терминальный словарь} kolsl: integer; {количество слов в терминальном словаре} sost: integer; {состояние системы} tekzap: string; {текущая запись} str: string[10]; i, j, 1, k, number, lengl, 1en: integer; begin {procedure} with tabl do begin {with} prizn: =2; kodvlv: =0; rash: =0; kolsl: =7; sost: =0; termsl[1] ='ввод'; termsl[2] ='проем'; termsl[3] ='ред'; termsl[4] ='coxp'; termsl[5] ='обр'; termsl[6] ='экр'; termsl[7] ='печ'; for i: =l to kolzap do begin {первый for} tekzap: =vhst[i]; j : =i; len: =length(tekzap); while (j begin {первый while} str: =copy(tekzap, j, len-j+1); if copy(str, 1, 1)='' then j: =j+l else begin {первый else} case sost of 0: begin {case 0} lengl: =0; for 1: =1 to kolsl do begin {первый for) Number: =pos(termsl[1], str); if number=l then begin {первый if} rash: =rash+l; prst[rash]: =''; ypst[rash]: =1; lengl: =length(termsl[1]); j: =j+lengl; sost: =1; end; {первый if} end; {первый for} if (lengl=0) then kodvlv: =4; end; {case 0} l: begin {case 1} if copy(str, 1, !)='=' then begin {первый if} sost: =2; j: =j+l; end {первый if} else kodvlv: =6; end; {case 1} 2: begin {case 2} if copy(str, 1, 1)='; ' then begin {первый if} sost: =0; j: =j+l; end {первый if} else {первый else} begin prst[rash]: =prst[rash]+copy(str, 1, 1); j: =j+l; end; {первый else} end; {case 2} end; {case} end; {while} end; {else} end; {for}
if (sost=l) and (kodvlv=0) then kodvlv: =5; if (sost=2) and (kodvlv=0) then kodvlv: =7; end; {with} end; {procedure} {Модуль синтаксического анализа}
Procedure SINAN (ypst: masypst; rash: Integer; Var Tabl: zapis); Var GPO: Array[1...1, 1...2] of Integer; N_Ver: Integer; K_Ver: Integer; I: Integer; begin With tabl do begin prizn: =3 kodvlv: =0; GPO[1, 1] =1; GPO[1, 2] =2; GPO[2, 1] =1; GPO[2, 2] =2; GPO[3, 1] =2; GPO[3, 2] =3; GPO[4, 1] =2; GPO[4, 2] =3; GPO[5, 1] =3; GPO[5, 2] =4; GPO[6, 1] =3; GPO[6, 2] =4; GPO[7, 1] =4; GPO[7, 2] =5; N_Ver: =l K_Ver: =5 l: =l; While (K=rash) and (kodvlv=0) do begin If GPO[ypst[i], l]=N_Ver then N_Ver: =GPO[ypst[i], 2] else kodvlv: =8; i: =i+l; end; If (N_VerK_Ver) and (kodvlv=0) then kodvlv: =16; end; end; {Модуль управления}
Procedure YPRAVL (uprstr: masypst; prst: masprst; rash: Integer; Var tabl: zapis); Var x: String; j, kodvl: Integer; begin With tabl do begin prizn: =4; kodvlv: =0; For j: =l to rash do Begin x =prst[j]; Case uprstr[j] of 1 input(x, kodvl); 2 prosm(x, kodvl); 3 korr(x, kodvl); 4 soxr(x, kodvl); 5 uporyad(x, kodvl); 6 ekran(x, kodvl); 7 pechat(x, kodvl); end; If kodvlv end; end; end;
{Модуль информатора} Procedure INFORM (tabl: zapis); {Блок информ тор } begin {procedure} With tabl do begin {with} Case prizn of 1: Writeln('Выполнился блок обмена'); 2: Writeln('Выполнился блок лексического разбора'); 3: Writeln('Выполнился блок синтаксического анализа'); 4: Writeln('Выполнился блок управления'); end; {case} Writeln('С кодом возврата равным ', kodvlv); end; {with} end; {procedure} {Модуль помощи} Procedure Help; begin
Writeln{'Стурктура оператора: '); Writeln('=; '); Writeln('Конец сегмента определяется словом “конец”'); Writeln('Конец всей программы определяется словом “выход”'); readkey; end; {Начало работы ведущего модуля} Begin clrscr; HELPER; ko: =l; While (ko=l) do begin {while}

OBMEN (vhst, kolzap, tabl); INFORM (tabl); With tabl do begin {with} If kodvlv0 then ko: =0; If kodvlv INFORM(tabl); If kodvlv begin {if2} SINAN (ypst, rash, tabl); INFORM(tabl); If kodvlv=0 then begin {if3} YPRAVL(ypst, prst, rash, tabl); INFORM(tabl); end; {if3} end; {if2} end; {ifl} end; {with) end; {while} readkey; end. 3. 3. Распечатка экрана. Стурктура оператора: =; Конец сегмента определяется словом "конец" Конец всей программы определяется словом "выход" Ввод ПВЯ

ввод=клавиатура; прос=тютчев; сохр=с: \katalog; упоряд=название; экр=вывод;
Выполнился блок обмена С кодом возврата равным О Выполнился блок лексического разбора С кодом возврата равным О Выполнился блок синтаксического анализа С кодом возврата равным О Выполнился блок управления С кодом возврата равным О ввод прос ред сохр упоряд экр печ 4. Список использованной литературы.
1. Экономика, разработка и использование программного обеспечения ЭВМ. - Учебник/В. А. Благодатских, М. А. Енгибарян, Е. В. Ковалевская и др. - М. : Финансы и статистика, 1995. 2. Смирнов А. А. Прикладное программное обеспечение: Учебное пособие/Московский государственный университет экономики, статистики и информатики. - М. , 2001.


Не сдавайте скачаную работу преподавателю!
Данную контрольную работу Вы можете использовать для выполнения своих заданий.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :