Мегаобучалка Главная | О нас | Обратная связь


Генератор случайных чисел



2015-12-04 683 Обсуждений (0)
Генератор случайных чисел 0.00 из 5.00 0 оценок




В Паскале существует встроенный генератор случайных чисел. Для его инициализации (установки случайного начального значения) используют процедуру Randomize без параметров.

Для получения случайного числа используют функцию Random. Обращение к ней: Random ( N ) , где N – целое число типа word. Функция возвращает случайное число

в диапазоне от 0 до N-1.

Если диапазон не указан (обращение к функции без параметра), то возвращается вещественное число в пределах от 0 до 1.

Примеры:

program р32;

Uses Crt;

Var k : integer;

begin

Randomize;

Writeln(‘ Cлучайные числа в диапазоне от 0 до 255’);

repeat

k := Random(256);

Write(k : 3, ' ');

until KeyPressed;

end.

В этом примере будут выводиться на экран случайные целые числа, пока вы не нажмёте какую-либо клавишу. В следующем примере аналогично будут выводиться действительные случайные числа.

program p33;

var

S : real;

begin

Randomize;

Writeln(‘ Cлучайные числа в диапазоне от 0 до 1’);

repeat

S := Random;

Write(S : 7 : 5, ' ');

until KeyPressed;

end.

Записи

Запись в Паскале относится к структурированным типам и в этом смысле отличается от массива только разнотипностью своих компонент, что позволяет использовать ее в качестве набора данных, описывающих некоторый объект. Например, при описании учащихся данного класса школы можно рассмотреть следующие индивидуальные характеристики отдельного ученика: фамилию, имя, месяц и число рождения, вес, рост, номер парты и т. д. Видно, что все данные об ученике разного типа. Действительно, фамилия, имя – строки; месяц, номер парты – целые числа; вес и рост – вещественные числа. Таким образом, для хранения информации об учащихся воспользоваться массивом практически невозможно. Но структурированный тип Record предназначен как раз для этого. При описании переменной - записи предварительно определяют идентификатор типа Record в разделе описания типов.

type

<идентификатор пользовательского типа> = record

<список 1 идентификаторов полей записи>: <тип полей>;

<список 2 идентификаторов полей записи>: <тип полей>;

………………………………………………………………

<список n идентификаторов полей записи>: <тип полей>;

end;

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

 

var

<список идентификаторов переменных>: record

<список 1 идентификаторов полей записи>: <тип полей>;

<список 2 идентификаторов полей записи>: <тип полей>;

………………………………………………………………

<список n идентификаторов полей записи>: <тип полей>;

end;

 

Запись может быть элементом массива. Такой массив называют массивом записей.

Примеры:

1)

type

child record

f, i: String;

m, d, n: integer;

x, v: Real;

end;

var

a, b, c: child;

 

2)

var

a, b, c: record

f, i: String;

in, d, n: integer;

r, v: Real;

end;

В примерах 1) и 2) переменные a, b, c в результате описания имеют один и тот же тип и структуру.

3)

type

Point = record

X, Y: Real;

end;

Vector = array[0.. 1] of Point;

Month = (Jan, Feb, Mar, Apr, May, Jun, Jly,

Aug, Sep, Oct, Nov, Dec);

Date= record

D: 1 . . 31;

M: Month;

Y: 1900 .. 1999;

end;

 

Доступ к конкретному полю записи осуществляется через идентификатор переменной - записи и идентификатор поля, которые разделяются точкой.

Примеры:

a.f

b.r

a. v

c.m

 

Переменные типа «запись» могут участвовать в операторах присваивания, но никакие операции над ними выполняться не могут. Арифметические или любые другие операции могут выполняться только над отдельными полями записи.

Примеры:

a . f := 'Иванов’ ;

a . i := 'Иван' ;

а . т := 12;

a . d := 23;

a . n : = 6 ;

a . r : = 1.78;

a . v := 63.5;

m: = m + a. r;

t:= а . r / a . v;

 

С целью облегчить выполнение многократных ссылок к полям одной записи используют оператор присоединения:

 

with <переменная-запись> do <оператор>;

 

Внутри оператора, входящего в оператор присоединения, компоненты записи обозначаются с помощью только имён полей (имя переменной-записи перед ними не указывается). Заголовок операторов может содержать список переменных-записей:

