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.


 

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

7076. Методы проектирования программ на языках высокого уровня С++ 115.5 KB
  1. Цель работы Знакомство с методами проектирования программ на языках высокого уровня С++. 2. Задание на работу В программе необходимо реализовать: пункт главного меню Справка, состоящий из двух подпунктов Информация об авторе и Информация о п...
7077. Проектирование программ на языках высокого уровня С++ 172 KB
  Реализовать процедуру поиска страниц, свойство Caption или компонент типа TMemo которых содержит задаваемое слово.
7078. Изучение и компьютерное моделирование переходных процессов, возникающих при коммутациях в цепях первого порядка 121 KB
  Цель работы: Изучение и компьютерное моделирование переходных процессов, возникающих при коммутациях в цепях первого порядка, содержащих сопротивление и емкость либо сопротивление и индуктивность. В лабораторной работе необходимо исследовать зависим...
7079. Доходы от собственности 94.5 KB
  Доходы от собственности Одним из элементов доходов от собственности являются доходы по ценным бумагам. Ценная бумага - это форма существования капитала, отличная от его товарной, производительной и денежной форм, которая может передаваться вмес...
7080. Комплекс механизированных работ по лесовосстановлению площадей после ветровала 694.6 KB
  Комплекс механизированных работ по лесовосстановлению площадей после ветровала Введение В данной курсовой работе мною представлен комплекс механизированных работ по лесовосстановлению участка после ветровала. Ветровал - деревья поваленны...
7081. Нелинейные резистивные элементы 105 KB
  Нелинейные резистивные элементы Цель работы: Изучение степенной (полиномиальной) и кусочно-линейной аппроксимаций вольт-амперных характеристик (ВАХ) нелинейных резистивных элементов. Изучение спектрального состава тока, протекающего через нелинейный...
7082. Изучение фазовых и структурных превращений сиcтемы железо-углерод 288 KB
  Цель работы - изучение фазовых и структурных превращений сиcтемы железо-углерод, металлографическое исследование микроструктуры углеродистых сталей в равновесной состоянии во взаимосвязи с их механическими свойствами. Основные теоретические с...
7083. Выбор расходомера для измерения расхода сжиженной пропан-бутановой фракции 1021.5 KB
  Выбор расходомера для измерения расхода сжиженной пропан-бутановой фракции Содержание Общие сведения об измерении расхода и массы веществ. Основные виды расходомеров: Расходомеры переменного перепада давления Расходомеры обт...
7084. Металлографические методы исследования структуры металлов и сплавов 578 KB
  Металлографические методы исследования структуры металлов и сплавов ЛАБОРАТОРНАЯ РАБОТА Цель работы - ознакомление с методами металлографического анализа металлических материалов, получение навыков работы с металлографиодским микроскопом и определен...