Файл: Особенности и примеры использования массивов при разработке программ..pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 31.03.2023

Просмотров: 347

Скачиваний: 6

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

50 => 60,

 "drugiVasi" => array(
         "good" => array(
             "Petrov" => "Petya"

"Ivanov" => "Ivan"
 )

         "sogood" => array(
             "Sidorov" => "Sidor"

"Maria" => "Ivan"
    )
);

$numbers = [20, -3, 50, -99, 55]; - пример числового массива

print_r ($numbers[1]); - обращаемся ко второму элементу массива

Полезные функции в PHP для работы с массивами

Одной из первых таких функций является array_combine(), которая создаёт новый массив из двух существующих: первый использует для создания ключей, второй в качестве значений:

$keys = ['sky', 'grass', 'orange']; - здесь мы инициализируем 1 массив

$values = ['blue', 'green', 'orange']; - здесь мы инициализируем 2 массив

$array = array_combine($keys, $values); - создаем 3 массив на основании первых двух

print_r($array); - выводим результат

В результате мы получили ассоциативный массив

// Array

// (

// [sky] => blue - здесь [sky] – индекс, blue – элемент

// [grass] => green

// [orange] => orange

// )

В этом же разрезе нам могут пригодиться функции array_values(). Она извлекает из ассоциативного массива значения; array_keys() возвращает только ключи заданного массива; array_flip() меняет местами ключи и значения:

print_r(array_keys($array)); // ['sky', 'grass', 'orange']

print_r(array_values($array)); // ['blue', 'green', 'orange']

print_r(array_flip($array));

Перебор значений массива с помощью цикла:

$arrays = [[1, 2], [3, 4], [5, 6]]

foreach ($arrays as list($a, $b)) {

$c = $a + $b;

echo($c . ', '); // 3, 7, 11,

}

С помощью функции array_sum() можно посчитать сумму элементов массива; array_product() перемножит все значения; array_reduce() позволит применить свою собственную формулу:

$numbers = [1, 2, 3, 4, 5];

echo(array_sum($numbers)); // 15

echo(array_product($numbers)); // 120

Генерация массивов. $bind = array_fill(0, 5, '?');

Удаление элементов из массива и удаление массивов.

unset($arr[5]); - удаляем элемент из массива

unset($arr); - удаляем массив целиком

Функция sort() сортирует элементы массива в возрастающем порядке и присваивает новые ключи элементам массива. Разновидности сортировки в зависимости от префиксной буквы:

  • asort(), сортировка, сохраняющая отношения между ключами и значениями
  • ksort(), сортировка по ключам
  • rsort(), сортировка в прямом/обратном порядке

Работа с массивами в C


При решении задач с большим количеством данных одинакового типа использование переменных с различными именами, не упорядоченных по адресам памяти, затрудняет программирование. В подобных случаях в языке Си используют массивы. С точки зрения языка Си – языка низкого уровня, сильно приближенного к «железу» компьютера

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

Длина массива – количество байт, отводимое в памяти для хранения всех элементов массива.

Инициализация массива:

