- •Министерство образования и науки российской федерации
- •Оглавление
- •3. Содержание отчета
- •4. Задание на курсовую работу
- •4.1. Пример перевода
- •5. Постановка задачи
- •6. Внешняя спецификация программы
- •6.1. Вход
- •6.2. Выход
- •6.3. Аномалии
- •7. Метод решения задачи
- •8. Описание алгоритма
- •8.1. Структура данных
- •8.2. Алгоритм главной программы
- •8.3. Выделение подпрограмм
- •8.4. Алгоритм подпрограммы обработки комментария (fcomment)
- •8.5. Алгоритм подпрограммы обработки оператора if (fif)
- •8.6. Обработка арифметического выражения
- •9. Структура программы
- •10. Синтаксические диаграммы арифметических и логических выражений
- •11. Пример программы мини-транслятора на Паскале
- •12. Варианты индивидуальных заданий
- •13. Библиографический список
- •109028 Москва, б. Трехсвятительский пер., 3/12.
- •113054 Москва, ул. М. Пионерская, 12.
5. Постановка задачи
Дано:
fname1 |
имя выходного файла, содержащего исходный текст программы на заданном языке (текст программы разрабатывается студентом в соответствии с вариантом) и должен включать различные виды каждого допустимого оператора, необходимые для полноценного тестирования программы). |
Требуется:
fname2 |
имя выходного файла, содержащего конвертированный текст программы на заданном языке; |
koper1 |
число операторов в исходной программе; |
koper2 |
число операторов в полученной программе; |
ker |
число ошибочных операторов в полученной программе; |
Примечание:Длина строки входного файла не более 80 символов. Имена файлов fname1, fname2 должны удовлетворять требованиям системного программного обеспечения ЭВМ.
Связь
Для разработки алгоритма конвертирования необходимо иметь чёткое представление о возможном виде каждого допустимого оператора и результате его конвертирования. Для этого, на начальном этапе разработки определяется связьмежду исходными данными и результатом. Эта связь может быть представлена в виде таблицы, в первом столбце которой описан синтаксис оператора в исходном тексте, а во втором - синтаксис оператора, получаемого в результате конвертирования. Некоторые особенности результата конвертирования можно описать словами. Например:
№ п/п |
Синтаксис оператора на языке Паскаль |
Результат конвертирования на языке Си |
1. |
Оператор присваивания v1 := ae1; |
v1 = ae1; |
2. |
Оператор repeat..until: repeat оператор [оператор] ... untille1; |
do{ оператор [оператор] ... } while (!le1); |
3. |
оператор if: if le1 then оператор [ else оператор ]; |
if(le1) оператор [ else оператор ]
|
4. |
операторные скобки begin...end |
{...} Если операторные скобки begin ... end определяют тело программы, то открывающая фигурная скобка вставляется после оператора void main (void), а закрывающая - в конец текста (при наличии точки после end). |
5. |
programMax; |
void main (void) |
6. |
read(V1 [ , V2 ] ... ); где V1 ,V2 ... - идентификаторы переменных |
scanf("%F1 [ %F2] ...", &V1 [,&V2] ...); где F1,F2 ... – спецификаторы, выбираемые в зависимости от типа переменныхV1 ,V2 ... В начало текста программы включается директива: #include <stdio.h> |
Примечание: Напомним, что в языке Си символ ' ; ' является принадлежностью оператора.
6. Внешняя спецификация программы
6.1. Вход
Исходный текст программы готовится заранее с помощью текстового редактора и
хранится в текстовом файле, имя которого вводится в ответ на запрос программы:
введите имя входного файла: <имя входного файла> |