Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Oparin

.pdf
Скачиваний:
9
Добавлен:
23.02.2015
Размер:
433.77 Кб
Скачать

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

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

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

Задание для самостоятельной подготовки

1.Изучить:

назначение формальных и фактических параметров подпрограммы, механизм замены формальных параметров на фактические;

способы передачи параметров в подпрограмму;

порядок выполнения программ, содержащих подпрограммыпроцедуры.

2.Разработать алгоритм решения в соответствии с заданием.

3.Составить программу решения задачи.

4.Подготовить тестовый вариант исходных данных для проверки правильности работы программы.

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

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

21

Таблица 5

Варианты заданий к лабораторной работе 7

Задание

Найти минимальные элементы матриц A(n1, m1) и B(n2, m2) и их ин-

1.

дексы (n1, m1 – размеры матрицы A, n2, m2 – размеры матрицы B). Нахождение минимального элемента матрицы и его индексов оформить в виде подпрограммы-процедуры.

Найти максимальные элементы массивов X(n1), Y(n2), Z(n3) и их порядковые номера (n1 – размер массива X, n2 – размер массива Y, n3

2.размер массива Z). Нахождение максимального элемента одномерного массива и его порядкового номера оформить в виде подпрограм- мы-процедуры.

Вычислить и запомнить в одномерных массивах Sc(m1) и Sd(m2), соответственно, средние арифметические отрицательных элементов каждого столбца матриц C(n1, m1) и D(n2, m2) (n1, m1 – размеры матри-

3.цы C, n2, m2 – размеры матрицы D). Вычисление и запоминание в одномерном массиве средних арифметических отрицательных элементов каждого столбца матрицы оформить в виде подпрограммыпроцедуры.

Вычислить z =(ln(s1) +ln(s2 )) /(k1 k2 ) , где s1 и k1 – сумма и количество положительных элементов массива V(n1); s2 и k2 – сумма и количество

положительных элементов массива W(n2) (n1 – размер массива V, n2

4.

размер массива W). Нахождение суммы и количества положительных элементов одномерного массива оформить в виде подпрограммыпроцедуры.

22

Продолжение табл. 5

Задание

Записать в массивы Ke(n1×m1) и Kf(n2×m2), соответственно, элементы

целочисленных матриц E(n1, m1) и F(n2, m2), кратные трём (n1, m1

5.размеры матрицы E, n2, m2 – размеры матрицы F). Запись в одномерный массив элементов целочисленной матрицы, кратных трём, оформить в виде подпрограммы-процедуры.

Вычислить средние арифметические отрицательных элементов массивов X(n1), Y(n2) и Z(n3) (n1 – размер массива X, n2 – размер массива

6.Y, n3 – размер массива Z). Вычисление среднего арифметического отрицательных элементов одномерного массива оформить в виде под- программы-процедуры.

Вычислить и запомнить в одномерных массивах Sg(n1), Kg(n1) и Sh(n2), Kh(n2), соответственно, суммы и количества положительных элементов каждой строки матриц G(n1, m1) и H(n2, m2) (n1, m1 – разме-

7.ры матрицы G, n2, m2 – размеры матрицы H). Вычисление и запоминание в одномерных массивах сумм и количеств положительных элементов каждой строки матрицы оформить в виде подпрограммыпроцедуры.

Вычислить средние арифметические максимального и минимального элементов массивов U(n1), V(n2) и W(n3) (n1 – размер массива U, n2

8.размер массива V, n3 – размер массива W). Вычисление среднего арифметического максимального и минимального элементов одномерного массива оформить в виде подпрограммы-процедуры.

23

Продолжение табл. 5

Задание

Найти максимальные элементы матриц A(n1, m1) и B(n2, m2) и их ин-

9.

дексы (n1, m1 – размеры матрицы A, n2, m2 – размеры матрицы B). Нахождение максимального элемента матрицы и его индексов оформить в виде подпрограммы-процедуры.

Найти минимальные элементы массивов X(n1), Y(n2), Z(n3) и их порядковые номера (n1 – размер массива X, n2 – размер массива Y, n3

10.размер массива Z). Нахождение минимального элемента одномерного массива и его порядкового номера оформить в виде подпрограммыпроцедуры.

