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

     

     

     

     

     

         
     
    Оператори циклу. Завдання цілочисельний арифметики
         

     

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

    ОПЕРАТОРИ ЦИКЛУ. ЗАВДАННЯ Цілочисельне АРИФМЕТИКА

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

    Для організації циклу необхідно виконати наступні дії:

    перед початком циклу задати початкове значення параметра;

    всередині циклу змінювати параметр циклу за допомогою оператора присвоєння;

    перевіряти умова повторення або закінчення циклу;

    керувати циклом, тобто переходити до його початку, якщо він не закінчений, або виходити з циклу в іншому випадку.

    Розрізняють цикли з відомим числом повторень (цикл з параметром) і ітераційні (з перед-та постусловіем).

    У циклі з відомим числом повторень параметр змінюється в заданому діапазоні.

    Якщо в циклі змінюється проста змінна, то вона є параметром циклу; якщо в циклі змінюється змінна з індексом, то індекс цієї змінної є параметром циклу.

    Для організації циклу з відомим числом повторень в Pascal використовується оператор for.

    Структура циклу, організованого за допомогою цього оператора, має вигляд:

    For I: = A To B Do Begin <оператори> End;

    або

    For I: = A DownTo B Do Begin <оператори> End;

    Тут I -- параметр, що змінюється в циклі; A, B - вирази порядкового типу, що позначають початкове, кінцеве значення параметра циклу. Крок зміни номера параметра циклу дорівнює 1, якщо в заголовку циклу варто To (тобто реально таке значення параметра циклу обчислюється за допомогою функції succ); і -1 - при DownTo (обчислення проводиться за допомогою функції pred).

    Порядок виконання циклу з кроком 1 наступний: обчислюються значення початкового та кінцевого значень параметра циклу; параметр якщо I приймає початкову значення; I якщо менше або дорівнює кінцевому значенню, виконується тіло циклу; значення параметра циклу збільшується, тобто I: = succ (I); перевіряється умова I <= B (для негативного кроку умова I> = B) і при його виконанні цикл повторюється. Вихід з циклу здійснюється, якщо I> B (I B (або A

    Якщо в оператора циклу з параметром початкове або кінцеве значення параметра задані змінними або виразами, то значення цих змінних повинні бути визначені в програмі до оператора циклу. Не слід всередині циклу змінювати параметр циклу, його початкове і кінцеве значення за допомогою операторів присвоювання або введення.

    Завдання 1. Дано натуральне n, дійсне x. Обчислити

    Розробимо алгоритм вирішення задачі:

    1) ввести дані - кількість доданків n і число x;

    2) присвоїти змінної, в якій будемо зберігати ступеня sin x, значення 1; S: = 0;

    3) присвоїти параметру циклу значення 1;

    4) якщо значення параметра циклу менше n, перейти до наступного пункту, інакше до п. 9;

    5) обчислити чергову ступінь sin x;

    6) додати обчислена значення до суми;

    7) збільшити параметр циклу на 1;

    8) перейти до п.4;

    9) вивести на друк суму S;

    10) кінець.

    (Програма обчислення суми ступенів sin x)

    Program Summa;

    Var S, X, Pr: Real; N, I: Integer;

    Begin

    Write ( 'Введіть число доданків і x:'); ReadLn (N, X);

    Pr: = 1; (в цій змінній зберігаються послідовні ступеня sin x)

    S: = 0;

    For I: = 1 To N Do

    Begin

    Pr: = Pr * Sin (X); (Чергова ступінь Sin (x))

    S: = S + Pr

    End;

    WriteLn ( 'Сума дорівнює', S: 7: 4)

    End.

    Досить часто цикл з параметром використовується при розробці програм обробки масивів.

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

    У порівнянні з циклом з параметром ітераційні цикли є універсальними. Для організації ітераційних циклів використовуються оператори циклу з передумовою while і циклу з постусловіем repeat .. until.

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

    Відповідні структури циклів:

    while B Do Begin <оператори> End;

    Repeat <оператори> Until C;

    Тут B, C -- логічні вирази.

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

    Цикл з постусловіем виконується хоча б один раз. Потім перевіряється значення логічного виразу, якщо воно False, то оператори, що входять до циклу, виконуються, в іншому випадку здійснюється вихід з циклу.

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

    Завдання 2. Знайти найменший номер члена послідовності, для якого виконується умова | an-an-1 |

    Оскільки за ходу рішення задачі необхідно знати і an an-1, будемо запам'ятовувати їх відповідно в змінних ANew і AOld.

    Program Posled;

    Var Eps, AOld, ANew: Real; N: Integer;

    Begin

    Write ( 'Введіть число Epsilon'); ReadLn (Eps);

    AOld: = 0; ANew: = ArcTan (AOld) + 1;

    N: = 2;

    WriteLn (AOld: 8: 5); WriteLn (ANew: 8: 5);

    While Abs (ANew - AOld)> = Eps Do

    Begin

    AOld: = ANew;

    ANew: = ArcTan (AOld) + 1;

    WriteLn (ANew: 8: 5);

    N: = N + 1

    End;

    WriteLn ( 'Бажаємий номер', N)

    End.

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

    Завдання 3. На інтервалі [2; n] знайти натуральне число з максимальною сумою дільників.

    Пропонована завдання може бути віднесена до класу «завдання цілочисельний арифметики», де аргументи, результати і проміжні величини відносяться до цілого типу. Слід помітити, що в такого роду задачі досить часто використовуються операції DIV і MOD; найбільш типовою підзадачі є визначення кількості цифр у записі числа.

    Алгоритм рішення завдання:

    1) ввести число n;

    2) змінної для зберігання максимальної суми дільників привласнити

    значення 1 (це сума дільників числа 1);

    3) запам'ятати число з максимальною сумою дільників;

    4) параметру циклу I мати значення 2;

    5) якщо I більше n, перейти до п. 13, інакше - до наступного пункту;

    6) змінної для зберігання черговий суми дільників присвоїти значення 0;

    7) параметру циклу K присвоїти значення 1;

    8) якщо K більше I/2, перейти до п. 11, інакше - до наступного пункту;

    9) якщо I ділиться на K без залишку, додати K до поточної сумі дільників;

    10) збільшити K на 1 і перейти до п. 8;

    11) порівняти поточну суму дільників з максимальною, якщо максимальна менше,

    запам'ятати нове значення і число, відповідне цієї суми;

    12) збільшити I на 1 і перейти до п. 5;

    13) вивести число з максимальною сумою дільників і цю суму;

    14) кінець.

    Program Sum_Del;

    Var N, I, Sum_Max, Sum, K, Ch: Integer;

    Begin

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

    Sum_Max: = 1; (Максимальна сума дільників)

    Ch: = 1; (Число з максимальною сумою дільників)

    For I: = 2 To N Do (Це цикл за кількістю чисел)

    Begin

    Sum: = 0;

    For K: = 1 To I Div 2 + 1 Do (У цьому циклі знаходимо суму дільників)

    If I Mod K = 0 Then (Якщо I без остачі ділиться на K, то K -- дільник I)

    Sum: = Sum + K;

    Sum: = Sum + I;

    If Sum > Sum_Max Then Begin Sum_Max: = Sum; Ch: = I End;

    End;

    WriteLn ( 'Максимальну суму дільників', Sum_Max, 'має число', Ch)

    End.

    Завдання 4. Дано натуральне число n. Отримати всі прості дільники цього числа.

    (Програма відшукання простих дільників даного числа)

    Program Pr_Del;

    Var N, I, Vsp : Integer;

    Log_Per, Priznak: Boolean;

    Begin

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

    ReadLn (N);

    Priznak: = True; (Ознака того, не чи є введене число простим)

    (Поки параметр циклу не перевищив квадратного кореня з даного числа,

    продовжуємо пошук простих дільників)

    For I: = 2 To Round (Sqrt (N)) Do

    If N Mod I = 0 Then

    Begin

    Priznak: = False; (Введене число не є простим)

    Log_Per: = False; (Логічна змінна, що приймає значення True,

    якщо знайшлися подільники I, відмінні від 1 і I)

    Vsp: = 2;

    Repeat

    If (I Mod Vsp = 0) And (I <> Vsp) Then Log_Per: = True;

    Vsp: = Vsp + 1

    Until (Vsp> I Div 2 + 1) Or Log_Per;

    If Not (Log_Per) Then WriteLn (I) (Якщо число I просте, друкуємо його)

    End;

    If Priznak Then WriteLn (N)

    End.

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

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

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

     

     

     

     

     

     

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