II. Самостоятельная работа Программирование алгоритмов циклической структуры на языке Турбо Паскаль. Простые циклы Продолжительность: 80 мин. Цель: Изучить процесс построения алгоритмов циклической структуры. Научиться составлять программы, организующие циклические вычисления на языке Турбо Паскаль. Результат обучения: После успешного завершения занятия пользователь должен: · уметь составлять алгоритмы циклической структуры; · знать синтаксис операторов Repeat … Until, While … Do, For … To … Do; · уметь использовать эти операторы при организации циклов в программах; Используемые программы: ИСР - TURBO PASCAL 7.0. План занятия: I. Работа под руководством преподавателя. Изучение организации циклических вычислений на примерах. 20 минут II.Самостоятельная работа 60 минут ЗАПУСК ПРОГРАММЫ: Предполагается, что требуемые программы уже инсталлированы на диске. (См. «Инструкцию по установке программы на ПК») I. Изучение организации циклических вычислений на примерах. Рекомендуемое время Минут Цикл — типичная структура, характерная для программ, реализуемых на ЭВМ. Возможны три способа организации циклических структур алгоритмов:  Тело цикла — это повторяющаяся последовательность действий. Логический блок предназначен для управления циклом. Логический блок определяет количество проходов в цикле. В цикле «До» условие окончания цикла расположено после тела цикла. Это означает, что тело цикла выполниться хотя бы один раз. В цикле «Пока» условие окончания цикла расположено до тела цикла, поэтому возможны варианты, когда цикл не выполнится ни разу. В Паскале эти структуры реализуются с помощью оператора с постусловием и оператора с предусловием. Синтаксис оператора с постусловием: Repeat <последовательность операторов> Until <логическое выражение>; Тело цикла расположено между служебными словами Repeat и Until. Это любая последовательность операторов языка. Операторы выполняются в цикле до тех пор, пока логическое выражение имеет значение False. Как только выражение примет значение True, цикл закончит свою работу и осуществится переход к выполнению следующего оператора, расположенного после оператора цикла. Синтаксис оператора с предусловием: While <логическое выражение> Do <оператор>; До тех пор, пока логическое выражение имеет значение True, выполняется тело цикла. Телом цикла может быть любой оператор языка, в том числе и составной. Пример 1. Условие задачи: Написать программу табулирования функции Y = x – sin x – 0.25. Схема алгоритма:  Переменная Х изменяется в цикле и по значению этой переменной определяется условие окончания цикла. Программа, организующая цикл с помощью оператора цикла с постусловием: Program Tabl1; Var x, xn, xk, dx, y: Real; {x — текущее значение аргумента} {xn — начальное значение аргумента} {xk — конечное значение аргумента} {dx — шаг изменения аргумента} {y — значение функции} Begin Write(‘Начальное значение аргумента ’); Readln(xn); Write(‘Конечное значение аргумента ’); Readln(xk); Write(‘Шаг изменения аргумента ’); Readln(dx); x := xn; {Присвоили начальное значение аргументу} Repeat {Начало тела цикла} Y := x – sin (x) – 0.25; {Рассчитали значение функции} Writeln ( x:8:2, y:10:2); {Вывели результат на экран} X := x + dx; {Текущее значение аргумента увеличили на шаг} {Конец тела цикла} Until x>xk; {Проверка условия окончания цикла} End. Программа, организующая цикл с помощью оператора цикла с предусловием: Program Tabl2; Var x, xn, xk, dx, y: Real; Begin Write(‘Начальное значение аргумента ’); Readln(xn); Write(‘Конечное значение аргумента ’); Readln(xk); Write(‘Шаг изменения аргумента ’); Readln(dx); х:= xn; While x<= xk Do {Цикл выполняется до тех пор, пока выполняется условие} Begin {В цикле выполняется один составной оператор} Y := x – sin (x) – 0.25; Writeln ( x:8:2, y:10:2); X := x + dx; End; {Конец тела цикла} End. Цикл с параметром в программах на Турбо Паскале реализуется с помощью оператора For ... To ... Do. Синтаксис оператора цикла с параметром: For <идентификатор> := <выражение1> To <выражение2> Do <оператор>; Идентификатор переменной и выражение должны иметь один и тот же порядковый тип. Переменная изменяется в цикле от значения <выражение1> до значения <выражение2> с шагом 1. Эта переменная управляет циклом и называется параметром цикла. В цикле выполняется один любой оператор языка, в том числе и составной. Шаг изменения параметра цикла постоянен и равен 1. Возможна другая интерпретация оператора: For <идентификатор> := <выражение1> Downto <выражение2> Do <оператор>; В этом случае шаг изменения параметра равен – 1. Оператор For чаще используется в случаях, когда при организации циклов необходимо использовать счетчик. Пример 2. Условие задачи: Вычислить сумму квадратов первых N чисел натурального ряда. Схема алгоритма:  Параметром цикла является переменная i. Значение переменной i изменяется от 1 до N с шагом 1. Каждое значение i, возведенное в квадрат прибавляется к переменной Sum и результат присваивается значению Sum. Таким образом, в переменной Sum накапливается сумма квадратов i. Так как при первом проходе значение Sum в правой части выражения должно быть равно нулю, до начала цикла значение Sum обнуляется. Тот же прием используется при подсчете произведения. Очевидно, что начальное значение произведения должно равняться 1. Программа: Program Summa; Var i, n, Sum: integer; Begin Write(‘Введите n’); Readln(n); Sum := 0; {Начальное обнуление суммы} For i := 1 To n Do Sum := Sum + i*i; {Тело цикла — оператор присваивания для накопления суммы} Writeln(‘Сумма =’,Sum); End. II. Самостоятельная работа Рекомендуемое время Минут Задание: Составить схему алгоритма, написать и отладить программу в соответствии с вариантом. № варианта | Задача | | 1. Дано уравнение X – SinX – 1 = 0. Найти интервал [Х1, Х2], в котором расположен корень, построив таблицу функции у= X – SinX – 1 (табулирование функции). Подсказка: в интервале, где расположен корень, функция меняет знак. 2. Вычислить  | | 1. Составить таблицу стоимости порций сыра весом 50, 100, 150, … 1000 г. Стоимость сыра — вводимая величина. 2. Вычислить  | | a. Плотность воздуха убывает с высотой по закону r = r0е–hz . Считая, что r0 = 1,29 кг/м3 , Z = 1.25 *10 –4 1/м, напечатать таблицу зависимости плотности от высоты для значений от 0 до 1000 м с шагом 100 м. b. Вычислить  | | 1. Одноклеточная амеба каждые 3 часа делится на 2 клетки. Определить, сколько клеток будет через 3, 6, 9, 12, …, 24 часа. 2. Вычислить  | | 1. Дано уравнение x + Ln(x + 0.5) – 0.5 = 0. Найти интервал [Х1, Х2], в котором расположен корень построив таблицу функции у= x + Ln(x + 0.5) – 0.5 (табулирование функции). Подсказка: в интервале, где расположен корень, функция меняет знак. 2. Вычислить  | Дополнительные задачи: 1. Концентрация хлорной извести в бассейне объемом V м2 составляет 10 г/л. Через трубу в бассейн вливают чистую воду с объемной скоростью Q м3/час, через другую трубу с такой же скоростью вода выливается. При условии перемешивания концентрация хлорной извести изменяется по закону С0 = С0е–QT/V, где Т – время, С0 — начальная концентрация. Определить, через какое время концентрация хлорной извести достигнет безопасной для человека величины 0.1 г/л. Задачу решить при Q = 150 м3/час, V = 10000 л, С0 = 10 г/л. 2. Вычислить приближенно площадь одной арки синусоиды, разделив отрезок от 0 до p на 10 частей и суммируя площади десяти прямоугольников с основанием p/10 и высотой, равной значению функции на правой границе каждого интервала. 3. Вычислить приближенно площадь фигуры, ограниченной функцией Y = X2 и прямой Y = 5 + X/2, разбивая отрезок изменения X на 10 частей и суммируя площади прямоугольников с основанием, равным 1/10 отрезка, и высотой, определяемой значениями функций в середине основания. 4. В 1985 году урожай ячменя составил 20ц с га. В среднем каждые 2 года за счет применения передовых агротехнических приемов урожай увеличивается на 5%. Определить, через сколько лет урожайность достигнет 25 ц с га. 5. Определить суммарный объем в литрах 12 вложенных друг в друга шаров со стенками 5 мм. Внутренний диаметр внутреннего шара равен 10 см. Считать, что шары вкладываются друг в друга без зазора. |