Программирование «сверху вниз»
DESCRIPTION
Программирование «сверху вниз». Процедуры и функции пользователя в Pascal. Цели урока:. познакомить учащихся с методикой программирования "сверху вниз", научить создавать собственные подпрограммы, воспитать культуру конструктивного мышления. Процедуры и функции. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/1.jpg)
Программирование «сверху вниз»
Процедуры и функции пользователя в Pascal
![Page 2: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/2.jpg)
Цели урока: познакомить учащихся с методикой
программирования "сверху вниз", научить создавать собственные
подпрограммы, воспитать культуру конструктивного
мышления.
![Page 3: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/3.jpg)
Все процедуры и функции делятся на стандартные встроенные определенные пользователем.
Встроенные и стандартные вызываются без предварительного описания.
Процедуры и функции
![Page 4: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/4.jpg)
Арифметические :
abs(x); cos(x); sqrt(x); и др.
Скалярные:
dec(x,n); inc(x,n);
pred(s); suss(s); odd(x);
Функции и процедуры преобразования типов:
chr(i); round(x); trunc(x);
val(s,x,code); str(n,s);
Стандартные процедуры и функции
![Page 5: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/5.jpg)
Встроенные процедуры и функции выделены в группы, которые размещаются в отдельных модулях.
Модуль имеет имя.
Подключается через слово Uses.
По умолчанию подключается модуль System.
Встроенные процедуры и функции
![Page 6: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/6.jpg)
Числа Армстронга
1, 2, …, 9 153=13+53+33=1+125+27 370=33+73+03=27+343 371?
![Page 7: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/7.jpg)
Фрагмент программы нахождения n-ой (n>0) степени
натурального числа а (аn)
st:=1;
for i:=1 to n do st:=st*a;
![Page 8: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/8.jpg)
Фрагмент программы нахождения количества цифр k
натурального числа n (n>0)
k:=0;
while n>0 do begin
inc(k);
n:=n div10; {число n без последней цифры}
end;
![Page 9: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/9.jpg)
Фрагмент программы нахождения суммы цифр s
натурального числа n
s:=0;
while n>0 do begin s:=s+n mod10; {n mod 10 – младшая цифра числа}
n:=n div10;
end;
![Page 10: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/10.jpg)
Методика программирования "сверху вниз"
Задача разбивается на несколько более простых, которые оформляются в виде подпрограмм.
![Page 11: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/11.jpg)
Пользовательские процедуры и функции
Подпрограммы – это процедуры и функции для выполнения часто повторяющихся операций с данными, которые могут меняться.
В Pascal имеется два вида подпрограмм — процедуры и функции.
![Page 12: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/12.jpg)
Описание подпрограммыprocedure Имя_процедуры(параметры);
begin
Код процедуры;
end;
function Имя_функции(параметры):тип_результата;
begin
Код функции;
Имя_функции:=результат;
end;
![Page 13: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/13.jpg)
Параметры
Формальные (параметры -переменные) и фактические.
Количество, типы и порядок формальных и фактических параметров должны совпадать.
Локальные и глобальные
![Page 14: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/14.jpg)
Процедура вычисления степени натурального числа аn, где
0<=а<=9, 1<=n<=9procedure stepen(a,n:byte; var st:longint);
var i:byte;
begin
st:=1;
for i:=1 to n do st:=st*a;
end;
![Page 15: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/15.jpg)
Функция вычисления степени натурального числа аn, где
0<=а<=9, 1<=n<=9
function stepen (a,n:byte):longint;
var i,st:byte;
begin
st:=1;
for i:=1 to n do st:=st*a;
stepen:=st;
end;
![Page 16: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/16.jpg)
Процедура вычисления количества цифр k натурального числа n (0<n<104)
procedure kol(n:integer; var k:byte);
var i:byte;
begin
k:=0;
while n>0 do begin
inc(k); n:=n div10;
end;
end;
![Page 17: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/17.jpg)
Функция вычисления количества цифр k натурального числа n
(0<n<104)function kol (n:integer):byte;
var k:byte;
begin k:=0;
while n>0 do begin
inc(k); n:=n div10;
end;
kol:=k;
end;
![Page 18: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/18.jpg)
Процедура вычисления суммы цифр натурального числа n (0<n<104)
procedure sum(n:integer; var s:byte);
var x,k:byte;
begin s:=0;
while n>0 do begin
s:=s+ n mod 10;
n:=n div10;end;
end;
![Page 19: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/19.jpg)
Функция вычисления суммы цифр натурального числа n (0<n<104)
function sum(n:integer):byte;
var k:byte;
begin s:=0;
while n>0 do begin
s:=s+ n mod 10;
n:=n div10; end;
sum:=s; end;
![Page 20: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/20.jpg)
Вызов подпрограммы
Процедура и функция вызываются по имени, в
круглых скобках записываются фактические параметры.
Имя (Список фактических параметров)
Количество, типы и порядок формальных и фактических параметров должны совпадать.
![Page 21: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/21.jpg)
(ПРОЦЕДУРЫ)
Определение числа Армстронга
![Page 22: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/22.jpg)
program p1;
var n,n1:integer; k:byte;x,s:longint;
procedure stepen(a,n:byte; var st: longint);
var i:byte;
begin
st:=1; for i:=1 to n do st:=st*a;
end;
procedure kol(n:integer; var k:byte);
var i:byte;
begin
k:=0;
while n>0 do begin
inc(k);
n:=n div 10; end;
end;
![Page 23: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/23.jpg)
begin readln(n); {вводим натуральное число}
s:=0; k:=0; {s-для хранения суммы степеней цифр числа, k-для хранения количества цифр числа}
n1:=n; {n1 для хранения введенного числа}
kol(n,k);
n:=n1; {в n восстановим введенное число}
s:=0;
while n>0 do begin
stepen(n mod 10,k,x); {x- для хранения степени младшей цифры числа}
s:=s+ x; n:=n div 10;
end;
if s=n1 then writeln(‘число ’, n1, ' явл. числ. Армстронга')
else writeln(‘число ’, n1, ' не явл. числ. Армстронга');
end.
![Page 24: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/24.jpg)
(ФУНКЦИИ)
Определение числа Армстронга
![Page 25: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/25.jpg)
program p2;
var n,n1:integer; k:byte; s:longint;
function stepen (a,n:byte):longint;
var i:byte; st:longint;
begin st:=1;
for i:=1 to n do st:=st*a;
stepen:=st; end;
function kol (n:integer):byte;
var k:byte;
begin
k:=0;
while n>0 do begin
inc(k); n:=n div 10; end;
kol:=k; end;
![Page 26: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/26.jpg)
begin
readln(n);
n1:=n;
k:=kol(n);
s:=0;
n:=n1;
while n>0 do begin
s:=s+stepen(n mod 10,k);
n:=n div 10;
end;
if s=n1 then writeln(‘число ’,n1, ' явл. числ. Армстронга')
else writeln(‘число ’,n1, ' не явл. числ. Армстронга')
end.
![Page 27: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/27.jpg)
(ФУНКЦИИ)
Вывод чисел Армстронга из диапазона от a до b(0<=a<b<104).
![Page 28: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/28.jpg)
program p4;
var a,b,i:integer; k:byte;s:longint;
function stepen (a,n:byte):longint;
var i:byte; st:longint;
begin st:=1;
for i:=1 to n do st:=st*a;
stepen:=st; end;
function kol (n:integer):byte;
var k:byte;
begin k:=0;
while n>0 do begin
inc(k); n:=n div 10;
end;
kol:=k; end;
![Page 29: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/29.jpg)
function sum(n:integer; k:byte):longint;
var s:longint;
begin
s:=0;
while n>0 do begin
s:=s+ stepen(n mod 10,k);
n:=n div 10;
end;
sum:=s;
end;
![Page 30: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/30.jpg)
begin
readln(a,b);
for i:=a to b do begin
n:=i;
k:=kol(n);
n:=i;
s:=sum(n,k);
if s=i then writeln(i)
end;
end.
![Page 31: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/31.jpg)
Домашнее заданиеа) Найти пять наибольших чисел Армстронга из
диапазона от a до b(0<a<b<104).
б) Найдите пять наибольших чисел Армстронга, состоящих не более чем из n цифр. Вывести их по возрастанию.
Пример input.txt output.txt
4 371 407 1634 8208 9474
1 5 6 7 8 9
![Page 32: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/32.jpg)
Хорошая программа должна содержать главным образом обращения к процедурам и функциям, и для этого рекомендую:
- выделять в процедуру (функцию) небольшой логически завершенный фрагмент алгоритма;
- называть процедуры (функции) мнемоническими именами;
- использовать функцию, если алгоритм должен вычислить одно скалярное значение.
![Page 33: Программирование «сверху вниз»](https://reader036.vdocuments.net/reader036/viewer/2022070404/56813b41550346895da417c0/html5/thumbnails/33.jpg)
Подпрограммы – это процедуры и функции для выполнения часто повторяющихся операций с данными, которые могут меняться. Описание подпрограммы состоит из ключевого слова procedure или function, за которым следует имя подпрограммы со списком формальных параметров, заключённых в скобки.
Вызов подпрограммы происходит в основной программе по имени с указанием фактических параметров.
Количество, типы и порядок формальных и фактических параметров должны совпадать.