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

Основные структуры алгоритмов: сравнительный анализ и примеры их использования (Построение алгоритмов вычислительных процессов)

Содержание:

ВВЕДЕНИЕ

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

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

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

Среди объектно-ориентированных языков программирования самым популярным является С++, который сегодня является господствующим при разработке программных продуктов, а объектно-ориентированный подход – приоритетным.

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

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

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

Задачи исследования:

- ознакомиться с особенностями некоторых современных языков программирования высокого уровня;

- исследовать циклические конструкции в языках высокого уровня;

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

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

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

Предмет исследования - циклические конструкции и массивы данных.

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

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

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

ГЛАВА 1. АЛГОРИТМЫ ВЫЧИСЛИТЕЛЬНЫХ ПРОЦЕССОВ

1.1. Построение алгоритмов вычислительных процессов

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

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

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

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

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

Из определения алгоритма можно точно определить и его свойства (Рис 1.1).

Рисунок 1.1. – Свойства алгоритма[5]

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

Для наглядности этих видов записи алгоритмов приведем конкретный пример.

Имеем ряд чисел: . Необходимо определить сумму положительных чисел.

Задача довольно проста, достаточно выбрать положительные числа и суммировать их. Запишем алгоритм в обычном словесном виде (Рис 1.2)

Рисунок 1.2. – Запись алгоритма в словесном виде

Данный способ довольно громоздок и не дает наглядного представления о вычислительном процессе[6].

Формульно-словесный способ – удобная форма записи алгоритма, поскольку в нем присутствуют математические символы и выражения с необходимыми словесными пояснениями (Рис 1.3)

Рисунок 1.3. – Запись алгоритма в формульно-словесном виде

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

Запишем рассматриваемый алгоритм в виде операторной схемы.

Пусть В – оператор ввода, который вводит данные в компьютер, А – арифметический оператор, предусматривающий выполнение арифметических операций; Р – логический оператор, предусматривающий проверку определенных условий; П – оператор печати результатов; Я – оператор завершения вычислительного процесса. Тогда алгоритм можно записать в виде последовательности операций (Рис 1.4.)

Рисунок 1.4. – Запись алгоритма в виде операторной схемы

Тут каждый оператор имеет свой порядковый номер в соответствии с последовательностью операций в алгоритме.

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

Рисунок 1.5. – Запись на алгоритмическом языке

Графический способ записи алгоритмов, по сравнению с вышеперечисленными способами имеет ряд преимуществ:

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

На рисунке 1.6. показана блок-схема рассматриваемого нами алгоритма.

Рисунок 1.6. - Графическое отображение алгоритма

1.2. Основные алгоритмические структуры

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

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

Такая структура алгоритма отображает вычисление простых арифметических выражений (Рис 1.7).

а) б) в)

Рисунок 1.7. – Алгоритмы линейной структуры[9]

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

Рисунок 1.8. – Алгоритм разветвленной структуры

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

Рисунок 1.9. – Алгоритм циклической структуры

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

ГЛАВА 2. ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ АЛГОРИТМОВ ЦИКЛИЧЕСКОЙ СТРУКТУРЫ (НА ПРИМЕРЕ С++)

2.1. Общие понятия

Для программирования алгоритмов циклической структуры используют различные операторы цикла. Они обеспечивают повторное выполнение выражений. В языке С++ предусмотрено три вида таких операторов: for, while, do … while. Они отличаются между собой механизмами управления циклом и их размещением. В цикли for количество повторений задается заранее, а цикл управляется счетчиком и логическими выражениями, размещенными в начале цикла. Цикл while используется до тех пор, пока не будет выполнено логическое условие, сформулированное в начале цикла. Как противоположность ему, цикл do…while проверяет условие выхода из цикла в конце.

Набор операторов, которые повторно выполняются, создают тело цикла. В зависимости от местоположения условия выхода из цикла, циклы делятся на циклы с предварительной проверкой условий (for, while) и на циклы с последующей проверкой условия (do…while).

2.2. Цикл со счетчиком for

Считается, что цикл forявляется самым легким для понимания, поскольку все элементы, контролирующие его выполнение, собраны в одном месте. Цикл for организовывает выполнение фрагмента программы фиксированное количество раз. Синтаксис оператора for изображен на рис 2.1.

Рисунок 2.1. – Синтаксис оператора for

Использование оператора forрассмотрим на примере вывода на экран дисплея в ряд чисел от 1 до 10. Алгоритм решения изображен на рисунке 2.2, а приведенная на рис 2.3. программа демонстрирует применение оператора for.

Рисунок 2.2. – Схема применения оператора for

Рисунок 2.3. Код программы

В рядке 4 программы записан оператор цикла for. Цикл forначинается с ключевого слова for, набранного маленькими буквами, за которым стоит три аргумента в скобках. Каждый аргумент отделен точкой с запятой. Аргументами для for соответственно являются инициализация, завершение и прирост. Они определяют длительность рабочего цикла. Первый аргумент объявляет переменную chislo как переменную целого типа и присваивает ей значение 1:

for (intchislo = 1; chislo<= 10; chislo++)

В этом выражении необычно то, что переменная chisloобъявлена и инициализирована в середине оператора for. Иногда такую переменную называют переменной управления циклом. Она является обычной переменной и объявляется как переменная целого типа. Переменной управления циклом можно давать любые имена. Исторически сложилось так, что таким переменным дают однобуквенные имена, такие как i, j, k, хотя можно давать имена, указывающие на происходящий процесс, как это и происходит в нашем случае.

Как видим, объявление переменной и присвоение ей начального значения сделано в первом аргументе. Этот аргумент соответствует блоку 2 приведенного алгоритма (Рис 2.2).

Второй аргумент называется аргументом завершения. Он является выражением, которое проверяется для завершения цикла, и отвечает блоку 5 алгоритма (Рис 2.2). В данном случае, говоря на языке С++, пока значение переменной управления циклом chisloменьше 10, следует продолжать выполнять операторы, находящиеся в теле цикла.

Важно понять, что в цикле for тело цикла не будет исполняться ни разу, пока не будет вычислено значения проверяемого выражения. Пока это выражение возвращает значение true, то тело цикла будет выполняться. Когда выражение приобретёт значение false, исполнение перейдет к оператору, следующему за телом цикла.

Третий аргумент в операторе forявляется аргументом прироста (блок 4). Он говорит, что к переменной, управляющей циклом надо прибавить 1. В исследуемой программе ми использовали операцию инкремента (++) для того, чтобы прибавлять единицу к значению переменной каждый раз, когда происходит оценка выражения. Если б третьего аргумента б не было, то значение chislo всегда б равнялось 1, и проверяемое выражение всегда было б меньше 10. В таком случае цикл продолжался б бесконечно, то есть получился б бесконечный цикл или, как говорят программисты, программа б зациклилась. Бесконечный цикл – это цикл, который продолжает выполняться потому, что программист забыл принять меры для его завершения.

В данном примере цикл будет выполнятся ровно 10 раз. Тело цикла составляет вывод чисел на экран (блок 3) (Рис 2.4)

Рисунок 2.4. – Результат работы программы

Рассмотрим пошагово, что происходит в программе. Когда цикл выполняется первый раз, то переменной chisloприсваивается значение 1. После этого впервые происходит оценка выражения. Поскольку сейчас значение переменной chisloменьше 10 (1 меньше 10), то выполняется тело цикла и на консоль выводится число 1. Потом (важно понять эту последовательность) происходит прирост значения переменной chislo при помощи операции инкремента (++). Это означает, что переменной chisloприрост присваивается уже после того, как тело цикла выполнилось.

Когда переменная chisloприобретет значение 10, выражение снова будет равняться true, поэтому цикл снова выполнится, после чего значение переменной опять увеличится на единицу и достигнет значения 11. Хотя значение переменной chisloравняется 11, выражение должно быть оценено еще раз. В этом случае выражение вернет значение false, поскольку 11 не меньше 10, поэтому произойдет выход из цикла ы программа будет выполнятся начиная с рядка кода, стоящего за телом оператора for. Если в теле цикла forнеобходимо выполнить больше одного оператора, следует использовать фигурные скобки, чтобы сформировать блок (Рис 2.5)

Рисунок 2.5. – Блок внутри цикла

2.3. Цикл while

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

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

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

Синтаксис оператора цикла whileприведен на рисунке 2.6.

Рисунок 2.6. – Синтаксис оператора цикла while

