Автор работы: Пользователь скрыл имя, 05 Декабря 2011 в 21:02, курсовая работа
Программа на процедурном языке программирования состоит из последовательности операторов (инструкций), задающих процедуру решения задачи. Основным является оператор присваивания, служащий для изменения содержимого областей памяти. Концепция памяти как хранилища значений, содержимое которого может обновляться операторами программы, является фундаментальной в императивном программировании.
Циклы подразделяются на цикл: с параметром, с предусловием и с постусловием.
Цикл с параметром предписывает многократное выполнение одной и той же последовательности действий при значениях параметра в интервале от начального до конечного значений с заданным шагом.
Цикл с постусловием предписывает многократное выполнение одной и той же последовательности действий с проверкой истинности условия после тела цикла.
Оператор
вызова процедур предназначен для выполнения
отдельно заданной последовательности
операторов – подпрограммы, осуществляющей
последовательное построение величин,
доступ к которым осуществляется по имени
величины.
Программный
модуль - это часть программы, содержащаяся
в отдельном файле или библиотеке
примеры разработки
программ, основанные на методике компьютерного
решения задач
Задача 1
Дан кирпич
прямоугольной формы со
Решение
Основная
идея решения заключается в
упорядочивании сторон кирпича и отверстия
по возрастанию. Если меньшая сторона
кирпича меньше меньшей стороны отверстия,
а вторая по размеру сторона кирпича меньше
большей стороны отверстия, то кирпич
пройдет, иначе — нет. Таким образом, требуется
решить подзадачи упорядочивания сторон
кирпича и сторон отверстия. Поскольку
цель задачи — дать ответ "пройдет"
или "не пройдет", будем выполнять
упорядочивание, не вводя новых переменных.
Для сторон отверстия задача решается
просто: если X>Y, то обменять значения
X и Y. Упорядочить стороны кирпича можно
за три обмена: A и B, B и C и вновь A и B. Блок-схема
алгоритма решения задачи показана на
рис. 1.
Код программы:
Option Explicit
Private Sub Main()
Dim A As Single, B As Single
Dim C As Single, X As Single
Dim Y As Single, R As Single
A = CSng(InputBox("Введите A"))
B = CSng(InputBox("Введите B"))
C = CSng(InputBox("Введите C"))
X = CSng(InputBox("Введите X"))
Y = CSng(InputBox("Введите Y"))
If A>B Then R=A: A=B: B=R
If B>C Then R=B: B=C: C=R
If A>B Then R=A: A=B: B=R
If X>Y Then R=X: X=Y: Y=R
If A<X AND B<Y then
MsgBox("Пройдет")
Else
MsgBox("Не пройдет")
End If
End Sub
В коде программы следует обратить внимание на форму записи команд ветвления, используемых для обмена величин: каждая из них занимает одну строку. При этом команды присваивания после служебного слова Then разделены двоеточием. Для такой синтаксической формы не следует использовать команду End If.
С алгоритмической точки зрения в задаче 1 применены следующие новые приемы:
Плохим стилем программирования считается применение в задаче 1 сложных условий.
Задача 2
Вычислить сумму
Решение
Моделирование задачи 2 показывает, что для вычисления суммы можно использовать цикл For-Next, поскольку заранее известно количество слагаемых. Кроме того, не следует вычислять заново факториал для очередного слагаемого: гораздо проще вычислить факториал, опираясь на значение факториала для предыдущего слагаемого. Аналогично организуется чередование знаков слагаемых: введем целую переменную Z=1 и будем в цикле выполнять команду Z=-Z.
Для решения задачи введем следующие величины:
Таким образом, в задаче 2 дано: N, X; надо получить S.
Контрольный пример: при N=4 и X=3 получим S = -0.125.
Алгоритм решения задачи показан на рис. 2.
Код программы:
Option Explicit
Private Sub Main()
Dim S As Single, C As Single
Dim X As Single, Z As Integer
Dim i As Integer, N As Integer, F As Long
N=CInt(InputBox("Введите N"))
X=CSng(InputBox("Введите X"))
S=0: Z=1: C=1: F=1
For i=1 To N
F=F*i
S=S+Z*C/F
Z=-Z: C=C*X
Next
MsgBox (CStr(S))
End Sub
Обратите внимание, что порядок расположения команд внутри цикла не безразличен. Например, перенос вычисления F в конец цикла приведет к ошибочному результату. Обычно, при разработке алгоритма решения задачи он записывается не последовательно от начала к концу, а от главного блока к началу и к концу. В рассмотренном примере главным является блок внутри цикла.
Основным методом,
примененным в задаче 2, является
вычисление отдельных частей очередного
слагаемого с использованием их значений
для предыдущего слагаемого.
На ранних этапах развития программирования, когда программы писались в виде последовательностей машинных команд, какая-либо технология программирования отсутствовала. Первые шаги в разработке технологии состояли в представлении программы в виде последовательности операторов. Написанию последовательности машинных команд предшествовало составление операторной схемы, отражающей последовательность операторов и переходы между ними. Операторный подход позволил разработать первые программы для автоматизации составления программ – так называемые составляющие программы.
С увеличением размеров программ стали выделять их обособленные части и оформлять их как подпрограммы. Часть таких подпрограмм объединялась в библиотеки, из которых подпрограммы можно было включать в рабочие программы и затем вызывать из рабочих программ. Это положило начало процедурному программированию – большая программа представлялась совокупностью процедур-подпрограмм. Одна из подпрограмм являлась главной и с нее начиналось выполнение программы.
В 1958 году были разработаны первые языки программирования, Фортран и Алгол-58. Программа на Фортране состояла из главной программы и некоторого количества процедур – подпрограмм и функций. Программа на Алголе-58 и его последующей версии Алголе-60 представляла собой единое целое, но имела блочную структуру, включающую главный блок и вложенные блоки подпрограмм и функций. Компиляторы для Фортрана обеспечивали раздельную трансляцию процедур и последующее их объединение в рабочую программу, первые компиляторы для Алгола предполагали, что транслируется сразу вся программа, раздельная трансляция процедур не обеспечивалась.
Процедурный подход потребовал структурирования будущей программы, разделения ее на отдельные процедуры. При разработке отдельной процедуры о других процедурах требовалось знать только их назначение и способ вызова. Появилась возможность перерабатывать отдельные процедуры, не затрагивая остальной части программы, сокращая при этом затраты труда и машинного времени на разработку и модернизацию программ.
Информация о работе Технология процедурного программирования