МЕТОДИЧЕСКИЕ УКАЗАНИЯ
К лабораторным работам
по курсу
«ИНФОРМАТИКА»
Часть II
Лабораторная работа № 2
Обработка массивов различной размерности
Алгоритм и его программная реализация тесно взаимосвязаны.
· Программа – упорядоченная последовательность инструкций компьютера (команд) для решения задачи.
· Программное обеспечение – совокупность программ обработки данных и необходимых для их эксплуатации документов.
· Программирование – теоретическая и практическая деятельность, связанная с созданием программ.
Программирование является собирательным понятием и может рассматриваться и как наука, и как искусство; на этом основан научно-практический подход к разработке программ.
Программа – результат интеллектуального труда, для которого характерно творчество, поэтому в любой программе присутствует индивидуальность ее разработчика, программа отражает определенную степень искусства программиста. Вместе с тем программирование предполагает и рутинные работы, которые могут и должны иметь строгий регламент выполнения и соответствовать стандартам.
Структура программы на языке Паскаль
Program <имя программы>;
uses <имена модулей>; {Раздел использования модулей}
type <имя типа> = <определение типа>; {Раздел описания собственных типов}
var <переменная>: <имя типа>; {Раздел описания переменных}
{Раздел описания подпрограмм - процедур и функций}
рrocedure <имя процедуры [(список параметров)]>;
var <список переменных процедуры>;
Begin
{Тело процедуры}
end;
function <имя функции [(список параметров)]>: <тип результата>;
var <список переменных процедуры>;
Begin
{Тело функции}
end;
Begin {Основная программа}
{Тело программы}
End.
Одномерный массив (вектор) |
Описание Задается целочисленный массив длиной не более 10 (nmax). В программе в качестве фактической длины массива используется переменная n. const nmax=10; type vector = array [1..nmax] of integer; var A:vector; i:integer; {индекс элементов массива} n:integer; {фактическое количество элементов массива} |
Ввод writeln (’Введите количество элементов массива’); readln (n); writeln (’Введите элементы массива’); for i:=1 to n do readln(A[i]); |
Вывод 1 способ: Каждый элемент массива выводится в отдельной строке. writeln (’Результирующий массив:’); for i:=1 to n do writeln(A[i]); 2 способ: Каждый элемент целочисленного (integer) массива выводится через 5 позиций курсора на экране. writeln (’Результирующий массив:’); for i:=1 to n do write(A[i]:5); 3 способ: Каждый элемент вещественного (real) массива выводится на 8 позициях с 2знаками после запятой. writeln (’Результирующий массив:’); for i:=1 to n do writeln(A[i]:8:2); |
Двумерный массив (матрица) |
Описание 1 способ. Задается целочисленная матрица размером не более 10 х 10 элементов (nmax х nmax). В программе в качестве фактических размеров матрицы используются переменные n (количество строк) и m (количество столбцов). const nmax=10; var A: array [1..nmax, 1..nmax] of integer; i,j:integer; {индексы элементов массива} n,m:integer;{фактическое количество строк и столбцов матрицы} 2 способ. Матрица описывается как массив массивов type mas=array[1..20] of integer; matr=array[1..10] of mas; |
Ввод 1 способ (для задач): Каждый элемент матрицы вводится в отдельной строке. writeln (’Введите количество строк матрицы’); readln (n); writeln (’Введите количество столбцов матрицы’); readln (m); writeln (’Введите элементы матрицы’); for i:=1 to n do for j:=1 to m do readln(a[i,j]); 2 способ (для программ): Элементы матрицы выводятся позиционно на экране. uses crt; // используем модуль crt для работы с экраном ... writeln (’Введите количество строк матрицы’); readln (n); writeln (’Введите количество столбцов матрицы’); readln (m); writeln (’Введите элементы матрицы’); for i:=1 to n do for j:=1 to m do begin gotoxy(5+i,5*j); readln(a[i,j]); end; Изменяя параметры функции gotoxy, можно менять положение матрицы на экране. |
Вывод Элементы матрицы выводятся позиционно на экране. for i:=1 to n do for j:=1 to m do begin gotoxy(5+i,5*j); write(a[i,j]:5); end; |
Совместный вывод матрицы и массива |
Вывод Элементы массива b выводятся напротив соответствующих строк матрицы a. for i:=1 to n do begin for j:=1 to m do begin gotoxy(5+i,5*j); write(a[i,j]:5); end; writeln (b[i]:10); end; Вывод Элементы массива b выводятся под соответствующими столбцами матрицы a. for i:=1 to n do for j:=1 to m do begin gotoxy(5+i,5*j); write(a[i,j]:5); end; writeln; for j:=1 to m do write (b[i]:10); |
Примеры процедур |
1 способ. Матрица описана как двумерный массив. // простейший ввод матрицы Procedure InputMatr(var b:matr;n,m:integer); var i:integer; begin for i:=1 to n do for j:=1 to m do begin gotoxy(5+i,5*j); readln(a[i,j]); end; end; // простейший вывод матрицы Procedure OutputMatr(var b:matr;n,m:integer); var i:integer; begin for i:=1 to n do for j:=1 to m do begin gotoxy(5+i,5*j); write(a[i,j]); end; end; 2 способ. Матрица описана как массив массивов. // ввод одномерного массива (одной строки матрицы) Procedure InputMas(var a:mas;m,nstr:integer); var i:integer; begin for i:=1 to m do begin gotoxy(5*i,5+nstr); readln(a[i]); end; end; // ввод матрицы Procedure InputMatr(var b:matr;n,m:integer); var i:integer; begin for i:=1 to n do inputmas(b[i],m,i); end; // вывод одномерного массива (одной строки матрицы) Procedure OutputMas(var a:mas;n:integer); var i:integer; begin for i:=1 to n do write(a[i]:5); writeln; end; // вывод матрицы Procedure OutputMatr(var b:matr;n,m:integer); var i:integer; begin for i:=1 to n do OutputMas(b[i],m); writeln; end; // сортировка выбором одномерного массива (строки матрицы) Procedure Choise(var a:mas;m:integer); var i,j,v,min,imin:integer; begin for j:=1 to m-1 do begin min:=a[j]; imin:=j; for i:=j+1 to m do if a[i]<min then begin min:=a[i];imin:=i; end; v:=a[j]; a[j]:=a[imin]; a[imin]:=v; end; end; // сортировка вставкой одномерного массива (строки матрицы) procedure Inser(var a:mas;m:integer); var i, j,v: integer; begin for i:= 2 to m do begin v:= A[i]; j:= i-1; while(j>0) and (v<A[j]) do begin A[j+1]:= A[j]; j:= j-1; end; A[j+1]:= v; end; end; |
Примеры функций |
// поиск минимального элемента в одномерном массиве (в строке матрицы) Function FindMin(var a:mas;m:integer):integer; var i, min:integer; begin min:=a[1]; for i:=2 to m do begin if a[i]<min then min:=a[i]; FindMin:=min; end; // поиск номера первого положительного элемента в одномерном массиве (в строке матрицы) Function FindPlus(var a:mas;m:integer):integer; var j:integer; begin j:=1; while (j<=m)and(a[j]<=0)do j:=j+1; if j<=m then FindPlus:=j else FindPlus:=0; end; |
Задания к лабораторной работе № 2
В каждом варианте, используя процедуры и функции (с параметрами), необходимо последовательно выполнить следующие задания:
1. В тетради для лабораторных работ в соответствии со стандартами составить 2 схемы алгоритмов: отдельно для п.2 и п.3.
2. Из матрицы А (n x m) получить одномерный массив (способ получения массива из матрицы задан в варианте).
3. В полученном векторе найти и вывести на экран заданное значение (алгоритм получения нужного значения из массива задан в варианте).
4. Отсортировать исходную матрицу (способ сортировки задан в варианте).
5. Вывести исходную матрицу, вектор и отсортированную матрицу в следующем виде:
1 способ (если массив соответствует строкам матрицы) | 2 способ (если массив соответствует столбцам матрицы) |
Задания по вариантам
№ вар. | Получить одномерный массив, … | В полученном векторе решить задачу поиска … | Отсортировать в матрице … |
состоящий из сумм элементов соответствующих строк матрицы. | максимального элемента и его номера | строки по убыванию значений элементов в столбце с номером, заданным пользователем. | |
состоящий из номеров первых отрицательных элементов строк матрицы. | суммы ненулевых элементов | строки по невозрастанию значений в столбце с номером, заданным пользователем. | |
элементами которого будут номера максимальных отрицательных элементов в соответствующих строках матрицы. | номера первого нулевого элемента | столбцы по убыванию значений элементов в первой строке. | |
состоящий из минимальных четных элементов строк матрицы. | номера последнего отрицательного элемента | столбцы по неубыванию значений элементов в первой строке. | |
состоящий из сумм элементов, не превосходящих по значению заданное пользователем число в соответствующих строках матрицы. | номера первого положительного элемента | строки по неубыванию значений элементов в первом столбце. | |
элементами которого будут номера последних отрицательных элементов строк матрицы. | номера последнего четного элемента | строки по убыванию значений элементов в последнем столбце. | |
состоящий из номеров минимальных элементов соответствующих строк матрицы. | номера первого нечетного элемента | строки по убыванию значений элементов в столбце с номером, заданным пользователем. | |
состоящий из сумм элементов, превосходящих по значению заданное пользователем число в соответствующих строках матрицы. | номера последнего положительного элемента | элементы каждой строки по убыванию значений элементов. | |
состоящий из номеров минимальных нечетных элементов строк матрицы. | количества элементов, равных своему предыдущему | строки по возрастанию значений элементов в первом столбце. | |
состоящий из сумм элементов соответствующих столбцов матрицы. | количества отрицательных элементов | строки по возрастанию значений элементов в столбце, с номером, заданным пользователем. | |
элементами которого будут номера первых положительных элементов строк матрицы. | среднего арифметического ненулевых элементов | элементы каждой строки по возрастанию значений элементов. | |
состоящий из номеров максимальных четных элементов строк матрицы. | среднего арифметического нечетных элементов | столбцы по невозрастанию значений в строке с номером, заданным пользователем. | |
состоящий из произведений элементов соответствующих строк матрицы. | количества отрицательных нечетных элементов | элементы каждой строки по невозрастанию значений элементов | |
состоящий из максимальных элементов соответствующих строк матрицы. | номера первого отрицательного элемента | элементы каждого столбца по невозрастанию значений элементов. | |
элементами которого будут номера последних положительных элементов строк матрицы. | суммы нечетных элементов | столбцы по возрастанию значений элементов в строке с номером, заданным пользователем. | |
состоящий из номеров максимальных нечетных элементов строк матрицы. | количества нулевых элементов | столбцы по неубыванию значений элементов в строке с номером, заданным пользователем. | |
состоящий из произведений элементов соответствующих столбцов матрицы. | количества элементов, меньших своего предыдущего | столбцы по убыванию значений элементов в строке с номером, заданным пользователем. | |
состоящий из сумм положительных элементов соответствующих столбцов матрицы. | количества элементов, неравных своему предыдущему | элементы каждого столбца по невозрастанию значений элементов. | |
элементами которого будут номера первых четных элементов соответствующих строк матрицы. | количества ненулевых элементов | элементы каждого столбца по возрастанию значений элементов. | |
состоящий из номеров минимальных элементов соответствующих строк матрицы. | среднего арифметического нечетных элементов | элементы каждого столбца по неубыванию значений элементов. | |
состоящий из сумм отрицательных элементов соответствующих строк матрицы. | суммы четных элементов | элементы каждого столбца по убыванию значений элементов. | |
состоящий из средних арифметических элементов соответствующих строк матрицы | среднего арифметического положительных элементов | элементы каждой строки по неубыванию значений элементов. | |
состоящий из сумм отрицательных элементов соответствующих столбцов матрицы. | количества элементов, больших своего предыдущего | строки по неубыванию значений элементов в столбце с номером, заданным пользователем. | |
состоящий из номеров максимальных элементов соответствующих строк матрицы. | количества четных элементов | строки по убыванию значений элементов в столбце с номером, заданным пользователем. | |
состоящий из номеров последних четных элементов соответствующих строк матрицы. | суммы нечетных элементов | строки по невозрастанию значений в столбце с номером, заданным пользователем. | |
состоящий из сумм отрицательных элементов соответствующих столбцов матрицы | среднего арифметического нечетных элементов | столбцы по убыванию значений элементов в первой строке. | |
состоящий из максимальных элементов соответствующих столбцов матрицы | количества положительных элементов | столбцы по неубыванию значений элементов в первой строке. | |
состоящий из минимальных элементов соответствующих столбцов матрицы. | номера первого нулевого элемента | строки по возрастанию значений элементов в столбце с номером, заданным пользователем. | |
состоящий из номеров первых отрицательных элементов соответствующих столбцов матрицы. | номера первого четного элемента | столбцы по невозрастанию значений элементов в первой строке. | |
элементами которого будут номера последних отрицательных элементов строк матрицы. | минимального элемента и его номера | столбцы по возрастанию значений элементов в первой строке. |