🗊Презентация Массивы в C++ (Лекция 4)

Нажмите для полного просмотра!
Массивы в C++ (Лекция 4), слайд №1Массивы в C++ (Лекция 4), слайд №2Массивы в C++ (Лекция 4), слайд №3Массивы в C++ (Лекция 4), слайд №4Массивы в C++ (Лекция 4), слайд №5Массивы в C++ (Лекция 4), слайд №6Массивы в C++ (Лекция 4), слайд №7Массивы в C++ (Лекция 4), слайд №8Массивы в C++ (Лекция 4), слайд №9Массивы в C++ (Лекция 4), слайд №10Массивы в C++ (Лекция 4), слайд №11Массивы в C++ (Лекция 4), слайд №12Массивы в C++ (Лекция 4), слайд №13Массивы в C++ (Лекция 4), слайд №14Массивы в C++ (Лекция 4), слайд №15Массивы в C++ (Лекция 4), слайд №16Массивы в C++ (Лекция 4), слайд №17Массивы в C++ (Лекция 4), слайд №18Массивы в C++ (Лекция 4), слайд №19Массивы в C++ (Лекция 4), слайд №20Массивы в C++ (Лекция 4), слайд №21Массивы в C++ (Лекция 4), слайд №22Массивы в C++ (Лекция 4), слайд №23Массивы в C++ (Лекция 4), слайд №24Массивы в C++ (Лекция 4), слайд №25Массивы в C++ (Лекция 4), слайд №26Массивы в C++ (Лекция 4), слайд №27Массивы в C++ (Лекция 4), слайд №28Массивы в C++ (Лекция 4), слайд №29Массивы в C++ (Лекция 4), слайд №30Массивы в C++ (Лекция 4), слайд №31Массивы в C++ (Лекция 4), слайд №32

Содержание

Вы можете ознакомиться и скачать презентацию на тему Массивы в C++ (Лекция 4). Доклад-сообщение содержит 32 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1






Лекция 4
Описание слайда:
Лекция 4

Слайд 2





Элементарными единицами данных являются значения того или иного стандартного типа, связанные с литералами, поименованными константами или переменными
Элементарными единицами данных являются значения того или иного стандартного типа, связанные с литералами, поименованными константами или переменными
Эти значения можно группировать и создавать более или менее сложные структуры данных
Каждая такая структура может получить свое имя и рассматриваться как переменная составного или агрегатного типа
Описание слайда:
Элементарными единицами данных являются значения того или иного стандартного типа, связанные с литералами, поименованными константами или переменными Элементарными единицами данных являются значения того или иного стандартного типа, связанные с литералами, поименованными константами или переменными Эти значения можно группировать и создавать более или менее сложные структуры данных Каждая такая структура может получить свое имя и рассматриваться как переменная составного или агрегатного типа

Слайд 3





Таким образом, с переменной составного типа (структурой данных) в каждый момент времени связано некоторое множество значений
Таким образом, с переменной составного типа (структурой данных) в каждый момент времени связано некоторое множество значений
Отдельные значения – элементы структуры данных – выделяются путем специальных операций извлечения
Описание слайда:
Таким образом, с переменной составного типа (структурой данных) в каждый момент времени связано некоторое множество значений Таким образом, с переменной составного типа (структурой данных) в каждый момент времени связано некоторое множество значений Отдельные значения – элементы структуры данных – выделяются путем специальных операций извлечения

Слайд 4





Наиболее простой и часто используемой структурой данных является массив
Наиболее простой и часто используемой структурой данных является массив
Массив – это набор некоторого числа однотипных данных, расположенных в последовательных ячейках памяти
Количество элементов массива называется его размером, а тип элементов – типом массива
Описание слайда:
Наиболее простой и часто используемой структурой данных является массив Наиболее простой и часто используемой структурой данных является массив Массив – это набор некоторого числа однотипных данных, расположенных в последовательных ячейках памяти Количество элементов массива называется его размером, а тип элементов – типом массива

Слайд 5





Синтаксис объявления массива:
Синтаксис объявления массива:
		<тип массива> <имя массива> [<размер массива>]
		<размер массива> – это литерал или константное выражение 
В соответствии с объявлением массива для его размещения будет выделена область памяти длиной 
		<размер массива> * sizeof <тип массива> 
	байт
Например:  int a[5];  float x[n+m];   double q[4];
Описание слайда:
Синтаксис объявления массива: Синтаксис объявления массива: <тип массива> <имя массива> [<размер массива>] <размер массива> – это литерал или константное выражение В соответствии с объявлением массива для его размещения будет выделена область памяти длиной <размер массива> * sizeof <тип массива> байт Например: int a[5]; float x[n+m]; double q[4];

Слайд 6





Объявление массива может сопровождаться его инициализацией
Объявление массива может сопровождаться его инициализацией
 Синтаксис объявления массива с инициализацией:
		<тип массива> <имя массива> [<размер массива>] = {<список значений>}
В этом случае элементы массива получают значения из списка инициализации
В список инициализации могут входить любые вычисляемые выражения
Описание слайда:
Объявление массива может сопровождаться его инициализацией Объявление массива может сопровождаться его инициализацией Синтаксис объявления массива с инициализацией: <тип массива> <имя массива> [<размер массива>] = {<список значений>} В этом случае элементы массива получают значения из списка инициализации В список инициализации могут входить любые вычисляемые выражения

Слайд 7





Одномерный массив:
Одномерный массив:
		int a[5] = { 3, 45, 11, -8, 74}; 
		double q[4] = {1.7, 4.53};
Во втором случае инициализируются только два первых элемента массива x, а оставшиеся два элемента получают нулевые значения 
При наличии списка инициализации размер массива можно не указывать, он определяется по числу инициализирующих значений:
		 int a[ ] = { 3, 45, 11, -8, 74};
Описание слайда:
Одномерный массив: Одномерный массив: int a[5] = { 3, 45, 11, -8, 74}; double q[4] = {1.7, 4.53}; Во втором случае инициализируются только два первых элемента массива x, а оставшиеся два элемента получают нулевые значения При наличии списка инициализации размер массива можно не указывать, он определяется по числу инициализирующих значений: int a[ ] = { 3, 45, 11, -8, 74};

Слайд 8





Производится с помощью числовых индексов, причем индексация начинается с нуля
Производится с помощью числовых индексов, причем индексация начинается с нуля
В случае массива операция извлечения – это бинарная операция «квадратные скобки»
Первым операндом является имя массива, вторым – целочисленное выражение, заключенное в квадратные скобки
		a[0] = a[i] + a[2 * i +1];
Отметим, что операция [] является коммутативной, т.е. допускающей обмен операндов местами:
		 0[a] = i[a] + (2 * i +1)[a];
Описание слайда:
Производится с помощью числовых индексов, причем индексация начинается с нуля Производится с помощью числовых индексов, причем индексация начинается с нуля В случае массива операция извлечения – это бинарная операция «квадратные скобки» Первым операндом является имя массива, вторым – целочисленное выражение, заключенное в квадратные скобки a[0] = a[i] + a[2 * i +1]; Отметим, что операция [] является коммутативной, т.е. допускающей обмен операндов местами: 0[a] = i[a] + (2 * i +1)[a];

Слайд 9





Индексация элементов массива начинается с нуля
Индексация элементов массива начинается с нуля
Таким образом, первому элементу массива соответствует значение индекса 0, второму – значение индекса 1, элементу с порядковым номером k – значение индекса k-1
Описание слайда:
Индексация элементов массива начинается с нуля Индексация элементов массива начинается с нуля Таким образом, первому элементу массива соответствует значение индекса 0, второму – значение индекса 1, элементу с порядковым номером k – значение индекса k-1

Слайд 10





Для массивов больших размеров инициализация, как правило, не производится и их заполнение выполняется в процессе работы программы
Для массивов больших размеров инициализация, как правило, не производится и их заполнение выполняется в процессе работы программы
Одним из способов решения проблемы заполнения массивов является использование псевдослучайных чисел
Генерация таких чисел осуществляется функцией rand() из библиотеки stdlib (заголовочный файл <stdlib.h>)
Описание слайда:
Для массивов больших размеров инициализация, как правило, не производится и их заполнение выполняется в процессе работы программы Для массивов больших размеров инициализация, как правило, не производится и их заполнение выполняется в процессе работы программы Одним из способов решения проблемы заполнения массивов является использование псевдослучайных чисел Генерация таких чисел осуществляется функцией rand() из библиотеки stdlib (заголовочный файл <stdlib.h>)

Слайд 11





Целочисленная функция rand() возвращает псевдослучайное число из диапазона
Целочисленная функция rand() возвращает псевдослучайное число из диапазона
			 0 .. RAND_MAX,
	где константа RAND_MAX = 0x7fff (32535)
Для задания другого диапазона следует использовать формулу:
		rand() % (max-min+1)+min,
	где min и max – нижняя и верхняя границы требуемого диапазона
