Учебно-методическое пособие. Алматы, 2017 ббк



бет18/106
Дата03.01.2022
өлшемі483.39 Kb.
#451845
түріУчебно-методическое пособие
1   ...   14   15   16   17   18   19   20   21   ...   106
УЧЕБНИКПаскаль(100217)

Задание

1. Приведите пример стека.

2. Объясните, что означает понятие «максимальная глубина стека».

3. Какие основные действия проводятся со стеком?

4. Расскажите, в каком случае нельзя произвести действие "Взять элемент из стека".

1.5 СТРУКТУРНОЕ ПРОГРАММИРОВАНИЕ.


При рассмотрении процесса составления структуриро­ванных программ мы будем придерживаться понятия «умозрительная» машина, предложенного Э. Дейкстрой. Допустим, нам необходимо выполнить некоторые действия, например: нам необходимо, чтобы машина смогла приготовить чай. Если она достаточно умна, то после команды «Приготовь чай», сама выполнит необхо­димые действия. Но пока такой машины нет в нашем распоряжении, мы вынуждены давать более подробные инструкции:

Шаг 1.

1. Подготовить материалы для приготовления чая.



2. Приготовить чай.

3. Закончить работу.

Шаг 2.

1. Подготовить материалы для приготовления чая.



1.1. Определить, есть ли емкость для воды.

1.2. Определить, есть ли вода.

1.3. Определить наличие заварки.

1.4. Определить, есть ли чем нагреть воду.

2. Приготовить чай.

2.1. Набрать в емкость воду.

2.2. Довести воду до кипения.

2.3. Заварить чай.

3. Закончить работу.

............................

Каждая строка инструкции является предписанием для своей «умозрительной» машины более низкого уровня. Для каждой из этих машин мы проводим детализацию, то есть, подключаем к работе «умозрительные» машины все более «низкого» уровня.

Обратите внимание, что при детализации необходимых действий мы не стремимся сразу оговаривать, как де­лать, а говорим о том, что необходимо делать. При про­ведении детализации существует следующее правило: Не принимайте ответственных решений. То есть, старайтесь не взваливать всю работу на «умозрительную» машину верхнего уровня - передавайте большую часть работы на «умозрительную» машину более низкого уровня. Пока неизвестно, какая емкость для воды у нас имеется на вто­ром шаге, мы не говорим, что именно берем. Для сравнения - Случай 2 - Что бы мы делали, если бы у нас не было чай­ника?

Детализация (подключение «умозрительных» машин более низкого уровня) проводится до тех пор, пока реальная машина не сможет выполнить указание. Более того, если следовать этому подходу в случае написания программы, в конечном итоге Вы получите готовый текст программы.

В чем преимущества структурного подхода к програм­мированию?

1. Можно ожидать, что логика работы программы будет более понятна программирующему.

2. Если Вы пока не знаете, как реализовать какой-либо модуль, всегда можно поставить «умозрительную» машину, которая ничего не делает.

3. Возможность «работать» (программировать) с отдель­ным модулем.

4. Независимость «умозрительных» машин одного уровня позволяет независимо модифицировать блоки про­граммы без затрагивания других блоков. Как отмечал Э. Дейкстра: “…модификации программ могут быть теперь представлены заменой одной (умозрительной) машины дру­гой подходящей машиной”.

5. Проведение отладки структурированных программ намного легче, чем не структурированных.

6. Можно ожидать, что это оградит нас от ненужной ра­боты. Если нет заварки, наша программа просто завершит работу.

7. “Структурный подход” позволяет проводить целена­правленную подготовку к участию в олимпиадах по информатике. Если модули независимы друг от друга, то можно заранее подготовить машины нижнего уровня, например, блок сортировки, блок поиска в глубину, поиска в ширину, блок обработки входной информации. Отработав их в подготовительный период, на олимпиаде, исходя из задачи, использовать в том или ином сочетании.

Небольшое замечание. Часто, сравнивая языки программирования, говорят, что Паскаль - структурированный язык. А, например, Бейсик - нет. Что один язык лучше дру­гого. Хочется напомнить таким спорщикам следующее: каждый язык программирования наиболее удобен для опре­деленного круга задач. Например, для задач, связанных с искусственным интеллектом, возможно, более подходит язык Пролог, для задач, связанных с вычислениями, лучше Фор­трана вряд ли что можно предложить и т.д. Помните! На “структурированном” Паскале можно написать "неструктури­рованные" программы. А на “неструктурированном” Бейсике - хорошо "структурированную" программу.

Иногда, сравнивая структурное программирование с объектно-ориентированным и визуальным программированием, представляют последние как более высокую ступень программирования. Это не так. Объектно-ориентированное программирование, как и визуальное программирование, это лишь способы программирования, тогда как структурное программирование - это методология и идеология программирования.



Достарыңызбен бөлісу:
1   ...   14   15   16   17   18   19   20   21   ...   106




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет