Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Примеры программ с циклами
Пример 1. Вычислить и вывести на печать значения функции y = x+ex sin x, если аргумент х изменяется от -1 до 2 с шагом 0,1. Составим схему алгоритма (рис. 1). Она работает следующим образом: в блоке 2 аргументу х присваивается начальное значение, равное -1, в блоке 3 вычисляется значение функции у при х = -1, в блоке 4 значения у и х выводится на экран. В блоке 5 аргумент получает приращение, т.е. увеличивается на 0,5, в блоке 6 выполняется проверка на достижения аргументом конечного значения, равного 2. Если аргумент х ещё не превысил конечное значение, то управление передаётся блоку 3, в котором вычисляется новое значение функции у при новом значении х. Если значение х становится больше, чем 2, то вычисления прекращаются, конец программы. По этому алгоритму можно составить четыре варианта программы. Схема алгоритма:
Рисунок 1 Схема алгоритма циклической программы
Программа, вариант 1 REM Цикл с оператором IF…THEN CLS ' очистка экрана х =-1 ' присвоение х начального значения m: у =х + EXP(х)*SIN(х) ' вычисление у при хнач PRINT "у =";у, "х ="; х ' вывод на экран у и х х =х + 0.1 ' увеличение х на шаг 0,1 IF х <= 2 THEN m ' если х ещё меньше или равен хкон, то END ' управление передаётся по метке m, если ' нет, то следующему оператору – END В программе варианта 1 для организации цикла использован оператор условного перехода IF…THEN (что указано в комментарии – оператор REM). Действие каждого оператора указано в комментариях под знаком апострофа (это невыполняемая часть программы, которая записывается только для программиста). Возврат в начало цикла организован передачей управления с помощью оператора условного перехода по метке m. Вариант 2 REM Цикл с оператором FOR…NEXT CLS ' очистка экрана FOR х =-1 TO 2 STEP.2 ' задание параметров цикла: хнач, хкон, шага ∆х у =х + EXP(х)*SIN(х) ' вычисление у в цикле PRINT "у =";у, "х ="; х ' вывод на экран у и х NEXT x ' возврат к началу цикла END Описание программы: в операторе цикла FOR…задаётся первое значении х=-1, следующим оператором вычисляется значение функции у, затем оно распечатывается на экране (оператор PRINT) вместе со значением х, потом оператор NEXT x передаёт управление назад, оператору FOR…, где к величине х прибавляется шаг, т.е число 0,2, новое значение х составляет -0,8, в следующем операторе вычисляется значение у при х=-0,8, распечатывается, вновь производится возврат в оператор FOR…, вновь увеличивается аргумент х на 0,2 и становится равным 0,6 и т.д. Последний раз цикл выполнится при х=2, а потом, т.к. заданный интервал х[-1;2] уже просчитан, программа переходит к следующему оператору, т.е.END – конец программы. Вариант 3 REM Цикл с оператором WHILE…WEND CLS ' очистка экрана х = -1 ' задание начального значения: хнач = -1 WHILE x <= 2 ' проверка условия: пока х ещё <= хкон = 2 у =х + EXP(х)*SIN(х) ' вычисление у в цикле PRINT "у =";у, "х ="; х ' вывод на экран у и х х = х + 0.2 ' увеличение х на шаг 0.2 WEND ' возврат к началу цикла - WHILE… END Описание программы: Начальное значение х = -1 задаётся до тела цикла WHILE…WEND, затем в операторе WHILE проверяется достижение конца цикла х = 2. Поскольку х = -1 ещё меньше, чем 2, то программа переходит к следующему оператору, где вычисляется значение у при первом х = -1. затем оно и значение х распечатываются (на экране), потом значение х увеличивает- ся на шаг (х = х + 0.1) и оператор WEND передаёт управление оператору WHILE, где снова проверяется, достигло ли новое значение х = -0,8 значения 2. Т.к. -0,8 ещё меньше 2, то вычисляется у при этом значении х = -0,8,распечатывается вместе с х, снова х увеличивается на шаг 0,2, затем WEND возвращает управление началу цикла, где WEND вновь проверяет х = -0,6 на достижение хкон = 2 и т.д. Особенностью цикла является то, что он может быть не выполнен ни разу, если значение хнач пройдет проверку в операторе WHILE, т.е. окажется больше хкон. Вариант 4 REM Цикл с оператором DO…LOOP CLS ' очистка экрана х = -1 ' задание начального значения: хнач = -1 DO у =х + EXP(х)*SIN(х) ' вычисление у в цикле PRINT "у =";у, "х ="; х ' вывод на экран у и х х = х + 0.2 ' увеличение х на шаг 0.2 LOOP UNTIL x > 2 ' проверка превышения конца цикла х > 2 END Описание программы: До тела цикла вводится хнач= -1, потом следует оператор "Делать" – что именно: вычислять у, распечатывать его и аргумент х. Затем идёт проверка: делать петлю до того, как величина х станет больше хкон. В условии проверки должен стоять знак ">", чтобы цикл был просчитан и при последнем значении х = хкон. Если записать LOOP UNTIL x = 2, то последним значением х, которое будет до х = 2, является х = 1,8, т.е. при х = хкон= 2 цикл просчитан не будет. Если записать LOOP UNTIL x < 2, то все значения х окажутся меньше хкон и цикл просчитается только один раз, при х = хнач= -1, затем он увеличится на шаг и станет равным -0,8, но это значение является значением до х = 2, поэтому "петля" на слово DO делаться не будет. Поэтому, для того, чтобы цикл был просчитан и при конечном значении аргумента х, в условии LOOP UNTIL должен быть только знак ">". Структура программы такая же, как и для цикла WHILE…WEND, т.е. до тела цикла вводится начальное значение х = -1, а в теле цикла вычисляется и выводится у, а также задаётся приращение аргумента х = х + 0,1, но: · проверка достижения хкон выполняется в конце цикла, поэтому он обязательно будет просчитан хотя бы один раз (при х = хнач), · в условии проверки достижения конечного значения должен стоять знак ">", чтобы цикл был просчитан и при последнем значении аргумента. Вариант 5 REM Цикл с оператором DO UNTIL…LOOP CLS ' очистка экрана х = -1 ' задание начального значения: хнач = -1 DO UNTIL x > 2 ' проверка превышения конца цикла х > 2 у =х + EXP(х)*SIN(х) ' вычисление у в цикле PRINT "у =";у, "х ="; х ' вывод на экран у и х х = х + 0.2 ' увеличение х на шаг 0.2 LOOP END Работа программы происходит также, как и в варианте 4, но, поскольку проверка конца цикла производится в его начале, то он тоже может быть не выполнен ни разу (как и в цикле WHILE…WEND). Пример 2 Вычислить с помощью оператора цикла и вывести на печать сумму всех значений у = sin3х, где х изменяется от 1 до 10 с шагом 0.1. S = Date: 2015-12-13; view: 412; Нарушение авторских прав |