Var

advertisement
http://life-prog.ru/
http://mojainformatika.ru/uroki-paskal.html
Структурное, модульное, объектное - программирование современные технологии
конструирования программ.
При создании средних по размеру приложений (несколько тысяч строк исходного
кода) используется структурное программирование, идея которого заключается в том,
что структура программы должна отражать структуру решаемой задачи, чтобы алгоритм
решения был ясно виден из исходного текста. (Пример последняя задача, которя
сводилась к решению нескольких задач. Мы для этого использовали средства трех
простых операторов последовательность, альтернатива (условие выбора), цикл. Насколько
красива и понятна созданная нами программа. Ну нам кажется прекрасна. Хотя через
какой-то промежуток времени Вы и не поймете зачем, что делается
Для ясного отображения структуры алгоритма в программирование введено понятие
подпрограммы – набора операторов, выполняющих нужное действие и не зависящих от
других частей исходного кода.
Программа разбивается на множество мелких подпрограмм, каждая из которых выполняет
одно из действий, предусмотренных исходным заданием. Комбинируя эти подпрограммы,
удается формировать итоговый алгоритм уже не из простых операторов, а из законченных
блоков кода, имеющих определенную смысловую нагрузку, причем обращаться к таким
блокам можно по названиям.
Идеи структурного программирования появились в начале 70-годов в компании IBM, в их
разработке участвовали известные ученые Э. Дейкстра, Х. Милс, Э. Кнут, С. Хоор.
. Чтобы понять, как структурировать программу, надо запомнить
следующее.
В Исполняемой части Программы (между BEGIN ..... END.) пишутся
конструкции языка, отвечающие на вопрос "ЧТО мы делаем". А Процедуры и
Функции пишутся в Описательной части Программы и отвечают на вопрос
"КАК мы это делаем".
Распространены две методики (стратегии) разработки программ, относящиеся к
структурному программированию:
– программирование «сверху вниз»;
– программирование «снизу вверх».
Программирование «сверху вниз», или нисходящее программирование – это
методика разработки программ, при которой разработка начинается с определения целей
решения проблемы, после чего идет последовательная детализация, заканчивающаяся
детальной программой
Программирование «снизу вверх», или восходящее программирование – это методика
разработки программ, начинающаяся с разработки подпрограмм (процедур, функций), в
то время когда проработка общей схемы не закончилась.
ПОДПРОГРАММА самостоятельный фрагмент программы, реализующий
определенный алгоритм и допускающий многократное обращение к нему из различных
частей программы.
Язык Паскаль содержит два типа подпрограмм:
1. Процедуры. PROCEDURE
2. Функции. FUNCTION
Отличие процедуры от функции
1. Функция в отличие от процедуры возвращает единственное скалярное значение
2. Результат вычисления функции присваивается имени, а процедуре входит в список
параметров.
3. Имя функции имеет тип.
4. Обращение к функции представляет операнд, а процедуры оператор
Обращение к подпрограммам в программе
Program Primer;
{заголовок}


Uses . . .;
{раздел подключения модулей}
Var . . .;
{раздел описания переменных}
Function <имя функции>(<список формальных параметров через запятую>):<тип
возвращаемого значения>;
Const……..;
Type……;
Var…….;
Begin
Тело функции
End;
Procedure <имя функции>(<список формальных параметров через запятую;
Const……..;
Type……;
Var…….;
Begin
Тело процедуры
End;

Begin
{начало программы}
{раздел операторов — тело программы}
End.
{конец программы}


Заполним массив f индексами возведенными в степень, найти сумму
полученных значений
Программа возведения в отрицательную степень.
Program l2;
uses crt;
var
a1,i1:integer;{a1 степень, i1 число}
c, otr:real;{c переменная otr результат}
begin
clrscr;
writeln('введи степень, число');
read (a1,i1);
c:=1
while a1>0 do begin {а1 =1 число остается таким же}
c:=c*i1;
a1:=a1-1;
end;
otr:=1/c;
writeln (otr:8:5);
readln
end.
Программа нахождения суммы.
Program l3;
uses crt;
Type mass [1..4] of real
var j:integer;
s1:real;
f:mass
begin
s1:=0;
Writeln('суммф массива');
for j:=1 to n1 do
s1:=s1+f1[j];
writeln ('s=',s1:8:4);
end;
Структурируем программу т.е. разобьем ее на части
Попробуем написать программу заполнения массива а возведение в
отрицательную степень оформим как подпрограмму.
Основная программа
Программа возведения в
отрицательную степень
I, a
Дано а F[1..4] массив действительных чисел
otr
I целая индекс массива который возводим
в степень
a отрицательная степень, в которую
возводим число.
F[1..n],n
I1 число в которое
возводим в степень
a1 отрицательная степень
в которую возводим число.
otr результат
Программа
нахождения суммы.
печать суммы S
Оформим кусочек программы возведения в степень, как функцию
Функция - это независимая часть программы, предназначенная для выполнения
логически законченных вычислений, которая имеет собственное имя для вызова из основной
программы и имеет единственный результат решения
Функции делятся на стандартный Sqr, Abs разработанный специалистами, и
разработанные пользователями для собственного применения.
Function <имя функции>(<список формальных параметров через запятую>):<тип возвращаемого
значения>;
Const……..;
Type……;
Var…….;
Begin
Тело функции
End;
Functio служебное слово, обозначающая начало функции



<имя функции> дается пользователем
<список формальных параметров через запятую> переменные которым передаются
начальные значения из программы и используются в нутрии функции.( Формальные
параметры – это параметры, которые указаны в скобках после имени процедуры в разделе
описания процедуры и служат для описания порядка действий в процедуре)
<тип возвращаемого значения> тип данных результата ;
Обращение в программе
<имя функции>(<список фактических параметров через запятую (числовые
значения и значения переменных котрые будут использоваться формальными
переменными >)
Соответствие между параметрами команды вызова функции и параметрами
описания функции устанавливается не по именам параметров, а по порядку
следования:
Первый параметр в команде вызова соответствует первому параметру в описании
функции, второй – второму и т.д. число фактических параметров должно
соответствовать числу формальных параметров.
Типы фактических параметров должны соответствовать типам формальных
параметров.
Function otr(a1,i1y:integer):real;
otr(a,i);
Оформим программу нахожнения отрицателькак функцию
Function otr(a1,i1y:integer):real;
var c:real;
begin
c:=a1;
while a1>1 do begin
c:=c*i1;
a1:=a1-1;
end;
otr:=1/c;
end;
из программы вызов процедуры осуществляется операндом otr(a,i);
Программа будет выглядеть
Program l2;
uses crt;
var
f:array[1..4] of real;
a,b,i:integer;
Function otr(a1,i1:integer):real;
var c:real;
begin
c:=a1;
while a1>1 do begin
c:=c*i1;
a1:=a1-1;
end;
otr:=1/c;
end;
begin
writeln('введи степень');
read (a);
for i:=1 to 4 do begin
f[i]:=otr(a,i);
writeln (i, ' ',f[i]:6:5);
end;
end.
Процедуры
Процедуры используются в случаях, когда в подпрограмме необходимо получить
несколько результатов.
В языке Паскаль существует два вида процедур: процедуры с параметрами и без
параметров.
Процедура без параметров
Procedure <имя функции>
Const……..;
Type……;
Var…….;
Begin
Тело процедуры
End;
procedure pr;
var
i : integer ;
begin
for i :=1 to 60 do write (‘ * ');
end.
writeln;
Program pl2;
uses crt;
var
f:array[1..4] of real;
a,b,i:integer;{a степнь числа, i число}
Function otr(a1,i1:integer):real;{возведение в степеньа1,i1 формальные
параметры}
var c:real;
begin
c:=a1;
while a1>1 do begin
c:=c*i1;
a1:=a1-1;
end;
otr:=1/c;
end;
procedure pr;{печать звездочек}
var i : integer ;
begin
for i :=1 to 60 do write ('*');
writeln;
end;
begin
writeln('введи степень');
read (a);
pr; {процедура без параметров}
for i:=1 to 4 do begin
f[i]:=otr(a,i);{a, i фактические параметры}
writeln (i, ' ',f[i]:6:5);
end;
pr; {процедура без параметров}
end.
Обращение к процедуре осуществляется по имени процедуры, за которым могут быть указаны
фактические параметры. Все формальные параметры являются локальными для данной
процедуры и глобальными для каждой процедуры в ней.
Procedure <имя функции>(<список формальных параметров через запятую:
тип данных; var список формальных данных: тип данных>;
Const……..;
Type……;
Var…….;
Begin
Тело процедуры
End;
Procedure Ploshad3 (var a, b, c, s: real);
Ploshad3 (AB, BC, AC, S);
Procedure Ploshad3 (a, b, c: real; var s :real);
Ploshad3 (АВ, 3 , 62.7 , S1);
1. Соответствие между параметрами команды вызова процедуры и параметрами
описания процедуры устанавливается не по именам параметров, а по порядку
следования:
Первый параметр в команде вызова соответствует первому параметру в описании
процедуры, второй – второму и т.д. число фактических параметров должно
соответствовать числу формальных параметров.
2.
Типы фактических параметров должны соответствовать типам
формальных параметров.
3.
Фактические параметры, соответствующие результатам вычислений в
процедуре, должны быть только именами переменных.
4.
Фактические параметры, соответствующие начальным значениям для
процедуры, могут быть именами переменных, константами и выражениями
соответствующего типа
Program pl2;
uses crt;
type mass=Array[1..4] of real;
var
f:mass;
a,n,i:integer;{a степнь числа, i число}
s:real;
Function otr(a1,i1:integer):real;{возведение в степеньа1,i1 формальные параметры}
var c:real;
begin
c:=a1;
while a1>0 do begin
c:=c*i1;
a1:=a1-1;
end;
otr:=1/c;
end;
procedure pr;{печать звездочек}
var i : integer ;
begin
for i :=1 to 60 do write ('*');
writeln;
end;
procedure gg(n1:integer;f1:mass);{процедура с папаметрами}
var j:integer;
s1:real;
begin
s1:=0;
Writeln('сумма массива');
for j:=1 to n1 do
s1:=s1+f1[j];
writeln ('s=',s1:8:4);
end;
begin
writeln('введи степень');
read (a);
pr;{процедура без параметров}
for i:=1 to 4 do begin
f[i]:=otr(a,i);{a, i фактические параметры}
writeln (i, ' ',f[i]:6:5);
end;
pr; {процедура без параметров}
s:=0;
gg(4,f);{процедура с параметром}
end.
Программа, написанная на Паскале, должна быть структурирована, то есть
содержать Процедуры и Функции. Процедуры и Функции в Паскале
облегчают самому программисту понимание структуры программы и ее
отладку. Кроме того, при написании больших программ-проектов именно
использование механизма Процедур и Функций позволяет разделить проект
на части между несколькими программистами так, что каждый из них может
писать свой кусок программы независимо от других.
2. Чтобы понять, как структурировать программу, надо запомнить
следующее.
В Исполняемой части Программы (между BEGIN ..... END.) пишутся
конструкции языка, отвечающие на вопрос "ЧТО мы делаем". А Процедуры и
Функции пишутся в Описательной части Программы и отвечают на вопрос
"КАК мы это делаем".
3. Функция служит для вычисления только ОДНОГО значения. Это
значение может использоваться программой различными способами:
a)
присвоить его какой-то переменной;
b)
вывести его на экран;
c)
сравнить с какой-то другой переменной.
1. Функция НИКОГДА не служит для вывода на экран своего вычисленного
значения, она только возвращает его в Программу, и уже в Программе, при
необходимости, происходит вывод полученных значений.
2.
·
Процедура в Паскале может использоваться двояко:
для выполнения каких-то действий;
·
для вычисления значений каких-то переменных, причем число этих
вычисляемых переменных (возвращаемых в программу) может быть больше
одного - в этом заключается преимущество Процедуры перед Функцией. В
этом случае входной параметр Процедуры одновременно является и
выходным, при этом в списке параметров перед именем переменной с
возвращаемым значением должно стоять ключевое слово Var.
3. У Процедуры или Функции может быть несколько входных параметров
и даже не быть совсем.
4. Переменные и константы в программе, написанной на Паскале, могут
быть Глобальными или Локальными.
Глобальные описываются в Описательной части самой программы.
Локальные - в Описательной части Процедур или Функций - не в
Заголовке!!!.
Локальные используются только внутри своей Процедуры или Функции и
наружу из них не выходят. Глобальные переменные и константы имеют
право входить в любую Процедуру или Функцию данной Программы.
ОДНАКО!!! Читайте про СЛОНОВ:
СЛОНАМИ мы будем называть те переменные или константы, которые
попали в Процедуру или в Функцию как Глобальные, МИНУЯ ЗАГОЛОВОК
Процедуры или Функции.
Использование Слонов в учебных программах ЗАПРЕЩЕНО - оценка сразу
будет очень сильно снижаться (в лучшем случае до 3/2).
Related documents
Download