- •3 Аттестация
- •Понятие подпрограммы. Функции как способ записи подпрограмм. Функции как расширение понятия операции и оператора. Правила записи функций.
- •Заголовок функции, правила его записи. Тип функции. Формальные параметры функции. Передача параметров по значению и по ссылке.
- •Тело функции. Локальные объекты функции. Возвращаемое значение и его тип.
- •Тело функции как блок. Принцип вложенности блоков. Правила видимости для программных объектов.
- •Вызовы функций. Фактические параметры (аргументы) функции. Передача параметров по значению и по ссылке. Правила соответствия между формальными и фактическими параметрами.
- •Механизм вызова функций.
- •11. Выражения, значения выражений и правила их вычислений. Тип выражения.
- •12. Приоритеты операций при вычислении выражений.
- •14. Синтаксис и семантика оператора выражения. Примеры применения оператора выражения.
- •15. Синтаксис и семантика условного оператора. Примеры применения условного оператора.
- •16. Синтаксис и семантика оператор выбора. Примеры применения оператор выбора.
- •18. Синтаксис и семантика оператора цикла с предусловием. Примеры применения оператора цикла с предусловием.
- •20. Синтаксис и семантика оператора цикла с параметром. Примеры применения оператора цикла с параметром.
- •21. Структурные типы данных. Массивы. Описание массива. Размер и размерность массива.
- •22. Задача поиска в массиве. Алгоритмы поиска.
- •23. Задача сортировки массива.
- •24. Задача сортировки массива. Алгоритм сортировки методом включения.
- •25. Задача сортировки массива. Алгоритм сортировки методом обмена.
- •26. Строки, их структура. Основные операции над строками.
22. Задача поиска в массиве. Алгоритмы поиска.
Существует две основных формулировки задачи поиска:
найти элемент массива (первый или последний), удовлетворяющий заданному условию;
найти все элементы массива, удовлетворяющие некоторому условию;
Любой поиск связан с последовательным просмотром элементов массива и проверкой их соответствия условию поиска
Поиск единственного элемента: В этом случае основу алгоритма решения задачи составляет цикл, содержащий в качестве условия продолжения отрицание условия поиска Возможны две ситуации: такой элемент существует, тогда при некотором значении индекса i выполняется условие A[i]=x;такого элемента в массиве нет В первом случае поиск нужно завершать при обнаружении искомого элемента, во втором – при достижении конца массива
Поиск всех элементов: В этом случае проверка условия поиска осуществляется в теле цикла for, который просматривает все элементы массива
Например, требуется подсчитать сумму s всех отрицательных значений в целочисленном массиве A длиной n
Цикл поиска будет иметь вид:
s=0;
for (int i=0; i<n; i++)
if (A[i] < 0) s +=A[i];
К этому типу поиска относятся и алгоритмы поиска миниального или максимального значения в массиве:
min=A[0];
for (int i=1; i<n; i++)
if (A[i] < min) min=A[i];
23. Задача сортировки массива.
Алгоритм сортировки методом выбора
Основная идея этого метода заключается в последовательном формировании отсортированной части массива путем добавления в ее конец очередного элемента, выбранного в его неотсортированной части
for ( i = 0; i < N-1; i ++ )
{ nMin = i; // ищем минимальный, начиная с A[i]
for ( j = i+1; j < N; j ++ ) ;
if ( A[j] < A[nMin] ) nMin = j;
if ( nMin != i ) // если минимальный не стоит на своем месте,…
{ c = A[i]; A[i] = A[nMin]; A[nMin] = c; } // ставим его на место
}
printf("\n Отсортированный массив:\n");
for ( i = 0; i < N; i ++ )
printf("%d ", A[i]);
24. Задача сортировки массива. Алгоритм сортировки методом включения.
Как и в предыдущем методе, отсортированная часть массива формируется путем последовательного добавления в нее элементов из его неотсортированной части
Однако теперь в качестве очередного берется первый элемент неотсортированной части
Место его размещения в отсортированной части выбирается так, чтобы сохранить уже имеющийся там порядок сортировки
void insertionSort(int arr[], int length)
{
int i, j, tmp;
for (i = 1; i < length; i++)
{
j = i;
while (j > 0 && arr[j - 1] > arr[j])
{
tmp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = tmp;
j--;
}
}
}
printf("\n Отсортированный массив:\n");
for ( i = 0; i < N; i ++ )
printf("%d ", A[i]);
25. Задача сортировки массива. Алгоритм сортировки методом обмена.
for ( i = 0; i < N-1; i ++ ) // цикл повторных проходов по массиву
for ( j = N-2; j >= i; j -- ) // идем с конца массива в начало
if ( A[j] > A[j+1] ) // если они стоят неправильно, ...
{ c = A[j]; A[j] = A[j+1]; A[j+1] = c; // переставить A[j] и A[j+1] }
printf("\n Отсортированный массив:\n");
for ( i = 0; i < N; i ++ )
printf("%d ", A[i]);
}
Этот метод сортировки имеет жаргонное наименование «метод пузырька» и заключается в многократном упорядочении пар соседних элементов