Использование массивов в вычислениях 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Использование массивов в вычислениях



 

Сведения по обработке двумерных массивов содержаться в разделе 7.

 

Задание 1. Составьте программу решения заданий, приведенных в табл.8.1.

 

Задание 2. Составьте программу вычисления произведения матриц размером 3х3. Значения матриц приведены в табл.8.2.

 

При умножении матрицы на матрицу получается матрица. Пусть даны матрицы aij и bij. При вычислении искомой матрицы используется формула . Такую формулу следует реализовать, используя 3 вложенных цикла: по управляющим переменным i, j и k.

 

Таблица 8.1

Вариант Задание Последовательность чисел
1 Из последовательных чисел а1, а2,…,аn выбрать отрицательные элементы, подсчитать их число и переписать их подряд в массив Х. 1.2; 0, 6; -7; 3.8; -4.2; 0; 12; 15; -7; 5; 64; 200; 28; 3; -0.5; 0; 0; 17; 18; -33; 102.
2 Дан ряд чисел Ук(к=1,2,…,n). Выбрать из них положительные числа и найти среди них наибольшее. -//-
3 Из последовательных чисел а1, а2,…, аn выбрать числа, равные 0, подсчитать их число, а оставшиеся числа напечатать в одну строку. -//-
4 Дан ряд чисел Хi(i = 1,2,…n). Вычислить сумму элементов с нечетными и четными номерами. -//-
5 Дан ряд чисел Y(Y1, Y2,…Yn). Найти максимальную компоненту, напечатать ее и ее порядковый номер. -//-
6 Дан ряд чисел b1,b2,…,bn. Выбрать из них положительные числа и найти среднее арифметическое квадратов этих чисел. -//-
7 Для массивов а(а12,…аn) вычислить наибольшее и наименьшее значения модуля разности между соседними элементами. -//-
8 Из последовательности чисел Y1, Y2,…,Yn выбрать элементы, которые делятся на 3. Подсчитать их число и напечатать их порядковые номера. -//-
9 Из последовательных чисел z1, z2,…,zn выбрать положительные элементы, переписать их подряд в массив Y и найти их произведе-ние. -//-
10 Дан ряд чисел с12,…,сn. Выбрать из них положительные числа, переписать их подряд в массив Х, а отрицательные числа перепи-сать подряд в массив Y. Найти суммы массивов X и Y. -//-

 

Таблица 8.2. Список заданий

Вариант Элементы матрицы А Элементы матрицы В
1
2
3
4
5
6
7
8
9
10

 

 

ФУНКЦИИ И ПОДПРОГРАММЫ ПОЛЬЗОВАТЕЛЯ

 

Функции пользователя

 

Помимо стандартных функций (см. табл. 3.1) в программе пользователь может определить и далее использовать другие (нестандартные) функции. Для определения функции пользователем используется оператор DEF FN. Его синтаксическая структура:

 

DEF FNv[тип](X1, X2, …) = E,

 

где DEF(от DEFINE) - определить; FN(от FUNCTION) – фукция; v – имя функции, которое, вместе с FN и символами %, $ и др., не должно превышать 40; квадратные скобки указывают на возможность выбора типа функции; X1, X2 – простые переменные – формальные аргументы функции; E – арифметическое выражение, по которому вычисляется функция.

Арифметическое выражение в правой части может содержать (но не обязательно) формальные аргументы X1, X2,… другие переменные, общие для всей программы, а также любую комбинацию формальных аргументов в других переменных программы. Оператор DEF FN является описательным и относится к невыполняемым операторам и должен располагаться в программе до первого использования определяемой им функции, целесообразнее в начале программы.

 

Пример: DEF FNY(X, Y) = A * X ^ 2 + Y ^ 3

 

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

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

 

Пример: Вычислить FNY: а) при переменных А и В; б) возвести в 3 степень при X=1, Y=0.

 

нс Y1 = FNY(A, B)

…       

Y2 = FNY(1, 0) ^ 3

 

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

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

Сложное выражение можно разбить на несколько простых, каждое из которых определяется самостоятельной функцией пользователя.

   

 

Подпрограммы пользователя

 

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

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

Здесь будут рассматриваться внутренние подпрограммы.

Для подпрограмм характерными являются описание и обращение.

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

 

нс RETURN, где

 

Return – ключевое слово “вернуться”.

Структура описания подпрограммы:

 

нс <комментарий>

… операторы

… подпрограммы

RETURN,

 

Количество операторов RETURN может быть любым.

В QB и TB можно использовать номер строки или метку.

Обращение к подпрограмме осуществляется в основной программе по формату:

GOSUB нс (или метки),

 

где GOSUB – ключевое слово “идти к”; номер строки или метка указывают, к какой подпрограмме обращается основная программа. Для подпрограмм желательно использовать большие номера, например, начиная с 1000. Подпрограммы располагаются в конце основной программы и должны обязательно отделяться от основной программы оператором STOP для GB, или оператором END для QB и TB.

Правило выполнения подпрограммы:

Когда в основной программе встречается обращение, основная программа передаёт управление подпрограмме. После выполнения подпрограммы управление передаётся снова в основную программу к оператору, следующему за GOSUB, а обращение замещается вычисленным значением или остаётся в подпрограмме, так как область памяти для основной программы и подпрограмм одна и та же, а поэтому все вычисленные в подпрограмме значения доступны для основной программы. Однако при повторном обращении к той же подпрограмме вычисленные значения потеряются. В таком случае после 1-го обращения к подпрограмме вычисленные значения должны сохраняться в основной программе, присвоив их каким-либо переменным.

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

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

 

 

Задание 1.

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

 

Задание 2.

Составьте программу вычисления этого же выражения с использованием подпрограммы.

 

 

Таблица 9.1. Список заданий

Вариант Вычислить Данные
1
2
3
4
5
6
7
8
9
10

 

 



Поделиться:


Последнее изменение этой страницы: 2020-12-09; просмотров: 59; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.16.69.143 (0.014 с.)