Какая модель построения программ лежит в основе технологии процедурного программирования
Процедурный подход к обработке информации возник на заре программирования. Именно с этим стилем программирования связано все развитие вычислительной техники. Несмотря на прогресс технологии, большинство современных компьютеров построены по тем же принципам, что и машины 40-х годов. В их основе лежит так называемая архитектура фон Неймана, названная в честь американского ученого Дж. фон Неймана, впервые изложившего принципиальные положения архитектуры ЭВМ во второй половине 40-х годов.
Основные принципы архитектуры фон Неймана состоят в следующем:
1. ЭВМ состоит из процессора, памяти и внешних устройств;
2. единственным источником активности (не считая стартового и аварийного вмешательства человека) в ЭВМ является процессор, который, в свою очередь, управляется программой, находящейся в памяти машины;
3. память машины может быть представлена как последовательность дискретных ячеек, каждая из которых имеет свой адрес; каждая ячейка хранит команду программы или некоторую единицу обрабатываемой информации, причем и то и другое выглядят одинаково (машинное слово);
4. в любой момент времени процессор выполняет одну команду программы, адрес которой находится в специальном регистре процессора - счетчике команд;
7. машина выполняет программу команда за командой в соответствии с изменением содержимого счетчика команд и расположением команд в памяти, пока не получит команду остановиться.
Развитие процедурных языков определялось особенностями вычислительной машины Дж. фон Неймана; способы представления знаний и задач, а также методов их решения были ориентированы на экономию ресурсов. При этом интеллектуальный комфорт пользователя был проигнорирован. Программа разрабатывается в терминах тех действий, которые она должна выполнять. Основная единица программы - процедура - последовательность операторов, выполняющая определенный вспомогательный алгоритм. Процедуры могут вызывать другие процедуры, вместе они работают по определенному алгоритму, ведущему к решению задачи. Кроме понятия оператор в основе процедурного языка лежит понятие операнд - данные, которые обрабатываются при помощи операторов. Типы операндов: простой, массив, структуры. Типы операторов: присваивания, условных операций, итерации.
Программа, написанная на процедурном языке, явно указывает способ получения результата, но не сам результат.
Существует большое число процедурных языков программирования. Это - Algol, Fortran, Pascal, С, Basic и др.
Обращаем Ваше внимание, что в соответствии с Федеральным законом N 273-ФЗ «Об образовании в Российской Федерации» в организациях, осуществляющих образовательную деятельность, организовывается обучение и воспитание обучающихся с ОВЗ как совместно с другими обучающимися, так и в отдельных классах или группах.
Рабочие листы и материалы для учителей и воспитателей
Более 2 500 дидактических материалов для школьного и домашнего обучения
Столичный центр образовательных технологий г. Москва
Получите квалификацию учитель математики за 2 месяца
от 3 170 руб. 1900 руб.
Количество часов 300 ч. / 600 ч.
Успеть записаться со скидкой
Форма обучения дистанционная
- Онлайн
формат - Диплом
гособразца - Помощь в трудоустройстве
Видеолекции для
профессионалов
- Свидетельства для портфолио
- Вечный доступ за 120 рублей
- 311 видеолекции для каждого
Пр о ц е д у р н о е п р о г р а м м и р о в а ни е
П р о ц е д у р н о е ( и м п е р ат и в н о е) п р о г р ам м и р о в а ни е я вл я ет с я о т р аж е н и ем а р х и- тект у р ы т р а д и ц ион н ы х Э ВМ, к о т о р ая б ы л а п р е д л о ж е н а ф о н Н е й м а н о м в 1 9 4 0 - х г о д а х . Т е о р е т и че ск о й м о д е ль ю п р о ц е д у рно го пр о г р амм ир о в а н и я с л у ж и т а л г о- ри т м и ч е ск а я с и с т е м а п о д н а зв а н и ем « м а ш ин а Тьюр и н га » .
П ро г р ам м а н а п р оц е д у рн о м я з ы к е п р о г р ам м и р о в а н и я с о с т ои т и з п о с л е до в а- т е ль но с т и оп е р а т ор о в ( ин с т р у к ций ) , з а д а ю щ и х п р оц е д у р у р е ш е н и я з а д а ч и . О с- но в ны м я вл яе т с я оп е р а т о р п ри с в а и в а ни я , с л у жа щ и й д л я и з м е н е ни я с о д е р ж и м о го об л а стей п а м ят и . К о н ц е п ц и я п а м я ти к а к х р а ни л и ща з н ач е н ий , с о д е р ж и м о е ко- т о р о г о м о жет о б н о в л ят ь ся оп е р а т о р а м и п р о г р а мм ы , я вл яе т ся ф у н д аме н т а ль н о й в и м п е р а т и вн о м про г р ам м и ро в а н и и .
В ы п о лн е н и е п р о г р а ммы с в о ди т с я к п о с л е до в а т е ль н о му в ыпо л н е н и ю оп е р а- т о р о в с ц е ль ю пр е о б р а з о в а н и я и с х о д но го с о с т о я н и я п а м я т и , то есть з н ач е н и й и с хо д ны х д а н ны х , в з ак лю ч и те льн о е, то есть в р е з у ль т а т ы . Т ак и м о б р а з о м , с т о ч к и з р е н и я п р о г р ам м и ста и м е ю тся п р о г р амма и п ам я т ь , при ч ем п е р в ая по- с л е д о в ате льн о о б новл яет с о д е р ж и м о е п о с л е дн е й .
П р о ц е д у р н ы е я з ы к и х а р акт е ри з у ю тся с л е д у ю щ и ми о с о б е н н о ст я м и :
н е об х од и м о ст ь ю я в но г о у пр а вл е н и я п а м я т ью , в час т н о ст и , о п и с а н и ем п е- р ем е н ны х ;
ма л о й п р и г о дн о ст ь ю д л я с и м в о ль н ы х в ы ч и с л е н и й;
о тс у тст в и ем ст р о г о й матема т и ч е с к о й о с но в ы ;
в ы с о к о й э ф ф ек т и вн о ст ь ю р еа л и з а ци и н а т р а д и ц и о нн ы х Э В М.
О дн и м и з в а ж н е й ш и х к л ас с и ф и к а ц ион н ы х п р и з н а к о в п р о ц е д у р н о г о я з ы ка я вл я ется е г о у ро в е нь . У ро в е н ь я зы ка пр о г р ам м и р о в а ни я оп р е д е л я ет с я сем а н т и- чес к о й ( см ы с л о в ой ) емк о ст ь ю его к о н с т р у к ци й и ст е п е н ь ю его ор и е н т а ц и и н а п р о г р ам м и ста. Я зы к п р о г р ам м и р о в а н и я част и ч н о л и к в и д ир у ет р а зр ы в ме ж д у мет о д а м и р еш е ни я р а зл и ч н о го ро д а з а д ач че л о в е к о м и в ы ч и с л и т е ль н о й м а ш и- н о й . Ч е м бо л ее я з ы к ор и е н т и ро в а н н а че л о в е к а, тем в ы ш е его у ро в е н ь . Д а д и м к р а т к у ю х а р акт е ри с т и ку р еа л и з о в а н ны м н а ПЭ ВМ я з ы к а м п р о г р ам м и р о в а ни я в п о р я д ке в о з р а ста н и я и х у ро вн я .
Д в о и ч н ы й я з ы к я вл я ется н е п о с р е д ст в е н н о ма ш и н ны м я з ы к о м. В н ас т о я щее в р емя т а к и е я з ы к и п ро г р а мм и с т ами п р а кт и ч е с к и н е п р и м е н я ю тся.
Яз ы к А ссем б л е р а – э то я з ы к, п р е д н а зн аче н н ы й д л я пр е д с т а вл е н и я в у до б о- ч и тае м о й с и м в о л и ч еск о й ф о р ме пр о г р а мм, з а п и с а н ны х н а маш и н н о м я зы ке. О н по з в о л яет п ро г р а мм и сту по льз о в ат ь с я м н е м о н и че с к и ми к од ами о п е р а ц ий , п р и- с в а и в ать у до бн ы е и ме н а я ч е й к а м и о б л аст я м п амя т и , а та к же з а д а в ать н а и б о л е е у доб н ы е с х е м ы а д р е са ц ии .
Яз ы к М а кр о а ссем б ле р а я вл я ется р а с ш и р е н и ем я з ы ка А ссем б л е р а п у тем в к лю че н и я в н е г о м ак р о с р е д ст в . С и х п о м о щ ь ю в п р о г р а м ме м о ж н о о п и с ы в а т ь по с л е д о в а т е ль но с т и ин с т р у к ци й с п а р а м е т р а м и – м а кр оо п р е д е л е ни я . П о с л е в к лю че ни я м ак р о с р е д с т в п ро г р а м м и ст м о жет и с п о льз о в а т ь с н а б ж е н н ы е а р г у- ме н та м и ма к р о к о м а н д ы , к о т о ры е в п р о ц ессе а с се м б ли ро в а ни я п р о г р ам м ы а в- т о ма т и че с ки з а м е щ а ю тся ма к р о р а сш ир е н и ям и . М а к р о р ас ш ир е н и е п р е д ста вл я е т с о б о й ма к р о о п р е д е л е н и е с п од с та вл е нн ы ми в м е сто п а р аме т ро в а р г у ме н та м и .
Др у г и ми с л о в а м и , я з ы к Ма к р о ассе м б л е р а п р е д о с т а вл яет с р е д ст в а оп р е д е л е- ни я и и с п о льз о в а н и я н о вы х , б о л ее м о щ н ы х к о м а н д к ак п о с л е до в а т е ль н о сти б а- з о вы х и н с т р у к ций , что н ес к о ль ко по в ы шает его у ро в е н ь .
Я з ы к и А ссе м б л ер а и Ма к р о асс е м б л е р а п р и м е н я ю тся с и ст е м н ы ми пр о г р а м- м и ста м и - п р о ф ес с и о н а л ами с ц е ль ю и с по льз о в а н и я в с е х в о з м о ж н о ст е й о бо р у- до в а н и я Э ВМ и по л у че ни я э фф е кт и в н о й п о в р е м е н и вып о л н е н и я и п о т р е б у е- м о му об ъ ему п амя т и пр о г р ам м ы . Н а э т и х я зы ках о б ы ч н о р а з р а б ат ы в а ю тся о т- но с и те льн о н е бо л ь ш и е п р о г р ам м ы , в х о д я щ и е в с о став с и с тем н о го пр о г р амм но- го о б е с п е ч е н и я : д р а й в е р ы , у т и л и ты и д р у г и е.
Яз ы к п р о гр а мм и ров а ния С (С и ) п е р в о н ача льн о б ы л р а з р а бо т ан д л я р е а ли- з а ц и и о п е р а ци о н н о й с и ст е мы UN IX в н ача л е 19 7 0 - х г о д о в . В по с л е д у ю щем п р и об р ел в ы с о к у ю п о п у л я рн о сть с р е д и с и сте м н ы х и п р и к л а д н ы х п р о г р ам м и- ст о в . В н ас т о я щее в р емя э т о т я зы к р еа л и з о в а н н а б о ль ш и н с т в е Э ВМ.
В я з ы ке С с о чета ю тся д о с т о и н ст в а с ов р ем е н ны х в ы с о к о у ро в н е в ы х я з ы к ов в час т и у пр а вл я ющ и х к о н с т р у к ци й и с т р у кт у р д а нн ы х с в о з м ож н о с т я м и д о с т у п а к а п п а р ат н ы м с р е д с т в ам Э ВМ н а у ро в н е, к о т о р ы й о б ы ч н о асс о ц ии р у ется с я з ы- к о м н и з к о г о у ро в н я т ип а я з ы ка А ссе м бл е р а. Я з ы к С и м е ет с ин т а кс и с, о б еспе- ч и в а ю щ и й к р ат к о с т ь пр о г р амм ы , а к о м пи л я т о р ы с п о с обн ы ге н е р и р о в ать э ф- ф ект и в н ы й об ъ ек т н ы й к о д .
О дн а и з н а иб о л ее с у щест в е нн ы х о с о б е н н о ст е й С с о с т ои т в ни в е лир о в а н и и р а зл и ч и й ме ж д у в ы р аж е н и я м и и о п е р а т о р ам и , ч т о п ри б ли жает его к ф у н к ц и о- н а льн ы м я зы кам. В част н о с т и , вы р а ж е н и е м о жет об л а д ать п об о ч н ы м э ф ф ек т о м п р и с в а и в а н и я, а т а к же м о жет и с по льзов ат ь ся в к а ч ест в е о п е р ат о р а. Н ет т а к ж е чет к о й г р а н и ц ы м е ж д у пр о ц е д у р ами и ф у н к ция м и , бо л е е т о г о , по н я т и е п р о ц е- д у р ы н е ввод и тся в о об щ е.
С ин т ак с и с я зы ка з а т р у дн яет пр о г р ам м и р о в а ни е и в о с п р и я т и е с о ста вл е н н ы х п р о г р амм. О тс у тст в у ет и ст р о гая т и пи з а ц и я д а нн ых , что п р е до с т а вл я ет д оп о л- ни те льн ы е в о з м о ж н о сти п р о г р а мм и ст у , н о н е с п о с об ст в у ет н а п и с а н и ю н а д е ж- н ы х пр о г р амм.
B a s i c ( B e g i n n e r s A l l - p u r po s e S y m boli c I n s t r u c ti o n C o d e – м но г о ц е л е во й я зы к с и м в о л и ч е ск и х и н с т р у к ци й д л я н а ч ин а ю щ и х – Б э й с и к) пр е д с т а вл яет с о бо й про с т о й я з ы к п р о г р а мм иро в а ни я , р а з р а бо т а н ны й в 1 9 6 4 г о д у д л я и с по льз о в а н и я но в и чка м и . О н бы л р а з р а б о т а н ка к п р о с т е й ш и й я з ы к д л я н е по с р е д с тв е н н о г о об- ще н и я че л о в ека с в ы ч и с л и те льно й м а ш и но й . П о э т о му п е р во н а ч а ль н о р а бо т а в е л ась в и н т е р ак т и в но м р еж и ме с и с польз о в а н и ем ин т е р п р етат о ро в . В н ас т о я- щее в р е м я д л я э т о г о я з ы ка и ме ю тся т ак же и к о м пи л я т о ры .
С о г л а с н о к о н ц е п ци ям, з а ло ж е н н ы м в B a s i c , э т о т я зы к в с м ы с л е с т р о г о сти и ст р о й н о сти я вл я е т с я а н т ип о д о м я з ы ка P as c al . В ч аст н о с т и , в н ем ш и р о к о р а с-
п р о с т р а н е н ы р а зли ч н ы е п р а в и л а у м о л ча н и я , ч т о с ч и т а ется п ло хи м т оно м в бо ль ш и н ст в е я з ы к о в п ро г р а м м ир о в а н и я по д о б н о г о т и п а.
B a s i c ш ир о к о р а с п р о с т р а н ен н а Э ВМ р а зл и ч ны х т и п о в и о че н ь п оп у л яр е н в с р е д е п р о г р ам м и с т о в , о с о б е н н о н а ч и н а ю щ и х . С у щест в у е т м н о ж е ст в о д и а л е к- т о в э т о г о я з ы к а, ма л о с о в м е ст и м ы х меж д у с о б ой . B a si c акт и вн о п о г ло щ а ет м н о г и е к о н ц е п ц и и и но в и н ки и з д р у г и х я з ы к о в . П о э т о му о н д о с т ат о ч н о д и н а- м и ч е н , и н е льз я о д н о з н а ч н о оп р е д е л и ть его у ро в е н ь .
P as c a l ( П а с к а л ь ) я вл яется о д н и м и з н а и б о л ее по п у л я рн ы х с р е д и п р и к л а д- н ы х пр о г р амм и ст о в п р оц е д у р н ы м я з ы к о в п ро г р а м м и р ов а н и я , о с о б е н н о дл я ПЭ ВМ. Ра з р а бо т а н н ы й в 19 7 0 г о д у ш в е йц а р с к и м с п е ц и а л и ст о м в о б л асти в ы- ч и с л и т е ль н о й т е хн и ки пр о фе с с ор о м Н . В ир т о м я з ы к н а з в ан в честь фр а н ц у з- ск о г о мате м ат и к а и п о з ам ы с л у а в т ор а пр е дн а з н а ч а л ся д л я об у че н и я п ро г р а м- м и р о в а ни ю . О дн а ко я з ы к п о л у ч и л ся н а ст о ль ко у д ач н ы м, ч то стал о д н и м и з о с- но в н ы х и н ст р у ме н т о в п р и к л а д ны х и с и сте м н ы х п р о г р а м м и с т о в п р и р е ш е ни и з а д ач в ы ч и с л и те льн о го и и н ф о р ма ци о н н о - л о г и че с к о г о х а р акте р а. В 1 9 7 9 г о д у бы л п о д г о т о вл ен п р о ект о п и с а н и я я з ы ка – Б ри т ан с к и й ста н д а р т я з ы ка п р о- г р ам м и ро в а н и я Pas c a l B S 61 9 2 : 19 82 , к о т ор ы й стал т а кже и ме ж д у н а р од н ы м ста н д а р т о м ISO 7 18 5.
В я з ы к е Pa s c a l р е а л и з о в а н ря д к о нц е п ц ий , р а с сма т ри в а ем ы х к а к о с н о в а
« ди с ц и п ли н ир о в а нн о г о » п р о г р амм ир о в а н и я и з а и мст в о в а н н ы х вп о с л е д ст в и и р а зр а б о т ч и к а ми м н о г и х я зы к о в . О д ни м и з с у щест в е н ны х п р и зн а к о в я з ы к а P as c a l я в л яется по с л е до в а т е ль н ая и до стат о ч н о п о л н ая р е а л и з а ц и я к о н ц е п ци и ст р у кт у рно го пр о г р амм и ро в а н и я. П р и ч ем э то о с у щест вл я ется н е т о ль к о п у тем у пор я до ч и в а н и я с в я з ей м е ж д у ф р агм е н т ами п ро г р а м мы п о у пр а вл е ни ю , н о и з а счет с т р у кт у ри з а ц и и д а нн ых . К р о ме т о г о , в я зы ке р еа л и з о в а н а к он ц е п ц и я о п р е- д е л е н и я но в ы х т и п о в д а н н ы х н а о с н о в е у же и ме ю щ их с я. Э т о т я зы к, в о т л и ч и е о т я зы ка С , я вл яет с я ст р о г о т и п и з и р о в а н н ы м.
Процедурное (императивное) программирование является отражением архитектуры традиционных ЭВМ, которая была предложена фон Нейманом в 40-х годах. Теоретической моделью процедурного программирования служит алгоритмическая система под названием «машина Тьюринга».
Программа на процедурном языке программирования состоит из последовательности операторов (инструкций), задающих процедуру решения задачи. Основным является оператор присваивания, служащий для изменения содержимого областей памяти. Концепция памяти как хранилища значений, содержимое которого может обновляться операторами программы, является фундаментальной в императивном программировании.
Выполнение программы сводится к последовательному выполнению операторов с целью преобразования исходного состояния памяти, то есть значений исходных данных, в заключительное, то есть в результаты. Таким образом, с точки зрения программиста имеются программа и память, причем первая последовательно обновляет содержимое последней.
Процедурные языки характеризуются следующими особенностями:
- необходимостью явного управления памятью, в частности, описанием переменных;
- малой пригодностью для символьных вычислений;
- отсутствием строгой математической основы;
- высокой эффективностью реализации на традиционных ЭВМ.
Одним из важнейших классификационных признаков процедурного языка является его уровень. Уровень языка программирования определяется семантической (смысловой) емкостью его конструкций и степенью его ориентации на программиста. Язык программирования частично ликвидирует разрыв между методами решения различного рода задач человеком и вычислительной машиной. Чем более язык ориентирован на человека, тем выше его уровень. Дадим краткую характеристику реализованным на ПЭВМ языкам программирования в порядке возрастания их уровня.
Двоичный язык является непосредственно машинным языком. В настоящее время такие языки программистами практически не применяются.
Язык Ассемблера — это язык, предназначенный для представления в удобочитаемой символической форме программ, записанных на машинном языке. Он позволяет программисту пользоваться мнемоническими кодами операций, присваивать удобные имена ячейкам и областям памяти, а также задавать наиболее удобные схемы адресации.
Язык Макроассемблера является расширением языка Ассемблера путем включения в него макросредств. С их помощью в программе можно описывать последовательности инструкций с параметрами — макроопределения. После этого программист может использовать снабженные аргументами макрокоманды, которые в процессе ассемблирования программы автоматически замещаются макрорасширениями. Макрорасширение представляет собой макроопределение с подставленными вместо параметров аргументами.
Другими словами, язык Макроассемблера располагает средствами определения и использования новых, более мощных команд как последовательности базовых инструкций, что несколько повышает его уровень.
Языки Ассемблера и Макроассемблера применяются системными программистами-профессионалами с целью использования всех возможностей оборудования ЭВМ и получения эффективной по времени выполнения и по требуемому объему памяти программы. На этих языках обычно разрабатываются относительно небольшие программы, входящие в состав системного программного обеспечения: драйверы, утилиты и другие.
Язык программирования С (Си) первоначально был разработан для реализации операционной системы UNIX в начале 70-х годов. В последующем приобрел высокую популярность среди системных и прикладных программистов. В настоящее время этот язык реализован для большинства ЭВМ.
В С сочетаются достоинства современных высокоуровневых языков в части управляющих конструкций и структур данных с возможностями доступа к аппаратным средствам ЭВМ на уровне, который обычно ассоциируется с языком низкого уровня типа языка Ассемблера. Язык С имеет синтаксис, обеспечивающий краткость программы, а компиляторы способны генерировать эффективный объектный код.
Одна из наиболее существенных особенностей С состоит в нивелировании различий между выражениями и операторами, что приближает его к функциональным языкам. В частности, выражение может обладать побочным эффектом присваивания, а также может использоваться в качестве оператора. Нет также четкой границы между процедурами и функциями, более того, понятие процедуры не вводится вообще.
Синтаксис языка затрудняет программирование и восприятие составленных программ. Отсутствует и строгая типизация данных, что предоставляет дополнительные возможности программисту, но не способствует написанию надежных программ.
Ваsic(Бэйсик) (Beginners All-purpose Symbolic Instruction Code) — многоцелевой язык символических инструкций для начинающих) представляет собой простой язык программирования, разработанный в 1964 году для использования новичками. Он был разработан как простейший язык для непосредственного общения человека с вычислительной машиной. Поэтому первоначально работа велась в интерактивном режиме с использованием интерпретаторов. В настоящее время для этого языка имеются также и компиляторы.
Согласно концепциям, заложенным в Basic, этот язык в смысле вольностей является антиподом языка Pascal. В частности, в нем широко распространены различные правила умолчания, что считается плохим тоном в большинстве языков программирования.
Basic широко распространен на ЭВМ различных типов и очень популярен в среде программистов, особенно начинающих. Существует множество диалектов этого языка, мало совместимых между собой. Basic активно поглощает многие концепции и новинки из других языков. Поэтому он достаточно динамичен, и нельзя однозначно определить его уровень.
Pascal (Паскаль) является одним из самых популярных среди прикладных программистов процедурным языком программирования. Разработанный в 1970 году швейцарским специалистом в области вычислительной техники профессором Н. Виртом на основе Алгола, язык Pascal назван в честь французского математика и по замыслу автора предназначался для обучения программированию. Однако язык получился настолько удачным, что стал одним из основных инструментов прикладных и системных программистов при решении задач вычислительного и информационно-логического характера. В 1979 году был подготовлен проект описания языка — Британский стандарт языка программирования Pascal BS6192, который стал также и международным стандартом ISO 7185.
В языке Pascal реализован ряд концепций, рассматриваемых как основа «дисциплинированного» программирования и заимствованных впоследствии разработчиками многих языков. Одним из существенных признаков языка Pascal является последовательная и достаточно полная реализация концепции структурного программирования. Причем это осуществляется не только путем упорядочивания связей между фрагментами программы по управлению, но и за счет структуризации данных. Кроме того, в языке реализована концепция определения новых типов данных на основе уже имеющихся. Этот язык, в отличие от языка С, является строго типизированным. Pascal характеризуется:
- высоким уровнем;
- широкими возможностями;
- стройностью, простотой и краткостью;
- строгостью, способствующей написанию эффективных и надежных программ;
- высокой эффективностью реализации на ЭВМ.
Pascal реализован на ЭВМ различных типов, но наиболее распространен и развит для ПЭВМ. В настоящее время широко используются такие версии этого языка для ПЭВМ, как Borland Pascal, Turbo Pascal и Object Pascal.
Процедурное программирование является отражением архитектуры традиционных ЭВМ (архитектуры Неймана). Программа на процедурном языке программирования состоит из последовательности инструкций, задающих те или иные действия. Основной конструкцией процедурного языка является оператор присваивания (например, а = 3), служащий для изменения содержимого областей памяти. Выполнение программы сводится к последовательному выполнению инструкций с целью преобразования исходного состояния памяти (т.е. значения переменных) в заключительное. Таким образом, с точки зрения программиста имеется программа и память, причём первая последовательно обновляет содержимое последней.
К процедурным языкам программирования относятся такие как Fortran, Basic, Pascal, С и др.
Важнейшим признаком процедурных языков программирования является их уровень (рис. 2.9). Чем более язык ориентирован на человека, тем выше его уровень.
Рис. 2.9
Уровни процедурных языков программирования
Машинный язык, очевидно, является низкоуровневым языком. Для упрощения чтения программ на машинном языке вместо чисел используют символические обозначения машинных инструкций, совокупность которых образует язык ассемблераили автокод. Машинный язык зависит от типа процессора, поэтому программы, написанные на ассемблере или на машинном языке для одной ЭВМ, вообще говоря, непереносимы на другую без изменений.
В настоящее время автокод используется для реализации критичных по времени участков в составе программы на языке высокого уровня.
В качестве примера рассмотрим программу ускорения клавиатуры, рассмотренную в п. 2.4.3, которая имеет вид:
B8 05 03 BB 00 00 CD 16 CD 20
Если перевести машинные коды на автокод, то будет получено следующее соответствие:
B80503 mov ax,00305
BB0000 mov bx,00000
Теперь легко понять, что в первой и второй инструкциях в регистры процессора AX и BX, то есть в специальные участки памяти, помещаются числа, которые являются аргументами специальной системной функции – прерывания, имеющей шестнадцатеричный номер 16.
Первым языком высокого уровня, получившим широкое распространение, был язык Fortran, разработанный в 1956 г. сотрудником фирмы IBM Дж. Бэкусом. В 1958 г. появилась версия Fortran-II, в которой впервые была реализована идея раздельной компиляции модулей, что дало возможность создавать библиотеки подпрограмм. Простота языка дала возможность генерировать эффективный машинный код и она же дала возможность создавать программы непрофессиональным программистам. С 1980 г. существует международный ISO-стандарт языка. Эти и ряд других причин сделали Fortran самым распространённым языком программирования в 50-80 гг. За это время было создано большое количество прикладных программ, что обуславливает широкое применение этого языка в настоящее время.
Fortran предназначался для научных вычислений, то есть для работы с большими объёмами числовой информации и с большим числом операций с плавающей запятой. Основным понятием языка является числовой массив. Существуют даже версии языка, в которых непосредственно в самом языке реализованы операции линейной алгебры, например, сложения и умножения матриц.
Типичная Fortran-программа состоит из основного модуля (main segment) и некоторого количества подпрограмм (subroutines). Управление ходом выполнения программы реализуется с помощью инструкций безусловного перехода (goto), условия (if) и цикла (for).
Следующая программа рассчитывает среднее значение между минимальным и максимальным элементом вектора:
cc объявление целых переменных I, MX, MN
сс и целочисленного массива А из 100 элементов
integer I, MX, MN, A(100)
сс чтение массива с клавиатуры
сс начальные значения максимальной и минимальной величин
сс в цикле (его последний оператор имеет метку 10)
сс осуществляется перебор всех элементов массива
сс вычисление средней величины
сс вывод на экран монитора
Язык Basicизначально представлял собой упрощённый Fortran и был создан в 1964 г. для обучения программированию. Однако со временем этот язык приобрёл популярность среди профессиональных разработчиков программ. Основной недостаток языка – это использование большого числа «правил по умолчанию», что затрудняет создание надёжных программ. Отсутствие общепринятого стандарта на язык также мешает его распространению и использованию в серьёзных программных разработках. Язык Visual Basicявляется объектно-ориентированной версией языка Basic, созданной фирмой Microsoft, и широко используется для разработки графического интерфейса прикладных программ.
Язык Pascalбыл создан в 1970 г. также для изучения программирования, однако, многочисленные положительные качества этого языка обусловили его широкое распространение как для прикладного, так и для системного программирования. Наибольшую популярность приобрела объектно-ориентированная версия этого языка, реализованная в системе Delphi.
В 1970 г. был разработан язык С, который предназначался для системного программирования. Существует стандарт языка, принятый в 1982 г., в котором были использованы концепции языка Pascal, а также некоторые концепции, развитые в появившемся в это время языке C++.
Исходя из практики применения языка С, его можно рассматривать как вариант ассемблера, в котором предполагается некоторая идеализированная ЭВМ.
Основные элементы языка – это данные определённого типа, инструкции и функции. Программа на языке С состоит хотя бы из одной функции.
В следующей программе показано копирование строк.
/* это главная функция */
/* объявление и инициализация строки */
char * string1=”Это строка”;
/* объявление числового массива */
/* объявление указателя на числовой массив
и исходную строку
char * temp1 = string1,* temp2 = string2;
while(* temp2++ = * temp1++ ) ;
Ещё одним старейшим языком программирования является Cobol(COmmon Business Oriented Language). Он был разработан в 1959 г. и ориентирован на обработку коммерческой информации в больших организациях. Существует международный ISO-стандарт этого языка, принятый в 1985 г. Преобладающая часть прикладных программ делового и финансового применения в США написана на этом языке.
Программа на Cobol выглядит как ряд предложений, составленных из английских слов, напоминающих по форме английский текст, что упрощает правила пользования языком. Сущностью обработки данных, на которую ориентирован Cobol, является многократное повторение однотипных операций над последовательными группами данных. Данные, подлежащие обработке, представляются в виде входных и выходных массивов.
Когда вы новичок в программировании, парадигмы программирования не имеют большого значения. Но когда вы поднимаетесь по лестнице и начинаете создавать сложные программы и программное обеспечение, очень важно понять, какая парадигма программирования лучше всего подходит для вашего проекта.
Прежде чем мы начнем, важно знать, что такое парадигма. Согласно многим цитируемым определениям, парадигма — это «набор предположений, концепций, ценностей и практик, которые представляют собой способ рассмотрения реальности для сообщества, которое разделяет их, особенно в интеллектуальной дисциплине ».
Это определение является точным, поскольку то, что отличает парадигму, — это другой способ восприятия реальности для сообщества. Парадигмы имеют значение, поскольку они часто путешествуют вместе с определенной культурой написания программ и размышлений о них. В этой статье мы обсудим основные парадигмы программирования , уделяя особое внимание парадигме процедурного программирования.
Что такое процедурное программирование?
Процедурное программирование может быть первой парадигмой программирования, которую изучит новый разработчик. По сути, процедурный код — это тот, который непосредственно инструктирует устройство о том, как завершить задачу в логических шагах.
Эта парадигма использует линейный нисходящий подход и рассматривает данные и процедуры как два разных объекта. Основываясь на концепции вызова процедуры, процедурное программирование делит программу на процедуры, которые также известны как процедуры или функции, просто содержащие последовательность шагов, которые необходимо выполнить.
Проще говоря, процедурное программирование включает в себя запись списка инструкций, чтобы сообщить компьютеру, что он должен делать шаг за шагом, чтобы завершить задачу под рукой.
Ключевые особенности процедурного программирования
Ключевые особенности процедурного программирования приведены ниже:
- Предопределенные функции. Предопределенная функция — это обычно инструкция, идентифицируемая именем. Обычно предопределенные функции встроены в языки программирования более высокого уровня , но они получены из библиотеки или реестра, а не из программы. Одним из примеров предопределенной функции является charAt (), которая ищет позицию символа в строке.
- Локальная переменная . Локальная переменная — это переменная, которая объявлена в основной структуре метода и ограничена локальной областью действия, которую она задает. Локальная переменная может использоваться только в том методе, в котором она определена, и, если она будет использоваться вне определенного метода, код перестанет работать.
- Глобальная переменная . Глобальная переменная — это переменная, которая объявляется вне любой другой функции, определенной в коде. Благодаря этому глобальные переменные могут использоваться во всех функциях, в отличие от локальной переменной.
- Модульность : Модульность — это когда две разные системы имеют под рукой две разные задачи, но сгруппированы вместе, чтобы сначала выполнить более крупную задачу. В этом случае каждая группа систем будет выполнять свои собственные задачи один за другим, пока все задачи не будут выполнены.
- Передача параметров: Передача параметров — это механизм, используемый для передачи параметров в функции, подпрограммы или процедуры. Передача параметров может быть выполнена через «передача по значению», «передача по ссылке», «передача по результату», «передача по значению-результату» и «передача по имени».
Преимущества и недостатки процедурного программирования
Процедурное программирование имеет свои плюсы и минусы, некоторые из которых упомянуты ниже.
Преимущества
- Процедурное программирование отлично подходит для программирования общего назначения
- Закодированная простота наряду с простотой реализации компиляторов и интерпретаторов
- Большое разнообразие книг и онлайн-материалов курсов по проверенным алгоритмам, облегчающих обучение в процессе
- Исходный код переносим, поэтому его можно использовать и для другого процессора
- Код может быть повторно использован в разных частях программы, без необходимости копировать его
- Благодаря методике процедурного программирования требования к памяти также сокращаются
- Ход программы можно легко отследить
Недостатки
- Код программы труднее писать, когда используется процедурное программирование
- Процедурный код часто не может быть использован повторно, что может привести к необходимости воссоздания кода, если это необходимо для использования в другом приложении.
- Сложно общаться с реальными объектами
- Важное значение придается операции, а не данным, что может создавать проблемы в некоторых случаях, связанных с данными
- Данные открыты для всей программы, что делает их не очень безопасными
Как мы уже упоминали, существуют разные типы парадигмы программирования, которые являются не чем иным, как стилем программирования. Важно понимать, что парадигма ориентирована не на конкретный язык, а на способ написания программы. Ниже приведено сравнение между процедурным программированием и объектно-ориентированным программированием.
Что такое объектно-ориентированное программирование (ООП)
ООП — это подход к программированию, который распознает жизнь в том виде, в каком мы ее знаем, как совокупность объектов, которые работают в тандеме друг с другом для решения конкретной проблемы под рукой. Главное, что нужно знать об ООП, — это инкапсуляция, то есть идея, что каждый объект, содержащий программу, самодостаточен, что означает, что все компоненты, составляющие объект, находятся внутри самого объекта. Теперь, поскольку каждый модуль в рамках этой парадигмы самодостаточен, объекты могут быть взяты из одной программы и использованы для решения другой имеющейся проблемы с небольшими изменениями или без изменений.
Преимущества
- Благодаря модульности и инкапсуляции, ООП предлагает простоту управления
- ООП имитирует реальный мир, облегчая понимание
- Поскольку объекты являются цельными внутри себя, они могут использоваться в других программах
Недостатки
- Объектно-ориентированные программы, как правило, работают медленнее и занимают много памяти
- Чрезмерная обобщение
- Программы, созданные с использованием этой парадигмы, могут занять больше времени
Процедурное программирование против объектно-ориентированного программирования: сравнение между собой
С другой стороны, процедурное программирование, в отличие от ООП, не фокусируется на шагах, которые будут выполняться для выполнения задачи, а не на взаимодействии между объектами. Задачи разбиты на подпрограммы, переменные и структуры данных. В любой момент времени эти процедуры могут быть вызваны при выполнении программы.
Процедурное программирование | Объектно-ориентированного программирования |
Использует неизменные данные | Использует изменяемые данные |
Следует декларативной модели программирования | Следует модели императивного программирования |
Расширяет поддержку параллельного программирования | Не подходит для параллельного программирования |
Порядок выполнения операторов не является основным направлением | Порядок выполнения операторов очень важен |
Управление потоком осуществляется с помощью вызовов функций | Управление потоком осуществляется через условные операторы и циклы |
Использует концепцию рекурсии для итерации коллективных данных | Использует концепцию цикла для итерации сбора данных |
Нет таких побочных эффектов его функций | Метод может иметь определенные побочные эффекты |
В процедурном программировании основное внимание уделяется тому, что вы делаете. | Основное внимание в объектно-ориентированном программировании уделяется теме «Как вы это делаете» |
Другая широко используемая парадигма программирования — функциональное программирование.
Функциональное программирование сильно отличается как от процедурного программирования, так и от объектно-ориентированного программирования, поскольку в нем используются математические функции. Благодаря этому операции выполняются только на основе введенных входных данных, и они не зависят от временных или скрытых переменных.
Преимущества
- Функциональное программирование предлагает защищенную среду
- В то время как многие другие языки требуют значительного объема информации для правильного выполнения операций, программирование функций устраняет необходимость в большом количестве кода, необходимого для определения состояний.
- Поскольку эта парадигма зависит только от входных аргументов, побочных эффектов нет
Недостатки
- Использование функционального программирования исключительно в коммерческой разработке программного обеспечения не рекомендуется и не делается
- Это требует большого количества памяти и времени
- Это может оказаться менее эффективным, чем другие парадигмы
Вывод
Как мы уже говорили в этой статье, процедурное программирование — это больше, чем вы делаете, а не то, как вы это делаете. Это стандартный подход, используемый во многих компьютерных языках, таких как C, Pascal и BASIC. Хотя идеальной парадигмы программирования не существует, важно понимать, что правильная парадигма всегда будет зависеть от типа используемого вами языка и программы, которую вы хотите создать. Рекомендуется, чтобы для достижения максимальных результатов и сильного портфолио, нужно было владеть всеми тремя основными парадигмами программирования. Лучший способ попытаться стать лучше в программировании — это пытаться!
Читайте также: