Генератор случайных чисел
В Паскале существует встроенный генератор случайных чисел. Для его инициализации (установки случайного начального значения) используют процедуру 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-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (683)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |