МЕТОДИКА ПРОВЕДЕНИЯ ЗАНЯТИЙ ПО ДИСЦИПЛИНЕ «ПРАКТИКУМ ПО РЕШЕНИЮ ЗАДАЧ НА ЭВМ» НА ТЕМУ «ДВУМЕРНЫЕ МАССИВЫ» НА ОСНОВЕ КОМПЕТЕНТНОСТНОГО, ИНФОРМАЦИОННОГО И ДЕЯТЕЛЬНОСТНОГО ПОДХОДОВ (ЭТАП ПРИОБЩЕНИЯ)

Раздел: Разработка методического обеспечения

Журнал: Методическое обеспечение различных разделов информатики

15 апреля 2012 г.

Авторы: Журавлев Сергей Владимирович

С. В. Журавлев

МЕТОДИКА ПРОВЕДЕНИЯ ЗАНЯТИЙ ПО ДИСЦИПЛИНЕ «ПРАКТИКУМ ПО РЕШЕНИЮ ЗАДАЧ НА ЭВМ» НА ТЕМУ «ДВУМЕРНЫЕ МАССИВЫ» НА ОСНОВЕ КОМПЕТЕНТНОСТНОГО, ИНФОРМАЦИОННОГО И ДЕЯТЕЛЬНОСТНОГО ПОДХОДОВ (ЭТАП ПРИОБЩЕНИЯ)

Все задачи данной темы ориентированы на формирова-ние следующих компетенций:

владение культурой мышления, способность к обобще-нию, анализу, восприятию информации, постановке цели и выбору путей её достижения (ОК-1) — студенты обобщают знания и отрабатывают навыки работы с двумерными масси-вами, учатся анализировать методы подсчёта количества, суммы, произведения и т. д. элементов строк или столбцов, отвечающих соответствующим требованиям, количества строк или столбцов, содержащих элементы, отвечающие со-ответствующим требованиям, работы с элементами, располо-женными заданным образом относительно главной или по-бочной диагонали (в квадратных матрицах), а также создания нового массива путём преобразования элементов исходного, понимать условие конкретной задачи и выбирать подходящий метод для её решения; 

готовность использовать основные методы, способы и средства получения, хранения, переработки информации, го-товность работать с компьютером как средством управления информацией (ОК-8) — методы: абстрагирование, анализ, синтез, логический метод, восхождение от абстрактного к конкретному; способы: чтение соответствующей литературы, работа в библиотеках, работа в информационно-поисковых системах; средства: печатные издания, компьютер.

Кроме того, задачи 11-30 формируют способность рабо-тать с информацией в глобальных компьютерных сетях (ОК-9) — студенты самостоятельно находят в поисковых систе-мах необходимые сведения: формулы, связывающие индексы элементов, расположенных заданным образом относительно диагоналей квадратной матрицы, способы создания нового массива на основе исходного.

Все задачи по данной теме подразделяются на 3 группы:

I. Задачи для ситуации полной информационной опреде-лённости:

1. Дан двумерный числовой массив размерностью N×M. Вычислить среднее арифметическое элементов каждой стро-ки, начинающейся с нечётного элемента.

2. Дан двумерный числовой массив размерностью N×M. Определить количество нечётных элементов каждого столб-ца, начинающегося с отрицательного элемента.

3. Дан двумерный числовой массив размерностью N×M. Вычислить произведение отрицательных элементов каждой строки, начинающейся с чётного элемента.

4. Дан двумерный числовой массив размерностью N×M. Вычислить сумму квадратов неотрицательных чётных эле-ментов столбца, оканчивающегося отрицательным элементом.

5. Дан двумерный числовой массив размерностью N×M. Определить количество положительных элементов с чётными индексами столбца, оканчивающегося нечётным отрицатель-ным элементом.

6. Дан двумерный числовой массив размерностью N×M. Вычислить куб среднего арифметического чётных элементов с нечётными индексами строки, оканчивающейся нулём.

7. Дан двумерный числовой массив размерностью N×M. Определить количество нулевых элементов с нечётными ин-дексами столбца, начинающегося с положительного элемента и оканчивающегося отрицательным элементом.

