Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Особенности и примеры использования массивов при разработке программ (Алгоритмы и программы)

Содержание:

Введение

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

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

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

Для изучения темы были изучены материалы учебников и пособий различных авторов таких как: Костерин В.В., Камаев В.А., Культин Н.Б. , Мещеряков П.С., Мочалин В.П., Жульнев В.В. , Моргун А. Н., Тивиков А.С. и другие.

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

Цель курсовой работы: изучить основы программирования по теме «Массивы».

Объект исследования: языки высокого уровня.

Предмет исследования: Особенности и примеры использования массивов при разработке.

Задачи курсовой работы:

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

Содержание курсовой работы включает в себя введение, 3 главы , 12 примеров, заключение и список используемой литературы, 5 приложений с текстами программ и структурными схемами алгоритмов.

В первой главе описаны основные понятия алгоритма, его свойств и способы его реализации. Отмечен ряд важных особенностей алгоритма. Перечислены основные языки программирования высокого уровня, проведена их классификация по различным признакам, выделены их достоинства и недостатки, отмечены три составляющие (любого) языка (Алфавит, Синтаксис и Семантика).

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

Отдельно выделен подраздел, посвящённый случаям выхода за границы диапазона.

В третьей главе отдельно рассмотрена технология создания программ с массивами.

В конце каждой главы делаются выводы.

В приложениях размещены тексты программ и структурные схемы решенных задач.

Глава 1. Алгоритмы и программы

1.1 Алгоритм и способ его описания

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

Алгоритм - это последовательность действий (шагов) приводящих к требуемому результату.

Алгоритм - это точное предписание, задающее процесс, направленный на получение результатов соответствующих определенным входным данным.

Алгоритмами являются способы решения, описанные с помощью предписаний по обработке, которые удовлетворяют определенным требованиям.

Все правильные алгоритмы обладают следующими обязательными свойствами: дискретность, однозначность, детерминированность, результативность, массовость[1].

Таким образом, разрабатывая алгоритм решения задачи ее формулировка превращается в процесс решения, где представлена последовательность действий (шагов) и логическая связь между ними. Алгоритм имеет ряд важных особенностей:

- Целесообразность – алгоритм должен давать некоторый результат;

- Конечность – алгоритм должен давать результат после выполнения конечного числа шагов (имейте в виду, что количество шагов может быть сколь угодно большим);

- Определенность – каждый шаг алгоритма должен быть точно определен, однозначен и понятен исполнителю;

- Дискретность – на каждом шаге алгоритма выполняется очередная одна и только одна операция;

Ввод – алгоритм имеет некоторое число входных данных, т.е. величин, которые задаются до начала его работы или динамически во время его работы извне. Эти входные данные берутся из определенного набора объектов.

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

- Массовость – алгоритм должен давать решения для целой группы задач из некоторого класса, отличающихся исходными данными;

- Эффективность – алгоритм обычно считается эффективным, если все его операции достаточно просты, чтобы их можно было точно выполнить в течении конечного промежутка времени с помощью карандаша и бумаги;

Алгоритмический процесс — это процесс последовательного преобразования конструктивных объектов (слов, чисел, пар слов, пар чисел, предложений и т.п.), происходящий элементарными «шагами». Каждый шаг состоит в смене одного конструктивного объекта другим [2].

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

В алгоритмических структурах каждому типу действий (вводу исходных данных, вычислению значений выражений, проверке условий и т.п.) соответствует геометрическая фигура, представленная в виде блока[3].

Таблица основных блоков представлена в Приложении А [1].

Рассмотрим пример использования блоков для создания общей алгоритмической структуры решения задачи (рис.1): пройдёт ли кирпич с рёбрами a, b, c в прямоугольное отверстие со сторонами x, y.

Решая эту задачу необходимо учесть следующее:

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

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

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

Рисунок 1 – Алгоритм решения задачи

В отличие от алгоритма, который может излагать только основную идею, программа должна предусматривать все возможные ситуации:

  • некорректность входных данных;
  • отсутствие возможности выполнять действия над промежуточными результатами (деление на 0, переполнение, нехватка места на диске и т.п.);
  • аварийные сигналы и другое.

Структура программы соответствует структуре простейшего математического рассуждения, не использующего сложных лемм и абстрактных понятий[4].

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

  • последовательность,
  • ветвление,
  • цикл с предусловием,
  • цикл с постусловием.
  • процесс (подпрограмма),

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

Сегодня существует огромное количество различных языков программирования.

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

Машинно-зависимые языки – это языки, средства которых существенно зависят от особенностей конкретной ЭВМ. К таким языкам относится Ассемблер.

Их характерные особенности заключаются в том, что:

  1. они компактны и у них большая скорость выполнения;
  2. они могут напрямую использовать конкретные аппаратные ресурсы;
  3. необходимо учитывать особенности функционирования данной ЭВМ;
  4. очень трудоемкий процесс составления программ;
  5. низкая скорость программирования;
  6. отсутствие возможности использования составленных программ, на компьютерах других типов.

Машинно-независимые языки – используются для того чтобы описать алгоритм решения задачи и информации, которая подлежит обработке, Они не требуют от пользователя знаний об особенностях функционирования ПК. Такие языки называют языками высокого уровня ( ЯВУ). К ним можно отнести почти все используемые в данное время языки.

Машинно-независимые языки можно условно разделить на три группы по типу решаемых задач[5].

  • Процедурные языки – это языки, которые определяют, как вычислить результат для определённой проблемы в соответствии с заданным алгоритмом. К ним относят: Алгол, Фортран, Бейсик, Паскаль, Си.
  • Декларативные языки – это языки, которые оперируют с помощью задания данных и отношений между ними. Вместо алгоритмов в таких языках используются правила логического вывода, которые позволяют системе находить нестандартные, заранее не определенные решения. Поэтому декларативные языки называют также еще языками искусственного интеллекта. К ним относится язык Пролог.
  • Объектно-ориентированные языки предназначены для отображения объектов реального мира, их свойств (атрибутов) и связей между ними при помощи специальных структур данных. К ним относятся такие языки как: C++, Java, Visual Basic.

Классификация языков по степени детализации алгоритма выглядит следующим образом (рис.2):

Рисунок 2- Классификация языков по степени детализации алгоритма

Три составляющие (любого) языка (рис.3):

Рисунок 3- Составляющие (любого) языка

Алфавит — набор основных символов, букв алфавита, никакие другие символы в предложениях языка не допускаются[6].

Синтаксис — система правил, определяющая допустимые конструкции из букв алфавита. Синтаксис отвечает на вопрос: является ли последовательность символов текстом (программой) на данном языке или нет?

Семантика — система правил, истолковывающая отдельные конструкции языка с точки зрения процесса обработки (смысл программы).

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

Например, для программирования сложных задач выбирают язык Ассемблер или С++, а для решения инженерных задач предпочтение отдают Fortran (Visual Fortran), Basic (Visual Basic) или Pascal (Delphi или Lazarus).

В итоге мы получаем текст программы - полное, законченное и детальное описание алгоритма на языке программирования[7].

Языки программирования являются искусственными языками. От естественных языков их отличает ограниченное число "слов", значение которых понятно только программисту и транслятору, и очень строгие правила записи команд (операторов).

Глава 2. Массивы

Работая с большим количеством значений, вводимых пользователем, приходится объявлять одну или несколько переменных. Но как быть, если все вводимые пользователем значения необходимо запоминать для дальней обработки?

Для хранения таких объемов данных предусмотрены особые структуры в языках программирования – массивы.

Массив – это упорядоченное множество однотипных элементов.

Массив – это структурированный набор данных, который состоит из однородной, фиксированной по размеру и конфигурации совокупности элементов простой или составной структуры, упорядоченных по номерам[8].

2.1. Классификация массивов

Массивы бывают четырёх видов (рис.7).

Их достоинства и недостатки:

  • Статические и константные массивы всегда имеют фиксированный размер
  • Динамические массивы делают работу с данными более гибкой, так как не требуют предварительного определения хранимых объёмов данных, а позволяют регулировать размер массива в соответствии с реальными потребностями.
  • Гетерогенные массивы удобны как универсальная структура для хранения наборов данных произвольных типов. Реализация гетерогенности требует усложнения механизма поддержки массивов в трансляторе языка.

Рисунок 7- Виды массивов

2.2.Типы массивов

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

Рисунок 8 - Типы массивов( а-одномерный, b –двумерный, с-трёхмерный)

2.2.1 Одномерные массивы

Одномерные массивы (вектора) – это массивы, в которых элементы нумеруются одним индексом.

Массив определяется именем (идентификатором) и количеством размерностей (координат), необходимых для указания местонахождения требуемого элемента массива. Имя массива является единым для всех его элементов[9].

Массив должен обозначаться одним именем. Так всю совокупность чисел 1, 6, 15.9, -15, 28.15, 0.33 можно назвать массивом и дать ему имя, например В. Образующие массив переменные будут называться элементами массива В.

Каждый элемент массива обозначается именем массива с индексом, заключенным в круглые скобки. В(1), В(2), В(3), ..., В(n).

Индекс показывает на каком месте находиться элемент массива относительно его начала. Для рассмотренной выше совокупности данных элементами массива В будут являются: В(1)=1, В(2)=6, В(3)=15.9, В(4)=-15, В(5)=28.15 ,В(6)=0.33.

При работе с массивами используются в основном счётные циклы.

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

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

Таблица 5. Синтаксис объявления одномерного массива[10]:

СИ:

Basic

Pascal

тип_данных имя_массива[размер];

int a[2]; 
double b[20]; 

int a[5] = {1,2,3,4,5},
double x[10] = {0.0}; 
char d[] = {’a’,’b’,’c’}

DIM A(20) - зарезервировать место под одномерный массив чисел А размером 20;

DIM МD$(10) - зарезервировать место под одномерный массив MD$ символьных строк размером 10;

DIM B%(10,10) - зарезервировать место под двумерный массив целых чисел В размером 100(10х10);

var имя_массива: array [a..b] of тип_данных;

var s:array[1..26] of char;

v = array[−100..100] of real;

mas = array[char] of boolean

Рассмотрим более подробно синтаксис объявления одномерного массива в Паскале[11]:

var имя_массива: array [a..b] of тип_данных;

где a, b – номера (индексы) первого и последнего элементов массива соответственно. Тип данных элементов массива может быть как простым, так и составным.

При обращении к элементу массива в квадратных скобках указывается его индекс[12].

Пример объявления массива:

const n=9;

var c: array [1..n] of Real; {Массив из 9 элементов типа integer }

или

const n=9;

type A = array [1..n] of integer; {Тип данных - массив}

var ma: A; {Массив из 9 элементов типа integer }

Пример работы:

ma[1]:=13; {В массив ma в ячейку с индексом 1 записано число 13}

Type mass1=Array [1..14] Of Real ;

{описывается тип одномерного массива с именем mass1 , состоящий из четырнадцати элементов типа Integer}

Var c: mass; {Переменная c описана как переменная типа mass}

y: Array [1..5] Of Real ;

z: Array [1..5] Of Real ;

{Переменные y, z описаны как одномерные массивы из 5-ти элементов типа Real }

2.2.2 Двумерные массивы

Существуют двумерные и многомерные массивы, которые выглядят более сложными и при их заполнении используют номера строк и столбцов, для того, чтобы найти значение определённого элемента[13].

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

Рисунок 7. Вид матриц

Легче всего представить матрицу или массив в виде таблицы:

Строка /

столбец

1

2

3

4

1

312

510

-34

-39

2

-23

-64

0

1

3

-5

320

0

2

Тогда значение ячейки под номером А (1, 1 ) = 312, значение

А (2,3) = 0, значение А (3,3) = 67 и т.д.

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

К элементу двумерного массива обращаются, указывая номер строки и номер столбца на пересечении которых он находится.

Таблица 6. Синтаксис объявления двумерного массива[14].

СИ:

Basic

Pascal

тип имя[размер

№1][размер №2];

Пример.

double a[5][10]; 


for(int i=0;i<5;i++) 


for(int j=0;j<10;j++) 