Описание слайда:
Целочисленная функция rand() возвращает псевдослучайное число из диапазона Целочисленная функция rand() возвращает псевдослучайное число из диапазона 0 .. RAND_MAX, где константа RAND_MAX = 0x7fff (32535) Для задания другого диапазона следует использовать формулу: rand() % (max-min+1)+min, где min и max – нижняя и верхняя границы требуемого диапазона

Слайд 12





Для получения псевдослучайных вещественных значений в заданном диапазоне удобно использовать следующую формулу:
Для получения псевдослучайных вещественных значений в заданном диапазоне удобно использовать следующую формулу:
		(float) rand() / RAND_MAX * (max - min) + min
В этом выражении целое значение, возвращаемое функцией rand() явным образом преобразуется в вещественное, т.к. в противном случае всегда будет получаться нулевое значение
Описание слайда:
Для получения псевдослучайных вещественных значений в заданном диапазоне удобно использовать следующую формулу: Для получения псевдослучайных вещественных значений в заданном диапазоне удобно использовать следующую формулу: (float) rand() / RAND_MAX * (max - min) + min В этом выражении целое значение, возвращаемое функцией rand() явным образом преобразуется в вещественное, т.к. в противном случае всегда будет получаться нулевое значение

Слайд 13





Программа «Заполнение целыми числами»
Программа «Заполнение целыми числами»
Листинг программы
Программа «Заполнение вещественными числами»
Листинг программы
Описание слайда:
Программа «Заполнение целыми числами» Программа «Заполнение целыми числами» Листинг программы Программа «Заполнение вещественными числами» Листинг программы

Слайд 14





Существует две основных формулировки задачи поиска:
Существует две основных формулировки задачи поиска:
найти элемент массива (первый или последний), удовлетворяющий заданному условию;
найти все элементы массива, удовлетворяющие некоторому условию; 
Любой поиск связан с последовательным просмотром элементов массива и проверкой их соответствия условию поиска
Описание слайда:
Существует две основных формулировки задачи поиска: Существует две основных формулировки задачи поиска: найти элемент массива (первый или последний), удовлетворяющий заданному условию; найти все элементы массива, удовлетворяющие некоторому условию; Любой поиск связан с последовательным просмотром элементов массива и проверкой их соответствия условию поиска

Слайд 15





В этом случае основу алгоритма решения задачи составляет цикл, содержащий в качестве условия продолжения отрицание условия поиска
В этом случае основу алгоритма решения задачи составляет цикл, содержащий в качестве условия продолжения отрицание условия поиска
Например, требуется проверить, есть ли среди элементов массива A длиной n элемент со значением, равным заданному значению x
Описание слайда:
В этом случае основу алгоритма решения задачи составляет цикл, содержащий в качестве условия продолжения отрицание условия поиска В этом случае основу алгоритма решения задачи составляет цикл, содержащий в качестве условия продолжения отрицание условия поиска Например, требуется проверить, есть ли среди элементов массива A длиной n элемент со значением, равным заданному значению x

Слайд 16





Возможны две ситуации:   
Возможны две ситуации:   
такой элемент существует, тогда при некотором значении индекса i выполняется условие A[i]=x;
такого элемента в массиве нет
В первом случае поиск нужно завершать при обнаружении искомого элемента, во втором – при достижении конца массива
Описание слайда:
Возможны две ситуации: Возможны две ситуации: такой элемент существует, тогда при некотором значении индекса i выполняется условие A[i]=x; такого элемента в массиве нет В первом случае поиск нужно завершать при обнаружении искомого элемента, во втором – при достижении конца массива

Слайд 17





Формально такое условие завершения поиска записывается в виде:
Формально такое условие завершения поиска записывается в виде:
		 A[i] = x ИЛИ  i=n 
Отрицание этого условия, в соответствии с правилом де Моргана, имеет вид:
		 A[i] ≠ x И  i<n
Поскольку основная задача поиска  решается при проверке условия, то тело цикла должно содержать только инкремент индексной переменной
Описание слайда:
Формально такое условие завершения поиска записывается в виде: Формально такое условие завершения поиска записывается в виде: A[i] = x ИЛИ i=n Отрицание этого условия, в соответствии с правилом де Моргана, имеет вид: A[i] ≠ x И i<n Поскольку основная задача поиска решается при проверке условия, то тело цикла должно содержать только инкремент индексной переменной

Слайд 18





Цикл поиска в нотации C++ принимает вид: 
Цикл поиска в нотации C++ принимает вид: 
		i=0;
		while  (A[i] != x &&  i<n) i++;
