Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
2
Добавлен:
20.04.2023
Размер:
835.44 Кб
Скачать

Блок-схема:

Программный код. program bank1; var g,n,p:byte;

s,s1:real; begin

writeln('vedite % stavky'); readln(p);

writeln('vvedite pervonachalnii vklad'); readln(s);

writeln('na skolko let?'); readln(n);

S1:=S;

for g:=1 to n do S1:=S1+S1*p/100;

51

writeln('vi vnesli ',s:5:2, ' rub'); writeln('proshlo ',n,' let');

writeln('vash vklad sostavil ',s1:5:2,' rub'); readln;

end.

Тестирование.

Задача 2. «Библиотечный фонд». Библиотечный фонд в 1985 году составил 25 000 экземпляров. Ежегодно фонд пополняется на 7%. Составьте программу, которая выведет на экран состояние библиотечного фонда через 10 лет (за 10 лет).

Исходные данные: f – начальное значение фонда n – количество лет

i – параметр цикла Результат:

f1 – конечное состояние фонда

Задания для самостоятельной работы 1

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

52

Творческий блок 1

Индивидуальные задания (групповая работа). После тестирования и отладки программы добавьте диалоговый интерфейс.

1.Количество копировально-множительной техники в библиотеке в 2012 году составило 15 единиц. Ежегодно библиотека пополняется на 15%. Определить количество копировальномножительной техники через 5 лет.

2.Количество пользователей библиотеки в 2010 году составило 15 000 человек. Ежегодно наблюдается увеличение количества пользователей на 2%. Составьте программу, которая выведет на экран изменения количества пользователей библиотеки за 7 лет.

Практический блок 2

Изучите презентацию «Циклические алгоритмы», используя «Курс по программированию», разберите все примеры и действия циклических операторов для цикла с предусловием.

Задача 1. Банк начисляет 3% годовых. Определите, через сколько лет вы сможете накопить необходимую сумму.

Тело цикла – сумма накоплений, которая ежегодно пополняется. Количество повторений неизвестно, выход из цикла осуществляется по условию.

Исходные данные: s (real) – сумма первоначального взноса. s1(real) – необходимая сумма.

Результат: n (byte) – количество лет.

53

Блок-схема:

Программный код. program bank;

var n,p:byte; s,s1,s2:real;

begin

writeln('vedite % stavky'); readln(p);

writeln('vvedite pervonachalnii vklad'); readln(s);

writeln('vedite neobhodimyu symmy'); readln(s1);

S2:=S;

while S2<S1 do

begin S2:=s2+s2*p/100; n:=n+1;

end;

54

writeln('vi vnesli ',s:5:2, ' rub'); writeln('vi hoteli ',s1:5:2,' rub'); writeln('vam potrebyetsya ',n,' let'); readln;

end.

Тестирование.

Задания для самостоятельной работы 2

Задача 2. Библиотечный фонд в 1985 году составил 25 000 экземпляров. Ежегодно фонд пополняется на 7%. Составьте программу, которая определит: через сколько лет состояние фонда превысит 30 000.

По аналогии с задачей 1 для задачи 2 определите тело цикла, постройте блок-схему и составьте программу. Обоснуйте данные для тестирования.

Творческий блок 2

Индивидуальные задания (групповая работа). После тестирования и отладки программы добавьте диалоговый интерфейс.

1.Количество копировально-множительной техники в библиотеке в 2012 году составило 12 единиц. Ежегодно библиотека пополняется на 3%. Определите: через сколько лет количество превысит 20 единиц.

2.Количество пользователей библиотеки в 2010 году составило 15 000 человек. Ежегодно наблюдается увеличение количества пользователей на 2%. Определите: через сколько лет количество пользователей превысит 20 000.

55

Тема 9. Структурное программирование. Технология нисходящего программирования. Подпрограммы. Процедуры и функции

Теоретический блок

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

Под структурным программированием понимают такие методы разработки и записи программ, которые ориентированы на максимальные удобства для восприятия и понимания её человеком.

