Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Массив

Содержание

Массив — это область памяти, где могут последовательно храниться несколько значений. Возьмем группу студентов из десяти человек. У каждого из них есть фамилия. Создавать отдельную переменную для каждого студента — не рационально. Создадим массив, в
Массив Массив — это область памяти, где могут последовательно храниться несколько значений. Пример инициализации массива  string students[10] = { Описание синтаксиса  Массив создается почти так же, как и обычная переменная. Чтобы описать элементы массива сразу при его создании, можно использовать фигурные скобки. #include  #include  int main()   { std::string students[10] = Скомпилируйте этот код и посмотрите, на результат работы программы. Готово? А теперь Мы видим, что выводится адрес этого массива в оперативной памяти, а никакие Массивы в памяти хранятся таким же образом. Массив типа int из 10 Так почему же, при повторном запуске программы, адреса различаются? Это сделано для #include  #include  int main() {   std::string students[10] = Смотрим, компилируем, запускаем. Убедились, что вывелся именно «Иванов». Заметьте, что нумерация элементов Попробуем вывести список всех студентов. Но сначала подумаем, а что если бы Вывод элементов массива через цикл #include  #include  int main() { Если бы нам пришлось выводить массив из нескольких тысяч фамилий, то мы Если вместо оператора строгого неравенства — i < 10 использовать оператор «меньше, Это может привести к ошибкам сегментации и аварийному завершению программы. Будьте внимательны Объявление массива без инициализации   string students[10];  // или string teachers[5]; Элементы такого массива обычно содержат в себе «мусор» из выделенной, но еще При создании статического массива, для указания его размера может использоваться только константа. Выделение памяти в процессе выполнения возможно при работе с динамическими массивами. Но Заполнение массива с клавиатуры  #include  #include  using std::cout; using cin >> arr[i]; } // И выводим заполненный массив. cout Если у вас возникают проблемы при компиляции исходников из уроков — внимательно
Слайды презентации

Слайд 2 Массив — это область памяти, где могут последовательно

Массив — это область памяти, где могут последовательно храниться несколько значений.

храниться несколько значений. Возьмем группу студентов из десяти человек. У

каждого из них есть фамилия. Создавать отдельную переменную для каждого студента — не рационально. Создадим массив, в котором будут храниться фамилии всех студентов.

"Массив", Воронкин Е.Ю.


Слайд 3 Пример инициализации массива string students[10] = { "Иванов", "Петров", "Сидоров", "Ахмедов",

Пример инициализации массива string students[10] = {

"Ерошкин", "Выхин", "Андеев", "Вин Дизель", "Картошкин", "Чубайс" };
"Массив", Воронкин Е.Ю.


Слайд 4 Описание синтаксиса Массив создается почти так же, как и

Описание синтаксиса Массив создается почти так же, как и обычная переменная.

обычная переменная. Для хранения десяти фамилий нам нужен массив,

состоящий из 10 элементов. Количество элементов массива задается при его объявлении и заключается в квадратные скобки.

"Массив", Воронкин Е.Ю.


Слайд 5 Чтобы описать элементы массива сразу при его создании,

Чтобы описать элементы массива сразу при его создании, можно использовать фигурные

можно использовать фигурные скобки. В фигурных скобках значения элементов

массива перечисляются через запятую. В конце закрывающей фигурной скобки ставится точка с запятой. Попробуем вывести наш массив на экран с помощью оператора cout.

"Массив", Воронкин Е.Ю.


Слайд 6 #include #include int main() { std::string students[10] =

#include #include int main()  { std::string students[10] = {

{ "Иванов", "Петров", "Сидоров", "Ахмедов", "Ерошкин", "Выхин", "Андеев", "Вин Дизель", "Картошкин", "Чубайс" }; std::cout

<< students << std::endl; // Пытаемся вывести весь массив непосредственно return 0; }

"Массив", Воронкин Е.Ю.


Слайд 7 Скомпилируйте этот код и посмотрите, на результат работы

Скомпилируйте этот код и посмотрите, на результат работы программы. Готово? А

программы. Готово? А теперь запустите программу еще раз и

сравните с предыдущим результатом. В моей операционной системе вывод был следующим: • Первый вывод: 0x7ffff8b85820 • Второй вывод: 0x7fff7a335f90 • Третий вывод: 0x7ffff847eb40

"Массив", Воронкин Е.Ю.


Слайд 8 Мы видим, что выводится адрес этого массива в

Мы видим, что выводится адрес этого массива в оперативной памяти, а

оперативной памяти, а никакие не «Иванов» и «Петров». Дело в

том, что при создании переменной, ей выделяется определенное место в памяти. Если мы объявляем переменную типа int, то на машинном уровне она описывается двумя параметрами — ее адресом и размером хранимых данных.

"Массив", Воронкин Е.Ю.


Слайд 9 Массивы в памяти хранятся таким же образом. Массив

Массивы в памяти хранятся таким же образом. Массив типа int из

типа int из 10 элементов описывается с помощью адреса

его первого элемента и количества байт, которое может вместить этот массив. Если для хранения одного целого числа выделяется 4 байта, то для массива из десяти целых чисел будет выделено 40 байт.

"Массив", Воронкин Е.Ю.


Слайд 10 Так почему же, при повторном запуске программы, адреса

Так почему же, при повторном запуске программы, адреса различаются? Это сделано

различаются? Это сделано для защиты от атак переполнения буфера.

Такая технология называется рандомизацией адресного пространства и реализована в большинстве популярных ОС. Попробуем вывести первый элемент массива — фамилию студента Иванова.

"Массив", Воронкин Е.Ю.


Слайд 11 #include #include int main() { std::string students[10] =

#include #include int main() {  std::string students[10] = {

{ "Иванов", "Петров", "Сидоров", "Ахмедов", "Ерошкин", "Выхин", "Андеев", "Вин Дизель", "Картошкин", "Чубайс" }; std::cout

<< students[0] << std::endl; return 0; }

"Массив", Воронкин Е.Ю.


Слайд 12 Смотрим, компилируем, запускаем. Убедились, что вывелся именно «Иванов».

Смотрим, компилируем, запускаем. Убедились, что вывелся именно «Иванов». Заметьте, что нумерация

Заметьте, что нумерация элементов массива в C++ начинается с

нуля. Следовательно, фамилия первого студента находится в students[0], а фамилия последнего — в students[9]. В большинстве языков программирования нумерация элементов массива также начинается с нуля.

"Массив", Воронкин Е.Ю.


Слайд 13 Попробуем вывести список всех студентов. Но сначала подумаем,

Попробуем вывести список всех студентов. Но сначала подумаем, а что если

а что если бы вместо группы из десяти студентов,

была бы кафедра их ста, факультет из тысячи, или даже весь университет? Ну не будем же мы писать десятки тысяч строк с cout? Конечно же нет! Мы возьмем на вооружение циклы, о которых был написан предыдущий урок.

"Массив", Воронкин Е.Ю.


Слайд 14 Вывод элементов массива через цикл #include #include int main() { std::string

Вывод элементов массива через цикл #include #include int main() { std::string

students[10] = { "Иванов", "Петров", "Сидоров", "Ахмедов", "Ерошкин", "Выхин", "Андеев", "Вин Дизель",

"Картошкин", "Чубайс" }; for (int i = 0; i < 10; i++) { std::cout << students[i] << std::endl; } return 0; }

