
- •Введение
- •Глава 1. Структурное программирование
- •1.1 Основные определения
- •1.2 Три основных действия
- •1.2.1 Последовательность
- •1.2.2 Выбор
- •1.2.3 Цикл
- •1.3. Структурный подход к решению задач
- •Задание
- •1.4. Организация хранения и обработки данных
- •1.4.1 Записи и списки
- •Задание
- •1.4.2 Очередь
- •Задание
- •1.4.3 Стек
- •Задание
- •1.5 Структурное программирование.
- •2. Программирование на языке паскаль
- •2.1. Краткая история эвм и языки программирования
- •Задание
- •2.2. Интегрированная среда borland pascal
- •2.2.1. Краткая характеристика. Запуск программы
- •2.1.2. Основы работы в редакторе Открытие нового окна
- •Завершение работы со средой
- •Задание
- •«Горячие» клавиши интегрированной среды
- •2.3. Структура программы
- •2.3.1.Основные положения
- •2.3.2. Понятие идентификатора
- •2.3.3. Первая программа
- •2.3.4. Описание подпрограммы (процедуры).
- •2.3.4. Строковый тип данных
- •2.3.5. Процедуры ввода и вывода данных
- •Задание
- •2.4. Программа калькулятор.
- •2.4.1. Тип целые и вещественный.
- •2.4.2. Переменные вещественного типа
- •Задание
- •2.5. Улучшенный калькулятор
- •2.5.1. Операторы выбора
- •Булевские (логические) операции
- •Операции отношения
- •Оператор if … then
- •Оператор case
- •2.5.2. Основные отличия применения операторов выбора. Перечисляемый тип. Интервальный тип.
- •Задание
- •2.6. Улучшенный каЛьКулятор (продолжение)
- •2.6.1. Оператор цикла с постусловием (проверка на ноль)
- •2.6.2. Оператор цикла с предусловием
- •2.6.3. Оператор цикла со счетчиком (параметром)
- •Задание
- •2.7. Переменные типа массив
- •2.7.1. Виды массивов
- •2.7.2.Описание массива
- •2.7.3.Нахождение максимального элемента в массиве
- •Задание
- •2.7.4. Строковая переменная (продолжение)
- •Задание
- •2.7.5. Строковая переменная как массив
- •Мама мыла раму
- •Задание
- •2.7.6. Описание функции
- •Задание
Задание
Приведите пример очереди.
Объясните, что означает понятие максимальная длина очереди.
Какие основные действия проводятся с очередью?
Расскажите, в каком случае нельзя произвести действие "Поместить элемент в очередь".
1.4.3 Стек
Представьте себе, что вы пошли на рынок за покупками. Делая покупки, вы складываете их в сумку. Вернувшись домой, вы начинаете выкладывать покупки из сумки. Что вы вынете раньше? Конечно, то, что было положено в сумку последним. Для того, что бы составить пирамидку, мы поочередно надеваем на ось колечки (см. рис.1.15.). После того как мы сложили пирамидку, что бы достать первое колечко придется снять все колечки, которые находящиеся над ним. При этом порядок снятия колечек будет обратным, то есть сначала снимается последней колечко, затем - предпоследнее и так до тех пор, пока не снимем первое. В этих двух примерах, по аналогии с очередью, можно сказать, что мы имеем дело с принципом «Первый пришел, последним ушел!» или на английском языке: «First input, Last output» (FILO) или «Последним пришел, первым ушел!» или на английском языке: «Last input, First output» (LIFO). Организацию хранения и обработки линейных списков в котором применяется данный принцип называют стеком.
Стек – частный случай линейного списка, для которого разрешено добавлять или убирать элементы только с одного конца списка, который называется вершиной (головой) стека.
рис.1.15
При удалении элемента из вершины стека мощность (глубина) стека уменьшается на единицу, но сдвижки элементов не происходит.
Основные действия над стеком
Для того чтобы посмотреть, какие действия мы можем проводить с данными, которые организованы в стек, введем несколько определений.
Максимальная глубина стека – максимально возможное количество элементов, которое может находиться в стеке одновременно.
Глубина стека характеризует количество элементов, находящихся в стеке в данный конкретный момент.
Пустой стек - стек, в котором нет элементов, а глубина стека равна нулю.
Первое действие. Поместить элемент в стек:
Для того чтобы поместить элемент в стек, необходимо проверить, есть ли в нем место, то есть меньше ли глубина стека максимальной глубине. Если глубина стека меньше максимальной глубины, то помещаем элемент в стек, и увеличиваем значение глубины стека на единицу, иначе - ничего не делаем (если глубина стека равна максимальной глубине, то поместить в стек новый элемент не представляется возможным).
Взять элемент из стека:
Для того чтобы взять элемент из стека, необходимо проверить, есть ли элементы в стеке. Если стек не пуст, то: а) удаляем последний элемент из стека, б) уменьшаем на единицу значение глубины стека, иначе - ничего не делаем.
Стек (Stek) с английского языка переводится как кучка, вязанка. Существует даже единица измерения стек. Один стек равен 3,04 м3
Линейный список, который объединяет в себе свойства очереди и стека, называется ДЕК.
Дек - линейный список, в котором все добавления и удаления элементов делаются на обоих концах списка.
Рис.1.16
Дек называют очередью с двумя концами или двухсторонней очередью.