
ЯП Лабораторная работа 1
.pdfМинистерство науки и высшего образования Российской Федерации Федеральное государственное автономное образовательное учреждение высшего образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра комплексной информационной безопасности электронновычислительных систем (КИБЭВС)
АНАЛИЗ ЗАДАЧИ. АБСТРАКЦИЯ ПРОГРАММ И ДАННЫХ. СИНТАКСИС ЯЗЫКА ПРОГРАММИРОВАНИЯ Отчет по лабораторной работе №1
по дисциплине «Языки программирования» Вариант №21
Студент гр. 7х3-х
_______ хххххххх
_______
Приняла: Преподаватель каф. КИБЭВС
_______ хххххххх
_______
Томск 2025
Введение
Целью работы является знакомство с основными элементами языка программирования, расширенной формой записи Бэкуса-Наура для записи синтаксиса языка программирования.
Постановка задачи:
1.Изучить краткие теоретические сведения;
2.Получить вариант задания у преподавателя;
3.Для предложенной абстрактной программы описать входные и выходные данные программы, определить типы данных, их диапазон и размерность;
4.Декомпозировать программу на модули. Описать основные модули программы, их взаимосвязь;
5.Определить основные функции программы, входные данные, возвращаемые значения, их тип, диапазон и размерность;
6.Определить возможные ошибки, которые могут произойти при выполнении блоков программы;
7.Записать в простейшей форме синтаксис языка, позволяющего реализовать программу. Использовать для этого расширенную форму Бэкуса-Наура;
8.Привести пример программы с использованием синтаксиса разработанного языка программирования, реализующего основную функциональность по заданию;
9.Написать отчет и защитить у преподавателя. Текст абстрактной программы:
Программа для анализа и оптимизации процессов управления персоналом на предприятии с использованием модулей для работы с данными о сотрудниках.
2
1 ОПИСАНИЕ ДАННЫХ ДЛЯ РАБОТЫ
По условию задания необходимо описать входные и выходные данные для абстрактной программы по варианту, а также определить их типы, диапазоны и размерности. Данные представлены в таблице 1.1.
Таблица 1.1 – Результаты анализа текста абстрактной программы
Данные |
Описание |
|
|
Входные данные |
Личные данные сотрудников; |
|
Ввод с клавиатуры работника; |
|
Запись экрана работника; |
|
Дата и время. |
|
|
Выходные данные |
Список статистических показателей; |
|
Скриншоты. |
|
|
Для входных данных будут подходящими следующие характеристики:
1.Личные данные сотрудников – строка; диапазон ограничен символами, поддерживаемыми в кодировке;
2.Ввод с клавиатуры работника – строка; диапазон ограничен символами, поддерживаемыми в кодировке;
3.Запись с экрана работника – видеофайл;
4.Дата и время – дата и время.
Для выходных данных будут подходящими следующие характеристики:
1.Список статистических показателей – текстовый массив; диапазон ограничен символами, поддерживаемыми в кодировке;
2.Скриншоты – графический файл.
3
2 ДЕКОМПОЗИЦИЯ ПРОГРАММЫ НА МОДУЛИ
Также после анализа абстрактной программы были описаны модули и их взаимодействия между собой.
Модуль 1:
1.Наименование: Сбор данных о работнике;
2.Входные данные: строка;
3.Выходные данные: текстовый массив;
4.Ошибки: данные не подходящего типа; выход за диапазон границ вводимых символов; переполнение массива.
Модуль 2:
1.Наименование: Сбор данных с монитора работника;
2.Входные данные: видеофайл и выходные данные модуля 4;
3.Выходные данные: графический файл и текстовый массив;
4.Ошибки: данные не подходящего типа; переполнение массива.
Модуль 3:
1.Наименование: Сбор данных с клавиатуры работника;
2.Входные данные: строка и выходные данные модуля 4;
3.Выходные данные: текстовый массив;
4.Ошибки: данные не подходящего типа; переполнение массива. Модуль 4:
1.Наименование: Счетчик времени;
2.Входные данные: дата и время;
3.Выходные данные: строка;
4.Ошибки: данные не подходящего типа; выход за диапазон.
Модуль 5:
1.Наименование: Анализ вводимых с клавиатуры работника данных;
2.Входные данные: выходные данные модуля 1,3;
3.Выходные данные: текстовый массив;
4.Ошибки: данные не подходящего типа; переполнение массива.
4

Модуль 6:
1.Наименование: Анализ активности на рабочем столе работника;
2.Входные данные: выходные данные модуля 1,2;
3.Выходные данные: графический файл и текстовый массив;
4.Ошибки: данные не подходящего типа; переполнение массива.
На рисунке 2.1 представлена декомпозиция программы по модулям в
виде блок схемы.
Рисунок 2.1 – Декомпозиция
5
3 ЗАПИСЬ В ПРОСТЕЙШЕЙ ФОРМЕ СИНТАКСИСА ЯЗЫКА
Для выполнения всего функционала программы достаточно следующего синтаксиса:
program ::= 'PROGRAM', white space, program name, white space 'BEGIN', white space,
{body, '';'', white space}, 'END'.
body ::= {assignment | input | output | function}.
program name ::= alphabetic character, { alphabetic character | digit }. input ::= ''input'', '('', [string | number], '')''.
assignment ::= identifier, '':='', (function | string | number).
output ::= ''output'', ''('', {identifier | function | string | number, '',''}, '')''. function ::= identifier, ''('', {identifier | string | number, '',''}, '')''. identifier ::= alphabetic character, { alphabetic character | digit }.
alphabetic character ::= "а" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z" | "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" | "а" | "б" | "в" | "г" | "д" | "е" |"ё" | "ж" | "з" | "и" | "й" | "к" | "л" | "м" | "н" | "о" | "п" | "р" | "с" | "т" | "у" | "ф" | "х" | "ц" | "ч" | "ш" | "щ" | "ъ" | "ы" | "ь" | "э" | "ю" | "я" | "А" | "Б" | "В" | "Г" | "Д" | "Е" |"Ё" | "Ж" | "З" | "И" | "Й" | "К" | "Л" | "М" | "Н" | "О" | "П" | "Р" | "С" | "Т" | "У" | "Ф" | "Х" | "Ц" | "Ч" | "Ш" | "Щ" | "Ъ" | "Ы" | "Ь" | "Э" | "Ю" | "Я".
digit ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9". string ::= '''', {all characters - ''''}, ''''.
number ::= [''-''], digit, {digit}.
white space ::= ? white space characters ?. all characters ::= ? all visible characters ?.
Пример программы, написанной с использованием данного синтаксиса: PROGRAM EmployeeDataAnalysis
6
BEGIN
output(''Введите имя работника:''); employeeName := input();
output(''Введите зарплату работника без вычета налогов и штрафов:''); preTaxSalary := input();
violations := AnalyzeScreenAndKeylogger(employeeName);
output(''Сотрудник: '',employeeName); output(''Базовая зарплата: '',preTaxSalary); output(''Количество нарушений: '',violations);
output(''Зарплата с учетом штрафов и налогов: '',CalculateSalary()); output(''Эффективность работника: '',CalculateEfficiency());
END
7
Заключение
В ходе выполнения данной работы были изучены основные элементы языка программирования и расширенная форма Бэкуса-Наура, проведена декомпозиция абстрактной программы и написан синтаксис для нее.
8