Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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 – вектор, имеющий четыре координаты.

При объявлении массива выделяется участок оперативной памяти, где будут располагаться элементы массива. В оперативной памяти элементы массива размещаются последовательно, друг за другом:

 

-15 0, 56

                                       

Каждый элемент массива определяется именем массива и своим порядковым номером, который называется индексом и записывается после имени массива в квадратных скобках. Количество индексов, указанных после имени массива при обращении к элементам массива, должно быть равно количеству измерений в массиве. При объявлении массива выделяется участок оперативной памяти для размещения его элементов. Имя массива автоматически содержит адрес начала участка памяти, выделенной для размещения элементов массива, т. е. имя массива – это точка отсчета с точки зрения адресов элементов в памяти. За точку отсчета всегда принимают число 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(). Из выше сказанного следует, что решение задач с использованием массивов предполагает использ-ование циклических структур.

В виде алгоритма и программы отдельно опишем ввод одномерного массива с клавиатуры и его вывод на экран:

Алгоритм Программа
объявление вещ: а[4], цел: i // ввод массива для i=0 до 4-1 шаг 1 // в цикле изменяется номер i //элемента массива // затем этот элемент вводится с клавиатуры  ввод а[i] все_для i   обработка массива //решение задачи … для i=0 до 4-1 шаг 1 // в цикле изменяется номер i // элемента массива // затем этот элемент выводится на экран    вывод a[i] все_для i   #include " stdio. h" #define N 4 int main ( ) { float а[N];   int i; // ввод массива с клавиатуры   for ( i=0; i< =N-1; i++ ) {         printf (" A[%i]= " , i );         scanf (" %f", & а[i]); }    // обработка массива … // вывод массива на экран for (i=0; i< =N-1; i++)       printf (" %. 3f", а[i]); printf(" \n" );  return 1; }

Примечание. В алгоритме и программе переменная i обозначает номер текущего элемента массива. В программе количество элементов массива задается при помощи макропеременной.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...