Часто приходится сталкиваться с циклическими вычислительными процессами, когда число повторений цикла неизвестно, а задано некоторое условие его окончания (или продолжения) для программной реализации таких вычислительных процессов в паскале существует 2 типа операторов. Оператор с предусловием и оператор цикла с постусловием.
довольно часто встречаются такие циклические процессы, когда число повторений цикла тоже неизвестно заранее, но при некоторых значениях исходных данных предусмотренные в цикле действия вообще не должны выполняться, и даже однократное выполнение этих действий может привести к неверным или неопределенным результатам.
Для задания подобного рода вычислительных процессов, когда число повторений цикла заранее неизвестно и действия, предусмотренные в цикле, могут вообще не выполняться, и служит оператор цикла с предусловием. Этот оператор цикла имеет в Паскале следующий вид:
While B do S,
где while (пока), do (делать, выполнять) – служебные слова, В – логическое выражение, S – оператор. Здесь оператор S выполняется ноль или более раз, но перед каждым очередным его выполнением вычисляется значение выражения В, и оператор S выполняется только в том случае, когда значение выражения В true. Выполнение оператора цикла завершается, когда выражение В впервые принимает значение false. Если это значение выражение В принимает при первом же его вычислении, то оператор S не выполнится ни разу.
Оператор цикла с постусловием используется в программе в случае, когда неизвестно количество повторений в цикле и оператор в цикле должен быть выполнен хотя бы один раз.
Оператор цикла с постусловием имеет следующую конструкцию:
RepeatUntil ;
Здесь: Repeat, Until — зарезервированные слова (повторять до тех пор, пока не будет выполнено условие);
— произвольная последовательность операторов Turbo Pascal;
— выражение логического типа.
Оператор Repeat … Until работает следующим образом. В начале выполняется тело цикла, после чего вычисляется логическое выражение следующее за словом Until, если результатом вычисления выражения является ЛОЖЬ, то операторы в теле цикла будут выполнены повторно. в противном случае, если логическое выражение имеет значение ИСТИНА, оператор цикла с постусловием прекратит свою работу.
При выполнении этого оператора цикла последовательность операторов, находящихся между словами repeat и until, выполнится один или более раз. Этот процесс завершается, когда после очередного выполнения заданной последовательности операторов логическое выражение В примет (впервые) значение true. Таким образом, с помощью логического выражения В задается условие завершения выполнения оператора цикла. Поскольку в данном случае проверка условия производится после выполнения последовательности операторов (тела цикла), этот оператор цикла и называется оператором цикла с постусловием. При составлении циклов с пред и пост условиями следует принимать во внимание следующее:
1. Перед каждым в т.ч. первым выполнением цикла условие его окончания (или продолжения) должно быть определено, т.е. должно иметь конкретное значение.
2. Тела цикла должно содержать хотя бы один оператор, влияющий на условие окончания (продолжения) иначе цикл будет выполняться бесконечно.
3. Условие окончания цикла должно быть в конце концов удовлетворено.
21) Массивы и их организация. Типы данных в массиве. Диапазон индекса. Одномерные массивы. Примеры.
Массив есть упорядоченный набор переменных одинакового типа. Каждая отдельная величина называется компонентой массива. Тип компонент может быть любым, принятым в языке Паскаль, кроме файлового типа. Тип компонент называется базовым типом. Каждая компонента может быть явно обозначена с помощью имени переменной-массива, за которым в квадратных скобках следует индекс. Их тип называется типом индекса. Время, требуемое для доступа любой компоненты, не зависит от значения индекса. Поэтому о массивах можно говорить как об объектах, структура которых допускает случайный (или прямой) доступ.
Переменная массивого типа описывается в разделе описания переменных в следующей форме:
var
: array[] of
Чаще всего в качестве типа индекса употребляется интервальный тип. Например, одномерный массив среднемесячных температур опишется так:
var
T: array[1..12] of real;
Описание массива определяет, во-первых, размещение массива в памяти, во-вторых, правила его дальнейшего употребления в программе. Последовательные элементы массива располагаются в последовательных ячейках памяти (T[1], T[2] и т.д.), причем значения индекса не должны выходить из диапазона 1…12. В качестве индекса может употребляться любое выражение соответствующего типа.
В качестве индекса может быть использовано выражение. Тип индексов может быть только интервальным или перечисляемым. Действительный и целый типы недопустимы. Индексы интервального типа, для которого базовым является целый тип, могут принимать отрицательные, нулевое и положительные значения.
В операторной части программы один массив может быть присвоен другому, если их типы идентичны.
Для ввода или вывода массива в список ввода или вывода помещается переменная с индексом, а операторы ввода или вывода выполняются в цикле.
Размерность массива. Самый простой способ упорядочения – это линейное. Любой элемент массива определяется его номером-индексом элемента. Т.к. индекс в данном случае один, то массивы с таким способом упорядочивания называются одномерными. В двумерных массивах данные располагаются не в одну линию, а в несколько: в таком случае необходимо задавать два индекса: номер строки и номер столбца.
Размер массива это диапазон изменения каждого индекса. Индексы могут быть не только целыми числами, но и величинами любого порядкового типа: символами, величинами перечисляемых чисел.
Одномерные массивы
Массивом называется совокупность данных, выполняющих аналогичные функции, и обозначаемая одним именем. Если за каждым элементом массива закреплен только один его порядковый номер, то такой массив называется линейным, или одномерным.
В математике часто используют многомерные массивы, т.е. массивы массивов. Особенно широкое распространение получили двумерные массивы. Такие массивы условно можно изобразить в виде таблицы. С информацией, представленной в виде таблицы, мы очень часто встречаемся в различных областях знаний — экономике, статистике, математике физике, химии и т.д.
Каждый элемент таблицы имеет два индекса, значения которых позволяют указать местоположение элемента (его координаты).
Первый индекс — это номер строки, который изменяется только с переходом на следующую строку; второй индекс _ номер столбца. При решении экономических, статистических задач очень часто информация заносится в таблицы, в информатике каждая таблица это тоже двумерный массив.
Про матрицу, имеющую m строк и n столбцов, говорят, что она имеет размер m*n.
Перемещаться по таблице мы можем, двигаясь по строке в этом случае индекс строки изменяется медленнее, чем индекс столбца, и, соответственно, по столбцу (индекс столбца будет изменяться медленнее, чем индекс строки).
При решении задач с использованием двумерных массивов во всех случаях (кроме некоторых частных) организуются вложенные циклы.
Перемещение по строке:
For i:=l to m do — внешний цикл, изменяется номер строки
For j:=l to n do — внутренний цикл, изменяется номер столбца
Перемещение по столбцу:
For j:=l to n do — внешний цикл, изменяется номер столбца
For i:=l to m do — внутренний цикл, изменяется номер строки
Создать такой массив не сложнее, чем одномерный. Вот пример:
var
Mas: Array[1..5, 1..5] of Integer;
Здесь создается двухмерный массив, размером в 5 строк и 5 столбцов. Сначала указывается количество строк, после — через запятую — количество столбцов.
Двумерный массив в Паскале трактуется как одномерный массив, тип элементов которого также является массивом (массив массивов). Положение элементов в двумерных массивах Паскаля описывается двумя индексами. Их можно представить в виде прямоугольной таблицы или матрицы.
Рассмотрим двумерный массив Паскаля размерностью 3*3, то есть в ней будет три строки, а в каждой строке по три элемента:
Каждый элемент имеет свой номер, как у одномерных массивов, но сейчас номер уже состоит из двух чисел – номера строки, в которой находится элемент, и номера столбца. Таким образом, номер элементопределяется пересечением строки и столбца. Например, a 21 – это элемент, стоящий во второй строке и в первом столбце.
Для заполнения, обработки и вывода элементов двумерного массива используется структура вложенного цикла с параметром.
Статьи к прочтению:
Урок 8.Цикл с постусловием
Похожие статьи:
-
Программирование алгоритмов циклической структуры.
Цель работы:изучить операторы цикла и приобрести практическиенавыки в программировании алгоритмов циклической структуры. Задание 1. Изучить операторы…
-
Алгоритмы циклической структуры
Алгоритмы, отдельные действия в которых многократно повторяются, называются алгоритмами циклической структуры (повторение). Совокупность действий…