Массивы

  • doc
  • 29.04.2020
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала 37. Практическая работа по теме Массивы.doc

Практическая работа №11

Тема: Массивы.

Цель: Формирование навыков применения массивов, закрепление навыков составления блок-схем.

Вид работы: индивидуальный.

Время выполнения: 2 часа.

Теоретический материал

Тип массив – структура данных, представляющая собой набор переменных одинакового типа, имеющих общее имя.

Каждый элемент массива однозначно определяется именем и индексом (номером элемента в массиве).

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

Массив может быть:

-      одномерным   A1 [  ]

-      двумерным   A2 [ , ]    

Формат объявления одномерного массива в C#:

тип[ ] ИмяМассива = new тип [размер];

Формат объявления двумерного массива в C#:

тип [ , ] ИмяМассива = new тип [количество строк, количество столбцов];

тип – type  – имя типа значений элементов.

[ ] – признак массива. Запятые внутри скобок задают размерность массива. Запятых нет – массив одномерный, запятая одна – массив двумерный, запятых больше – массив многомерный.

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

размер – количество элементов, которые будут храниться в массиве.

Элементы массива могут быть любых типов.

Доступ к элементу массива осуществляется посредством индекса (позицию элемента внутри массива): ИмяМассива [ НомерЭлемента ].

Индексация массивов начинается с нуля: массив с элементами n индексируется от 0 до n-1. При обращении к элементу массива, надо указать его имя и номер элемента в квадратных скобках.

Например: A[0] – первый элемент массива A.

                    A[4] – пятый элемент массива А.

B[2,3] – элемент, лежащий на пересечении 3 строки и 4 столбца массива B.

Примеры объявления массивов:

static void Main(string[] args)

    {

int[ ] А = new int[5];  // одномерный массив А из 5 целых чисел

char[ ] H = new char[10];// одномерный массив H из 10 символов

double[,] M = new double [2, 3]; // двумерный массив 2х3 вещественных  чисел, содержащий 2 строки и 3 столбца

    }

При объявлении массива можно выполнить его инициализацию, т.е. присвоить начальные значения элементам массива в момент его создания.

Примеры объявления массивов с инициализацией:

int[  ] С = new int[ ] { 1, 3, 5, -7, 9 };  // массив С инициализирован пятью элементами

double[ ] D = { 1.5, 2.1, 3.65, 4.7, 5.14, 6.36 };   // Альтернативный синтаксис

char[ ] Q = {'a','b','g'};       //массив Q инициализирован тремя символами

string[ ] Team = {"Zenith", "Dynamo", "Sparta", "Rotor", "CSK"};

int[ , ] M= { { 1, 2, 3 }, { 4, 5, 6 } };    // массив M: 2 строки и 3 столбца инициализирован

int[ ,] L ={{0,2,4,6},{2,9,6,3},{4,7,5,8}, {1,6,5,7}}; //массив L (4х4) инициализирован

При инициализации допустимо указывать размер массива, но количество элементов списка инициализации должно соответствовать размерности массива. Иначе компилятор выведет сообщение об ошибке. Например: Int [ ] nemsnew int [ 10 ] { 99, 10, 100, 15, 76, 23, 85, 9 , 87, 49};

Типовые операции при работе с массивами:

-                   Вывод массива;

-                   Ввод массива;

-                   Поиск максимального/минимального элемента массива;

-                   Поиск заданного элемента массива;

-                   Сортировка массива.

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

При выводе всех элементов массива удобно использовать оператор цикла  for или foreach, при этом переменная счетчик может быть использована в качестве индекса элементов массива.

Пример вывода одномерного массива Team:

static void Main(string[] args)

        {

           

            string[] Team = { "Zenit ", "Dynamo ", "Sparta ", "Rotor ", "CSK " };

            foreach (string i in (string[])Team)

            {

                Console.Write("{0} ", i); //вывод элементов массива Team

            }

            Console.ReadKey();

 

        }

При вводе элементов массива удобно использовать оператор цикла  for или foreach, при этом переменная счетчик может быть использована в качестве индекса элементов массива.

Иногда в качестве элементов массива используют случайные числа, которые можно получить с помощью функции Random() - случайное число в диапазоне 0..1.

Программа помещает в массив A числа от 0 до 9.

static void Main(string[] args)

        {

            int[] A = new int[10];              // одномерный массив А из 10 целых чисел

            for (int i=0; i<10; i++)

                A[i] = i;

            for (int i = 0; i < 10; i++)

                Console.WriteLine("A[" + i + "]=" + A[i]);

            Console.ReadKey();

        }

Ход работы:

Выполнить задание, алгоритм записать, блок-схему зарисовать, ответить на вопросы.

Задания

1. Скомпилировать следующий алгоритм, реализующий заполнение двумерного массива Т[3x4] числами от 1 до 12. Блок-схема решения представлена на рисунке 9.

static void Main(string[] args)

        {

            int[ , ] T = new int[3,4];

           Console.WriteLine("Сформированная матрица");

            Console.WriteLine();

            for (int i = 0; i < 3; ++i)

            {

                for (int j = 0; j < 4; ++j)

                {

                    T[i, j] = (i * 4) + j + 1;

                    Console.Write("{0,2} ",T[i, j]);             

                }

                Console.WriteLine();

               }

                Console.ReadKey();

 }                                            

Рисунок 9 – Блок-схема алгоритма решения задачи

2. Скомпилировать следующий алгоритм, реализующий в массиве X из 10 элементов поиск наибольшего элемента и определение его номера. Блок-схема решения представлена на рисунке 10.

              static void Main(string[] args)

        {

            int[] X = new int[10]{-5, 6, -8, 2, 4, 9, -7, 4, 1, 0};              

                                  // одномерный массив Х из 10 целых чисел       

            int Xmax;  // максимальный элемент

            int Imax;   // номер максимального элемента

            for (int i = 0; i < 10; i++)

            Console.WriteLine("X[" + i + "]=" + X[i]);

            Console.WriteLine(); // вывод элементов массива

            Xmax = X[0];            // предположение

            Imax = 0;

            for (int i = 1; i < 10; i++)

                if (X[i] > Xmax)

                {

                    Xmax = X[i];   // выявление max

                    Imax = i;

                }

            Console.WriteLine("Максимальный элемент: {0} ", Xmax);

            Console.WriteLine("Его номер: {0} ", Imax+1);

            Console.ReadKey();

        }

Рисунок 10– Блок-схема алгоритма решения задачи

При выявлении минимального элемента условие > заменяется на < :

if (X[i] < Xmin)

                {

                    Xmin = X[i];   // выявление min

                    Imin = i;         // его номера

                }

3. Скомпилировать следующий алгоритм, реализующий поиск заданного элемента в массиве и  вывод его на экран дисплея. Блок-схема решения представлена на рисунке 11.

Рисунок 11– Блок-схема алгоритма решения задачи

static void Main(string[] args)

    {

         int[] Mas = new int[10]{-5, 6, -8, 2, 4, 9, -7, 4, 1, 0};          

                    // одномерный массив Mas из 10 целых чисел       

         int obr;      // образец для поиска

         bool Yes; // признак обнаружения

         int i;         //счетчик цикла

         for (i = 0; i < 10; i++)

         Console.WriteLine("Mas[" + i + "]=" + Mas[i]);

         Console.WriteLine();

         Console.WriteLine("Введите образец для поиска");

         obr = Convert.ToInt16(Console.ReadLine());

         Yes = false;

         i=0;

            do

            {

                if (Mas[ i ]==obr )

                {

                    Yes=true;

                    break;

                }

            else i=i+1;

            }

         while ( i<10  | Yes == true);

         if (Yes == true) Console.WriteLine("Имеется

совпадение с элементом {0}. Его индекс: {1}", Mas[i], i );

else Console.WriteLine("Совпадение с образцом отсутствует ");

         Console.ReadKey();

}

Контрольные вопросы:

1)     Что является массивом?

2)     Что является размерностью массива?

3)     Что является признаком массива?

4)     Каким образом объявляются одномерные и двумерные массивы?

Какие операции применяются при работе с массивами?


Скачано с www.znanio.ru