Составление простейших вычислительных программ циклической структуры.




 

Цель работы: Овладение практическими навыками разработки и программирования алгоритмов циклической структуры; приобретение дальнейших навыков по отладке и тестированию программ.

Задание:

1. Составить блок-схему алгоритма циклической структуры.

2. Изучение особенности программирования алгоритмов циклической структуры на алгоритмическом языке Паскаль.

3. Запрограммировать полученный алгоритм.

4. Ввести текст программы в компьютер.

5. Выполнить расчёт по программе.

 

Методические указания.

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

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

Использование циклов позволяет существенно сократить объём схемы алгоритма и длину соответствующей ей программы. Различают циклы с заданным и неизвестным числом повторений. К последним относятся итерационные циклы, характеризующиеся последовательным приближением у искомому значению с заданной точностью.

Для организации цикла с неизвестным числом повторений необходимо выполнить следующие действия:

1) задать перед циклом начальное значение переменной, изменяющейся в цикле;

2) изменять переменную перед каждым новым повторением цикла;

3) проверять условие окончания или повторения цикла

4) управлять циклом, т.е. переходить к его началу, если он не закончен, или выходить из него по окончании.

Последние три функции выполняется многократно.

Переменная, изменяющаяся в цикле, называется параметром цикла.

Если заранее известно количество повторов, то используется цикл FOR.

Если же не известно количество повторов, то используются операторы While или Repeat Until.

Оператор цикла Repeat организует выполнение цикла, состоящего из любого числа операторов с неизвестным заранее числом повторений.

Repeat

J1;

J2;

JN;

Until S;

J1, J2, JN -операторы, составляющие тело цикла.

S – логическое выражение, истинность которого проверяется.

Так как слова Repeat и Until являются своеобразными операторными скобками, точку с запятой после Repeat и перед Until можно не ставить.

Последовательность операций, заключенных между Repeat и Until, выполняется до тех пор, пока S не примет значение истины. Далее цикл заканчивается, и выполняются операторы, следующие за Until. Применять этот оператор нужно осторожно, чтобы избежать зацикливание, которое может произойти, если S ложно. Это возникает тогда, когда значение выражения S не зависит от результатов выполнения операторов цикла.

x:=0;

repeat

x:=x+1;

y:=sin(x);

until x>15.

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

Структура оператора имеет вид:

while S do I;

S - логическое выражение, истинность которого проверяется;

J – выполняемый оператор цикла.

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

x:=0;

while x>15 do

begin

x:=x+1;

y:=sin(x);

end;

 

Оператор цикла FOR организует выполнение одного простого или составного оператора заранее известное число раз.

Существует 2 способа записи данного оператора:

1)For P:=S to F do I;

2)For P:=S down to F do I;

В этих операторах:

P - параметр цикла, являющийся переменной порядкового типа;

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

F - выражение, определяющее конечное значение параметра цикла;

I - выполняемый оператор.

Цикл действует следующим образом:

1) вычисляются и запоминаются начальное S и конечное F;

2) параметру цикла P присваивается начальное значение S;

3)пока S ≤ F, выполняется очередная итерация цикла, в противном случае - выход из цикла.

4)Выполнение очередной итерации включает в себя сначала выполнение оператора I, а затем изменение P на величину шага, возврат на начало цикла, сравнение нового S и F.Величина шага в первом случае равна 1, во втором случае -1.

for с шагом 1 (инкрементный)

for индекс:=выражение1 to выражение 2 do оператор;

for с шагом -1 (декрементный)

for индекс:=выражение1 downto выражение2 do оператор;

For i:=1 to 10 do

begin

y:=sin(i)

writeln (‘ i, y ‘);

end.

2 вариант:

For i:=10 downto 1 do

y:=Sin(i)

writeln (‘ i, y ‘);

end.

Пример: xє[0;2.5] Δx=0.5

For i:=0 do x do

begin

x:=x+i*0.5

writeln (‘ i, x ‘);

end.

Порядок выполнения работы

Найти с заданной точностью сумму элементов убывающей последовательности, т.е. вычислять сумму до тех пор, пока n-й элемент последовательности не станет меньше заданной точности. Точность вводится с клавиатуры. Вывести на экран сумму элементов, значение n-го элемента и количество элементов, необходимых для подсчёта суммы с заданной точностью.

Таблица 5

Вариант Задание Точность Исходные данные
  ε=0.0001 -
  ε=0.0001 -
  ε=0.0001 -
  ε=0.0001 -
  ε=0.0001 -
  ε=0.0001 -
  ε=0.0001 -
  ε=0.0001 -

 

Найти наименьшее значение m, для которого произведение не будет превышать некоторую заданную величину. Эту величину ввести с клавиатуры. Вывести на экран значение m и полученное произведение.

 

  - m=1 m=5 m=10
  - m=6 m=7 m=25
  - m=4 m=40 m=100
  - m=7 m=10 m=20
  - m=15 m=17
  - m=4 m=20 m=100
  - m=60 m=65 m=120
  - m=7 m=10 m=23

 

Пример программы на расчета суммы членов ряда с заданной точностью ;

uses crt; { Подключается библиотека ввода-вывода }

var k, eps: Real;

n, i, x: Integer;

begin

ClrScr; { Производится очистка экрана }

WriteLn('Выполнил Поляков Д.Г., КТФ, гр. Р-11');

WriteLn; { Вывод пустой строки }

WriteLn('Введите точность вычисления суммы');

Read(eps); { Ввод точности вычислений }

n:=0; { Присвоение начального значения аргументу члена ряда }

repeat { Цикл с постусловием }

x:=1; { Присвоение начального значения рекуррентной формуле

вычисления факториала }

for i:=1 to n do x:=x*i;

k:=k+(n+1)/(2*x); { Накопление суммы членов ряда }

n:=n+1; { Приращение аргумента }

until (n+1)/(2*x) < eps; { Выход из цикла при достижении заданной точности }

WriteLn('Выводится результат вычисляемого выражения');

WriteLn(k:4:5); { Форматный вывод }

 

Содержание отчёта по лабораторной работе.

 

1 Цель лабораторной работы.

2. Задание.

3. Методические указания.

4. Блок-схема алгоритма программы.

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

6. Результаты расчетов.

 

Контрольные вопросы

1. Что называется циклом?

2. Какие операторы называются начальными и конечными операторами цикла?

3. Что называется областью цикла?

4. Что такое тело цикла?

5. Может ли параметр цикла принимать нулевое и отрицательное значения?

6. В каком случае используются операторы REPEAT UNTIL, а в каком FOR?

7. Какие операторы не могут быть конечными операторами цикла?

8. Каким образом размещаются элементы многомерных массивов в памяти ЭВМ?

9. Правила построения сложных циклов.

10. Когда используется оператор WHILE?

Литература [2, 3].

 

 

Лабораторная работа 4

Обработка массивов.

Цель работы: Овладение навыками алгоритмизации и программирования структур с вложенными циклами, навыками использования приемов программирования во вложенных циклах, способами ввода, обработки и вывода массивов.

Задание:

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

2 Ввести текст программы в компьютер.

3 Обработать матрицу в соответствии с вариантом задания (элементами матрицы являются случайные значения функции f(x)).

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

Методические указания.

 

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

Размерность массива, а следовательно и количество индексов элемента массива, может выражаться любым целым положительным числом.

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

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

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

 


Таблица 6

Вариант задания Условие задачи Функция f(x) и диапазон изменения аргумента
  Для матрицы A (10,10) найти сумму всех элементов матрицы x [-5;5]  
  Для матрицы B (12,12) найти сумму элементов в строках матрицы x [0;5]  
  Для матрицы C (15,10) найти сумму элементов в столбцах матрицы x [-5;5]  
  Для матрицы D (10,11) найти максимальный элемент в матрице x [-π;π]  
  Для матрицы B (12,12) найти минимальный элемент в матрице x [-8;7]  
  Для матрицы A (13,13) найти максимальный элемент в каждой строке матрицы x [-10;10]  
  Для матрицы С (10,15) найти минимальный элемент в каждой строке матрицы x [-8;9]  
  Для матрицы D (11,11) найти максимальный элемент в каждом столбце матрицы ; x [-100;100]  
  Для матрицы E (8,8) найти минимальный элемент в каждом столбце матрицы x [-π;3π/2]  
  Для матрицы C (15,15) найти максимальную из сумм строк матрицы x [-π;π]  
  Для матрицы R (7,7) найти минимальную из сумм строк матрицы x [-5;5]  
  Для матрицы Z (14,14) найти максимальную из сумм столбцов матрицы x [-5;5]  
  Для матрицы N (12,8) найти минимальную из сумм столбцов матрицы x [0;2π]  
  Для матрицы R (4,4) найти сумму положительных элементов матрицы x [-5;5]  
  Для матрицы S (14,14) найти сумму отрицательных элементов матрицы x [π;π]  

 

Пример программы:

{ Найти максимальный элемент среди элементов, находящихся выше главной диагонали квадратной матрицы.

Указать его индексы. }

uses crt; { Подключение библиотеки ввода-вывода }

const n = 3; { Задается размерность матрицы }

var i, j, max, imax, jmax: Integer;

a: Array [1..n,1..n] of Integer;

begin

ClrScr; { Очистка экрана }

WriteLn('Составил Поляков Д.Г., КТФ, Р-11');

WriteLn; { Вывод пустой строки }

for i:= 1 to n do { Во вложенном цикле }

begin { происходит заполнение матрицы }

for j:= 1 to n do

begin

WriteLn('Введите ',i,'.',j,'-й элемент матрицы');

Read(a[i,j]); { Ввод элементов матрицы }

end;

WriteLn; { Вывод пустой строки }

end;

for i:= 1 to n do { Во вложенном цикле }

begin { происходит вывод матрицы }

for j:= 1 to n do Write(a[i,j]:3,' ');

WriteLn; { Вывод пустой строки }

end;

max:= a[2,1];

for i:= 1 to n do {Производится поиск макс. элемента и его координат }

begin { согласно заданию. }

for j:= 1 to n do

if (j-i) >= 1 then

if a[i,j] > max then

begin

max:= a[i,j];

imax:= i;

jmax:= j;

end;

end;

WriteLn('Выводится max: ',max); { Выводятся макс. элемент и его координаты }

WriteLn('Выводится cтрока: ',imax); { согласно заданию. }

WriteLn('Выводится столбец: ',jmax);

ReadKey; { Производится задержка экрана }

end.

 

Содержание отчёта по лабораторной работе

1 Цель лабораторной работы.

2. Задание.

3. Методические указания.

4. Блок-схема алгоритма программы.

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

6. Результаты расчетов.

 

Контрольные вопросы

 

1 Как задается массива?

2 Как можно обратиться к отдельному элементу массива?

3 Каковы правила записи индексов?

4 Как определяют индексы в двумерном массиве?

5 Каким может быть тип массива?

6 Как располагаются в памяти ЭВМ элементы массива?

7 Каким образом можно присвоить начальные значения элементам массива?

8 Какой оператор цикла используется при введении элементов массива?

9 Как осуществляется вывод элементов матрицы на экран?

10 Какие виды массивов Вы знаете?

Литература [2, 3].

 

Лабораторная работа 5



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-04-03 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: