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

     

     

     

     

     

         
     
    Умовний оператор
         

     

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

    УМОВНИХ ОПЕРАТОР

    ПОВНА І Неповний розвилки. ОПЕРАТОР ВИБОРУ

    На практиці вирішення більшості задач не вдається описати за допомогою програм лінійної структури. При цьому після перевірки деякого умови виконується та чи інша послідовність операторів, однак відбувається порушення природного порядку виконання операторів. Для цих цілей використовують управляючі оператори. Умовний оператор використовується для реалізації розгалужень у програмі, які відбуваються при виконанні деякого умови і має наступну структуру

    IF <логічне вираження> THEN серія1 ELSE серія2;

    Якщо логічне вираз, яка виступає в якості умови, приймає значення False, то виконуються оператори, розташовані після else (серія2), якщо True, -- оператори, що слідують за then. Під час запису логічного виразу слід уникати знаку = (так само) для дійсних змінних, так як вони представляються неточно, а тому може не відбутися збігів значень виразів, що стоять ліворуч і праворуч від знака одно. Для усунення зазначеного недоліку слід вимагати виконання умови з заданою точністю, тобто замість відносини X = Y рекомендується, наприклад,

    Abs (X - Y) <1E-8.

    Оскільки розвилка може бути неповною, то можлива і неповна форма запису умовного оператора:

    IF <логічне вираження> THEN серія;

    Умовний оператор реалізує розгалуження обчислювального процесу у двох напрямах, одне з яких здійснюється при виконанні умови, інше-в іншому випадку. Для реалізації розгалужень більш ніж по двох напрямах необхідно використовувати декілька умовних операторів. Розглянемо приклади.

    Завдання 1. Дано дійсні числа x, y. Якщо x і y негативні, то кожне значення замінити модулем; якщо негативно тільки одне з них, то обидва значення збільшити на 0,5; якщо обидва значення невід'ємні і жодна з них не належить відрізку [0,5; 2,0], то обидва значення зменшити в 10 разів; в решті випадках x та y залишити без зміни.

    Розробимо алгоритм вирішення задачі, після чого напишемо програму.

    Алгоритм запишемо словесно:

    1) ввести значення x, y;

    2) якщо x <0 і y <0, знайти їх модулі і перейти до п. 5, інакше перейти до наступного пункту;

    3) якщо x <0 або y <0, збільшити кожну величину на 0,5 і перейти до п. 5,

    інакше перейти до наступного пункту;

    4) якщо ні x, ні y не належать відрізку [0,5; 2,0], зменшити їх у 10 разів;

    5) вивести значення x і y;

    6) кінець.

    Program Usl;

    Var X, Y: Real;

    Begin

    Write ( 'Введіть два дійсних числа'); ReadLn (X, Y);

    If (X <0) AND (Y <0) THEN

    Begin

    X = ABS (X);

    Y = ABS (Y)

    End

    ELSE

    IF (X <0) OR (Y <0) THEN

    Begin

    X = X + 0.5;

    Y = Y + 0.5

    End

    ELSE

    IF NOT (((X> = 0.5) AND (X <= 2))

    OR ((Y> = 0.5) AND (Y <= 2 )))

    THEN

    Begin

    X = X/10;

    Y = Y/10

    End;

    WriteLn ( 'Результат:'); WriteLn ( 'X = ', X: 10:6); WriteLn (' Y = ', Y: 10:6)

    END.

    Завдання 2. Дано дійсне число a. Обчислити f (a), якщо

    Program Usl1;

    Var A, F: Real;

    Begin

    WriteLn ( 'Введіть дійсне число: '); ReadLn (A);

    IF A <= 0 THEN

    F = 0

    ELSE

    IF A <= 1 THEN

    F = Sqr (A) - A

    ELSE

    F = Sqr (A) - SIN (Pi * Sqr (A ));

    WriteLn ( 'Значення функції F (x) при x = ', A: 10:6,' дорівнює ', F: 10:6);

    END.

    Крім умовного оператора як керуючої структури досить часто використовується оператор вибору CASE. Ця структура дозволяє переходити на одну з гілок залежно від значення заданого виразу (селектора вибору). Її особливість полягає в те, що вибір рішення тут здійснюється не в залежності від істинності або хибності умови, а є вичіслімим. Оператор вибору дозволяє замінити кілька операторів розвилки (в силу цього його ще називають оператором множинного розгалуження).

    У конструкції CASE обчислюється вираз K і вибирається гілку, значення якої мітки таке саме, як K. Після виконання вибраної гілки відбувається вихід з конструкції CASE. Якщо у послідовності немає мітки зі значенням, рівним K, то управління передається зовнішньому оператору, наступному за конструкцією CASE (в разі відсутності альтернативи ELSE; якщо вона є, то виконується наступний за ній оператор, а вже потім управління передається зовнішньому оператору).

    Запис оператора вибору

    CASE K OF

    A1: серія 1;

    A2: серія 2;

    ...

    AN: серія N

    ELSE серія N + 1

    END;

    Будь-яка з зазначених серій операторів може складатися як з єдиного оператора, так і декількох (в цьому випадку, як звичайно, оператори, що відносяться до однієї мітці, повинні бути укладені в операторні дужки begin .. end).

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

    Завдання 1. У старояпонском календарі був прийнятий дванадцятирічний цикл. Роки всередині циклу носили назви тварин: пацюка, корови, тигра, зайця, дракона, змії, коні, вівці, мавпи, півня, собаки і свині. Написати програму, яка дозволяє ввести номер року і друкує його назва по старояпонскому календарем. Довідка: 1996р .- рік щура-початок чергового циклу.

    Оскільки цикл є дванадцятирічним, поставимо назва року у відповідність залишку від ділення номера цього року на 12.

    Program Goroskop;

    Var Year: Integer;

    Begin

    Write ( 'Введіть рік'); ReadLn (Year);

    CASE Year MOD 12 OF

    0: WriteLn ( 'Рік Мавпи');

    1: WriteLn ( 'Рік Півня');

    2: WriteLn ( 'Рік Собаки');

    3: WriteLn ( 'Рік Свині');

    4: WriteLn ( 'Рік Щура');

    5: WriteLn ( 'Рік Корови');

    6: WriteLn ( 'Рік Тигра');

    7: WriteLn ( 'Рік Зайця');

    8: WriteLn ( 'Рік Дракона');

    9: WriteLn ( 'Рік Змії');

    10: WriteLn ( 'Рік Коні');

    11: WriteLn ( 'Рік Вівці')

    END;

    END.

    Завдання 2. Знайти найбільше з двох дійсних чисел, використовуючи оператор вибору.

    Program Maximum;

    Var Max, X, Y: Real;

    Begin

    Write ( 'Введіть два нерівних числа :');

    ReadLn (X, Y);

    Case X> Y Of

    TRUE: Max: = X;

    FALSE: Max : = Y

    End;

    WriteLn ( 'Максимальне з двох є', Max : 12: 6)

    End.

    Завдання 3. Перетворити символ, якщо він є рядкової російської буквою, до заголовної літеру.

    Так як в альтернативній системі кодування ASCII рядкові російські букви йдуть не підряд, а з деяким розривом, то в даному випадку, залежно від того, в яку частину таблиці потрапляє введена літера, використовується та чи інша формула. Якщо введений символ не є рядкової російської буквою, він виводиться без зміни.

    Program UpCase;

    Var C: Char;

    Begin

    Write ( 'Введіть символ :');

    ReadLn (C);

    Case C Of

    'а' .. 'п': C: = Chr (Ord (C) - 32);

    'р' .. 'я': C: = Chr (Ord (C) - 80)

    End;

    WriteLn (C);

    End.

    Як видно з прикладу, як мітки може виступати не тільки окреме значення, але й діапазон значень. Крім того, в якості мітки може виступати перелік значень виразу (значення перераховуються через кому).

    Контрольні питання і завдання

    Коли виникає необхідність в організації розвилки?

    Яка розвилка називається повною? неповної?

    Вираз якого типу може виступати як умови при організації розвилки? Які значення приймають такі вирази?

    Чи можуть у повної розвилці не виконається оператори ні по одній з гілок? виконатися по обом гілкам?

    Записати приклади 1-3 по темі "Оператор вибору" за допомогою умовного оператора. Скільки розвилок знадобилося в кожному з випадків?

    У якому випадку доцільно використовувати оператор вибору?

    Якого типу може бути вираз, що є селектором вибору? Наведіть приклади.

    Використовуючи оператор вибору вирішити завдання: "Визначити знак заданого цілого числа ".

    Наведіть приклад оператора вибору, де вираз-селектор вибору має перечіслімий тип.

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

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

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

     

     

     

     

     

     

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