Функции trunc, round в Pascal.

Для того чтобы в Паскаль можно было оперировать не только целыми числами, но и дробными существуют вещественные типы данных. Один из таких типов называется Real. В этом уроке мы рассмотрим 2 функции, которые производятся над дробными числами. Это ...

Логические операции с целыми числами.

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

Использование вложенного оператора If.

Условные операторы в Pascal можно вкладывать друг в друга. Для этого используется вложенный оператор IF. Рассмотрим это на примере программы, которая будет считать количество корней квадратного уравнения.

Циклы и массивы

Спецификация процедуры.

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

Сортировка простым включением и простым выбором.

Сортировка простым включением.
Пример 33. Методом простого включения упорядочить (отсортировать) в порядке возрастания массив из 8 целых чисел (44, 55,12,42, 94, 18, 06, 67).

Процедура Randomize используется в Паскаль для включения генератора случайных чисел. Функция Random определяет диапазон случайных чисел. Процедура Randomize и функция Random очень часто используются для демонстрации работы массивов в Паскаль.

Randomize и Random в Паскаль.


program massiv4;
uses crt;
var a:integer;
begin
clrscr;
randomize;
repeat
a:=random(1000);
writeln(a);
until a=256;
readln
end.

Строка №6. Инициализируем (включаем) генератор случайных чисел с помощью процедуры Randomize.

Строка №8. Присваиваем переменной «a» случайные числа в диапазоне от 0 до 999 (т.е. от 0 до 1000, но, не включая число 1000) с помощью функции Random. Т.е. запись (1000) означает, что все сгенерированные числа будут не меньше 0 и не больше 999. Предположим, что нам необходимо записать другой диапазон чисел, например от -1000 до 1000. В этом случае строка №8 будет иметь вид: a:= -1000 random(2001). Т.е. сначала записываем минимальное число диапазона (-1000), а в функции Random записываем сумму модуля минимального и максимального числа и прибавляем к ней 1. |-1000|+|1000|+1=2001. Таким образом, переменной «a» будут присвоены случайные числа в диапазоне от -1000 до 1000.

В строке №9 выводим сгенерированные числа на экран.

Строки №8 и №9 включены в цикл (строка №7 и №10). Случайные числа будут генерироваться и выводиться на экран до тех пор пока не выполнится условие цикла (строка №10), т.е. когда очередное сгенерированное число окажется числом 256.

randomize i random v pascal.

randomize i random v pascal..


Дополнение к материалу.

  • Если бы мы записали функцию Random без цикла (т.е. если убрать строки №7 и №10), то у нас будет сгенерировано только одно число и только оно будет выведено на экран.
  • Если убрать из программы процедуру Randomize (т.е. строку №6), то каждый раз при запуске программы у нас будут генерироваться одни и те же числа. Например, при первом запуске программы у нас сгенерировалось 50 случайных чисел. Последним числом оказалось число 256. Программа остановилась. Если закрыть программу, и запустить ее по новой, то у нас сгенерируются те же самые 50 чисел.
  • Строку «a:= -1000 random(2001)» можно записать и таким способом: «a:= random(2001) - 1000».
  • Если для функции Random не указывать диапазон (т.е. строку №8 записать как: a:=random, то переменной «a» будут присвоены случайные значения от 0 до 1, но не включая 1 (например, 0.3, 0.5, 0.9 и т.д.). В этом случае переменная «a» должна иметь не целый тип (integer), а вещественный тип (например, real).

Предыдущая статья : Использование массивов (продолжение).

Оглавление : Уроки Паскаль. Массивы.

Следующая статья : Нахождение максимального элемента массива.


Комментарии  

 
+8 # no name 28.01.2013 17:33
спасибо большое ;-)
 
 
-18 # Человек 30.01.2013 18:30
:sad: а у меня выдает оишбку на 8:10
 
 
-6 # Ангел хранитель 31.10.2014 07:42
У тебя, возможно, uses crt не прописан, или с ошибкой.
 
 
-9 # тимур 12.08.2016 08:12
помощь
var a1,b1,c1 :integer;
a,b,c :string;
begin
writeln ('Я придумаю число, а ты посторайся отгадать его');
a1:=random(100) ;
writeln(a1);

readln (b1);

