1 |
|
1 |
|
1 |
|
1 |
+... +(−1)n |
1 |
+... |
(для x >1) |
|
arcctgx = |
|
− |
|
+ |
|
− |
|
|
|||
x |
3x3 |
5x5 |
7x7 |
(2n +1)x2n +1 |
|||||||
2. АЛГОРИТМЫ СО СТРУКТУРОЙ ВЛОЖЕННЫХ ЦИКЛОВ
Цикл, содержащий внутри себя один или несколько других циклов, называется вложенным; цикл, охватывающий другие циклы, – внешним; остальные циклы называются внутренними. Правила организации как внешнего, так и внутреннего циклов такие же, как и простого. Параметры этих циклов изменяются не одновременно, то есть при одном значении параметра внешнего цикла параметр внутреннего цикла принимает по очереди множество значений.
В качестве основы для выполнения заданий этой темы используем двумерный массив А, содержащий m строк и n столбцов. Определив номер варианта по табл. 1 в соответствии с шифром, составить на языке программирования Pascal программу решения одной из следующих задач:
0)вычислитьсуммуположительныхэлементовлюбойстрокидвумерногомассива;
1)вычислить произведение отрицательных элементов любого столбца двумерного массива;
2)вычислить сумму отрицательных элементов всех нечетных столбцов двумерного массива;
3)вычислить произведение положительных элементов всех четных строк двумерного массива;
4)вычислить сумму квадратных корней положительных элементов, стоящих выше главной диагонали квадратной матрицы;
5)вычислить среднее арифметическое положительных элементов, стоящих на главной диагонали квадратной матрицы;
6)вычислить произведение квадратов отрицательных чисел, стоящих ниже главной диагонали квадратной матрицы;
7)вычислить сумму положительных элементов, стоящих на нечетных местах четных строк двумерного массива;
6
8)вычислить произведение отрицательных элементов, стоящих на четных местах нечетных столбцов двумерного массива;
9)вычислить среднее арифметическое положительных элементов двумерного массива, попадающих в интервал (b, c).
3. ОРГАНИЗАЦИЯ ПОДПРОГРАММ
Программа, написанная на языке высокого уровня, часто состоит из основной программы и подпрограмм. Основная программа и подпрограммы представляют собой самостоятельные программные единицы, их можно разрабатывать независимо друг от друга. Подпрограммы используются для записи последовательности действий, которая неоднократно встречается в какой-нибудь одной программе или в нескольких программах. Кроме того, использование подпрограмм позволяет конструировать программу как набор отдельных блоков, сделать более логичным процесс программирования.
Вязыке Pascal различают два вида подпрограмм - процедуры и функции.
Впрограмме описание процедур и функций должно располагаться между разделом объявления переменных и разделом операторов. Каждая процедура или функция определяется только один раз, но может использоваться многократно.
Структура процедур и функций аналогична структуре полной программы на языке Pascal. В процедурах и функциях могут быть описаны собственные метки, константы, типы, переменные и даже собственные процедуры и функции. Внутренние описания должны следовать в том же порядке, что и разделы основной программы.
3.1. ПОДПРОГРАММА – ПРОЦЕДУРА (PROCEDURE)
Описание каждой процедуры начинается с заголовка, в котором задается имя процедуры и список формальных параметров с указанием их типов. С именем процедуры не связано никакое численное значение. Число выходных параметров может быть любым. С помощью параметров осуществляется передача
7
исходных данных в процедуру, а также передача результатов работы обратно в вызвавшую ее программу.
Определив номер варианта для данного задания, составить на языке Pascal программу обработки массива с использованием подпрограммы – процедуры для решения следующей задачи:
0)в массиве К из 8 целых чисел найти наибольший элемент и поменять его местами с первым элементом;
1)в массиве Z из 7 целых чисел найти наименьший элемент и поменять его местами с последним элементом;
2)в массиве R из 9 вещественных чисел найти наибольший и наименьший элементы и поменять их местами;
3)определить минимальный элемент массива S(15) и найти сумму элементов, расположенных после него;
4)определить в целочисленном массиве B(18) количество и сумму элементов, кратных 5;
5)вычислить сумму первых n положительных элементов массива T(19);
6)найти среднее арифметическое положительных чисел массива A(17);
7)заменить нулями все положительные элементы заданной строки двумерного массива A(4,6);
8)возвести в квадрат все отрицательные элементы заданного столбца двумерного массива T(3,5);
9)найти наименьший элемент матрицы С(5,4) и номера строки и столбца, определяющие местоположение этого элемента.
3.2. ПОДПРОГРАММА – ФУНКЦИЯ (FUNCTION)
Если возникает необходимость неоднократного вычисления значений функции, не входящей в список стандартных функций Pascal, то целесообразно процесс вычисления этих значений оформить в виде подпрограммы – функции.
Описание функции в основном аналогично описанию процедуры. Отличие в том, что результатом работы функции является одно значение. Среди
8
входящих в функцию операторов должен обязательно присутствовать оператор присваивания, в левой части которого стоит имя данной функции.
Номер варианта определяется формулой a+b. Задание для выполнения этого пункта в соответствии с вычисленным номером варианта выбирается из списка заданий раздела 2, в котором предполагается содержательную часть решения оформить в виде подпрограммы – функции.
ПРИМЕР ВЫПОЛНЕНИЯ КОНТРОЛЬНОЙ РАБОТЫ
Задача 1
Номер варианта определяется предпоследней цифрой шифра.
Допустим, что в соответствии с выбранным вариантом необходимо найти сумму ряда
|
x |
|
x2 |
x3 |
2n! xn |
|||
S = |
|
+ |
|
+ |
|
+... + |
|
+... |
3 |
18 |
180 |
3(2n)! |
|||||
с заданной точностью ε при значении x = 0,3.
Прямое вычисление каждого очередного слагаемого затруднительно, так как это потребует вычисления факториалов и возведения x в большую степень. Поэтому для вычисления следующего слагаемого получим рекуррентную формулу, связывающую его с предыдущим слагаемым, что позволит существенно сократить затраты времени на решение.
= 2n! x n
Общий член ряда a n ( ) . 3 2n !
Для получения рекуррентной формулы вычислим отношение следующего члена ряда к текущему:
9
a |
n +1 |
= |
2(n +1)! x n +13(2n)! |
= |
(n +1)x |
|
, |
|
|
3(2n +2)!2n! xn |
(2n +1)(2n +2) |
||||
a n |
|
|
|||||
откуда a n+1 = ( a n (n)(+1)x ). 2n +1 2n +2
При составлении программы будем считать, что точность достигнута, ес-
ли |an| < ε.
PROGRAM KR1;
CONST X=0.3;
VAR N:INTEGER; AN,SUMMA,EPS:REAL;
BEGIN
WRITELN(‘Введите требуемую точность EPS’);
READLN(EPS);
N:=1;
AN:=X/3;
SUMMA:=AN;
REPEAT
AN:=AN*(N+1)*X/((2*N+1)*(2*N+2));
SUMMA:=SUMMA+AN;
N:=N+1
UNTIL ABS(AN)<EPS;
WRITELN(‘СУММА=’,SUMMA:10:7);
WRITELN(’ПОСЛЕДНИЙ ЧЛЕН РЯДА=’,AN:10:7);
END.
Задача 2
Номер варианта определяется последней цифрой шифра.
Пусть это задание следующего вида. Составить на языке PASCAL программу вычисления суммы положительных элементов каждой строки матрицы ММ(5,10) и формирования из полученных сумм вектора VV.
10