Слайд 1Технология нисходящего программирования.
Подготовила:
Камалова Нафиса Ахатовна,
учитель информатики высшей квалификационной категории
МАОУ
«СОШ № 5» МО «ЛМР» РТ
г. Лениногорск
Решение экспериментальных задач
Слайд 2Из записной книжки программиста:
Прежде чем написать программу, проверьте, существует ли компьютер,
способный ее переварить.
Если, по-твоему, программа составлена правильно, это еще не значит, что с этим согласится машина.
Если программа заработала, не расстраивайся, долго это продолжаться не будет.
Слайд 3Из записной книжки программиста:
Каждому программисту компьютер выдает то, что он заслуживает.
Запрещается
пользоваться аспирином, малиновым вареньем и горчичниками для понижения температуры перегревшегося компьютера.
Вкладывая в программу всю свою душу, не забывай, что ее еще будут эксплуатировать.
Слайд 4Вопросы для повторения:
Что такое подпрограмма? Какие виды подпрограмм вы знаете?
Запишите структуру
процедуры.
Что такое формальные и фактические параметры?
Как записывается вызов процедуры?
Запишите структуру функции.
Как записывается вызов функции?
Слайд 5Самостоятельная работа.
Определите, какие числа (число) будут напечатаны в результате выполнения следующего
алгоритма:
Ответ: x=3; y=18
Проверь себя!
Ответ: М = 2
Проверь себя!
Слайд 6Основная идея технологии
нисходящего программирования.
Основой такой технологии является идея постепенной декомпозиции
исходной задачи на ряд подзадач.
Сначала формулируется самая грубая модель решения, отдельные детали которой на первом этапе могут быть довольно расплывчатыми. По мере разработки программ, разбивая наиболее неясные части алгоритма и добиваясь все более точных и детализированных формулировок, мы получаем более подробное решение.
Слайд 7Решение отдельного фрагмента сложной задачи может представлять собой самостоятельный программный блок,
называемый подпрограммой.
Такой процесс детализации продолжается до тех пор, пока не станут ясны все детали решения задачи.
Слайд 8В этом случае программу решения сложной задачи можно представить как иерархическую
совокупность относительно самостоятельных фрагментов – подпрограмм.
Слайд 9Подпрограмма – обособленная, оформленная в виде отдельной синтаксической конструкции и снабженная
именем часть программы.
Слайд 10В Паскале имеется два вида подпрограмм – процедуры и функции. Их
структура похожа на структуру основной программы.
Слайд 11За наличие подпрограмм как средства структурирования программ язык программирования Turbo Pascal
называется процедурно-ориентированным.
Подпрограммы в Turbo Pascal реализованы посредством процедур и функций.
Слайд 12Различие процедур и функций
Имея один и тот же смысл и аналогичную
структуру, процедуры и функции различаются назначением и способом их использования.
Слайд 13Различие процедур и функций
Процедура не может выступать как операнд (величина или
выражение, над которым производится операция) в выражении.
Упоминание имени процедуры в тексте программы приводит к активизации процедуры и называется ее вызовом.
Слайд 14Различие процедур и функций
Функция аналогична процедуре, но имеет два отличия:
функция
передает в точку
вызова скалярное значение;
имя функции может входить в
выражение как операнд.
Например, функция Sqr(x) – возведет в квадрат значение целого числа или вещественного Х и возвратит в точку вызова вычисленное значение квадрата числа Х.
Слайд 15Различие процедур и функций
Процедуры служат для задания совокупности действий, направленных на
изменение внешней по отношению к ним программной обстановки.
Функции обязательно возвращают в точку вызова основной программы единственный результат как значение имени этой функции.
Слайд 16При вызове подпрограммы (процедуры или функции), определенной программистом, работа главной программы
на некоторое время приостанавливается и начинает выполняться вызванная подпрограмма. Она обрабатывает данные, переданные ей из главной программы.
Слайд 17По завершении выполнения подпрограмма-функция возвращает главной программе результат (подпрограмма-процедура не возвращает
явно результирующего значения).
Передача данных из главной программы в подпрограмму и возврат результата выполнения функции осуществляется с помощью параметров.
Слайд 18Задача 1.
Даны три натуральных числа x, y, z. Вычислить
P = x! + 2y! – (x + z)!
Использовать процедуру (или функцию), вычисляющую факториал заданного натурального числа.
n! = 1*2*3* … *(n-1)*n.
Слайд 19Задача 1.
Первый способ. Для решения используется подпрограмма-процедура.
Вспомогательный алгоритм
Основной алгоритм
P := p
* i
i := 1, x, 1
Factorial (x, y)
P := 1
Factorial (x, y)
P := 1
i := 1, x, 1
P := 1
Начало
Ввод x, y, z
P := 0
P := p +p1+2*p2-p3
Вывод P
Конец
Начало
Ввод x, y, z
P := 0
Начало
Ввод x, y, z
P := 0
Ввод x, y, z
P := 0
Ввод x, y, z
P := 0
Ввод x, y, z
P := p +p1+2*p2-p3
P := 0
Ввод x, y, z
P := p +p1+2*p2-p3
P := 0
Слайд 20Задача 1.
Program Ex_1;
Var x, y, z: integer;
P, p1, p2, p3: Longint;
Procedure
Factorial (x: integer; Var p: Longint);
Var i: integer;
Begin
P:= 1;
For i:= 1 To x Do p:= p*i
End;
Begin
Write (‘x=’); Readln (x);
Write (‘y=’); Readln (y);
Write (‘z=’); Readln (z);
P:=0;
Factorial (x, p1);
Factorial (y, p2);
Factorial (x + z, p3);
P:= p+p1 + 2*p2 – p3;
Writeln (‘p=’, p);
Readln
End.
Слайд 21Задача 1.
Второй способ. Для решения используется подпрограмма-функция.
Program Ex_2;
Var x, y, z:
integer;
P, p1, p2, p3: Longint;
Function Factorial (x: integer) : Longint;
Var i: iInteger; p: Longint;
Begin
P:= 1;
For i:= 1 To x Do p:= p*I;
Factorial := p
End;
Begin
Write (‘x=’); Readln (x);
Write (‘y=’); Readln (y);
Write (‘z=’); Readln (z);
P:=0;
P1 := Factorial (x);
P2 := Factorial (y);
P3 := Factorial (x + z);
P:= p+p1 + 2*p2 – p3;
Writeln (‘p=’, p);
Readln
End.
Слайд 22Задача 2.
Даны натуральные числа n и m, действительное число x.
Вычислить:
Для вычисления суммы использовать функцию.
Слайд 23Решение:
- обобщенная формула для суммы.
Функция summa имеет пять формальных параметров:
k, a, b, c, d –входные данные,
i – промежуточная (локальная) переменная,
z – результат.
- i – ое слагаемое.
Слайд 24Задача 2.
Первый способ. Для решения используется подпрограмма-функция.
Вспомогательный
алгоритм
Z := 0
Z :=
0
Z := 0
Z := 0
Summa (k,a,c,d,b)
i := 1, k, 1
Конец
Summa := z
Z := 0
Основной
алгоритм
Ввод
n, m, x
Ввод
n, m, x
Слайд 25Задача 2.
Первый способ. Для решения используется подпрограмма-функция.
Program Ex_3;
Var n, m: integer;
X,
z, z1, z2: real;
Function summa (k, a, c, d: integer; x: real): Real;
Var i: integer; z: real;
Begin
z:= 0;
For i:= 1 To k Do
z:= z+(a*b+c)/ (sqr (i)+d);
Summa:= z
End;
Begin
Write (‘n,m,x’); Readln (n,m,x);
z1:= summa(n,2,1,2,x);
z2:= summa(m,1,5,3,x);
z:= z1+z2;
Writeln (’z=’, z:8:1);
Readln
End.
Слайд 26Задача 2.
Второй способ. Для решения используется подпрограмма-процедура.
Program Ex_4;
Var n, m: integer;
x,
z, z1, z2: real;
Procedure summa (k, a, c, d: integer; x: real; var z: real);
Var i: integer;
Begin
z:= 0;
For i:= 1 To k Do
z:=z+(a*x+c)/(sqr (i) + d);
End;
Begin
Write ('n,m,x'); Readln (n,m,x);
summa(n,2,1,2, x, z1);
summa(m,1,5,3, x, z2);
z:=z1+z2;
Writeln ('z=', z:8:1);
Readln
End.
Слайд 27Выводы:
Использование подпрограмм позволяет, сосредоточив в них подробное описание некоторых операций, в
остальной программе только указывать имена подпрограмм, чтобы выполнить эти операции.
Такие вызовы подпрограммы возможны неоднократно из разных участков программы, причем при вызове подпрограммы можно передать некоторую информацию.
Использование подпрограмм уменьшает объем используемой памяти компьютера.
Использование подпрограмм не только улучшает структуру и внешний вид программы, но и уменьшает вероятность появления ошибок и облегчает отладку программы.
Слайд 28Домашнее задание.
Задача. Составить программу, которая вычисляет значение функции
при следующих значениях
х = -5, -4.5, -4, …, 1, 1.5, 2.