36565

Особенности разработки программы с подпрограммой

Контрольная

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

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

Русский

2013-09-22

35.5 KB

5 чел.

Особенности разработки программы с подпрограммой.

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

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

При разработке алгоритма на псевдокоде для программы с подпрограммами возможны две стратегии (или их сочетание).

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

Вторая стратегия предполагает, что вызовы подпрограмм использованы раньше, чем появилось описание подпрограмм (даже в виде заголовка). Эта стратегия естественна для случаев, когда состав подпрограмм не определён на этапе проекта программы, и подпрограммы "зарождаются" непосредственно при создании алгоритма задачи. Использование "опережающего" вызова предполагает, что после этого будет уточнен раздел описаний и в нём будет спроектировано тело подпрограммы.

Необходимо учесть также некоторые особенности проектирования подпрограмм по сравнению с обычными программами:

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

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

Таким образом, при разработке подпрограмм во многих случаях нет необходимости в оформлении проекта подпрограммы иначе, чем в это предусмотрено в самом заголовке подпрограммы.

Методика разработки алгоритма подпрограммы не отличается от разработки алгоритма программы. Приведем пример разработки программы с функцией:

program letters; {проект}

1.Постановка задачи:

Для вводимой строки символов определить и вывести на экран все

повторяющиеся латинские буквы (не различая большие и малые буквы).

2. Входные и выходные переменные:

str: string; {входная строка}

j:char; {текущая латинская буква}

3. Аномалии:

if <отсутствуют повтор. латинские буквы> then ‘Нет повторяющихся букв’

4. Экранная форма:

 begin

‘Введите строку:’

<str>

‘Повторяющиеся буквы:’

[ {<j>}]

[ Нет повторяющихся букв]

end.

 

 program letters; {0.1}

{Нахождение повторяющихся латинских букв во вводимой строке}

 var str:string;j:char;alfa:Boolean;

{0* function count(s:string;k:char):byte;}

 {число вхождений символа k в строку s}

 BEGIN writeln('Введите строку:');readln(str); writeln('Повторяющиеся буквы:'); alfa:=true; for j:='A' to 'Z' do if count(str,j)>1 then begin write(j,' ');alfa:=false end;

 if alfa then writeln('Нет повторяющихся букв');writeln;

 END.

 program letters;{0.2}

{Нахождение повторяющихся латинских букв во вводимой строке}

 var str:string;j:char;alfa:Boolean;

 function count(s:string;k:char):byte;

 var c,j:byte;

 begin c:=0;for j:=1 to length(s) do

 if upcase(s[j])=k then c:=c+1;count:=c

 end{count};

 BEGIN writeln('Введите строку:');readln(str); writeln('Повторяющиеся буквы:'); alfa:=true; for j:='A' to 'Z' do if count(str,j)>1 then begin write(j,' ');alfa:=false end;

 if alfa then writeln('Нет повторяющихся букв');writeln;

 END.

Задача 4.2.6(3)

program alex3;

type mas=array[1..5,1..4]of integer;

mass=array[1..5]of real;

var b:mas;

c:mass;

i,j:integer;

y:real;

procedure proc(x:mas;k:integer;var sr:real);

var i,sum,l:integer;

begin

sr:=0;

l:=0;

for i:=2 to 5 do

if x[k,i]>x[k,1] then begin

sr:=sr+x[k,i];

l:=l+1;

end;

sr:=sr/l;writeln(sr:5:2);readln;

end;

begin

for i:=1 to 5 do

for j:=1 to 4 do

read(b[i,j]);

for i:=1 to 5 do

proc(b,i,c[i]);

y:=exp(5*ln(c[1]-1))+exp(4*ln(c[2]-1))+exp(3*ln(c[3]-1))+sqr(c[4]-1)+(c[5]-1);

writeln('y=',y:5:2);

readln;

end.


 

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

