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

Автор работы: Пользователь скрыл имя, 21 Декабря 2013 в 06:23, курсовая работа

Краткое описание

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

Содержание

Введение________________________________________3
Цели и задачи____________________________________3
Циклические алгоритмы ___________________________4
Цикл FOR_______________________________________5
Цикл WHILE____________________________________10
Цикл DO…WHILE _______________________________14
Специальные функции для циклов___________________18
Массивы________________________________________22
Двумерные массивы ______________________________27
Заключение _____________________________________33
Список литературы_______________________________34

Вложенные файлы: 1 файл

kursach.docx

— 683.06 Кб (Скачать файл)


 

 

 

 

 

 

 

 

 

 

 

Рисунок 4 – код игры «угадай число»

Чтобы войти  в цикл необходимо инициализировать переменную enter_number, тогда цикл while начнёт корректную проверку условия, вот для этого перед циклом while мы запрашиваем пользователя ввести число. После того как пользователь ввёл число, начинает работать цикл while, выйти из которого получится только в случае угадывания числа. Результат работы программы (см. Рисунок 5).

Рисунок 5 – результат работы

Цикл do…while

Цикл do…while отличается от цикла while тем, что в do…while сначала выполняется тело цикла, а затем проверяется условие продолжения цикла. Из-за такой особенности do…while называют циклом с «постусловием». Таким образом, если условие do…while заведомо ложное, то хотя бы один раз блок операторов в теле цикла do…while выполнится. В итоге do…while отличается от цикла while структурой. Если в while сначала выполняется проверка условия продолжения цикла, и если условие истинно, то только тогда выполняется тело цикла. Цикл do…while работает с точностью да наоборот, сначала выполняется тело цикла, а потом проверяется условие, вот почему  тело цикла do…while, хотя бы раз, выполнится.

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

 

// форма  записи оператора цикла do while:

do // начало цикла do while

{

/*блок  операторов*/;

}

while (/*условие выполнения цикла*/); // конец цикла do while

 

В начале цикла do…while пишется зарезервированное слово do, после идут фигурные скобки, которые можно опускать, в случае использования одного оператора в теле цикла do…while. После закрывающей фигурной скобки, обозначающей конец тела цикла do while, стоит условие цикла do…while, после которого обязательно нужно ставить точку с запятой. Рассмотрим программу с  циклом do…while, которая выполняет некоторые транзакции с денежным счётом в банке. На рисунке 6 отображен код данной программы:

 


 

 

 

 

 

 

 

 

 

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

Переменная balance, отвечает за остаток денежных средств на счету. Сразу после ее объявления - записан цикл do…while.  В цикле  do…while выполняются все транзакции со счётом balance, а именно — перевод денежных средств на какой-то другой счёт,  строка «balance -= removal;». Строка «cout << "balance = " << balance << endl;»  показывает остаток денежных средств   на счету balance.  В строке «int removal = rand() % 3;»  объявлена переменная, в которой хранится вычитаемое значение, причём это значение генерируется случайно в интервале [0;2]. Переменная removal один раз объявляется в теле цикла do…while, и каждый раз при повторении цикла эта переменная не переопределяется. А вот её значение меняется, в зависимости от того, какое число сгенерировалось.  В строке «while ( balance > 0 );»  записано условие цикла do…while, как только условие станет ложным, программа передаст управление следующему оператору, после цикла do…while. Результат работы программы показан на рисунке 7.

Рисунок 7 – результат работы

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

Вспомним игру «Угадай число». В этой задаче правильней было бы использовать цикл do…while, код уменьшится на две строки (Рисунок 8).


 

 

 

 

 

 

 

 

 

 

Рисунок 8 – игра «угадай число»

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Специальные функции для циклов

В любом цикле мы можем использовать 2 специальные функции для работы с циклом:

 

continue - перейти к следующему шагу  цикла

break - прекратить цикл

 

Оператор continue используется только в циклах. В операторах  for,  while,  do…while, оператор continue выполняет пропуск оставшейся части кода тела цикла и переходит к следующей итерации цикла. Рассмотрим фрагмент кода с оператором continue.

 

// пример  использования оператора continue:

int count = 0;

do // начало цикла do…while

{

continue;

count++;

}

while ( count  <  10 )

 

Посмотрим внимательно на приведенный выше пример, и мы увидим, что do…while бесконечный, так как каждая итерация цикла приводит к выполнению оператора continue, который пропускает операцию инкремента переменной-счётчика count и переходит на следующую итерацию цикла. Таким образом значение в переменной count не меняется, а значит и условие всегда будет истинным.

Разработаем программу с  оператором continue. Программа должна работать циклически. Внутри цикла необходимо организовать ввод чисел. Если введено число от 0 до 10 включительно, то необходимо напечатать квадрат этого числа, иначе используя оператор continue пропустить оператор возведения в квадрат введенного числа. При введении отрицательного числа осуществить выход из цикла. На рисунке 9 отображен код данной программы:


 

 

 

 

 

 

 

 

 

 

 

