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

Операторы циклов, их виды, особенности и области применения (История создания языка)

Содержание:

ВВЕДЕНИЕ

На этапе становления языков программирования использовались «машинно-ориентированные» алгоритмические языки или языки «низкого уровня». Такие языки учитывали структуру и характеристики конкретных вычислительных машин, их систему команд, структуру памяти. На смену им пришли «проблемно-ориентированные» алгоритмические языки или языки программирования «высокого уровня». Эти языки освободили программистов от необходимости ориентироваться на электронно-вычислительные машины определенного типа.

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

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

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

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

Как следует из теории алгоритмов, самой часто используемой является алгоритмическая структура «повторение» или другими словами циклическая структура. Данная структура является предметом рассмотрения курсовой работы. Циклические структуры, в дальнейшем циклы, применяются при обработке массивов. Многие прикладные задачи, как то: системы линейных уравнений, задачи оптимизации, уравнения, векторы и др., сводятся к действиям над одномерными или двумерными массивами.

Таким образом, из вышесказанного следует актуальность данной курсовой работы.

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

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

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

Для достижения поставленной цели необходимо решить следующие задачи:

  1. изучить историю создания языка;
  2. рассмотреть краткий обзор литературных и электронных источников;
  3. изучить типы циклических структур;
  4. рассмотреть обзор методов инициализации переменных массивов;
  5. изучить реализацию циклических алгоритмов в задачах с массивами.

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

Глава 1. История создания языка и обзор источников литературы

1.1. История создания языка

Язык программирования PASCAL (ПАСКАЛЬ) назван в честь великого французского физика и математика Блеза Паскаля. Еще в 1642 г. он изобрел «паскалево колесо» - счетную машину для арифметических операций. История создания языка PASCAL, как языка программирования, начинается с 1965 г. Никалаус Вирт - доцент факультета информатики Стэнфордского университета, принял участие в разработке языка АЛГОЛ-W. Проект был отклонен, но по возвращению в Швейцарию Вирт не прекратил работу по созданию нового языка. В результате этой работы в конце 1968 г. профессор Вирт и его сотрудники из Швейцарского федерального института технологии в Цюрихе разработали первую версию ПАСКАЛЯ, а через два года появился первый вариант компилятора. [15]

В 1974 году была разработана новая версия языка ПАСКАЛЬ, через год вышло полное руководство для пользователей ПАСКАЛЯ.

Целью создания языка стала необходимость:

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

ПАСКАЛЬ унаследовал многие черты своего предшественника АЛГОЛ-60 и некоторых других языков. Он имеет блочную структуру, операторы разделяются между собой точкой с запятой, в языке имеется оператор перехода и оператор варианта. Простые и гибкие операторы цикла WHILE и REPEAT и оператор варианта CASE, отмечает Вирт, стали переработанной версией оператора цикла FOR. Они позволяют программисту реализовать разнообразные алгоритмы путем использования вложенных иерархических структур, представляющих композиции этих операторов.

Главным достоинством языка ПАСКАЛЬ является воплощение идеи структурного программирования. Идея состоит в том, что с помощью нескольких конструкций можно выразить алгоритмы любой степени сложности. Два других достоинства языка были определены двумя работами профессора Ч. Хоара: «О структурной организации данных» и «Аксиоматическая основа программирования для вычислительных машин».

Язык Pascal включает некоторый набор различных типов данных. Язык является первым языком, который имеет не числовой тип данных - тип перечисления.

Вторая статья Ч. Хоара показывает, что «программы поддаются точному анализу, который основан на строгих математических методах”. Таким образом, язык ПАСКАЛЬ стал первым языком программирования, для которого существуют программные средства, позволяющие доказать правильность написанных программ.

Некоторые специалисты называют Паскаль «спартанским» языком. Но мобильность, простота, легкость программирования, эффективность программ обеспечили ПАСКАЛЮ успех на рынке языков программирования.

Однако в процессе эксплуатации языка ПАСКАЛЬ выявлены некоторые недостатки:

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

К началу 80-х появилось множество компиляторов Паскаля для различных типов электронно-вычислительных машин. Стали появляться различные его диалекты и расширения: Турбо-ПАСКАЛЬ, ПАСКАЛЬ-80, , Квик-ПАСКАЛЬ, Эппл-ПАСКАЛЬ, Паскаль-АВС и др.[15]

1.2. Краткий обзор литературных и электронных источников

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

