11824

Операторы цикла и передачи управления

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторная работа №4. Операторы цикла и передачи управления 1 Цель и порядок работы Цель работы изучить операторы используемые при организации программ циклических вычислительных процессов получить практические навыки в составлении программ. Порядок выпо...

Русский

2013-04-12

110 KB

32 чел.

Лабораторная работа №4. Операторы цикла и передачи управления

1 Цель и порядок работы

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

Порядок выполнения работы:

  •  ознакомиться с описанием лабораторной работы;
  •  получить задание у преподавателя, согласно своему варианту;
  •  написать программу и отладить ее на ЭВМ;
  •  оформить отчет.

2 Краткая теория

2.1 Операторы цикла

Многократно повторяемые действия могут быть заданы с помощью операторов цикла. Язык C++ поддерживает три вида циклов:

- цикл с предусловием;

- цикл с постусловием;

- цикл с параметром (итерационный цикл).

2.1.1 Цикл с предусловием (while)

Цикла с предусловием задается при помощи оператора while. Он имеет следующую форму записи:

while (условие) тело_цикла; 

Условие – это скалярное выражение, определяющее условия продолжения выполнения операций. Оно принимает логическое значение "истина" (true или любое не нулевое или не пустое значение) или "ложь" (fasle, ноль или пустое значение (null)). Выполнение оператора повторяется до тех пор, пока значением условия является "истина".

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

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

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

int digits = 0;

while (N > 0)

{

  digits = digits + 1;

  N = N / 10;

}

2.1.2 Цикл с предусловием (do while)

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

Синтаксис записи оператора:

do

  тело_цикла;

while (условие);

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

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

Предположим, необходимо вычислить произведение нечетных чисел от 1 до 10 включительно.

 

int i = 1, p = 1;

do

{

  p *= i;  // умножим произведение на i (p = p * i)

  i += 2;  // перейдем к следующему нечетному числу (i = i + 2)

} while (i < 10);            

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

2.1.3 Цикл с параметром (for)

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

Оператор цикла состоит из заголовка цикла и тела цикла. Тело цикла – это оператор, который будет повторно выполняться. Заголовок – это ключевое слово for, после которого в круглых скобках записаны три выражения, разделенные точкой с запятой. Первое выражение (инициализация цикла) вычисляется один раз до начала выполнения цикла. Второе – это условие цикла. Тело цикла будет повторяться до тех пор, пока условие цикла истинно. Третье выражение, последовательность скалярных выражений разделенных запятыми ",", вычисляется после каждого повторения тела цикла.

for (инициализация; условие; модификация)

   тело_цикла;

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

Схема выполнения оператора for:

1. Вычисляется первое выражение.

2. Вычисляется второе выражение.

3.1. Если значения второго выражения отлично от нуля (истина), выполняется тело цикла, вычисляется третье выражение и осуществляется переход к пункту 2.

3.2. Если второе выражение равно нулю (ложь), то управление передается на оператор, следующий за оператором for.

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

Предположим, нам нужно вычислить сумму всех целых чисел от 0 до 100. Для этого воспользуемся оператором цикла for:

int sum = 0;

int i;

for (i = 1; i <= 100; i = i + 1)   // заголовок цикла

  sum = sum + i;                  // тело цикла

Любое из трех выражений в заголовке цикла может быть опущено (в том числе и все три). То же самое можно записать следующим образом:

int sum = 0;

int i = 1;

for ( ; i <= 100; ) 

{

  sum = sum + i;

  i = i + 1;

} 

           

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

Еще один вариант:

int sum = 0;

int i = 1;

for ( ; ; )

{

  if (i > 100)

      break;

  sum = sum + i;

      i = i + 1;

}

В последнем примере был использован оператор break, который завершает выполнение цикла.

Еще одно полезное свойство цикла for: в первом выражении заголовка цикла можно объявить переменную. Эта переменная будет действительна только в пределах цикла.

2.2 Операторы передачи управления

К операторам передачи управления  относят  оператор безусловного перехода goto,  оператор возврата из функции return, оператор выхода из цикла или переключателя break и оператор перехода к  следующей итерации цикла continue.

2.2.1 Оператор безусловного перехода (goto)

Оператор безусловного перехода имеет вид:

goto идентификатор;

Идентификатор - имя метки расположенной в той же функции, где используется goto. Передача управления разрешается на любой помеченный оператор в теле функции. Запрещено перескакивать через описания, содержащие инициализацию объектов. Это ограничение не распространяется на вложенные блоки, которые можно обойти циклом. Применение оператора goto необходимо свести к минимуму. Если же применяете его, то придерживайтесь следующих правил:

- не входить внутрь блока извне;

- не входить внутрь условного оператора;

- не входить внутрь переключателя;

- не передавать управление внутрь цикла.

2.2.2 Оператор возврата из функции (return)

Оператор возврата из функции имеет вид:

return выражение;

или

return;

Выражение может быть только скалярным.

Например, функция вычисляет и возвращает куб значения своего аргумента:

float cube(float z) { return i*i*i; }

