Модуль GraphABC для создания программ в графическом режиме на языке программирования Pascal
Автор: Artem Shirokikh • Январь 23, 2022 • Лабораторная работа • 1,972 Слов (8 Страниц) • 427 Просмотры
Содержание
Введение 3
Основная часть 4
Задача 1 4
Используемые переменные 4
Алгоритм решения задачи 4
Исходный код программы 5
Задача 2 10
Используемые переменные 10
Алгоритм решения задачи 10
Исходный код программы 11
Блок-схемы 13
Тестирование программ 15
Заключение 17
Введение
Линейный список – это последовательность из нуля или более элементов (узлов), главной особенностью которого является такое относительное расположение узлов, будто они образуют одну линию. Если в линейном списке n>0 элементов, то узел j[k] (0<k<n) следует непосредственно за j[k-1] и предшествует j[k+1]. В общем случае над линейными списками могут быть определены девять операций:
1. Доступ к узлу k для просмотра или модификации хранимых данных;
2. Вставка нового узла непосредственно перед или после узла k;
3. Удаление узла k;
4. Объединение линейных списков в новом списке;
5. Разбиение списка на линейные списки;
6. Копирование списка;
7. Нахождение количества узлов списка;
8. Сортировка узлов списка в некотором порядке, определяемом содержимым записанных в узле данных;
9. Поиск узла в соответствии со значением, связанным с содержимым записанных в узле данных.
Следует выделить особые случаи, когда обрабатывается первый или последний элемент списка, поскольку доступ к таким узлам организовать проще, чем к остальным.
Модуль GraphABC представляет собой простую графическую библиотеку и предназначен для создания не событийных графических и анимационных программ в процедурном и частично в объектном стиле. Рисование осуществляется в специальном графическом окне, возможность рисования в нескольких окнах отсутствует. Кроме этого, в модуле GraphABC определены простейшие события мыши и клавиатуры, позволяющие создавать элементарные событийные приложения. Основная сфера использования модуля GraphABC – обучение.
Основная часть
Задача 1
Используйте линейные списки для хранения последовательности чисел. Опишите процедуру, которая вставляет:
а) новый элемент E после первого элемента непустого списка;
б) новый элемент E1 за каждым вхождением элемента E.
Используемые переменные
m – количество элементов списка;
x – элемент списка;
E, E1 – заданные элементы;
S, L – списки;
i – счетчик цикла.
Алгоритм решения задачи
- Создадим список L – введем количество элементов m и заполним список целыми числами в диапазоне от -10 до +10;
- Выводим полученный список L на экран;
- Введем с клавиатуры элемент E;
- Если в списке L нет элементов (m = 0), то выведем информацию об этом и перейдем к п.7;
- Иначе вставляем элемент E в список L за первым элементом этого списка;
- Выводим список L на экран;
- Вводим элементы E, E1 с клавиатуры;
- Выполняем поиск номеров (вхождений) элемента E в списке L и сохраняем их в массиве arr из k элементов (по числу найденных вхождений);
- Если k не равно нулю, то для каждого элемента с номером i в массиве arr выполняем вставку E1 в L за arr[i], а также увеличиваем arr[i + 1] на I;
- Иначе (k равно нулю) выводим сообщение о том, что элемент E не найден в списке L;
- Выводим полученный список L на экран.
Исходный код программы
{- описание типа списка -}
type
list = ^node;// тип списка
node = record // узел списка
info: integer; // целое число - инф. часть списка
next: list; // указатель на следующий элемент списка
end;
{- определение типа массива из 1000 целых чисел -}
type nums = array[1..1000] of integer;
...