Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Массивы. В рассмотренных в примере 3.8 вариантах циклических алгоритмов параметры цикла и результаты вычислений рассматриваются как простые переменные

В рассмотренных в примере 3.8 вариантах циклических алгоритмов параметры цикла и результаты вычислений рассматриваются как простые переменные, которые позволяют использовать в алгоритме одиночные объекты (простая переменная может принимать одно числовое значение). В алгоритмах с применением массива могут использоваться также объекты, содержащие множество однотипных элементов. Массивы – это формальное объединение нескольких однотипных объектов (элементов массива), рассматриваемое как единое целое (имеющих общее имя). К необходимости применения массивов мы приходим всякий раз, когда требуется связать и использовать целый ряд родственных величин. Например, результаты многократных замеров (дискретно) параметров исследуемого объекта за определенный временной интервал удобно рассматривать как совокупность вещественных чисел, объединенных в один сложный объект ‑ массив измерений.

Доступ к каждому элементу массива в алгоритме осуществляется с помощью индекса ‑ целого числа (точнее, выражения целого типа), который служащего адресом элемента в массиве (если левая граница типа-диапазона равна 1, индекс элемента совпадает с его порядковым номером). Массивы могут быть одномерными (адрес каждого элемента определяется значением одного индекса) и многомерными (несколько индексов). Аналогом одномерного массива в математике является вектор Х(Х1, Х2,…,ХN). Аналогом двумерного массива в математике является матрица размерностью MxN (M строк и N столбцов)

A=

При упоминании в программе любого элемента массива сразу за именем массива должен следовать индекс (индексы) элемента в квадратных скобках, например: X[1], A[2,1].

Пример 3.9. Составить алгоритм для вычисления и запоминания в массиве таблицы значений наиболее вероятной скорости молекул газа от температуры VB=f(T) для заданного ряда значений температуры воздуха Т=(T1, T1,…,ТN) с по формуле

.

Исходные данные R, M, T заданы в системе физических единиц Си.

Алгоритм на языке Турбо Паскаль имеет вид.

begin

ReadLn(T,N);

For I:=1 TO N Do

VB[I]:=SQRT(2*R*T[I]/M);

WriteLn(VB)

End.

Оператор ReadLn(T,N) осуществляет ввод всего массива значений температуры Т. В цикле вычисляется результат как переменная с индексом VB[I]– элемент массива. Переменная T[I] также является элементом массива (T1, T1,…,ТN). После выполнения оператора присваивания в теле цикла осуществляется переход к следующему циклу – значение переменной цикла I увеличивается на 1 и проверяется условие продолжения цикла I<=N. При невыполнении условия осуществляется выход из цикла и вывод на экран значений элементов массива VB оператором WriteLn. Оператор WriteLn(VB)стоит за циклом, так как на экран выводится весь массив VB.

Пример 3.10. Составить алгоритм вычисления суммы S значений элементов массива F=(F1, F2,…,FN).

Алгоритм на языке Турбо Паскаль имеет вид.

Begin

ReadLn(F,N);

S:=0;

For I:=1 TO N Do

S:=S+F[I];

WriteLn(S)

End.

Перед оператором цикла задается начальное значение суммы S равное нулю. В цикле осуществляется «накопление суммы» ‑ к предыдущему значению накопленной суммы прибавляется текущее значение элемента массива S:=S+F[I]. При первом выполнении цикла вычисляется значение S:=S+F[1], которое должно быть равно F[1].

Пример 3.11. Составить алгоритм определения наименьшего элемента XM массива X(x1, x2,…xN,) и его порядкового номера NM.

begin

ReadLn(X,N);

XM:=X[1];

NM:=1;

For I:=2 To N Do

If X[I]<XM Then

Begin

XM:=X[I];

NM:=I

End;

WriteLn('XM=',XM,'NM=',NM)

End.

В качестве начального значения XM принимается первый элемент массива X[1] ( адрес NM=1). Сравнение текущего элемента массива X[I] c NM выполняется в цикле, начиная со второго элемента массива X ( For I:=2 TO N Do <Оператор>). Проверка условия X[I] < XM выполняется в условном операторе If X[I]<XM Then <составной оператор>. Если условие выполняется, то определяются новые значения XN и NM ( XM:=X[I]; NM:=I). При невыполнении условия X[I] < XM никаких действий не производится и осуществляется переход к следующему циклу – переменная цикла I изменяет значение на 1 и проверяется условие продолжения цикла I<=N. При невыполнении условия осуществляется выход из цикла и вывод на экран значений XN и NM с их названиями оператором WriteLn.

Пример 3.12. Составить алгоритм умножения прямоугольной матрицы A на вектор-столбец B.

Произведением АВ матрицы A на вектор-столбец B называется матрица С. Элементы матрицы С вычисляют по следующему правилу: элемент равен сумме произведений элементов (i -й строки, j -го столбца) матрицы А на соответствующие элементы Произведение АВ существует, если число столбцов N матрицы A=((i=1,2,…,M; j=1,2,…,N) равно числу элементов вектора-столбца B (j=1,2,…,N)

, где +++.

Алгоритм решения задачи представляет собой структуру вложенных циклов – внешнего и внутреннего. Внешний цикл определяет изменение индекса строки i, а внутренний – индекса столбца j. Так как значения числа строк М и столбцов N в алгоритме определены (оператор ReadLn(N,M,A,B), то для организации внешнего цикла воспользуемся оператором цикла For J:=1 TO M <составной оператор>, а для внутреннего цикла – оператором цикла For J:=1 TO N <Оператор>. Перед внутренним циклом необходимо задать начальное значение суммы C[I]:=0. Для каждого значения параметра внутреннего цикла I параметр внутреннего цикла J пробегает все свои значения. После завершения внутреннего цикла управление передается во внешний цикл. После завершения внешнего цикла управление передается оператору вывода WriteLn ( C ) для вывода на экран значений элементов массива С=(сi).


Блок-схема алгоритма Алгоритм на языке Турбо Паскаль
 

Вывод C
Ввод данных

begin ReadLn(N,M,A,B) For I:=1 TO M Do Begin C[I]:=0; For J:=1 TO N Do C[I]:= C[I]+A[I,J]*B[J] End; WriteLn ( C ); End.

 

<== предыдущая лекция | следующая лекция ==>
Циклические алгоритмы | Анализ поведения потребителя
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 348; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.014 сек.