4705

Циклические структуры

Лекция

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

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

Русский

2012-11-24

2.34 MB

29 чел.

Циклические структуры

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

         циклы с параметром;

         итерационные циклы или циклы с условием.

Циклы с параметром используют тогда, когда количество повторов тела цикла заранее известно. В языке Pascal циклы с параметром реализуются с помощью оператора For.

Итерационные циклы используются тогда, когда число повторений заранее неизвестно, но задано условие окончания цикла. Причем, если условие окончания цикла проверяется перед выполнением тела цикла, то такие циклические структуры называют итерационными циклами с предусловием (“Выполнять пока”), а если проверка условия происходит после выполнения тела цикла – итерационными циклами с постусловием (“Выполнять до тех пор пока не”).

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

  1.  Число повторений заранее неизвестно (например, цикл до достижения требуемой точности результата).
  2.  Число повторений заранее известно, но шаг параметра цикла не равен 1 (или –1).

В языке Pascal итерационные циклы с предусловием реализуются с помощью оператора While, а итерационные циклы с постусловием - с помощью оператора RepeatUntil.

Оператор FOR 

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

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

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

Формат оператора:

for (параметр):=(начальное значение) to/ downto (конечное значение) do(оператор);

Значения параметра могут быть только порядкового типа, и шаг изменения параметра может быть только +1 (to) или -1 (downto). Цикл выполняется до тех пор, пока параметр цикла меньше или равен конечному значению.

Примеры:

  1.  Протабулировать функцию (найти значения функции) y=sin x на отрезке [a, b] с шагом h.

Программа, реализующая данный алгоритм имеет вид:

  1.  Вычислить сумму конечного ряда, т.е. сумму первых n членов последовательности   (k=1,2,3..,n).

Программа, реализующая данный алгоритм будет иметь вид:

Цикл с предусловием While

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

Формат оператора:

while (условие) do (оператор);

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

Пример. Подсчитать количество цифр в заданном целом числе.

Цикл с постусловием

Бывает такая ситуация, что надо получить результаты первой итерации цикла, а только потом проверять выполнение условия. В этом случае можно воспользоваться оператором repeatuntil.

Обеспечивается работа оператора repeat, пока не выполнится условие. Формат оператора:

repeat

(операторы)

until (условие);

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

Компонент Memo (многострочное окно редактирования). Используется для ввода, отображения и редактирования многострочных текстов. Относится к группе Standard.

Alignment

Задает режим выравнивания текста внутри Memo.

AutoSize

Задает необходимость изменения размера компонента при изменении размера шрифта.

BorderStyle

Задается стиль обрамления Memo.

Color

Задает цвет, которым изображается элемент Memo на экране.

Lines

Определяет текст, который будет выведен построчно в окне Memo при запуске программы. Текст задается в окне String List Editor 

MaxLength

Позволяет ограничивать число вводимых пользователем символов.

ScrollBars

Задает наличие полос прокрутки.

Text 

Используется, чтобы получить текст компонента Memo как одну строку. Значение этого свойства не отображается в окне Object Inspector, к нему можно обратиться только во время выполнения программы.

 Пример использования в программе

1.   Заполнение Memo с использованием свойства Text на примере табулирования функции.

2.      Тот же пример, но Memo заполняется с использованием свойства Lines. Метод Add, примененный к Lines позволяет добавить строку в Memo. Оператор memo1.Lines[0]:=’  x  |  y  ’; задает первую строку в Memo .

Работа с кнопкой

 Delphi предоставляет большой выбор кнопок (Button, BitBtn, SpeedButton, MainMenu), но работа со всеми эти компонентами имеет много общего: кнопки служат для ввода некоторой информации и перехода к дальнейшим действиям программы. У кнопок есть заголовок (свойство Caption) и метод «нажать на кнопку» -  onClick. BitBtn отличается от Button тем, что у первого имеется свойство Glyph, в которое можно загрузить картинку (конечный путь всегда одинаков: Program Files\Common Files\Borland Shared\Images\Buttons). Также у компонента BitBtn имеется свойство Kind, которое может принимать следующие значения, представленные на рисунке. При этом на кнопке появится соответствующая картинка. Если для кнопки установлено значение свойства Kind в bkClose, то при нажатии на данную кнопку будет закрываться текущее окно. Более подробное объяснение применению данного свойства будет рассмотрено ниже (работа с формой).

Значения свойства Kind

При выборе пользователем компонента мышью, ее курсор может принимать различные виды (песочные часы, рука и т.д.), если программист настроил свойство Cursor. Также можно настроить подсказку (высвечивается текст в прямоугольнике рядом с компонентом при наведении на него мышью). Для этого выбираем свойство Hint, в который печатаем необходимый текст, свойство ShowHint типа Boolean устанавливаем в значение True.

Значение свойства Cursor

Значение свойства Hint и ShowHint

Компонент Image (графический образ). Позволяет отображать рисунок, загруженный из графического файла. Относится к группе Additional.

Align

Задает режим выравнивания расположения объекта Image внутри формы.

Picture 

Задает имя файла графического файла с рисунком с помощью окна Picture Editor.

Streth 

Задает разрешение на автоматическое масштабирование рисунка относительно Image.

Рекуррентная формула

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

Как правило, в этом случае рекуррентная формула имеет вид:      , откуда, зная общий член последовательности, можно будет найти коэффициент С, на который нужно умножать каждый предыдущий член последовательности, чтобы найти следующий: 

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