При прочтении программы в её следующих друг за другом фрагментах должна четко прослеживаться логика её работы, т.е. не должно быть «скачков», это «программирование без «go to». В связи с этим отдельные фрагменты программы представляют собой некоторые логические структуры, которые определяют порядок выполнения содержащихся в них правил обработки данных. Любая программа получается построенной из стандартных логических структур (следование, ветвление, повторение). Существенная особенность всех этих структур – то, что каждая из них имеет только один вход и только один выход, что обеспечивает логически последовательную структуру программы.

С массовым внедрением вычислительной техники процесс программирования постепенно превращается в промышленное изготовление программ. Для этой цели используются разнообразные технологии программирования. Технология нисходящего программирования базируется на методе программирования «сверхувниз». Часто этот метод называют методом пошаговой детализации. Именно этот метод создает предпосылки к решению сложных проблем. Основой этого метода является идея постепенной декомпозиции исходной задачи на ряд подзадач. Сначала формулируется самая грубая модель решения, отдельные детали

56

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

Подпрограмма – обособленная, оформленная в виде отдельной синтаксической конструкции и снабженная именем часть программы. Это основное средство структурирования программ. Подпрограмма является вспомогательным алгоритмом, управление которым осуществляется из основного.

За наличие подпрограмм как средства структурирования программ Turbo Pascal называется процедурно-ориентированным. Подпрограммы реализованы посредством процедур и функций, которые, имея один и тот же смысл и аналогичную структуру, различаются назначением и способом использования.

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

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

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

Все процедуры и функции языка Turbo Pascal делятся на две группы: встроенные и определенные пользователем (Примеры встроенных процедур).

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

57

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

Procedure Имя [(Список формальных параметров)]; Описательная часть

Begin

Тело процедуры

End;

При вызове процедуры её формальные параметры заменяются соответствующими фактическими.

Передача данных из главной программы в подпрограмму и возврат результата осуществляется при помощи параметров.

Параметр – переменная, которой присваивается некоторое значение в рамках указанного применения.

Количество и типы формальных и фактических параметров должны в точности совпадать.

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

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

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

Фактические параметры – это параметры, которые передаются процедуре при её вызове.

58

Параметры значения используются только для передачи исходных данных из основной программы в подпрограмму. Программа PROZ3.

PROZ3

program Par_Znach; var a,b:real;

{Процедура вычисления квадратов двух чисел и вывод на экран их суммы}

procedure Summa(x,y:real); begin

x:=x*x;

y:=y*y;

{writeln('сумма квадратов=',x+y:2:2);} end;

begin a:=1; b:=3;

Summa(a,b);

end.

Параметры – переменные используются для определения результатов выполнения процедуры. Программа PROZ4.

PROZ4

program Par_perem; var a,b:real;

SumAB,SubAB:real;

{Процедура вычисления суммы и разности квадратов с параметрами-

переменными Sum,Sub}

procedure Summa_Sub(x,y:real; var Sum,Sub:real); begin

Sum:=x*x+y*y;

Sub:=x*x-y*y; end;

begin a:=1; b:=3;

Summa_Sub(a,b,SumAB,SubAB);

writeln('Сумма квадратов чисел' ,a:2:2,'и',b:2:2,'=',SumAB:2:2);

59

writeln('Разность квадратов чисел' ,a:2:2,'и',b:2:2,'=',SubAB:2:2); end.

Исходные данные в процедуру из программы могут передаваться как через параметры-значения, так и через параметры переменные, а результаты работы процедуры возвращаются в управляющую программу только через параметры-переменные.

program primer; var k:integer;

procedure plus1 (n:integer); begin

n:=n+10

end;

procedure plus2 (var n:integer); begin

n:=n+10

end; begin k:=10;

plus1(k);writeln('k=',k);

plus2(k);writeln('k=',k);

end.

Все переменные программы делятся на глобальные и локальные. Глобальные переменные объявляются в разделе описаний основной программы. Локальные переменные объявляются в процедурах и функциях. Таким образом, локальные переменные «живут» только во время работы подпрограммы.

При использовании процедур применяются следующие правила:

параметры, через которые в процедуру передаются исходные данные, должны быть описаны как параметры-значения;

параметры, в которые записываются результаты работы процедуры, описываются как параметры-переменные;

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

количество фактических и формальных параметров должно совпадать. Соответствие между ними устанавливается просто – первый связывается с первым, второй со вторым и т. д.;

60

Соседние файлы в папке из электронной библиотеки