Смекни!
smekni.com

Методические указания к выполнению лабораторных работ и задания для контрольных работ для студентов всех специальностей заочной формы обучения (стр. 13 из 16)


20.


21.

22.

23.

24.


25.


26.

27.

28.


29.


30.

КОНТРОЛЬНЫЕ ВОПРОСЫ

1. Какие стандартные тригонометрические функции, реализованные в языке Паскаль, вы знаете?

2. Можно ли аргумент стандартной тригонометрической функции задать в градусах?

3. Каков приоритет выполнения арифметических операций?

4. Из каких символов может состоять идентификатор?

5. Можно ли ключевые слова использовать в качестве имен переменных?

6. Как вывести вещественное значение в форме с плавающей точкой, сохранив заданное число знаков мантиссы?

7. Как работает условный оператор?

8. Какие формы записи условного оператора вы знаете?

9. В каких случаях при записи условного оператора необходимо применять составной оператор?

ЛАБОРАТОРНАЯ РАБОТА № 6

Операторы цикла. одномерные массивы

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

Основные понятия

Цикл – это многократно выполняемая в программе последовательность действий (команд). Используя циклы, можно небольшим количеством операторов описать длинную последовательность операций по обработке однотипных данных. Любой цикл характеризуется условием выхода из него и телом цикла – совокупностью команд (операторов), ради выполнения которых он организован. В языке Паскаль имеются три типа цикла:

1) цикл со счетчиком (параметром);

2) цикл с предусловием;

3) цикл с постусловием.

Цикл со счетчиком или оператор цикла FOR может использоваться в двух представлениях (форматах):

1) FOR <параметр цикла>:= <S1> TO <S2> DO
<Оператор>;

2) FOR <параметр цикла>:= <S1> DOWNTO <S2> DO
<Оператор>;

Параметр цикла – переменная одного из порядковых типов (т.е. любого из стандартных типов, кроме вещественного). S1 и S2 – выражения совпадающие по типу с параметром цикла и определяющие его начальное и конечное значение соответственно. FOR, TO, DOWNTO, DO – зарезервированные слова, составляющие заголовок цикла. <Оператор> – простой или составной оператор, являющийся телом цикла и выполняющийся на каждом его шаге. При работе оператора цикла его параметр изменяется от начального до конечного значения. Шаг изменения всегда единичный (фактически в качестве нового значения параметра цикла берется, в зависимости от формы записи, следующее или предыдущее значение в его типе). Таким образом, количество итераций цикла зависит от начального и конечного значений параметра цикла. Первая форма записи оператора применяется в тех случаях, когда начальное значение меньше конечного. При этом подразумевается, что параметр цикла увеличивается. Вторая форма записи используется, когда начальное значение больше конечного и параметр цикла должен уменьшаться. Изменять в теле цикла его параметр непосредственно с помощью присваивания не рекомендуется. Цикл FOR используется в тех случаях, когда число повторений известно.

Оператор цикла с предусловием WHILE имеет следующий формат:

WHILE <условие> DO <Тело цикла>;

<условие> – логическое выражение, <тело цикла> – простой или составной оператор. Оператор выполняется до тех пор, пока <условие> является истинным (TRUE).

Оператор цикла с постусловием REPEAT имеет следующий формат:

REPEAT <оператор 1>...<оператор n> UNTIL<условие>;

Операторы, заключенные между словами REPEAT и UNTIL, составляют тело цикла. Оператор REPEAT выполняется до тех пор, пока <условие> является ложным (FALSE).

Операторы цикла WHILE, REPEAT, как правило, используются в тех случаях, когда число повторений заранее неизвестно.

Массив – это упорядоченный набор переменных одного типа, имеющий общее для всех своих элементов имя. Доступ к элементам массива осуществляется путем указания его имени и индексов, которые позволяют однозначно определить нужный элемент. Если для доступа к элементу используется один индекс, то такой массив называется одномерным. В этом случае индекс фактически представляет собой порядковый номер элемента. В двумерных массивах (матрицах) для доступа к элементу используется два индекса и т.д. Переменная, являющаяся массивом, описывается в программе следующим образом:

Var <идентификатор>: ARRAY [<сп.инд.типов>] OF <тuп>;

Здесь <идентификатор>имя массива; ARRAY, OF – зарезервированные слова (массив, из); <сп.инд.типов> – список из одного или нескольких индексных типов (<нач. знач.> . . <кон. знач.>), разделенных запятыми; квадратные скобки, обрамляющие список – требование синтаксиса; <тип> – тип элементов массива: любой из стандартных или определенных пользователем типов данных.

