Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 02.doc
Скачиваний:
2
Добавлен:
21.08.2019
Размер:
90.11 Кб
Скачать

В. Г. Васильев Лабораторная работа №2

по дисциплине «Структуры и алгоритмы обработки данных»

Работа рассчитана на 2 часа (1 занятие)

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

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

2.1. Операторы циклов в С/С++

Цикл - это многократное повторение одного и того же кода программы. Последовательность действий, которые повторяются в цикле, называют телом цикла. Тело цикла будет выполняться до тех пор, пока условие будет истинно, то есть true. Если условие всегда истинно, то такой цикл называется бесконечным. У такого цикла нет точки выхода. Итерацией цикла называется набор команд, заключенных в теле цикла.

В языке Си существует 3 вида циклов:

1) цикл с параметром или цикл типа for;

2) цикл с предусловием или цикл типа while,

3) цикл с постусловием или цикл типа do ... while .

2.2. Цикл с параметром – оператор for

По статистике, около 75% циклов в программах – это циклы типа for. Для цикла типа for заголовок  состоит из трех разделов: инициализации (присваивания начального значений счетчику цикла), проверки условия повторения, приращение (изменения параметров). Разделителем между разделами заголовка  служит  точка с запятой.

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

for (/*выражение1*/; /*выражение2*/; /*выражение3*/ )

{

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

}

Если в теле цикла for должен выполнится один оператор, тогда фигурные скобки можно опустить.

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

Выражение 1 - объявление (и) или инициализация, ранее объявленной, переменной-счетчика, которая будет отвечать за истинность условия в цикле for. Пример: 

int counter = 0; // отсюда видно, что была объявлена переменная counter типа int и инициализирована значением 0

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

Если переменная была объявлена в цикле (все равно в каком), по завершении цикла эта переменная будет уничтожена.

Разница между объявлением и инициализацией переменной:

counter; // объявление переменой count

 

counter = 9; // инициализация целочисленной  переменой count значением  9.

Выражение 2 - это условие продолжения цикла for, оно проверяется на истинность.

counter < 10; // условие истинно пока count строго меньше десяти!

Выражение 3 изменяет значение переменной-счетчика. Без выражения 3 цикл считается бесконечным, так как изменение содержимого переменной count выполняться не будет, и если изначально условие было истинным, то цикл будет бесконечным, иначе программа даже не войдет в цикл.

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

for ( int counter = 0; counter < 15; counter++) // выполняется приращение переменной counter с шагом 1 от 0 до 15

"++" это операция инкремента, увеличение значения переменной на единицу

"--" это операция декремента, уменьшение значения переменной на единицу

Очень часто неправильно интерпретируется запись пределов в цикле for. В примере приращение переменной counter выполняется с шагом 1 от 0 до 15. Обратите внимание на конечный предел. В условии продолжения цикла стоит знак отношения строго меньше, а значит, когда значение в переменной counter будет равно 14, выполнится выход из цикла.

Шаг в цикле for может быть отличным от единицы, а точнее, любым целым числом.

for ( int counter = 0; counter <= 20; counter += 5) // приращение переменной counter от 0 до 20 включительно с шагом 5

В этом случае переменная counter будет равнятся 5, 10, 15, и 20, после чего выполнится выход из цикла for.

for ( int counter = 20; counter >= 0; counter -= 5) // изменение переменной counter от 20 до 0 включительно

Оператор инкремента i++ (или  декремента i ––),  эквивалентен i=i +1 (i=i–1).

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

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

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

Пример 1. Вычисление суммы квадратов натурального ряда чисел от 1 до n.

S= 12 + 2 2  + . . . + n 2.      

void __fastcall TForm1::Panel1Click(TObject *Sender)

{

int Summa,n,i;

String S;

n = StrToInt (Edit1->Text);

Summa =0.0;

for (i = 1; i < n+1; i++)

Summa = i*i+Summa;

S.sprintf ("n=%d Сумма =%d",n,Summa);

Memo1->Lines->Add (S);

return;

}

При i,   не превышающем n+1, цикл  повторяется, иначе выполняется выход из цикла.