Пример расчёта значений функции KA4»E,HPA BbWHCJIHTEJIbHOH TEXHHKH METOAHHECKME YKA3AHHH K BWnOJIHEHHK) JIAEOPATOPHOH PAEOTM JV»73 «0praHH3auHH ijKKJiHHecKHX iiporpaMM Ha H3MKe Turbo-Pascal» n o Kypcy (BMMHCJIH TEJIbHAH TEXHHKA H nPOrPAMMHPOBAHHE» (fljist CTy^eHTOB Bcex ctiennajii>HOCTeft) y"TBep5KfleHO na 3accflaHHM MexoflH^ecKoro CoBera npoTOKOJi N? 4 ox 28.12.98r.  3.2-018 Методические указания к выполнению лабораторной работы 73 «Организация цик лических программ на языкеTurbo-Pascal» по курсу «Вычислительная техника и про граммирование» (для студентов всех специальностей) / Сост.: Хмелёв А.Г., Подгорная Н А , Потапова А.В. - Алчевск: ДГМИ,2002.- 18 с. Рассмотрены способы организации циклических программ на языкеTurbo-Pascal; приведены задания и требования к отчёту, а также сформулирован ряд вопросов для само проверки. Составители: Хмелёв А.Г., доц. Подгорная Н.А., ассист. Потапова А.В., ассист. Под общей редакцией доц. СИ. Зайцева ББК 3973.2-018 Методичш вказ1вки до виконаяня лабораторно! роботи 73 «Организация цшшчних програм на MOBI Turbo -Pascal» за курсом «Обчислювальна техтка i програмування» (для студмтв ycix спеталыюстей) / Укладачк Хмельов О.Г., Подгорна И.О., Потапова А.В. - Алчевськ: ДГМ1, 2002. -18 с. Розгляиуто засоби оргашзацп цикл<чних irpoi-рам наTurbo-Pascal;наведено завдання i вимоги до звггу, а також сформульоваггий ряд нитань для самоперевтрки. Укладач1 Хмельов О.Г., доц. Подгорна И.О., асист. Потапова А.В., асист. ГОд загальною редакцию доц. C.I. Зайцева  СОДЕРЖАНИЕ 1. Основные понятия 4 2. Виды циклических конструкций 4 2. 1.Цикл со счетчиком 4 2. 2. Цикл, работающий до выполнения некоторого условия 5 3. Примеры циклических программ 6 3. 1. Пример расчёта значений функции 7 3.2. Задачи вычисления сумм, произведений, и подсчета количества элементов 7 4. Сложные циклы 11 Вопросы для самоконтроля 13 СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ 13 Задание для выполнения лабораторной работы 14  Цель работы: ознакомиться с понятием циклической программы, изучить основные конструкции циклических операторов, освоить ос новные типы циклических программ. Основные понятия Под циклом понимают многократное повторение одного или не скольких операторов. Программы, включающие в себя цикл, называются циклическими программами. По принципу организации циклы делятся на две группы: 1) «перечисляемые циклы» или «.циклы со счетчиком». 2) «циклы с условиями». Под счетчиком цикла в Турбо Паскале понимается порядковая пере менная целого типа. Примером задачи первого типа может служить задача: Вывести на экран все натуральные числа от 1 до 45. Обозначим счетчик цикла через "к", тогда условие можно записать в виде, 1<к<45,: Лк=Т, где : Ак -- шаг. Пример задачи второго типа: Производить суммирование произвольных чисел, вводимых с клавиа туры до тех пор, пока сумма не превысит числа 2750. Эта задача, работает до выполнения некоторого условия. Если для суммы введем обозначениеsum,то условие будет иметь вид:sum<2750. 2. Виды циклических конструкций Цикл со счетчиком Эта конструкция имеет вид: FOR...TO(DOWNTO)...DO оператор, то есть можно использовать два онера- тора: FOR...TO...DO, FOR...DOWNTO...DO. В первом операторе после ключевого слова FOR указывается имя па раметра цикла (счетчик):-начальное значение параметра цикла. После ключевого слова ТО указывается конечное значение параметра цикла, с достижением которого повторение цикла будет прекращено. Шаг изменения счетчика цикла в этом операторе равен единице. Конструкция FOR...DOWNTO...DO обеспечиваег убывание счетчика цикла на единицу (шаг равен "-1")  За ключевым словом DO записывается оператор или группа операто ров, заключенных в группу Begin...End, которые будут многократно повто- ряться (тело цикла). Таким образом синтаксис команды следующий: For счётчик: ^началоto конец do цикл на возрастание переменной тело цикла; счётчик (начало < конец шаг^Т). For счётчик:=начешоdownto конец do цикл на убывание переменной тело цикла; счётчик (начало > конед шаг--1). Примечание: переменная счётчик должна быть целого типа: ТИП ДИАПАЗОН Shortint (-128 .. 127) Integer (-32768 .. 32767) Longint (-2147483648 .. 2147483647) Byte (0..255) Word (0..65535). Например, для задачи, требующей вывести на экран вес натуральные числа от 1 до 45, оператор цикла будет иметь вид: F 0 R K : = 1 T 0 4 5 D 0 WRl'l'ELN (' ',К); Применение оператора: FOR К - 4 5 DOWNTO 1 DO WRITTEN (' ',К); обеспечивает вывод на экран чисел от 45 до 1. 2.2. Цикл, работающий до выполнения некоторого условия Первая такая конструкция имеет вид: REPEAT...UNTIL. (Цикл с постусловием). После ключевого слова REPEAT записывается оператор или группа операторов, которые должны быть повторены многократно, а за ключевым словом UNTIL - условие, до выполнения которого работает цикл. Таким образом синтаксис команды следующий: repeat цикл на однократное или многократное вы тело цикла; полнение оператора(ов) до тех пор, пока усло until условие выхода; вие выхода ложно.  Надо отметить, что в этой конструкции нет необходимости использо вать операторные скобки begin...end для группы операторов. Для решения задачи вывода на экран натуральных чисел от 1 до 45 оператор имеет вид: К:=1; REPEAT WRITELN ('', К); К:=К+1; -UNTIL К>45; В этом случае, до оператора цикла мы определяем начальное значе ние переменной К, а внутри цикла предусматриваем увеличение переменной К на единицу (k:=k+l). Цикл завершает работу когда К станет больше 45. Вторая конструкция оператора цикла имеет вид: WHILE ... DO ... (цикл с предусловием). В этом случае за ключевым словом WHILE записывается условие. Цикл повторяется до тех пор, пока условие выполняется. За ключевым словом DO записывается оператор или группа операто ров, заключенных в операторные скобки Begin...End, которые повторяются многократно. Таким образом синтаксис команды следующий: While условие повтора do цикл на повторение оператора(ов) до тех пор, тело цикла; пока условие повтора истинно. Примечание: если при первой же проверке условие не выполняется, то операторы, составляющие тело цикла не будут выполнены ни разу. Для рассматриваемой выше задачи оператор примет вид: К:=1; WHILE K<45 DO BEGIN WRITELN (*", К); КНК+1; END; Как видно, для решения любой циклической программы можно ис пользовать любую из трех рассмотренных циклических конструкций. 3. Примеры циклических программ К типовым задачам организации циклов относятся задачи следующих видов:  Пример расчёта значений функции Вычислить значения у = sin(a + b), z = ^b если а -- ><Ь<2,4ЛЬ=0,6. Смысл данной задачи сводится к тому, что надо определить и вывести на экран значения переменных у и z при постоянном значении а. При этом b будет последовательно принимать значения -0,5; 0,1; 0,7; 1,3; 1,9. Эти значения получаются, начиная от начального (-0,5), прибавлени ем к предыдущему шага (0,6) до конечного значения (2,4). Для реализации этой задачи можно использовать конструкцию Repeat Д. until, поскольку переменная цикла является вещественной. Алгоритм решения этой задачи имеет вид: PROGRAM N1; ( Начало J VAR Л -А A,B,Y,Z: REAL; 6 = -0,5 BEGIN Т A:=0.42; B:.=-0.5; У ,2 REPEAT 1 , Y:=SIN(A+B) I 4 1 1 = ь(0,6 | Z:=SQRT(ABS(A-B)); WRITELN ('У=',Y:30:3,.' ,Z:10:3) b > 2 , 4 > ~ - B:=B+0.6; UNTIL B>2.4; END. Конец J ( Описание алгоритма: В блоке 2 переменной b присваивается значение - 0,5. В блоке 3 начинается цикл по переменной b и вычисляются значения переменных у и z . В блоке 4 вычисляется выполняется приращение переменной b В блоке 5 завершается цикл с постусловием. 3. 2. Задачи вычисления сумм, произведений, и подсчета количе Ства элементов 3.2.1. В машину вводится п произвольных чисел. Подсчитать их сумму. Здесь удобно использовать конструкцию FOR...TO...DO, поскольку  количество повторений фиксировано, а переменная цикла имеет целочис ленный тип. Рассмотрим алгоритм и программу решения этой задачи: Начало / ввод я / PROGRAM N2; VAR . * ( K=l,« ) 1 BEGIN /7 WRITE ('Введите количество чисел - N ^ ' ) ; /вводл / READLN (N); S:=0; I . FOR K:=l TO N DO s-s + x BEGIN WRITE ('Введите число Х='); READLN (X) ; J ВЫВОД S j 5:-S+X; END; ( Конец " WRITELN ('Сумма-',S:10:3); END. Описание алгоритма. В блоке 2 предусмотрен ввод количества чисел, которые предполага ется ввести — п. В блоке 3 организован цикл по переменной к, изменяющейся от 1 до п с шагом 1. В блоке 4 вводим значение числа и присваиваем его переменной X. В блоке 5 накапливаем сумму значений X с помощью формулы S=S+X. В этой формуле S, стоящие справа от знака = , предыдущее значение, а слева - последующее. Этот блок является последним в цикле. В блоке 7, который выполняется после завершения работы цикла, вы численное значение суммы — S выводится на экран.  3. 2.2. Найти произведение четных чисел натурального ряда (2, 4, 6....), вычисление завершить, когда величина произведения станет больше числа 3700. В данной задаче удобнее использовать одну из двух конструкций REPEAT...UNTIL или WHILE...DO, которые обеспечивают повторение цикла до выполне ния некоторого условия (Р<3700). Воспользуемся конструкцией WHILE...DO, и составим алгоритм и программу peiпения задачи. PROGRAM N3; Начало VAR К: INTEGER; Р: REAL; / -7 BEGXN; • ( пока Р<3700 ) п Р:-] ; 1 . К: =2 ; р = рк WHILE P<37 00 DO к = к + 2 BEGIN; _ ( Р:=Р*К; К:=К+2; / вывод Р I END; — ^ * Л WRITELN ('ПРОИЗВЕДЕНИЕ;-', Р:10:3); Конец END. Описание алгоритма В блоке 2 присваиваем переменной, в которой будем накапливать произведение начальное значение — 1, а переменной К присваиваем первое четное натуральное число — 2. В блоке 3 организуем цикл, который будет повторятся до тех пор, по ка Р<3 700. В блоке 4 накапливаем произведение значений К, используя рекур рентную формулу Р=Р*К и формируем следующее четное число по формуле К"-К+2. Этот блок является последним в цикле. R ftrmve 5 который выполняется после завершения заботы никла нн экран выводится вычисленное значение произведения.  Примечание I. Рекуррентными называют такие формулы, в которых каждое после дующее значение получается из предыдущего, например: S:=S+K. Особенностью этих формул является то, что справа и слева от знака присваивания стоит одна и также переменная S. Та, что стоит слева от знака :~, называется последующим значением, а та, которая справа —предыдущим. 3. 2.3. С клавиатуры вводятся произвольные числа. Признаком за вершения работы является ввод числа 77777. Подсчитать количество введен ных чисел. Для решения этой задачи воспользуемся конструкцией REPEAT...IJNTIL. Для подсчета количества чисел воспользуемся тем же принципом, что и для подсчета суммы, но только суммировать будем единицы и тип пере менной будет целым. Составим алгоритм и программу решения задачи. PROGRAM N4; VAR X: REAL; К: INTEGER; BEGIN К:=0; REPEAT WRITE ('ВВЕДИТЕ Х = ' ) ; READLN (X); , K;~K+]; UNTIL X -mill; WRTTELN ('Количество чисел =',К); Г ~N { Конец 1 END. Описание алгоритма. В блоке 2 производим очистку переменной К. В блоке 3 вводится очередное значение переменной X. В блоке 4 количеству К прибавляется единица. Этот оператор являет ся последним в цикле. В блоке 5, выполняется проверка условия завершения цикла (Х=77777).  4. Сложные циклы К сложным циклическим относятся задачи, в которых изменяется не сколько переменных, входящих в одно и тоже выражение, например." Р = 2cos(ax) + е, где 0,5<а<2,5; Ла=0,3и - 0 , 4 < х < 3 , 6 ; Лх=0,6. Здесь с заданным шагом и в заданном интервале изменяется две пе ременныеа и х , и они входят в формулу для вычисления Р. В таких задачах циклы делятся на внешний и внутренний. Какой цикл принимать за внешний может быть специально оговорено в условии задачи. Если это не сделано, как в нашем случае, то выбор делает ся произвольно. Выберем переменнуюа за переменную внешнего цикла, а х за пере- мешгую внутреннего цикла. При составлении алгоритма следует помнить, что внешний цикл от крывается первым, а закрывается последним. Иными словами, если это представить структурно, то внутренний цикл должен полиостью располагаться внутри внешнего. Начало цикла по А Начало цикла по X Конец цикла по X Конец цикла по А Для реализации этой задачи удобно использовать конструкцииRepeat . until илиWhile ... do ... , поскольку переменные цикла являются вещест венными. Порядок вычислений будет следующий: первый раз при Аг4),5 в Р бу дут последовательно подставляться все значения X (8 значений), второй раз при А=0,8 в Р будут последовательно подставляться вес значения X (8 значений), третий раз при А=1,1 в Р будут последовательно подставляться все значения X (8 значений), и т.д. седьмой раз при А~1,1 в Р будут последовательно подставляться все значения X (8 значений). Составим алгоритм и программу решения данной задачи:  PROGRAM N 5 ; f Начало J VAR 1 т P , A , X : R E A L ; Л.Х B E G I N A : - = 0 . 5 ; *пока а < 2,5 WHILE h<=2.b DO BEGIN пока x < 3,6 X:=-0.4; WHILE X<-3.6 DO BEGIN P:=2*COS(A*X)+EXP(l) ; WRITELN('A=',A:4:1,' X=',X:4:1, вывод р ' P=',P:10:3); X:-X+0.6; ( Конец J END; A:=A+0.3; END; END. Описание алгоритма: В блоке 3 организуем внешний цикл по А. В блоке 4 организуем внутренний цикл по X. В блоке 5 вычисляем значение Р. В блоке 6 выводим значения А, X и Р на экран. Этот блок является последним как во внутреннем, так и во внешнем циклах. В этой пр01рамме группа операторов заключенных в операторные скобки BEGIN...END для каждого оператора WHILE повторяется до тех пор, пока выполняется условие заданное в этом операторе. Как только усло вие не выполнится машина переходит на оператор следующий за оператором end соответствующей операторной скобки. Перед каждым оператором цикла WHILE переменной цикла при сваивается ее начальное значение: А:=0.5 и Х:=-0.4. Перед концом цикла, переменная цикла увеличивается на величину шага Х:=Х+0.6 и А:=А+0.5. Примечание. В программе могут быть организованы циклы по трем и более переменным, но всегда надо помнить о принципе вложенности циклов  Цикл 1 начало Цикл 2 начало И т.д. Цикл 6 начало Цикл 6 конец Цикл 2 конец Цикл 1 конец Вопросы для самоконтроля 1. Что такое цикл? 2. Какие группы циклов Вы знаете? 3. Что такое параметр цикла? 4. Какие циклические конструкции Вы знаете? 5. В чем разница между конструкциям FOR...TO...D и O и FOR...DOWNTO...DO? 6. В чем различие между конструкциямиREPEAT...TJNT1L и WHILE...DO? 7. В каких случаях применяются конструкции перечисленные в пунк те 6? 8. Чем отличается вычисления суммы от вычисления произведения? 9. Что такое сложный цикл? СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ 1.Турбо Паскаль 7.0. К.:Торгово-издательскре бюро BHV, 1996. - 448 с. 2. Нпанешников А., Епанепшиков В. Программирование в среде Turbo Pascal 7.0. - М: Диалог-МИФИ, 1993. - 288 с. 3. Зуев Е.А. Язык программирования Turbo Pascal 6.0. М.: Унитех, 1992.-298 с. 4. Зубов B.C. Программируем на языке TURBO PASCAL (версии 6.0 и 7.0). Изд. 2-е, перераб. и доп. - М.: Информационно-издательский дом "Фигиг5-1" 1007 » 420 С 5. Марченко А.И., Марченко Л.А. Программирование в среде Borland Pascal 7.0: Под ред. Тарасенко В.П. - К.: ЮНИОР, 1996. - 479 с.  6. Мизрохи С В . TURBO PASCAL и объектно-ориентированное про граммирование. - М: Финансы и статистика, 1992. - 192 с. |