Помещает элемент на верх стека. Возвращает "true", если это удалось сде-
лать, или "false", если стек целиком заполнен.
3) Извлечение верхнего элемента.
double DStack_pop( DStack& s );
Возвращает верхний элемент из стека или вохвращает 0.0 (или некоторое
другое специально оговоренное значение), если стек пуст.
4) Проверка на пустоту.
bool DStack_empty( Dstack& s );
Возврашает "true", если стек пуст, или "false" в противном случае.
5) Удаление стека.
void DStack_free();
Освобождает динамическую память, занятую при создании стека.
По сравнению со стеком из п.6.1, в описанном варианте реализации достигает-
ся ряд улучшений:
1) Есть возможность создания стеков разного размера.
2) В обслуживающих функциях предусмотрена обработка элементарных оши-
бок переполнения и обращения к пустому стеку.
3) Имена обслуживающих функций, начинающиеся с "DStack_", менее веро-
ятно обнаружить в других библиотеках.
К сожалению, опасность несанкционированного изменения внутренних пере-
менных стека сохраняется и в этой реализации.
7. Сводка результатов
Составной тип данных позволяет объединить под одним именем несколько пе-
ременных уже существующих типов. В Си++ для описания составного типа применя-
ется служебное слово "struct". Структуры могут быть вложенными. Для обращения
к компонентам структуры используются операции точка "." или "->" (если обраще-
ние выполняется через указатель на структуру).
Внутрь функций структуры чаще передаются по ссылке. Если параметры-
структуры внутри функции заведомо не изменяются, то такие параметры обычно опи-
сываются как константные параметры.
Можно создавать и использовать массивы структур, или использовать массивы
в качестве компонент структур. Для более краткой и естественной записи выражений
со структурами допускается перегрузка операторов.
В лекции рассмотрено два варианта реализации стека на базе статического мас-
сива и с использованием динамической памяти. Явным недостатком обоих вариантов
стека является открытость внутренних переменных структуры для логически некор-
ректных изменений извне.
112
8. Упражнения
Упражнение 1
Напишите функцию для печати на экране содержимого стека, представленного
в виде структуры "Stack" из п. 6.1. Перегрузку операторов не используйте. Проверь-
те работу функции с помощью подходящей тестовой программы.
Упражнение 2
Разработайте статический стек для хранения целых чисел и для хранения сим-
вольных строк длиной до 100 символов. Для каждого из стеков сделайте отдельные
заголовочные файлы ("stack_int.h" и "stack_string.h") и файлы реализации
("stack_int.cpp" и "stack_string.cpp"). Проверьте работу стеков с помощью
соответствующей тестовой программы.
Упражнение 3
Согласно описанию из п. 6.3 реализуйте стек с использованием динамической
памяти (примените операторы "new" и "delete").
Упражнение 4
Напишите функции для записи содержимого массива структур "Person"
(см. п.2) в файл, для чтения структур "Person" из файла и для печати этих структур
на экране. Для ввода/вывода из файла и для вывода на экран примените перегружен-
ные операторы ">>" и "<<".
113
ПРИЛОЖЕНИЕ. Краткое руководство по среде разработки
Developer Studio Visual C++
Microsoft Developer Studio –это интегрированная среда разработки программ,
объединяющая текстовый редактор, компилятор, компоновщик и отладчик. Эта среда
позволяет разрабатывать программы на нескольких языках программирования, в том
числе на Си++ и Java.
В этом приложении подробно описаны действия, необходимые для написания
простой программы на Си++, ее компиляции и запуска с помощью Developer Studio
Visual C++ на ПК под управлением операционной системы Windows 95/NT.
Visual C++ выполняет компиляцию и запуск программ в соответствии с про-
ектом. Проект –это структура данных, содержащая всю информацию, необходимую
для компиляции исходных файлов программы и ее компоновки со стандартными биб-
лиотеками (например, библиотекой ввода/вывода).
Компиляция и компоновка исходных файлов называется сборкой проекта. В ре-
зультате успешной сборки Visual C++ создает приложение (двоичный исполняемый
файл программы).
В данном учебном курсе все проекты рассчитаны на создание 32-битных кон-
сольных приложений. Консольные приложения общаются с пользователем через про-
стейшее окно ввода/вывода, которое называется консольным окном.
1. Создание нового проекта
Проект состоит из набора файлов с исходным текстом программы (исходных
файлов) и набора параметров, определяющих компиляцию и компоновку этих файлов
в исполняемый файл приложения. У проекта должно быть уникальное имя. Парамет-
ры проекта хранятся в файлах с расширениями ".DSW" и ".DSP" в папке проекта.
Далее подробно описаны действия по созданию проекта для простого консоль-
ного приложения hello_world, которые вы можете воспроизвести самостоятельно.
Сначала с помощью главного меню Windows запустите Visual C++. Затем про-
делайте перечисленные ниже действия.
1) Выберите команду верхнего меню File⇒New
(рис. 1).
Рис. 1. Выбор команды File⇒New
(Файл⇒Новый).
Рис. 2. Закладка Projects (Проекты) в окне соз-
дания нового файла.
114
2) Перейдите на закладку Projects (рис. 2).
3) Выберите проект типа Win32 Console application
(консольное приложение для платформы Win32, т.е. Windows 95/98 и
NT/2000).
4) В строке Location (Местоположение) укажите
папку диска C:\, имя которой совпадает с вашей фамилией (например,
"C:\Ivanov"). В строке Project Name (Имя проекта) введите
"hello_world". По умолчанию Developer Studio сделает новую папку про-
екта C:\Ivanov\hello_world. В ней будут сохраняться все файлы, отно-
сящиеся к данному проекту.
5) По умолчанию в качестве целевой платформы
проекта указывается Win32. Не изменяйте этот параметр.
6) Нажмите OK для создания проекта с заданными
параметрами.
2. Добавление в проект нового исходного файла
Чтобы включить в проект исходный текст программы, надо создать новый тек-
стовый файл с текстом программы на Си++ и добавить его в проект. Для этого вы-
полните следующие действия:
1) Выберите команду меню File⇒New.
2) В окне создания нового файла перейдите на закладку Files (рис. 3).
3) В списке выберите тип нового файла: C++ Source code (исходный файл Си++).
4) По умолчанию новый файл будет добавлен в текущий проект hello_world (т.к.
установлен флажок Add to project).
5) В строке File name наберите имя нового файла –hello (расширение".CPP" будет
добавлено автоматически).
6) Нажмите OK.
Рис. 3. Закладка Files (Файлы) в окне создания нового файла.
Developer Studio создаст новый файл hello.cpp в папке
C:\Ivanov\hello_world и добавит его в проект hello_world. Новый файл авто-
матически будет открыт в окне текстового редактора (рис. 4). Наберите в нем текст
программы, печатающей на экране короткое сообщение:
#include <iostream.h>
int main()
115
{
cout << "Hello world!\n";
return 0;
}
Чтобы сохранить набранный текст на диске, выберите команду меню
File⇒Save (Файл⇒Сохранить).
Рис. 4. Окно текстового редактора с открытым файлом hello.cpp распо-
ложено в правой части окна Developer Studio.
3. Сборка проекта
Результатом сборки проекта является исполняемый файл программы, который
может работать независимо от Developer Studio.