Найдем коэффициент C, разделив (k+1)-ое слагаемое на k–ое:

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

Подпрограммы

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

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

Работа с любой подпрограммой включает в себя два этапа: описание подпрограммы и ее вызов.

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

Процедуры

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

Структура процедуры

Procedure <имя процедуры> (список формальных параметров);
 
<Раздел описаний программного кода процедуры>
 
Begin
  <Операторы тела процедуры>
 
End;

Список формальных параметров может включать:

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

-     параметры-переменные или выходные параметры, получающие свое конкретное значение в результате работы процедуры (определяют выходные данные процедуры). Перед перечислением параметров-переменных в списке формальных параметров должно стоять ключевое слово var.

-     Каждый параметр имеет имя и тип, указанный через «:». Параметры отделяются друг от друга «;»

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

Функции

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

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

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

Параметры и аргументы

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

  1.  Значение
  2.  Константа
  3.  Переменная
  4.  Нетипизированная константа и переменная

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

.

Рекурсия

Слово «рекурсия» происходит от латинского слова «recursio» - возвращение.

Если процедура (или функция) обращается сама к себе как к процедуре (или функции) непосредственно или через цепочку подпрограмм, то это называется рекурсией.

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


 

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

30537. Иерархия прав и обязанностей руководителей и исполнителей при построении системы информационной безопасности, их взаимодействие 16.49 KB
  Иерархия прав и обязанностей руководителей и исполнителей при построении системы информационной безопасности их взаимодействие. ОТВЕТ: В жизненном цикле системы информационной безопасности можно выделить следующие этапы: Инициация и разработка системы. После проведения аудита информационной системы проектировщик предоставляет его результаты и рекомендации по построению системы ИБ заказчику который в свою очередь формирует требования к будущей системе безопасности. На основании полученных материалов проектировщик предлагает варианты...
30538. Аудит системы информационной безопасности на объекте как основание для подготовки организационных и правовых мероприятий. Его критерии, формы и методы 55.85 KB
  Управление ключами: генерация ключей; накопление ключей; распределение ключей. Главное свойство симметричных ключей: для выполнения как прямого так и обратного криптографического преобразования шифрование расшифровывание вычисление MC проверка MC необходимо использовать один и тот же ключ либо же ключ для обратного преобразования легко вычисляется из ключа для прямого преобразования и наоборот. С одной стороны это обеспечивает более высокую конфиденциальность сообщений с другой стороны создаёт проблемы распространения ключей в...
30539. Система управления информационной безопасностью. Процессный подход к построению СУИБ и циклическая модель PDCA. Цели и задачи, решаемые СУИБ 1.75 MB
  Процессный подход к построению СУИБ и циклическая модель PDC. PDC PlnDoCheckct циклически повторяющийся процесс принятия решения используемый в управлении качеством. Система управления информационной безопасностью ГОСТ Р ИСО МЭК 270012006 определение Процессный подход к построению СУИБ и циклическая модель PDC Цикл PDC Методология PDC представляет собой простейший алгоритм действий руководителя по управлению процессом и достижению его целей. Применение В практической деятельности цикл PDC применяется многократно с различной...
30540. Стандартизация в области построения СУИБ: сходства и различия стандартов 26.41 KB
  Доска: Стандарты: Ornge Book Red Book ISO IEC 15408 ISO IEC 17799 Стандарт BSI Стандарт США NIST 80030 РД гостехкомиссии России и стандарт ГОСТ Р ИСО МЭК 15408 Выступление: Рассмотрим стандарты информационной безопасности: Здесь выделены такие аспекты политики безопасности как добровольное дискреционное и принудительное мандатное управление доступом безопасность повторного использования объектов. Определяются инструменты оценки безопасности ИС и порядок их использования. В отличии от Ornge Book не содержит...
30541. Единые критерии (ГОСТ Р ИСО 15408). Профиль защиты. Задание по безопасности 29.73 KB
  Задание по безопасности.Положение по разработке профилей защиты и заданий по безопасности Гостехкомиссия России 2003 год Выступление: Профиль защиты это нормативный документ предназначенный для изложения проблемы безопасности определенной совокупности продуктов и систем ИТ и формулирования требований безопасности для решении данной проблемы. ПЗ не регламентирует каким образом данные требования будут выполнены обеспечивая таким образом независимое от реализации описание требований безопасности. Профиль защиты разрабатывается для...
30542. Криптографические протоколы – основные виды и типы, область применения. Идентификация и аутентификация 43.95 KB
  Под протоколом понимается распределенный алгоритм с двумя и более участниками. Протокол является криптографическим если он решает по крайней мере одну из трех задач криптографии – обеспечение конфиденциальности целостности неотслеживаемости. Компонентами к протокола являются участники протокола каналы связи между участниками а также либо алгоритмы используемые участниками либо постановка той задачи которую протокол призван решать.
30543. Идентификация и аутентификация. Криптографические протоколы – основные виды и типы, область применения 19.83 KB
  Криптографические протоколы – основные виды и типы область применения. Ответ: Все эти типы можно условно разделить на две группы: прикладные протоколы и примитивные. Примитивные же протоколы используются как своеобразные строительные блоки при разработке прикладных протоколов. Мы в данном учебном пособии будем рассматривать только примитивные криптографические протоколы которые при некоторой адаптации к реальным системам связи могут использоваться на практике.