Например, в своей книге «Программирование на языке высокого уровня Turbo Pascal » Краснов С.В. рассматривает вопросы разработки программ, уделяя большое внимание основным понятиям, операторам ввода и вывода данных. Особое внимание автор уделил составлению программ, реализующих ветвление, циклические процессы, работе с массивами, процедурами и записями. Понятия циклов и их основные условия применения, использования и ограничения, что позволяет безошибочно действовать при создании программы. [16]

Перминов О.Н. в своей книге «Программирование на языке Паскаль» изложил детальное и формальное изложение всех конструкций языка, а приведенные примеры изложены доступным языком с использованием различных приемов программирования. Подробно расписаны циклические алгоритмы, все их разновидности, приведены подробные примеры.

Часто специалисты, преподаватели книги рекомендуют не только по ссылке на автора, но и по картинке на обложке. Ниже в таблице приведены некоторые популярные книги с кратким их описанием, изображениями на обложках и рекомендациями для пользователей. (Табл.1)[4,c.378]

Таблица 1

Литературные источники по программированию на языке высокого уровня Pascal

Г. Г. Рапаков, С. Ю. Ржеуцкая «Программирование на языке Pascal» представляет собой учебник, посвященный вопросам программирования на Pascal. Изложение начинается с описания самых первых шагов, каждый из которых сопровождается специальными примерами. Особое место в учебнике по Паскаль занимает описание собственно языка и вопросы, связанные с использованием стилей в линейном и объектно-ориентированном программировании.

Pascal С. А. Немнюгин Издательство: Питер Год: 2000 Учебник «Turbo Pascal» посвящен основам программирования в системе Турбо Паскаль. Автор последовательно излагает различные вопросы программирования графики, звука, системного программирования. Книга содержит введение в основы объектно-ориентированного программирования (ООП) и методы вычислений.

Учитесь программировать Автор: Джонстон Г. Издательство: Финансы и статистика Год: 1989 Книга британского автора Г. Джонстона «Учитесь программировать» является переработанным и дополненным курсом лекций по искусству программирования профессора К. Хоара. Программы минимальной сложности, выполненные на языке Паскаль, в учебнике иллюстрируют методику построения и анализа программ и выбора алгоритма решения. Самоучитель представляет собой руководство, с помощью которого можно освоить начала профессионального программирования.

Паскаль. Программирование на языке высокого уровня. Практикум Автор: Т. А. Павловская Издательство: Питер Год: 2007. В учебнике «Паскаль. Программирование на языке высокого уровня» содержится подробное изложение основ программирования на языке Паскаль для студентов высших учебных заведений, специализирующихся на теме информационной и вычислительной техники. В книге дана необходимая для практической работы справочная информация, тестовые вопросы и индивидуальные лабораторные задания.

Turbo Pascal 7.0. Самоучитель для начинающих, 2-е издание Автор: С. Н. Лукин Издательство: Диалог-МИФИ Год: 1999 Turbo Pascal 7.0 довольно широко известная программа для программирования на языке Turbo Pascal. Она изучается в школе, техникумах и ВУЗах. Учебник излагает основы языка в доступной форме, знакомит с основными принципами программирования и процедурами в работе с данными. Материал ориентирован на школьников, а также студентов, которые практически не имеют опыта в программировании.

Глава 2. Типы циклических структур

Прежде чем перейти к рассмотрению циклических структур и их типов, имеет смысл дать определение циклической структуре или циклу.

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

Существуют два типа циклов - итерационные и арифметические циклы. Цикл называется арифметическим, если заранее известно количество необходимых повторений. В некоторых литературных источниках арифметический цикл называют циклом с фиксированным числом шагов. Блок-схема арифметического цикла представлена на рисунке 1. В случае если количество повторений заранее неизвестно, то цикл называется итерационным.  [11,c.352]

Рисунок 1- Блок-схема арифметического цикла

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

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

Итерационные циклы делятся в свою очередь на циклы с предусловием и циклы с постусловием. Цикл называется циклом с предусловием (пока условие цикла «истинно», то «делать …») потому, что проверка условия происходит перед выполнением «тела цикла». Блок схема цикла с предусловием изображена на рисунке 2.[7,c.464]

Рисунок 2 - Блок-схема цикла с предусловием

В цикле с «постусловием» («делать… пока») проверка параметра цикла происходит после выполнения тела цикла. Причем параметр цикла проверяется на «ложность», то есть «тело цикла» выполняется до тех пор, пока условие ложно. Блок-схема цикла с постусловием видна на рис. 3.[1,c.384]

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

