Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Операторы циклов в Паскале. Структурные команды перехода.Содержание книги
Поиск на нашем сайте Оператор цикла Б программировании постоянно возникают задачи, требующие для своего реше- ния многократного повторения одной и той же последовательности действий или однообразной обработки однородных объемов информации (массивов). Напри- мер, когда требуется определить сумму всех элементов массива, найти его элемент с максимальным значением, вычислить квадраты всех элементов и так далее. В Паскале имеется несколько операторов, позволяющих организовать подобную работу наглядно и эффективно. Операторы, предназначенные для многократного (циклического) выполнения заданной последовательности команд, называются операторами цикла. Они всегда имеют заголовок цикла, определяющий число повто- рений, и тело цикла — повторяемое действие. Оператор цикла записывается так: for переменная-счетчик:= выражение-1 to выражение-2 do повторяемое-действие; Переменная-счетчик должна быть объявлена перед логическим блоком, в котором этот оператор расположен, то есть если оператор цикла используется внутри под- программы, то в качестве счетчика должна выступать локальная переменная. ЗАМЕЧАНИЕ Это сделано с целью максимально оптимизировать быстродействие оператора цикла, ориентированного на многократные интенсивные вычисления. Переменные-счетчики представляют собой, как правило, быстрые регистры процессора, а не обычные ячейки оперативной памяти. Первоначально, перед первым выполнением тела цикла, счетчик получает значе- ние, равное результату вычисления, выражен ия-1. Переменная-счетчик должна обя- зательно относиться к одному из перечислимых типов. Выражение-2 определяет конечное значение, по достижении которого счетчиком тело цикла будет выпол- нено в последний раз. После очередного выполнения тела цикла счетчик принимает значение, следующее за текущим (точнее, это будет значение, равное SuccQ от текущего). Затем выпол- няется проверка, не превышено ли конечное значение выражения-2 (значения и начального, и конечного выражений вычисляются только один раз перед первым выполнением тела цикла). Если оно превышено, то работа оператора цикла закан- чивается. В противном случае тело цикла выполняется еще раз. Рассмотрим пример подпрограммы, вычисляющей факториал числа N. Для этого требуется последовательно перемножить все числа от 1 до N. Наиболее компактно такие вычисления реализуются с помощью оператора цикла. function Factorialf N: integer ]: integer; var i, R: integer; begin if N <= 0 then begin Операторы 75 Result:= 0; Exit end; R:= 1; for i:= 1 to N do R:= R * i; Result:= R; end; Счетчик i будет последовательно принимать значения от 1 до значения параметра N, а s переменной R будет храниться промежуточное значение результата. Обратите внимание на условный оператор, который проверяет корректность значения параметра (оно должно быть положительным числом). Если значение параметра N меньше или равно нулю, то значение факториала принимается равным нулю без вычисле- ний, после чего происходит выход из подпрограммы с помощью процедуры Exit. В Паскале имеется еще одна форма записи оператора цикла. Она предназначена для использования в случаях, когда счетчик должен последовательно принимать не возрастающие, а убывающие значения. for счетчик:= выражение-1 downto выражение-2 do тело-цикла; Значение счетчика в этом случае будет не увеличиваться, а уменьшаться (как при вызове процедуры PredQ). Соответственно, необходимо, чтобы значение выраже- ния-2 было меньше значения выражения-1. Тип счетчика — не обязательно целое число. Это может быть, в частности, перечислимый тип. type TLoop = (MinVal, AveVal, MaxVal); var L: TLoop; Begin for L:= MinVal to MaxVal do Условный оператор цикла Оператор for удобно применять, когда заранее известно, сколько раз требуется выполнить тело цикла (например, при обработке всех элементов массива). Но в большом количестве задач цикл приходится выполнять неизвестное число раз. Это происходит, если вычисление значения функции заканчивается по достижении заданной точности, если выполнение операторов зависит от информации, введен- ной пользователем, если надо найти в массиве элемент с конкретным значением и так далее. В таких случаях правильнее использовать условный оператор цикла: while условие do тело-цикла; Тело цикла будет выполняться, пока истинно условие (логическое выражение, воз вращающее значение типа Boolean). В отличие от оператора for условие окончания цикла каждый раз вычисляется заново. Это позволяет гибко управлять числом повто- рений цикла. 76 Урок 1. Язык Delphi [Object Pascal] и его использование ВНИМАНИЕ Если перед выполнением оператора while значение условия рав- но False, тело цикла не будет выполнено ни разу. Допустим, надо написать программу, которая вычисляет факториал вводимого с клавиатуры числа, но делает это не один раз, а многократно — до тех пор, пока человек не введет число 0, служащее условным признаком завершения работы про- граммы. Используя ранее подготовленную подпрограмму Factorial, такую программу можно записать следующим образом: program Projectl; {SAPPTYPE CONSOLE} uses sysutils; / / здесь следует // описание подпрограммы Factorial var N: integer; begin N:= 1,- while N o 0 do begin ReadLn(N); WriteLnf Factorial (N)),- end; end. При выполнении тела цикла вводится начальное значение для вычисления факто- риала и печатается результат вызова функции Factorial(). Цикл повторяется до тех пор, пока введенное значение не окажется равным нулю, после чего работа про- граммы завершится. Первый оператор присваивания N :- \ нужен, чтобы войти в условный цикл (так как начальное значение переменной N не определено). ПОДСКАЗКА Надо внимательно следить за вычислением условия завершения. Если в случае с оператором for число повторений цикла известно компилятору заранее, то в случае с оператором while контроль завершения цикла полностью возлагается на программиста. Иногда оператор while может повторять тело цикла бесконечное число раз, что приводит к зацикливанию и ≪зависанию≫ программы.
|
||
|
Последнее изменение этой страницы: 2017-02-21; просмотров: 385; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.214 (0.009 с.) |