int arr[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; - массив arr содержит 10 элементов, со значениями от 0 до 9

#include <stdio.h>
int main()
{
  int arr[] = { 5, 4, 3, 2, 1, 0, -1 }; - массив arr содержит 7 элементов
  printf("%d %d %d %d %d\n", a[0], a[1], a[2], a[3], a[4], a[5], a[6]);
  getchar();
  return 0;
}

Многомерный массив.

#include <stdio.h>
int main()
{
  int a[2][3] = { 1, 2, 3, 4, 5, 6 };
  printf("%d %d %d\n", a[0][0], a[0][1], a[0][2]);
  printf("%d %d %d\n", a[1][0], a[1][1], a[1][2]);
  getchar();
  return 0;
}

В отличие от рассмотренного выше языка PHP, в C нет такого обилия встроенных функций по работе с массивами. Но по большому счету это не вызывает каких-либо неудобств. Все прекрасно делается с помощью условий и циклов. Массив в C должен иметь константный размер. Это значит, что невозможно, например, запросить у пользователя размер, а потом задать этот размер массиву.

В некоторых случаях можно узнать размер массива с помощью функции sizeof.

#include <conio.h>

#include <stdio.h>

void main() {

    int A[57];

    //sizeof возвращает размер всего массива в байтах

    int size = sizeof(A) / sizeof(int);

    printf("Size of array equals to %d", size);

    getch();

}

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

Динамические массивы — это массивы, память для хранения которых выделяется в момент выполнения программы. В отличие от них статические массивы удалить нельзя — они существуют в течение всего времени исполнения программы.

Стандартная библиотека языка Си содержит несколько функций для работы с динамической памятью: malloc, free

Работа с массивами в Lua


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

arr = {“Вася”, “Петя”, “Федя”};

А вот так инициализируется пустой массив: arr = {};

Еще можно так заполнить массив:

arr [1] = " Вася ";

arr [2] = " Петя ";

arr [3] = " Федя ";

Особенностью языка Lua можно назвать то, что массивы индексируются начиная с 1, а не 0, как в большинстве языков программирования.

arr = {[1]=“Вася”, [2]=“Петя”, [3]=“Федя”}; – это выражение эквивалентно тому, что находится выше.

Оператор получения длины #, применённый к массиву, возвращает его максимальный индекс (или размер): max = #arr

Обращение к элементу массива: print(arr[1]); // Вася

Для получения всех элементов массива, могут использоваться конструкции for, foreach:

for i=1,10 do

arr[i] = nil;

end

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

Arr3 = {{"Вася","Пупкин",},"Петя","Федя"};

Характерной особенностью языка Lua, отличающей его от рассмотренных выше языков, является то, что массивы как таковые используются реже, чем производные от них – таблицы. В отличие от массивов элементы таблицы индексируются переменными. А значением может быть абсолютно любой тип данных Lua, да и вообще всё что угодно.

Работа с массивами в Ruby

В Ruby массивы могут содержать любые типы данных, включая числа, строки и другие объекты Ruby. Пример массива в Ruby по синтаксису ничем не будет отличаться от аналогичного примера в РНР:

arr = [

"Вася",

"Петя",

"Федя",

"Маруся"

] или в одну строку arr = ["Вася", "Петя", "Федя", "Маруся"]

Здесь стоит обратить внимание на особенность языка – после массива не ставится точка с запятой.

arr = [] – пример пустого или безразмерного массива

Записи можно иупростить:

days = %w{Monday Tuesday Wednesday Thursday Friday Saturday Sunday} – эта запись аналогична следующей:

days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]

Следующий пример содержит разные типы данных в массиве, включая другой массив:

arr = [

"Вася",

null,

"Возраст",

30,

[

"пол",

"мужской",

]

3,1415

]

Индексы в Ruby начинаются с 0. Соответственно доступ к элементам массива будет выглядеть следующим образом: print arr[3] // получим 30

Методы, использующиеся при работе с массивами:

Чтобы найти последний элемент в массиве, используется индекс -1.

Чтобы узнать количество элементов в массиве, используется метод length. Пример: arr.length // 6

Чтобы узнать индекс определенного элемента в массиве, используется метод index().


Также Ruby предоставляет методы first и last, которые выводят первый и последний элемент массива без индекса.

При запросе несуществующего индекса программа выдаст nil.
arr [10] выдаст nill, потому что в массиве такого индекса нет. Вообще, любой язык программирования, так или иначе, обрабатывает запрос к несуществующему индексу в массиве. Как правило, все выдают значение nill/null в этой ситуации. Одним из исключений будет являться язык С. Так как это язык низкого уровня, оперирующий с адресами в памяти, программа, написанная на нем вылетит с ошибкой.

Чтобы добавить элемент в конец массива используется метод push.

