Главная » Просмотр файлов » В.Г. Абрамов, Н.П. Трифонов, Г.Н. Трифонова - Введение в язык Паскаль

В.Г. Абрамов, Н.П. Трифонов, Г.Н. Трифонова - Введение в язык Паскаль (1107618), страница 20

Файл №1107618 В.Г. Абрамов, Н.П. Трифонов, Г.Н. Трифонова - Введение в язык Паскаль (В.Г. Абрамов, Н.П. Трифонов, Г.Н. Трифонова - Введение в язык Паскаль) 20 страницаВ.Г. Абрамов, Н.П. Трифонов, Г.Н. Трифонова - Введение в язык Паскаль (1107618) страница 202019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 20)

Если же при выполнении (или невыполнении) заданного условия на самом деле надо выполнить некоторую последовательность операторов, то их надо объединить в единый,составной оператор. Если, например, при х < у надо поменять друг надруга значения этих переменных, то условный оператор, задающий указанное действие, можно записать в виде (г - i спомогательная вещественная переменная):if х<у then begin г:=х;х:=у;у:"Г end(решается ли поставленная задача с помощью оператораif х<у then begin х:=у;у:=>: endи если нет, то почему?).Конечно, можно не вводить в употребление два понятия, связанные сдвумя формами условного оператора, а определить этот оператор следующим образом:условный оператор.) : : =^-l f —> .логическое выражение!)—^-then —><оператор>С e l s e -^-(оперзторНаЛИЧИе сокращенной формы условного оператора требует большойосторожности при использовании условных операторов.

Например, условный оператор видаif В1 then if В2 then SI else S2допускает, вообще говоря, две разные трактовки: как полный условныйоператор видаif В1 then begin if В2 then SI end else S2и как сокращенный условный оператор видаif В1 then begin if В2 then SI else S2 endПо правилам паскаля имеет место вторая трактовка, т.е. считается,что каждый символ else соответствует первому предшествующему емусимволу then.

Для избежания возможных ошибок и недоразумений,связанных с отмеченным обстоятельством, можно порекомендовать вовсех подобных случаях четко выделять желаемую форму условного оператора путем взятия в операторные скобки оператор, предшествующийсимволу else, например:if d or b thenbegin if x<0 then x:=x endel sebegin if x<y then x:=x+0.5 else y:=y+0.5 end714.5.

Операторы циклаРассмотренные выше операторы задают явно все те операции, которыедолжны быть выполнены, причем каждая из этих операций выполняется не более одного раза. Поэтому ясно, что с помощью таких операторов можно задать лишь простейшие вычисления, а в этом случае эффектиспользования ЭВМ на самом деле ничтожен, потому что время, затрачиваемое на составление такой паскаль-программы, сравнимо со временем выполнения всех заданных операций Ьручную или с использованием простейших вычислительных средств типа карманного калькулятора.Кроме того, при решении подавляющего большинства практически решаемых задач - в том числе и весьма несложных — в программе практически невозможно задать в явном виде все операции, которые необходимовыполнить.

В самом деле, пусть в программе требуется предусмотретьвычисление суммы первых и членов гармонического ряда:у = 1 + 1/2 + 1/3+ . . . + 1/иОчевидно, что с использованием только рассмотренных выше типов операторов можно составить программу лишь для фиксированного значения и.Например, при п = 5 требуемые вычисления можно задать с помощью оператора присваиванияу := 1 + 1/2 + 1/3 + 1/4+ 1/5Если же значение п не фиксируется, а является исходным данным, вводимым в процессе выполнения программы (и даже константой, описаннойв программе), то аналогичный оператор присваивания записать невозможно, ибо запись видау := 1 + 1/2 + 1/3 + .

. . + 1/ина паскале недопустима по синтаксису (исполнитель паскаль-программы"не понимает", что означает многоточие). Впрочем, если значение п и фиксировано, но достаточно велико, то соответствующее арифметическое выражение окажется весьма громоздким. Для устранения возникающихздесь трудностей и служат операторы цикла.4.5.1. Оператор цикла с параметромВернемся к рассмотренной выше задаче вычисления суммы гармонического ряда, правила вычисления которой невозможно задать в виде арифметического выражения, если значение п заранее не фиксировано.На самом деле вычисление этой суммы можно осуществить по оченьпростому и компактному алгоритму: предварительно положим^ = 0 (с помощью оператора присваивания у := 0 ) , а затем выполним оператор присваивания у : = у + 1//" для последовательных значений /' = 1 , 2 , .

. . ,п. Прикаждом очередном выполнении этого оператора к текущему значению убудет прибавляться очередное слагаемое. Как видно, в этом случае процессвычислений будет носить циклический характер: оператор у := у + 1// должен выполняться многократно, т.е. циклически, при различных значениях/'.Этот пример циклического вычислительного процесса является весьматипичным; его характерные особенности состоят в том, что— число повторений цикла известно к началу его выполнения (в данномслучае оно равно значению и, которое предполагается заданным к этомувремени);72— управление циклом осуществляется с помощью переменной скалярного типа, которая в этом циклическом процессе принимает последовательные значения от заданного начального до заданного конечного значений(в нашем случае — это целочисленная переменная г, принимающая последовательные значения от 1 до и ) .Для компактного задания подобного рода вычислительных процессови служит оператор цикла с параметром. Чаще всего используется следующий вид этого оператора:for V: = E l to Е2 do Sгде for (для), to (увеличиваясь к) и do (выполнять, делать) — служебныеслова, V — переменная скалярного типа (кроме вещественного типа),называемая параметром цикла, E l , Е2 — выражения того же типа, чтои параметр цикла, S — оператор, называемый телом цикла.

