Oparin
.pdfЛабораторная работа 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