Цикл whileначинается со слова while, после которого в круглых скобках пишется выражение, которое необходимо проверить. Пока выражение будет равно true, тело цикла будет выполняться. Поэтому программист должен сам быть уверен том, что выражение когда-либо станет равным false, и это следует записать с помощью кода в теле цикла. В операторе while выражение оценивается до того, как выполняется тело цикла.

Рассмотри пример. Модифицируем нашу предыдущую программу следующим образом. В гостинице этажи нумеруются со 2-го по 20-й. Мы хотим написать программу, которая будет выводить на дисплей номера этажей, на которых останавливается лифт, используя цикл while.

Рисунок 2.7. – Код программы

Сохраним, скомпилируем, исполним, получим:

Рисунок 2.8. – Окно программы

Как видим, в операторе whileнет аргумента инициализации. Поэтому перед тем, как писать структуру цикла, следует позаботится об этом и записать перед рядком цикла:

intet = 2;

После этого идет цикл whileи наше выражение, которое берётся в круглые скобки. Говоря языком С++: выполнять тело цикла пока значение переменной etменьше 21, и выводить это значение на экран:

while (et< 21)

{

cout<<et<<endl;

Поскольку цикл while не имеет собственного аргумента прироста, то следует позаботится о приросте переменной, которая определяет продолжение работы цикла. Это реализовано в программе при помощи рядка кода:

et++;

}

Новички же, при роботе с циклом whileдопускают два вида ошибок:

  1. инициализируют значение переменной, используемой в выражении в теле цикла;
  2. увеличивают значение этой переменной за пределами цикла

В первом случае каждый раз при использовании тела цикла значение переменной et вновь равняется 2. Во втором случае, если мы увеличиваем значение переменной вне тела цикла, значение в теле вновь равняется 2. В итоге выражение (et<21) всегда равно trueи цикл никогда не завершится. В обоих случаях мы имеем бесконечный цикл.

2.4. Цикл do-while

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

Рисунок 2.9. – Синтаксис цикла do-while

Тут все, что размещено между словами doи while, считается телом цикла.

В цикле do-whileтело цикла обязательно выполнится хотя бы один раз, поскольку выражение размещается в последнем рядке структуры цикла, даже когда выражение выдаст false.

Подадим пример вывода номеров этажей гостиницы черезоператор цикла do-while(Рис 2.10).

Рисунок 2.10 – Код программы

Ключевое слово do означает начало цикла. Дальше идет тело цикла, которое необходимо взять в фигурные скобки. Завершает цикл условие продолжение цикла, взятое в круглые скобки, которое задается с помощью ключевого слова while. Это условие похоже на условие цикла while, однако имеет два отличия: во-первых оно размещается в конце цикла, а во-вторых, заканчивается точкой с запятой (;).

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

ГЛАВА 3. ИСПОЛЬЗОВАНИЕ АЛГОРИТМОВ ДЛЯ ПРОГРАММИРОВАНИЯ МАССИВОВ

3.1. Общие понятия про массивы

В языках программирования, в том числе и С++, при работе с данными одинакового типа их группируют. Основным механизмом для этого является массив. Массив может содержать от нескольких единиц данных до нескольких миллионов. Данные, группируемые в массиве, могут быть как основных типов, таких, например, как int, float, и т.д., так и типов, определенных пользователем.

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

(3.1)

а в случае многомерного массива, например двухмерного – как матрицу вида:

(3.2)

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

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

3.2. Типичные алгоритмы при работе с массивами

Рассмотрим основные алгоритмы при работе с массивами на примере простых задач.

Пример 1. Ввести одномерный массив вида в память компьютера.

Логика решения задачи следующая:

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

На рисунке 3.1. представлено схему алгоритма решения этой задачи. Блок 1 задает начало вычислительного процесса. В блоке 2 отображено действие выделения памяти компьютера под размещение элементов массива. Обращение к первому элементу массива происходит в блоке 3, где индексу присваивается значение единицы, то есть

(3.3)

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

(3.4)

Полученное выражение следует читать так: новому значению , которое стоит слева от знака «=», присвоить предыдущее значение , увеличенное на 1.

В блоке 6 происходит проверка условия: все ли элементы массива введены в память? В случае введения всех элементов в память значение индекса превышает максимальное и управление переходит на продолжение процесса, что отвечает ветке «Нет», в противном случае линия потока направляется к блоку 4, где снова происходит введение элемента, и вычислительный процесс продолжается до блока 6

