Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Задания к лабораторной работе.




Лабораторная работа № 3

 

Программирование циклических вычислительных процессов

 

Теоретическая часть

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

В языке Turbo Pascal существуют три оператора цикла: for, whileи repeat.

Оператор for используется, если некоторую последовательность действий надо выполнить несколько раз, причем число повторений заранее известно. Например, вычислить значения функции в нескольких различных, отстоящих на равное расстояние друг от друга точках (то есть построить таблицу значений функции).

В общем виде операторforзаписывается так:

forпараметр_цикла:=нач_значение toкон_значение do

Begin

{последовательность операторов тела цикла}

end;

где

· параметр_цикла — имя переменной-счетчика числа повторений операторов цикла;

· нач_значение — выражение, определяющее начальное значение параметра цикла;

· кон_значение — выражение, определяющее конечное значение параметра цикла.

Если между begin и end находится только одна оператор, то слова begin и end можно не писать. Обычно в качестве выражений, определяющих начальное и конечное значения параметра цикла, используются переменные или константы. В этом случае последовательность операторов тела цикла будет выполнена (кон_значение - нач_значение + 1) раз. В теле цикла не допускается явное изменение значения параметра цикла (например, с помощью оператора присваивания).

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

П р и м е р 1. Вычислить сумму первых n элементов ряда 1+1/2+1/3+…+1/i…+1/n.

Блок-схема алгоритма решения представлена на рис. 1.

 

Рис. 1

Текст программы:

programsumma;

Var

i, n:integer; {номер элемента ряда и число элементов}

elem:real; {значение элемента ряда}

sum:real; {сумма элементов ряда}

begin

            writeln(‘Введите число элементов ряда’);

        readln(n);

  sum:=0;

  fori:=l ton do

    begin

         elem:=l/i;

        sum: =sum+elem;        {подсчет суммы элементов}

         writeln(i:2, ' ',elem: 4:2); {вывод значения текущего элемента ряда}

    end;

writeln('Сумма элементов ряда: ',sum: 4:2);

end.

Если в операторе for вместо слова to записать downto, то после очередного цикла значение переменной цикла будет не увеличиваться, а уменьшаться. Например, оператор

forj:=10 downto0do

writeln(j);

выводит на экран числа от 10 до 0.

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

Типичными примерами использования цикла while являются вычисления с заданной точностью, поиск данных в массиве или в файле.

В общем виде оператор while записывается так:

while <условие> do

Begin

{последовательность операторов тела цикла}

end;

где <условие> — выражение логического типа, определяющее условие выполнения тела цикла — операторов, находящихся между begin и end.

Если между begin и end находится только один оператор, то begin и end можно не писать.

Оператор while выполняется следующим образом: сначала проверяется условие (вычисляется значение выражения <условие>). Если условие не выполняется (значение выражения  <условие> равно false), то операторы цикла, расположенные между begin и end, не выполняются, и на этом выполнение операторы while завершается. Если условие выполняется (значение выражения <условие> равно true), то выполняются следующие за do, расположенные между begin и end, операторы тела цикла, и после этого снова проверяется выполнение условия. Если условие выполняется, то операторы цикла выполняются еще раз. И так до тех пор, пока условие не станет ложным. Оператор whileявляется оператором цикла с предусловием, т. к. условие выполнения тела цикла проверяется до начала выполнения тела цикла.

Важные особенности оператора цикла while:

1. Для того чтобы тело цикла было выполнено хотя бы один раз, необходимо, чтобы перед выполнением оператора while условие выполнения цикла было истинно.

2. Для того чтобы цикл завершился, необходимо, чтобы последовательность операторов между begin и end изменяла значения переменных, входящих в выражение <условие>.

 

П р и м ер 2. Составить программу решения задачи примера 1 с использованием оператора while.

Блок-схема алгоритма решения будет иметь вид, аналогичный рис. 1.

Текст программы:

programsumma;

Var

i, n:integer; {номер элемента ряда и число элементов}

elem:real;    {значение элемента ряда}

sum:real;    {сумма элементов ряда}

begin

       writeln(‘Введите число элементов ряда n’);

   readln(n);

  sum:=0; i:=1;                      {начальное значение суммы и параметра цикла}