Вычислить и запомнить в одномерных массивах Sc(n1) и Sd(n2), соответственно, средние геометрические положительных элементов каждой строки матриц C(n1, m1) и D(n2, m2) (n1, m1 – размеры матрицы C,

11.

n2, m2 – размеры матрицы D, считать, что в каждой строке матриц C и D положительные элементы есть). Вычисление и запоминание в одномерном массиве средних геометрических положительных элементов каждой строки матрицы оформить в виде подпрограммыпроцедуры.

Вычислить z =(es1 +es2 ) /(k1 k2 ) , где s1 и k1 – сумма и количество от-

рицательных элементов массива V(n1); s2 и k2 – сумма и количество

12.отрицательных элементов массива W(n2) (n1 – размер массива V, n2 – размер массива W). Нахождение суммы и количества отрицательных

элементов одномерного массива оформить в виде подпрограммыпроцедуры.

24

Окончание табл. 5

Задание

Вычислить произведения и количества положительных элементов, находящихся на главных диагоналях квадратных матриц E(n1, n1) и

F(n2, n2) (n1 – размер квадратной матрицы E, n2 – размер квадратной

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

Вычислить средние геометрические положительных элементов массивов X(n1), Y(n2) и Z(n3) (n1 – размер массива X, n2 – размер массива

Y, n3 – размер массива Z, считать, что в массивах X, Y и Z положи-

14.

тельные элементы есть). Вычисление среднего геометрического положительных элементов одномерного массива оформить в виде под- программы-процедуры.

Вычислить и запомнить в одномерных массивах Sg(m1), Kg(m1) и Sh(m2), Kh(m2), соответственно, суммы и количества отрицательных элементов каждого столбца матриц G(n1, m1) и H(n2, m2) (n1, m1 – раз-

15.меры матрицы G, n2, m2 – размеры матрицы H). Вычисление и запоминание в одномерных массивах сумм и количеств отрицательных элементов каждого столбца матрицы оформить в виде подпрограм- мы-процедуры.

Переписать подряд отрицательные элементы массивов U(n1) и V(n2) в

16.

массив W(n1+n2) (n1 – размер массива U, n2 – размер массива V). Запись отрицательных элементов одного одномерного массива в другой массив оформить в виде подпрограммы-процедуры.

25

Библиографический список

1.Бобровский, С.И. Программирование на языке QBasic для школьников и студентов / С.И. Бобровский. – М. : Десс Ком ; Инфорком-Пресс, 2000. – 208 с.

2.Быля, Т.Р. Изучаем информатику, программируя на Бэйсике / Т.Р. Быля, О.И. Быля. – М. : Айрис ; Рольф, 1996. – 160 с.

3.Вычислительная техника и программирование : учеб. / А.В. Пет-

ров [и др.] ; под ред. А.В. Петрова. – М. : Высшая школа, 1990. – 479 с.

4.Вычислительная техника и программирование. Практикум по программированию : практ. пособие / В.Е. Алексеев [и др.] ; под ред. А.В. Петрова. – М. : Высшая школа, 1991. – 400 с.

5.Денисов, В.П. Microsoft Visual Basic : метод. указ. / В.П. Денисов. –

Екатеринбург : Изд-во УГТУ, 1997. – Ч. 1. Ядро языка: QBasic – 44 с.

6.Опарин, Д.В. Алгоритмизация и программирование на языке высокого уровня QBasic : конспект лекций [Электронный ресурс] / Д.В. Опарин ; Уральский государственный технический университет – УПИ. – Екатеринбург, 2009. – Режим доступа: http://study.ustu.ru/view/aid_view.aspx?AidId=9085.

7.Сафронов, И.К. Бейсик в задачах и примерах / И.К. Сафронов. – СПб. : БХВ-Петербург, 2000. – 216 с.

26

Приложение

Примеры программ на языке QBasic (файлы prim0001.bas – prim0012.bas).

'prim0001.bas

'Оператор присваивания

'Идентификатор_переменной = Выражение

i = 2 m = 3

CLS ' Очистка экрана

'Оператор вывода

'PRINT [Список_вывода]

'Список_вывода - записанная через "," или ";"

'последовательность арифметических или

'символьных выражений

PRINT i * m

'Для запуска программы

'нажать комбинацию клавиш Shift+F5 END

Рис. 1. Первая программа (файл prim0001.bas)

'prim0002.bas i = 2

m = 3

CLS ' Очистка экрана

'Оформление дружественного интерфейса

PRINT i; "умножить на"; m; "равно"; i * m

'Для запуска программы

'нажать комбинацию клавиш Shift+F5 END

Рис. 2. Улучшенный вариант вывода (файл prim0002.bas)

27

'prim0003.bas

'Демонстрация работы USING CONST pi = 3.1415926#

CONST word = "это строка символов" CLS ' Очистка экрана

PRINT pi;

PRINT TAB(40); "pi"

PRINT USING "#.##"; pi;

PRINT TAB(40); "USING '#.##'; pi"

PRINT USING "#.##"; -pi;

PRINT TAB(40); "USING '#.##'; -pi" PRINT USING "#.##^^^^"; pi;

PRINT TAB(40); "USING '#.##^^^^'; pi" PRINT USING "##.##"; pi;

PRINT TAB(40); "USING '##.##'; pi" PRINT USING "**##.##"; pi;

PRINT TAB(40); "USING '**##.##'; pi" PRINT USING "число pi=##.##"; pi;

PRINT TAB(40); "USING 'число pi=##.##'; pi" PRINT USING "##.##-"; -pi;

PRINT TAB(40); "USING '##.##-'; -pi" PRINT USING "$$##.##"; pi;

PRINT TAB(40); "USING '$$##.##'; pi" PRINT USING "**$##.##"; pi;

PRINT TAB(40); "USING '**$##.##'; pi" PRINT USING "**$##.##^^^^-"; pi;

PRINT TAB(40); "USING '**$##.##^^^^-'; pi" PRINT USING "&**$##.##"; word;

PRINT TAB(40); "USING '&**$##.##'; word" PRINT USING "&**$##.##"; word; pi;

PRINT TAB(40); "USING '&**$##.##'; word; pi" PRINT USING "&"; word + word;

PRINT TAB(40); "USING '&'; word + word"

PRINT USING "\ \"; word;

28

PRINT TAB(40);

"USING

'\

\'; word"

PRINT USING

"!"; word

+ word;

 

PRINT TAB(40);

"USING '!';

word

+ word"

PRINT USING

"-&**$##.##"; word;

pi;

PRINT TAB(40); "USING '-&**$##.##'; word; pi" END

Рис. 3. Использование форматного вывода (файл prim0003.bas)

'prim0004.bas k = 2

m = 3 eps = .1

CLS ' Очистка экрана

'Организация цикла для вычисления нескольких

'значений при изменении i от k до m с шагом eps FOR i = k TO m STEP eps

PRINT i; "умножить на"; m; "="; i * m NEXT i

'Для запуска программы

'нажать комбинацию клавиш Shift+F5

'Изменить значения в операторах присваивания

'и снова запустить программу

END

Рис. 4. Первая программа с циклом (файл prim0004.bas)

'prim0005.bas

'Оператор интерактивного ввода

'INPUT Список_ввода

'INPUT ["Подсказка" {; | ,}] Список_ввода

CLS ' Очистка экрана

INPUT "Введите начальное число:"; k

INPUT "Введите конечное число:"; m

29

INPUT "Введите шаг:"; eps

'Организация цикла для вычисления нескольких

'значений при изменении i от k до m с шагом eps FOR i = k TO m STEP eps

PRINT i; "умножить на"; m; "="; i * m NEXT i

'Для запуска программы

'нажать комбинацию клавиш Shift+F5

'Изменить значения в операторах присваивания

'и снова запустить программу

END

Рис. 5. Интерактивный ввод данных (файл prim0005.bas)

DECLARE SUB frame (n!)

'prim0006.bas

'Таблица умножения

'Имеется подпрограмма с именем frame,

'которой необходимо передать число

'Для её просмотра нажать клавишу F2

'и затем среди подпрограмм SUBs выбрать

'подпрограмму с именем frame

p = 12 ' Размер таблицы

CLS ' Очистка экрана

' Заголовок таблицы

PRINT TAB(20); "Таблица умножения"

CALL frame(p * 4 + 4)

PRINT TAB(4);

FOR i = 1 TO p

' Вывод числа в четыре позиции

PRINT USING "####"; i;

NEXT i: PRINT

CALL frame(p * 4 + 4)

FOR i = 1 TO p

30

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]