36571

Концепция подпрограммы в Турбо Паскале

Контрольная

Информатика, кибернетика и программирование

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

Русский

2013-09-22

34.5 KB

3 чел.

Концепция подпрограммы в Турбо Паскале.

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

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

определение (описание) подпрограммы;

вызов подпрограммы для её выполнения.

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

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

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

Формальные параметры условно можно разделить на три вида:

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

выходные параметры, через которые подпрограмма выдает свои результаты в основную программу, и

смешанные параметры - используемые и как входные и как выходные.

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

] Замечание: Для экономной передачи данных через параметры-массивы лучше использовать формальные параметры-константы, отличающиеся от параметров-значений тем, что они не создают копий значений.

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

Формальные и фактические параметры указываются списком параметров.

В списке формальных параметров параметры описываются с указанием имени параметра и типа, причём параметры-переменные описываются с ключевым словом var, а параметры-константы - с ключевым словом const. Одна группа параметров отделяется от другой точкой с запятой. В группе параметров одного типа имена параметров отделяются запятой.

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

Между списком формальных параметров и списком фактических параметров должно быть взаимно однозначное соответствие (при просмотре списка), причем тип фактического параметра должен точно совпадать с типом формального параметра.

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

Задача 4.2.6(9)

program Project9;

type mas=array[1..3,1..6] of Integer;

var a,b:mas;

i,j,l1,l2:Integer;

procedure p(x:mas;n:Integer; var k:integer);

var i,j:Integer;

begin

k:=0;

for i:=1 to 3 do

for J:=1 to n do

if x[i,j]=0 then k:=k+1;

end;

begin

for i:=1 to 3 do

for j:=1 to 6 do

read(a[i,j]);

Writeln;

for i:=1 to 3 do

for j:=1 to 3 do

read(b[i,j]);

p(a,6,l1);

p(b,3,l2);

if l1=l2 then Writeln('odinakovo')

else if l1>l2 then Writeln('bolshe v A')

else Writeln('bolshe v B');

 Readln;

end.


 

А также другие работы, которые могут Вас заинтересовать

42368. Побудова синтаксичного аналізатора 198.5 KB
  Синтаксичний аналізатор отримує послідовність лексем з лексичного аналізатора і перевіряє чи може ця послідовність бути утворена за заданим алогритмом граматикою. оп ввід вивід присвоєння цикл...
42370. ВИЗНАЧЕННЯ ВІДНОШЕНЬ ПЕРЕДУВАНЬ ЗА ПРАВИЛАМИ ГРАМАТИКИ 142.5 KB
  Задачею висхідного розбору є зведення вхідного термінального ланцюжка до аксіоми. Для висхідного розбору критичним є тип виводу. Вивід зліва направо визначається таким чином, що на кожному кроці замінюється основа поточної синтенсійної форми. Тоді ланцюжок справа від основи завжди буде складатися лише з термінальних символів. Ключовим питанням при висхідному розборі є питання – як знайти основу та на який не термінал її замінити? Це питання легко вирішується для граматик простого передування.
42371. Системы программирования Turbo Pascal 7.0 1.16 MB
  End Переместиться к концу строки. CtrlEnd Переместиться к последней строке окна. Найдите первое вхождение строки end в тексте программы. Замените все end на 234 .
42372. Нанесення плівок металів і сплавів у вакуумі методом термічного випаровування у вакуумі 320 KB
  Нанесення тонких плівок у вакуумі полягає в створенні потоку частинок, який направлений у бік оброблюваної підкладинки, які конденсуються з утворенням тонкоплівкових шарів на підкладинці.
42373. ПОЛУЧЕНИЕ ПЛЕНОК КАТОДНЫМ РАСПЫЛЕНИЕМ 107.5 KB
  Изучение катодного распыления привело к широкому использованию этого явления для создания весьма чистых поверхностей всевозможных тонких пленок металлов и сплавов полупроводников и диэлектриков для травления указанных выше материалов многие из которых не поддаются травлению другими способами. Поэтому в круксовом темном пространстве создается положительный пространственный заряд что приводит к перераспределению потенциала вдоль трубки и к возникновению катодного падения потенциала. С точки зрения физики разряда наиболее важной является...
42374. Измерение толщины металлических пленок с помощью интерферометра МИИ-4 175 KB
  В результате интерференции двух систем волн в фокальной плоскости окуляра наблюдаются характерные интерференционные полосы. в результате интерференции волн получаются светлые полосы а в точках где разность хода равна λ 2 3λ 2 5λ 2 и т. темные полосы. В отъюстированном микроинтерферометре при работе в монохроматическом свете в поле зрения должны быть видны чередующиеся черные и светлые полосы.
42375. Адміністрування безпеки операційної системи WINDOWS 2k 479 KB
  С помощью утилиты NET. Выполнить исследование локальной сети с помощью утилиты NBTSTT программы PWLTOOLS. С помощью утилит User2sid и Sid2user определить перечень логинов пользователей на том же удаленном компьютере что и в пункте 4.] Выполнить тестирование компьютера указанного в пункте 4 с помощью программы DDoSPing.
42376. Програмні засоби для шифрування та приховування інформації 1.79 MB
  С помощью программы PGP выполните обмен зашифрованной информацией. Для этого необходимо: а с помощью утилиты PGPkeys создать ключевую пару подчиняясь следующему порядку: выполнить запуск Strt Пуск Progrms Программы PGP PGPkeys необходимо указать собственное имя Full nme и адрес электронной почты Emil ddress не забывая что именно эти данные будут ассоциированы программой с вашими ключами выбор типа ключа Key Pir Type: ключ RS действительно архаичнее и медленнее своего ретивого молодого собрата DiffieHellmn DSS однако...