Файл: Основы программирования на языке Pascal (Виды языков программирования).pdf
Добавлен: 29.03.2023
Просмотров: 326
Скачиваний: 1
Каждый одномерный массив имеет свой порядковый номер, для того что бы узнать значение массива, надо всего лишь указать его номер.
Что бы привести пример двумерного массива воспользуемся таблицей №3
Таблица 3
Двумерного массива
|
Курс/группы |
Группа А |
Группа Б |
Группа В |
Группа Г |
Группа Д |
Группа Е |
Группа Ж |
|
1курс |
30 |
31 |
31 |
31 |
32 |
30 |
30 |
|
2курс |
32 |
32 |
30 |
30 |
30 |
30 |
31 |
|
3курс |
33 |
30 |
30 |
31 |
30 |
32 |
32 |
|
4 курс |
32 |
32 |
31 |
31 |
30 |
30 |
30 |
Возьмем определенное количество групп и курсов, т.е. сделаем это в виде таблицы. Берем по вертикали 3 курса, а по горизонтали 5 групп (А, Б, В, Г, Д), то мы получаем пересечение, а это и будет матрица, т.е. двумерный массив.
Мы получаем строки и столбцы матрицы, строки по вертикали, а столбцы по горизонтали. [23, с.63]
В двумерном массиве так же храниться только одно значение. Что бы получить значение в двумерном массиве, нужно просто указать номер строки и столбца, на пересечении которого находиться элемент. На примере нашей таблицы попробуем узнать сколько учащихся находится в группе Д на втором курсе, по горизонтали находим курс, по вертикале группу, находим соприкосновение этих строк и столбцов и получаем ответ, вторая строка пятый столбец[2;5] сначала пишется номер строки, а потом номер столбца.
Также существует квадратная матрица, у нее количество строк и столбцов равно. В ней есть две диагонали - это главная диагональ и побочная.
Главная диагональ – это когда у строки и столбца номер одинаковый. Например: а[4,4], эта диагональ проходит от левого верхнего угла к правому нижнему. Побочная диагональ - это диагональ, которая идет из правого верхнего угла матрицы в левый нижний. Что бы получить какой либо элемент этой диагонали, для этого нужно знать размерность матрицы. Например, если размер матрицы a равен числу n и нам нужно получить элемент i , то воспользуемся вот такой записью a[i,n-i+1], результатом будет элемент стоящий на побочной диагонали в строке i. [13]
3.1. Описание примера
В нашем примере демонстрируются различные методы работы с массивами - статическими, динамическими, многомерными и несимметричными.
Простой массив значений типа int
Внутри метода main мы объявили массив iNumbers, содержащий переменные базового типа int:
int[] iNumbers;
Как и полагается, размер массива не указан, так как при объявлении массива память для него не резервируется. [14]
В следующей строке мы резервируем память для хранения 10 переменных типа int. Ссылку на эту память мы записываем в переменную iNumbers, завершая таким образом инициализацию массива:
iNumbers = new int[10];
Дополнительно мы объявляем переменную i, которая будет применяться для индексации этого и других массивов:
int i;
Запись значений в ячейки массива выполняется простым присваиванием в цикле:
for(i = 0; i < 10; i++)
iNumbers[i] = i;
После завершения этого процесса программа отображает на консоли значения, хранящиеся в массиве:
System.out.print("iNumbers: ["
+ iNumbers[0]);
for(i = 1; i < iNumbers.length; i++)
System.out.print("," + iNumbers[i]);
System.out.println("]");
Здесь мы вначале выводим на консоль содержимое первого элемента массива, а затем и всех остальных.
Обратите внимание на то, как мы проверяем условие выхода за пределы массива. Параметр цикла i сравнивается со значением iNumbers.length.
Что это за значение?
Все массивы в Java являются объектами некоторого встроенного класса. Поле length этого класса содержит размер массива. 16]
Массив объектов класса String
Ниже в примере показано, как можно выполнить статическую инициализацию массива, содержащего объекты встроенного класса String, предназначенного для работы с текстовыми строками:
String szLines[] =
{
"This",
"is",
"Java",
"String",
"array"
};
Здесь одновременно с объявлением массива мы выполняем и его инициализацию.
Отображение элементов массива на консоли выполняется в цикле и не имеет никаких особенностей:
System.out.print(szLines[0]);
for(i=1; i<szLines.length; i++)
System.out.print(" " + szLines[i]);
Многомерный массив объектов класса String
В следующем фрагменте кода мы объявляем двухмерный массив объектов класса String и сразу резервируем для него память:
String[][] szColors = new String[2][4];
Таким образом, создается массив из двух строк и четырех столбцов.
Для работы со строками таблицы мы будем использовать переменную i, определенную ранее. Чтобы перебирать столбцы таблицы, в программе определена переменная j:
int j;
Массив szColors заполняется в двойном вложенном цикле:
for(i = 0; i < 2; i++)
for(j = 0; j < 3; j++)
{
szColors[i][j] =
new String("Color (" + i + ","
+ j + ")");
}
При этом для каждой ячейки таблицы мы заказываем память оператором new. [17]
Вывод содержимого таблицы на консоль выполняется также в двойном вложенном цикле, как это показано ниже:
for(i = 0; i < 2; i++)
for(j = 0; j < 3; j++)
{
System.out.println(szColors[i][j]);
}
При определении массива szSounds мы задаем только количество строк:
String[][] szSounds = new String[2][];
Что же касается количества столбцов, то оно задается динамически при заполнении массива:
for(i = 0; i < szSounds.length; i++)
{
szSounds[i] = new String[3];
for(j = 0; j < szSounds[i].length; j++)
{
szColors[i][j] =
new String("Sound (" + i + ","
+ j + ")");
}
}
Здесь в каждой строке имеется три столбца, поэтому мы имеем дело с симметричным массивом. Содержимое этого массива мы выводим на консоль следующим образом:
for(i = 0; i < szSounds.length; i++)
for(j = 0; j < szSounds[i].length; j++)
{
System.out.println(szColors[i][j]);
}
Обратите внимание на то, как мы проверяем границы массива. Количество строк у нас - это значение szSounds.length. Количество столбцов в строке определяется как szSounds[i].length. В случае симметричного массива szSounds оно одинаковое для каждой строки. [19]
Несимметричный массив объектов класса String
Определяя несимметричный массив iAsymm, мы сначала не указываем, сколько в нем столбцов и строк:
String[][] iAsymm;
Далее при резервировании памяти для массива мы задаем только количество строк, равное двум:
iAsymm = new String[2][];
Затем в каждой строке задается разное количество столбцов: в первой строке - три столбца, а во второй - четыре:
iAsymm[0] = new String[3];
iAsymm[1] = new String[4];
Инициализируя несимметричный массив в двойном вложенном цикле мы не можем полагаться на то, что каждая строка содержит одинаковое количество столбцов. Поэтому предельное значение переменной внутреннего цикла определяется какiAsymm[i].length:
for(i = 0; i < iAsymm.length; i++)
{
for(j = 0; j < iAsymm[i].length; j++)
{
iAsymm[i][j] =
new String("Asymm (" + i + ","
+ j + ")");
}
}
Для первой строки оно равно трем, а для второй - четырем.
Содержимое несимметричного массива распечатывается на консоли следующим образом:
for(i = 0; i < iAsymm.length; i++)
{
for(j = 0; j < iAsymm[i].length; j++)
{
System.out.println(iAsymm[i][j]);
}
}
}
Здесь границы переменных внешнего и внутреннего циклов указаны как iAsymm.length и iAsymm[i].length, соответственно.
3.2. Примеры массивов
Пример статического массива на С/С++
int Array[5]; Одномерный массив целое число размера 5
Нумерация элементов от 0 до 4
Пример Javaстатического массива на языке
a = new int [9];указываем число элементов в массиве
b= new int [] {1…9};создаем массив, перечисляя значения его элементов
Пример статического массива на языке BASIK
Dim aName(140) As String объявление массива
В Basic для описания массивов применяют специальный оператор DIM, который обозначает размерность. Кроме оператора DIM для описания массива используется идентификатор (имя массива), тип массива и его размер. [21]
Например,
DIM A(7)
DIM V%(12)
DIM WR$(5)
Всегда нужно помнить о том, что нумерация элементов массива начинается с нуля.
3.3. Создание массивов
Массивы создаются тремя основными способами:
1)[1, 2, 3, 4]
2) Array.new(4){ |index| index + 1 }
3) (1..4).to_a
Работа с массивами:
1.Добавить значение в элемент массива. Для начала указываем имя массива, далее указываем значение в элементе массива в скобках:Dim numbers() As Integer
2.Получение значения из элемента массива. Внутри значение указываем имя массива, а потом ставим круглые скобки, в них указываем выражение, которое потом требуется получить: Dim sortedValues(), rawValues(), estimates(,,) As Double
lowestValue = sortedValues(0)
wTotal += (rawValues(v) ^ 2)
firstGuess = estimates(i, j, k)
Попробуем создать одномерный массив на примере фруктов:
$fruit[1] = “вишня”
$fruit [2] =“клубника”
$fruit [3] = “черешня”
$fruit [4] = “абрикос”
$fruit [5] = “яблоко”
В этом массиве содержаться все фрукты, которые мы поместили. Что бы вывести определенный фрукт задаем индекс, номер фрукта и будет индекс, к примеру возьмем 3
echo $fruit [3] = “черешня” // на экран выводиться “черешня”
Этот способ создания массива больше подходит для наглядного изображения, что бы понять систему создания массивов. Этот способ применяют редко. [22]
Теперь попробуем создать массив array:
$fruit = array(1=>“вишня”,2=>“клубника”,3=>“черешня”,4=>“абрикос”,5=>“яблоко”)
// массив создан
$fruit [4] = “абрикос”
Такой способ более рационален. Этот знак => указывает на присвоение индекса или наоборот.
И еще один способ создания с помощью функции array, но без указателей.
array(вишня”,“клубника”, “черешня”, “абрикос”, “яблоко”) // массив создан
$fruit [4] = “абрикос”
Давайте попробуем создать двумерный массив:
// массив Овощи
$o = array('помидор','огурец','картошка','лук');
// массив фрукты
$f = array('яблоко','персик','абрикос','виноград');
// массив Напитки
$n = array('чай', 'вода','кофе','морс');
// двумерный массив Продукты
$Products = array($o, $f, $n);
Для начала мы создали одномерные массивы, которые объединяются в продукты питания. Таким образом, уже массив $Products имеет в качестве значений своих ключей массивы. [24]
Ассоциативный двумерный массив.
// массив Овощи
$o = array('помидор', 'огурец', 'картошка', 'лук');
// массив фрукты
$f = array('яблоко', 'персик', 'абрикос', 'виноград');
// массив Напитки
$n = array('чай', 'вода', 'кофе', 'морс');
// двумерный массив Продукты
$Products = array('овощи'=> $o, 'фрукты'=> $f,'напитки'=> $n);
ЗАКЛЮЧЕНИЕ
В итоге из проведенной работы выяснили, что отсутствие циклов привело бы к огромным затруднениям, так как память, отделенная для программы была бы перегружена, из-за чего бы трудоемкость и быстродействие программы срабатывало очень медленно. Во всей курсовой работе ознакомились и просмотрели разнообразие циклов. Узнали, что циклы бываю с предусловием, постусловием и параметром.
Цикл while-do (цикл «ДО», цикл с предусловием который выполняется до того момента, пока выражение принимает истинное значение, но если же выражение приняло неверное значение, то происходит переход к дальнейшему оператору);
цикл repeat-until (цикл «ПОКА», цикл с постусловием, противоположен циклу «ДО», т.е. пока выражение неверное тело цикла продолжает работу, но если логическое выражение становиться верным, цикл прекращает свою работу).
цикл for (цикл «ДЛЯ», цикл со счетчиком, т.е. значения, принимают последовательный тип, т.к. значение переменной цикла увеличивается или уменьшается на один при каждой итерации цикла); [25]
Мы ознакомились и рассмотрели примеры с использованием циклов и уяснили, что тело цикла с постусловием обязательно выполняется хотя бы один раз, а вот тело цикла с предусловием возможно так и не выполнится. Цикличность программной структуры нужна для того, что при постоянно повторяющейся операции, мы устанавливаем цикл, количество операций, и оперативность программы увеличивается, благодаря чему у программиста тратиться меньше времени на прописывание действия.
Также узнали о массивах и их работе. Массивом может быть все, что нас окружает, это могут быть обычные жильцы, учащиеся, работники, продукты питания, предметы. Теперь нам известно, что массивы бывают одномерные и двумерные.
Двумерные массивы это те же самые одномерные только имеют общий элемент (матрицу, где указаны строки и столбцы). Что бы найти какой либо элемент в двумерном массиве можно просто указать его номер. Известно, что массивы создаются тремя способами, но в основном в работе применяется третий способ. Так же нам известно, что для описания массива в бейсик используется оператор DIM.