Главная страница
Навигация по странице:

  • 4.1. Операторы организации циклов

  • 4.2. Цикл с предусловием

  • 4.3. Цикл с постусловием

  • 4.4. Цикл с параметром

  • 4.5. Средства отладки программ

  • 4.6. Порядок выполнения задания

  • Индивидуальные задания

  • пр 11. 08.11.2021 Практическая работа №11. Лабораторная работа циклические алгоритмы


    Скачать 355.35 Kb.
    НазваниеЛабораторная работа циклические алгоритмы
    Анкорпр 11
    Дата09.11.2021
    Размер355.35 Kb.
    Формат файлаpdf
    Имя файла08.11.2021 Практическая работа №11.pdf
    ТипЛабораторная работа
    #267798

    39
    ЛАБОРАТОРНАЯ РАБОТА № 4.
    ЦИКЛИЧЕСКИЕ АЛГОРИТМЫ
    Цель лабораторной работы:
    изучить простейшие средства отлад- ки программ в среде Visual Studio. Составить и отладить программу циклического алгоритма.
    4.1. Операторы организации циклов
    Под циклом понимается многократное выполнение одних и тех же операторов при различных значениях промежуточных данных. Число повторений может быть задано в явной или неявной форме.
    К операторам цикла относятся: цикл с предусловием while
    , цикл
    с постусловием do while
    , цикл с параметром for и цикл перебора foreach
    . Рассмотрим некоторые из них.
    4.2. Цикл с предусловием
    Оператор цикла while организует выполнение одного оператора (про- стого или составного) неизвестное заранее число раз. Формат цикла while
    : while
    (B) S; где
    B
    – выражение, истинность которого проверяется (условие заверше- ния цикла);
    S
    – тело цикла – оператор (простой или составной).
    Перед каждым выполнением тела цикла анализируется значение выражения
    В
    : если оно истинно, то выполняется тело цикла, и управле- ние передается на повторную проверку условия
    В
    ; если значение
    В
    лож- но – цикл завершается и управление передается на оператор, следую- щий за оператором
    S
    Если результат выражения
    B
    окажется ложным при первой провер- ке, то тело цикла не выполнится ни разу. Отметим, что если условие
    B
    во время работы цикла не будет изменяться, то возможна ситуация за- цикливания, то есть невозможность выхода из цикла. Поэтому внутри тела должны находиться операторы, приводящие к изменению значения выражения
    B
    так, чтобы цикл мог корректно завершиться.
    В качестве иллюстрации выполнения цикла while рассмотрим про- грамму вывода целых чисел от 1 до n по нажатию кнопки на форме: private void button1_Click(
    object sender,
    EventArgs e)
    {

    40 int n = 10;
    // Количество повторений цикла int i = 1;
    // Начальное значение while
    (i <= n)
    // Пока i меньше или равно n
    {
    MessageBox
    .Show(i.ToString());
    // Показываем i i++;
    // Увеличиваем i на 1
    }
    }
    4.3. Цикл с постусловием
    Оператор цикла do while также организует выполнение одного оператора (простого или составного) неизвестное заранее число раз.
    Однако в отличие от цикла while условие завершения цикла проверяет- ся после выполнения тела цикла. Формат цикла do while
    : do
    S while
    (B); где
    В
    – выражение, истинность которого проверяется (условие заверше- ния цикла);
    S
    – тело цикла – оператор (простой или блок).
    Сначала выполняется оператор
    S
    , а затем анализируется значение вы- ражения
    В
    : если оно истинно, то управление передается оператору
    S
    , если ложно – цикл завершается, и управление передается на оператор, следую- щий за условием
    B
    . Так как условие
    В
    проверяется после выполнения тела цикла, то в любом случае тело цикла выполнится хотя бы один раз.
    В операторе do while
    , так же как и в операторе while
    , возможна ситуация зацикливания в случае, если условие
    В
    всегда будет оставаться истинным.
    4.4. Цикл с параметром
    Цикл с параметром имеет следующую структуру: for
    (<инициализация>; <выражение>; <модификация>)
    <оператор>;
    Инициализация используется для объявления и/или присвоения на- чальных значений величинам, используемым в цикле в качестве пара- метров (счетчиков). В этой части можно записать несколько операторов, разделенных запятой. Областью действия переменных, объявленных в части инициализации цикла, является цикл и вложенные блоки. Ини- циализация выполняется один раз в начале исполнения цикла.
    Выражение определяет условие выполнения цикла: если его ре- зультат истинен, цикл выполняется. Истинность выражения проверяется перед каждым выполнением тела цикла, таким образом, цикл с пара-

    41 метром реализован как цикл с предусловием. В блоке выражение через запятую можно записать несколько логических выражений, тогда запя- тая равносильна операции логическое И (&&).
    Модификация выполняется после каждой итерации цикла и служит обычно для изменения параметров цикла. В части модификация можно записать несколько операторов через запятую.
    Оператор (простой или составной) представляет собой тело цикла.
    Любая из частей оператора for
    (инициализация, выражение, моди- фикация, оператор) может отсутствовать, но точку с запятой, опреде- ляющую позицию пропускаемой части, надо оставить.
    Пример формирования строки, состоящей из чисел от 0 до 9, разде- ленных пробелами: string s =
    ""
    ;
    // Инициализация строки for
    (
    int i = 0; i <= 9; i++)
    // Перечисление всех чисел s += i.ToString() +
    " "
    ;
    // Добавляем число и пробел
    MessageBox
    .Show(s.ToString());
    // Показываем результат
    Данный пример работает следующим образом. Сначала вычисляет- ся начальное значение переменной i
    . Затем, пока значение i
    меньше или равно 9, выполняется тело цикла, и затем повторно вычисляется значение i
    . Когда значение i
    становится больше 9, условие – ложно и управление передается за пределы цикла.
    4.5. Средства отладки программ
    Практически в каждой вновь написанной программе после запуска обнаруживаются ошибки.
    Ошибки первого уровня (ошибки компиляции) связаны с непра- вильной записью операторов (орфографические, синтаксические). При обнаружении ошибок компилятор формирует список, который отобра- жается по завершению компиляции (рис. 4.1). При этом возможен толь- ко запуск программы, которая была успешно скомпилирована для пре- дыдущей версии программы.
    Рис. 4.1. Окно со списком ошибок компиляции

    42
    При выявлении ошибок компиляции в нижней части экрана появляет- ся текстовое окно (см. рис. 4.1), содержащее сведения обо всех ошибках, найденных в проекте. Каждая строка этого окна содержит имя файла, в ко- тором найдена ошибка, номер строки с ошибкой и характер ошибки. Для быстрого перехода к интересующей ошибке необходимо дважды щелкнуть на строке с ее описанием. Следует обратить внимание на то, что одна ошибка может повлечь за собой другие, которые исчезнут при ее исправле- нии. Поэтому необходимо исправлять их последовательно, сверху вниз и, после исправления каждой – компилировать программу снова.
    Ошибки второго уровня (ошибки выполнения) связаны с ошибками выбранного алгоритма решения или с неправильной программной реа- лизацией алгоритма. Эти ошибки проявляются в том, что результат рас- чета оказывается неверным либо происходит переполнение, деление на ноль и др. Поэтому перед использованием отлаженной программы ее надо протестировать, т. е. сделать просчеты при таких комбинациях ис- ходных данных, для которых заранее известен результат. Если тестовые расчеты указывают на ошибку, то для ее поиска следует использовать встроенные средства отладки среды программирования.
    В простейшем случае для локализации места ошибки рекомендуется поступать следующим образом. В окне редактирования текста устано- вить точку останова перед подозрительным участком, которая позволит остановить выполнение программы и далее более детально следить за ходом работы операторов и изменением значений переменных. Для этого достаточно в окне редактирования кода щелкнуть слева от нужной стро- ки. В результате чего данная строка будет выделена красным (рис. 4.2).
    Рис. 4.2. Фрагмент кода с точкой останова
    При выполнении программы и достижения установленной точки программа будет остановлена, и далее можно выполнять код по шагам с помощью команд Отладка → Шаг с обходом (без захода в методы) или Отладка → Шаг с заходом (с заходом в методы) (рис. 4.3).

    43
    Рис. 4.3. Отладка программы
    Желтым цветом выделяется оператор, который будет выполнен.
    Значение переменных во время выполнения можно увидеть, наведя на них курсор. Для прекращения отладки и остановки программы нужно выполнить команду меню Отладка → Остановить отладку.
    Для поиска алгоритмических ошибок можно контролировать значе- ния промежуточных переменных на каждом шаге выполнения подозри- тельного кода и сравнивать их с результатами, полученными вручную.
    4.6. Порядок выполнения задания
    З а д а н и е : Вычислить и вывести на экран таблицу значений функ- ции y
    =
    a·ln(x) при x, изменяющемся от x
    0
    до x
    k
    с шагом dx, a – константа.
    Панель диалога представлена на рис. 4.4. Текст обработчика нажа- тия кнопки Вычислить приведен ниже. private void button1_Click(
    object sender,
    EventArgs e)
    {
    // Считывание начальных данных double x0 =
    Convert
    .ToDouble(textBox1.Text); double xk =
    Convert
    .ToDouble(textBox2.Text); double dx =
    Convert
    .ToDouble(textBox3.Text); double a =
    Convert
    .ToDouble(textBox4.Text); textBox5.Text =
    "Работу выполнил ст. Иванов М.А."
    +
    Environment
    .NewLine;
    // Цикл для табулирования функции double x = x0; while
    (x <= (xk + dx / 2))
    { double y = a *
    Math
    .Log(x); textBox5.Text +=
    "x="
    +
    Convert
    .ToString(x) +
    "; y="
    +
    Convert
    .ToString(y) +
    Environment
    .NewLine; x = x + dx;
    }
    }

    44
    После отладки программы следует проверить правильность работы программы с помощью контрольного примера (см. рис. 4.4). Установите точку останова на оператор перед циклом и запустите программу. После попадания на точку остановки, выполните пошагово программу и про- следите, как меняются все переменные в процессе выполнения.
    Рис. 4.4. Окно программы для табулирования функции
    Индивидуальные задания
    Составьте программу табулирования функции y(x), выведите на экран значения x и y(x). Нужный вариант задания выберите из нижеприведенного списка по указанию преподавателя. Откоррек- тируйте элементы управления в форме в соответствии со своим ва- риантом задания.
    -2 3
    0 1) y 10
    /
    cos
    ,
    1.5;
    3.5;
    0.5;
    1.25;
    1.5;
    0.75;
    k
    bc x
    a x
    x
    x
    dx
    a
    b
    c


     


     
     

    2 3
    0 2) y 1.2(a-b)
    ,
    0.75;
    1.5;
    0.05;
    1.5;
    1.2;
    x
    k
    e
    x
    x
    x
    dx
    a
    b


     
     
     



    45
    ;
    25 1
    b
    ;
    2 10
    a
    ;
    05 0
    dx
    ;
    5 2
    x
    ;
    5 0
    x
    ),
    bx a
    (
    tg ax
    10
    y
    3)
    k
    0 3
    -1








    ;
    25 6
    b
    ;
    35 1
    a
    ;
    25 0
    dx
    ;
    3 10
    x
    ;
    3 5
    x
    ),
    b x
    (
    cos ax y
    4)
    k
    0 3
    2 3









    ;
    3 1
    d
    ;
    2 0
    dx
    ;
    8 5
    x
    ;
    6 4
    x
    ),
    d x
    2
    cos(
    x y
    5)
    k
    0 3
    4








    ;
    8 0
    b
    ;
    5 0
    dx
    ;
    5 2
    x
    ;
    5 1
    x
    ),
    x
    /
    b x
    5
    (
    tg x
    y
    6)
    k
    0 2











    ;
    5 2
    b
    ;
    2 0
    dx
    ;
    1
    x
    ;
    4 2
    x
    ),
    b x
    15 9(x y
    7)
    k
    0 3
    3








    4 0
    8) y 9x sin(57.2
    ),
    0.75;
    2.05;
    0.2;
    k
    x
    x
    x
    dx



     
     
     
    ;
    3 2
    b
    ;
    5 0
    dx
    ;
    4
    x
    ;
    1
    x
    ,
    e x
    0.0025bx y
    9)
    k
    0 82 0
    3








    ;
    4 3
    b
    ;
    2 0
    dx
    ;
    05 3
    x
    ;
    05 2
    x
    ),
    0.0084
    - b
    x sin(
    x y
    10)
    k
    0










    ;
    1 0
    a
    ;
    2 0
    dx
    ;
    2 6
    x
    ;
    4
    x
    ,
    be a
    x x
    y
    11)
    k
    0
    x
    3











    ;
    2 3
    b
    ;
    2 0
    dx
    ;
    2 2
    x
    ;
    1
    x
    ,
    tgx
    )
    b
    9(x y
    12)
    k
    0 3
    3






    ;
    2
    b
    ;
    1 0
    dx
    ;
    73 1
    x
    ;
    73 0
    x
    ,
    b x
    ln x
    b
    /
    b x
    y
    13)
    k
    0 2
    /
    3 3
    3 2
    /
    1













    ;
    8 0
    b
    ;
    3 0
    dx
    ;
    2 5
    x
    ;
    25 0
    x
    ),
    7 12
    x ln(
    )
    b
    (x y
    14)
    k
    0 2
    5/2







    ;
    4 35
    b
    ;
    25 0
    dx
    ;
    5 2
    x
    ;
    75 1
    x
    ,
    b x
    ln x
    10
    y
    15)
    k
    0 2
    /
    5 3










    ;
    6 12
    b
    ;
    3 0
    dx
    ;
    4 2
    x
    ;
    23 1
    x
    ),
    b x
    cos(ln x
    15.28
    y
    16)
    k
    0 2
    /
    3










    ;
    2 74
    b
    ;
    05 0
    dx
    ;
    2
    x
    ;
    35 2
    x
    ),
    82 3
    x
    /(
    )
    b x
    (ln
    00084 0
    y
    17)
    k
    0 2
    4
    /
    5









    ;
    74 6
    b
    ;
    01 0
    dx
    ;
    15 0
    x
    ;
    05 0
    x
    ,
    )
    b x
    (
    10 0.8
    y
    18)
    k
    0 6
    /
    7 3
    3
    -5








    3 3/2 3
    0 19) y (ln(sin(
    0.0025)))
    0.8 10 ,
    0.12;
    0.64;
    0.2;
    k
    x
    x
    x
    dx








    2/3 0
    20) y a x cos(
    ),
    5.62;
    15.62;
    0.5;
    0.41
    x
    k
    x e
    x
    x
    dx
    a
     







    написать администратору сайта