Заметим, чтоналичие составного оператора позволяет задать в виде одного оператора Sлюбую последовательность операторов.Этот оператор цикла предусматривает присваивание параметру цикла Vпоследовательных значений от начального значения, равного значениювыражения Е1, до конечного значения, равного значению выражения Е2,и выполнение оператора S при каждом из значений параметра цикла V.При этом значения выражений Е1 и Е2 вычисляются один раз, при входев оператор цикла, а значение параметра цикла V не должно изменятьсяв результате выполнения оператора S.

Если заданное конечное значениеменьше начального (что допустимо) , то оператор S не выполняется ни разу.Таким образом, оператор цикла рассматриваемого вида эквивалентенследующей последовательности операторов (VH и VK — вспомогательныепеременные того же типа, что и параметр цикла V) :VH: = Е 1 ;ifVK: = Е 2 ;VH<VKbeginthenV:=VH;S; V:=SUCC(V);S;V: =succ(V);S;. .. ;V:=VK;SendВ паскале считается, что при нормальном завершении выполнения оператора цикла значение параметра цикла не определено Это связано с тем,что при сохранении семантики оператора цикла управление числом повторений можно реализовать различными способами.

Можно, например, послеочередного выполнения тела цикла проверять, не совпало ли текущеезначение параметра цикла с заданным его конечным значением: если нет,то изменять текущее значение параметра и повторно выполнять тело цикла;если да, то выполнение оператора цикла считать законченным. При такойреализации значение параметра цикла при выходе из цикла будет равнозаданному его конечному значению. Можно поступать и иначе — послеприсваивания параметру цикла его очередного (следующего по порядку)значения, но до выполнения тела цикла, проверять, не превзошло ли этозначение заданное конечное значение, и если да, то при этом значении параметра уже не выполнять тело цикла, а осуществлять выход из операторацикла.

В этом случае по выходе из цикла его параметр будет иметь значение, следующее за заданным конечным значением. Возможны и другиереализации. А поскольку на разных ЭВМ наиболее эффективными могут73оказаться различные реализации, то паскаль — для обеспечения возможности получения наиболее эффективных машинных программ - не фиксируеткакой-либо определенной реализации, и потому значение параметра циклапо завершении выполнения оператора цикла с параметром считается неопределенным.С использованием оператора цикла с параметром алгоритм вычислениясуммы гармонического ряда может быть задан следующим образом:у : =0;•for 1 :-•- 1 to n do y:=y+X/iУчитывая, что для целочисленной переменной i оператор присваиванияi: =succ(i) эквивалентен оператору i: =i + 1, приведенная выше последовательность операторов (присваивания и цикла) равносильна последовательности операторов видау : = 0 ; I н ; = 1; iK: = п;if iH < iK thenbegin i: = iH; у: = y + 1/i; i: = i + 1; у: = у + 1 / i .

. . . ; i: = i K ; у: = y + 1/i e n dВ некоторых случаях бывает удобно, чтобы параметр цикла принималпоследовательные, но не возрастающие, а убывающие значения. Для такихслучаев в паскале предусмотрен оператор цикла с параметром следующеговида:for V: = El downto Е2 do Sгде downto (уменьшаясь к) — служебное слово, а V, E l . Е2 и S имеютпрежний смысл. Оператор цикла такого вида эквивалентен последовательности операторов видаVH: = E L ;ifVK:VH>VK=Е2;thenbegin v: =VH, S; V: =pred(V); S; V: = p r e d ( V ) ; .

. . ; V: =VK; S endЗначение параметра цикла по завершении выполнения такого операторацикла также считается неопределенным. Заметим, что для целочисленногопараметра V оператор присваивания V : = pred(V) эквивалентен операторуприсваивания V: = V — 1.Таким образом, алгоритм суммирования гармонического ряда можнозадать и гак:у : =0;for i:=n d o w n t o1 do y:=y+l/iОтличие от предыдущего варианта алгоритма состоит лишь в том, чтоздесь слагаемые ряда будут вычисляться и учитываться, начиная с последнего слагаемого, т.е. с 1/п, и кончая первым слагаемым 1/1.Заметим, что параметр цикла может и не использоваться в теле цикла(т.е. в операторе S ) , так что основное его назначение — это управлениечислом повторений цикла. Например, значение у = хп, где п > 0 - целое,можно вычислить по следующему алгоритму: предварительно положить74у = 1, а затем ровно п раз домножить это значение на х:у: = 1;for i s — i tn n do y:=y*xКак видно, здесь параметр цикла i служит лишь для того, чтобы обеспечитьвыполнение оператора у: =у * х нужное число раз.4.5.2.

Оператор цикла с постусловиемОператор цикла с параметром обычно применяется в тех случаях, когдачисло повторений цикла известно к началу его выполнения. Однако частоэто число повторений заранее неизвестно, а определяется по ходу реализации этого циклического процесса.Рассмотрим, например, итерационный метод Ньютона извлечения квадратного корня, т.е. вычисление у = \/х с заданной точностью е > 0. Этотметод заключается в следующем Выбирается некоторое начальное приближение у =а затем находятся последующие приближения по рекуррентной формулеО + ( * / / « - i ) _ / « - i ) ) / 2 ( п = 1,2,...).Эту формулу можно представить в видеу(")1) + v(n- 1)где и(" ~= (х/у(" ~'' - у("~ ,,)/2 является поправкой к предыдущемуприближению.

Характеристики

Тип файла
PDF-файл
Размер
2,47 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6361
Авторов
на СтудИзбе
310
Средний доход
с одного платного файла
Обучение Подробнее