В качестве индексных типов в Турбо Паскале можно использовать любые порядковые типы или их интервалы, кроме LONGINT. Индексный тип одновременно определяет граничные значения индекса и количество элементов в массиве. Объем памяти, отводимой под элементы массива, не может превышать 65 520 байт.

Примеры описания массивов:

1) VAR X: ARRAY [1..20] OF Real;

2) VAR Y: ARRAY [0..15] OF Char;

Здесь описаны два одномерных массива: массив X из 20 элементов вещественного типа и массив Y из 16 элементов символьного типа. Для обращения к элементу массива необходимо после имени в квадратных скобках указать индекс. Например, X[1], X[7]. В качестве индекса можно указать любое выражение, совпадающее с ним по типу:

i:=2;

x[i]:=12.5;

x[i*3]:=0.76;

Обработку массивов удобнее всего производить с применением циклов. Например, следующий фрагмент производит ввод элементов с клавиатуры:

for i:=1 to 20 do

read(x[i]);

В приведенном выше примере на каждом шаге цикла производится ввод элемента массива с индексом i = 1,2,…,20. Вывод элементов массива производится аналогично.

Пример использования одномерного массива

Задание. Вычислить и сохранить в массиве значения функции

на отрезке [a;b] в точках xi= a + i×h, i = 0,1,2…,n, h = (b–a)/n при a = 3.5, b = 4, n = 4. Найти наибольшее и среднее значение функции.

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

program example;

const a=3.5;

b=4;

n=4;

var x,s,max,h:real;

i:integer;

y:array[0..n] of real;

begin

h:=(b-a)/n;

{вычисление значений функции, сохранение результатов в массиве y,

вывод на экран значений функции и аргумента:}

for i:=0 to n do

begin

x:=a+i*h;

y[i]:=sin(x)/sqrt(x-2);

writeln('x=',x:5:2,' y=',y[i]:5:2);

end;

{нахождение суммы элементов и

наибольшего значения:}

s:=0;

for i:=0 to n do

begin

s:=s+y[i];

if i=0 then max:=y[i]

else if y[i]>max then max:=y[i];

end;

s:=s/(n+1); {вычисление среднего значения}

writeln('Наиб. знач.=',max:5:2,

' Среднее знач.=',s:5:2);

end.

Результаты вычислений:

x= 3.50 y=-0.29

x= 3.63 y=-0.36

x= 3.75 y=-0.43

x= 3.88 y=-0.49

x= 4.00 y=-0.54

Наиб. знач.=-0.29 Среднее знач.=-0.42

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

Выбрать алгоритм, составить блок-схему и программу для вычисления значения функции y = f(x) в точках xi= a + i×h, i = 0,1,2…,n, h = (b – a)/n промежутка [a,b]. Результаты вычислений сохранить в массиве Y. Найти наибольшее и среднее значения функции y = f(x). Вид функции, значения a, b, n указаны в каждом конкретном варианте задания.

Варианты заданий

1.

xÎ[2; 3], n = 10

2.

xÎ[1; 2], n = 10

3.

xÎ[–1; –0,5], n = 5

4.

xÎ[1,5; 2], n = 5

5.

xÎ[2; 3], n = 10

6.

xÎ[0,2; 0,8], n = 6

7.

xÎ[2; 3], n = 10

8.

xÎ[1; 2], n = 10

9.

xÎ[1; 1,8], n = 4

10.

xÎ[2,2; 2,6], n = 4

11.

xÎ[1; 2], n = 10

12.

xÎ[3,5; 4], n = 5

13.

xÎ[–2; –1], n = 10

14.

xÎ[0,5; 1,5], n = 10

15.

xÎ[0; 1], n = 10

16.

xÎ[1; 2], n = 10

17.

xÎ[3; 4], n = 10

18.

xÎ[1; 2], n = 10

19.

xÎ[0; 1], n = 10

20.

xÎ[2; 3], n = 10

21.

xÎ[1; 2], n = 10

22.

xÎ[2; 3], n = 10

23.

xÎ[1; 2], n = 10

24.

xÎ[2; 3], n = 10

25.

xÎ[3; 4], n = 10

26.

xÎ[1; 1,5], n = 5

27.

,

xÎ[1; 2], n = 10

28.

xÎ[4; 5], n = 10

29.

,

xÎ[–1; 0], n = 10

30.

xÎ[0; 1], n = 10

КОНТРОЛЬНЫЕ ВОПРОСЫ