5. Структура алгоритмов вычисления
5. Структура алгоритмов вычисления рекуррентных последовательностей
Как видно из решения задач, приведенные алгоритмы имеют общую структуру. Алгоритмы решения задач на нахождение элементов и/или суммы элементов последовательности можно записать в следующем виде:
задать начальное значение номера элемента i = i0 задать начальное значение элемента a = a0 задать начальное значение суммы элементов s = a0 цикл < условие_продолжения_вычислений> i =i+1 a = f(a, a0) печать a (если нужно) s = s+a (если нужно) все_цикл печать s
Здесь f(a, a0) – это функция, описывающая зависимость последующего элемента последовательности от предыдущего.
Лекция 8 Одномерные массивы Цели: ü познакомиться с понятием одномерного массива и способом его объявления; ü освоить методику написания алгоритмов с использованием одномерных массивов, перевода этих алгоритмов на язык программирования С++ и разработки соответствующего проекта в среде Visual C++ 6. 0; ü познакомиться с некоторыми алгоритмами сортировки массивов. 1. Массивы Математическим понятием, которое привело к появлению в языках программирования понятия «массив», являются матрица и ее частный случай – вектор. Таким образом, массив – совокупность элементов любого допустимого в языке программирования одного типа данных. Для объявления массива необходимо указать: 1) тип элементов массива; 2) имя массива; 3) его размерность, т. е. число индексов, необходимое для обозначения конкретного элемента. Каждый массив может разбиваться на несколько подмассивов, которые так же можно разбивать и т. д. Количество таких разбиений, или измерений, называется размерностью массива. Количество измерений массива не ограничено в языке С++. Это понятие необходимо отличать от понятия размера массива, определяемого как количество его элементов. При объявлении массива в каждом измерении указывается количество элементов этого измерения.
Объявление одномерного массива имеет вид < тип_элементов_массива> < имя_массива> [< количество_элементов_в_массиве> ]; Количество элементов в массиве указывается либо при помощи числовой константы, либо при помощи макроопределения, например:
int a[4];
Здесь каждый элемент массива будет целым числом, a – имя массива, число в квадратных скобках указывает количество элементов массива. С точки зрения математики, массив a – вектор, имеющий четыре координаты. При объявлении массива выделяется участок оперативной памяти, где будут располагаться элементы массива. В оперативной памяти элементы массива размещаются последовательно, друг за другом:
Каждый элемент массива определяется именем массива и своим порядковым номером, который называется индексом и записывается после имени массива в квадратных скобках. Количество индексов, указанных после имени массива при обращении к элементам массива, должно быть равно количеству измерений в массиве. При объявлении массива выделяется участок оперативной памяти для размещения его элементов. Имя массива автоматически содержит адрес начала участка памяти, выделенной для размещения элементов массива, т. е. имя массива – это точка отсчета с точки зрения адресов элементов в памяти. За точку отсчета всегда принимают число 0, поэтому индексу первого элемента массива во внутреннем представлении соответствует число 0, индексу второго – число 1 и т. д. Индекс элемента массива определяет смещение (приращение) адреса заданного элемента массива относительно адреса нулевого элемента массива. Таким образом, нумерация элементов массива всегда начинается с нуля, т. е. индексы элементов изменяются от 0 до N-1, где N – количество элементов в данном измерении.
Размер массива при объявлении может не указываться в случае инициализации значений элементов, например, float f[]={2. 5, 5, 7. 895, 56}; Здесь создается массив из четырех элементов со значениями: f[0]=2. 5, f[1]=5, f[2]=7. 895, f[3]=56 Шаблон программы, работающей с одномерным массивом можно записать следующим образом: # include… #define… int main ( ) { объявление переменных массива заполнение массива (ввод или формирование по заданному закону его элементов) обработка массива вывод результата вывод массива return 1; } В языке C++ операции над массивами не определены. Применить какую-либо библиотечную функцию для ввода или вывода всего массива нет возможности. Чтобы ввести или вывести массив, нужно вводить или выводить отдельно сначала первый элемент массива, затем второй, третий и т. д. Таким образом, получается, что ввод-вывод массива – процесс ввода-вывода отдельного элемента, который повторяется несколько раз и зависит от некоторой величины, которая является индексом элемента массива. Следовательно, для ввода-вывода массива кроме функций scanf() и printf() нужно использовать цикл с параметром for(). Из выше сказанного следует, что решение задач с использованием массивов предполагает использ-ование циклических структур. В виде алгоритма и программы отдельно опишем ввод одномерного массива с клавиатуры и его вывод на экран:
Примечание. В алгоритме и программе переменная i обозначает номер текущего элемента массива. В программе количество элементов массива задается при помощи макропеременной.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|