Пусть необходимо составить программу вывода на экран 5 строк примерно такого текста
Привет Катя! Поздравляю тебя с новым годом!
Привет Таня! Поздравляю тебя с новым годом!
Привет Вася! Поздравляю тебя с новым годом!
Привет Коля! Поздравляю тебя с новым годом!
Привет Боря! Поздравляю тебя с новым годом!
.....
В программировании часто возникают ситуации, когда одну и ту же группу операторов, реализующих определенную цель, требуется повторить без изменений в нескольких местах программы. Для решения данной проблемы используют подпрограммы.
Подпрограмма - именованная группа операторов, которую можно вызвать для выполнения несколько раз из различных мест программы.
В языке Паскаль существую два вида подпрограмм: процедуры и функции.
Главное отличие процедур от функций заключается в том, что результатом функций является единственное число.
Конструирование алгоритма «сверху вниз»
При конструировании достаточно сложного алгоритма логично разбивать его на ряд более простых задач. Сначала записывается основной алгоритм. В нем записываются обращения к вспомогательным алгоритмам (подпрограммам), которые позволят решить отдельные, более простые задачи.
Вспомогательный алгоритм (подпрограмма) должен:
- иметь имя, по которому его можно вызвать из других алгоритмов;
- возвращать управление тому алгоритму, из которого он был вызван. После того как завершится выполнение вспомогательного алгоритма, вызвавший его алгоритм должен продолжить работу с той точки, в которой он был прерван;
- иметь возможность вызывать другие алгоритмы;
- иметь достаточно малые размеры.
В языке Паскаль существует два вида подпрограмм: Процедуры и функции в Паскале объявляются в разделе описания за разделом переменных: процедура (PROCEDURE ) и функция ( FUNCTION ).
Параметры, записываемые в обращении к подпрограммам, называются фактическими; параметры, указанные в описании подпрограмм - формальными. Фактические параметры должны соответствовать формальным по количеству, порядку следования и типу. Параметры, объявленные в основной (главной) программе, действуют в любой подпрограмме и называются глобальными. Параметры, объявленные в подпрограмме, действуют только в этой подпрограмме и называются локальными.
ПРОЦЕДУРЫ
Процедуры используются в случаях, когда в подпрограмме необходимо получить несколько результатов. В языке Паскаль существует два вида процедур: процедуры с параметрами и без параметров.
Структура процедуры имеет следующий вид:
Procedure <имя процедуры>(формальные параметры);
Var
(локальные переменные)
begin
. . .
end;
Например:
procedure korni (f: real; b,c:integer; var x1, x2:real; var k:integer);
Формальные параметры отделяются точкой запятой (однотипные параметры пишутся через запятую).
Вызов процедуры:
Обращение к процедуре осуществляется по имени процедуры, за которым могут быть указаны фактические параметры.
имя процедуры (фактические параметры);
Фактические параметры отделяются друг от друга запятой.
При вызове процедуры устанавливается взаимно однозначное соответствие между фактическими и формальными параметрами. После выполнения процедуры управление передается следующему, после вызова процедуры, оператору вызывающей программы.
Например:
korni (i,c,d,x,y,n);
Задача 1. Написать процедуру, которая печатает строку из N звездочек и переводит курсор на новую строку.
procedure pr (n:integer);
var i : integer ;
begin
for i :=1 to n do write ('*'); writeln;
end;
Задача 2. Составьте программу, получения изображения в котором в первой строке 1 звездочка, во второй - 2, в третьей -3, ..., в строке с номером m - m звездочек.
program z2;
var m, i,k :integer;
procedure pr (n:integer);
var i : integer ;
begin
for i :=1 to n do write ('*'); writeln;
end;
begin
readln(m);
for i:=1 to m do
pr(i);
end.
1. Измените программу, чтобы в первой строке было m звездочек, во второй на 1 меньше и т.д..
2. Измените программу, чтобы в первой строке выводилась 1, во второй - две двойки, в третьей - три тройки и т.д.
Составим две подпрограммы: первая для заполнения массива, вторая для нахождения суммы и среднего арифметического элементов массива.
program z2;
type mas=array[1..15] of integer;
var i,n,s :integer; sr:real;
a:mas;
procedure zap(var n:integer; var a:mas);
var i:integer;
begin
readln(n); randomize;
for i:=1 to n do
a[i]:=random(100)-50;
end;
procedure sum (n:integer; a:mas; var s:integer; var sr:real);
var i : integer ;
begin
s:=0;
for i :=1 to n do
s:=s+a[i];
sr:= s/n;
end;
begin
for i:=1 to 3 do
begin
zap(n,a); sum(n,a,s,sr); writeln(s,' ',sr:6:2);
end;
end.
program z4;
var x,s,sum:real; n:integer;
procedure st(x:real; n:integer; var s:real);
var i:integer;
begin
s:=1;
for i:=1 to n do
s:=s*x;
end;
begin
readln(x);
st(x,5,s); sum:=s;
st(x,4,s); sum:=sum+s;
st(x,8,s); sum:=sum+s;
writeln(sum:15:2);
end.
1. Внесите изменение в программу для вычисления хk + хm +хn.
2. Вычислите х1 + х2 +х3+…+xn.