Обучающие курсы:

Обучение профессии "Разработчик C#" + стажировка в Mail.ru
Обучение профессии "Разработчик Python" + трудоустройство
Обучение профессии "Веб-разработчик" + стажировка в Mail.ru


Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





УПРАВЛЕНИЕ ВЫЧИСЛЕНИЯМИ И ПОРЯДКОМ ИСПОЛНЕНИЯ ПРОГРАММЫ

Основные составляющие понятия "управление исполнением программы"

Понятие "управление исполнением программы" складывается из трех составляющих:
-           описание на языке программирования действий, соответствующих алгоритму решения задачи,
-           учет и корректировка действий, выполняемых средой программирования,
-           идентификация и контроль процесса исполнения программы.

Рассмотрим смысл каждой из этих составляющих и средства реализации ее управляющих действий.

 

Управление исполнением с помощью операторов

Процесс исполнения программы состоит в выполнении последовательности действий, описывающей на языке программирования алгоритм решения задачи. В текстовом представлении программы эта последовательность действий представляется разделом операторов главного блока программы. Некоторые подалгоритмы основного алгоритма реализуются в виде подпрограмм, описываемых в Турбопаскале с помощью процедур или функций. Исполнение такого подалгоритма описывается разделом операторов локального блока подпрограммы. И если для Турбопаскаля мы сейчас рассмотрим объяснения того, как исполняется программа, то для других платформ вы сможете найти хорошие обучающие материалы на этом сайте - coding4.net - создание приложений на Silverlight станет для вас боле понятным и простым делом.

Раздел операторов является замкнутой конструкцией, начинающейся ключевым словом Begin и заканчивающейся ключевым словом end. Между ними заключена последовательность операторов, разделяемых точкой с запятой. Понятие "оператор" включает в себя задание некоторого действия. Языки программирования содержат, как правило, небольшое количество видов операторов, с помощью которых можно достаточно наглядно и естественно описывать как угодно сложные алгоритмы обработки данных.

С помощью операторов в программе задаются требуемые вычисления (обработка данных) и порядок, последовательность этой обработки. Вычисления выполняются, в основном, при исполнении оператора присваивания и оператора процедуры (или указателя функции).

По правилам исполнения программы операторы, заданные в разделе операторов некоторого блока (программы или подпрограммы), выполняются последовательно. Завершение выполнения последнего оператора раздела равносильно завершению исполнения его блока (программы или подпрограммы).

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

 

Задание параметров и директив компилятора

Процесс исполнения программы определяется не только исполняемыми в ней операторами, но также операционной средой (аппаратурой, операционной системой) и средой системы программирования. Эти среды диктуют свои требования и ограничения на выделяемые ресурсы и характер выполнения вычислений. Эти требования и ограничения сказываются "по умолчанию" (неявно) в процессе исполнения программы и незнание их часто приводит к возникновению непонятных ситуаций.

Однако на некоторые из своих решений система позволяет программе влиять, предлагая ряд параметров (их значения сначала задаются системой по умолчанию). Эти параметры касаются как характера выполнения вычислений (например, выполнения вычислений с вещественными числами с разной точностью), так и контроля выполнения некоторых действий - операций, распределения и контроля использования ресурсов (например, оперативной и внешней памяти). Переопределяя значения этих параметров, пользователь может указать одно из допустимых значений.

Влияние на процесс исполнения программы параметров и директив компилятора очень существенно. Неумение их использовать существенно обедняет программу, делает ее ненадежной и неэкономичной.

 

Идентификация и контроль исполнения программы

Понятие "управление процессом исполнения", помимо программной реализации алгоритма, включает в себя идентификацию (фиксацию, отслеживание) и контроль процесса исполнения программы. Эти действия не относятся непосредственно к реализации самого алгоритма, а являются дополнительными, добавляемыми обычно с целью проверки правильности работы аппаратуры, действий пользователя при взаимодействии с программой.

           
Идентификация и контроль исполнения подразумевают фиксацию выполнения определенных участков программы, соответствующих некоторым подалгоритмам. Границы таких участков называются обычно "контрольными точками".

Цель действий, выполняемых в таких контрольных точках, может быть различной:
-выдача сообщений на экран пользователя (оператора) о ходе исполнения программы,
-           посылка сообщений другой программе (с которой она совместно исполняется),
-           запоминание в файлах фиксируемого состояния программы (значений данных, мест их фиксации),
-           сравнение полученных (промежуточных) результатов с полученными ранее,
-сбор статистики (например, числа итераций, времени счета, используемых размеров дискового пространства) и т.п.

