Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Dokument_Microsoft_Word_2.doc
Скачиваний:
19
Добавлен:
11.02.2016
Размер:
273.41 Кб
Скачать

Цикли for ... To ... Do

Це логіка розрахунку факторіала . Давайте перенесемо її на мову програмування Delphi . Цикл в Delphi оформляється таким чином:

for лічильник: = початкове_значення

to

кінцеве значення

do

дію ;

Після слова for потрібно присвоїти небудь змінної початкове значення . Ця змінна буде використовуватися в якості лічильника виконання циклу.

 

Після кожного виконання дії цей лічильник буде збільшуватися на одиницю , поки змінна не перевищить кінцевого значення . Як лічильника я звик використовувати змінну з ім'ям index або i , але деякі фахівці вва ¬ тануть , що і лічильникам потрібно давати більш виразні імена. На мій погляд , більш виразного імені далеко не завжди можна придумати. У загальному вигляді цикл виглядає так:

for ... to ... do дія

Розглянемо приклад.

 

var

index : Integer; sum : Integer; EndCount : Integer; begin Sum : = 0 ;

for index : = 0 to 5 do Sum : = Sum + index ; end ;

У цьому прикладі оголошуються дві змінні index і sum типу " ціле число". Спочатку змінної sum присвоюється значення 0 . Після цього запускається цикл , в якому змінна index буде змінюватися від 0 до 5 . Тепер подивимося поетапно , що тут відбувається.

1 . На першому етапі мінлива index дорівнює 0 . sum теж дорівнює нулю , одже, ви повниться операція sum : = o + o . Результат sum = о ;

2 . На другому етапі index збільшена на 1 , значить , виконається дія sum : = о +1 . Результат sum = 1 .

3 . Тут index збільшена на 1 і вже дорівнює 2 , a sum = 1 . Значить , виконається дейст віє Sum : = 1 +2 . Результат Sum = 3 .

4 . Тут index збільшена на 1 і вже дорівнює 3 , a sum = 3 . Значить , виконається дейст віє sum : = 3 +3 . Результат sum = б .

5 . Тут index збільшена на 1 і вже дорівнює 4 , a sum = 6 . Значить , виконається дейст віє Sum : = 4 + 6 . Результат Sum = 10 .

6 . Тут index збільшена на 1 і вже дорівнює 5 , a sum = 10 . Значить , виконається дей ствие Sum : = 5 +10 . Результат sum = 15.

Зауважте , що ми не збільшуємо значення змінної index , використовуючи для цього певні команди. Значення збільшується автоматично , тому що ця змінна оголошена лічильником в циклі for .

 

Давайте перенесемо розглянутий вище програмний код безпосередньо в програму , щоб ми могли переконатися в цьому на реальному прикладі. Помістимо на формі два компоненти TLabel , два компоненти TEdit і одну кнопку.

Компонент Edit1 перейменований в End Edit , a Edit2 перейменований в Resuit Edit . Тепер по натисканні кнопки ( обробник події onclick для кнопки , яка генерується , коли користувач натиснув на кнопці ) пишемо код , представлений в лістингу :

 

procedure TFontil . CalculateButtonCl ick ( Sender: TObj ect ) ; var

index : Integer;

sum : Integer;

EndCount : Integer; begin

Sum : = 0 ;

EndCount : = StrToInt ( EndEdit.Text ) ;

for index : = 0 to EndCount do

Sum : = Sum + index ;

ResuitEdit.Text : = IntToStr ( Sum ) ; end ;

В принципі , текст той же самий. Єдина різниця полягає в тому , що цикл запускається , починаючи від 0 до числа , введеного в компонент EndEdit . EndEdit містить текст , а нам потрібно перетворити його в число , тому ми використовуємо функцію strToint для перетворення рядка в число. Ця функція працює так само , як і intTostr , яка навпаки перетворювала число в рядок.

Результат перетворення зберігається у змінній EndCount :

EndCount : = StrToint ( EndEdit.Text ) ;

Після цього запускається цикл , в якому змінна index буде зміняться від 0 ДО значення EndCount ( в якому знаходиться ЧИСЛО , введене У EndEdit ) .

for index : = 0 to EndCount do

Запустіть програму і введіть у рядок Кінцеве значення число 5 . Після цього натисніть на кнопку , і в рядку результату має з'явитися число 15 .

Тут необхідно ще відзначити те , що після циклу for виконуватиметься тільки одну дію . Наприклад , якщо ви захочете виконати дві дії поспіль , то ви повинні укласти їх в дужки begin і end , як це показано в наступному прикладі.

for index : = 0 to EndCount do begin Sum : = Sum + Index ;

Sum : = Sum +1 ; end ;

Тут на кожному кроці циклу sum збільшується ще на одиницю. Якщо ви по ¬ пробуєте написати так :

for index : = 0 to EndCount do Sum : = Sum + Index ; Sum : = Sum +1 ;

то виконуватися в циклі буде тільки рядок sum : = sum + index . Другий рядок Sum : = sum + i виконається тільки по закінченні циклу.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]