8. Дан двумерный числовой массив размерностью N×M. Вычислить произведение неположительных чётных элемен-тов строки, начинающейся с нечётного элемента и оканчива-ющейся чётным.

9. Дан двумерный числовой массив размерностью N×M. Вычислить квадрат среднего арифметического нечётных эле-ментов строки, начинающейся с отрицательного нечётного элемента и оканчивающейся положительным чётным.

10. Дан двумерный числовой массив размерностью N×M. Вычислить куб суммы квадратов отрицательных чётных эле-ментов с нечётными индексами столбца, начинающегося с отрицательного чётного элемента и оканчивающегося поло-жительным нечётным.

II. Задачи для ситуации частичной информационной нео-пределённости:

11. Дана квадратная матрица порядка N. Вычислить про-изведение чётных элементов, находящихся на главной диаго-нали матрицы.

12. Дана квадратная матрица порядка N. Вычислить среднее арифметическое отрицательных элементов, находя-щихся на побочной диагонали матрицы.

13. Дан двумерный числовой массив размерностью N×M. Определить количество строк, содержащих хотя бы один по-ложительный элемент.

14. Дан двумерный числовой массив размерностью N×M. Определить количество столбцов, состоящих только из не-чётных элементов.

15. Дана квадратная матрица порядка N. Вычислить сум-му нечётных положительных элементов, находящихся выше главной диагонали матрицы.

16. Дана квадратная матрица порядка N. Определить ко-личество чётных положительных элементов, находящихся вы-ше побочной диагонали.

17. Дан двумерный числовой массив размерностью N×M. Определить количество строк, содержащих хотя бы один отрицательный нечётный элемент.

18. Дан двумерный числовой массив размерностью N×M. Определить количество столбцов, состоящих только из поло-жительных чётных элементов.

19. Дана квадратная матрица порядка N. Вычислить квадрат произведения нечётных отрицательных элементов, находящихся ниже главной диагонали.

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

III. Задачи для ситуации полной информационной нео-пределённости:

21. Дана квадратная матрица порядка N. Обнулить все элементы, находящиеся выше главной диагонали.

22. Дана квадратная матрица порядка N. Обнулить все элементы, находящиеся ниже побочной диагонали.

23. Дан двумерный числовой массив размерностью N×M. Получить новый массив путём деления всех элементов дан-ного массива на её наибольший отрицательный элемент. Предварительно вывести этот элемент.

24. Дана квадратная матрица порядка N. Получить новую матрицу путём деления всех элементов, кроме элементов, на-ходящихся на главной диагонали, на её наименьший положи-тельный элемент. Предварительно вывести этот элемент.

25. Дан двумерный числовой массив размерностью N×M. Получить новый массив путём деления всех отрицательных элементов на её наибольший положительный элемент. Пред-варительно вывести этот элемент.

26. Дана квадратная матрица порядка N. Заменить на противоположные  все  элементы, находящиеся ниже главной диагонали.

27. Дана квадратная матрица порядка N. Заменить на об-ратные элементы, находящиеся выше побочной диагонали.

28. Дана квадратная матрица порядка N. Получить новую матрицу путём деления всех элементов, кроме элементов, на-ходящихся на побочной диагонали, на её наименьший отри-цательный элемент.

29. Дан двумерный числовой массив размерностью N×M. Получить новый массив путём деления всех нечётных поло-жительных элементов на сумму её наибольшего отрицатель-ного и наименьшего положительного элементов.

30. Дан двумерный числовой массив размерностью N×M. Получить новый массив путём деления всех нечётных отри-цательных элементов на произведение её наибольшего поло-жительного и наименьшего отрицательного элементов, а чёт-ных положительных элементов на квадрат среднего арифме-тического её наибольшего отрицательного и наименьшего по-ложительного элементов.

Теперь рассмотрим пример подробного решения одной задачи из первой группы.

Вычислить суммы элементов каждой строки двумерного массива размерности N×M.

Разместим необходимые компоненты на форме. Нам по-надобятся одна метка (Label1) для записи условия задачи, од-но текстовое окно (Edit1) для вывода сумм элементов строк массива, 2 кнопки (Button1 для вычисления сумм элементов строк массива и Button2 для окончания работы программы), одна таблица строк (StringGrid1) для вывода элементов массива.