Выражение в операторе return не может присутствовать, если возвращенное функцией значение имеет тип void.

2.2.3 Оператор выхода из цикла (break)

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

Например, если необходимо применить дополнительное условие выхода из цикла:

while(i < j)

{

  i++;

  if (i == j)

      break;

  j=--;

}

Циклы и переключатели могут быть вложенными, break позволяет выйти только из самого внутреннего цикла или переключателя.

2.2.4 Оператор перехода к следующей итерации цикла (continue)

Еще одним оператором передачи управления является оператор перехода к  к следующей итерации (оператор продолжения) continue. Он употребляется только в операторах цикла. С его помощью завершается текущая итерация (при этом пропускается остаток тела цикла) и начинается проверка условия дальнейшего продолжения цикла, т.е. условий начала следующей итерации.

Например, если необходимо найти сумму всех целых чисел от 0 до 100, которые не делятся на 7.

int sum = 0;

for (int i = 1; i <= 100; i = i+1) 

{

  if ( i % 7 == 0)

      continue;

  sum = sum + i;

} 

3 Контрольные вопросы

  1.  Какие виды операторов цикла существуют.
  2.  Опишите оператор цикла с предусловием.
  3.  Опишите оператор цикла с постусловием.
  4.  Опишите оператор цикла с параметром.
  5.  Перечислите операторы передачи управления.
  6.  Какое назначение оператора break.
  7.  Какое назначение оператора continue.
  8.  Какое назначение оператора return.
  9.  Какое назначение оператора goto.

4 Задание

  1.  Написать программу в соответствии с вариантом задания из пункта 5.
  2.  Проверить работоспособность программы.
  3.  Отладить и протестировать программу.
  4.  Оформить отчёт.

5 Варианты заданий

  1.  Найти сумму целых положительных чисел из промежутка от А до В, кратных 3 (А и В вводятся с клавиатуры).
  2.  Найти количество делителей натурального числа. Сколько из них четные?
  3.  Дано натуральное n. Написать программу вычисления аn.
  4.  Составить алгоритм для расчета функции y= ln(sin(x)+1)*0.15 при изменении x от 0 до 12 с шагом х=0.2.
  5.  Самолет летит из пункта А к пункту В со средней скоростью v. Составить алгоритм для нахождения времени полета t(1), если есть встречный ветер, скорость которого v(1), и времени t(2), если ветра нет. Расстояние между пунктами А и В считать известным и равным S. Скорость ветра v(1) может изменяться от 0 до 15 м/с. Считать шаг изменения v(1) =0.5м/с.
  6.  Найти количество делителей натурального числа, больших К (К вводится).
  7.  Дана функция y=tg(x)+1. Написать программу для поиска максимального значения y в промежутке x[2;2.8] с шагом 0,1.
  8.  Дано вещественное число a, целое n. Вычислить: a (a-1) (a-2)...(a-n).
  9.  Получить таблицу пересчета миль в километры и обратно (1 миля = 1,609344 км) для расстояний, не превышающих k км, в следующем виде:

МИЛИ КМ

0,6214 1,0000

1,0000 1,6093

  1.  Дано целое число K. Найти сумму цифр числа  К.
  2.  Составить алгоритм для расчета функции у при х=0..15:
  3.  Написать программу возведения натурального числа в квадрат, используя следующую закономерность:

12=1

22=1+3

32=1+3+5

42=1+3+5+7

n2=1+3+5+7+…+2n-1

  1.  Дана функция y=2x3+1 Написать программу для поиска максимального значения y в промежутке x[-1;1] с шагом 0,2.
  2.  Программа ждет ввода числа и в зависимости от количества цифр в числе выдает сообщение об их разрядности: трехзначное, пятизначное и т.д.
  3.  Найти сумму десяти чисел кратных 3.
  4.  Используя алгоритм Евклида, найти наименьшее общее кратное (НОК) m и n.
  5.  Вычислить (1-sin (0.1))+(1+sin (0.2))+ (1-sin (0.3))+ ...+(1+sin (1.0)).
  6.  Написать программу нахождения суммы чисел по правилу (n-четно): a2+a4+a6+…+an.
  7.  Дано натуральное число. Получить все его натуральные делители.
  8.  Дана функция y=0.5+sin(5x), причем х изменяется от 0 до 2 с шагом х=/6.
  9.  Найти все натуральные числа от 1 до 1000, которые совпадают с последними разрядами своих квадратов, например: 252 = 625, 762 = 5676.
  10.  Дано целое число K. Найти произведение цифр числа  К.
  11.  Даны два натуральных числа. Получить их наибольший общий делитель (НОД), используя алгоритм Евклида.
  12.  Найти сумму четных делителей натурального числа.
  13.  Написать программу нахождения суммы чисел по правилу (n-нечетно): a1+a3+a5+…+an.

6 Содержание отчета

  1.  Титульный лист.
  2.  Наименование и цель работы.
  3.  Краткое теоретическое описание.
  4.  Задание на лабораторную работу.
  5.  Схема  алгоритма.
  6.  Листинг программы.
  7.  Результаты выполнения программы.


