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

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

Содержание:

Введение

Актуальность исследования.

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

Циклы нужно знать всем тем, что желает связать свою жизнь с программированием. Так как, надо:

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

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

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

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

Целью курсовой работы является циклов.

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

  • Дать определения понятия цикл;
  • Описать и привести пример следующих циклов While, Repeat, For и Loop;
  • Определить вложенный цикл.

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

Работа состоит из введения, двух глав («Циклические структуры», «Вложенные циклы»), заключения и списка использованной литературы.

Глава 1. Циклические структуры

1.1. Основные понятия и определения

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

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

  • следование,
  • ветвление,
  • цикл.

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

В курсовом проекте опишем операторы циклов, их особенности и области их применения.

Цикл — наиболее распространенная конструкция алгоритмов, реализуемых в ПО[1].

Цикл - это последовательность операторов, которая может выполняться один или более раз.

По мнению автора, более точное определение понятия цикл дается на сайте ru.wikipedia.org:

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

Циклический алгоритм - это алгоритм, содержащий один или несколько циклов.

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

Чаще всего цикл имеет 2 части:

1) тело цикла

2) условие цикла

1) Тело цикла – это последовательность операций, которые используются при одном выполнении

2) Условие цикла – указывает, сколько раз или до каких пор действует цикл

В других источниках цикл состоит из четырех компонент:

  • Подготовка цикла,
  • Тело цикла,
  • Подготовка данных,
  • Проверка условия.

Выполнение любого цикла начинается с подготовки цикла. Последовательность выполнения тела цикла, подготовки данных, проверка условия зависит от структуры цикла[3].

Итерация – однократное исполнение тела цикла.

Существует две разновидности циклических алгоритмов: с предусловием и с постусловием.

Циклический алгоритм с предусловием существует в двух видах: с условием и со счетчиком.

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

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

  1. определить последовательность операций, которые выполняются при итерации, эта последовательность действий образует тело цикла
  2. Определить, как долго повторяются эти действия (условие цикла)
  3. Определить действия, которые нужно выполнить до начала цикла.

Различают четыре типа циклов: простые, вложенные, объединенные, неструктурированные.

На практике используются 4 циклические структуры

  1. While
  2. Repeat
  3. For
  4. Loop

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

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

1.2 Цикл While

Данная структура используется и со счётчиком и без него.

Для повторений используется переменная (переменная цикла). В теле цикла эта переменная увеличивается на 1. В условии цикла проверяется, достигла ли переменная определённого значения.

i:= 0;

While i<n do

-

-

-

i:= i+1;

end.

Структура While:

While <условие> do

{тело цикла}

End.

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

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

Блок - схема цикла с предусловием показана на рисунке 1.

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

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

Пример 1: Подсчитать сумму пяти чисел

Algoritm A1

Var i, n, s: integer;

Begin

i:= 0; n:= 5; s:= 0;

While i<n do

s:= s+n; i:= i+1;

End;

WriteInt (s);

End.

Схема программы представлена на рисунке ниже.

Рисунок 2. Блок-схема программы

Но, этот пример цикла нельзя отнести к циклам с пред- или постусловием.

Здесь условие окончания цикла находится в середине.

Хитрость примера состоит в том, чтобы выполнить оператор s:= s+до проверки условия окончания цикла и не нарушить правильности алгоритма. Ведь если поставить s:= s+ после ввода переменной, то введенное отрицательное число добавится к сумме, чего быть не должно.

А если поставить его перед вводом переменной, то что же тогда прибавится к сумме во время первого шага цикла? Ведь переменная еще не введена. Изначально присвоив переменной нулевое значение, решаем эту проблему.

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

Пример 2: Определить сумму из n натуральных чисел

1вариант:

Algoritm A2

Var n, s, i, x: integer;

Begin

WriteString (‘Введите число’);

ReadNat (n);

s:= 0; x:= 1; i:= 0;

While i<n do

s:= s+x;

i:= i+1;

x:= x+1;

End;

WriteNat (s);

Writeln;

End.

Эту же задачу, можно запрограммировать и другим способом, а именно:

2 вариант:

Algoritm A2

ReadNat (n);

s:= 0;

i:= 1;

While i<=n do

s:= s+1;

i:= i+1;

End;

WriteNat (s);

End.

Циклы с условием окончания

Для создания цикла с условием окончания, используется цикл While. Для этого до цикла вводится с клавиатуры значение, после проверяется, если условие цикла выполняется, если да, то обрабатывается введенное значение, затем вводятся следующие. Если условие не выполняется, то происходит выход с цикла. Общая схема циклов с условием окончания:

Var x: …

Begin

Read… (x)

While (x= <условие продолжения цикла>) do

<обработка х>

Read… (x)

end

Пример 3:

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

Algoritm A17

Var x, s: integer;

Begin

s:= 0;

ReadInt (x);

While x >0 do

s:= s+x;

ReadInt (x);

End;

WriteInt (x);

End.

При использовании цикла надо помнить следующее:

  • Начальное значение переменной цикла нужно присвоить до начала выполнения цикла.
  • Условие продолжения цикла должно зависеть от значения переменной цикла.
  • Переменная цикла должна изменяться при каждом новом выполнении цикла, иначе цикл будет повторяться бесконечное число раз[4].

1.3 Цикл Repeat

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

Структура Repeat:

Repeat

{ тело цикла}

Until <условие >

End.

Алгоритм цикла:

  1. выполняется тело цикла
  2. выполняется условие, если условие ложно, то цикл выполняется заново. Если условие истинно, то осуществляется выход из цикла.
  3. Тело цикла выполняется до тех пор, пока условие ложь. Т.к. условие проверяется в конце итерации, то тело цикла выполняется хотя бы один раз. С помощью этого цикла можно организовать и циклы с накоплением, и циклы с условием накопления и циклы с условием окончания.

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

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

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

Оператор цикла repeat аналогичен оператору while, но отличается от него, во-первых, тем, что условие проверяется после очередного выполнения тела цикла (за это и называется циклом с постусловием) и таким образом гарантируется хотя бы однократное выполнение цикла, а во-вторых, тем, что выполнение условия (равенство булевского выражения константе true) является критерием не повторения, а прекращения цикла.

Пример 4:

С клавиатуры вводится 5 целых чисел, вычислить сумму.

Var i, n, s: Natural;

Begin

s:= 0; i:= 0;

Repeat

ReadNat (n);

s:= s+n;

i:= i+1;

Until i=5

WriteNat (s);

End.

Можно заметить, что в цикле repeat логическое выражение стоит после тела цикла. Причем, в отличие от цикла while, здесь всё наоборот: в случае true происходит выход из цикла, в случае false – его повторение.

1. Операторы While Repeat используют в тех случаях, когда заранее неизвестно число повторений тела цикла или шаг отличен от 1.

2. При организации циклов с проверкой условия обязательно нужно указать:

начальное значение параметра цикла;

условие, при котором действия должны выполняться;

приращение параметра цикла[5].

Реализация While с помощью Repeat.

While <условие> do If < условие > then

1) {тело цикла} Repeat

End. {тело цикла}

Until not <условие > End.

2) Repeat {тело

{тело цикла} While not < условие >

Until <условие > {тело цикла}

End. End.

1.4 Цикл For

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

При составлении программ с использованием циклов с параметром необходимо помнить следующее:

  • Параметр цикла может быть только дискретного типа (т.е. целого или символьного).
  • За пределами цикла использовать значение параметра нельзя, т.к. оно не определено.
  • В теле цикла изменять параметр не рекомендуется.
  • Параметры циклов в процедурах и функциях должны быть локальными переменными[6].

Оператор For, используется только для цикла с пересчётом.

For <v>:= <e1> to <e2> step <шаг>

{Тело цикла}

End.

<v> переменная скалярного типа

<e1>, <e2> выражение того же скалярного типа.

  1. выполняется <e1> и присваивается <v>
  2. выполняется<e2>
  3. проверяется<v> <e2>
  4. если значение выражения истина, то выход из цикла
  5. выполняется тело цикла
  6. модифицируется значение переменной цикла v = v + <шаг>
  7. переход к 3.

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

Вариант 1 (с увеличением счетчика).

for Счетчик := НачальноеЗначение to КонечноеЗначение do
     begin
       { Инструкции }
     end;

Ключевые слова for, dо обозначают "для", "выполняй" соответственно. Строка, содержащая for ... do, называется заголовком цикла, оператор, стоящий после do образует его тело. Очень часто тело цикла — составной оператор. Если тело цикла представлено одиночным оператором, то begin и end не пишутся.

Вариант 2 (с уменьшением счетчика).

for Счетчик := НачальноеЗначение downto КонечноеЗначение do
     begin
       { Инструкции }
     end;

Инструкции между begin и end, выполняются столько раз, сколько определяет выражение [(НачальноеЗначение — КонечноеЗначение) + I].

Если НачальноеЗначение меньше, чем КонечноеЗначение, то инструкции между begin и end не выполняются ни разу.

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

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

Таким образом, общий вид структуры цикла For следующий:

For i:= 1 to 5 step 1

{Тело х}

end.

В теле цикла не должно быть команд, которые модифицируют значение i.

Блок - схема цикла с параметром показан на рисунках 4 и 5.

Рисунок 4. Блок-схема цикла с параметром.

Рисунок 5.Детальная схема цикла с параметром

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

Пример: С клавиатуры вводятся 5 чисел, найти их сумму

Var n, s, i: Natural;

Begin

s:= 0;

For i:= 1 to 5 step 1

ReadNat (n);

s:= s+n;

End.

Следует знать:

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

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

• переменная-счетчик должна быть порядкового типа: чаще — integer, реже — char, boolean или одного из пользовательских типов. Использование вещественного типа недопустимо;

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

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

• параметр цикла for может изменяться (увеличиваться или уменьшаться) каждый раз при выполнении тела цикла только на единицу. Если нужен другой шаг изменения параметра, предпочтительнее циклы repeat и while[7].

1.5 Цикл Loop

Конструкция Loop позволяет проверить условие в любом месте цикла.

Структура цикла

dhjLoop

{Тело х}

exit

end.

Работает следующим образом:

1) выполняется тело цикла

