Главная/Раздел 3

 

 

Главная

 

 Раздел 1

 

Раздел 2

 

Раздел 3

 

Раздел 4

 

Раздел 5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Массивы

До сих пор Вы сталкивались в основном с простыми типами данных. Типы данных в системе Turbo Pascal делятся на простые и сложные. К простым типам относятся стандартные, перечисляемые и ограниченные; к сложным типам - массивы, множества, записи, файлы. Элементами сложных типов могут быть простые типы, а также, в свою очередь, сложные типы. Введение сложных типов делает язык программирования более мощным и позволяет составлять эффективные программы.

Рассмотрение структурированных типов мы начнём с так называемых массивов "ARRAY". Массив объединяет элементы одного типа данных. Массивы бывают одномерными и многомерными. Размер массива (и число измерений) ограничивается только объёмом рабочей памяти ПЭВМ.

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

Декларация (объявление) одномерного массива выглядит следующим образом:

     VAR
       имя_массива: ARRAY[нач_инд..кон_инд] OF тип данных;

     Например:

     VAR
       mas: ARRAY[1..25] OF Integer;

Таким образом мы объявили одномерный массив mas целых чисел. Номер (индекс) первого элемента 1, последний номер (индекс) 25.

Декларация массивов может производится и немного другим способом. Сначала объявляется тип пользователя (в нашем случае типа "ARRAY"), а затем и переменная на основе этого типа данных. Например:

     TYPE
       tab=ARRAY[1..25] OF Integer;

     VAR
       mas: tab;

Эта декларация аналогична приведённой выше. В следующем примере декларировано несколько переменных типа массив:

     VAR
       mas_1: ARRAY[1..10] OF Real;
       mas_2: ARRAY[5 .. 16] OF Integer;
       sst: ARRAY[20..40] OF Char;

Обратите внимание, что величины, обозначающие "начальный индекс" и "конечный индекс", в квадратных скобках разделяются двумя (!) точками, причём перед этими двумя точками и после них допускаются пробелы.

Тип элементов, составляющих массив, может быть любым (в том числе и сложным). Тип индексов элементов массива может быть только простым, хотя наиболее часто в качестве индексов элементов массива применяют целые числа.

В следующем примере объявлены массивы содержащие элементы различных типов, и индексы различных простых типов:

     VAR
       mas: array [1..15] of real;
{описан массив из 15 вещественных чисел}
       www: array [(mon,tue,wed)] of integer;
{описан массив  из  трёх целых чисел,  
индексы элементов массива имеют
перечислимый тип и принимают значение 
названий дней недели  mon, tue, wed}
       ast: array ['A'..'Z'] of boolean;
{описан массив элементов логического типа,
тип индексов - ограниченый
символьный}
       art: array [(black,white)] of 11..20;
{описан массив целых чисел с индексами black, white.
Каждый  элемент массива
может принимать значения от 11 до 20}
       svz: array [byte] of integer;
{описан массив из 256 целых чисел 
с индексами  стандартного  типа byte
(от 0 до 256)}

Извлечения и присвоения в массивах

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

     mas[2]:=34;
элементу массива с индексом 2 присваивается значение 34. Оператор
     Writeln(mas[2]);
вызовет вывод на экран пользователя значение хранящегося в элементе-ячейке N 2 массива mas. Наряду с конкретным значением (конcтантой) в качестве индекса может быть использована переменная, например, при обработке массива поэлементно в рамках цикла "FOR ... TO ... DO". Так с помощью фрагмента программы
     FOR i:=1 TO 25 DO mas[i]:=0;
всем элементом массива присваивается значение "0".

Использование массивов вместо одиночных переменных позволяет Вам благодаря применению циклов "FOR ... TO ... DO" существенно сэкономить время и объём программы. Это демонстрируется следующим примером.

ПРИМЕР. Дана последовательность реальных чисел s1 ... s30. Организовать массив для хранения этих чисел. Определить сумму этих элементов.

     PROGRAMM ex_1;

     VAR
       m: ARRAY[1..30] of real;    {декларация массива}
       i: integer;                 {параметр цикла FOR}
       s: real;                    {сумма элементов}

     BEGIN
      FOR i:=1 TO 30 DO            {заполнение массива}
        Begin
         Write('Введите элемент последовательности N ',i);
         Readln(m[i]);
        End;
       s:=0;                       {обнуление счётчика суммы}
      FOR i:=1 TO 30 DO s:=s+m[i]; {вычисление суммы}
      Write('Сумма элементов последовательности равна ',s);
      Readln;   { пауза }
     END.

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

  1. Какие типы данных Вы знаете?
  2. Перечислите и приведите примеры простых типов данных.
  3. Перечислите сложные типы данных.
  4. Что такое массивы?
  5. Что называют элементом массива?
  6. Что называют индексом элемента массива?
  7. Сколько элементов может содержать массив?
  8. Сколько индексов может быть у одного элемента массива?
  9. Элементы какого типа может содержать массив?
  10. Какие типы данных допустимы для индексов элементов массива?

Задания для самостоятельного выполнения.

  1. Напишите программу, которая сначала вводит десять чисел в одномерный массив, а затем складывает отдельно все положительные элементы этого массива, отдельно отрицательные элементы и выдаёт полученные результаты.
  2. Разработайте программу, которая будет вводить с клавиатуры 25 реальных чисел и сохранять их в некотором одномерном массиве. Затем у пользователя запрашивается ввод ещё одного "контрольного" числа. Программа должна проверить, содержится ли последнее введённое число среди введённых раннее элементов массива, и выдать соответствующее сообщение на экран.
  3. Напишите программу, которая вводит с клавиатуры 25 реальных чисел, организовывает их хранение в одномерном массиве, а затем определяет число положительных элементов данной последовательности и выводит результат на экран.
  4. Напишите программу, которая вводит с клавиатуры 20 реальных чисел, организовывает их хранение в одномерном массиве, а затем определяет каких чисел в массиве больше, положительных или отрицательных. Не исключается случай равенства.
  5. Напишите программу, которая вводит с клавиатуры 15 целых чисел, организовывает их хранение в одномерном массиве, а затем определяет среднее арифметическое элементов массива. Результат выдаётся на экран пользователя.
  6. Напишите программу которая вводит с клавиатуры 20 реальных чисел, организовывает их хранение в одномерном массиве, а затем определяет индекс и значение максимального элемента массива. Результат выдаётся на экран пользователя.
  7. Напишите программу которая вводит с клавиатуры 30 символов, организовывает их хранение в одномерном массиве, а затем выводит содержимое массива в обратном порядке с указанием индекса (номера) каждого элемента.
  8. Напишите программу которая вводит с клавиатуры 20 реальных чисел, организовывает их хранение в одномерном массиве, а затем определяет среднее арифметическое элементов с чётными индексами, и среднее арифметическое элементов с нечётными номерами. Результат выдаётся на экран пользователя.
  9. Дан одномерный массив целых чисел размерностью 20. Определите количество положительных групп в этом массиве. (Группой называется последовательность состоящая из 2-х и более положительных чисел находящихся рядом.)
  10. Дан массив из 20 целых чисел. На экране нарисовать график, состоящий из 20 параллелепипедов высота которых пропорциональна значению элементов массива. Цвет заполнения параллелепипедов зависит от их высоты, - чем выше параллелепипед, тем больше номер цвета.

НАЗАД                    ДАЛЕЕ                   

 

 

 

 

 

 

 

 

 :::

 

 :::

 

 

 

 

 

 

 

Сайт создан в системе uCoz