34206. Тип Archaeocyath. Класс Археоциоты 17.72 KB
  Одиночные археоциаты обладают конической цилиндрической воронковидной формой а колониальные – имеют массивный или ветвистый скелет. Археоциаты вели прикреплённый образ жизни. При оптимальных условиях на глубине 2030 м в теплых нормальносолёных морях археоциаты совместно с синезелёными водорослями строили биостромы и биогермы. Археоциаты участвовали в образовании органогенных известняков.
34207. Настоящие многоклеточные (Eumetazoa) 19.09 KB
  Все многоклеточные разделяются на две неравные группы – низшие многоклеточные двухслойные радиальные и высшие трёхслойные двустороннесимметричные. Надраздел настоящие многоклеточные Eumetzo. Настоящие многоклеточные обладают стабильной дифференциацией клеток у них имеется ткани и органы а в зародышевой стадии закладывается 2 или листка.
34208. Подкласс Rugosa (четырёхлучевые кораллы) 23.92 KB
  Им присущи одиночные и колониальные формы. Одиночные были самой разнообразной формы – конической цилиндрической пирамидальной.Streptelsm OS – Коралл конической или цилиндрической формы с септами разной длины.Cnini CP – коралл цилиндрической формы одиночный с толстой морщинистой эпитекой.
34209. Подраздел первичноротые 17.14 KB
  Тип nnelid кольчатые черви. Кольчатые черви распространены практически во всех широтах и встречаются как в водной среде так и на суше. В умеренном поясе наиболее известны дождевые черви и пиявки. Некоторые водные черви строят скелет в виде трубок завёрнутых в спираль.
34210. Тип Arthropoda (членистоногие) 20.79 KB
  К типу членистоногих относятся раки крабы дафнии бабочки термиты муравьи пауки клещи трилобиты мечехвосты. Класс Trilobite трилобиты. Трилобиты – вымершие животные широко распространённые в раннем P2. трилобиты имели членистое тело покрытое хитиновым панцирем.
34211. Палеонтология 19.49 KB
  Остатки организмов сохраняются в осадочных породах только при благоприятных условиях захоронения и при наличии минерального или органического скелета. видов животных и растений но после гибели они исчезают бесследно если не попадут в благоприятные условия для их сохранения поэтому в ископаемом состоянии сохраняется лишь незначительная часть от большого числа ранее существовавших организмов. Лучше сохраняются остатки организмов обладающих твёрдым минеральным скелетом. Палеонтология связана с зоологией и ботаникой изучающими морфологию и...
34212. Образование ориктоценозов 20.78 KB
  Выделяют три основных этапа перехода: накопление органических остатков захоронение фоссилизация 1. Накопление органических остатков. Скопления остатков погибших организмов образуют танатоценоз – сообщество смерти.
34213. Основные этапы развития палеонтологии 29.91 KB
  Большое значение в развитии палеонтологии имели труды шведского учёного Карла Линнея 1707 – 1778 гг. Становление и развитие палеонтологии происходило в три этапа: додарвиновский дарвиновский и последарвиновский. Додарвиновский этап развития палеонтологии связан с именами таких учёных как англичанин Вильям Смит 1769 – 1839 – палеозоология беспозвоночных Жорж Кювье 1769 – 1832 – палеозоология позвоночных Александр Броньяр 1801 – 1876 – палеоботаника .
34214. Палеонтологический метод и основы стратиграфической классификации 21.23 KB
  Изучается литологический состав отдельных слоёв их взаимоотношение друг с другом причём принимается что при ненарушенном залегании подстилающей слой является более древним а покрывающий – более молодым принцип Стенона. Если же между ними наблюдается стратиграфическое несогласие то предполагается наличие перерыва в осадконакоплении а также возможность размыва нижележащих слоёв. Из каждого слоя или группы слоёв изучается систематический состав биоценозов. При извлечении из слоёв ископаемых остатков отмечаются особенности их захоронения...