Условие in заменено на i<n, чтобы не допустить выхода за границу массива
Описание слайда:
Цикл поиска в нотации C++ принимает вид: Цикл поиска в нотации C++ принимает вид: i=0; while (A[i] != x && i<n) i++; Условие in заменено на i<n, чтобы не допустить выхода за границу массива

Слайд 19





Поскольку условие цикла является конъюнкцией двух простых условий, то после завершения цикла необходимо проверить основное из них:
Поскольку условие цикла является конъюнкцией двух простых условий, то после завершения цикла необходимо проверить основное из них:
		if (i < n)  printf(“Элемент найден”); 
		else  printf(“Элемент не найден”);
Описание слайда:
Поскольку условие цикла является конъюнкцией двух простых условий, то после завершения цикла необходимо проверить основное из них: Поскольку условие цикла является конъюнкцией двух простых условий, то после завершения цикла необходимо проверить основное из них: if (i < n) printf(“Элемент найден”); else printf(“Элемент не найден”);

Слайд 20





Сортировкой массива называется упорядочение значений его элементов по возрастанию или убыванию
Сортировкой массива называется упорядочение значений его элементов по возрастанию или убыванию
Рассмотрим три простых алгоритма сортировки:
сортировка методом выбора,
сортировка методом включения,
сортировка методом обмена
Описание слайда:
Сортировкой массива называется упорядочение значений его элементов по возрастанию или убыванию Сортировкой массива называется упорядочение значений его элементов по возрастанию или убыванию Рассмотрим три простых алгоритма сортировки: сортировка методом выбора, сортировка методом включения, сортировка методом обмена

Слайд 21





Основная идея этого метода заключается в последовательном формировании отсортированной части массива путем добавления в ее конец очередного элемента, выбранного в его неотсортированной части
Основная идея этого метода заключается в последовательном формировании отсортированной части массива путем добавления в ее конец очередного элемента, выбранного в его неотсортированной части
Описание слайда:
Основная идея этого метода заключается в последовательном формировании отсортированной части массива путем добавления в ее конец очередного элемента, выбранного в его неотсортированной части Основная идея этого метода заключается в последовательном формировании отсортированной части массива путем добавления в ее конец очередного элемента, выбранного в его неотсортированной части

Слайд 22