while i<=n do

     begin

         elem:=l/i;

         sum: =sum+elem;        {подсчет суммы элементов}

         writeln(i:2, ' ',elem: 4:2); {вывод значения текущего элемента ряда}

         i:=i+1                           {увеличение параметра цикла}

    end;

writeln('Сумма элементов ряда: ',sum: 4:2);

end.

Оператор repeat, как и оператор while, используется в программе, если надо провести некоторые повторяющиеся вычисления (цикл), но число повторений во время разработки программы неизвестно и может быть определено только во время работы программы, т. е. определяется ходом вычисления.

В общем виде оператор repeat записывается так:

Repeat

{операторы тела цикла}

until <условие>;

где <условие> — выражение логического типа, определяющее условие завершения цикла.

Оператор repeat выполняется следующим образом: сначала выполняются операторы тела цикла, следующие за словом repeat. Затем проверяется условие (вычисляется значение выражения <условие>). Если условие ложно (значение выражения <условие> равно false), то операторы тела цикла (операторы, находящиеся между repeat и until) выполняются еще раз. Если условие истинно (значение выражения <условие> равно true), то выполнение цикла прекращается.

Таким образом, операторы, находящиеся между repeat и until, выполняются до тех пор, пока значение выражения <условие> равно false. Оператор repeat является оператором цикла с постусловием, т. к. условие выполнения тела цикла проверяется после выполнения тела цикла.

Важные особенности оператора цикла repeat:

1. Операторы, находящиеся между repeat и until, будут выполнены хотя бы один раз;

2. Для того чтобы цикл завершился, необходимо, чтобы операторы цикла, находящиеся между repeat и until, изменяли значения переменных, входящих в выражение <условие>.

 

П р и м е р 3. Составить программу вычисления суммы положительных чисел, введенных с клавиатуры.

Текст программы:

programsummrep;

var

    numb:integer;                 {число, введенное с клавиатуры}

    sum: integer;             {сумма введенных чисел}

begin

     writeln('Вычисление суммы положительных целых чисел');

      sum:=0;

      repeat

          write('->');

           readln(numb);                                {ввод очередного числа}

           if numb>0 thensum:=sum+numb;     {вычисление суммы}

      untilnumb <= 0;

       writeln('Сумма введенных чисел = ',sum:6);

end.

Программа завершает работу, как только вводится первое неположительное число.

 

Практическая часть

 

2. 1. Ознакомиться с описанием лабораторной работы и по указанию преподавателя запустить систему программирования Turbo Pascal.

2. 2. Для каждого из заданий составить блок-схему алгоритма решения и текст программы в рабочей тетради и предъявить их преподавателю. Для пояснения исходных данных, результатов и основных операций текст программы сопровождать комментариями.

2. 3. Набрать текст программы, сохранить его в рабочем каталоге и выполнить компиляцию программы.

2. 4. Устранить синтаксические ошибки, подобрать исходные данные и запустить программу на выполнение. Результаты зафиксировать в отчете в рабочей тетради.

2. 5. Аккуратно оформить отчет по лабораторной работе и предъявить его преподавателю. В отчете по каждому заданию должны быть отражены следующие пункты:

1. БСА алгоритма.

2. Исходный текст программы с комментариями.

3. Результаты отладки.

4. Результаты решения.

 

Задания к лабораторной работе.

1. Составить программу, которая выводит таблицу значений функции y=-2,4x2+5x-3 в диапазоне значений аргумента от -2 до 2 с шагом 0,5.

2. Составить программу, которая выводит на экран последовательности следующего вида:

                 2*4*…*N,  если N – четное,

       S =   

                1*3*…*N, если N – нечетное, N > 2.

3. Составить программу, в которой вычисляется сумма ряда

                                       y = 1+x/2 + x2/3 + x3/4 + … при |x|<1.

Расчет продолжать до тех пор, пока приращение |y| будет больше заданной точности e, e<=|x|.

4. Составить программу, в которой вводится последовательность из n целых чисел (положительных и отрицательных) и находится наибольшее и наименьшее число.

5. Составить программу, которая выводит на экран таблицу умножения десятичных чисел.

6. Составить программу, которая выводит на экран изображение шахматной доски. Черные клетки отображать символом «*», белые – пробелом.

 










Последнее изменение этой страницы: 2018-05-29; просмотров: 149.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...