i, n: integer; {i - пеpеменная цикла}
Begin
writeln ('введите число точек N');
read(n);
dx: = abs(b-a)/(n-1);
x:=a;
writeln (' _____________________________');
writeln ('| I | X | F1 | F2 |');
writeln ('|---|---|-|-|');
for i:=1 to n do {опеpатоp цикла}
begin
F2:=sin(x);
F1:=F2/cos(x); {вычисление: tg x}
writeln('|', i:3,' |', x:8:3,'|', f1:8:4,' |', f2:8:4,' |');
x:=x+dx;
end;
writeln('|________________________|);
End.
Задание 2 (программа 3_2)
Вычислить значения двух функций в n равномерно распределенных в диапазо-
не а≤x≤b точках. Результаты оформить в виде таблицы.
№ п/п | a | b | n | F1(х) | F2(х) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 0 1 -1 -2 0 - -1 -4 1 1 0 - 0 1 2 | 2 2 5 5
3 4 3 4 2
2 4 | 20 18 15 14 16 20 20 12 15 20 20 18 16 12 10 | sinx·cosx 1+2x+5 4e-|x|-1 | x+10|5 2·sin2x +1 2-cos x 2-x/100 x3e2x
1/(1+ 5-3 cos x |sinx|+|cosx| e-x+cos2x e-x lg x cos x/2 | sin x + cos x -1 (x-1)3 cos x e-(x+5) (x+5)3(1+sin2x) 20/(1+x2) ex sin x x ln2 x 2x/(1-4x)
|sin x| - |cos x| e -2x x + sin x
|
Лабораторная работа 4
Программирование циклических алгоритмов с предусловием
Цель работы: научиться разрабатывать и отлаживать программы с неразветвленными и разветвленными циклами, управляемыми условиями.
Структура оператора цикла с предусловием (с предварительной проверкой условия):
WHILE <условие_выполнения> DO <оператор>;
пока делать
где <условие> - это любое логическое выражение, <оператор> - это произвольный оператор Турбо Паскаля, в том числе и составной.
Пример. Для трех значений а = 0.1, 0.2,0.3 протабулировать функцию y=a. tg(x/4) при изменении аргумента x на интервале [0.5,0.9] с шагом, равным a.
Program a4_1;
var
a, x,y:real;
begin
writeln('---');
writeln(' a | x | y |');
writeln('---');
a:=0.1;
while a<=0.31 do
begin
writeln(a:5:2);
x:=0.5;
while x<=0.91 do
begin
y:=a*sin(x/4)/cos(x/4);
writeln(x:12:2,' | ', y:10:2);
x:=x+a;
end;
writeln('---');
a:=a+0.1
end;
end.
Задание 2 (программа 4_2)
Модифицировать (изменить) программу 3_2 для вычисления функций F1(x) и F2(x) с применением вместо счетного цикла оператора цикла с предусловием. Выполнить ее и сравнить результаты с полученными в предыдущей работе.
Лабораторная работа 5
Программирование циклических алгоритмов с постусловием
Стpуктуpа оператора цикла с постусловием
REPEAT <оператор 1>;
(повторять)
<оператор 2>;
...
<оператор N>
UNTIL <условие окончания цикла>;
(до тех поp, пока)
Пример. Вычислить 15 значений функций y1(x) = tg(x) ; и y2(x) = ctg(x) при a ≤ x ≤ b,
a=0.6*Pi, b=0.7*Pi.
Для вычислений разработана следующая программа:
Program Lab5;
Const n = 14;
a = 0.6*Pi;
b = 0.7*Pi;
Var x, y1, y2, dx: real;
Begin
dx:=abs((a-b)/n);
x:=a;
Repeat
y1:=sin(x)/cos(x);
y2:=1/y1;
writeln('x=', x:6:4,' y1= ', y1:7:4,' y2=', y2:7:4);
x:=x+dx
Until x>b;
End.
Пример 2. Вычислить сумму элементов s = 1+1/4+1/9+1/16+... c точностью до
E = 0.00001
PROGRAM sum;
CONST
E=0.00001; {точность}
VAR
s, r: REAL; {s - сумма, r – слагаемое}
i:INTEGER; {i - счетчик слагаемых}
BEGIN
s:=0;
i:=1;
REPEAT
r:=1/sqr(i); {вычисление слагаемого}
s:=s+r;
i:=i+1 {счет слагаемых}
UNTIL r<E; {сравнение слагаемого с Е}
WRITELN ('Сумма=',s:9:5); {вывод суммы}
END.
Задание 1 (программа 5_1)
Модифицировать программу 3_2 для вычисления функций F1(x) и F2 (x) с применением оператора цикла с постусловием. Выполнить ее и сравнить результа-ты с полученными ранее.
Лабораторная работа 6
Программирование алгоритмов обработки одномерных массивов
Цель работы: научиться разрабатывать и отлаживать программы с использованием регулярных типов (векторов).
Массив - упорядоченная структура однотипных данных, хранящихся последовательно.
Массив обязательно имеет размеры, определяющие, сколько в нем хранится элементов. Описывается в разделе TYPE (или VAR). Структура описания одномерного массива:
<имя>=ARRAY[диапазон_индексов] OF <базовый_тип>;
Диапазон указывает значения индексов первого и последнего элементов в массиве.
Пример. Найти значение и номер наименьшего элемента в одномерном массиве. При задании элементов исходного массива типизированной константой используется следующая программа:
Program lr6_1;
const a: array[1..10] of integer=(5,2,7,1,8,3,4,5,6,6);
var i, min, n: integer;
begin
min:=a[1]; n:=1;
for i:=2 to 10 do
if a[i]<min then begin
min:=a[i];
n:=i;
end;
writeln('минимальный элемент равен ',min, ' n=',n);
end.
Если элементы массива вводятся с клавиатуры, то текст программы изменится:
program lr6_2;
var a: array[1..10] of integer;
i, min, n: integer;
begin
read(a[1]);
min:=a[1]; n:=1;
for i:=2 to 10 do begin
read(a[i]);
if a[i]<min then begin
min:=a[i]; n:=i;
end;
end;
writeln('минимальный элемент равен ', min, ' n=',n);
end.
Задание 1
Написать и отладить программу для одной из следующих задач.
1. Дан массив из N чисел (8<N<12). Вычислить их среднее геометрическое значение.
2. Дан массив из N чисел (10<N<15). Найти максимальное значение.
3. Дано 20 чисел. Найти их среднее арифметические значение.
4. Дана последовательность из 15 целых чисел. Определить количество отрицательных чисел в ней.
5. Дано 15 целых чисел. Найти минимальное из них.
6. Дан массив из N чисел (8<N<12). Вычислить сумму элементов с нечетными индексами.
7. Дано 10 вещественных чисел. Вычислить разность между максимальным и минимальным из них.
8. Дан целый массив из 10 чисел. Найти максимальный отрицательный элемент.
9. Задан массив из восьми вещественных чисел. Определить количество положительных чисел.
10. Дан массив из 10 целых чисел. Найти сумму четных элементов этого массива.
11. Дан массив из 12 вещественных чисел. Найти сумму тех элементов этого массива, индексы которых чётные.
12. Дано 10 целых чисел. Найти произведение отрицательных чисел.
13. Дан целый массив [i1, i2, …, i10]. Найти максимальный отрицательный элемент и его индекс.
14. Найти сумму положительных элементов вещественного вектора X из 15 элементов.
15. Найти сумму элементов одномерного массива B размером 10. Разделить каждый элемент исходного массива на полученное значение.
Лабораторная работа 7
Программирование алгоритмов обработки двумерных массивов
Цель работы: научиться разрабатывать и отлаживать программы с использованием матриц.
Описание двумерного массива (матрицы):
TYPE
<имя>= ARRAY[диап1,диап2] OF <базовый_тип>;
где [диап] - диапазон для одного индекса.
Пример. Вычислить суммы элементов в столбцах двумерного числового массива
А размером [1..3,1..4].
Текст программы:
Program lr7_1;
CONST a: array[1..3,1..4] of integer = ((1,2,3,4),(1,2,3,4),(1,2,3,4));
VAR
s: array[1..4] of integer; {массив сумм}
i, j: integer;
BEGIN
for j:=1 to 4 do
begin
s[j]:=0;
for i:=1 to 3 do
s[j]:=s[j]+a[i, j];
write(' s[',j,']=',s[j])
end;
END.
Задание 1 (программа 7_1)
1. Даны матрицы A, B: array [1..4,1..4] of real. Вычислить матрицу С поэлементным сложением соответствующих элементов матриц А и В.
2. Дана матрица B: array [1..5,1..5] of integer. Элементы главной диагонали этой матрицы заменить на 0.
3. Даны матрица A: array [1..4,1..4] of real и константа К. Вычислить матрицу С=А*К.
4. Дана матрица A: array [1..6,1..6] of integer и переменная Х. Нечётные элементы матрицы А заменить на Х.
5. Дана двумерная матрица D(5;6) вещественных чисел. Найти сумму тех элементов матрицы, индексы которых чётные.
6. Дана двумерная матрица J(5;7) целых чисел. Найти произведение чётных элементов этой матрицы.
7. Дана двумерная матрица J(5;7) вещественных чисел. Найти сумму отрицательных элементов этой матрицы.
8. Дана квадратная матрица J(6;6) натуральных чисел. Найти произведение элементов главной диагонали этой матрицы.
9. Дана двумерная матрица K(6;7) целых чисел. Найти сумму элементов пятой строки этой матрицы.
10. Даны матрицы A, B: array [1..5,1..5] of real. Вычислить матрицу С согласно выражению С=А +1.5·В.
11. Дана матрица А(6,6). Определить максимальный элемент матрицы и номер строки и столбца этого элемента.
12. Дана квадратная матрица D(6;6) натуральных чисел. Найти сумму элементов главной диагонали этой матрицы.
13. Дана квадратная матрица M(8;8) вещественных чисел и переменная K. Элементы матрицы, расположенные выше главной диагонали, заменить на x.
14. Дана двумерная матрица T(4;5) целых чисел. Найти среднее арифметическое элементов этой матрицы.
15. Дан двумерный массив D(4;5) целых чисел. Найти сумму тех элементов массива, которые делятся на 6 и не делятся на 7.
Порядок выполнения лабораторных работ
1. Изучить теоретические сведения по теме.
2. Подготовить текст программы и набрать его в окне редактора ТП.
3. Откомпилировать программу (F9) и исправить синтаксические ошибки (прил. 3)
4. Выполнить программу для реальных исходных данных (Ctrl+F9).
5. Просмотреть результаты (Alt+F5) и записать в тетрадь.
Приложение 3
Сообщение об ошибках
Сообщения об ошибках периода компиляции
1. Out of memory (Выход за границы памяти). Компилятору не хватает памяти. Для устранения ошибки рекомендуется удалить из памяти ранее загруженные, но не используемые в данный момент программы, или указать,
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 |


