- •59. Модули
- •58. Процедуры и функции пользователя
- •56. Операторы цикла с предусловием (while)
- •52. Оператор безусловного перехода
- •49. Для обмена информацией между пользователем и пк все данные организуются в файлы.
- •48. Процедуры и функции для работы с типизированными файлами.
- •47. Типизированные файлы
- •46. Файлы
- •43. Объединение разнородных элементов (Запись)
- •42. Типы данных
- •41. Определение множества
- •40. Множество — тип и структура данных в информатике, является реализацией математического объекта множество.
- •35. Одномерные массивы. Формирование и вывод одномерных массивов
- •30. Символьный тип
- •29. Арифметические операции
- •28. Вещественный тип данных
- •25. Раздел описания констант в языке Турбо Паскаль
- •23. Структура программы на языке Pascal
- •22. Понятие языка программирования
41. Определение множества
Математическим анализом называется раздел математики, занимающийся исследованием функций на основе идеи бесконечно малой функции.
Основными понятиями математического анализа являются величина, множество, функция, бесконечно малая функция, предел, производная, интеграл.
Величиной называется все что может быть измерено и выражено числом.
Множеством называется совокупность некоторых элементов, объединенных каким-либо общим признаком. Элементами множества могут быть числа, фигуры, предметы, понятия и т.п.
Множества обозначаются прописными буквами, а элементы множество строчными буквами. Элементы множеств заключаются в фигурные скобки.
Если элемент x принадлежит множеству X, то записывают x ∈ Х (∈ — принадлежит). Если множество А является частью множества В, то записывают А ⊂ В (⊂ — содержится).
Множество может быть задано одним из двух способов: перечислением и с помощью определяющего свойства.
Например, перечислением заданы следующие множества:
А={1,2,3,5,7} — множество чисел
Х={x1,x2,...,xn} — множество некоторых элементов x1,x2,...,xn
N={1,2,...,n} — множество натуральных чисел
Z={0,±1,±2,...,±n} — множество целых чисел
Множество (-∞;+∞) называется числовой прямой, а любое число — точкой этой прямой. Пусть a — произвольная точка числовой прямой иδ — положительное число. Интервал (a-δ; a+δ) называется δ-окрестностью точки а.
Множество Х ограничено сверху (снизу), если существует такое число c, что для любого x ∈ X выполняется неравенство x≤с (x≥c). Число с в этом случае называется верхней(нижней) гранью множества Х. Множество, ограниченное и сверху и снизу, называется ограниченным. Наименьшая (наибольшая) из верхних (нижних) граней множества называется точной верхней (нижней) гранью этого множества.
40. Множество — тип и структура данных в информатике, является реализацией математического объекта множество.
Данные типа множество позволяют хранить ограниченное число значений определённого типа без определённого порядка. Повторение значений, как правило, недопустимо. За исключением того, что множество в программировании конечно, оно в общем соответствует концепции математического множества. Для этого типа в языках программирования обычно предусмотрены стандартные операции над множествами.
В зависимости от идеологии, разные языки программирования рассматривают множество как простой или сложный тип данных.
Реализации
Множество в Паскале
В языке Паскаль множество — составной тип данных, хранящий информацию о присутствии в множестве объектов любого счетного типа. Мощность этого типа определяет размер множества — 1 бит на элемент. В Turbo Pascal есть ограничение на 256 элементов, в некоторых других реализациях это ограничение ослаблено.
Пример работы с множествами:
type
{определяем базовые для множеств перечислимый тип и тип-диапазон}
colors = (red,green,blue);
smallnumbers = 0..10;
{определяем множества из наших типов}
colorset = set of colors;
numberset = set of smallnumbers;
{можно и не задавать тип отдельно}
anothernumberset = set of 0..20;
{объявляем переменные типа множеств}
var nset1,nset2,nset3:numberset;
cset:colorset;
begin
nset1 := [0,2,4,6,8,10]; {задаем в виде конструктора множества}
cset := [reb,blue]; {простым перечислением элементов}
nset2 := [1,3,9,7,5]; {порядок перечисления неважен}
nset3 := []; {пустое множество}
nset1 := [0..5]; {возможно задавать элементы диапазоном}
nset3 := nset1 + nset2; {объединение}
nset3 := nset1 * nset2; {пересечение}
nset3 := nset1 - nset2; {разность}
if (5 in nset2) or {проверка на вхождение элемента}
(green in cset) then
...
end;
39. Перестановка элементов массива
Перестановка двух элементов
Пример 14
Поменять местами два элемента массива А с заданными координатами (номерами строки и столбца).
Решение
Можно эту задачу решить несколькими способами.
Способ 1 - по аналогии с перестановкой в одномерном массиве, когда в процедуру передаются индексы элементов и массивов, в котором надо их поменять. Тогда процедура может быть такой:
Procedure Swap1(k1, l1, k2, l2: Integer; Var x: dmyarray); Var c : Integer; Begin c:=x[k1,l1]; x[k1,l1]:=x[k2,l2]; x[k2,l2]:=x; End;
Способ 2. Вспомним процедуру Swap, которая меняет местами значения двух целых переменных.
Procedure Swap(Var x, y: Integer); Var z : Integer; Begin z:=x; x:=y; y:=z; End;
А теперь обратимся к ней, передавая данные элементы: Swap(A[k1,l1], A[k2,l2]).
Рассмотрим задачу о перестановке двух столбцов(строк), так как многие задачи используют это действие.
Пример 15
Поменять местами столбцы с номерами 11 и 12.
Эту задачу также можно реализовать несколькими способами. Мы составим процедуру. Ей будем отправлять номера этих столбцов и массив, в котором надо выполнить это действие. Кроме того, добавим проверку корректности ввода данных номеров, так как если столбца с данным номером нет, то и переставлять ничего не надо. В самой процедуре можно использовать любую из процедур примера 1, например Swap.
Procedure Swap2(l1, l2: Integer; Var x: dmyarray); Var i : Integer; Begin If ((l1<1) Or (l1>m)) Or ((l2<1) Or (l2>m)) Then Writeln ('Ввод неправильный') Else For i:=1 To m Do Swap(x[i,l1], x[i,l2]); End;
Если применять первую - Swap1, то после проверки правильности ввода данных будет такое обращение:
For i := 1 To m Do Swap1(i, l1, i, l2,x)
37. Под обработкой массива будем понимать задачи нахождения с учетом некоторых условий суммы, произведения, количества элементов, минимального, максимального элемента массива, сортировка массивов по возрастанию и убыванию и др. аналогичные задачи. Для отладки программ с массивами часто удобно использовать генераторы случайных чисел. Рассмотрим это на примерах.
36. ак и было обещано в статье об одномерном массиве, сегодня я затрону тему внесения данных в массив т.е заполнение массива. В паскале заполнение массива имеет некоторые особенности. Что здесь самое главное и что нужно заполнить? При произведении операций с элементами массива массив нельзя рассматривать как нечто целое. То есть ,например,если вы хотите заполнить массив информацией,то придется вносить данные для каждого элемента массива отдельно. Гораздо проще это реализовать в цикле. Способов внесения несколько,но для каждого используется цикл. Теперь собственно сам код
?
1 2 3 4 5 |
var a:array [1..10] of integer;i:integer; begin for i:=1 to 10 do readln(a[i]); end. |
Сейчас вы увидели самый простой способ заполнения одномерного массива,а именно ввод через клавиатуру. Я не говорю,что этот способ самый эффективный, отнюдь нет. Представьте ,что необходимо произвести заполнение массива , состоящего из 1000 и более элементов. Вбивать каждый с клавиатуры будет естественно глупо и нерационально. Гораздо проще взять данные из другого массива или из файла. Ниже показано как заполнить массив код присвоением элементов одного массива другим элементам второго массива.
?
1 2 3 4 5 |
var a,b:array [1..10] of integer;i:integer; begin for i:=1 to 10 do a[i]:=b[i]; end. |
Уже лучше не правда ли? Не надо пользоваться клавиатурой и набирать каждый элемент. Однако еще проще произвести заполнение массива , взяв данные из файла. Подробнее об операциях с файлами я расскажу в отдельном уроке ,а пока простой пример того, как заполнить массив из файла.
?
1 2 3 4 5 6 7 |
var a:array [1..10] of integer; f:text; btgin assign (f,'primer.txt'); reset(f); for i:=1 to 10 do readln(f,a[i]); end. |
Можно добавить вывод заполненного массива на экран,тогда надо в цикл добавить строчку
?
1 |
write(a[i]); |