2) управление передаётся на пункт 1

Для выхода из цикла используется Exit

Блок-схема цикла с постусловием показана на рисунке ниже:

Рисунок 6. Схема цикла с постусловием

Пример: Найти сумму первых десяти чисел ряда Фиббоначи

Var

s, i, f, f1, f2: Natural;

Begin

f1:= 1; f2:= 1;

s:= 2;

For i:= 4 to 10 step 1

f:= f1+f2; s:= s+1; f1:= f2; f2:= f;

end; end.

Глава 2. Вложенные циклы

2.1 Вложенные циклы

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

Тело цикла, может содержать другой цикл, например:

For (While, Repeat)

For (While, repeat)

End

При использовании вложенных циклов следует соблюдать следующие правила:

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

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

На рисунке 7 представлена блок-схема алгоритма с внутренним циклом. В данном случае и внешний и внутренний циклы организованы на базе алгоритмической структуры «цикл с параметром».

Рисунок 7. Блок-схема алгоритма с внутренним циклом

Пример: Определить все трёхзначные числа, которые имеют только три делителя.

Var x, kol, i: Natural;

Begin

For x:= 100 to 999 step 1

kol: =0;

For i:= 1 to x step 1

If x mod i = 0 then kol:= kol+1; end; end;

If kol = 3 then WriteNat (x);

End;

End.

2.2 Рекомендации по выбору цикла

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

Следует и отметить два оператора, которые следует знать – это операторы break и continue.

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

Заключение

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

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

  • Циклы – это основной элемент в программировании, который нужно не только знать, но и уметь применять;
  • Различают несколько видов циклов – циклы с параметром, циклы с предусловием и циклы с посусловием;
  • Основное назначение циклов - это экономия памяти отводимой под программные инструкции при необходимости повторять одни и те же действия много раз.
  • Цикл с параметром используется переменная, называемая параметром цикла или счётчиком. Перед выполнением цикла параметру (счётчику) устанавливается начальное значение. После выполнения шага цикла значение параметра увеличивается на единицу. Цикл продолжается до тех пор пока параметр не достигнет своего конечного значения, которое указывается после to (downto).
  • Цикл с предусловием выполняется до тех пор, пока условие выполнения не станет ложным, и продолжается, если условие истинно.
  • Цикл с постусловием выполняется до тех пор, пока условие не станет истинно, если условие ложно, цикл продолжается.

Список использованных источников

  1. Орлов С. А. Программная инженерия. Учебник для вузов. 5-е издание обновленное и дополненное. Стандарт третьего поколения. — СПб.: Питер, 2016. — 640 с.
  2. Алгоритмические структуры [онлайн] - URL: https://sites.google.com/site/415ict/textbooks/pascal/alg-struct (дата обращения 11.11.2016)
  3. Оператор FOR [онлайн] - uRL: http://tat67183862.narod.ru/for.htm (дата обращения 14.11.2016)
  4. УРОК 10. ОПЕРАТОРЫ ЦИКЛА С УСЛОВИЕМ WHILE И REPEAT [онлайн] - URL:http://gospodaretsva.com/urok-10-cikly-s-usloviem.html (дата обращения 15.11.2016)
  5. Цикл (программирование) [онлайн]- URL: https://ru.wikipedia.org/wiki/%D0%A6%D0%B8%D0%BA%D0%BB_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5) (дата обращения 11.11.2016)
  6. Циклический алгоритм [онлайн] - URL: http://gimn1567.ru/metod/less_qb/172.htm (дата обращения 11.11.2016)
  1. Орлов С. А. Программная инженерия. Учебник для вузов. 5-е издание обновленное и дополненное. Стандарт третьего поколения. — СПб.: Питер, 2016. — 640 с.

  2. Цикл (программирование) [онлайн]- URL: https://ru.wikipedia.org/wiki/%D0%A6% D0%B8%D0%BA%D0%BB_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5) (дата обращения 11.11.2016)

  3. Циклический алгоритм [онлайн] - URL: http://gimn1567.ru/metod/less_qb/172.htm (дата обращения 11.11.2016)

  4. УРОК 10. ОПЕРАТОРЫ ЦИКЛА С УСЛОВИЕМ WHILE И REPEAT [онлайн] - URL:http://gospodaretsva.com/urok-10-cikly-s-usloviem.html (дата обращения 15.11.2016)

  5. УРОК 10. ОПЕРАТОРЫ ЦИКЛА С УСЛОВИЕМ WHILE И REPEAT [онлайн] - URL:http://gospodaretsva.com/urok-10-cikly-s-usloviem.html (дата обращения 15.11.2016)

  6. Алгоритмические структуры [онлайн] - URL: https://sites.google.com/site/415ict/textbooks/pascal/alg-struct (дата обращения 11.11.2016)

  7. Оператор FOR [онлайн] - uRL: http://tat67183862.narod.ru/for.htm (дата обращения 14.11.2016)