Пример программы с использованием подпрограмм
Задача.
Задан двумерный массив целых чисел. Определить количество четных чисел в массиве.
Составим: процедуру ввода элементов массива;
функцию подсчета количества четных чисел;
процедуру вывода двумерного массива в виде матрицы.
- Таблица идентификаторов
№ | Наименование переменной | Обозначения в программе |
Имя массива | a | |
Количество строк | n | |
Количество столбцов | m | |
Индексы массива | I,j |
- Листинг программы.
program pp_1;
type
mas=array[1..10,1..10] of integer;
var
a:mas; n,m,i,j:integer ;
{ Процедура ввода массива }
procedure input_mas(n,m:integer; var a:mas);
begin
for i:=1 to n do
for j:=1 to n do readln(a[i,j]);
end;
{Функция подсчета количества нечетных чисел}
function kol( n,m:integer; a:mas ):integer;
var
k:integer ;
begin
kol:=0;
for i:=1 to n do
for j:=1 to n do
if not odd( a[ i,j ] ) then k:=k+1;
kol:=k;
end;
{Процедура вывода матрицы}
procedure print_mas(n,m:integer; a:mas);
begin
for i:=1 to n do
begin
for j:=1 to n do write( a[i,j],‘ ‘);
writeln;
end;
end;
{ Исполнительная часть основной программы }
begin
writeln(‘Введите n<=10 , m<=10’);
readln (n,m);
writeln(‘Введите элементы массива по строкам’);
input_mas(n,m,a);
writeln(‘Исходная матрица’);
print_mas(n,m,a);
writeln(‘Количество нечетных чисел =’,kol(n,m,a));
readln;
end.
Вопросы для самоконтроля
- В каких случаях прибегают к построению подпрограмм?
- В каком месте программы располагаются функции или процедуры?
- Что такое процедура?
- Какова структура процедуры?
- Как передается информация в процедуру?
- Каким образом возвращаются результаты работы процедуры в основную программу?
- Какое соответствие должно быть между формальными и фактическими параметрами?
- Какие переменные называются глобальными? Время существования глобальных переменных?
- Какие переменные называются локальными? Время существования локальных переменных?
- Когда используют директиву forward?
- В каких случаях целесообразно прибегать к построению функций?
- Как передается информация в функцию?
- Каким образом возвращается результат работы функции в основную программу?
Методические указания для выполнения практического задания №9. «Подпрограммы»
Цель работы: Ознакомиться со структурой программы, содержащей процедуру или функцию, использовать глобальные и локальные переменные, применять формальные и фактические параметры.
Задание:
1. В приложении 10 выбрать свой вариант задания.
2. Выполнить практическое задание №9, используя пример программы с использованием подпрограмм
3. Составить блок-схему алгоритма.
4. Написать программу и отладить ее по заранее подготовленному тесту.
5. Оформить задание в тетради для практических работ.
6. Результат выполнения программы предъявить преподавателю.
7. Ответить на вопросы самоконтроля.
8. Защитить выполненную работу у преподавателя.
Приложение 10. Таблица вариантов заданий
Составить программу с использованием процедуры и функции | |
Вариант | Задание |
В данной действительной матрице размером n*m поменять местами строку, содержащую элемент с наибольшим значением, со строкой, содержащей элемент с наименьшим значением. Предполагается, что эти элементы единственны. | |
Дана действительная матрица размером n*m, все элементы которой различны. В каждой строке выбирается элемент с наибольшим значением, затем среди этих чисел выбирается наибольшее. Указать индексы элемента с найденным значением. | |
Дана целочисленная матрица размером n*m. Написать программу, формирующую двумерный массив по следующему правилу: элементы первой строки – в порядке возрастания индексов столбцов, элементы второй строки – в порядке убывания индексов столбцов и т. д. | |
Дана действительная матрица размером n*m. Найти среднее арифметическое каждого из столбцов, имеющих четные номера. | |
Дана действительная матрица размером n*m. Все элементы с наибольшим значением заменить нулями (таких элементов может быть несколько). | |
Дана целочисленная матрица размером n*m. Написать программу, позволяющую находить сумму наибольших значений элементов ее строк. | |
Дана целочисленная квадратная матрица размером n*m. Написать программу, формирующую два одномерных массива. В один переслать по строкам верхний треугольник матрицы, включая элементы главной диагонали, в другой – нижний треугольник. Полученные массивы распечатать. | |
Дана целочисленная квадратная матрица размером n*m. Написать программу, позволяющую исключать из нее столбец, в котором расположен минимальный элемент главной диагонали. | |
Дана целочисленная квадратная матрица размером n*m. Написать программу, позволяющую поменять местами элементы, расположенные в верхней и нижней четвертях, ограниченные главной и побочной диагоналями (за исключением элементов, расположенных на диагоналях). | |
Задана действительная матрица размером n*m. Написать программу, позволяющую заменить все элементы, наименьшие в строке, на нули. | |
Задана целочисленная матрица размером n*m. Написать программу, позволяющую находить строки с наименьшей и наибольшей суммой и выводить их на печать. | |
Задана целочисленная квадратная матрица размером n*n. Написать программу, преобразующую исходную матрицу по правилу: начетные столбцы разделить на среднее значение диагональных элементов матрицы, а четные оставить без изменения. | |
Задана действительная квадратная матрица размером n*n. Вычислить сумму тех из ее элементов, расположенных на главной диагонали и выше ее, которые превосходят по величине все элементы, расположенные ниже главной диагонали. Если таких элементов нет, то ответом должно служить сообщение об этом. | |
Задана целочисленная квадратная матрица размером n*n (n - четное). Написать программу, позволяющую менять местами элементы первой и второй строк, элементы третьей и четвертой строк и т. д. | |
Даны две действительные квадратные матрицы размером n*n. Получить новую матрицу, прибавлением к элементам каждого столбца первой матрицы, произведения элементов соответствующих строк второй матрицы. | |
Даны две действительные квадратные матрицы размером n*n. Получить новую матрицу умножением элементов каждой строки первой матрицы на наибольшее из значений элементов соответствующей строки второй матрицы. | |
Дана целочисленная квадратная матрица размером n*n. Найти номера строк, все элементы которых – нули. | |
Задан массив из целых чисел размером n и число L. Написать программу, формирующую из него матрицу, содержащую по L элементов в строке. Недостающие элементы заполнить нулями. | |
Дана целочисленная матрица размером n*m (m - четное). Написать программу, позволяющую менять местами элементы первого и последнего столбцов, элементы второго и (n-1)-го столбцов и т. д. до среднего столбца (n - нечетно) | |
Дана действительная квадратная матрица размером n*n (n - четное), все элементы которой различны. Найти наибольший элемент среди стоящих на главной и побочной диагоналях и поменять его местами с элементом, стоящим на пересечении с этими диагоналями. | |
Дана целочисленная матрица размером n*m. Найти максимальный по модулю элемент среди отрицательных элементов нечетных столбцов. | |
Дана целочисленная матрица размером n*m и число K. Написать программу, переставляющую строки и столбцы таким образом, чтобы максимальный по модулю элемент был расположен на пересечении K–ой строки и K–го столбца. | |
Дана действительная матрица размером n*m. Все элементы с наибольшим значением заменить нулями (таких элементов может быть несколько). | |
Дана целочисленная матрица размером n*m. Написать программу, формирующую двумерный массив по следующему правилу: элементы первой строки – в порядке возрастания индексов столбцов, элементы второй строки – в порядке убывания индексов столбцов и т. д. | |
Дана целочисленная квадратная матрица размером n*n. Написать программу, позволяющую исключать из нее столбец, в котором расположен минимальный элемент главной диагонали. | |
В данной действительной матрице размером n*m обнулить все отрицательные элементы. Подсчитать, количество обнуленных элементов. | |
Дана целочисленная квадратная матрица размером n*n. Найти номера строк, все элементы которых отрицательны. | |
Задана целочисленная квадратная матрица размером n*n (n - четное). Написать программу, позволяющую менять местами элементы первой и последней строк, второй и предпоследней строк и т. д. | |
Задана целочисленная матрица размером n*m. Написать программу, позволяющую находить строки с наименьшим и наибольшим произведением элементов. Вывести на печать номера этих строк. | |
Даны две действительные квадратные матрицы размером n*n. Получить новую матрицу умножением элементов каждой строки первой матрицы на наименьшее из значений элементов соответствующей строки второй матрицы. |
Дата добавления: 2015-05-21; просмотров: 1240;