В компоненте Label1 разместим условие задачи. Очи-стим компонент Edit1. Для кнопки Button1 создадим над-пись Решение, для Button2 – надпись Выход. Настроим ком-понент StringGrid1.

Окончательный вид формы показан на рис. 1.

Рис. 1
Опишем процедуру Button1Click:
var A: array of array of integer; //динамический двумер-ный массив целого типа 
M, N, i, j, sum: integer; //M – количество столбцов, N – количество  строк,  i  –  индекс  строки,  j  – индекс  столбца, sum – сумма элементов очередной строки
begin
N:=StrToInt(InputBox('Массив','Введите количество строк','2'));
M:=StrToInt(InputBox('Массив','Введите количество столбцов','2'));
if (N>1) and (M>1) then
begin
SetLength(A, N, M);
StringGrid1.ColCount:=M;
StringGrid1.RowCount:=N;
Edit1.Text:='';
for i:=0 to N-1 do
for j:=0 to M-1 do
begin
A[i, j]:=StrToInt(InputBox('Массив','Введите A['+ +IntToStr(i+1)+', '+IntToStr(j+1)+']','0'));
StringGrid1.Cells[j, i]:=IntToStr(A[i, j]);
end; //конец цикла
for i:=0 to N-1 do
begin
sum:=0;
for j:=0 to M-1 do
sum:=sum+A[i, j];
Edit1.Text:=Edit1.Text+IntToStr(sum)+' ';
end; //конец цикла
Finalize(A);
end //конец ветвления
else //если N≤1 или M≤1
MessageDlg('Размерность массива недостаточна для на-личия матрицы', mtError, [mbOK], 0);
end; //конец процедуры
Осталось запрограммировать кнопку Выход.
Программа решения задачи готова.
Теперь рассмотрим пример решения задачи из второй группы.
Дана квадратная матрица порядка N. Вычислить сумму элементов, расположенных на главной диагонали матрицы.
Разместим необходимые компоненты на форме. Нам по-надобятся одна метка (Label1) для записи условия задачи, од-но текстовое окно (Edit1) для вывода суммы искомых элемен-тов массива, 2 кнопки (Button1 для вычисления суммы эле-ментов, находящихся на главной диагонали и Button2 для окончания работы программы), одна таблица строк (StringGrid1) для вывода элементов массива.
В компоненте Label1 разместим условие задачи. Очи-стим компонент Edit1. Для кнопки Button1 создадим над-пись Решение, для Button2 – надпись Выход. Настроим ком-поненты StringGrid1 и StringGrid2.
Окончательный вид формы показан на рис. 2.

 

Рис. 2
Опишем процедуру FormCreate:
begin
randomize;
end; //конец процедуры
Теперь опишем процедуру Button1Click:
var A: array of array of real; //динамический двумерный массив вещественного типа
N, i, j: integer; //N – порядок матрицы, i – индекс стро-ки, j – индекс столбца
sum: real; //искомая сумма
begin
N:=StrToInt(InputBox('Массив','Введите размер-ность','4'));
if N>1 then
begin
SetLength(A, N, N);
StringGrid1.ColCount:=N;
StringGrid1.RowCount:=N;
for i:=low(A) to high(A) do
for j:=low(A) to high(A) do
begin
A[i, j]:=random*18-9; //заполняем массив случайными числами из отрезка [-9, 8]
StringGrid1.Cells[j, i]:=FloatToStrF(A[i, j], ffFixed, 5, 2);
end; //конец цикла
sum:=0;
for i:=low(A) to high(A) do
for j:=low(A) to high(A) do
if i=j then
sum:=sum+A[i, j];
Edit1.Text:=FloatToStrF(sum, ffFixed, 5, 2);
Finalize(A);
end //конец ветвления
else //если N≤1
MessageDlg('Размерность массива недостаточна для на-личия матрицы', mtError, [mbOK], 0);
end; //конец процедуры
Осталось запрограммировать кнопку Выход.
Программа решения задачи готова.
PDF