Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Все формальные параметры, которые не изображают результаты выполнения процедуры, рекомендуется объявлять в программах формальными параметрами-значениями.
Параметры-значения не обязательно имеют стандартный тип. Пусть, например, в программе описана константа n и регулярный тип Т: Т = аrrау[1..п] of real Для вычисления величин s =a12 +a22+…+аn2 и t=max( | a1|, |а2|,...., |аn|) может быть использована процедура procedure r(a: Т; va s, t: real); var i: integer; u: real; Begin s: =sqr(a[1]); t: =abs(a[1]); for i: =2 to n do Begin s: =s+sqr(a[i]); u: =abs(a[i]); if и > t then t: =u End End;
при обращении к этой процедуре с помощью оператора процедуры r(x, p, q); будет выполняться составной оператор Begin а: =х; p: =sqr(a[1]); q: =abs(a[1]); for i: =2 to n do Begin p: =p+sqr(a[i]); u: =abs(a[i]); if и > q then q: =u End End; В операторе присваивания a: =x левая и правая части являются переменными регулярного типа Т. ЗАДАЧИ Процедуры без параметров. Параметры - переменные
1. Какое из следующих описаний процедур без параметров составлено правильно, а какие - нет, и почему: procedure dis; d: =sqr(b) - 4*a*c; Procedure dis; var d: real; d: =sqr(b) - 4*a*c; Procedure dis; begin d: =sqr(b) - 4*a*c; end;
2. Рассмотрим два описания процедур без параметров: procedure F; procedure G; var x: real; var x, y, z: real; begin begin x: =y+z; x: =y+z; end; end; Один из операторов процедуры F или G не может быть выполнен ни при каких обстоятельствах, а другой - может в определенных случаях. Какой именно из операторов F и G и, в каких случаях может быть выполнен? Каковы последствия этого выполнения? 3. Для каждого из приведенных ниже описаний процедур сформулировать назначение соответствующей процедуры: А) procedure S(var х, y, z. real); begin z: = х + у end, б) procedure P(var х, у, z, t: real); begin z: = х+у; t: = х*у end; в) procedure C(var х, у, r: real; var р: integer); Begin if sqr(x) + sqr (у)< = sqr(r) then p: = 1 else p: =0 End;
4. Что будет выведено при выполнении следующей программы: Program Prog(output); var х, у, z: real; procedure P(var a, b: real); var г: real; Begin z: =a; a: =b; b: =z End; procedure Q(var a, b: real); Begin z: =a; a: =b; b: =z End; Begin x: =1.1; y: =2.2; z: =3.3; P(x, у); Writeln(x, у, z); х: =1.1; у: =2.2; z: =3.3; Q(х, у); Writeln(x, у, z); End; 5. Если в программе и в процедуре описана одна и та же переменная, то, какое из этих описаний имеет силу в процедуре? 6. Процедура описана следующим образом: procedure F(var х, у: integer); Begin x: =у End; Допустимо ли обращение к процедуре, имеющее вид F(a, b-1)? 7. Имеет место следующий интересный геометрический факт: если координаты вершин треугольника в прямоугольной системе координат равны, соответственно (х1, y1), (х2, y2), (х3, у3), то площадь этого треугольника равна 0.5|x1y2+x2y3+x3y1-x1y3-x2y1-x3y2| Используя этот факт, написать программу вычисления площади выпуклого четырехугольника ABCD (рис. 1), заданного координатами четырех вершин (хА, уA), (хB, уB), (xC, уC), (xD, yD) 8. Дано: натуральные n, m (n, m> 1), целые а1, …, an, b1,...bm, с1,.....с30. Получить 9. Дано: натуральные k, l, m, действительные x1, …, хк, y1,..., yt, z1,..., zm. Получить 10. Дано: натуральное к, действительные а1, …, a3n. Получить х+у2+z3, где x=а1a2…an y=аn+1an+2…a2n z= a2n+1a2n+2… a3n
|