Файл: Операторы циклов, их виды, особенности и области применения (История создания языка).pdf
Добавлен: 29.03.2023
Просмотров: 416
Скачиваний: 1
СОДЕРЖАНИЕ
Глава 1. История создания языка и обзор источников литературы
1.2. Краткий обзор литературных и электронных источников
Глава 2. Типы циклических структур
2.1. Арифметический оператор цикла
2.2. Итерационный цикл с предусловием
2.3. Итерационный цикл с постусловием
Глава 3. Циклические алгоритмы в задачах с массивами
3.1. Основные действия с массивами Паскаля
3.2. Инициализация массива Паскаля
Основоположники программирования считают, что хорошая программа должна проверять исходные данные на корректность и по завершению программы выводить на экран не только результаты, но и исходные данные. В случае работы с массивами необходимо контролировать индексы массива как слева, так и справа, и выдавать предупреждающее сообщение в случае попытки обращения к несуществующим элементам массива. Из всего этого следует сделать вывод: программисту надо быть очень аккуратным при работе с индексами массива. На практике часто разработчики объявляют массив с заведомо большими границами.
3.1. Основные действия с массивами Паскаля
Из теории программирования известно, что определение типа данных определяет:
- ограничение области допустимых значений;
- внутреннее представление в ЭВМ;
- набор допустимых операций над данными этого типа.
Выше в работе дано определение массива и определен тип данных – массив. Над базовыми типами данных, числовыми или символьными, могут выполняться определенные операции. Точно также и над массивами выполняются операции, которые подразумевают операции над элементами массива. Единственное действие, которое можно выполнять над массивами целиком, причем только при условии, что массивы однотипны, – это присваивание. Если в программе объявлены две переменные одного типа, например,
Var
m , n : array [1..21] of real ; ,
то можно переменной n присвоить значение переменной m ( n := m). При этом каждому элементу массива n будет присвоено соответствующее значение из массива m. Все остальные действия над массивами Паскаля производятся поэлементно.
3.2. Инициализация массива Паскаля
Для того чтобы задать начальные значения (инициализировать) элементов массива, необходимо последовательно изменять значение индекса, начиная с первого и до последнего, и вводить соответствующий элемент. Для реализации этих действий удобно использовать арифметический цикл или цикл с фиксированным числом шагов. В этом случае параметром цикла будет выступать переменная, которая является индексом массива. Значения элементов могут быть введены с клавиатуры или определены с помощью оператора присваивания.
На экранной форме 13 приведен пример фрагмента программы ввода массива на языке Паскаль.(Рис.13)
Рисунок 13- Экранная форма 7 Ввод элементов массива в цикле
Очень часто на практике массивы инициализируются случайными числами. Такой прием существенно сокращает время заполнения массива вручную. Автоматическое заполнение массивы выполняется с использованием функции random ( N ). На экранной форме 14 приведен пример фрагмента программы заполнения массива случайными числами. (Рис.14)
Рисунок 14- Экранная форма 8 Инициализация массива случайными числами
Таким образом, из вышесказанного можно сделать вывод о том, что элементы массива могут быть инициализированы несколькими способами: вводом с клавиатуры, случайными числами, операторами присваивания. Какому из них отдать предпочтение, зависит от постановки задачи и от предпочтений разработчика
3.3. Вывод элементов массива
В программировании принято при решении какой-либо задачи распечатывать исходные данные, задачи с массивами этого просто требуют. Как и в случае инициализации, используются циклы с фиксированным числом шагов. На экранной форме 15 приведен фрагмент программы вывода элементов массива в строку.(Рис.15)
Рисунок 15- Экранная форма 9 Вывод элементов массива в строку
На экране вполне может быть выведена следующая информация:
7 10 5 18 4 6
Можно вывести элементы массива в столбик, указав соответствующие индекса. Однако в таком случае нужно учитывать, что при большой размерности массива все элементы могут не поместиться на экране и будет происходить скроллинг (прокрутка), т.е. при заполнении всех строк экрана будет печататься очередной элемент, а верхний смещаться за пределы экрана.
На экранной форме 16 приведен пример вывода массива в столбик.(Рис.16)
Рисунок 16- Экранная форма 10 Вывод элементов массива в столбик
Тогда на экране будет отображена следующая информация:
a [1]=7
a [2]=10
a [3]=5
a [3]=18
a [3]=4
a [3]=6
3.4. Примеры решения задач с использованием массивов
В программировании существует ряд стандартных алгоритмов с массивами:
- задачи поиска элементов массива по заданным условиям
- задачи вычисления некоторых значений (сумма, среднее, минимум, максимум) над элементами массива;
- упорядочивание (сортировка) массива;
- задачи использования двумерных массивов;
- задачи прикладного характера (линейная алгебра, численные методы).[8,c.6]
3.4.1. Задача 1
Пусть даны два n-мерных вектора. Требуется найти сумму этих векторов.
Входными данными в этой задаче будут два одномерных массива. Размер этих массивов может быть произвольным, но определенным. Можно описать заведомо больший массив, а в программе определить, сколько элементов в действительности будет использоваться. Элементами этих массивов являются целые числа. Описание будет выглядеть следующим образом:
var a , b : array [1..100] of integer ;
Выходными данными будут элементы результирующего массива С. Тип результирующего массива также должен быть целочисленным.
В программе будет использована некоторая переменная i, которая будет служить параметром цикла и индексом массива одновременно. Кроме того, в программе будет использована переменная n. Эта переменная определяет количества элементов в каждом массиве.
Ход решения задачи:
- определить количество элементов (размерность) массивов, ввести значение n;
- ввести массив a;
- ввести массив b;
- в цикле, перебирая значения индекса i от 1 до n , вычислить последовательно значения элементов массива c по формуле[9,c.393]:
c [ i ]= a [ i ]+ b [ i ]; (1)
- вывести на экран полученный массив.
Текст программы приведен на экранной форме 17.(Рис.17)
Рисунок 17- Экранная форма 11 Исходный код программы для решения задачи 1
Результаты работы программы приведены на экранной форме 18.(Рис.18)
Рисунок 18- Экранная форма 12 Результаты работы программы для решения задачи 1
Проанализировав данный исходный код, внешний вид и читабельность результатов, а также учитывая вышесказанные положения в курсовой работе, можно сказать, что программа требует некоторых изменений и должна быть более универсальной. Для этого элементы исходных массивов можно сформировать из случайных чисел, это позволит формировать массивы произвольной разумной длины. Кроме того необходимо вывести на экран исходные массивы. Тогда исходный код будет выглядеть следующим образом (Рис.19 экранная форма 19)
Рис.19- Экранная форма 13 Исходный код унифицированной программы
Результаты работы программы представлены на экранной форме 20.(Рис.20)
Рисунок 20- Экранная форма 14 Результаты работы унифицированной программы
Ниже приведен еще один вариант унифицированной программы (Рис.21 экранная форма 21). Результат работы программы, вернее, его внешний вид, не изменился.
Рисунок 21- Экранная форма 15 Исходный код унифицированной программы
В качестве примера можно рассмотреть несколько однотипных задач. Пусть требуется распечатать заданное количество некоторых символов, допустим, звездочек. Исходный код программы изображен на экранной форме 1. Результат работы программы - на экранной форме 2.(рис.22-23)
Рисунок 22- Экранная форма 16 Исходный код программы
Рисунок 23- Экранная форма 17 Результат работы программы
Еще один пример. Пусть требуется вычислить сумму числового ряда от 5 до 27. Исходный код программы 2 представлен на экранной форме 3, результаты работы на экранной форме 4.(Рис.24,25)
Рисунок 24- Экранная форма 18 Исходный код программы 2
Рисунок 25- Экранная форма 19 Результат работы программы 2
Ниже приведена экранная форма программы 3 и результатов ее работы с использованием операторных скобок «begin … end»(Рис.26)
Рисунок 26- Экранная форма 20 Код программы и результат работы программы 3
Программа 2 может быть выполнена с использованием арифметического цикла, но с ключевым словом DOWNTO. Исходный текст и результаты работы приведены на экранной форме 6.(рис.27)
Рисунок 27- Экранная форма 21 Арифметический цикл с Downto
Как видно, конечный результат работы программы не изменился, это число 368. Данный факт свидетельствует о том, что разработчику программы предоставляется право в выборе средств разработки программы.
3.4.2 Задача 2
Одним из наиболее показательных приемов реализации циклических алгоритмов в массивах, является реализация задач с использованием двумерных массивов – матриц. Одномерный массив имеет один индекс, двумерный – два. Термины «размер» массива и «размерность» массива имеют разные толкования. «Размер» - это длина массива или количество элементов массива. «Размерность» - это количество индексов. Характерной особенностью таких задач является использование вложенных циклов. В памяти компьютера матрицы хранятся по строкам, обрабатываются матрицы, чаще всего, тоже по строкам.
Пусть требуется в матрице, содержащей 7 строк и 13 столбцов, сформированной из случайных целых чисел в интервале от -200 до 200 найти сумму и количество элементов кратных 7. В программе использованы переменные i, j, s, k, a
где i, j – индексы массива;
s – сумма элементов, кратных 7;
k – количество элементов, кратных 7.
Тогда программа, которая инициализирует массив и ищет в нем числа кратные 7, а затем вычисляет сумму и количество таких чисел, представлена на экранной форме 22.(Рис.28)
Рисунок 28- Экранная форма 22 Программа обработки двумерного массива
Ниже представлены две экранных формы 23 и 24 с результатами работы программы, свидетельствующие о том, что элементы матрицы генерируются случайным образом.(Рис.29,30)
Рисунок 29- Экранная форма 23 Результаты работы программы
Рисунок 30- Экранная форма 24 результаты работы программы
В работе приведена небольшая часть алгоритмов обработки массивов и приведены основные приемы работы с одномерными и двумерными массивами, а также аргументирована связь арифметических циклов с алгоритмами обработки массивов.
ЗАКЛЮЧЕНИЕ
Подводя итоги выполненной работы, можно сказать, что в курсовой работе в качестве предистории рассмотрена история создания языка Pascal, типы данных языка, встроенные функции и операторы языка. Особенное внимание уделено операторам цикла или алгоритмическим структурам повторения. В работе сделан определенный акцент на литературе по заданной теме курсовой работы с указанием конкретных литературных источников. В сети Интернет и на полках книжных магазинов можно найти многочисленные электронные и печатные издания.
В разделе 3 подробно рассмотрены типы структур повторения, особенности и целесообразность их применения. Приведены многочисленные примеры с обоснованием применения того или иного типа цикла. Примеры реализованы в среде программирования PascalABC, в работе приведены экранные формы с исходными кодами и результатами рабы каждой программы. Также в разделе подробно рассмотрены синтаксис каждого оператора цикла, их блок схемы. Рассмотрены арифметические и итерационные циклы, которые в свою очередь делятся на цикл с предусловием и цикл с постусловием. Итерационные циклы имеют свои особенности в использовании.