Конспект лекций по информатике для специальностей 2102, 2103 Автор доц., к т. н. Каширская Е. Н
Вид материала | Конспект |
Содержание5.2. Стандартные процедуры 5.3. Описание функций 5.4. Стандартные функции 5.5. Итерация и рекурсия |
- Конспект лекций бурлачков в. К., д э. н., проф. Москва, 1213.67kb.
- Конспект лекций по курсу "Начертательная геометрия и инженерная графика" Кемерово 2002, 786.75kb.
- Конспект лекций по дисциплине «Маркетинг», 487.79kb.
- Конспект лекций для студентов всех специальностей дневной и заочной формы обучения, 1439.07kb.
- Конспект лекций для студентов, магистров и аспирантов всех специальностей, 373.35kb.
- Конспект лекций для студентов по специальности i-25 01 08 «Бухгалтерский учет, анализ, 2183.7kb.
- Конспект лекций организация производства и маркетинг для студентов 3 курса специальностей, 2989.73kb.
- Конспект лекций по дисциплине «психология и педагогика» омск 2005, 2020.42kb.
- Конспект лекций по курсу «Организация производства», 2034.84kb.
- Конспект лекций по курсу «Организация производства», 2032.47kb.
5.2. Стандартные процедуры
Это, в первую очередь, процедуры ввода и вывода Read, readln, write, writeln. С ними вы знакомы.
В циклах Repeat, While и For можно использовать еще две процедуры – Break и Continue. Процедура Break позволяет досрочно выйти из цикла, не дожидаясь выполнения условий выхода.
Процедура Continue позволяет начать новую итерацию цикла, даже если предыдущая не завершена.
Пример: В массиве целых чисел найти первое отрицательное число и вывести его на экран.
Фрагмент программы
For I:=1 to N do {поиск отрицательного числа}
Begin
If A[i]>=0 then
Continiue; {не отр.=> на след. число}
Writeln (‘1-ое отриц. число=’, A[i]);
Break
End;
Процедура Exit служит для досрочного выхода из программы. Дело в том, что безусловный переход с использованием оператора goto можно осуществлять далеко не из каждого места программы и не в любое место программы. Так, например, нельзя с его помощью перейти из основной программы в подпрограмму или выйти из подпрограммы. Для этой цели используется процедура Exit.
Пример: Функция, обращает первое отрицательное число в массиве.
Function Minus
---------------------
Begin
Minus:=0
For i:=1 to N do
If T[i]<0 then
Begin
Minus:=T[i];
Exit {досрочный выход из фун-и}
END
End;
Существует множество стандартных процедур, которые работают с файлами:
Halt(1) - остановка,
Halt(0) - завершение,
Halt=Halt(0).
5.3. Описание функций
Описание функции в основном аналогично описанию процедуры, однако есть и отличия. Результатом работы функции является одно значение. Тип результата задается в заголовке.
Общий вид заголовка функции:
Function имя функции (список формальных параметров):тип результата.
Если функция изменяет значения формальных параметров – переменных или значения глобальных по отношению к данной функции переменных, то говорят, что функция имеет побочный эффект.
Применение функции с побочным эффектом нарушает структурированность программы, поэтому их использование нежелательно.
Среди входящих в функцию операторов должен обязательно присутствовать хотя бы один оператор присваивания, в левой части которого стоит имя функции. Этот оператор и определяет значение, вырабатываемое функцией. При вызове функции передача фактических параметров производится так же, как и при вызове параметра.
Пример: Найти разность двух факториалов: F=m!-k!
Program P1;
Var F,M,K:Integer;
Function Fact (N:Integer):Integer;
Var P,I:Integer;
Begin
P:=1
For I:=2 to N do
P:=P*I;
Fact:=P
End;
Begin
Writeln (‘Ввод М,К’);
Readln (M,K);
F:=Fact (M) – Fact (K);
Writeln (‘F=’,F:5);
End.
Внутри функции имена N,P,I являются локальными. Результат вычисления факториала обозначается именем функции Fact. В основной программе переменные F,M,K являются глобальными. При вычислении значения F дважды происходит обращение к функции Fact(M) и Fact(k) прямо в правой части оператора присваивания. При этом вызов функции м. делать непосредственно внутри выражения, подобно тому, как используются стандартные встроенные функции, например Sin(x).
Пример: вычислить длину гипотенузы.
S=h/tg
Program Dlina;
Const Pi=3.14159;
Var H:Real;
Betta:Real;
Function S(M:Real;Betta:Real):Real;
Var x:Real;
Begin x:=Betta*Pi/180;
S:=H/(sin(x)/cos(x));
End;
Begin x:=Betta*Pi/180;
S:=H/9sin(x)/cos(x));
End;
Begin Write (‘Ввести Betta,H’);
Readln (Betta,H);
Write (‘S=’,s(H,Betta):10:4);
End;
Вызов функции осуществляется непосредственно в операции ввода.
5.4. Стандартные функции
Они вам известны: это арифметические, алгебраические и тригонометрические функции. Кроме того, есть функция конца строки: Eoln - end of line.
5.5. Итерация и рекурсия
Итерация (от лат. повторение) - повторение, применение какой – либо математической.
Пример: Вычислить сумму ряда:
S=a1+a2+….+an
S1=a1
S2=a1+a2
S3=a1+a2+a3
S4=a1+a2+a3+a4
…………………
S=a1+a2+…+an
Рекурсия (от лат. возвращение) - вычисление последующего значения ряда через предыдущее. Последовательность, в которой соседние значения связаны формулой, называется рекурсивной.
Пример: Арифметическая прогрессия: a1, a2=a1+d, a3=a2+d, an=an-1+d
Пример.
Begin
If (n=0) or (n=1) then Factorial:=1
Else begin F:=1
For i:=2 to n do
F:=f*i;
Factorial:=f;
End;
End;
Begin Writeln (‘Введите N’);
Readln (N);
Writeln (‘факториал=’,Fact);
End.
Пример.
Program Rekursion;
Var fact:real;
N:integer;
Function Factorial (N:integer):real;
Begin
If (n=0) or (N=1) then factorial:=1
Else factorial:=factorial (N-1)*n;
End;
Begin
writeln (‘Введите N’);
Readln (N);
Fact:=factorial (N);
Writeln (‘факториал=’,fact);
End.
Здесь первый вызов функции происходит в основной программе, а затем, начинается рекурсивный вызов внутри функции.
В языке программирования Паскаль есть возможность обращения процедуры или функции к самой себе. При этом циклическую часть программы можно составить без операторов цикла. Способ обращения процедуры или функции к самой себе называется рекурсией. С помощью рекурсии удобно представлять те задачи, которые сводятся к подзадачам того же типа, но меньшей размерности.
Вычисление факториала можно представить опять через факториал.
N!=n(n-1)!-рекурсивная формула.
Представление факториала в виде последовательности операций умножения – это итерационный процесс. n!= 1*2*3…n-итерационная формула. Итерация программируется с помощью циклов.
Пример: Вычисление факториала.
Program Iteracion ;
Var fact: real;
N:integer;
Function factorial (n: integer):real;
Var f:real;
I: integer;
Пример. В 13 веке итальянский математик Фибоначчи сформулировал задачу: ”Некто поместил пару кроликов в некое место, огороженное со всех сторон стеной, чтобы узнать, сколько пар кроликов родится в течении года, если через месяц пара кроликов производит на свет другую пару, а рожают со второго месяца после своего рождения.
Program Krolik;
Var kr:integer; (*число кроликов*)
N:Integer; (*число месяцев*)
Function fib(n:integer):integer;
Begin
If (n=1) or (n=2) then fib:=1
Else fib:=fib(n-1)+fib(n-2)
End;
Begin
Writeln(‘ввести N’);
Readln (N);
Kr:=fib (N); (*вызов ф-и*)
Writeln (kr:5);
End.
0>