Рисунок 3.1. – Схема алгоритма введения одномерного массива в память

3.3. Использование массивов в языке С++

Одномерный массив — массив, с одним параметром, характеризующим количество элементов одномерного массива. Фактически одномерный массив это массив, у которого может быть только одна строка, и n-е количество столбцов. Столбцы в одномерном массиве — это элементы массива. На рисунке 13 показана структура целочисленного одномерного массива a. Размер этого массива — 16 ячеек.

массивы С++

Заметьте, что максимальный индекс одномерного массива a равен 15, но размер массива 16 ячеек, потому что нумерация ячеек массива всегда начинается с 0. Индекс ячейки – это целое неотрицательное число, по которому можно обращаться к каждой ячейке массива и выполнять какие-либо действия над ней (ячейкой).

Синтаксис объявления массивы выглядит следующим образом:

/*тип данных*/ /*имя одномерного массива*/[/*размерность одномерного массива*/];

Пример объявления одномерного массива, изображенного на рисунке 13:

int a[16];

где, int - целочисленный тип данных;

а – имя одномерного массива;

16 — размер одномерного массива, 16 ячеек.

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

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

Пример инициализации одномерного массива:

int a[16] = { 5, -12, -12, 9, 10, 0, -9, -12, -1, 23, 65, 64, 11, 43, 39, -15 };

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

То есть, визуально, двумерный массив — это обычная таблица, со строками и столбцами. Структура двумерного массива, с именем a, размером m на n показана ниже (рисунок 18).

двумерный массив С++

где, m - количество строк двумерного массива;

n - количество столбцов двумерного массива;

m * n - количество элементов массива.

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

  • тип данных;
  • имя массива.

После чего, в первых квадратных скобочках указывается количество строк двумерного массива, во вторых квадратных скобочках — количество столбцов двумерного массива. Двумерный массив визуально отличается от одномерного второй парой квадратных скобочек. Рассмотрим пример объявления двумерного массива. Допустим нам необходимо объявить двумерный массив, с количеством элементов, равным 15. В таком случае двумерный массив может иметь три строки и пять столбцов или пять строк и три столбца.

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

int a[5][3]

  • a - имя целочисленного массива
  • число в первых квадратных скобках указывает количество строк двумерного массива, в данном случае их 5;
  • число во вторых квадратных скобках указывает количество столбцов двумерного массива, в данном случае их 3.

Пример инициализации двумерного массива:

int a[5][3] = { {4, 7, 8}, {9, 66, -1}, {5, -5, 0}, {3, -3, 30}, {1, 1, 1} };

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

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

Рисунок 3.1. - Листинг программы

Рисунок 3.2. – Протокол выполнения программы

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

ЗАКЛЮЧЕНИЕ

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

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

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

