46221

Стек

Доклад

Информатика, кибернетика и программирование

Типичный пример модуля определение стека. Здесь необходимо решить такие задачи: Предоставить пользователю интерфейс для стека например функции push и pop. Гарантировать что представление стека например в виде массива элементов будет доступно лишь через интерфейс пользователя. Обеспечивать инициализацию стека перед первым его использованием.

Русский

2013-11-20

14.63 KB

0 чел.

Вопрос7. Стек

Со временем при в проектировании программ акцент сместился с организации процедур на

организацию структур данных.  Помимо всего прочего это вызвано и ростом размеров программ.

Модулем обычно называют совокупность связанных процедур и тех данных, которыми они управляют.

Парадигма программирования приобрела вид:

Определите, какие модули нужны; поделите программу так, чтобы данные были скрыты в этих модулях

Эта парадигма известна также как  "принцип сокрытия данных".  Если в языке нет возможности

сгруппировать связанные процедуры вместе с данными,  то он плохо поддерживает модульный стиль

программирования. Теперь метод написания "хороших" процедур применяется для отдельных процедур

модуля. Типичный пример модуля - определение стека. Здесь необходимо решить такие задачи:

[1]  Предоставить пользователю интерфейс для стека (например, функции push () и pop ()).

[2]  Гарантировать, что представление стека (например, в виде массива элементов) будет доступно

лишь через интерфейс пользователя.

[3]  Обеспечивать инициализацию стека перед первым его использованием.

Использовать стек можно так:

#include "stack.h"  // используем интерфейс стека

void some_function ()

{

push ( 'c' );

char c = pop ();

if ( c != 'c' )  error ( "невозможно" );

}

Допустим,  что описание интерфейса находится в файле stack.h,  тогда реализацию стека можно

определить следующим образом:

#include "stack.h"  // используем интерфейс стека

static char v [ stack_size ];     // ``static'' означает локальный

                                                   // в данном файле/модуле

static char * p = v;  // стек вначале пуст

void push ( char c )

{

//проверить на переполнение и поместить в стек

}

char pop ()

{

//проверить, не пуст ли стек, и считать из него

}


 

А также другие работы, которые могут Вас заинтересовать

39978. Методы увеличения вычислительной производительности 92.37 KB
  Однако процесс обработки команд и данных нельзя нашинковать в произвольных местах на любое число кусков хотя авторы последних модификаций Pentium 4 сделали такую попытку получив в результате очень горячий и высокочастотный но умеренно производительный процессор. При возникновении в программе любого ветвления что по статистике происходит каждые 710 команд специальная схема предсказатель переходов первая стадия конвейера должна за 1 такт сообразить сработает ли этот переход и если да то куда при том что данные для...
39979. Сервер (аппаратное обеспечение) 56.21 KB
  Консоль обычно монитор клавиатура мышь и участие человека необходимы серверам только на стадии первичной настройки при аппаратнотехническом обслуживании и управлении в нештатных ситуациях штатно большинство серверов управляются удаленно. Надёжность Серверное оборудование зачастую предназначено для обеспечения работы сервисов в режиме 24 7 поэтому часто комплектуется дублирующими элементами позволяющими обеспечить пять девяток 99999 ; время недоступности сервера или простой системы составляет менее 6 минут в год. Повышение...
39980. Общие средства повышения надежности 22.51 KB
  Общие средства повышения надежности Надежность это вероятность безотказной работы какоголибо устройства в течение заданного срока службы. Эту вероятность они называют надежностью. Для оценки важности понятия надежность нам придется вести довольно тривиальный разговор о сложности мира машин и приборов. Надежность машин зависит от множества причин: и от материалов используемых для их изготовления и от станочного оборудования и от условий эксплуатации и от заводского контроля и от мастерства рабочих и конечно от конструкторских идей...
39981. Многопроцессорные системы 31.16 KB
  Термин также относится к способности системы поддержать больше чем один процессор и или способность распределить задачи между ними. Комбинация конструктивных соображений программного обеспечения аппаратной и операционной системы определяет симметрию или отсутствие её в данной системе. Часто многопроцессорные системы проще проектировать если введены такие ограничения но они имеют тенденцию быть менее эффективными чем системы в которых используются все центральные процессоры.
39982. Наиболее востребованные уровни RAID (0,1,5,10) 221.4 KB
  Наиболее востребованные уровни RID 01510. RID 0 надежность с увеличением дисков снижается. RID 1 вся информация которая хранится на основном диск дублируется на резервный. RID 01 совмещение 1 и 0 уровней.
39983. Закон Мура в применении к СКС 47.01 KB
  Gigbit Ethernet возник в ответ на потребность во все больших и больших скоростях передачи данных. Gigbit Ethernet является дальнейшим развитием стандартов Ethernet и Fst Ethernet которые уже хорошо зарекомендовали себя за почти двадцатилетнюю историю. Он быстрее в первого из них в 100 и второго в 10 раз соответственно а теоретическая пропускная способность gigbit Ethernet достигает 1000 Мбит сек что приблизительно равно 120 МБайтам в секунду то есть вплотную приближается к скорости 32битной шины PCI 33 МГц. Технология обладает обратной...
39984. Кластер (группа компьютеров) 74.59 KB
  Обычно различают следующие основные виды кластеров: отказоустойчивые кластеры Highvilbility clusters H кластеры высокой доступности кластеры с балансировкой нагрузки Lod blncing clusters вычислительные кластеры High perfomnce computing clusters Гридвычисления Содержание 1 Классификация кластеров 1.1 Кластеры высокой доступности 1.2 Кластеры распределения нагрузки 1.3 Вычислительные кластеры 1.
39985. Функции шифрования пароля в Unix и Windows 24.56 KB
  Поле пароль x будет содержать либо реальный зашифрованный пароль либо его обозначение как в данном примере. При регистрации в системе UNIX программа getty требует ввести имя пользователя и запускает программу входа в систему а та в свою очередь запрашивает пароль но не декодирует его. Фактически программа bin login шифрует пароль введенный пользователем а затем сравнивает полученное значение с тем которое хранится в etc psswd. Если данные совпадают то пароль был введен правильно.
39986. Социальная инженерия 33.33 KB
  Социальная инженерия Социальная инженерия это метод несанкционированного доступа к информации или системам хранения информации без использования технических средств. Основной целью социальных инженеров как и других хакеров и взломщиков является получение доступа к защищенным системам с целью кражи информации паролей данных о кредитных картах и т. для получения нужной информации. Целью фишинга является незаконное получение конфиденциальной информации.