Структурированные типы данных. Массивы в среде «КуМир»

Понятие массива

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

В «КуМире» массивы бывают:

  • одномерные (линейные);
  • двумерные (матрицы).

Описание массивов в «КуМире»

Массив нужно объявить перед использованием, указав:

  • тип элементов;
  • имя массива;
  • размерность (диапазон индексов).

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

  • Одномерный массив:
    цел таб A[1:10]  // массив из 10 целых чисел с индексами от 1 до 10
    вещ таб B[1:5]  // массив из 5 вещественных чисел с индексами от 1 до 5
    
  • Двумерный массив (матрица):
    цел таб M[1:3, 1:4]  // матрица 3×4 целых чисел
    

Важные нюансы:

  • по умолчанию индексация начинается с 1;
  • можно задать любой диапазон индексов, например A[0:9] или A[-5:5];
  • все элементы массива должны быть одного типа.

Основные операции с массивами

  1. Заполнение массива:
    • вручную (ввод с клавиатуры);
    • по формуле;
    • случайными значениями.
  2. Обработка элементов:
    • перебор всех элементов;
    • поиск по условию;
    • изменение значений.
  3. Вывод массива:
    • на экран;
    • в файл.

Примеры работы с массивами

Пример 1. Одномерный массив: заполнение и вывод

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

алг РаботаСМассивом
нач
    цел таб A[1:5]
    цел i
    
    вывод "Введите 5 чисел:", нс
    нц для i от 1 до 5
        ввод A[i]
    кц
    
    вывод "Массив:", нс
    нц для i от 1 до 5
        вывод A[i], " "
    кц
кон

Пример 2. Вычисление суммы элементов массива

Задача: найти сумму элементов массива из 10 целых чисел.

алг СуммаЭлементов
нач
    цел таб A[1:10]
    цел i, сумма
    
    сумма := 0
    
    вывод "Заполните массив:", нс
    нц для i от 1 до 10
        ввод A[i]
        сумма := сумма + A[i]
    кц
    
    вывод "Сумма элементов: ", сумма, нс
кон

Пример 3. Поиск максимального элемента

Задача: найти максимальный элемент в массиве из 7 чисел.

алг ПоискМаксимального
нач
    цел таб A[1:7]
    цел i, max
    
    вывод "Заполните массив:", нс
    нц для i от 1 до 7
        ввод A[i]
    кц
    
    max := A[1]  // предполагаем, что первый элемент — максимальный
    нц для i от 2 до 7
        если A[i] > max
            то max := A[i]
        все
    кц
    
    вывод "Максимальный элемент: ", max, нс
кон

Пример 4. Двумерный массив (матрица): заполнение и вывод

Задача: создать матрицу 3×3, заполнить её случайными числами от 1 до 10 и вывести на экран в виде таблицы.

алг РаботаСМатрицей
нач
    цел таб M[1:3, 1:3]
    цел i, j
    
    нц для i от 1 до 3
        нц для j от 1 до 3
            M[i, j] := int(rnd(10)) + 1  // случайное число от 1 до 10
        кц
    кц
    
    вывод "Матрица:", нс
    нц для i от 1 до 3
        нц для j от 1 до 3
            вывод M[i, j], " "
        кц
        вывод нс  // переход на новую строку
    кц
кон

Пример 5. Обработка матрицы: сумма элементов главной диагонали

Задача: вычислить сумму элементов главной диагонали квадратной матрицы 4×4.

алг СуммаДиагонали
нач
    цел таб M[1:4, 1:4]
    цел i, сумма
    
    сумма := 0
    
    вывод "Заполните матрицу 4x4:", нс
    нц для i от 1 до 4
        нц для j от 1 до 4
            ввод M[i, j]
        кц
    кц
    
    нц для i от 1 до 4
        сумма := сумма + M[i, i]  // элементы главной диагонали: M[1,1], M[2,2] и т. д.
    кц
    
    вывод "Сумма элементов главной диагонали: ", сумма, нс
кон

