В Камаев - Технологии программирования
- Название:Технологии программирования
- Автор:
- Жанр:
- Издательство:Издательство «Высшая школа»
- Год:2006
- Город:Москва
- ISBN:5-06-004870-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
В Камаев - Технологии программирования краткое содержание
Второе издание (1-е — 2005 г.) дополнено главами по структуре данных и основам инженерии создания программ.
Для студентов вузов, обучающихся по направлению «Информатика».
Технологии программирования - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Cell: array [1..MAXCOLS, 1..MAXROWS] of CellPtr;
CurCell: CellPtr; {Указатель на текущую клетку}
Format: array [1..MAXCOLS, 1..MAXROWS] of Byte;
LeftCol, RightCol, TopRow, BottomRow,
{Позиционирование}
CurCol, CurRow, LastCol, LastRow: Word;
….
Следует отметить, что выделение отдельного массива форматов информации клеток является не оправданным. Практичнее ввести байт информации формата клетки в тип CellRec.
Сравните этот проект структуры данных с проектом структуры данных электронной таблицы, представленной в гл. 3.
Для составления оставшейся проектной документации выполним трассировку программы. После двойного нажатия клавиши начинает исполняться настроечный код, содержащийся в файлах *.TPU, и далее начинают выполняться операторы основной программы program Mcalc, находящейся в файле mcalc.pas.
В результате исследований была выявлена схема иерархии модулей программы, изображенная на рис. 7.3–7.5. Расшифровка обозначений схемы иерархии представлена в табл. 7.1.
Рис. 7.3. Фрагмент схемы иерархии основных модулей программы
Рис. 7.4. Схема иерархии модуля RedrawScreen
Рис. 7.5. Сокращенная схема иерархии модуля Run
Таблица 7.1
Расшифровка обозначений схемы иерархии
| Имя модуля | Файл | Назначение модуля |
| Act | Mclib | Обрабатывает информацию введенной строки, занося ее в клетку |
| CenterColString | Mcutil | Рассчитывает X координату центрируемой в поле вывода строки |
| ChangeAutoCalc | Mclib | Устанавливает автоматический и ручной режимы рекалькуляции таблицы |
| ChangeFormDisplay | Mclib | Устанавливает режим видимости значений формул или текста формул |
| ClearInput | Mcdisplay | Очищает на экране поле строки ввода |
| ClrScr | Crt | Очищает информацию в окне экрана |
| DisplayCell | Mclib | Выводит на экран информацию клетки |
| DisplayScreen | Mclib | Отображает на экране внутреннюю информацию таблицы |
| EditCell | Mcommand | Осуществляет редактирование содержимого клетки |
| EditString | Mcinput | Редактор текстовой строки |
| EgaInstalled | Mcdisplay | Функция, определяющая наличие видеокарты EGA |
| FillChar | Dos | Присваивает элементам массива значение символа |
| GetCursor | Mcdisplay | Считывает толщину курсора в переменную |
| GetInput | Mcinput | Получив первый введенный символ, продолжает ввод информации клетки |
| GetKey | Mcinput | Формирует слово расширенного кода клавиши |
| GetSetCursor | Mcdisplay | Считывает толщину курсора в переменную и устанавливает новую толщину курсора |
| GotoXY | Mcdisplay | Перемещает курсор в соответствии с заданными координатами дисплея |
| InitColorTable | Mcdisplay | Инициализирует массив пересчета цветов для монохромного монитора |
| InitDisplay | Mcdisplay | Инициализирует видеокарту на работу в режиме 80-25 |
| InitVars | Mcutil | Инициализирует значения основных переменных программы |
| Intr | Dos | Вызывает прерывание MS DOS |
| LoadSheet | Mcommand | Загружает информацию таблицы из файла |
| MainMenu | Mcommand | Реализует выбор тем меню программы |
| Mcalc | Mcalc | Главная программа |
| ParamCount | Dos | Счетчик полей командной строки запуска программы Mcalc |
| ParamStr | Dos | Возвращает значения заданного поля командной строки запуска программы Mcalc |
| PrintCol | Mcdisplay | Выводит значение координаты колонки таблицы |
| PrintFreeMem | Mcdisplay | Выводит на экран значение остатка свободной памяти |
| PrintRow | Mcdisplay | Выводит значение координаты строки таблицы |
| ReadKey | Mcinput | Считывает короткий код одной нажатой клавиши |
| Recalc | Mclib | Осуществляет перерасчет значений формул клеток таблицы |
| RedrawScreen | Mclib | Отображает на экране всю информацию таблицы |
| Run | Mcalc | Главный цикл программы |
| Scroll | Mcdisplay | Прокручивает информацию экрана в указанном направлении; устанавливает цвет фона освободившейся части экрана |
| SetBottomRow | Mcdisplay | Выводит на экран столбец с номерами строк таблицы |
| SetColor | Mcdisplay | Устанавливает цвет вывода строк на экран |
| SetCursor | Mcdisplay | Устанавливает заданную толщину курсора |
| SetRightCol | Mcdisplay | Выводит на экран строку с наименованиями столбцов таблицы |
| ShowCellType | Mcdisplay | Выводит на экран надпись о типе текущей клетки таблицы |
| TextMode | Dos | Переводит экран в указанный текстовый режим |
| Window | Crt | Определяет окно на экране дисплея |
| Write | - | Оператор вывода языка Pascal |
| WriteXY | Mcdisplay | Осуществляет вывод заданного числа символов заданной строки по заданным координатам дисплея |
Рассмотрим функциональное описание основного ядра программы. В файле mcutil.pas исполняется рудиментарный, оставшийся от прежних разработок код:
HeapError:= @HeapFunc;
В файле mcdisplay.pas последовательно выполняются подпрограммы: InitDisplay, GetSetCursor, Window, EGAInsalled.
Процедура InitDisplay инициализирует видеокарту на работу в режиме 80 25 при помощи вызова прерывания 10h и вызовом процедуры InitColorTable инициализирует массив пересчета цветов для монохромного монитора. Последний массив используется при вызовах процедуры SetColor.
Процедура GetSetCursor при помощи процедуры GetCursor считывает толщину курсора в переменную OldCursor и при помощи процедуры SetCursor устанавливает новую толщину курсора (NOCURSOR).
Процедура Window определяет окно на экране дисплея для размещения информации всей таблицы. Далее начинает выполняться код главной программы Mcalc.
Присваиванием CheckBreak:= False запрещается использование клавиши немедленного завершения программы.
Вывод начальной заставки осуществляется следующими вызовами подпрограмм. Процедурами SetColor и ClrScr производится очистка окна программы. Двойным вызовом процедур SetColor и WriteXY выводятся две строки начальной заставки. Несмотря на отсутствие курсора, отрабатывается рудиментарный вызов "сокрытия" курсора GotoXY(80,25). При помощи функции GetKey осуществляется ожидание нажатия пользователем любой клавиши.
Процедурами SetColor и ClrScr производится очистка окна программы.
Вызовом процедуры InitVars инициализируются значения основных переменных программы. Массивы инициализируются значениями по умолчанию вызова процедуры FillChar.
Присваиванием Changed:= False указывается факт неизменности информации клеток таблицы после момента инициализации переменных для запрещения срабатывания автосохранения.
Читать дальшеИнтервал:
Закладка: