Файл: Особенности и примеры использования массивов при разработке программ (Основные понятия ).pdf
Добавлен: 16.05.2023
Просмотров: 78
Скачиваний: 2
Кобол - разработан в конце 1950-х гг. для решения коммерческих и экономических задач. Отличается развитыми средствами работы с файлами.
Лого - разработан в Массачусетском технологическом институте в ориентировочно 1970 г. для целей обучения математическим понятиям. Используется также в школах и пользователями ПЭВМ при написании программ для создания чертежей на экране монитора и управления перьевым графопостроителем[11].
Паскаль - процедурно-ориентированный язык, разработан в конце 1960-х гг. Никлаусом Виртом, первоначально для обучения программированию в университетах. В своей начальной версии Паскаль имел довольно ограниченные возможности, поскольку предназначался для учебных целей, однако последующие его доработки позволили сделать его хорошим универсальным языком, широко используемым в том числе для написания больших и сложных программ. Существует ряд версий языка (например, ETH Pascal, USD Pascal, Turbo Pascal ) и систем программирования на этом языке для разных типов ЭВМ. Для IBM PC наиболее популярной является система Turbo Pascal[12].
Пролог - язык декларативного типа , предназначен для разработки систем и программ искусственного интеллекта. Относится к категории языков пятого поколения. Был разработан в 1971 г. в университете г. Марсель (Франция), относится к числу широко используемых и постоянно развиваемых языков. Последняя его версия Prolog 6.0.
Си - многоцелевой язык, разработанный Денисом Ритчи в начале 1970-х гг. на базе языка BCPL. Используется на миниЭВМ и ПЭВМ. Является базовым языком операционной системы Unix , однако применяется
и вне этой системы, для написания быстродействующих и эффективных программных продуктов, включая и операционные системы.
Си++ - создан Бьярном Страустрапом на базе языка Си. Является его расширенной версией, реализующей принципы объектно-ориентированного программирования. Используется для создания сложных программ. Для IBM PC наиболее популярной является система Turbo C++фирмы Borland (США)[13].
Фортран - разработан фирмой IBM в 1956 г. для описания алгоритмов решения вычислительных задач.
Относится к категории процедурно-ориентированных языков.
Наиболее распространенными версиями этого языка являются Фортран IV, Фортран 77 и Фортран 90. Используется на всех классах ЭВМ. Последняя его версия также применяется на ЭВМ с параллельной архитектурой.
Достоинства языков программирования высокого уровня по отношению к языкам низкого уровня[14]:
- более выразительный и существенно повышающий наглядность и понятность текста алфавит языка;
- для использования допустимы наборы операций, которые не зависят от набора машинных операций;
- все конструкции команд (операторов) можно задавать в удобном для человека виде;
- есть возможность использования переменных и осуществления действия с ними;
- есть возможность поддерживать широкий набор типов данных.
Языков программирования в настоящее время настолько много, что перечислить и описать их все невозможно в рамках данной курсовой работы.
Среди разработчиков современного программного обеспечения наиболее популярны следующие основные языки программирования[15]:
SQL, Java., XML, C++ ,HTM. ,Visual Basic, XSL, Delphi. Этот список языков программирования далеко не полный, однако это наиболее востребованные языки, знание которых могут потребовать у программиста при устройстве на работу. Все они являются языками программирования высокого уровня.
Выводы по главе.
При составлении любой программы, необходимо провести математический анализ и постановку задачи, разделить её на этапы решения, для наглядности и лучшего понимания желательно свой алгоритм отобразить схематично в виде блок-схемы. Схема программы оформляется в соответствии с правилами ЕСПД (ГОСТ 19.701-90).
Языки программирования можно классифицировать по разным основаниям и в связи с этим их можно делить по степени ориентации на возможности ЭВМ, по типу решаемых задач, по степени детализации алгоритма. Иногда один и тот же язык может быть как языком низкого, так и высокого уровня.
Глава 2. Описание работы с массивами
Массив это набор однородных данных (чисел, символов, слов), имеющий имя и последовательную нумерацию его элементов. Массив имеет следующие параметры: имя; размерность; тип элементов.
При работе с массивами в основном используются счётные циклы, особенно при вводе и выводе элементов массива [16].
2.1. Виды и типы массивов
2.1.1. Виды массивов
Массивы можно разделить на следующие виды: константные, статистические, динамические и гетерогенные (рис.5)[17].
Рисунок 5 – Виды массивов
Достоинства и недостатки:
- Статические и константные массивы всегда имеют фиксированный размер
- Динамические массивы делают работу с данными более гибкой, так как не требуют предварительного определения хранимых объёмов данных, а позволяют регулировать размер массива в соответствии с реальными потребностями.
- Гетерогенные массивы удобны как универсальная структура для хранения наборов данных произвольных типов. Реализация гетерогенности требует усложнения механизма поддержки массивов в трансляторе языка.
2.1.2.Типы массивов
Количество индексов элементов массива определяет размерность массива. Массивы делятся на одномерные , двухмерные , трехмерные и т.д.
Одномерный массив - представляется в виде это вектора, имеющего имя ( рис.6):
Рисунок 6 –Вид одномерного массива
Двумерный массив – представляется в виде матрицы( рис.7):
Рисунок 7 – Представление двумерного массива в памяти
Многомерные массивы - это массивы, элементами которых являются массивы. Длина каждого массива может быть различна ( рис.8) .
Рисунок 8 – Представление многомерного массива
Описание массивов во многих языках осуществляется по разному[18].
Синтаксис объявления одномерного массива на языке Паскаль:
var имя_массива: array [a..b] of тип_данных;
где a, b – номера (индексы) первого и последнего элементов массива соответственно. Тип данных элементов массива может быть как простым, так и составным.
При обращении к элементу массива в квадратных скобках указывается его индекс.
Пример объявления:
const n=100;
var A: array [1..n] of Real; {Массив из 100 элементов типа Real}
или
const n=100;
type T = array [1..n] of Real; {Тип данных - массив}
var A: T; {Массив из 100 элементов типа Real}
Пример работы:
A[1]:=5; {В массив А в ячейку с индексом 1 записано число 5.}
Type type_array=Array [1..5] Of Integer;
{описывается тип одномерного массива с именем type array, состоящий из пяти компонент типа Integer}
Var a: type_array; {Переменная a описана как переменная типа type_array}
b: Array [1..5] Of Integer;
c: Array [1..5] Of Integer;
{Переменные b, с описаны как одномерные массивы из пяти компонент типа Integer }
Синтаксис объявления одномерного массива в различных языках можно отразить в таблице 2:
Таблица 2. Объявления одномерного массива ( составлено автором)
СИ: |
Basic |
Pascal |
тип_данных имя_массива[размер]; int С[30]; int С[6] = {1,3,2,3,5,8}, |
DIM С(45) - зарезервировать место под одномерный массив чисел С размером 45; DIM К$(4) - зарезервировать место под одномерный массив К$ символьных строк размером 4; DIM А%(5,2) - зарезервировать место под двумерный массив целых чисел А размером 10; |
var имя_массива: array [a..b] of тип_данных; var a:array[1..18] of char; k = array[−50..45] of real; lan = array[char] of boolean |
Синтаксис объявления двумерного массива на языке Паскаль:
Синтаксис объявления двумерного массива:
var имя_массива: array [a..b, c..d] of тип_данных_массива;
где a, b – номера первой и последней строк массива соответственно;
с, d – номера первой и последней ячеек строки массива соответственно.
Тип данных также может быть как простым, так и составным[19].
d: Array [1..3, 1..3] Of Real;
{Переменная d описана как двухмерный массив из девяти компонент типа Real }
Пример объявления и использования[20]:
Const n=5; m=5;
{Объявление массива из 10 строк, в каждой из которых 5 ячеек}
Var A: 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(‘Введите A[’, i, ’,’, j, ’]=’);
ReadLn(A[i, j]); {Заполнение массива}
end;
Writeln(‘Массив А’); {Вывод массива на экран}
For j:=1 to n do begin
For i:=1 to m do Write(A[i, j]);
WriteLn;
end;
End.
Описать многомерный массив можно с помощью конструкции array(), что очень похоже на создание обычного массива. Разница заключается в том, что в многомерном массиве каждый элемент также является массивом[21] ( рис.9).
Рисунок 9 – Способы описания многомерного массива
Порядок работы с массивами можно представить по шагам.
Шаг 1. Объявление массива (задание максимального размера массива).
Шаг 2. Заполнение массива. Для этого чаще всего используется арифметический цикл
Шаг 3. Обработка элементов массива.
На этом шаге в практике программирования существуют различные подходы для удаления, добавления и сортировки элементов массива.
Шаг 4. Вывод результата обработки[22].
Рассмотрим примеры программ с массивами.
Пример № 2.1. Ввести двумерный массив. Определить среднее геометрическое положительных чётных элементов, считая, что они в нём есть.
Блок - схема к примеру № 2.1 (рис.10):
Рисунок 10 – Алгоритм решения примера 2.1.
Код программы находиться в Приложении Б.
Результат решения показан на рисунке 11.
Рисунок 11 – Результат решения примера 2.1.
Пример 2.2. Задан двумерный массив В (10, 10), заполненный случайными числами из диапазона -10 – 10. Найти и вывести на экран произведение элементов побочной диагонали (рис.12).
Рисунок 12 – Программа и результат решения примера 2.2.
2.2. Случаи выхода за границы диапазона в массивах
Контроль выхода за границы массива осуществляется интерпретатором.
Так как в качестве индексов элементов массива можно использовать переменные и выражения, то возможны ситуации выхода за границы массива[23].
Например:
var К : array[1..10] of integer;
begin
К[12]:=3; {выход за границы массива}
end.
Программа откомпилируется, но в ходе ее выполнения выход за границы массива приведёт к ошибкам в программе в связи с некорректным номером элемента массива К.( их всего 10, а заполняется 12-й элемент)
Результат вычислений оказался за пределами интервала допустимых значений индекса, то есть будет произведена попытка обратиться к элементам, которых не существует .
Выводы по главе.
Задачи с массивами представляют собой один из применяемых способов обработки однотипной информации. Они позволяют работать с отсортированными и неотсортированными списками данных, выполнять различные операции с этими данными.