Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







NEXT x ' переход к началу цикла – следующему х





PRINT "S=", S

END

Описание программы:

До начала цикла вводится начальное значение суммы S = 0. К нему будут добавляться все значения функции у = sin(х), поэтому, чтобы итоговая сумма не искажалась, оно должно быть равно нулю.

Затем оператором FOR аргументу х присваивается первое значение, равное 1, вычисляется Y = sin3x = 0,59 и сумма S = S + Y как S = 0 + 0,59, потом NEXT х передаёт управление строке FOR, где х увеличивается на приращение 0,1 и становится равным 1,1. Вычисляется значение функции при новом х = 1,1 (т.е. Y = 0,707) и прибавляется к предыдущему значению S (S = 0,59 + 0,707 = 1,297, затем NEXT x снова возвращает процесс вычисления на FOR, где х увеличивается на 0.1 и т.д. Последний раз цикл будет просчитан при х = 10, потом значение накопленной суммы S выводится на экран и - конец программы. Если бы оператор PRINT стоял внутри цикла (например, после вычисления S = S + Y, Ио на печать выводились бы все промежуточные значения суммы S.

Та же программа с оператором цикла WHILE…WEND примет вид

CLS ' очистка экрана

х = 1: S = 0 ' задание начальных значений х = 1и S = 0

WHILE x <= 10 ' проверка условия: пока х ещё <= хкон = 10

Y = SIN(х)^3 ' вычисление у = sin3x

S = S + Y ' прибавление текущего у к предыдущему S

х = х + 0.1 ' увеличение х на шаг 0.1

WEND ' возврат к началу цикла - WHILE…

PRINT "S ="; S ' вывод на экран S

END

Пример 3 Вычислить с помощью оператора цикла и вывести на печать произведение положительных значений функции p = е4x, где х изменяется от 0.1 до 0.5 с шагом 0.1

Программа с оператором FOR…NEXT примет вид:

CLS

p = 1' присвоение 1 начальному р

FOR x = 0.1 TO 0.5 STEP.1 ' ввод параметров цикла

Y = ЕХР(4*х) ' вычисление у = e

p = p*Y ' умножение текущего у на предыдущее р

NEXT x ' переход к началу цикла – следующему х

PRINT "p=", p

END

 

Пример 4 Вычислить сумму первых 20 членов ряда

S = при х=1.05.

В общем виде i-тый член ряда можно записать как ,

где N – числитель, который увеличивается через 2,

k – показатель степени при х, увеличивающийся на 1.

Обозначим символом m счётчик слагаемых (челнов ряда) для определения конца цикла при m = 20.

Программа

CLS

X=1.05 'присвоение Х значения 1,05

S=0 ' начальное значение суммы S

N=2 ' начальное значение числителя N

k = 1 ' начальное значение показателя степени при х

m = 0 ' начальное значение счётчика циклов сложения

М: Y = N/X^k ' вычисление i-го члена ряда

S=S+Y ' вычисление суммы слагаемых: предыдущее S+Yi

N = N + 2 ' увеличение числителя N на 2

k = k + 1 ' увеличение показателя степени k на 1

m = m + 1 ' увеличение счётчика слагаемых m на 1

IF m <=20 THEN M ' переход к строке с меткой М, если m <= 20

PRINT "S="; S '

END '

Описание программы:

После очистки экрана (CLS) вводится значение для Х оператором присваивания (Х=1.05), задаётся начальные значения суммы S=0, числителя N=2, показателя степени в знаменателе k=1 и счётчика слагаемых m=0. Затем вычисляется первый член ряда при начальных N и k, т.е Y=2/k^1 и его значение прибавляется к сумме S=S+Y как S=0+2/х. Потом все коэффициенты – N, k, m получают свои приращения и выполняется проверка: если число слагаемых m ещё меньше или равно 20, то программа возвращается по метке М к вычислению следующего i-го члена ряда с новыми значениями N и k, если m>20, т.е. все 20 членов уже ссумированы, то программа автоматически переходит к следующему оператору, т.е.выводу суммы S и завершению программы.

Та же программа может быть записана с операторами цикла WHILE… WEND и DO…LOOP:

 

CLS X=1.05: S=0: N=2: k=1: m=0 WHILE m<=20 S=S+N/X^k N=N+2: k=k+1: m=m+1 WEND ? "S="; S END или CLS X=1.05: S=0: N=2: k=1: m=0 DO S=S+N/X^N N=N+2: k=k+1: m=m+1 LOOP UNTIL m >20 ? "S="; S END

 

В этих программах значение Yi вычисляется не отдельно, а сразу в выражениях для суммы S.

Оператор цикла FOR…NEXT здесь не может быть использован, т.к. его формат (конструкция) такова, что он сам задаёт и сам изменяет переменную цикла, а в данной задаче переменная цикла m должна не задаваться, а отслеживаться, т.е. быть не первичным (задающим), а вторичным, зависящим от других операций параметром.

В примерах 2-4 для вычисления суммы или произведения ряда значений используется прием накопления (суммы или произведения).

 

Индексированные переменные

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

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

Примеры: A[2], В[5,10], D[I] означает второй элемент массива А, элемент пятой строки десятого столбца массива В и i-й элемент массива D. Такая запись обусловлена тем, что в языках программирования индексы и показатели степени не используются, а все выражения записываются в одну строку.

Массивы по способу организации делятся на одномерные – массивы-векторы (напр., A[1], В[10], D[I]) и двумерныемассивы-матрицы (напр., Е[3,3], T[5,8], G[I,J])

Примечание. На самом деле в QBASIC нумерация элементов массива начинается с 0, а не с 1, т.е. А[3] указывает на 4-й элемент массива-вектора А, а M[3,5] – на элемент 4-й строки 6-го столбца массива-матрицы М. Но человеку удобнее считать не с 0 до 9, а с 1 до 10, поэтому обычно 0-й элемент массива не используется в расчётах (или используется редко), хотя память под него в QBASIC резервируется.

В качестве номера элемента индексной переменной может использоваться арифметическое выражение, в этом случае после вычисления ее значения дробная часть отбрасывается.

 

Пример. После вычисления индексного выражения C[5.2,Y+I^2]

при Y=3,2 и I=5 будет определен элемент С[5,28].

Элементы массива могут употребляться в программе так же, как и простые переменные, но под массивы компьютер должен выделять память заранее. Если под простую переменную выделяется одна ячейка памяти в тот момент, когда переменная впервые встретится в программе, то при работе с массивами первому использованию переменной с индексом должно предшествовать описание, сообщающее какие массивы используются в программе и каков размер каждого массива.

Эта информация задается в операторе описания массивов DIM, в котором указывается имя массива и, в квадратных скобках, верхние границы изменения индексов. Индексы должны быть целыми положительными числами.

Пример. DIM A[3], B[4,5], T$[12] описывает три массива: массив А, состоящий из четырех элементов: А[0], А[1], А[2], А[3]; массив В, содержащий 5 строк и 6 столбцов и T - символьный массив, содержащий 13 нечисловых элементов.

В QBASIC может быть объявлен массив с произвольной размерностью, в котором границы изменения индексов задаются с помощью переменных. Эти переменные в программе обычно определяются оператором INPUT.

Например.

INPUT E,F

DIM B[E,F]

Оператор DIM B[E,F] описывает массив В, размер которого определяется после ввода переменных E и F в процессе выполнения программы.

Основным инструментом при обработке массивов данных являются циклы.

Общие принципы программирования циклов сохраняются, но в качестве управляющих переменных цикла выступают переменные, определяющие

значения индексов.







ЧТО ТАКОЕ УВЕРЕННОЕ ПОВЕДЕНИЕ В МЕЖЛИЧНОСТНЫХ ОТНОШЕНИЯХ? Исторически существует три основных модели различий, существующих между...

Живите по правилу: МАЛО ЛИ ЧТО НА СВЕТЕ СУЩЕСТВУЕТ? Я неслучайно подчеркиваю, что место в голове ограничено, а информации вокруг много, и что ваше право...

Система охраняемых территорий в США Изучение особо охраняемых природных территорий(ООПТ) США представляет особый интерес по многим причинам...

Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.