Рисунок 3- Блок-схема цикла с постусловием

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

Далее целесообразно привести синтаксис операторов цикла.

2.1. Арифметический оператор цикла

Синтаксис оператора цикла с фиксированным числом шагов выглядит следующим образом:[18]

FOR параметр цикла = значение 1 TO значение 2 DO оператор

или

FOR параметр цикла = значение 1 DOWNTO значение 2 DO оператор

Оператор FOR вызывает один оператор или несколько операторов, которые располагаются после ключевого слова DO, по одному разу для каждого значения в диапазоне от значения 1 до значения 2.

Параметр цикла, переменные «значение 1» и «значение 2», то есть начальное и конечное значения параметра цикла, должны иметь перечисляемый тип. Если используется арифметический цикл с ключевым словом TO, значение параметра цикла увеличивается на 1 при каждом выполнении тела цикла. Если же используется цикл с ключевым словом DOWNTO, значение переменной цикла уменьшается на 1 при каждом выполнении тела цикла. Особенностью данного типа цикла является требование не изменять параметр цикла вручную в теле цикла.

В языке Pascal в условных операторах, операторах цикла и подпрограммах используются, так называемые, «операторные скобки». В частности в операторах цикла, в арифметическом цикле и цикле с предусловием, если тело цикла состоит из нескольких операторов (двух или больше), они (операторы) заключаются в операторные скобки «begin … end». В литературе эти несколько операторов, заключенных в операторные скобки, называют составным оператором.

2.2. Итерационный цикл с предусловием

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

Синтаксис оператора цикла с предусловием:

WHILE логическое выражение DO тело цикла

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

Чаще всего тело цикла содержит несколько операторов, то есть является составным оператором, следовательно, должны использоваться операторные скобки «begin …end». Иногда случается, так называемое, зацикливание программы. Данная ситуация возникает в том случае, когда результат вычисления логического выражения всегда есть истина, поэтому необходимо контролировать правильность написания программы, особенное внимание следует уделять изменению параметра цикла.[20]

В качестве примера используется программа 1, которая печатала 10 звездочек. Тест программы и результат работы приведены на экранной форме 7. (Рис.4)

Рисунок 4- Экранная форма 1 Программа с циклом с предусловием

Более показательным является использование данного типа цикла в программах табулирования функций. Пусть требуется выполнить табулирование функции y=3(x+1)3/2x на интервале, где х изменяется от 1 до 3 с шагом 0,25. Программы 4 приведена на экранной форме 8.(Рис.5)[6,c.208]

Рисунок 5- Экранная форма 2 Исходный код программы 4

Результаты работы программы 4 приведены на экранной форме 9.(Рис.6)

Рисунок 6- Экранная форма 3 Результаты работы программы 4

2.3. Итерационный цикл с постусловием

Как говорилось выше в курсовой работе цикл с постусловием, в любом случае, выполнится хотя бы один раз, потому что тело цикла «располагается» перед условием. Еще одним отличием является тот факт, что в это цикле не используются операторные скобки. Синтаксис данного оператора цикла:[3,c.496]

repeat

<операторы>

until (условие);

Алгоритм работы цикла следующий: выполняется операторы тела цикла, затем проверяется условие, если условие ложно, то вновь выполняются операторы тела цикла, если же условие истинно, то осуществляется выход из цикла. Как и в цикле с предусловием, в этом цикле, параметр изменяется принудительно программистом. Как пример, рассмотрена программа табуляции функции предыдущего раздела, программа 5. Исходный текст программы 5 представлен на экранной форме 10. Результаты работы на экранной форме 9.(Рис.7)

Рисунок 7- Экранная форма 4 Исходный код программы 5

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

Следует отметить, что все три цикла могут содержать в теле цикла операторы или команды «принудительного выхода» из цикла. Команда break прерывает выполнение цикла, то есть осуществляет безусловный выход из цикла. Схема работы оператора break представлена рисунке 8. [2,c.624]

break

Рисунок 8- Схема использования оператора break

Команда continue прерывает выполнение тела цикла и возвращает управление в начало цикла. Схема работы оператора continue представлена рисунке 9.[5,c.544]

continue

Рисунок 9- Схема работы команды continue

Особенностью выполнения команды break в реализации арифметического цикла является тот факт, что при выходе из цикла параметр цикла определен, то есть не портится.

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

