Паскаль: точка повернення, підстановка аргументів, зберігання змінних, Детальна інформація
Паскаль: точка повернення, підстановка аргументів, зберігання змінних
З ним наша функція виглядає так:
function NextRand : integer;
const V : integer = 0; const m=1001; a=21; c=57;
begin
V := ( a*V+ c ) mod m; NextRand := V
end;
Як видно, першим псевдовипадковим числом завжди буде 0. Але в задачі було потрібно, щоб перше число надходило "із зовнішнього світу". Змінимо функцію так, що при виконанні її першого виклику відбувається запит на введення першого числа з клавіатури, а при наступних – обчислення за рекурентним співвідношенням:
function NextRand : integer;
const V : integer = 0; First : Boolean = true;
const m=1001; a=21; c=57;
function Rand1: integer;
var t : integer;
begin
write('Задайте ціле від 0 до ', m-1, '>'); readln(t);
Rand1 := t
end;
begin
if First then
begin First := false; V := Rand1 end
else V := ( a*V+ c ) mod m;
NextRand := V
end;
Тепер можна записувати цю функцію та її виклики в програмах, де потрібно імітувати появу випадкових чисел. Проте краще помістити цю функцію в модуль (п.7.2 ) з ім'ям, наприклад, Randoms, транслювати його та у програмі вказувати лише його використання: uses Randoms.
Використання модулів дозволяє розв'язати нашу задачу взагалі без використання локальних статичних змінних. Справа в тім, що змінні, означені в модулі, як і змінні програми, є статичними. Тому модуль можна записати в такому вигляді:
Unit Randoms;
Interface
function NextRand : integer;
Implementation
const m=1001; a=21; c=57; var V : integer; First : Boolean;
function Rand1: integer;
function NextRand : integer;
const V : integer = 0; const m=1001; a=21; c=57;
begin
V := ( a*V+ c ) mod m; NextRand := V
end;
Як видно, першим псевдовипадковим числом завжди буде 0. Але в задачі було потрібно, щоб перше число надходило "із зовнішнього світу". Змінимо функцію так, що при виконанні її першого виклику відбувається запит на введення першого числа з клавіатури, а при наступних – обчислення за рекурентним співвідношенням:
function NextRand : integer;
const V : integer = 0; First : Boolean = true;
const m=1001; a=21; c=57;
function Rand1: integer;
var t : integer;
begin
write('Задайте ціле від 0 до ', m-1, '>'); readln(t);
Rand1 := t
end;
begin
if First then
begin First := false; V := Rand1 end
else V := ( a*V+ c ) mod m;
NextRand := V
end;
Тепер можна записувати цю функцію та її виклики в програмах, де потрібно імітувати появу випадкових чисел. Проте краще помістити цю функцію в модуль (п.7.2 ) з ім'ям, наприклад, Randoms, транслювати його та у програмі вказувати лише його використання: uses Randoms.
Використання модулів дозволяє розв'язати нашу задачу взагалі без використання локальних статичних змінних. Справа в тім, що змінні, означені в модулі, як і змінні програми, є статичними. Тому модуль можна записати в такому вигляді:
Unit Randoms;
Interface
function NextRand : integer;
Implementation
const m=1001; a=21; c=57; var V : integer; First : Boolean;
function Rand1: integer;
The online video editor trusted by teams to make professional video in
minutes
© Referats, Inc · All rights reserved 2021