Технология процедурного программирования

Автор работы: Пользователь скрыл имя, 05 Декабря 2011 в 21:02, курсовая работа

Краткое описание

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

Содержимое работы - 1 файл

Процедурное.doc

— 124.50 Кб (Скачать файл)

Процедурное (императивное) программирование является отражением архитектуры традиционных ЭВМ, которая  была предложенафон Нейманом в 1940-х  годах. Теоретической моделью процедурного программирования служит алгоритмическая  система под названием Машина Тьюринга.

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

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

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

     1. Процедурное программирование 

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

     Отметим, что методологии разработки программных продуктов ранее и, тем более, в настоящее время уделяется очень большое внимание, но даже краткое освещение ее основных результатов выходит за рамки не только этого материала. По этой причине мы не будем здесь обсуждать, например, CASE-технологии, а рассмотрим только те парадигмы программирования, которые лежат в основе всех современных средств проектирования ПП и относятся преимущественно к языковым средствам. При этом рассматриваемые концепции программирования присущи и реализуемы в разных языковых средах, в том числе в С++ и Object Pascal. Надо отметить, что в языке С++ присутствует более широкий спектр средств, предназначенных, в первую очередь, для целей структурирования ПП. 
 
 

       

     Рис.1. Графическое представление программы в виде последовательности процедур 

     Примечание  Появление и интенсивное использование  условных операторов и оператора  безусловного перехода стало предметом  острых дискуссий среди специалистов по программированию. Дело в том, что  бесконтрольное применение в программе оператора безусловного перехода способно серьезно осложнить понимание кода. Соответствующие программы стали сравнивать со спагетти, называя их bowl of spaghetti, имея в виду многочисленные переходы от одного фрагмента программы к другому, или, что еще хуже, возврат от конечных операторов программы к ее начальным операторам. Ситуация казалась настолько драматичной, что в литературе зазвучали призывы исключить оператор goto из языков программирования. Именно с этого времени принято считать хорошим стилем программирования - программирование без goto.

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

     Кстати, чтобы по достоинству оценить роль и значение процедур, возьмите любую программу и посмотрите, сколько в ней используется процедур и функций: стандартных и собственных. Код хорошо написанной программы будет на 90% состоять из вызовов подпрограмм.

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

     Вот пример процедурного кода, выводящего строку 

     <?php

     print "Hello, world.";

     ?> 
 
 
 
 

Процедурное (императивное) программирование является отражением архитектуры традиционных ЭВМ, которая  была предложена фон Нейманом в 1940-х годах. Теоретической моделью процедурного программирования служит алгоритмическая система под названием Машина Тьюринга.

Основные  сведения

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

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

Первоначальной (и, возможно, наиболее используемой) парадигмой программирования было:

Определите, какие  процедуры вам нужны;

используйте лучшие из известных вам алгоритмов!

Ударение делалось на обработку данных с помощью  алгоритма, производящего нужные вычисления. Для поддержки этой парадигмы  языки предоставляли механизм передачи параметров и получения результатов  функций. Литература, отражающая такой подход, заполнена рассуждениями о способах передачи параметров, о том, как различать параметры разных типов, о различных видах функций (процедуры, подпрограммы, макрокоманды, ...) и т. д. Первым процедурным языком был Фортран, а Алгол60, Алгол68, Паскаль и С продолжили это направление.

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

Элементы  программ

 

 

     Данные  есть сведения об объектах, их свойствах  и отношениях. Данные могут быть простые и сложные.

      К простым (атомарным, не структурированным) данных относятся данные, не содержащие в себе как часть другие данные. 

      Абстрактным типом данных называется совокупность множества допустимых значений данных и операций над ними.

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

Типы  данных подразделяются на простые и структурированные  или структуры.

Простые типы данных: целый, вещественный, символьный и логический.

Структура данных – это отношение между другими данными. К структурам относятся массивы, записи и файлы.

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

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

      Файлом является структурированный тип данных, позволяющий объединять упорядоченный набор записей, доступ к которым осуществляется по их номеру или адресу. Записи файлов в зависимости от размера подразделяются на записи фиксированной, переменной и неопределенной длины.

Файлы в зависимости  от типа содержащейся в них информации подразделяются на числовые, текстовые  и двоичные.  

      Константа – это величина, значение которой не изменяется в ходе выполнения программы.

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

      Константы и переменные характеризуется типом  данных, размером, именем (идентификатором) и областью видимости.  

      Операция – это элементарное действие обработки данных.

      Операции ЭВМ по типу объектов, к которым они применимы, делятся на  арифметические, логические, отношения или сравнения, символьные, сдвига, преобразования типа данных и операции  ввода / вывода.

      Логические  операции включают операции И, ИЛИ и НЕТ.

      Операции  отношения или сравнения включают операции сравнения на =, ¹, >, ³, <, £ 

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

      В зависимости от типа результата выражения  делятся на арифметические, логические, символьные и строковые.

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

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

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

      Основные (базисные) операторы языка программирования подразделяются на операторы присваивания, управляющие операторы и операторы  вызова процедур.

      Оператор  присваивания предписывает присваивание переменной значения вычисленного выражения.

      Управляющие операторы предназначены для явного указания последовательностей действий в алгоритмах.

Управляющие операторы  подразделяются на последовательности, условные операторы и циклы.

      Оператор последовательность объявляет некоторую последовательность операторов в виде одного оператора. Это необходимо при использовании последовательностей операторов в других управляющих операторах.

      Условный  оператор предписывает выбор направления выполнения алгоритма в зависимости от некоторых условий.

      Цикл  предписывает многократное выполнение одной и той же последовательности действий.

Информация о работе Технология процедурного программирования