ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Оператори циклу
         

     

    Інформатика, програмування

    Оператори циклу

    С.А. Григор'єв

    Для реалізації циклічних алгоритмів, тобто алгоритмів, що містять багато разів повторюються однакові операції, застосовуються спеціальні оператори циклу. У Паскалі є три види циклів: FOR, WHILE і REPEAT. Оператор циклу FOR записується у вигляді:

    FOR мінлива: = початкове значення TO кінцеве значення DO

    оператор/блок

    або

    FOR мінлива: = початкове значення DOWNTO кінцеве значення DO

    оператор/блок.

    Тут змінна - будь-яка мінлива порядкового типу, звана в такому контексті змінної циклу, початкове значення і кінцеве значення - вираження того самого типу (виняток, як завжди робиться для різнотипних цілочисельних змінних). Цикл FOR виконується таким чином: змінної циклу присвоюється початкове значення, після чого виконується тіло циклу (оператор або блок, що стоїть після DO). Два цих дії разом складають один крок циклу. Потім змінної циклу присвоюється наступне (в циклі FOR ... TO) або попереднє (в циклі FOR ... DOWNTO) значення (згадаймо функції Succ і Pred) і виконується наступний крок циклу. Так відбувається до тих пір, поки значення змінної циклу не стане більше (FOR. .. TO) або менше (FOR. .. DOWNTO) кінцевого значення. Цикл FOR може не виконатися жодного разу, якщо початкове значення більше кінцевого в циклі FOR ... TO або менше кінцевого в циклі FOR ... DOWNTO. Запишемо два приклади використання циклу FOR: обчислимо суму квадратів натуральних чисел від 1 до N.

    VAR i: Word;

    CONST s: Real = 0; N = 22;

    BEGIN FOR i: = 1 TO N DO s: = s + SQR (i); WRITELN ( 'сума =', s); END.

    і виведемо на екран символи з номерами від 32 до 255

    VAR c: Char;

    BEGIN FOR c: = '' TO # 255 DO WRITE (c); WRITELN; END.

    Другий тип циклу - цикл WHILE - записується у вигляді:

    WHILE логічне вираження DO оператор/блок

    Тут логічне вираження - будь-який вираз типу Boolean. Цикл виконується таким чином: обчислюється логічне вираження і, якщо воно істинно, виконується тіло циклу, в іншому випадку цикл закінчується. Очевидно, що цикл WHILE може як не виконатися жодного разу, так і виконуватися нескінченну кількість разів (в останньому випадку говорять, що програма зациклилася). Запишемо дві попередні завдання, використовуючи цикл WHILE:

    CONST i: Word = 1; s: Real = 0; N = 22;

    BEGIN WHILE i <= N DO BEGIN s: = s + SQR (i); INC (i); END;

    WRITELN ( 'сума =', s);

    END.

    VAR c: Char;

    BEGIN c: = Pred ( '');

    WHILE c <# 255 DO BEGIN c: = Succ (c); WRITE (c); END;

    WRITELN;

    END.

    В якості вправи, подумайте, чому програма

    VAR c: Char;

    BEGIN c: = '';

    WHILE c <= # 255 DO BEGIN WRITE (c); c: = Succ (c); END;

    WRITELN;

    END.

    виявляється зацикленої.

    Третій тип циклу - REPEAT - записується у вигляді:

    REPEAT оператори UNTIL логічне вираження;

    Якщо тіло циклу REPEAT містить більше одного оператора, немає необхідності використовувати блок, оскільки самі ключові слова REPEAT UNTIL і є в даному випадку логічними дужками. Перед UNTIL можна не ставити ";". Цикл REPEAT виконується так: спочатку виконується тіло циклу, потім обчислюється логічне вираження, і якщо воно істинно, цикл закінчується. Таким чином, цикл REPEAT завжди виконується хоча б один раз і так само, як і WHILE, схильний до зациклення. Запишемо наші приклади циклом REPEAT:

    CONST i: Word = 1; Real = 0; N = 22;

    BEGIN REPEAT s: = s + SQR (i); INC (i) UNTIL i> N;

    WRITELN ( 'сума =', s);

    END.

    VAR c: Char;

    BEGIN c: = Pred ( '');

    REPEAT c: = Succ (c); WRITE (c) UNTIL c = # 255;

    WRITELN;

    END.

    З наведених прикладів очевидно, що будь-який циклічний алгоритм можна записати будь-яким видом циклу, всі вони взаємозамінні і вибираються програмістом відповідно до його смаків, однак можна порекомендувати в тих випадках, коли кількість кроків циклу відомо заздалегідь, використовувати цикл FOR.

    В останній версії мови Паскаль з'явилися процедури BREAK і CONTINUE, аналогічні операторам break і continue мови С. Процедура BREAK призводить до негайного закінчення циклу, в якому вона викликана. Виклик процедури CONTINUE призводить до негайного переходу до наступного кроку циклу. Запишемо наші приклади, використовуючи BREAK:

    CONST i: Word = 1; s: Real = 0; N = 22;

    BEGIN WHILE TRUE DO BEGIN

    s: = s + SQR (i); INC (i); IF i> N THEN BREAK; END;

    WRITELN ( 'сума =', s);

    END.

    VAR c: Char;

    BEGIN c: = Pred ( '');

    REPEAT c: = Succ (c); WRITE (c); IF c = # 255 THEN BREAK UNTIL FALSE;

    WRITELN;

    END.

    Щоб привести осмислений приклад використання процедури CONTINUE, змінимо умову другого завдання наступним чином: вивести на екран всі символи з 32-го по 255-й, що не є російськими літерами.

    VAR c: Char;

    BEGIN FOR c: = '' TO # 255 DO BEGIN

    IF (c> = 'А') AND (c <= 'Я') OR (c> = 'а') AND (c <= 'п') OR

    (c> = 'р') AND (c <= 'я') THEN CONTINUE;

    WRITE (c);

    END;

    WRITELN;

    END.

    Втім, останню задачу, очевидно, можна вирішити простіше:

    VAR c: Char;

    BEGIN FOR c: = '' TO # 255 DO BEGIN

    IF NOT ((c> = 'А') AND (c <= 'Я') OR (c> = 'а') AND (c <= 'п') OR

    (c> = 'р') AND (c <= 'я')) THEN WRITE (c);

    WRITELN;

    END.

    Список літератури

    Для підготовки даної роботи були використані матеріали з сайту http://elib.albertina.ru/

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status