- •Анотація
- •Розділ і .Правила гри «Бики та корови » та засоби їх реалізації в мові програмування Delphi .
- •1.1 Правила гри
- •1.2 Опис засобів реалізації гри Рядки
- •Цикли for ... To ... Do
- •Властивості Panel
- •Розділ іі .Дослідження складності стратегій гри для чисел з різною кількістю цифр.
- •2.1 Порівняння ігор «Бики та корови » і «Mastermind»
- •Розділ іі. Сутність та реалізація гри «Бики та корови»
- •3.2 Реалізація гри «Бики та корови»
- •Висновки
- •Використовувана література
Цикли 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 виконається тільки по закінченні циклу.