scanf("%lf”,&a[i][j]); 
  ... 
for(int i=0;i<5;i++){ 


for(int j=0;j<10;j++) 

printf("%8.2lf\t”,a[i][j]); 


printf("\n”); 


  } 

DIM A(n,m) - зарезервировать место под массив размером n x m;

Пример:

n = 5

DIM a(n, n)

'Ввод исходной матрицы

FOR i = 1 TO n

FOR j = 1 TO n

INPUT a(i, j)

NEXT j

NEXT i

' Вывод исходной матрицы

PRINT "Матрица А"

FOR i = 1 TO n

FOR j = 1 TO n

PRINT a(i, j);

NEXT j

PRINT

NEXT i

var имя_массива:

array [a..b, c..d] of тип_данных_массива;

Пример:

Const n=5; m=5;

Var C: array [1..m, 1..n] of real;

i, j : integer; Begin

For j:=1 to n do

For i:=1 to m do begin

Write(‘Введите C[’, i, ’,’, j, ’]=’);

ReadLn(C[i, j]);

end;

{Вывод массива на экран}

Writeln(‘Массив C’);

For j:=1 to n do begin

For i:=1 to m do Write(C[i, j]);

WriteLn;

end;

End.

При работе с двумерным массивом, как правило, используется двойной цикл. При этом будем использовать переменную i для перебора строк и переменную j для перебора столбцов[15]:

for i:=1 to n do

for j:=1 to m do

begin

a[i,j]:=Random(28)-8; тело цикла по j тело цикла по i

end;

Синтаксис объявления двумерного массива в Паскале[16]:

var имя_массива: array [a..b, c..d] of тип_данных_массива;

где a, b – номера первой и последней строк массива соответственно;

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

Тип данных также может быть как простым, так и составным.

k: Array [1..3, 1..5] Of Real;

{Переменная k описана как двухмерный массив из 15 элементов типа Real }

Пример объявления и использования:

Const n=3; m=5;

{Объявление массива из 3 строк, в каждой из которых 5 ячеек}

Var A: array [1..m, 1..n] of real;

i, j : integer; Begin

For i:=1 to n do

For j:=1 to m do begin

Write(‘Введите A[’, i, ’,’, j, ’]=’);

ReadLn(A[i, j]);

end;

Writeln(‘Массив А’);

For i:=1 to n do begin

For j:=1 to m do Write(A[i, j]);

WriteLn;

end; End.

Если в теле цикла содержится более одного оператора, то следует обрамлять их составным оператором begin..end, также как в цикле while. Заметим, что для оператора for установка начального значения счетчика (инициализация) выполняется прямо в заголовке цикла[17].

Кроме того, изменение значение счетчика происходит автоматически. Таким образом, специальный оператор для такого изменения в теле цикла (i:=i+1) приведет к ошибке.

Ограничения на использование оператора for:

1) Шаг изменения счетчика циклов может быть только или +1 (при использовании ключевого слова to) или –1 (при использовании ключевого слова downto).

2) Переменная - счетчик цикла может быть только порядкового типа и должна быть локальной для того блока, в котором находится оператор for.

Чтобы сравнить свойств операторов while, repeat и for на рисунке покажем как можно с их помощью реализовать один и тот же фрагмент программы, которая вычисляет сумму элементов массива А (N).

Рисунок 10 . Вычисление суммы элементов тремя способами.

2.3. Выход за границы диапазона

Индекс массива в Паскале и в Бейсике можно задавать и в явном виде и в не явном виде, то есть в качестве индекса массива мы можем применять использование переменной или выражения, которые соответствуют индексному типу. Иначе говоря, индексы могут быть вычислены в процессе работы программы.

Этот механизм – весьма удобное и мощное средство программирования[18].

Но он может порождать распространенную ошибку: результат вычислений может оказаться за пределами интервала допустимых значений индекса, то есть будет произведена попытка обратиться к элементу, которого не существует.

Такую типичную ошибку называется «выход за пределы массива».[19]

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

Поэтому, если индекс элемента выходит за рамки массива, то в программе возможно появление ошибок [20].

Ошибки могут быть:

  • простыми (например «случайное» изменение переменных); 
  • критическими (выход за пределы пространства памяти, отведенной для программы). 

Выводы по главе.

Массивы нужны для оперирования множеством однотипных данных с помощью всего лишь одного идентификатора. Они могут найти применение в решении практически любых задач.

При работе с массивами не лишним будет проверять возможный выход, как за правую, так и за левую границы массива, ведь не исключено, что в результате вычисления значения выражения получится число, находящееся левее границы массива Паскаля [21].

Глава 3. Решение задач на тему «массивы»

Условия задач взяты из различных источников[22].

3.1. Одномерные массивы

Пример 1. Дана последовательность из 20 целых чисел. Определите количество четных чисел.

var

a:array[1..20] of integer;

i,k:integer;

begin

k:=0;

for i:=1 to 20 do

begin

readln(a[i]);

if a[i] mod 2 =0 then k:=k+1;

end;

writeln('Кол-во четных чисел ',k);

end.

Демонстрация решения:

Пример 2. Дан массив M(20).К чётным элементам прибавить число A,а из элементов с нечётными номерами вычесть число B.

Program p2;

Program p2;

Const n=20; Type myarray=Array[1..n] Of Integer;

Var m: myarray;

A,b, i: Integer; Begin

Writeln('введите а');Readln(a);

Writeln(' введите b'); Readln(b);

Writeln(в'ведите ', n, ' чисел');

For i:=1 To n Do Read(m[i]);

For i:=1 To n Do

If I mod 2 <>0 then m[i]:= m[i]-b else m[i]:= m[i]+a ;

Writeln('новый массив :' );

For i:=1 To n Do

Write( m[i],' ' );

Readln;

End.

Демонстрация решения:

Пример 3. Дан Массив А(9).Поменять его половины следующим образом: первый элемент с последним, второй с предпоследним и так далее.

Program p3;

Program p3;

Const n=9;

Type myarray=Array[1..n] Of Integer;

Var a: myarray;

I,k,l: Integer;

Begin

Writeln(' введите ', n, ' чисел');

For i:= 1 To n Do Read(a[i]);

K:= (n div 2)-1;

For i:=1 To k Do Begin L:= a[I]; a[i]:= a[ n+1-I ]; a[n+1-I]:=L; end;

Writeln('new massiv:');

For i:= 1 To n Do Write (a[i],' ');

Readln; End.

Демонстрация решения:

Пример 4. Сколько элементов массива превосходят по модулю заданное число А.

Const n=5;

var

x:array[1..n] of integer;

I,K,A: integer ;

Begin

Readln (A);K:=0;

FOR I:=1 TO n DO

Begin

Read (x[I]);

if abs(x[I])>A then K:=K+1;

end;

Writeln (K);

end.

Демонстрация решения:

Пример 5. В заданном одномерном массиве поменять местами соседние элементы (стоящие на четных местах, с элементами, стоящими на нечетных местах).

program mas;

var a:array[1..100] of integer;

i,n,k: integer;

begin write('Введите размер массива');

readln(n);

for i:=1 to n do

begin write('a[',i,']='); readln(a[i]); end;

i:=1;

while i<n do

begin

k:=a[i]; a[i]:=a[i+1]; a[i+1]:=k; i:=i+2

end;

Writeln('new massiv:'); for i:=1 to n do

writeln('a[',i,']=',a[i]);

end.

Демонстрация решения:

Пример 6. Разработать алгоритм и программу. Ввести последовательность из N целых чисел. Найти наибольшее число.

1.Дано число n.

2.Введём числа Х в массив размером N случайным образом ( для скорости решения). Первый элемент массива примем за максимальный и будем его сравнивать со всеми остальными элементами массива. Выведем максимальный.

Программа и Структурная схема алгоритма в Приложении Б.

Демонстрация решения:

Пример 7. Найти сумму элементов, принадлежащих промежутку от А до В (А и В вводить с клавиатуры).

program r7;

var c: array [1..100] of integer;

n,i,s,A,B: integer;

begin write ('введите количество элементов массива n=');

readln(n);

for i:=1 to n do

begin write ('введите c[',i,']='); readln (c[i]);

end;

s:=0;

write ('введите число A='); readln (A);

write ('введите число B='); readln (B);

for i:=1 to n do

if (c[i] >=A) and (c[i]<= B) then begin

s:=s+c[i];writeln ('попадает число c[',i,']=',c[i]);end;

write ('s=',s);

end.

Демонстрация решения:

3.2. Двумерные массивы

Пример 8 .Задана действительная квадратная матрица порядка n. Найти наибольший по модулю элемент матрицы. Не используя вспомогательного массива, получить квадратную матрицу порядка n-1 путем выбрасывания из исходной матрицы строки и столбца, на пересечении которых расположен элемент с найденным значением. Размерность матрицы и значения ее элементов ввести с клавиатуры.

Uses CRT;

Const n=5;

var a:array[1..n,1..n] of integer;

i,j,index,undex,max:integer;

begin

ClrScr;Randomize;

for i:=1 to n do

for j:=1 to n do

begin

a[i,j]:=Random(21)-6;

gotoxy(j*5+5,i);

write(a[i,j]);

end;

max:=abs(a[1,1]);

for i:=1 to n do

for j:=1 to n do

if abs(a[i,j]) >max then

begin

max:=a[i,j]; index:=i; undex:=j;

end;writeln('');

writeln('Max=',max,' i=',index,' j=',undex);

for i:=1 to n do

for j:=1 to n do

if (index<>i) and (undex<>j) then

begin

gotoxy(j*5+5,i+10); write(a[i,j]); end;end.

Демонстрация решения:

Пример 9. Написать программу, которая вводит квадратную матрицу, производит ее транспонирование (обмен элементов строки на элементы соответствующего ей столбца) и выводит на экран полученную матрицу.

program pr ; Демонстрация решения:

var a:array [1..100,1..100] of integer;

i,j,n:integer;

c:integer;

begin write('введите размер матрицы n=');

readln(n);

for i:=1 to n do

for j:=1 to n do

begin write('a[',i,',',j,']='); readln(a[j,i]); end;

writeln('вы ввели такую матрицу:');

for i:=1 to n do

begin for j:=1 to n do

write(a[i,j]:3);writeln; end;

for i:=1 to n do

for j:=1 to n do

begin c:=a[i,j];a[i,j]:=a[j,i];a[j,i]:=c;end;

writeln('получилась матрица:');

for i:=1 to n do

begin for j:=1 to n do

write(a[i,j]:3);writeln ;end;end.

Пример 10. Сформировать квадратную матрицу вида:

n 0 0 0...0 0 0

0 n-1 0 0...0 0 0

0 0 n-2 0...0 0 0

. . . . . . . .

0 0 0 0...0 2 0

0 0 0 0...0 0 1

Program pr;

var a:array[1..30,1..30] of integer;

i,j,n:integer;

begin writeln('введите размер матрицы:');

write('количество строк=');readln(n);

for i:=1 to n do

for j:=1 to n do

if i=j then a[i,j]:=n-j+1

else a[i,j]:=0;

for i:=1 to n do

begin for j:=1 to n do write(a[i,j]:3);

writeln

end

end.

Демонстрация решения:

Пример 11. Задана квадратная матрица. Переставить строку с максимальным элементом на главной диагонали со строкой с заданным номером m.

Текст программы находится в Приложении В.

Демонстрация решения:

Пример 12. Разработать программу для определения показателей плана перевозки грузов. Известно число поставщиков определённого вида продукции и число потребителей этой продукции. Известны план перевозки продукции от каждого поставщика к каждому потребителю, а также стоимость перевозки единицы груза от каждого поставщика к каждому потребителю. Определить номер поставщика, от которого перевезено максимальное количество груза и стоимость этих перевозок.

Программа находится в Приложении Г.

Демонстрация решения:

Выводы по главе.

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

Заключение

В курсовой работе были рассмотрены основные теоретические основы по теме «Особенности и примеры использования массивов при разработке».

В курсовой работе был проведён анализ подобранной по теме исследования научной литературы и интернет источников.

Поставленные задачи курсовой работы были решены:

  • проведён обзор и анализ подобранной по теме исследования научной литературы,
  • описаны основные понятия, термины, категории по исследуемой тематике,

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

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

В курсовой работе были рассмотрены основные моменты при работе с массивами.

Особое внимание было уделено практической части работы, которая была представлена в виде готовых программ с реализацией этих программ на ПК.

В процессе реализации были соблюдены принципы программирования на языке Паскаль.

После тщательного изучения предметной области и самостоятельного решения задач, была достигнута поставленная цель, а именно изучены основы программирования по теме «Массивы».

Для пользователей умеющих программировать на языке Паскаль рассмотренные программы могут послужить базой для написания более сложных программ или стать наглядным пособием написания и использования различных приёмов среде Паскаль.

Список используемой литературы

  1. ГОСТ 19.701 – 90 «Схемы алгоритмов, программ, данных и систем» ЕСПД. Дата введения 01.01.92
  2. Брайан Керниган, Деннис Ритчи Язык программирования Си-М: Вильямс, 2015-288с.
  3. Гутман Г. Изучаем Basic. СПб.: Питер, 2002.-320с.
  4. Грег Перри, Дин Миллер Программирование на С для начинающих.- М: Эксмо, 2015- 369 с.
  5. Джеанини М., Кьоу Дж. Объектно-ориентированное программирование: Учебный курс. – СПб.: Питер,2005, 240 с.
  6. Комова О. С., Коломийцева С. В. Основные алгоритмические конструкции: учебное пособие. – Хабаровск: Изд-во ДВГУПС, 2014. –45 с.
  7. Костерин В.В., Камаев В.А. Технологии программирования: Учебник для вузов. – М.: Высшая школа, 2005, 360 с.
  8. Культин Н.Б. Turbo Pascal в Упражнениях – СПб.: БХВ-Петербург, 2007. – 256с
  9. Мещеряков П.С. Информатика Часть 2. Программирование на языке Паскаль: Учебное пособие. — Томск: ТУСУР, 2011. - 156 с.
  10. Мочалин В.П., Жульнев В.В. Основы алгоритмического языка программирования QBasic. Курс лекций. Издание 2-е, перераб.- Новомосковск, 2000.- 106 с.
  11. Моргун А. Н. Программирование на языке Паскаль (Pascal). Основы обработки структур данных. — М.: «Диалектика», 2005. — 576 с.
  12. Мочалин В.П., Тивиков А.С. Программирование типовых алгоритмов циклической структуры.- Новомосковск, 2004, 24 с.
  13. Немнюгин С.А. Turbo Pascal: программирование на языке высокого уровня – СПб.: Питер, 2006. – 544с.
  14. Носов В.А. Основы теории алгоритмов: курс лекций – М.: МГУ, 2006.-140 с.
  15. Павловская Т.А. Паскаль. Программирование на языке высокого уровня. Учебник для вузов. /Т. А. Павловская. – СПб.: Питер, 2010. – 464 с.
  16. Попов В.Б. Паскаль и Делфи. Учебный курс. - Питер, 2005- 576 с.
  17. Подбельский В.В. Язык C#. Базовый курс. 2-е издание.- М: Финансы и статистика, 2013-426 с.
  18. Самойленко В.П. , Опалева Э.А. Языки программирования и методы трансляции: Учебное пособие для вузов. – СПб.: БХВ-Петербург, 2005, 480 стр.
  19. Томас Х. Кормен Алгоритмы. Вводный курс-М: Вильямс, 2015-208 с.

Приложение А

Основные символы для описания алгоритмов

Приложение Б

Пример 6.

Программа:

Блок схема примера 6:

Приложение В.

Пример 11. Задана квадратная матрица. Переставить строку с максимальным элементом на главной диагонали со строкой с заданным номером m.

program pr;

var a:array[1..30,1..30] of integer;

i,j,n,k,m,max,at:integer;

begin writeln('Введите размерность матрицы:'); readln(n);

write('Введите номер строки m='); readln(m);

for i:=1 to n do

for j:=1 to n do

begin write('a[',i,j,']='); readln(a[i,j])

end;

writeln('Ваша матрица:');

for i:=1 to n do

begin for j:=1 to n do

write(a[i,j]:4); writeln;

end; max:=1;

for i:=1 to n do

if a[max,max]<a[i,i]

then max:=i;

for i:=1 to n do

begin at:=a[m,i]; a[m,i]:=a[max,i]; a[max,i]:=at

end;

writeln('Полученная матрица:');

for i:=1 to n do

begin for j:=1 to n do

write(a[i,j]:4); writeln; end; end.

Приложение Г.

Пример 12. Текст программы

program pr12;

uses crt;

var a:array [1..100,1..100] of integer;

var s:array [1..100,1..100] of real;

var a1:array [1..100] of integer;

i,j,n,m:integer;

c,k,k1:integer;

d,st:real;

begin

write('введите количество поставщиков n=');

readln(n);

write('введите количество потребителей m=');

readln(m);

for i:=1 to n do

begin

C:=0;

for j:=1 to m do

begin

write(' количество груза от ',i,' поставщика к ',j,' покупателю ?');

readln(a[i,j]);

a1[i]:= C+ a[i,j]

end;

end;

c:= a1[1]; k:=1;

for i:=2 to n do

if a1[i] > c then begin c:= a1[i] ;k:=i;end;

for i:=1 to n do

for j:=1 to m do

begin

write(' стоимость перевозки единицы груза от ',i,' поставщика к ',j,' покупателю ?');

readln(s[i,j]);

end;

D:= 0;

for j:=1 to m do

d:=d+a[k,j]* s[k,j];

writeln('вы ввели такие данные по поставщикам - матрица 1:');

for i:=1 to n do

begin for j:=1 to m do

write(a[i,j],' ');

writeln;

end;

writeln('вы ввели такие данные по стоимости перевозок - матрица 2:');

for i:=1 to n do begin

for j:=1 to m do

write(s[i,j]:6:0);

writeln;

end;

write(' Номер поставщика,от которого перевезено максимальное количество груза - ',k);

writeln; write(' стоимость всего перевезённого им груза = ',d);

end.

  1. Томас Х. Кормен Алгоритмы. Вводный курс-М: Вильямс, 2015- с. 20.

  2. Комова О. С., Коломийцева С. В. Основные алгоритмические конструкции: учебное пособие. – Хабаровск: Изд-во ДВГУПС, 2014. – с. 12

  3. Носов В.А. Основы теории алгоритмов: курс лекций – М.: МГУ, 2006.- с.24

  4. Павловская Т.А. Паскаль. Программирование на языке высокого уровня. Учебник для вузов. – СПб.: Питер, 2010.- с. 45

  5. Самойленко В.П. , Опалева Э.А. Языки программирования и методы трансляции. – СПб.: БХВ-Петербург, 2005.- с.38

  6. Костерин В.В., Камаев В.А. Технологии программирования: Учебник для вузов. – М.: Высшая школа, 2005.- с.42

  7. Костерин В.В., Камаев В.А. Технологии программирования: Учебник для вузов. – М.: Высшая школа, 2005.- с.44

  8. Мещеряков П.С. Информатика Часть 2. Программирование на языке Паскаль: Учебное пособие. — Томск: ТУСУР, 2011. - с.61

  9. Мочалин В.П., Жульнев В.В. Основы алгоритмического языка программирования QBasic. - Новомосковск, 2000.- с.41

  10. Подбельский В.В. Язык C#. Базовый курс. 2-е издание.- М: Финансы и статистика, 2013- с.303

  11. Моргун А. Н. Программирование на языке Паскаль (Pascal). Основы обработки структур данных. — М.: «Диалектика», 2005. — с. 76

  12. Моргун А. Н. Программирование на языке Паскаль (Pascal). Основы обработки структур данных. — М.: «Диалектика», 2005. — с. 77

  13. Самойленко В.П. , Опалева Э.А. Языки программирования и методы трансляции: Учебное пособие для вузов. – СПб.: БХВ-Петербург, 2005.- с.322

  14. Гутман Г. Изучаем Basic. СПб.: Питер, 2002.-с.189

  15. Мочалин В.П., Тивиков А.С. Программирование типовых алгоритмов циклической структуры.- Новомосковск, 2004, с.18

  16. Немнюгин С.А. Turbo Pascal: программирование на языке высокого уровня – СПб.: Питер, 2006. – с.202

  17. Джеанини М., Кьоу Дж. Объектно-ориентированное программирование: Учебный курс. – СПб.: Питер,2005, с. 123

  18. Попов В.Б. Паскаль и Делфи. Учебный курс. - Питер, 2005- с.312

  19. Брайан Керниган, Деннис Ритчи Язык программирования Си-М: Вильямс, 2015-с.103

  20. Грег Перри, Дин Миллер Программирование на С для начинающих.- М: Эксмо, 2015- с.250

  21. Мещеряков П.С. Информатика Часть 2. Программирование на языке Паскаль: Учебное пособие. — Томск: ТУСУР, 2011. - с.95

  22. Культин Н.Б. Turbo Pascal в Упражнениях – СПб.: БХВ-Петербург, 2007. – с.112-222