Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль_теория.doc
Скачиваний:
8
Добавлен:
08.11.2018
Размер:
341.5 Кб
Скачать

2. Практическая часть.

Задание 1. Наберите заданную программу, находящую значение выражения без использования стандартной функции модуля числа:

P rogram znachenie1;

Var

a,b,c,d,x,y:real;

procedure modul (z:real; var m:real);

var

begin

if z>=0 then m:=z else m:=-z;

end;

begin

read (x);

modul(sqr(x)+4*x-3,a);

modul(x-1,b);

modul(sqr(x)*x-7,c);

modul(sqr(x)*x-5*x+1,d);

if (x=1) or (x*x*-5*x+1=0) then

writeln (’'деление на 0’)

else begin

y:=a/b+c/d;

writeln(y:8:2);

end;

end.

Измените программу таким образом, чтобы она находила значение выражения:

З адание 2. Наберите заданную программу, выводящую наименьшее число из 5 произвольных.

Program bip;

Var

a,b,c,d,e,g,p,r,q:real;

procedure bid (x,y: real; var z: real);

var

begin

if x>y then z:=x else z:=y;

end;

begin

read(a,b,c,d,e);

bid(a,b,g);

bid(g,c,p);

bid(p,d,q);

bid(q,e,r);

writeln (r:6:2);

end.

Измените программу таким образом, чтобы она выводила наименьшее из шести чисел, введенных с клавиатуры.

Задание 3. Наберите заданную программу, которая просматривает каждое из 3 произвольных введенных с клавиатуры чисел и выводит на экран количество цифр того числа, у которого оно максимально.

Program cifri;

Var

a,b,c,d,e,g,: integer;

procedure bid (i,j,x,y: integer; var z: integer);

var

begin

if x>y then z:=x else z:=y;

end;

procedure kol (t: integer; var k: integer);

begin

k:=0;

while t>0 do

begin

k:=k+1;

t:=t div 10;

end;

end;

begin

read(a,b,c);

kol(a,d);

kol(b,e);

kol(c,g);

bid(d,e,m);

bid(m,g,l);

writeln (l);

end.

Измените программу таким образом, чтобы на экран выводилось само число с наибольшим количеством цифр.

3. Контрольные вопросы.

  1. Что такое подпрограмма?

  2. Для чего предназначены подпрограммы-процедуры?

  3. В чем различия между глобальными и локальными переменными?

  4. В чем различия между формальными и фактическими параметрами?

  5. Как осуществляется вызов процедуры?

Тема: “Подпрограммы-функции”

Цель: выработать навыки работы с подпрограммами-функциями, а также умения использовать их при решении задач.

План работы.

1. Повторить теорию.

2. Выполнить практическую часть на компьютере, записав ответы в тетрадь.

3. Ответить на контрольные вопросы. Ход работы.

  1. Теория.

Подпрограмма-функция предназначена для вычисления какого-либо параметра. У этой подпрограммы два отличия от процедуры.

Первое отличие функции в её заголовке.

Формат описания функции:

Function <имя функции>(<список формальных параметров>):<тип функции>;

Раздел описаний

Begin

Раздел операторов

End;

Раздел описаний функции может содержать подразделы: метки, константы, типы, переменные, процедуры и функции. Раздел описаний в процедуре может отсутствовать.

Второе отличие заключается в том, что в теле функции хотя бы один раз имени функции должно быть присвоено значение.

Для вызова функции из основной программы или другой подпрограммы следует выражение, где необходимо использовать значение функции, указать её имя со списком фактических параметров, которые должны совпадать по количеству и типам с формальными параметрами функции.

Задание 1. Наберите заданную программу, находящую значение выражения:

Program znachenie2;

Var

a,b,c,g,d,p,r,q:real;

function max (x,y: real);

var

begin

if x>y then max:=x else max:=y;

end;

function min (x,y: real);

var

begin

if x<y then min:=x else min:=y;

end;

begin

read(a,b,c);

if (max(a,c)<>0) and (min(a,b)<>0) then

d := min(min(a,b),c)/ max(a,c) + max(max(a,b),c)/ min(a,b)

else writeln (‘деление на ноль’);

writeln (d:8:2);

end.

И змените программу таким образом, чтобы она находила значение выражения:

Задание 2. Наберите заданную программу, находящую значение выражения (для трех натуральных чисел a,b,c, введенных с клавиатуры):

Program znachenie2;

Var

a,b,c:integer; d:real;

function nod (x,y: integer;) : integer;

begin

while x<>y do

if x>y then x:=x-y else y:=y-x;

nod:=x;

end;

begin

read(a,b,c);

d:=(nod(nod(a,b),c)/((a*c)div nod(a,c))+((b*c)div nod(b,c))/ ((a*b) div nod(a,b));

writeln (d:8:2);

end.

И змените программу таким образом, чтобы она находила значение выражения:

Задание 3. Наберите заданную программу, находящую значение выражения:

Program znachenie3;

Var

a,b,c:integer; d:real;

function fact (x: integer):integer;

var

I,p:integer;

begin

p:=1;

for I:=1 to x do

p:=p*I;

fact:=p;

end;

begin

read(a,b,c);

if (fact(c)<>0)and fact(b+c) then begin

d:= (fact(a)+fact(b))/fact(c) + fact(a)/fact(b+c)

writeln (d:8:2); end

else writeln(‘деление на ноль’);

end.

Измените программу таким образом, чтобы она находила значение выражения: