Смекни!
smekni.com

Основы программирования на языке Си (стр. 26 из 27)

Помещает элемент на верх стека. Возвращает "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) Выберите команду верхнего меню FileNew

(рис. 1).

Рис. 1. Выбор команды FileNew

(ФайлНовый).

Рис. 2. Закладка Projects (Проекты) в окне соз-

дания нового файла.

114

2) Перейдите на закладку Projects (рис. 2).

3) Выберите проект типа Win32 Console application

(консольное приложение для платформы Win32, т.е. Windows 95/98 и

NT/2000).

4) В строке Location (Местоположение) укажите

папку диска C:&bsol;, имя которой совпадает с вашей фамилией (например,

"C:&bsol;Ivanov"). В строке Project Name (Имя проекта) введите

"hello_world". По умолчанию Developer Studio сделает новую папку про-

екта C:&bsol;Ivanov&bsol;hello_world. В ней будут сохраняться все файлы, отно-

сящиеся к данному проекту.

5) По умолчанию в качестве целевой платформы

проекта указывается Win32. Не изменяйте этот параметр.

6) Нажмите OK для создания проекта с заданными

параметрами.

2. Добавление в проект нового исходного файла

Чтобы включить в проект исходный текст программы, надо создать новый тек-

стовый файл с текстом программы на Си++ и добавить его в проект. Для этого вы-

полните следующие действия:

1) Выберите команду меню FileNew.

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:&bsol;Ivanov&bsol;hello_world и добавит его в проект hello_world. Новый файл авто-

матически будет открыт в окне текстового редактора (рис. 4). Наберите в нем текст

программы, печатающей на экране короткое сообщение:

#include <iostream.h>

int main()

115

{

cout << "Hello world!&bsol;n";

return 0;

}

Чтобы сохранить набранный текст на диске, выберите команду меню

FileSave (ФайлСохранить).

Рис. 4. Окно текстового редактора с открытым файлом hello.cpp распо-

ложено в правой части окна Developer Studio.

3. Сборка проекта

Результатом сборки проекта является исполняемый файл программы, который

может работать независимо от Developer Studio.