Особенности работы с массивами в «КуМире»

  1. Индексация: по умолчанию начинается с 1, но можно задать любой диапазон.
  2. Типы данных: поддерживаются цел, вещ, лог (логические массивы).
  3. Ограничения: размер массива задаётся при объявлении и не может быть изменён в процессе выполнения программы.
  4. Инициализация: элементы массива не инициализируются автоматически, их нужно заполнять явно.
  5. Границы: выход за границы массива приведёт к ошибке выполнения.

Полезные советы

  • Всегда проверяйте границы массива при обращении к элементам.
  • Используйте циклы для обработки всех элементов массива.
  • Для двумерных массивов удобно использовать вложенные циклы.
  • При работе с большими массивами разбивайте задачу на подзадачи (вспомогательные алгоритмы).
  • Комментарии помогут понять логику работы с массивом.

Краткий справочник по синтаксису

Действие Синтаксис
Объявление одномерного массива цел таб A[1:N]
Объявление двумерного массива цел таб M[1:N, 1:M]
Обращение к элементу A[i], M[i, j]
Цикл по всем элементам нц для i от 1 до N
Вложенный цикл для матрицы нц для i от 1 до N; нц для j от 1 до M

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

Задание

Дан одномерный массив из 8 целых чисел. Необходимо:

  1. Заполнить массив случайными числами от −10 до 10.
  2. Найти сумму всех положительных элементов массива.
  3. Вывести на экран сам массив и найденную сумму.

Пошаговое решение

Шаг 1. Объявление переменных и массива

Сначала нужно объявить массив и переменные, которые понадобятся для работы:

  • массив A из 8 целых чисел;
  • переменную i для цикла;
  • переменную сумма для хранения суммы положительных элементов.
алг СуммаПоложительных
нач
    цел таб A[1:8]
    цел i, сумма

Шаг 2. Инициализация суммы

Перед началом подсчёта сумму нужно обнулить:

    сумма := 0

Шаг 3. Заполнение массива случайными числами

Используем цикл для заполнения массива случайными числами в диапазоне от −10 до 10. Для этого применяем функцию rnd():

  • rnd(21) даёт случайное число от 0 до 20;
  • вычитаем 10, чтобы получить диапазон от −10 до 10.
    вывод "Массив:", нс
    нц для i от 1 до 8
        A[i] := int(rnd(21)) - 10  // случайное число от -10 до 10
        вывод A[i], " "  // выводим элемент сразу после заполнения
    кц
    вывод нс  // переход на новую строку

Шаг 4. Поиск суммы положительных элементов

Снова используем цикл для перебора всех элементов массива. Если элемент положительный (больше нуля), добавляем его к сумме.

    нц для i от 1 до 8
        если A[i] > 0
            то сумма := сумма + A[i]
        все
    кц

Шаг 5. Вывод результата

Выводим найденную сумму на экран:

    вывод "Сумма положительных элементов: ", сумма, нс
кон

Полный код программы

алг СуммаПоложительных
нач
    цел таб A[1:8]
    цел i, сумма
    
    сумма := 0
    
    вывод "Массив:", нс
    нц для i от 1 до 8
        A[i] := int(rnd(21)) - 10
        вывод A[i], " "
    кц
    вывод нс
    
    нц для i от 1 до 8
        если A[i] > 0
            то сумма := сумма + A[i]
        все
    кц
    
    вывод "Сумма положительных элементов: ", сумма, нс
кон

Пример работы программы

При запуске программа может выдать такой результат (значения будут меняться из‑за случайности заполнения):

Массив:
-3 5 0 -7 8 2 -1 4 
Сумма положительных элементов: 19

Разбор примера:

  • Положительные элементы: 5, 8, 2, 4.
  • Их сумма: .

Пояснения к ключевым моментам

  1. Заполнение случайными числами (int(rnd(21)) − 10):
    • rnd(21) генерирует число от 0 до 20 (не включая 21);
    • int() округляет до целого (в «КуМире» это необходимо для целочисленных массивов);
    • вычитание 10 сдвигает диапазон: 0 → −10, 20 → 10.
  2. Цикл с условием (если A[i] > 0):
    • проверяет каждый элемент на положительность;
    • только положительные элементы добавляются к сумме.
  3. Вывод (вывод ... нс):
    • нс означает «новая строка» — используется для форматирования вывода.

Задание 2. Найдите сумму отрицательный значений.