end.
 
 
-6 # Степан 09.09.2017 06:20
Добрый день, помимо сказанного, вы в программе будете сначала выводить число, а потом только давать запрос на ввод предполагаемого , логичнее было бы поменять местами writeln(a1); и readln(b1);, так же возможно имеет смысл выводить предполагаемое число для сравнения результата
 
 
-4 # 007 01.03.2013 06:15
;-) spasiba
 
 
-7 # 1111 09.05.2013 06:53
спс буду знать ;-)
 
 
-20 # добрий человек 19.05.2013 16:38
другий спосіб працює randon(2001)-10 00, у першому всі числа від'ємні виходять
 
 
-6 # Федор 16.02.2014 11:30
ребята а есть у функции рандомайз или рандом. такая штука что бы сгенерированные числа не повторялись?
 
 
-4 # Chel 25.02.2014 12:42
randomize используется, чтобы числа не повторялись
 
 
-9 # сергей 27.12.2014 19:12
Федор имел ввиду чтобы небыло 4,8,2,4,5,4... то есть чтобы числа внутри не повторялись. Только для этого надо функцию описать, я так уже делал, когда генератор казино ляпал..
 
 
+1 # Program 25.02.2014 12:41
var a : integer;
begin
randomize; // используется, чтобы числа не повторялись
a := random(10);
writeln(a);
readln;
end;
 
 
-10 # Nobody 06.04.2014 14:37
Обязательно писать второй раз "randomize", если нужно, что бы ещё одно число было случайным¿¿¿
 
 
-6 # Kirill 15.04.2014 05:03
randomize и так генерирует все случайные числа, можно писать один раз.
 
 
-9 # Denis 13.11.2014 19:15
как сделать так чтобы эти случайные числа которые генерируются всегда были разными, а то у меня в задаче надо посчитать кол-во положительных чисел и при генерировании рандомных чисел генерируются часто по два или три или четыре (и так далее) одинаковых числа?
 
 
-4 # Casil 16.03.2018 13:08
Проверку сделать, если уже есть, число, сгенерировать другое.
 
 
-12 # Avov 18.11.2014 19:35
:D :lol: :-) Спс, на Информатеке пригодится
 
 
-5 # Avatar 01.04.2015 11:39
:D :D :D :D :D :D
 
 
-9 # LemonLite 26.04.2015 09:04
у меня тут проблема, я попытался написать программу чтоб получить массивы от 1 до 1000:
program mes5;
var mes:array[1..10 00]of integer;
i:integer;
begin
randomize;
repeat;
i:=random(1000);
writeln(random);
if i>mes[998] then
writeln('Элемен т ',i,' больший');
readln;
end.

я хочу найди больший массив только рандомным путем т.е программа мне выдаст рандомно числа и там пусть определит какой из них больший
 
 
-9 # влада 25.11.2015 13:40
с помощью генератора случайных чисел получить 8 чисел из диапазана от 0 до 15 и вывести на экран только нечетные из них
 
 
-2 # iehf 27.06.2016 05:48
:-) :-) :-)
 
 
-11 # шурА 27.06.2016 05:50
:lol: :lol: ПИДОРЫ
 
 
+3 # artue 15.03.2022 07:45
8)
 
 
+1 # хейтер 27.06.2016 09:58
:eek:
 
 
-3 # ИНКОГНИТО, БЛЯТЬ 27.06.2016 10:00
а я и не знал что так можно :oops:
 
 
-6 # Паранормальщик 29.06.2016 08:21
Я хотел алгоритм генерации чисел у функции random, а не саму функцию. И к тому-же есть переменная RandSeed по которой можно получать ряд тех-же чисел, если нет randomize.
 
 
-7 # ziros 13.07.2016 18:54
Рандом для слабаков! Пиши всё от руки! :lol:
 
 
+2 # artue 15.03.2022 07:58
согласен! ;-)
 
 
-3 # game 04.08.2016 19:44
Помогите, пожалуйста.

program game;
uses crt;
var d, i: string; x, y: integer;
begin

randomize;
x:=random(101);
y:=random(101);
writeln('хочешь поиграть?');
readln(d);
if d='да'
then writeln('загада й любое число от 0 до 100.');
writeln(' ');
writeln('это ', x, '?' );
readln(i);
if i='да'
then writeln('йехуу! да я же просто искуственный интеллект!')
else repeat
writeln('это ', a, '?' );
readln(i);
if i='да'
then writeln('йехуу! да я же просто искуственный интеллект!')
until i='да';

end.

как сделать, чтобы в цикле числа не повторялись?
 
 
-7 # Casil 16.03.2018 13:10
Проверку сделать сгенерированых, чисел, если есть, сгенеировать другое число.
 
 
-2 # Douglas 09.12.2016 15:26
Качественно написано, спасибо!
 
 
-8 # Антон 25.10.2017 16:17
А можно написать x,y := random
 
 
+1 # Serg 06.10.2021 09:15
function Random(maxValue : integer): integer; Возвращает случайное целое в диапазоне от 0 до max
 
 
-5 # Человек 28.10.2017 20:46
Подскажите у меня программа с рандомным расположением на экране x:=random(getma x);что делать если пишет ошибку?
 
 
-6 # AndroID 10.10.2018 01:36
У меня random(20,60) будет выдавать числа между 20 и 60. А при каждом перезапуске программы random выводит разные значения, а не одинаковые.
 
 
+1 # Serg 06.10.2021 09:15
function Random(maxValue : integer)
 
 
0 # dianz 09.03.2022 17:33
а что делает 10 строка?
 
 
-1 # спасибо. 15.03.2022 09:08
:lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:
 
 
-1 # Fernandez 15.03.2022 09:09
:lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:
 
 
0 # Шарпюзер 19.03.2022 21:58
А на шарпе как такое провернуть :sad:
 
 
+1 # Егорка 31.03.2022 13:33
Помогите
Я написал тест на везение но варианты:привил ьно, не правильно всегда
Под теми же цифрами, мне нужно чтобы они менялись
 
 
0 # Друзья 12.04.2022 06:20
Randomize Pascal
 
 
0 # Веник 06.12.2022 14:23
А как сделать так чтоб выдавалось случайное число которого нет в массиве?
 
 
-1 # Serg 12.12.2022 08:50
randomize(); // инициал. датчик случайных чисел (вызов стандартной процедуры)

n := 5; // сколько чисел выводить

for i := 1 to n do
begin
x := random(100) - 50; // из диапапоза она от -50 до 49
writeln(x); // печатаем значение
 
   ГлавнаяПаскальМассивы в ПаскальRandomize и Random в Pascal.