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» - возвращение.

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

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


 

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

8930. Лекции по теории автоматов. Логические основы цифровых автоматов 620.5 KB
  Лекции по теории автоматов. Логические основы цифровых автоматов. Учебное пособие для студентов очной и заочной форм обучения специальностям в области вычислительной техники, информатики и управления..
8931. Нетрадиційні та поновлювані джерела енергії 644 KB
  Нетрадиційні та поновлювані джерела енергії Сучасна енергетика базується на викопному органічному паливі: камяному вугіллі, нафті та газі. Розвіданих і прогнозних запасів викопного палива при сучасних темпах енергоспоживання достатньо на 90-15...
8932. Біогазова технологія утилізації органічних відходів і виробництва енергії 581 KB
  Біогазова технологія утилізації органічних відходів і виробництва енергії Біогаз - енергоносій, який є сумішшю метану (60 - 70%), діоксиду вуглецю (30 - 40%), невеликої кількості сірководню, водню, аміаку та оксиду азоту(5%). Склад бі...
8933. Технология производства сырокопченых колбас 159.5 KB
  Технология производства сырокопченых колбас. Сырокопченые колбасы - изделия, приготовленные из мясного фарша, соли, пряностей, в оболочке подвергнутой созреванию 8 - 10 суток, холодному копчению при 18 - 250С и сушке до 1,5 мес...
8934. Сущность государства, основные характеристики 167.18 KB
  Сущность государства, основные характеристики. Введение Вопросы о государстве, его понятии, сущности и роли в обществе с давних пор относятся к числу основополагающих. Это объясняется по меньшей мере тремя причинами. Во-первых, названные...
8935. Судебная реформа 1860-70 х гг 295.72 KB
  Судебная реформа 1860-70х гг. Введение Судебная реформа XIX века, в России реформа судебной системы и судопроизводства. Вызванная развивавшимися в стране капиталистическими отношениями, судебная реформа отразила классо...
8936. Становление и развитие Республики Хакасия (1992-2001 годы) 154.5 KB
  Становление и развитие Республики Хакасия (1992-2001 годы) Введение Образование нового государства на карте после распада СССР, повлекло за собой процесс изменения и модернизации, как в политическом строе, так и обустройстве отдельных регионал...
8937. Проектирование предприятий общественного питания 272 KB
  Расчет длины и площади подвесного пути. Расчет площади складских помещений. Методика разработки производственной программы заготовочного цеха. Расчет и подбор мясорубки. Требования к размещению и планировке помещений для посетителей...
8938. Спецкурс по проектированию металлорежущих станков 851.5 KB
  Спецкурс по проектированию металлорежущих станков Содержание курса, методические указания, задания для выполнения контрольных и практических работ для студентов специальности 120100 Технология машиностроения. Оглавление Введение Содер...