В процессе выполнения данной работы мы рассмотрели основные типы циклов и методы их применения. Кроме того рассмотрены специальные функции циклов – break и continue. Исследованы методы применения специальных функций.

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

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

  1. Джесс Либерти. Освой самостоятельно С++ за 21 день. Издательский дом «Вильямс». 2001. с. 167-185
  2. Борис Пахомов. С/С++ и MS Visual C++ 2010 для начинающих. БХВ-Петербург. 2011. с. 30-37
  3. Бьерн Страуструп. Программирование. Принципы и практика использования С++. Издательский дом «Вильямс». 2011. с. 86-92
  4. АйворХортон. Visual C++ 2010. Полный курс. Издательский дом «Вильямс» 2011. с. 164-200
  5. Дэвид Гриффитс, Дон Гриффитс. Изучаем программирование на С. Издательство «Эксмо» 2013. с. 74- 81
  6. Прата С. Язык программирования С++. Издание 6. Издательский дом «Вильямс» 2011. с. 192- 196
  7. Брайан Керниган, ДеннисРитчи. Язык программирования С++. Издательство «Невский диалект» 2001. с. 124-164
  8. Р. Лафоре. Объектно-ориентированное программирование в С++. Издательство «Питер». Издание 4. 2004. с. 262-271
  9. Хусаинов Б.С. Структуры и алгоритмы обработки данных. Примеры на языке Си. Учеб.пособие. – Финансы и статистика, 2004. – 464с. Массивы.стр. 35-62
  10. Кубенский А.А. Структуры и алгоритмы обработки данных: объектно-ориентированный подход и реализация на С++. – СПб.: БХВ-Петербург, 2004. – 464с.
  11. Седжвик Роберт. Фундаментальные алгоритмы на С++. Анализ/Структуры данных/Сортировка/Поиск: Пер. с англ./ Седжвик Роберт. К.: Издательство «ДиаСофт», 2001. с. 87- 93
  12. С/С++. Структурное программирование: Практикум/Т.А. Павловская, – СПб.: Питер. 2003.–461с.Двумерные массивы: стр.71 -88
  13. Язык С++: Учеб.пособие/И.Ф. Астахова, С.В. Власов, В.В. Фертиков, А.В. Ларин.–Мн.: Новое знание, 2003. – 203с.
  14. Лаптев В.В., Морозов А.В., Бокова А.В. С++. Объектно-ориентированное программирование. Задачи и упражнения. – СПб.: Питер. 2007.–288с
  15. Кнут, Дональд, Эрвин. Искусство программирования. Том 1. Основные алгоритмы. 3-е изд. Пер. с англ. – : Уч. пос. М.: Издательский дом. «Вильямс», 2000.– 720с. Массивы и ортогональные списки: 341 ÷ 351
  16. С++ Стандартная библиотека. Для профессионалов./Н. Джосьютис. – СП Питер, 2004. Обычные массивы как контейнеры STL – стр. 223
  17. Динман М.И. С++. Освой на примерах. – СПб.: БХВ-Петербург, 2006. Массивы: стр. 79 ÷138
  18. Харви Дейтел, Пол Дейтел. Как программировать на С++. Пер. с англ. – М.: ЗАО «Издательство БИНОМ», 1998 г. Массивы: стр. 260-289
  19. Майерс С. Эффективное использование С++. 50 рекомендаций по улучшению ваших программ и проектов. Пер. с англ. – М.: ДМК Пресс; – СПб.: Питер. 2006.–240с.
  20. Штерн Виктор. Основы С++: Методы программной инженерии.– Издательство «Лори», 2003. – 860с. О массивах стр.143-166
  21. Скляров В.А. Язык С++ и объектно-ориентированное программирование. Справочное пособие. – Минск. «Вышейшая школа». – 1997г. – 478с.
  1. Кубенский А.А. Структуры и алгоритмыобработкиданных: объектно-ориентированныйподход и реализация на С++. – СПб.: БХВ-Петербург, 2004. – 464с.

  2. Седжвик Роберт. Фундаментальныеалгоритмы на С++. Анализ/Структурыданных/Сортировка/Поиск: Пер. с англ./ Седжвик Роберт. К.: Издательство «ДиаСофт», 2001. с. 87- 93

  3. Кнут, Дональд, Эрвин. Искусствопрограммирования. Том 1. Основныеалгоритмы. 3-е изд. Пер. с англ. – : Уч. пос. М.: Издательскийдом. «Вильямс», 2000.– 720с. Массивы и ортогональные списки: 341 - 351

  4. Седжвик Роберт. Фундаментальныеалгоритмы на С++. Анализ/Структурыданных/Сортировка/Поиск: Пер. с англ./ Седжвик Роберт. К.: Издательство «ДиаСофт», 2001. с. 87- 93

  5. Язык С++: Учеб. пособие/И.Ф. Астахова, С.В. Власов, В.В. Фертиков, А.В. Ларин.–Мн.: Новоезнание, 2003. – 203с.

  6. Бьерн Страуструп. Программирование. Принципы и практика использования С++. Издательский дом «Вильямс». 2011. с. 86-92

  7. С/С++. Структурное программирование: Практикум/Т.А. Павловская, – СПб.: Питер. 2003.–461с. Двумерные массивы: стр.71 -88

  8. Майерс С. Эффективное использование С++. 50 рекомендаций по улучшению ваших программ и проектов. Пер. с англ. – М.: ДМК Пресс; – СПб.: Питер. 2006.–240с.

  9. Скляров В.А. Язык С++ и объектно-ориентированное программирование. Справочное пособие. – Минск. «Высшая школа». – 1997г. – 478с.