Например, структура выбора может содержать как линейную структуру, так и структуру выбора, которая в свою очередь может содержать условный оператор или циклическую структуру. Отсюда следует, что циклическая структура может внутри содержать такую же циклическую структуру. Такая конструкция называется вложенными циклами. Каждый из циклов имеет свой параметр.

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

Циклы любых типов могут быть вложенными друг в друга неограниченное количество раз. На схеме изображена конструкция из трех вложенных циклов (Рис.10)[10,c.112]

Рисунок 10 - Схема вложенных циклов

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

Глава 3. Циклические алгоритмы в задачах с массивами

При изучении языка программирования основополагающим понятием является термин «тип данных». Прежде чем перейти к изучению структурированных типов данных, изучаются базовые типы. Базовыми типами данных в Паскале являются целый - integer , word , byte , longint, вещественный - real, символьный - char, логический – boolean. Любой алгоритм можно запрограммировать с помощью этих четырех базовых типов. [14,c.176]

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

Такие сложные конструкции, основанные на базовых типах данных, называются структурами или пользовательскими типами данных.

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

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

Массив – это поименованная совокупность однотипных данных. Любой массив состоит из конечного числа элементов. Как следует из определения массива, все элементы массива имеют один и тот же базовый тип. Другими словами, структура массива всегда однородна. Массив может состоять из элементов типа integer , real или char , либо других однотипных элементов. Этими другими однотипными элементами могут быть массивы, записи, массивы записей и др. [12,c.472]

Второй особенностью массива является тот факт, что к любому элементу массива можно обратиться произвольным образом. Что это значит? Программа может сразу получить нужный ей элемент по его порядковому номеру (индексу). То есть, каждый элемент массива имеет значение и индекс, или порядковый номер.

Индекс – это значение порядкового типа, определенного, как тип индекса данного массива. Обычно тип индекса - это целочисленный тип (integer, word или byte ), но может быть и логический и символьный.

В языке Паскаль тип массива задается с использованием специального слова array (англ. – массив). Объявление пользовательского типа данных «массив» в программе выглядит следующим образом:[17]

Type < имя _ типа >= array [ I ] of T;

где I – тип индекса массива, T – тип его элементов.

Объявлять массив можно другим способом, в разделе описания переменных и описывать сразу переменные типа массив, т.е. в:

Var a,b: array [ I ] of T;

Как было указано выше, тип индекса (integer, word или byte ) характеризуется некоторым диапазоном значений. Диапазону значений соответствует порядковый тип данных: I1 .. IN. Например, индексы могут изменяться в диапазоне 1..15 или ‘a’..’ n’.

При этом длину массива Паскаля характеризует выражение:

ord (IN) - ord (I1) + 1

Вот, например, объявление двух типов: vect в виде массива Паскаля из 17 целых чисел и strk в виде массива из 130 символов:

Type

Vect=array [1..17] of integer;

Strk=array [0..129] of char;

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

Тогда переменные типа vect и strk должны быть следующим образом:

Var mass1: vect;

mass2: strk;

После того, как переменные объявлены, далее в программе пользователь может обращаться к отдельным элементам массива mass1 или mass2 .

Например, фрагмент программы может содержать следующие операторы:[19]

mass1 [5]:=23;

mass2 [19]:=’ w ’;

mass1 [7]:= mass1[5]*2;

writeln (mass2[1], mass2[3])

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

Этот механизм – весьма мощное средство программирования. Но он порождает распространенную ошибку: результат вычислений может оказаться за пределами диапазона допустимых значений индекса. В этом случае, будет произведена попытка обратиться к элементу, которого не существует. Эта типичная ошибка называется «выход за пределы массива». На экранной форме 11 приведен пример программы с ошибкой массива Паскаля.(Рис.11)[13,c.128]

Рисунок 11- Экранная форма 5 Программа с ошибкой «выход за пределы массива»

На экранной форме 12 приведено описание ошибки в программе.(Рис.12)

Рисунок 12- Экранная форма 6 Описание ошибки «выход за пределы массива»

Следует заметить, что текст программы полностью соответствует синтаксису языка. Программа пройдет трансляцию, но на этапе выполнения произойдет ошибка выхода за пределы массива Паскаля. При n =45 выражение n*2=90, компьютер сделает попытку обратиться к элементу массива a[90], но такого элемента нет, поскольку описан массив размерностью 80.

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

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, в работе приведены экранные формы с исходными кодами и результатами рабы каждой программы. Также в разделе подробно рассмотрены синтаксис каждого оператора цикла, их блок схемы. Рассмотрены арифметические и итерационные циклы, которые в свою очередь делятся на цикл с предусловием и цикл с постусловием. Итерационные циклы имеют свои особенности в использовании.

