русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Краткое изложение теоретического материала


Дата добавления: 2014-11-28; просмотров: 635; Нарушение авторских прав


Массив – это упорядоченная (пронумерованная) последовательность однотипных элементов. Массив имеет общее для всех элементов имя. Номер элемента массива называют еще его индексом. В качестве индексов можно использовать значения любого порядкового типа. Например:

 

      А – массив из пяти целых чисел. Индексы элементов – целые числа от 1 до 5.
      В - массив из 5 вещественных чисел. Индексы элементов – целые числа от 2001 до 2005.
  C - массив из 5 целых чисел. Индексы элементов – символы от целые числа от 1 до 5.
      W – массив из пяти строк. Индексы элементов – целые числа от 1 до 5.

 

Доступ к элементам массива осуществляется по индексу, который указывается после имени массива в квадратных скобках. Например, в приведенных выше примерах: A[2]=12, B[2005]=5.9, C[‘d’]=234, W[1+2]=’раму’.

Массивы реализованы практически во всех структурных и объектно-ориентированных языках программирования.

Обработка массивов в языке Турбо Паскаль:

1. Описание нового типа данных - массив:

a. Описание типа:

Type <имя типа>=Array [<min индекс>..<max индекс>] Of<тип элементов массива>;

b. Описание переменной, имеющей тип массив:

Var<имя переменной> : <имя описанного выше типа>;

Например:

Type List = Array [1..30] Of String;

MasNum = Array[1..15] Of Real;

Var Fam, Name : List; { Переменные Fam и Name – массивы строк }

Year, a, b : MasNum; { Переменные Year, a и b – массивы вещественных чисел }

2. Ввод элементов массива:

Для обработки массивов наиболее часто используется оператор цикла со счетчиком For.

Фрагмент программы, позволяющий осуществить ввод значений элементов массива A из N элементов, может быть записан следующим образом:



For i := 1 to n do

begin

Write (‘введите ’ , i , ’-ый элемент ’);

Readln ( A[i] )

end;

3. Заполнение массива случайными числами зачастую используется в учебных (и не только) задачах, для того чтобы не вводить длинные числовые последовательности:

Randomize; { инициализация датчика случайных чисел }

For i := 1 to n do

A[ i ] := random(100); { в этом случае значения элементов будут лежать в интервале от 0 до 99 }

4. Вывод массива на экран:

For i := 1 to n do

Writeln( A[i] );

5. Сортировка массива – это упорядочение его элементов по возрастанию или убыванию. Разработан не один десяток алгоритмов сортировки массива (см. соответствующую литературу). Ниже приведен фрагмент программы, реализующей один из алгоритмов сортировки массива. Алгоритм сортировки по убыванию состоит в следующем:

· Фиксируем первый элемент массива, сравниваем его со всеми последующими (от 2-го до последнего – n-го), если какой-либо оказывается больше первого, то поменять его местами с первым. В результате таких сравнений и обменов на первом месте в массиве окажется самый большой элемент.

· Зафиксируем второй элемент массива. Будем сравнивать его со всеми последующими (начиная уже с 3-го), и если найдем большие элементы, будем менять их местами со вторым. В результате этих действий на втором месте окажется самый большой элемент массива из оставшихся.

· Зафиксируем третий элемент и повторим описанные выше действия.

· В результате повторения описанных действий (таких повторов будет n-1, т.к. последний элемент сравнивать уже не с чем) массив будет отсортирован по убыванию.

For i := 1 to n-1 do

For j := i+1 to n do

If A[ j ] > A[ i ] then

begin { меняем местами i-ый и j-ый элементы массива А }

p := A[ i ]; { для этого используем Ъ

A[ i ] := A[ j ]; { промежуточную переменную p, тип которой }

A[ j ] := p { должен совпадать с типом элементов массива }

end;

При сортировке по убывания нужно в тексте программы изменить лишь знак «>» на знак «<».

Размер массива – это количество элементов в нем.

Размерность массива – это количество индексов, которые нужно указать для доступа к элементу массива. Выше были рассмотрены одномерные массивы. Массивы могут быть также двумерными (матрицы, таблицы), трехмерными, и любой другой размерности, необходимой для решения поставленной задачи. Рассмотрим более подробно двумерные массивы.

Двумерный массив можно представить в виде совокупности пронумерованных строк и столбцов:

  1 2 3 4 5 6
1 -57
2 -134 -8
3 -11 -67
4 -7 -22
5 -3

 

 

А

 

 

Двумерный числовой массив А состоит из 5 строк и 6 столбцов. Для того чтобы обратиться к отдельному элементу этого массива, нужно указать после его имени индексы в квадратных скобках через запятую – сначала номер строки, затем номер столбца. Например: А[1,3]=0, А[4,1]= -7, А[4,6]= -22, А[2,5]=15.

Использование двумерных массивов в программах на языке Турбо Паскаль:

1. Описание двумерного массива:

a. Описание типа:

Type <имя типа> = Array [<min номер строки>..<max номер строки> ,<min номер столбца>..<max номер столбца> ] Of <тип элементов массива>;

b. Описание переменной, имеющей тип массив:

Var <имя переменной> : <имя описанного выше типа>;

Например:

Type Mas2 = Array[1..5, 1..6] Of Integer;

Var a : Mas2;

{ Переменная a – двумерный массив целых чисел, в котором 5 строк и 6 столбцов }

2. Ввод элементов массива:

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

Фрагмент программы, позволяющий осуществить ввод значений элементов массива A из N строк и М столбцов, может быть записан следующим образом:

For i := 1 to n do

For j := 1 to m do

begin

Write ( ‘A [ ‘ , i , j , ’ ] = ‘);

Readln ( A[i , j] )

end;

3. Вывод массива на экран в виде прямоугольной матрицы (таблицы):

For i := 1 to n do

begin

For j:=1 to m do

Write ( A[i , j] : 3 ); {выводим все элементы i-ой строки массива в одну строку на экране}

Writeln { переводим на экране курсор на следующую строку}

end;

Примеры решаемых задач

Пример 1. Составить программу, которая сформирует случайным образом массив из 20 целых чисел и:

а) выведет его в одну строку на экране;

б) выведет элементы массива, стоящие на четных местах и вычислит их сумму;

в) вычислит количество нечетных элементов;

г) упорядочит элементы массива по убыванию.

Программа:

Program М1;

Uses Crt;

Type Numbers = Array [1..20 ] Of Integer; {}

Var A : Numbers;

I, J, S, K , P : Integer;

Begin

Clrscr;

Randomize; { инициализируем датчик случайных чисел }

For I := 1 To 20 Do { заполняем массив А случайными числами от 0 до 99}

A [ I ] := Random (100);

{ Задача (а) }

Writeln ( ‘Получили массив:’ ); { выводим полученный массив на экран }

For I := 1 To 20 Do

Write ( A [ I ] : 3 );

Writeln; { переводим курсор в следующую строку экрана }

{ Задача (б) }

Writeln ( ‘Элементы на четных местах: ’ );

S := 0; { Обнулили сумму }

For I := 1 To 20 Do

If I mod 2 = 0 { Если у элемента четный НОМЕР }

Then Begin

Write ( A [ I ] : 3 ); { то выводим его }

S := S + A [ I ] { и накапливаем сумму }

End;

Writeln; { переводим курсор в следующую строку экрана }

Writeln (‘ Их сумма ’, S ); { выводим значение суммы }

{ Задача (в) }

K := 0; { Обнулили счетчик нечетных элементов в массиве }

For I := 1 To 20 Do

If A [ I ] mod 2 <> 0 { Если ЭЛЕМЕНТ нечетный }

Then K := K + 1; { то увеличиваем значение счетчика }

Writeln (‘ Количество нечетных элементов ’, К );

{ выводим значение счетчика }

{ Задача (г) }

{ Сортируем массив А по убыванию }

For I := 1 To 19 Do

For J := I + 1 To 20 Do

If A[ J ] > A[ I ] Then

Begin

P := A[ I ]; {меняем местами i-ый и j-ый элементы массива А}

A[ I ] := A[ J ]; { для этого используем переменную p }

A[ J ] := P

End;

Writeln ( ‘Получили массив:’ ); {выводим упорядоченный массив на экран}

For I := 1 To 20 Do

Write ( A [ I ] : 3 );

Readln

End.

Пример 2. Составить программу, которая сформирует случайным образом двумерный массив N x N целых чисел и:

а) выведет его на экран в виде матрицы;

б) выведет элементы массива, стоящие над главной диагональю;

в) вычислит суму элементов, стоящих на побочной диагонали;

г) вычислит суммы столбцов.

 
 

Пояснение:

Если элемент M [i , j] двумерного массива M размера n x n расположен на главной диагонали, то i = j (номер строки равен номеру столбца).

Если элемент M [i , j] двумерного массива M размера n x n расположен на побочной диагонали, то i + j = n + 1 (сумма его индексов равна n + 1).

Программа:

Program М2;

Uses Crt;

Type Numbers = Array [1..20, 1..20 ] Of Integer;

{ Тип - двумерный массив 20 х 20 }

Var A : Numbers;

N, I, J, S : Integer;

Begin

Clrscr;

Write (‘Введите количество строк и столбцов ’);

Readln( N );

Randomize; { инициализируем датчик случайных чисел }

For I := 1 To N Do { Организуем цикл по строкам }

For J := 1 T N Do { Организуем цикл по столбцам }

A [ I,J] := Random (100); { заполняем массив А случайными числами }

{ Задача (а) }

Writeln ( ‘Получили массив:’ ); { выводим массив на экран }

For I := 1 To N Do

Begin

For J := 1 To N Do

Write ( A [I , J] : 3 ); {выводим все элементы i-ой строки в одну строку на экране}

Writeln { переводим на экране курсор на следующую строку}

End;

{ Задача (б) }

Writeln ( ‘Элементы над главной диагональю:’ );

For I := 1 To N Do

Begin

For J := 1 To N Do

If J >= I { Eсли элемент на главной диагонали или над ней, }

Then Write ( A [I , J] : 3 ) { то выводим его}

Else Write(‘ ‘:3); { иначе выводим три пробела }

Writeln { переводим на экране курсор на следующую строку}

End;

{ Задача (в) }

S := 0;

For I := 1 To N Do

For J := 1 To N Do

If J + I = N + 1{ Eсли элемент на побочной диагонали }

Then S := S + A [I , J]; { то накапливаем сумму }

Writeln ( ‘Сумма элементов побочной диагонали ’, S );

{ Задача (г) }

For J := 1 To N Do { организуем цикл по столбцам }

Begin

S := 0; { обнуляем сумму для каждого столбца }

For I := 1 To N Do { цикл по строкам }

S := S + A [I , J]; { накапливаем сумму элементов столбца }

Writeln (‘ Сумма элементов ’, J, ‘ столбца ’, S) { выводим на экран значение суммы }

End;

Readln

End.



<== предыдущая лекция | следующая лекция ==>
Контрольные задания | Контрольные задания


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.55 сек.