Основи програмування на С ++ для початківців

Массиви в C++ (відео)

массивы в c++, массивы в с++, одномерный массивМассивы чрезвычайно важная тема в C . У програмах вони використовуються дуже часто і розібратися в цій темі необхідно досконально. Відразу вас порадую – понять и научиться применять массивы достаточно просто даже начинающему.

Итак, зачем же нужны массивы и что они из себя представляют? К настоящему моменту вы уже хорошо знаете, что данные программы хранятся в объявленных нами змінних певного типу (int, double, char… ). Но бывает так, что программе необходимо хранить сотни (а то и больше) переменных однотипных данных, а также необходимо с ними работать – присваивать значения, изменять их и т.д.  

К примеру, надо хранить порядковые номера строк. Согласитесь –  будь-якому стане страшно від думки, что надо создать пятьсот переменных типа int, кожної дати унікальне ім'я і привласнити значення від 1-го до 500-та. (мне уже страшно :) В таком случае, массивы нас просто спасут.

Отметим основное и перейдем к практическому примеру:

  • массив в С – это совокупность определенного количества однотипных переменных, имеющих одно имя. К примеру, int array [3];. Эта запись означает, что мы объявили массив с именем array , которыйсодержит в себе 3 переменные типа int;
  • переменные массива называют элементами ;
  • кожен елемент має свій унікальний індекс - свій порядковий номер. Используя индекс мы можем обращаться к конкретному элементу. ВАЖНО – индексация элементов массива начинается с 0. Так в массиве int array [3] первый элемент имеет индекс 0, а последний – 2. Чтобы обратиться, например, к нулевому элементу массива и изменить его значение, треба вказати ім'я масиву та в квадратних дужках вказати індекс елементу– array [0] = 33.

Рассмотрим пример:

У рядку 12 ми визначаємо целочисленную константу SIZE, которая будет хранить размер массива (определённое нами, количество его элементов). У рядку 13 оголошуємо масив: указываем тип данных, которые будут храниться в ячейках массива,  даємо ім'я і вказуємо розмір в квадратних дужках.

Важливо, что в квадратные скобки мы можем записывать только целые константные значения. Надо либо сразу вписать целое число в квадратные скобки при объявлении массива (int firstArray[100];), либо определить целочисленную константу до объявления массива и ввести в квадратные скобки имя этой константы (как в нашем примере).

Второй способ использовать предпочтительней, если в ходе программы вам придется несколько раз обращаться к массиву через цикл. Объясняется это тем, что когда мы объявляем цикл, в ньому можна вказати умову зміни лічильника до значенняSIZE.

Вот представьте, что нам необходимо изменить размер массива с 10 элементов на 200. В этом случае, нам залишається всього на всього змінити значення целочисленной константи, и таким образом у нас автоматически подставятся новые значения размера и в массив, и во все циклы программы.

Можете попробовать в нашем примере внести любую другую цифру в константу SIZE. И вы увидите, что программа будет прекрасно работать – создаст массив на столько элементов, на сколько вы укажете, внесет данные и отобразит их на экране.

У рядках 15 – 19 определяем цикл for. Его счетчик i будет служить индексом элементов массива. В самом начале, он равен 0 и с каждым шагом будет увеличиваться на единицу до тех пор, пока не станет равным SIZE –  кількості елементів масиву.

Зверніть увагу, в одному циклі ми і присвоюємо різні значення елементів масиву і в наступному рядку звертаємося до них, чтобы вывести данные, которые они хранят, на екран.

Запускаем программу и видим результат:

массивы в c++, массивы в с++, одномерный массив

Присвоить значение элементам массива можно разными способами – инициализировать его при создании либо с помощью цикла. Если размер массива большой, есть прекрасная возможность использовать цикл for  или while  для ініціалізації його елементів. Так мы сделали в нашем примере. Можно заполнить массив случайными числами – об этом у нас есть отдельная статья.

А якщо масив зовсім невеликий, к примеру на 5 элементов, форматувати його можна відразу при оголошенні:

массивы в c  , масиви в с ++, одновимірний масив

Так элементу с индексом 0 – firstArray[0] – будет присвоено значение 11, а последнему элементу массива firstArray[4] – значение 15. Есть такая фишка – вы можете не указывать размер массива в квадратных скобках и сделать такую запись:

массивы в c  , масиви в с ++, одновимірний масив

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

Так же при начальной инициализации элементов массива, когда массив необходимо очистить от «мусора» (остаточных данных других программ в памяти) лучше сразу присвоить всем элементам значение 0.  Це виглядає так:

массивы в c  , масиви в с ++, одновимірний масив

Следует запомнить, что такая инициализация возможна только для заполнения нулями. Если необходимо заполнить элементы массива какими-либо другими числами, краще застосовувати цикл. У C ++ 11 (стандарт кодирования) при использовании списковой инициализации (инициализации с фигурными скобками) дозволяється навіть відкинути знак= .

массивы в c  , масиви в с ++, одновимірний масив

Хочется показать еще один прием инициализации при создании массива. К примеру, для массива из 30-ти элементов нам надо внести значения 33 і 44 только в ячейки с индексом 0 і 1 соответственно, а остальные заполнить нулями. Тогда делаем так:

массивы в c  , масиви в с ++, одновимірний масив

эти данные будут внесены в нулевую и первую ячейки, а остальные автоматически примут значение 0.

Организовать заполнение массива можно и при помощи оператора cin:

Чтобы присвоить или изменить значение конкретного элемента, надо обратиться к нему, використовуючи його індекс. Наприклад, все значения массива из 500-та элементов нас устраивают, але необхідно змінити значення лише одного. Тоді ми звертаємося до нього за його індексом :  firstArray[255] = 7;

З цим розібралися, теперь давайте посмотрим, яким же чином масив розташовується в оперативній пам'яті. Масив типу int з п'яти елементів займе 20 байт памяти – 4 байта (int) * 5 (количество элементов) – и эти данные будут располагаться в памяти последовательно, как показано на рисунке:

массивы в c  , масиви в с ++, одновимірний масив
массив int из пяти элементов в оперативной памяти

 Подведем итог и отметим всё самое важное о массивах:

  • синтаксис объявления массива :

         тіп_Данних_Массіва імя_массіва [размер];

    • переменные массива называются элементами, а каждый элемент имеет свой порядковый номер – индекс.

 

    • нумерація індексів елементів масиву починається з нуля!!!

 

    • форматувати масив можна тільки при його створенні – int firstArray[3] = {1, 2, 3};  Виконувати ініціалізацію пізніше вже не допускається:   firstArray[3] = {1, 2, 3};  Якщо масив ні инициализирован на початку, можно присвоить значения его элементам, використовуючи цикли або просто звертаючись до необхідного елементу через його індекс.

 

  • масив може бути одновимірним – таким, как рассмотрен в этом примере, і багатовимірним –  dvumernиm, трехмерным… (их мы рассмотрим в одной из наших следующих статей).

Не забывайте о необходимости практиковаться в решении задач – Завдання: Массиви в C++ . Хочете дізнатися більше про масивах в C ++ (в том числе о символьных массивах и строках)? Подивіться ці відео-уроки:

25 думки про "Массиви в C++ (відео)

  1. Маю питання є запитання, ось якщо наприклад я xочу задати в програмі своє питання, то як зробити, щоб за ключовими словами виконувалося певним чином впливати ?

    Наприклад:

    При введенні в програмі “знайти периметр”, то при переборі пропозиції, програма наxоділа слово “периметр” і переxоділа в рядки з виразом периметра, а якщо ввести словосполучення “знайти площу”, то переxоділа в рядки з виразом площі ?

    годину 4 шукав в інеті щось подібне, але так і не знайшов, а перебирати по одній букві, так код програми виходить ОЧ великий, ну і перестановка слів “знайти периметр” или “відняти периметр” вже пріxодітся писати ще більше операторів if.

    1. Мови C / C ++ є мовами не дуже високого рівня (в порівнянні з Python або навіть Java, например). І найменше в них приділено уваги саме обробці (аналізу) текстової інформації. Це куди краще робиться на інших мовах: Perl або той же Python.

      В принципі, вам дійсно доведеться аналізувати послідовно по одній букві … та ще й з огляду на, що російські літери представлені як wchar_t, т.е. НЕ однобайтні

      Деяку допомогу в C ++ вам може надати тип string, типу:

      string S;
      ...
      if( S == "периметр" ) ...

  2. Намагався вирішити таке завдання:

    “В одновимірному масиві з N елементів знайти і вивести на екран індекси двох сусідніх елементів, різниця між якими по модулю максимальна. Якщо таких пар декілька, вивести першу”.

    Я ні хрена не зрозумів. Яких-таких сусідніх елементів? Що за різниця по модулю? Допоможіть, вижпрограммісти!

залишити коментар

Ваша електронна адреса не буде опублікований. Обов'язкові поля позначені * *