Например, цикл while … do (пока … делать), цикл с предусловием будет выполняться до тех пор, пока выражение будет истинным, как только выражение становится ложным, происходит выход из цикла и программа переходит к выполнению следующего оператора. Цикл repeat … until (делать … пока), цикл с пост условием себя работает немного иначе: сначала выполняется тело цикла, а затем выполняется проверка условия окончания цикла, причем пока выражение ложно, цикл выполняется, как только логическое выражение примет значение станет истина, цикл прекращает свою работу.

Особое внимание в работе уделено циклу FOR … TO … DO. В арифметическом цикле или цикле со счетчиком, параметр цикла имеет порядковый тип, это значит, что значение параметр цикла увеличивается или уменьшается на единицу при каждой итерации цикла.

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

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

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

  1. Алешин, Л.И. Информационные технологии: Учебное пособие / Л.И. Алешин. - М.: Маркет ДС, 2016. - 384 c.
  2. Брукшир, Дж.Г. Информатика и вычислительная техника, СПб: Питер,2014г,с.624
  3. Голицына О. Л., Попов И. И. Программирование на языках высокого уровня, Форум, 2014 г., с.496
  4. Гаврилов, М.В. Информатика и информационные технологии: Учебник для бакалавров / М.В. Гаврилов, В.А. Климов; Рецензент Л.В. Кальянов, Н.М. Рыскин. - М.: Юрайт, 2013. - 378 c.
  5. Гвоздева, В.А. Информатика, автоматизированные информационные технологии и системы: Учебник / В.А. Гвоздева. - М.: ИД ФОРУМ, НИЦ ИНФРА-М, 2013. - 544 c.
  6. Гохберг, Г.С. Информационные технологии: Учебник для студ. учрежд. сред. проф. образования / Г.С. Гохберг, А.В. Зафиевский, А.А. Короткин. - М.: ИЦ Академия, 2016. - 208 c.
  7. Исаев, Г.Н. Информационные технологии: Учебное пособие / Г.Н. Исаев. - М.: Омега-Л, 2015. - 464 c.
  8. Немцова Т. И., Голова С. Ю., Абрамова И. В. Программирование на языке высокого уровня. Программирование на языке Object Pascal, Форум, Инфра-М, 2013г.,с.6
  9. Павловская, Т.А. Паскаль. Программирование на языке высокого уровня, СПб: Питер, 2015г,с.393
  10. Сулейманов Р.Р. Методика решения учебных задач средствами программирования//Методическое пособие – М: 2013, с. 112
  11. Федотова, Е.Л. Информационные технологии и системы: Учебное пособие / Е.Л. Федотова. - М.: ИД ФОРУМ, НИЦ ИНФРА-М, 2013. - 352 c.
  12. Хлебников, А.А. Информационные технологии: Учебник / А.А. Хлебников. - М.: КноРус, 2014. - 472 c.
  13. Щипицина, Л.Ю. Информационные технологии, Учебное пособие / Л.Ю. Щипицина. - М.: Флинта, Наука, 2019. - 128 c.
  14. Ээльмаа, Ю.В. Информационные технологии и автоматизация:- М.: Просв., 2017. - 176 c.
  15. Пахомова А.В. Методическое пособие "Программирование на языке Turbo Pascal.- URL: http://tp7.info/metod_uk2.php (дата обращения: 21.02.2018)
  16. Учебник Turbo Pascal 7.0 - CибГУТИ, [Электронный ресурс] - URL: http://pascal.guti.ru/fornext.html
  17. Секаев В. Г. Основы программирования: учебное ,Фак. автоматики и вычисл. техники. - Новосибирск, Режим доступа: http://www.ciu.nstu.ru/fulltext/textbooks/2010/10_sekaev.pdf
  18. Программирование. Динамические списки Pascal.//сайт посвященный языку программирования Turbo Pascal [Электронный ресурс] - URL: http://www.pascal.helpov.net/index/dynamic_lists_pascal_programming
  19. Программирование на языке высокого уровня TURBO PASCAL: Учебное пособие. [Электронный ресурс] - URL: http://www.doklad.ref24.ru/works/62792.html
  20. https://ru.wikipedia.org