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

  • Краткие сведения из теории

  • 5.1. Оператор цикла с предварительным условием Синтаксис

  • 5.2. Оператор цикла с последующим условием

  • Задание к работе 1. Выполнить индивидуальное задание А. 2. Выполнить индивидуальное задание Б. Методические указания

  • Варианты индивидуальных заданий Задание А

  • ЛАБОРАТОРНАЯ РАБОТА N 6 Тема: "Организация арифметических циклических процессов с известным числом повторений" Цель работы

  • 6.1. Оператор цикла с параметром

  • Задание к работе Выполнить индивидуальное задание. Методические указания

  • Варианты индивидуальных заданий

  • ЛАБОРАТОРНАЯ РАБОТА N 7

  • лабораторные работы паскаль. Практикум по программированию на языке Паскаль Учебное пособие


    Скачать 0.89 Mb.
    НазваниеПрактикум по программированию на языке Паскаль Учебное пособие
    Анкорлабораторные работы паскаль.pdf
    Дата28.01.2018
    Размер0.89 Mb.
    Формат файлаpdf
    Имя файлалабораторные работы паскаль.pdf
    ТипПрактикум
    #14972
    страница4 из 11
    1   2   3   4   5   6   7   8   9   10   11
    Тема: "Организация итерационных циклических процессов"
    Цель работы
    Овладение теоретическими основами и практическими навыками программирования итерационных вычислительных процессов циклической структуры, получение дальнейших навыков по отладке и тестированию программы.
    Краткие сведения из теории
    Большинство вычислительных процессов обладает следующей особенностью: отдельные участки вычислений повторяются многократно, при этом всякий раз используются новые значения исходных данных.
    Такие вычислительные процессы называют циклическими, а их повторяющиеся участки - циклами.
    Применение циклов в программе позволяет эффективно использовать вычислительную машину, приводит к уменьшению длины программы и сокращению времени на ее составление и отладку.
    Циклы бывают арифметическими и структурными. Арифметические циклы связаны, в основном, с изменением одной переменной. Они делятся на два типа: циклы на достижение заданной точности (итерационные) и циклы с известным числом повторений.
    Циклический процесс называется итерационным, если заранее неизвестно количество повторений цикла, а конец вычисления определяется при достижении некоторой величиной заранее заданной точности вычисления.
    Примерами итерационных циклов являются вычисления:
    − корней алгебраических и трансцендентных уравнений численными методами;
    − корней линейных алгебраических и нелинейных уравнений;
    − вычисление квадратного корня по итерационной формуле и т.д.
    При программировании итерационных процессов принято их разделять на циклы с "предусловием" и с "постусловием". Их отличие заключается в том, что проверка достижения некоторой величиной заданной точности вычисления осуществляется соответственно либо в начале цикла, либо в конце цикла. Особенность цикла с "постусловием" заключается в том, что повторяющийся участок алгоритма выполнится хотя бы один раз, в то время как в цикле с "предусловием" этот участок может не выполниться ни разу.
    Для графического изображения итерационных процессов используется блок "условие".
    Функциональная схема итерационных процессов с "постусловием" приведена на рис.1,а) и с "предусловием" - на рис.1,б).
    Инициализация представляет собой задание начальных значений переменным, которые используются в теле цикла.
    Тело цикла - это последовательность действий, которые выполняется многократно.
    Для записи итерационных процессов на языке ПАСКАЛЬ имеется два вида операторов цикла:
    1) оператор с предварительным условием (предусловием);
    2) оператор цикла с последующим условием (постусловием).
    Операторы для записи циклов являются сложными, так как в их состав входят другие операторы.
    Для всех операторов цикла характерны следующие особенности: повторяющиеся вычисления записываются лишь один раз; вход в цикл возможен только через его начало; переменные оператора цикла должны быть определены до входа в циклическую часть;

    37
    условие начальное присваивание
    (инициализация
    )
    тело цикла нет да а) условие да начальное присваивание
    (инициализация
    )
    тело цикла нет б) необходимо предусмотреть выход из цикла: или по естественному его окончанию, или по оператору перехода. Если этого не предусмотреть, то циклические вычисления будут повторяться бесконечно и это приведет к "зацикливанию" программы.
    Рис.1.
    Функциональная схема итерационных циклов.
    5.1. Оператор цикла с предварительным условием
    Синтаксис
    оператора цикла с "предусловием":
    WHILE
    <логическое выражение> DO
    BEGIN
    <предложения тела цикла>
    END
    Здесь WHILE (пока) и DO (выполнить) - служебные слова.
    Оператор цикла действует следующим образом. Предварительно проверяется значение логического выражения. Пока оно истинно, выполняются предложения циклической части.
    Как только оно становится ложным, происходит выход из цикла. Если с самого начала значение логического выражения ложно, то предложения циклической части не выполнятся ни разу.
    Обратите внимание на то, что предложения циклической части, заключеннные в операторные скобки BEGIN - END, представляют собой составной оператор.
    Возможен случай, когда в циклической части стоит оператор перехода, передающий управление за пределы цикла. В такой ситуации цикл может завершиться до его естественного окончания (т.е. при истинном значении логического выражения).
    Если в циклической части стоит всего одно предложение, то операторные скобки BEGIN
    - END можно не использовать и оператор цикла принимает вид:
    WHILE
    <логическое выражение> DO <предложение>; .
    Пример
    Словесная постановка задачи.
    Вычислить приближенное значение суммы S=1/ i с точностью до Eps. При этом i может принимать целочисленные значения с заданным шагом.
    Дано: Eps - точность приближения;
    Step - шаг изменения переменной i; iStart - начальное значение переменной i.
    Результат: S - приближенное значение суммы.
    Промежуточные данные: а - текущее значение слагаемого 1/ i.
    Текстуальное описание алгоритма.
    1) ввод значений переменных iStart, Step, Eps;
    2) S = 0;

    38
    да вывод результатов a = 1/iStart
    S = S + a i = i + Step a = 1/i ввод Eps , Step, iStart начало
    S=0, i=iStart a < Eps конец нет
    3) i = iStart;
    4) a = 1/iStart;
    5) если a < Eps, перейти на п.10;
    6) S = S + a;
    7) i = i + Step;
    8) a = 1/ i;
    9) перейти на п.5;
    10) вывод результата.
    Схема алгоритма.
    Графическая схема алгоритма приведена на рисунке 2.
    Рис.2.Принципиальная схема циклического алгоритма с "предусловием".
    Запись алгоритма на языке Паскаль (операторная запись алгоритма).
    Program ExampCircle1;
    Var i, iStart, Step : integer;
    S, a, Eps : real;
    Begin
    { Ввод исходных данных }
    Writeln('Введите значения переменных iStart, Step, Eps:');
    Readln(iStart, Step, Eps);
    { инициализация }

    39
    S:= 0; i:= iStart; a:= 1/iStart;
    { цикл }
    While a >= Eps do begin
    S:= S + a; i:= i + Step; a := 1/i end;
    Writeln('Значение суммы ряда 1/i = ', S:10:4) { вывод результатов }
    End.
    Примечание: так как циклическая часть программы выполняется по условию a >= Eps (см. текстуальное описание алгоритма), то в операторе цикла с "предусловием" используется именно это условие.
    Составление контрольного теста.
    При начальных значениях переменных: iStart = 2, Step = 2, Eps = 0.01 получаем следующий ряд
    S = 0 + 0.5 + 0.25 + 0.1999 + 0.125 + 0.01 = 1.0849
    Пояснение к работе программы:
    Пока условие a >= Eps является истинным (т.е. значение a оказывается больше или равно
    Eps), выполняются следующие предложения циклической части:
    − значение S увеличивается на a и результат вновь присваивается переменной S;
    − значение i увеличивается на величину Step и результат снова присваивается переменной i;
    − вычисляется новое значение переменной a.
    Начальные значения переменных заданы до начала оператора цикла.
    Переменные, а также логическое выражение принимают следующие значения в процессе выполнения этой части программы при заданном контрольном тесте: iStart = 2, Step = 2,
    Eps = 0.01 1-й шаг 2-й шаг 3-й шаг 4-й шаг 5-й шаг 6-й шаг i 2 4 6 8 10 12 a 0.5 0.25 0.1999 0.125 0.01 0.0083
    S 0.5 0.75 0.9499 1.0749 1.0849
    - a >= Eps
    0.5>=0.01 0.25>=0.01 0.1999>=0.01 0.125>=0.01 0.01>=0.01 0.0083>=0.0 1
    Значение условия
    Истинно
    Истинно
    Истинно
    Истинно
    Истинно
    Ложно
    Таким образом, предложения, составляющие тело цикла, выполнились пять раз. На шестом шаге вычислений, при i=12 и a=0.0083, логическое выражение становится ложным, и управление передается за пределы цикла, т.е. предложению Writeln, следующему за первой операторной скобкой (еnd).
    5.2. Оператор цикла с последующим условием
    Синтаксис оператора цикла с "постусловием" :
    REPEAT < предложения тела цикла >
    UNTIL < логическое выражение > ; .
    Здесь REPEAT (повторить) и UNTIL (до тех пор) - служебные слова.

    40
    да a = 1/i ввод Eps , Step, iStart начало
    S=0, i=iStart конец
    S = S + a i = i + Step a < Eps вывод результатов нет
    Оператор с "постусловием" работает следующим образом. Предложения циклической части выполняются повторно (по крайней мере один раз) до тех пор, пока значение логического выражения ложно. Условием прекращения циклических вычислений является истинное значение логического выражения. Итак, сначала выполняется циклическая часть, а затем проверяется условие. Обратите внимание, что эти действия прямо противоположны действиям оператора цикла с "предусловием", где сначала проверяется условие, а затем выполняются предложения циклической части.
    Следует подчеркнуть, что нижняя граница предложений циклической части четко обозначена словом UNTIL, поэтому нет необходимости заключать предложение циклической части в скобки вида BEGIN-END. В то же время наличие операторных скобок не является ошибкой.
    Если в циклической части встречается оператор перехода, указывающий на метку за пределами цикла, то цикл может завершиться до его естественного окончания.
    Рассмотрим использование данного оператора на предыдущем примере. Основные изменения претерпевают только схема алгоритма и программа, поэтому рассмотрим только их.
    Схема алгоритма
    Графическая схема алгоритма приведена на рисунке 3.
    Рис.3. Принципиальная схема циклического алгоритма с "постусловием".

    41
    Запись алгоритма на языке Паскаль (операторная запись алгоритма).
    Program ExampCircle2; var i, iStart, Step : integer;
    S, a, Eps : real;
    Begin
    { Ввод исходных данных }
    Writeln('Введите значения переменных iStart, Step, Eps:');
    Readln(iStart, Step, Eps);
    { инициализация }
    S:= 0; i:= iStart;
    { цикл } repeat a := 1/i;
    S:= S + a; i:= i + Step; until a < Eps;
    { вывод результатов }
    Writeln('Значение суммы ряда 1/i = ', S:10:4);
    End.
    Составление контрольного теста
    При начальных значениях переменных: iStart = 2, Step = 2, Eps = 0.01, получаем следующий ряд
    S = 0 + 0.5 + 0.25 + 0.1999 + 0.125 + 0.01 = 1.0849
    Пояснение к работе программы
    Циклическая часть программы повторяется до тех пор, пока выражение a= Eps было истинным.
    Переменные, а также логическое выражение принимают следующие значения в процессе выполнения этой части программы при том же контрольном тесте: iStart = 2, Step = 2, Eps =
    0.01 1-й шаг 2-й шаг 3-й шаг 4-й шаг 5-й шаг 6-й шаг i 2 4 6 8 10 12 a 0.5 0.25 0.1999 0.125 0.01 0.0083
    S 0.5 0.75 0.9499 1.0749 1.0849
    - a < Eps
    0.5<0.01 0.25<0.01 0.1999<0.01 0.125<0.01 0.01<0.01 0.0083<0.01
    Значение условия
    Ложно
    Ложно
    Ложно
    Ложно
    Ложно
    Истинно
    Предложения, составляющие тело цикла, выполнились снова пять раз. На шестом шаге вычислений, при i=12 и a=0.0083, логическое выражение становится истинным, и управление передается за пределы цикла, т.е. предложению WriteLn, следующему за первой операторной скобкой (еnd).
    Примечание: Как видно из примеров, использование оператора с "постусловием" сократило программу на одно предложение и пару операторных скобок.
    Действительно, предложение REPEAT достаточно удобно использовать в программах, но следует помнить, что при использовании предложение WHILE перед выполнением

    42
    операторов тела цикла обязательно проверяется заданное условие, во втором случае предложения тела цикла обязательно выполнятся хотя бы один раз.
    Контрольные вопросы
    1. Дайте определение арифметических итерационных циклов.
    2. Перечислите особенности циклических процессов с предварительной проверкой условия.
    3. Перечислите особенности циклических процессов с последующей проверкой условия.
    4. В чем состоит отличие операторов цикла с "предусловием" и с "постусловием"?
    5. Будет ли выполняться циклическая часть программы, если логическое выражение является ложным с самого начала в предложении WHILE?
    6. Будет ли выполняться циклическая часть программы, если логическое выражение истинно с самого начала в предложении REPEAT?
    Задание к работе
    1. Выполнить индивидуальное задание А.
    2. Выполнить индивидуальное задание Б.
    Методические указания
    При выполнении индивидуального задания необходимо соблюдать рассмотренную технологию решения задач на ЭВМ:
    1) изучить словесную постановку задачи, выделив при этом все виды данных;
    2) сформулировать математическую постановку задачи;
    3) выбрать метод решения задачи, если это необходимо;
    4) разработать графическую схему алгоритма;
    5) записать разработанный алгоритм на языке Паскаль;
    6) разработать контрольный тест к программе;
    7) отладить программу;
    8) представить отчет по работе к защите.
    Содержание отчета
    1. Титульный лист.
    2. Словесная постановка задачи.
    3. Математическая постановка задачи.
    4. Графическая схема алгоритма решения задачи.
    5. Листинг программы.
    6. Контрольный тест.
    7. Результаты тестирования программы.
    8. Ответы на контрольные вопросы по согласованию с преподавателем.
    Варианты индивидуальных заданий
    Задание А
    Методом итераций вычислить корень уравнения вида f(x)=0, расположенный в интервале
    [A, B], с абсолютной погрешностью в соответствии с вариантом задания. Определить также число итераций, необходимое для нахождения корня. вариант задания уравнение отрезок точность
    1
    e
    e
    x
    x

    − =

    2 0
    [0;1] 1Е-4 2
    3sin x
    + 0,35 x - 3,8 = 0
    [2;3] 1Е-4 3 x - 2 + sin(1/ x) = 0
    [1.2;2]
    1Е-4 4
    1 - x + sinx - ln(1+x)=0
    [0;1,5]
    1Е-4 5 x
    2
    - ln(1+x)-3=0
    [2;3]
    1Е-4

    43 6
    1/(x - 3+sin3,6x) = 0
    [0;0,85]
    0.5Е-4 7 ln x - x + 1,8 = 0
    [2;3]
    0.5Е-4 8 0,1x
    2
    -x ln x = 0
    [1;2]
    0.5Е-4 9 x + cos(x
    0,52
    + 2) = 0
    [0,5;1]
    1Е-4 10 1 0 4
    − . x
    - arcsin x = 0
    [0;1] 1Е-4
    Задание Б
    Вычислить значение суммы членов бесконечного ряда с заданной точностью Eps. На печать вывести значение суммы и число членов ряда, вошедших в сумму.
    Вариант
    Сумма членов ряда
    Значение
    Точность вычисления
    1
    S=

    +
    + + −
    2x
    2
    ((2x) )
    24
    .... ( 1)
    (2x)
    (2n)!
    2 2 2
    n
    2n
    0.20 10
    -5 2
    S= x x
    3
    .....( 1)
    x
    2n 1 3
    n
    2n 1

    +



    0.10 0.5*10
    -4 3
    S
    x
    5
    x
    17
    ..... ( 1)
    x
    4n
    1 3
    5
    n 1 2n 1 2
    =

    + + −
    +
    +
    +
    0.15 10
    -3 4
    S = 1 + Cos( / 4)
    x
    1!
    Cos(n * / 4)
    n!
    x n
    π
    π
    +
    +
    0.12 10
    -4 5
    S 1
    x
    2!
    x
    (2n)!
    2 2n
    = +
    + +
    0.70 10
    -4 6
    S
    4 (1 1
    3 1
    5 1
    7 1
    9
    .... ( 1)
    1 2n 1
    n
    = ⋅ − + − + − + −

    - 10
    -4 7
    S
    1
    x
    1 3x
    1 5x
    ..... ( 1)
    1
    (2n 1)x
    3 5
    n
    2n 1
    = −
    +
    + + −
    +
    +
    1.5 0.5*10
    -3 8
    S
    x x
    3!
    x
    5!
    x
    (2n 1)!
    3 5
    2n 1
    = +
    +
    + +
    +
    +
    1.7 10
    -3 9
    S 1
    x
    2!
    3x
    4!
    ..... ( 1)
    2n 1
    (2n)!
    x
    2 4
    n
    2n
    = +

    +
    + −

    0.75 0.5*10
    -3 10
    S 1
    Cosx
    1!
    Cos2x
    2!
    Cosnx n!
    = +
    +
    + +
    0.3 10
    -4

    44
    ЛАБОРАТОРНАЯ РАБОТА N 6
    Тема: "Организация арифметических циклических процессов с известным числом
    повторений"
    Цель работы
    Овладение теоретическими основами и практическими навыками программирования арифметических циклических процессов с известным числом повторений, получение дапльнейших навыков по отладке и тестированию программы.
    Краткие сведения из теории
    Циклы с фиксированным числом повторений изображаются в графических схемах алгоритма с помощью специального блока, называемого блоком модификации:
    Здесь в записи блока модификации переменная I называется параметром цикла, значения N,
    K задают cоответветственно начальное и конечное значение параметра цикла.
    Блок модификации задает следующую последовательность действий:
    1. Параметру цикла I присваивается начальное значение N.
    2. Проверяется условие I > K. Если условие выполняется, то происходит выход из цикла, в противном случае осуществляется переход на следующий пункт (п.3).
    3. Выполняются предложения, составляющие тело цикла.
    4. К параметру цикла добавляется значение шага (на языке Паскаль значение шага может быть равно +1 или -1), то есть вычисляется арифметическое выражение I = I + 1.
    5. Выполняется переход к пункту 2.
    Функциональная схема арифметического цикла с известным числом повторений приведена на рисунке 4.
    При программировании цикла с фиксированным числом повторений на языке Паскаль используется оператор цикла с параметром.
    Рис.4. Функциональная схема арифметического цикла с известным числом повторений.
    6.1. Оператор цикла с параметром
    Синтаксисоператора цикла с параметром :
    FOR i:= N TO K DO
    BEGIN вход в цикл
    I = N, K вход в блок модификации параметра I окончательный выход из цикла по I > K выход на выполнение предложений тела цикла при I
    ≤ K начальное присваивание
    (инициализация)
    I = N, K
    Тело цикла

    45
    < предложения тела цикла >
    END
    Здесь FOR (для), TO (до), DO (выполнить) - ключевое слова; i - параметр цикла; N, K - начальное и конечное значение параметра цикла.
    Циклическая часть программы выполняется повторно для каждого значения параметра цикла i от его начального значения N до конечного значения K включительно.
    В качестве параметра цикла может использоваться только переменная, N и K могут быть заданы выражениями. Если в выражении присутствуют действительные переменные, то необходимо к выражению применить стандартные математические функции Round или
    Trunc.
    Параметр цикла i описывается в разделе переменных как переменная целого типа.
    Параметр i изменяется на величину шага, равную +1 или -1. Если значение параметра цикла уменьшается, то шаг его изменения равен -1, и в операторе цикла FOR ключевое слова TO заменяется на ключевое слово DOWNTO.
    Рассмотрим использование оператора цикла с параметром.
    Пример1
    Фрагмент программы:
    For i := 1 to 5 do
    Begin
    A := 2 * i;
    B := 2 * i + 1;
    WriteLn(A:3, B:3)
    End.
    В этом фрагменте начальное и конечное значения параметра i равны 1 и 5 (N = 1, K = 5).
    Тело цикла повторяется пять раз, при этом параметр цикла i принимает значения от 1 до 5.
    В результате выполнения программы переменные получают следующие значения:
    I . . . 1 2 3 4 5 - пошаговые значения параметра;
    A . . . 2 4 6 8 10 - пошаговые значения результатов (А, В).
    B . . . 3 5 7 9 11
    Фрагмент программы с убыванием значений параметра цикла от 5 до 1 (N = 5 и K = 1) имеет следующий вид:
    For i := 5 downto 1 do
    Begin
    A := 2 * i;
    B := 2 * i + 1;
    WriteLn(A:3, B:3)
    End.
    В процессе выполнения программы переменные принимают следующие значения:
    I . . . 5 4 3 2 1 - пошаговые значения параметра;
    A . . . 10 8 6 4 2 - пошаговые значения результатов (А, В).
    B . . . 11 9 7 5 3
    Если циклическая часть программы содержит только одно предложение, то операторные скобки BEGIN - END можно не указывать.
    В этом случае цикл с параметром записывают в следующем виде:
    FOR i := N to K DO < oператор >;
    FOR i := K DOWNTO N DO < оператор >;
    Параметр цикла i не должен переопределяться внутри циклической части.
    Если шаг изменения параметра цикла равен +1 и N > K, то циклическая часть не выполнится ни разу.
    После естественного завершения цикла значение параметра цикла не определено. Это означает, что при последнем выполнении циклической части значение i = K, а после ухода за пределы цикла значение i теряется.

    46
    начало ввод a,b,c,h
    K=(a-b)/h+1
    N=1, x=a конец y= c
    2
    /(c+x) вывод результата
    I = N, K
    Примечание. Oператор цикла FOR задает закон изменения только одного целочисленного параметра. Для задания закона изменения других параметров нужно использовать операторы присваивания, одни из которых перед циклом задают их значения, а другие внутри цикла вычисляют их текущие значения. Если в цикле изменяется один параметр, который не является целочисленным, то он не может быть параметром цикла. В этом случае необходимо вводить целочисленный параметр, который будет счетчиком количества повторений.
    Рассмотрим пример.
    Словесная постановка задачи.
    Вычислить значения функции Y = с
    2
    /(с + X) при X, изменяющемся от a до b с шагом h.
    Исходные данные: a, b, h, c.
    Результат: последовательность значений Y, вычисленных на каждом шаге.
    Промежуточные данные: Х.
    Математическая постановка задачи. Количество повторений цикла будет равно
    K
    b a h
    i
    =


    

    
    +
    (1)
    Таким образом, параметр цикла i изменяется от N до K, причем N = 1, а K вычисляется по формуле (1).
    Значение переменной X внутри тела цикла можно вычислять по формуле:
    X = X + h.
    Графическая схема алгоритма.
    Она представлена на рисунке 5.
    Рис. 5. Принципиальная схема циклического алгоритма с фиксированным числом повторений.
    Запись алгоритма на языке Паскаль (операторная запись алгоритма).
    Program ExampCircle3(Input, Output);
    Var a, b, c, h, X, Y : real; i, N, K : integer;
    Begin
    { Ввод данных }
    WriteLn('Введите значения переменных a, b, c, h:');
    ReadLn(a, b, c, h);
    { инициализация переменных }
    K := trunc((a - b)/h + 1);

    47
    X := a;
    N := 1;
    { вычисление функции в цикле }
    For i := N to K do begin
    Y := c * c /(c + X);
    WriteLn(i, ' Значение функции = ',Y:10:4);
    X:= X + h; end;
    End.
    Контрольный тест к программе.
    Пусть Х изменяется в пределах от 0 до 3 с шагом 0.1, значение константы с = 2, тогда a =
    0, b = 2, h = 0.5, N = 1, K = 5.
    I 1 2 3 4 5
    X 0 0.5 1 1.5 2
    Y
    4/(2+0)=2 4/(2+0.5)=1.6 4/(2+1)
    ≈1.3 4/(2+1.5)≈1.14 4/(2+2)=1
    6.2. Вложенные циклы
    Циклы могут быть вложены один в другой. Иногда их называют сложными циклами. При использовании вложенных циклов необходимо составлять программу таким образом, чтобы внутренний цикл полностью входил в тело внешнего цикла. Внутренний цикл может, в свою очередь, иметь другой внутренний цикл (циклы). Структуру вложенных циклов рассмотрим на примере.
    Пример.
    Вычислить значение функции Y = 2L + M при всех значениях переменных M=1, 2, 3 и L=2, 4, 6, 8.
    Программа должна содержать два вложенных друг в друга цикла. В качестве параметра внешнего цикла удобно использовать переменнуюМ, а внутреннего - переменную L. Тогда при первом значении M переменная L будет принимать значения 2, 4, 6, 8. При следующем значении M переменная L также будет принимать значения 2, 4, 6, 8 и так до конца.
    Программа имеет вид:
    Program Circles;
    Var
    M, L, Y : integer;
    Begin
    For M := 1 to 3 do
    Begin { начало тела внешнего цикла }
    L := 2;
    While L <= 8 do
    Begin { начало тела внутреннего цикла }
    Y := 2 * L + M;
    Writeln('M = ', M:4, ' L = ', L:4, ' Y = ', Y:4);
    L := L + 2
    End { конец тела внутренного цикла }
    End { конец тела внешнего цикла }
    End.
    Здесь внешний цикл организован с использованием предложения For, а внутренний - с использованием предложения While. В процессе выполнения вложенных циклов переменные получат следующие значения:
    1-й 2-й 3-й 4-й
    9-й 10-й 11-й 12-й

    48
    M
    L
    Y шаг
    1 2
    5 шаг
    1 4
    9 шаг
    1 6
    13 шаг
    1 8
    17 2 2 2 2 2 4 6 8 6 10 14 18 шаг
    3 2
    7 шаг
    3 4
    11 шаг
    3 6
    15 шаг
    3 8
    19
    Контрольные вопросы
    1. Дайте определение арифметического цикла с известным числом повторений.
    2. Какой тип данного может иметь параметр цикла?
    3. Что такое N, K? Какой тип данного они должны иметь?
    4. Может ли значение K превышать значение N, если да, то в каком случае?
    5. Обязательно ли реализовывать арифметический цикл с известным числом повторений в программе с помощью предложения FOR?
    6. В каких случаях необходимо использовать вложенные циклы?
    7. Обязательно ли использование однотипных операторов цикла при организации вложенных циклов?
    8. Какова максимальная глубина вложенности циклов?
    9. Можно ли изменять программным путем параметр цикла циклической части предложения
    For?
    Задание к работе
    Выполнить индивидуальное задание.
    Методические указания
    При выполнении индивидуального задания необходимо придерживаться технологии решения задач на ЭВМ:
    1) изучить словесную постановку задачи, выделив при этом все виды данных;
    2) сформулировать математическую постановку задачи;
    3) выбрать метод решения задачи, если это необходимо;
    4) разработать графическую схему алгоритма;
    5) записать разработанный алгоритм на языке Паскаль;
    6) разработать контрольный тест к программе;
    7) отладить программу;
    8) представить отчет по работе к защите.
    Содержание отчета
    1. Титульный лист.
    2. Словесная постановка задачи.
    3. Математическая постановка задачи.
    4. Графическая схема алгоритма решения задачи.
    5. Листинг программы.
    6. Контрольный тест.
    7. Результаты тестирования программы.
    8. Ответы на контрольные вопросы по согласованию с преподавателем.
    Варианты индивидуальных заданий
    1. Кинетическая энергия движущегося тела W = mV
    2
    /2, где m - масса тела, V - его скорость.
    Получить зависимость W от m при значениях V, изменяющихся от V1 до V2 с шагом h1.
    Масса m изменяется от m1 до m2 с шагом h2.
    2. При сооружении железобетонного фундамента площадь сечения арматуры определяется по формулам:
    F = (N - RS)/(D - R), если F > 0.03S;
    F = (N - RS)/D, если F
    ≤ 0.03S, где N - расчетная сила, приложенная по оси элемента;

    49
    S - площадь сечения бетона;
    R - сопротивление бетона осевому сжатию;
    D - сопротивление сжатой арматуры.
    Рассчитать значения переменной N, если известны R, S и D, а F изменяется от F1 до F2 с шагом h.
    3. Вычислить значения функции Y = 10 SinDX / (1+D
    2
    X
    2
    ), если Х изменяется от 0.1 до 10 с шагом 0.13, а D - от 1.2 до 5.4 с шагом 1.1.
    4. Обьем цилиндрической подковы вычисляется по формуле:
    V
    n b
    a r a
    r b r f
    =

    +

    °

    

    
    3 3
    3 180 2
    2 2
    (
    )
    (
    )
    *
    π
    Вычислить значения обьема V, который зависит от угла f, если a, b, h и r известны, а f изменяется от f1 до f2 с шагом h.
    5. Температура T молока в бидонах после содержания их на открытом воздухе и перевозки в крытом брезентом автомобиле в течениe W часов выражается формулой:
    T
    T
    T
    T
    KSW
    V
    =
    +



    

    
    0 1
    0
    (
    ) exp
    , где T1 - начальная температура молока, °С;
    T0 - температура окружающего воздуха, °С;
    S - площадь поверхности бидона, м
    2
    ;
    V - обьем бидона, м ;
    K = 0.00448 м/г - постоянный коэффициент.
    Вычислить значения температуры молока после хранения и перевозки с выдачей результатов для W, изменяющегося от 1 до 10 часов с интервалом 1 час.
    6. Производительность станка для резки бетонно-мозаичных плит составляет А см
    2
    /ч. После того, как на станке нарезали плиты общей площадью B см
    2
    , станок останавливают на Т1 мин., после чего вновь нарезают В см
    2
    плит с последующим перерывом на Т1 минут и т.д.
    Вычислить значение площади нарезанных плит S см
    2
    за общее время работы Т2 часов.
    7. Вычислить значения функции Z = X * b/(X +b), если X изменяется от начального значения а с шагом h.
    8. Вычислить значения функции Z = X
    cX
    , где Х изменяется от a до b с шагом h.
    Извествно, что с > 0.
    9. Вычислить значения функции Y = nSinX - CosnX, если Х изменяется от Х0 до ХК с шагом h.
    10. Вычислить значения функции Y = SinX, если Х изменяется от Х0 до ХК с шагом h.

    50
    ЛАБОРАТОРНАЯ РАБОТА N 7
    1   2   3   4   5   6   7   8   9   10   11


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