with <переменная-запись>{,<переменная-запись>} do <оператор>;

 

Пример (используем запись из приведённого выше примера):

1)

with a do

begin

f:=’Иванов’ ; n:=6; d:=23; r:=1.78; v:=63.5;

end;

2)

program p41;

{программа осуществляет ввод информации об учащихся класса, выводит на экран введенную информацию и отношение роста ученика к его массе}

const

n:= 30; {количество учеников в классе}

type

child = record {тип запись-информация об ученике}

f, i: String;

m, d, n: integer;

r, v: Real ;

end;

TKlass = array[1.. n] of child;{тип массивa - информация об учащихся класса}

Var

A: TKlass; {экземпляр массива}

i, nr: integer;

t: real;

begin

Write('Введите количество учеников – n , 0 < n < 30 ‘ );

Readln(nr);

{ввод данных}

for i:= 1 to nr do

begin

Writeln(' N ‘ , i) ;

Write('введите фамилию ');

Readln(A[i] . f);

Write('введите имя ');

Readln(A[i] . i);

Write('введите месяц рождения ');

Readln(A[i] . m);

Write('введите день рождения ');

Readln (A [i] .d);

Write('введите рост '); Readln(A[i].r);

Write('введите вес '); Readln(A[i].v);

Write('введите номер парты '}; Readln(A[i].n);

end;

{вывод на экран}

for i:= 1 to nr do

Writeln(i: 2, '/', A[i].f : 10, '/' , A[i].i : 10, '/' , A[i].d : 2,

'/' , A[i].m: 2, '/' , A[i].n : 2, '/ ' , A[i] . r : 4 : 1 , '/' ,

A[i].v: 4 : 1 , '/' , A[i] . r / A [i] .v : 6: 3) ;

end.

Множества

Множество относится к структурным типам данных. Тип «множество» задаёт интервал значений, который является множеством всех подмножеств базового типа. Базовый тип – это перечислимый тип, кроме word, integer, longint. Синтаксис определения типа множества:

 

<имя типа> = set of <базовый тип>;

Примеры:

Type

Tdigit = set of 0 .. 9;

Tsimv = set of ‘A’ .. ‘Z’ ;

Var

digit : Tdigit ;

simv : Tsimv;

 

Если переменная типа «множество» описана как set of 1 .. 3, то она может принимать следующие значения: (1, 2, 3), (1, 2), (1, 3), (2, 3), (1), (2), (3), ().

Размер множества равен числу компонент базового типа и может меняться от 0 до 256. Множество может быть пустым. В отличие от массивов, множества содержат переменное количество элементов, для которых порядок следования не важен.

Константы множественного типа записываются с помощью квадратных скобок и списка элементов в них.

Примеры:

Const

alpha = [‘A’ .. ‘Z’ , ‘a’ .. ‘z’ ];

empty = [] ;

digits = [ 0 .. 9] ;

 

Зарезервированное слово in для определения принадлежности элемента множеству:

if ch in alpha then …

В этом операторе выполняется проверка принадлежности элемента ch множеству alpha. Часто это гораздо проще, чем многократно сравнивать ch с некоторыми элементами.

Множества языка Паскаль обладают свойствами математических множеств. Над ними можно выполнять те же операции. Если S1 и S2 – константы или переменные множественного типа, то S1+ S2 будет их объединением, S1*S2 - пересечением, S1-S2 – разностью. Операции отношений = (равенство), <> (неравенство), <= (является подмножеством), >= (является надмножеством) к множествам применяются, а отношения строго включения < и > - не применяются.

Чтобы добавить в множество какой-либо элемент, можно добавить множество, состоящее из единственного элемента. Либо использовать процедуру include(S,a) , где S – множество, в которое добавляем, a – добавляемый элемент. Имеется и обратная процедура – exclude(S , a) - для исключения элемента из множества. Здесь параметры S и a имеют тот же смысл.

Пример:

program p43;

var

S: set of ‘A’ .. ‘Z’ ;

ch: char;

Begin

S := [ ];

ch := ‘A’;

repeat

S := S+[ch] ;

Inc(ch);

Until ch >= ‘Z’ ;

……………………..



2015-12-04 683 Обсуждений (0)
Генератор случайных чисел 0.00 из 5.00 0 оценок









Обсуждение в статье: Генератор случайных чисел

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение...
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...
Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (683)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.01 сек.)