+

ело цикла

условие

условие

тело цикла

+


 

А также другие работы, которые могут Вас заинтересовать

38925. Основные алгоритмы телевизионных измерений 167 KB
  Алгоритмы предназначены для измерения геометрических энергетических и цветовых параметров протяженного объекта находящегося в поле зрения ТВД. Употребляемый по отношению к алгоритмам термин внутрикадровые означает чтo измерение параметра объекта выполняется на основе информации сосредоточенной в одном телевизионном кадре. Результат однократного измерения характеризует состояние объекта в момент съемки текущего кадра. Пересчет цифрового параметра объекта в его значение выраженное в соответствующих единицах измерения производится по...
38926. Межкадровая фильтрация и измерение динамических параметров 56 KB
  Кроме того изменения параметров динамического объекта за время Тк невелики опять же не всегда а в подавляющем большинстве случаев. применение к последним межкадрового усредения приведёт скорее всего к нежелательным последствиям например размазыванию изображения движущегося объекта. Но обычно перед ТВсистемами стоит задача измерения динамических параметров в частности непрерывный контроль за текущим состоянием объекта которые не могут быть определены однократным измерением. Так например скорость объекта где положения...
38927. Представление и преобразование цифровых сигналов в телевизионных измерительных системах 31.5 KB
  Оцифровка представление объекта изображения или сигнала в дискретном наборе цифровых замеров. Для решения задач машинной графики обработки и распознавания изображений используются следующие этапы преобразования изображения: Предварительная обработка операции восстановления фильтрации улучшения визуального восприятия изображения. Формирование графического препарата обработка с целью вычленения характерных особенностей изображениясегментация выделение контуров скелетизация Анализ выявление характерных особенностей...
38928. Простой пороговый метод нелинейной фильтрации импульсных помех 51.5 KB
  Сигнал от каждого из элементов массива анализируемого изображения сравнивается со средним значением сигнала для небольшой группы mxn в окрестностях данного элемента Здесь m и n нечётные числа. Анизотропная фильтрация Анизотропная фильтрация относится к категории линейных процедур цифровой обработки массива [Eij ]. Он заключается выполнении операции свёртки исходного массива изображения формата M×N со скользящим сглаживающим массивом [W] меньшего формата m×n ядро свёртки. А поскольку в АТСН работающих в реальном масштабе времени...
38929. Цифровое представление изображения в виде матрицы отсчетов. Преимущество цифрового кодирования видеосигнала 66 KB
  Цифровое представление изображения в виде матрицы отсчетов. Это позволяет пронумеровать отсчеты цифрового видеосигнала в соответствии с позиционным положением элемента изображения в телевизионном растре и nti = ni j где i номер элемента в строке; j номер строки. Фактически номера i j являются цифровыми координатами элемента изображения которые в случае линейных разверток связаны с временными и геометрическими координатами соотношениями где j порядковый номер строки в которой находится элемент изображения; tx интервал...
38930. Линейные цифровые фильтры и их характеристики 47 KB
  Под термином цифровая фильтрация обычно понимают локальную цифровую обработку сигнала скользящим окном или аппертурой. Для каждого положения окна за исключением возможно небольшого числа крайних точек выборки выполняются однотипные действия которые определяют так называемый отклик или выход фильтра. Если действия определяющие отклик фильтра не изменяются в процессе перемещения по выборке сигнала то соответствующий фильтр называется стационарным. Различают линейную и нелинейную цифровую фильтрацию.
38931. Развитие видеозаписи на дисках. Видеопроигрыватели Laser Vision. Структурная схема и принцип работы 265 KB
  Диаметр 30 см; Длительность 30 мин. Диаметр 30 см; Длительность 5 мин; 156 об мин. Диаметр 21 см; Длительность 10 мин цвет; 1500 об мин; 280 канавок мм; четкость 250 линий. Диаметр 30 см; длительность 30 мин; четкость 250 линий.
38932. Цифровая запись видеосигнала. Достоинства по сравнению с аналоговой. Основные принципы цифровой видеозаписи 60 KB
  Цифровая запись видеосигнала пришла на смену аналоговым носителям как более гибкое и удобное средство формирования транспортировки и хранения видеоданных. аналоговый сигнал сглаживается менее подверженным искажениям менее зависимым от аппаратной реализации воспроизведения расширяются возможности обработки сигнала Требования к АЦП: Частота квантования не менее 135 МГц Число разрядов не менее 8 Число каналов: Для чернобелого 1 Для цветного 3 или 2 Дискретизация: Дискретизация дает некоторые искажения: Стоит...
38933. Компрессия с потерей информации. Свойства зрения, используемые для сжатия ВС. Основные методы компрессии с потерей информации 46 KB
  Наибольшее распространение для сжатия движущихся изображений получил стандарт MPEG. MPEG англ. MPEG стандартизовала следующие стандарты сжатия: MPEG1: Исходный стандарт видео и аудио компрессии. MPEG2: видео и аудиостандарты для широковещательного телевидения.