148 Глава 2
закрывания дверей равен нулю. Лифт всегда знает, на каком он этаже в данный момент и на какой этаж он должен переместиться.
Не более одного человека может ожидать лифт на любом этаже в любой момент времени, так что если этаж занят, когда на нем должен появиться новый пассажир (не тот, который уже вызвал лифт), то его появление перепланируется на одну секунду позже. Для упрощения примем, что в моделирующей программе в любой момент времени может «создаваться» только один человек, так что время появления очередного человека в здании никогда не повторяется. Предположим, что человек случайно появляется на каждом этаже каждые 5-10 секунд — в главе 3 мы изучим, как использовать генерацию случайных чисел для такого моделирования.
Ваша цель в рамках этих специальных разделов глав 2-8 — создать работающую программу моделирования, функционирующую в соответствии с описанной постановкой задачи. Ваша программа должна промоделировать несколько минут работы лифта и определить, удовлетворяет ли лифт ожидаемым требованиям к перевозкам в этом офисном здании.
Лабораторное задание 1 по лифту
В этом и нескольких следующих заданиях вы должны осуществить отдельные этапа объектно-ориентированного проектирования. Первый этап — выявление (идентификация) объектов в вашей задаче. В конечном итоге вы должны будете дать формальное описание этих объектов и представить его ни С++. В данном задании вы должны:
Выявить объекты задачи моделирования лифта. В постановке задачи указано много совместно функционирующих объектов при моделиро вании лифта и его взаимодействия с различными людьми, этажами здания, кнопками и т.д. Выделите имена существительные в поста новке задачи; с большой вероятностью они представят большинство объектов, необходимых для создания программы, моделирующей лифт.
Для каждого идентифицированного вами объекта запишите один точно сформулированный абзац, который бы охватил все факты в постановке задачи, относящиеся к данному объекту.
Замечания
Это неплохое задание для группы. В идеале вы должны бы работать в группе из двух — четырех человек. Это поможет вам и вашим то варищам по группе подкрепить усилия друг друга, обсудить и усовер шенствовать каждый проект и подход к его реализации.
Ваша группа должна состязаться с другой группой вашего класса в разработке «наилучшего» проекта и его реализации.
Вы научитесь реализовывать «случайности» в следующей главе, когда мы изучим генерацию случайных чисел. Генерация случайных чисел поможет вам осуществить моделирование таких процессов, как слу чайное бросание монетки или игральных костей. Это также поможет вам реализовать случайное появление пассажиров лифта.
Мы сделали ряд упрощающих предположений. Вы можете решиться возместить некоторые утраченные при этом дополнительные детали ра боты лифта.
Управляющие структуры 149
Поскольку реальный мир также объектно ориентирован, для вас со вершенно естественно заниматься этим проектом, хотя формально вы еще не изучали объектную ориентацию.
Не беспокойтесь по поводу совершенства. Проектирование системы не является каким-то полностью завершенным идеальным процессом, так что вы должны смотреть на ваш проект только как на возможно лучшее приближение.
Вопросы
Какое решение вы примете, если лифт окажется в состоянии осуще ствить запланированный объем перевозок?
Почему намного сложнее сделать проект для здания с тремя и более этажами.
В дальнейшем ^ы увидим, что когда мы создадим один объект лифта, нам будет легко создать их сколько угодно. Какие проблемы вы пред видите в наличии нескольких лифтов, которые могут принимать и выгружать пассажиров на каждом этаже здания?
Для упрощения мы предположили, что емкость нашего лифта и каж дого этажа — только один человек. Какие проблемы вы предвидите, если увеличить эти емкости?
Резюме
Процедура решения задачи в терминах операций, которые должны вы полняться, и последовательности, в которой эти операции должны вы полняться, называется алгоритмом.
Определение последовательности, в которой должны выполняться опе раторы в компьютерной программе, называется программным управ лением.
Псевдокод помогает программисту «обдумать программу» прежде, чем попытаться написать ее на таком языке программирования, как С++.
Объявления — это сообщения компилятору, которые определяют имена и атрибуты переменных и дают указание компилятору зарезервировать для них место в памяти.
Структуры выбора используются для поиска среди альтернативных спо собов действий.
Структура выбора if осуществляет указанное действие только, если ее условие истинно.
Структура выбора if/else определяет различные действия, выполняе мые, если условие истинно, и если оно ложно.
Везде, где нормально ожидается один оператор, а должна выполняться группа операторов, эти операторы должны заключаться в фигурные скобки, образуя составной оператор. Составной оператор может быть помещен в любом месте программы, в котором может размещаться единичный оператор.
- 116 Глава 2
- 2.13. Основы повторения, управляемого счетчиком
- 2.14. Структура повторения for (цикл)
- 120 Глава 2
- 122 Глава 2
- 2.15. Пример использования структуры for
- 124 Глава 2
- 126 Глава 2
- 2.16. Структура множественного выбора switch
- Глава 2
- 130 Глава 2
- 132 Глава 2
- 2.17. Структура повторения do/while
- 134 Глава 2
- 2.18. Операторы break и continue
- Глава 2
- 2.19. Логические операции
- 138 Глава 2
- Глава 2
- 2.21. Заключение по структурному программированию
- IfcrpyKTypa (единственный выбор)
- Глава 2
- Глава 2
- 148 Глава 2
- Глава 2
- Глава 2
- Глава 2
- 156 Глава 2
- 158 Глава 2
- 160 Глава 2
- 2.1. А) следование, выбор и повторение, b) if/else. С) управляемым счет чиком или определенным заранее, d) Метку, сигнал, флаг или лож ный сигнал.
- 162 Глава 2
- 164 Глава 2
- 166 Глава 2
- 168 Глава 2
- 170 Глава 2
- 172 Глава 2
- 174 Глава 2
- 176 Глава 2
- 178 Глава 3
- Глава 3
- 3.3. Математические библиотечные функции
- 3.4. Функции
- Глава 3
- 3.5 Определения функций
- 184 Глава 3
- 186 ГлаваЗ
- 3.6. Прототипы функций
- 188 Глава 3
- 3.7. Заголовочные файлы
- 3.8. Генерация случайных чисел
- Глава 3
- 192 Глава 3
- 194 Глава 3
- 3.9. Пример: азартная игра
- Глава 3
- 198 Глава 3
- 3.10. Классы памяти
- 200 Глава 3
- 3.11. Правила, определяющие область действия
- 202 Глава 3
- 204 Глава 3
- 3.12 Рекурсия
- Глава 3
- 6) Значения, возвращаемые после каждого рекурсивного вызова
- 3.13. Пример использования рекурсии: последовательность чисел Фибоначчи
- Глава 3
- 3.14. Рекурсии или итерации
- 212 Глава 3
- Глава 3
- Глава 4
- Глава 5
- Глава 6
- 3.15. Функции с пустыми списками параметров
- 214 Глава 3
- 3.16. Встраиваемые функции