Добавить элемент в начало массива можно с помощью метода unshift.

Чтобы удалить определенный элемент из массива, используются методы delete или delete_at. Метод pop() удаляет последний элемент в массиве.

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

Работа с массивами в Haskell

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

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

Список — это стандартный тип, характеризующий уже не просто данные, но структуру данных. Эта структура представляет собой набор данных одного типа. Одного типа – это надо запомнить. Это главное отличие от массивов, где типы могут быть разные.

Вот пример списка: [1.3, 45.7899] – очень похоже на LUA, не правда ли?

В стандартной Haskell-библиотеке существует отдельный модуль Data.List, включающий широкий набор функций, работающих со списком. Откроем модуль Main и импортируем в него модуль Data.List:

module Main where

import Data.List

main :: IO ()

main = putStrLn (head ["Вася", "Петя", "Федя"])

// head возвращает первый элемент списка т.е. «Вася».

main = print (tail ["Вася", "Петя", "Федя"])

// tail возвращает остальные элементы списка.

Список целых чисел от 1 до 1000

main :: IO ()

main = print tenNumbers

where tenNumbers = [1..1000]

Здесь хотелось бы отметить, что списки в Haskell в отличие от массивов в других языках, они неизменны, тобишь добавить или удалить что-либо из списка после его создания не получится, только если создать на основе старого списка список новый.


['a'..'z'] = "abcdefghijklmnopqrstuvwxyz" – алфавит

Кортеж — ещё одна стандартная структура данных, но, в отличие от списка, она может содержать данные как одного типа, так и разных. Эта структура

Структуры, способные содержать данные разных типов, называют гетерогенными (в переводе с греческого: «разного рода»).

("Миша", "2019", "Курсач", "4" )

Со списками можно делать много всего, а вот с кортежами — не очень. Самые частые действия — собственно формирование кортежа и извлечение хранящихся в нём данных.

Работа с массивами в Go

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

package main

import "fmt"

func main() {

var arr [5]int

fmt.Println("emp:", arr)

В этом примере мы создали массив arr, который будет содержать именно 5 элементов типа int. Тип данных и размер массива - обязательны при объявлении массива. По-умолчанию массив имеет нулевые значения элементов. Для int это 0.

a[4] = 100

fmt.Println("set:", a) - устанавливаем значение элемента в массиве

fmt.Println("get:", a[4]) - получаем значение элемента массива

fmt.Println("len:", len(a)) -Встроенная функция len возвращает размер массива

b := [5]int{1, 2, 3, 4, 5} – инициализируем массив одной строкой

fmt.Println("dcl:", b)

var twoD [2][3]int - создаем многомерный массив

for i := 0; i < 2; i++ {

for j := 0; j < 3; j++ {

twoD[i][j] = i + j

}

}

fmt.Println("2d: ", twoD)

}

Работа с массивами в Rust

В языке программирования Rust, так же как и в языке Go, массивы представлены набором объектов одного типа с фиксированной длинной. Массивы создаются с помощью квадратных скобок [].

let arr = [1, 2, 3]; - инициализируем массив

for arr in &arr {

println!("Массив: {}", arr);

} - вывод элементов массива

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

Кортеж похож на массив, только может хранить значения разных типов. Элементы кортежа указываются между круглыми скобками ().

let tuple2 = (2, "Вася"); - создание кортежа

println!("Число: {}", tuple2.0);

println!("Строка: {}", tuple2.1);

} – вывод элементов кортежа

let ones = [1; 20]; - создаем 20 единичек

Работа с массивами в Java

Как и во многих других языках в Java массивы – это  именованное множество переменных одного типа. Чтобы сослаться на определённый элемент в массиве нужно знать имя массива в соединении с целым значением, называемым индексом. Индекс указывает на позицию конкретного элемента относительно начала массива. Обратите внимание, что первый элемент будет иметь индекс 0, второй имеет индекс 1, третий - индекс 2 и так далее.