Рисунок 9 – использование оператора  «continue»

Цикличность в программе  организуем циклом с постусловием - do while. В цикле сначала считываем введённое число в переменную in_number, после чего, выполняется проверка условия в операторе if. Условие оператора условного выбора if будет истинным в том случае, если введённое число будет строго меньше нуля или строго больше 10. Заданный интервал — [0;10], число взятое из этого интервала возводится в квадрат. Истинность условия оператора if  приводит к выполнению оператора continue. После чего переходит к проверке условия продолжения цикла do…while. Условие в цикле будет истинно, пока вводимые числа будут строго больше 0. Результат работы программы показан на рисунке 10. 

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

Сначала вводились  числа 15 и 11, эти числа не входят в  заданный интервал и поэтому квадрат  этих чисел не вычислялся. Числа 5 и 9 принадлежат заданному интервалу, а значит программа должна вычислить  их квадраты. Когда ввели отрицательное  число,  do…while завершил свою работу. 

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


 

 

 

 

 

 

 

 

Рисунок 11 – использование оператора  «break»

В данной программе мы используем заголовочный файл содержащий  прототипы основных математических функций, для того, чтобы использовать функцию pow(). Функция pow(a,b) возводит число а в степень  b. В цикле for объявлена переменная-счётчик count, значение которой меняется от 0 до 10 включительно. При выполнении условия, оператор условного выбора if, запускает на выполнение оператор break, который, в свою очередь, приводит к выходу из цикла for. Ниже запускается функция pow(). Условие продолжения цикла for будет истинно до тех пор, пока значение в переменной count <= 10. Тогда как, выход из цикла for произойдёт раньше, чем условие продолжения цикла станет ложным. Выход из цикла for выполнится, когда значение в переменной count станет равным шести. Результат работы программы показан на рисунке 12.

Рисунок 12 – результат работы

Из рисунка 12 видно, что таблица степеней двойки напечаталась, включительно, до пятой степени. Если убрать оператор условного выбора if, то напечатаются степени двойки, включительно до десятой.

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

 

 

 

 

 

 

 

 

Массивы

Массив это структура  данных, представленная в виде группы ячеек одного типа, объединенных под  одним единым именем. Массивы используются для обработки большого количества однотипных данных. Имя массива является указателем. Отдельная ячейка данных массива называется элементом массива.  Элементами массива могут быть  данные любого типа. Массивы могут иметь как одно, так и более одного измерений. В зависимости от количества измерений массивы делятся на одномерные массивы, двумерные массивы, трёхмерные массивы и так далее до n-мерного массива. Чаще всего в программировании используются одномерные и двумерные массивы, поэтому мы рассмотрим только эти  массивы.

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

Рисунок 13 – структура одномерного массива

Заметьте, что максимальный индекс одномерного массива 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 };

На рисунке 14 показан пример простейшей программы для обработки массива:


 

 

 

 

 

 

 

 

 

 

 

Рисунок 14 – простейшая обработка  массива

 

Любая обработка массива  осуществима только совместно с  циклами. Но лучше всего для этой задачи подходит цикл for. Переменную-счётчик counter будем использовать для обращения к элементам одномерного массива array1. В условии продолжения цикла for стоит строгий знак неравенства, так как шестнадцатого индекса в одномерном массиве array1  нет. А так как нумерация ячеек начинается с нуля, то элементов в массиве 16. В теле цикла for оператор  cout печатает элементы одномерного массива. Результат работы данной программы на рисунке 15:

 

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

 

Рассмотрим ещё одну программу на обработку одномерного массива в С++. Программа будет последовательно считывать десять введённых чисел с клавиатуры. Все введённые числа  просуммировать, результат вывести на экран. На рисунке 16 код данной программы:

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 16 – код программы суммирования элементов массива

 

Перед тем как выполнять  обработку массива его необходимо объявить, причём размер одномерного  массива равен 10, так как это  оговорено условием задачи. В переменной sum будем накапливать сумму элементов одномерного массива. Первый цикл for заполняет объявленный одномерный массив, введёнными с клавиатуры числами. Переменная счётчик counter используется для последовательного доступа к элементам одномерного массива array1, начиная с индекса 0 и до 9-го включительно. Второй цикл for выводит на экран элементы массива. Третий цикл for последовательно считывает элементы одномерного массива и суммирует их, сумма накапливается в переменной sum. Результат работы программы смотреть на рисунке 17.

Рисунок 17 – результат работы

 

Сначала последовательно вводим все 10 чисел, после чего отображается одномерный массив, и печатается сумма чисел массива.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

 

Рисунок 18 – структура двумерного массива

 

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

 

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

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

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

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

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