|
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*х) ' вычисление у = e4х 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:
В этих программах значение 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 в процессе выполнения программы. Основным инструментом при обработке массивов данных являются циклы. Общие принципы программирования циклов сохраняются, но в качестве управляющих переменных цикла выступают переменные, определяющие значения индексов. ЧТО И КАК ПИСАЛИ О МОДЕ В ЖУРНАЛАХ НАЧАЛА XX ВЕКА Первый номер журнала «Аполлон» за 1909 г. начинался, по сути, с программного заявления редакции журнала... Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор... Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем... Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычислить, когда этот... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|