Рассмотрим основные средства управления процессом исполнения программы и рекомендации к их применению.

 

Задание вычислений

К этой группе средств можно отнести все конструкции языка, которые задают необходимые вычисления с помощью операций с операндами того или иного типа. Такой конструкцией является в первую очередь выражение. Выражение может входить в операторы разного вида: в аргументы вызовов подпрограмм (в том числе стандартных), в выражения заголовка цикла с параметром и заголовка оператора выбора, в условия операторов цикла и условных операторов и т.п. Но это все вспомогательные действия. Основные вычисления выполняются выражениями, входящими в состав операторов присваивания.

 

Оператор присваивания

Присваивание можно рассматривать как операцию с двумя операндами, причем ее исполнение (как и других операций) зависит от типов операндов. Определение "присваивания" как операции приводится в главах 3 и 8, посвященных изучению скалярных и составных типов данных. Однако, поскольку присваивание синтаксически определяется как оператор, повторим здесь основные сведения о нем.

Оператор присваивания имеет вид:
<переменная> := <выражение>

Выполнение оператора состоит в вычислении выражения и в присваивании вычисленного значения переменной, указанной в левой части оператора. Вообще понятие "переменная" (с учетом рассмотренных в гл. 8 составных типов данных) включает в себя такие составляющие, как место в оперативной памяти (в котором располагается значение переменной) и имя (в широком смысле) - как некая конструкция для указания доступа к этому значению (в том числе имя функции).

Порядок вычисления выражения определяется старшинством операций и скобками, а тип операций и результаты выполнения - операндами. Операндами могут являться также указатели стандартных и пользовательских функций, для каждой из которых определены типы аргументов и результатов.

 

Вызов подпрограмм

Как известно, подпрограмма - одно из базовых понятий программирования. В виде подпрограмм представляются программные объекты, реализующие некоторую операцию, алгоритм, способ обработки данных. Подпрограмма описывается как некоторая замкнутая программная конструкция, имеющая имя, параметры и тело подпрограммы. Тело подпрограммы обязательно содержит некоторые операторы обработки данных. Для их выполнения подпрограмма может содержать свои собственные (локализованные в ней) программные объекты.

Подпрограммы играют очень важную роль в понимании алгоритма, шагов его исполнения, "укрупненных" операций обработки данных.

Будучи определены в программе или вне ее (например, в некотором модуле), подпрограммы могут использоваться (вызываться для исполнения) с заданием разных аргументов (фактических параметров). Результаты исполнения подпрограммы должны каким-либо образом передаваться вызывающей ее программе. Механизм вызова подпрограмм в языке Турбо Паскаль допускает рекурсивный способ их исполнения.
В языке Турбо Паскаль подпрограммы представляются программными объектами двух видов — функциями и процедурами. Функции и процедуры, необходимые для конкретной программы, могут быть определены как в используемых ею системных или пользовательских модулях, так как непосредственно в программе (в разделах описания функций и процедур).

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

Вызовы подпрограмм инициируют исполнение как стандартных, так и пользовательских подпрограмм, определенных в различных модулях системы. Вызовы подпрограмм являются, как правило, весьма "мощными" средствами выполнения вычислений, так как при их исполнении обычно выполняются, сложные, содержательные алгоритмы или инициируются системные подпрограммы, ведающие управлением аппаратурой (например, при реализации операций ввода-вывода), прерыванием процесса исполнения программ и т.п.

Для достаточно простых задач хорошо выполненное структурирование алгоритма (путем выделения подалгоритмов и описание их в виде пользовательских подпрограмм и подпрограмм используемых модулей) часто приводит к тому, что операторная часть программы состоит в основном из последовательности вызовов этих подпрограмм.

Вообще, при программировании алгоритмов решения класса задач (то есть некоторого набора родственных задач) всегда формируются пользовательские модули, включающие в себя подпрограммы, используемые в программах решения задач этого класса. Такое выделение и совместное определение группы родственных подпрограмм в пределах специального (проблемно-ориентированного) модуля существенно сокращает сложность, объем программ решения задач и время на их разработку.

 




 

Комментарии:


Добавить свой комментарий:


Введите значение:
 









   
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru