- Урок 14. Одномерные массивы. Работа с элементами
- Одномерные массивы. Определение.
- Одномерные массивы. Решение задач.
- 3.2.Способы задания одномерных массивов.
- 3.3.Описание типа одномерных массивов.
- 4.Двумерные массивы.
- BestProg
- Массивы в C#. Часть 1. Одномерные массивы. Примеры решения задач на одномерные массивы
- Содержание
- ⇑
- ⇑
- ⇑
- ⇑
- ⇑
- ⇑
- ⇑
- ⇑
- ⇑
- ⇑
- ⇑
- ⇑
- ⇑
- ⇑
- ⇑
- Способы задания одномерных массивов
Урок 14. Одномерные массивы. Работа с элементами
Сегодня мы с вами наконец-то начинаем новую тему — одномерные массивы .
Одномерные массивы. Определение.
Одномерный массив — это фиксированное количество элементов одного и того же типа, объединенных одним именем, где каждый элемент имеет свой номер. Обращение к элементам массива осуществляется с помощью указания имени массива и номеров элементов.
Между именем типа и именем переменной ставится знак «двоеточие». Array — служебное слово (в переводе с английского означает «массив», «набор»); [1..N] — в квадратных скобках указывается номер первого элемента, затем, после двух точек, номер последнего элемента массива; of — служебное слово (в переводе с английского «из»); integer — тип элементов массива.
Индексом могут быть не только натуральные числа: мы можем написать так: [0..10], [-29..45], [‘a’..’z’], [false..true] — то есть нам подходят любые символы и числа — главное соблюсти следующее условие: левая часть меньше правой. Для того чтобы определить, что меньше — восклицательный знак(‘!’) или точка(‘.’) используем таблицу ASCII и функции Ord() и Chr().
Как же производится ввод одномерного массива?
Для того чтобы ввести или вывести значения элементов такого массива, используем цикл с параметром(или с постусловием, или с предусловием — в общем, любой цикл. ).
Как видите, ничего страшного в массивах нет. Массивы применяют в тех случаях, когда нельзя обойтись одной-двумя переменными (примеры таких задач мы рассматривали в решении задач из блока Series). В случаях, когда после ввода последовательности целиком пользователю необходимо обратиться к переменным в середине последовательности, в начале, поменять их значения местами, отсортировать.
Раз уж мы затронули тему задач из блока Series, давайте решим пару задачек оттуда с помощью массивов, а не тем увечным способом, которым нам приходилось пользоваться.
Одномерные массивы. Решение задач.
Series8. Дано целое число N и набор из N целых чисел. Вывести в том же порядке все четные числа из данного набора и количество K таких чисел.
Series28. Дано целое число N и набор из N вещественных чисел: A1, A2, …, AN. Вывести следующие числа:
Исходное решение: Series28.
Более подробно про возведение числа в степень мы говорили в решении задачи for36.
Ну и напоследок давайте разберём веселенькую задачу на длинную арифметику.
Задача. Найти факториал числа.
Мы уже решали эту задачу здесь(for19).
Научимся вычислять факториал натурального числа N. Факториал числа — это произведение чисел 1*2*3*…*(N-1 )*N (обозначается как N!). Сложность задачи в том, что уже 8!=40320, а 13!=6227020800. Типы данных Integer, Longlnt применимы весьма в ограниченном диапазоне натуральных чисел. Для представления факториала договоримся использовать массив. Пример:
A[0] | A[1] | A[2] | A[3] | A[4] | A[5] | A[6] | A[7] | A[8] |
8 | 0 | 0 | 8 | 6 | 1 | 9 | 9 | 3 |
В массиве записано значение 11!=39916800. Каким образом? В А[0] фиксируется число занятых элементов массива, в А[1] — цифра единиц результата, в А[2] — цифра десятков результата, в А[3] — цифра сотен результата и т. д. Почему так, а не наоборот? Такая запись позволяет исключить сдвиг элементов массива при переносе значений в старший разряд. А сейчас наберите, как обычно, текст программы, выполните компиляцию и, выполните ее в пошаговом режиме, отслеживая изменение значений переменных при не очень большом значении N. Добейтесь полного понимания логики работы программы.
Для того чтобы выполнить программу в пошаговом режиме, нажмите «шаг без входа в подпрограмму» и перейдите в «локальные переменные».
Одномерный массив — это конечное упорядоченное множество элементов. За первым элементом идет второй, за вторым — третий и т. д. Индекс может быть чем угодно — и целым числом, и символом. Но чаще мы всё-таки будем пользоваться следующим диапазоном: [1.. N].
На сегодня все! Если у вас еще остались вопросы о том, как работает программа выше, оставляйте их в комментариях. И очень скоро мы начнем решать задачи на массивы из задачника М. Э. Абрамяна.
Источник
3.2.Способы задания одномерных массивов.
Первый способ задания одномерного массива — это задание с клавиатуры. Заполнение и вывод массива можно осуществлять только поэлементно, то есть можно сначала присвоить значение первому элементу, затем второму и так далее, до последнего; то же самое и с выводом на экран — выводим первый, второй, третий и так до последнего. На Паскале заполнение одномерного массива, состоящего из N элементов, с клавиатуры осуществляется следующим образом.
Массив m должен быть предварительно объявлен в разделе переменных.
Вывод массива осуществляется следующим образом:.
Второй способ задания это задание с помощью генератора случайных чисел, этот способ более удобен, когда много элементов в массиве.
На Паскале данный способ реализуется следующим образом: в теле программы, перед заполнением массива необходима включить генератор случайных чисел Randomize;,после чего записывают примерно так:
For i: =I to n Do
<Random выбирает случайное число из отрезка от 0 до 99, тогда i-му элементу массива будет присвоена сумма выбранного случайного числа и -25, таким образом, массив будет заполнятся случайными числами от-25 до -25+(99), то есть до 26+100>
Распечатка такого массива аналогична первому способу.
Третий способ задания – это чтение чисел из файла. Этот способ будет рассматриваться позже.
3.3.Описание типа одномерных массивов.
Опишем в разделе типов свой тип — одномерный массив, состоящий из n целых чисел.
Type myarray=Array [1. n] of Integer;
Попомним , что раздел типов начинается со служебного слова TYRE, после этого идет имя нового типа и его описание. Между именем типа и его описанием ставится знак “равно” (в разделе переменных между именем переменной и ее описанием ставится двоеточие).Тогда: myarray—это имя нового типа;
Array-служебное слово (в переводе с английского означает “массив”, ″набор″):
[1. n]-в квадратных скобках указывается номер первого элемента, затем, после двух точек, номер последнего элемента массива, пусть в этом примере первый элемент имеет номер 1, а последний – n..
Of—служебное слово (в переводе с английского — ″из″ Integer—тип всех элементов массива.
4.Двумерные массивы.
Массивы, положение элементов в которых описываются двумя индексами, называются двумерными. Их можно представить в виде прямоугольной таблицы или матрицы.
Рассмотрим матрицу А размерность 2*3, то есть в ней будет две строки, а в каждой строке по три элемента:
каждый элемент имеет свой номер, как у одномерных массив, но сейчас номер уже состоит из двух чисел — номера строки, в которой находится элемент, и номера столбца. Таким образом, номер элемента определяется пересечением строки и столбца. Например, а12-это элемент, стоящий в первой строке и втором столбце.
Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.
Источник
BestProg
Массивы в C#. Часть 1. Одномерные массивы. Примеры решения задач на одномерные массивы
Содержание
Поиск на других ресурсах:
1. Что такое массив в языке программирования?
Массив – это объединенная в единое целое группа переменных одного типа к которым можно обращаться по единому имени. Использование массивов в программе позволяет удобно организовывать наборы данных и осуществлять упрощенный доступ к этим данным с помощью имени массива и индекса.
⇑
2. Какие виды массивов могут быть представлены в C#?
Язык программирования C# позволяет представлять два вида массивов:
- одномерные массивы;
- многомерные массивы.
В многомерных массивах различаются двумерные и многомерные прямоугольные массивы. Кроме того, язык программирования C# имеет средства для организации работы с так называемыми ступенчатыми массивами.
⇑
3. Какие преимущества использования массивов в программах?
Использование массивов в программах имеет такие основные преимущества:
- удобство и простота организации однотипных наборов данных;
- удобство обработки данных (сортировка, поиск, проведение вычислений) с помощью операторов цикла языка C#.
⇑
4. Каким образом в языке C# организовано представление массивов?
В языке C# массивы организованы в виде объектов. Это означает, что для массива обязательно может быть выделена память с помощью оператора new .
⇑
5. Какая общая форма объявления одномерного массива?
Общая форма объявления одномерного массива следующая
- тип – тип элементов массива;
- имя_массива – непосредственно имя объявляемого массива;
- размер – количество элементов массива. Нумерация элементов массива начинается с нуля.
⇑
6. Примеры объявления одномерных массивов разных типов и размерностей
Пример 1. Объявление одномерного массива из 100 целых чисел (тип int ).
Пример 2. Объявление одномерного массива из 50 вещественных чисел (тип double ).
⇑
7. Каким образом осуществляется доступ к элементам одномерного массива? Пример
Доступ к элементам одномерного массива осуществляется с помощью индекса. Индекс определяет положение элемента в массиве. Первым индексом массива есть индекс, который имеет значение 0. Чтобы получить доступ к элементу массива с помощью индекса, нужно взять индекс элемента в квадратные скобки.
Пример 1. Доступ к элементам массива целых чисел (тип long ).
Пример 2. Объявление и заполнение произвольными значениями массива из 10 вещественных чисел типа float.
⇑
8. Пример обнуления одномерного массива из 100 вещественных чисел
⇑
9. Пример поиска заданного элемента в одномерном массиве
⇑
10. Пример подсчета количества вхождений заданного элемента в одномерном массиве целых чисел
В примере осуществляется подсчет количества вхождений заданного значения (сохраняется в переменной n ) в массиве M . Результат записывается в переменную k .
⇑
11. Пример сортировки элементов одномерного массива методом вставки
⇑
12. Какая общая форма инициализации одномерного массива?
В языке C# массив может быть инициализирован значениями при его создании (объявлении). Общая форма инициализации массива:
- тип – тип элементов массива;
- имя_массива – непосредственно имя массива;
- значение1 , значение2 , значениеN – значения, которыми инициализируются элементы массива в порядке индексирования. Значение1 будет присвоено ячейке массива с индексом 0. Значение2 будет присвоено ячейке массива с индексом 1 и т.д. ЗначениеN будет присвоено ячейке массива с индексом N-1 .
В случае инициализации массива отпадает необходимость использовать оператор new . Система автоматически выделит необходимый объем памяти для массива.
⇑
13. Пример инициализации одномерных массивов при их объявлении
⇑
14. Пример объявления и использования одномерного массива структур
Дополнительную информацию о работе с массивами структур можно получить в теме:
Пусть задан тип структуры BOOK , описывающей информацию о книге
Тогда код, который объявляет массив структур типа BOOK будет иметь приблизительно следующий вид
⇑
15. Что происходит, если в программе не придерживаться границ массива?
Язык программирования C# строго придерживается допустимых границ массива, которые задаются при его объявлении. Если при доступе к элементам массива, значение индекса выходит за пределы массива, то возникает исключительная ситуация типа IndexOutOfRangeException . В этом случае программа преждевременно завершится.
⇑
16. Пример объявления и использования одномерного массива классов
Пусть в отдельном модуле задается описание класса MyPoint , который описывает точку на координатной плоскости
Тогда, объявление и использование массива из 5 объектов типа MyPoint будет иметь приблизительно следующий вид
Источник
Способы задания одномерных массивов
Для ввода и вывода числовых значений массива используются циклы.
Рассмотрим процедуры, которые бы формировали одномерный массив двумя способами
1) случайным образом,
2) вводом элементов с клавиатуры
Предположим, что мы будем работать с массивом целых чисел. Пусть нам достаточно иметь максимальное количество элементов равное 50. Процедура принимает параметр по ссылке массив Massiv заданного типа и целую переменную n, отвечающую за количество заполняемых ячеек массива. Также нам нужна будет локальная переменная i, которая будет выполнять функции параметра цикла и использоваться для указания номера, определяющего местоположение элемента в массиве.
1. Формирование одномерного массива случайным образом. Зададим значение каждого элемента результатом случайной функции Random(10). Заполнение массива зададим циклическим оператором for, в теле которого выполняется вычисление случайного числа функцией Random(10), после чего это значение присваивается очередному i-му элементу массива.
Procedure InsertMas1(Var massiv:mas; n:integer);
2. Формирование одномерного массива вводом элементов с клавиатуры.
Procedure InsertMas2(Var massiv:mas; n:integer);
write(‘Введите ‘,i,’-ый элемент массива ‘);
Вывод массива на экран осуществляется следующим образом:
Procedure PrintMas(massiv:mas; n:integer);
Задание. Составьте программу-шаблон, в которой содержались бы два возможных варианта ввода элементов массива, оформленных в виде процедур, и одна процедура вывода полученного массива на экран. Результат работы покажите учителю для оценки.
Теперь проверьте себя, попробовав ответить на вопросы:
1. Что понимается под массивом?
2. Как обозначить в программе элементы массива?
3. Какие операции разрешены над элементами массива?
4. Как организовать в программе ввод и вывод элементов массива?
5. Приведите примеры, где можно использовать массивы.
6. Какие из приведенных описаний одномерных массивов являются правильными и почему?
a) Var a: Array[1..20] of Integer;
b) Type Myarrray: Array[1..20]
c) Var sd:Array[1..n] of Integer;
d) Var dd:Array[1] of integer;
7. Сколько элементов в каждом из следующих массивов
a) Var mb: Array[2..20] of Integer;
b) Type myarray1[2..20] of Integer;
myarray2[-5..5] of Integer;
Var aa: myarray1;
Дополнительное задание. (на усмотрение учителя)
1. Организуйте ввод в массив и выдайте на экран следующие последовательности:
б) список учеников вашего класса
2. Организуйте ввод чисел в массив с клавиатуры, а вывод элементов массива в столбик. Ввод и вывод организуйте в процедурах.
3. Дан произвольный массив N элементов. Организуйте вывод элементов массива на экран начиная с последнего элемента.
Источник