"Массив", Воронкин Е.Ю.


Слайд 15 Если бы нам пришлось выводить массив из нескольких

Если бы нам пришлось выводить массив из нескольких тысяч фамилий, то

тысяч фамилий, то мы бы просто увеличили конечное значение

счетчика цикла — строку for (...; i < 10; ...) заменили на for (...; i < 10000; ...). Заметьте что счетчик нашего цикла начинается с нуля, а заканчивается девяткой.

"Массив", Воронкин Е.Ю.


Слайд 16 Если вместо оператора строгого неравенства — i

Если вместо оператора строгого неравенства — i < 10 использовать оператор

10 использовать оператор «меньше, либо равно» — i

10, то на последней итерации программа обратится к несуществующему элементу массива — students[10].

"Массив", Воронкин Е.Ю.


Слайд 17 Это может привести к ошибкам сегментации и аварийному

Это может привести к ошибкам сегментации и аварийному завершению программы. Будьте

завершению программы. Будьте внимательны — подобные ошибки бывает сложно

отловить. Массив, как и любую переменную можно не заполнять значениями при объявлении.

"Массив", Воронкин Е.Ю.


Слайд 18 Объявление массива без инициализации string students[10]; // или string teachers[5];
"Массив",

Объявление массива без инициализации  string students[10]; // или string teachers[5];

Воронкин Е.Ю.


Слайд 19 Элементы такого массива обычно содержат в себе «мусор»

Элементы такого массива обычно содержат в себе «мусор» из выделенной, но

из выделенной, но еще не инициализированной, памяти. Некоторые компиляторы,

такие как GCC, заполняют все элементы массива нулями при его создании.

"Массив", Воронкин Е.Ю.


Слайд 20 При создании статического массива, для указания его размера

При создании статического массива, для указания его размера может использоваться только

может использоваться только константа. Размер выделяемой памяти определяется на

этапе компиляции и не может изменяться в процессе выполнения.

"Массив", Воронкин Е.Ю.


Слайд 21 Выделение памяти в процессе выполнения возможно при работе

с динамическими массивами. Но о них немного позже. Заполним с

клавиатуры пустой массив из 10 элементов.

"Массив", Воронкин Е.Ю.

int n; cin >> n; string students[n]; /* Неверно */


Слайд 22 Заполнение массива с клавиатуры #include #include using std::cout; using std::cin; using

Заполнение массива с клавиатуры #include #include using std::cout; using std::cin; using

std::endl; int main() { int arr[10]; // Заполняем массив

с клавиатуры for (int i = 0; i < 10; i++) { cout << "[" << i + 1 << "]" << ": ";

"Массив", Воронкин Е.Ю.


Слайд 23 cin >> arr[i]; } // И выводим заполненный массив. cout

cin >> arr[i]; } // И выводим заполненный массив. cout

"\nВаш массив: "; for (int i = 0; i

10; ++i) { cout << arr[i] << " "; } cout << endl; return 0; }

"Массив", Воронкин Е.Ю.


Слайд 24 "Массив", Воронкин Е.Ю.


  • Имя файла: massiv.pptx
  • Количество просмотров: 79
  • Количество скачиваний: 0