const int  N = 10;
const int  N = 10;
void main()
{	int i, j, nMin, A[N], c;
	// здесь нужно ввести массив A 
	for ( i = 0; i < N-1; i ++ )   // i – индекс  первого элемента в неотсорт. части
	{   nMin = 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]);
}
Описание слайда:
const int N = 10; const int N = 10; void main() { int i, j, nMin, A[N], c; // здесь нужно ввести массив A for ( i = 0; i < N-1; i ++ ) // i – индекс первого элемента в неотсорт. части { nMin = 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]); }

Слайд 23





Отсортированная часть массива также формируется путем последовательного добавления в нее элементов из его неотсортированной части
Отсортированная часть массива также формируется путем последовательного добавления в нее элементов из его неотсортированной части
Однако теперь в качестве очередного берется первый элемент неотсортированной части
Место его размещения в отсортированной части выбирается так, чтобы сохранить уже имеющийся там порядок сортировки
Описание слайда:
Отсортированная часть массива также формируется путем последовательного добавления в нее элементов из его неотсортированной части Отсортированная часть массива также формируется путем последовательного добавления в нее элементов из его неотсортированной части Однако теперь в качестве очередного берется первый элемент неотсортированной части Место его размещения в отсортированной части выбирается так, чтобы сохранить уже имеющийся там порядок сортировки

Слайд 24





const int  N = 10;
const int  N = 10;
void main()
{	int i, j, nMin, A[N], c;
	// здесь нужно ввести массив A 
	for ( i = 1; i < N; i ++ )
	{  c = A[i]; 
	    j = i -1;   // ищем в отсортированной части место для размещения
	     while (j > =0 && A[j] > c)  A[j+1] = A[j--];  // очередного злемента
	   A[j+1] =  c;
	} 
	printf("\n Отсортированный массив:\n");
	for ( i = 0; i < N; i ++ )
	    printf("%d ", A[i]);
}
Описание слайда:
const int N = 10; const int N = 10; void main() { int i, j, nMin, A[N], c; // здесь нужно ввести массив A for ( i = 1; i < N; i ++ ) { c = A[i]; j = i -1; // ищем в отсортированной части место для размещения while (j > =0 && A[j] > c) A[j+1] = A[j--]; // очередного злемента A[j+1] = c; } printf("\n Отсортированный массив:\n"); for ( i = 0; i < N; i ++ ) printf("%d ", A[i]); }

Слайд 25





Этот метод сортировки имеет жаргонное наименование «метод пузырька» и заключается в многократном упорядочении пар соседних элементов
Этот метод сортировки имеет жаргонное наименование «метод пузырька» и заключается в многократном упорядочении пар соседних элементов
Описание слайда:
Этот метод сортировки имеет жаргонное наименование «метод пузырька» и заключается в многократном упорядочении пар соседних элементов Этот метод сортировки имеет жаргонное наименование «метод пузырька» и заключается в многократном упорядочении пар соседних элементов

Слайд 26





const int N = 10;
const int N = 10;
void main()
{
    int i, j, A[N], c;
   // здесь надо ввести массив A
   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]);
}
Описание слайда:
const int N = 10; const int N = 10; void main() { int i, j, A[N], c; // здесь надо ввести массив A 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]); }

Слайд 27





Все три алгоритма имеют, в среднем, одинаковую эффективность и выбор одного из них может определяться особенностями задачи, а также личными пристрастиями программиста
Все три алгоритма имеют, в среднем, одинаковую эффективность и выбор одного из них может определяться особенностями задачи, а также личными пристрастиями программиста
Описание слайда:
Все три алгоритма имеют, в среднем, одинаковую эффективность и выбор одного из них может определяться особенностями задачи, а также личными пристрастиями программиста Все три алгоритма имеют, в среднем, одинаковую эффективность и выбор одного из них может определяться особенностями задачи, а также личными пристрастиями программиста

Слайд 28





В языке C++ такие массивы рассматриваются как одномерные массивы одномерных массивов
В языке C++ такие массивы рассматриваются как одномерные массивы одномерных массивов
Поэтому такой массив может быть определен следующим образом:
				 int a[10] [5];
Описание слайда:
В языке C++ такие массивы рассматриваются как одномерные массивы одномерных массивов В языке C++ такие массивы рассматриваются как одномерные массивы одномерных массивов Поэтому такой массив может быть определен следующим образом: int a[10] [5];

Слайд 29





Двумерный массив может инициализироваться как одномерный массив:
Двумерный массив может инициализироваться как одномерный массив:
		int a[2] [3] = { 3, 45, 11, -8, 74, -10};
или как массив массивов:
		 int a[2] [3] = { {3, 45, 11}, {-8, 74, -10}};
При наличии инициализатора в определении двумерного массива можно не указывать размер по первому измерению, например:
		 int a[ ] [3] = { {3, 45, 11}, {-8, 74, -10}};
Описание слайда:
Двумерный массив может инициализироваться как одномерный массив: Двумерный массив может инициализироваться как одномерный массив: int a[2] [3] = { 3, 45, 11, -8, 74, -10}; или как массив массивов: int a[2] [3] = { {3, 45, 11}, {-8, 74, -10}}; При наличии инициализатора в определении двумерного массива можно не указывать размер по первому измерению, например: int a[ ] [3] = { {3, 45, 11}, {-8, 74, -10}};

Слайд 30





Для двумерных массивов каждый из индексов записывается в отдельных квадратных скобках:
Для двумерных массивов каждый из индексов записывается в отдельных квадратных скобках:
		 a[0] [2] = a[1] [2] + 4;
Поскольку элементы двумерного массива располагаются в оперативной памяти в виде непрерывной последовательности, то возможно обращение к элементу массива с использованием одного индексного выражения
Описание слайда:
Для двумерных массивов каждый из индексов записывается в отдельных квадратных скобках: Для двумерных массивов каждый из индексов записывается в отдельных квадратных скобках: a[0] [2] = a[1] [2] + 4; Поскольку элементы двумерного массива располагаются в оперативной памяти в виде непрерывной последовательности, то возможно обращение к элементу массива с использованием одного индексного выражения

Слайд 31





Пусть определение массива имеет вид:
Пусть определение массива имеет вид:
		int a [m] [n],
где m, n – константы
Тогда эквивалентными являются два обращения: a [i] [j]  и  a[i*m+j]
Описание слайда:
Пусть определение массива имеет вид: Пусть определение массива имеет вид: int a [m] [n], где m, n – константы Тогда эквивалентными являются два обращения: a [i] [j] и a[i*m+j]

Слайд 32


Массивы в C++ (Лекция 4), слайд №32
Описание слайда:



Похожие презентации
Mypresentation.ru
Загрузить презентацию