МЕТОДИКА ПРОВЕДЕНИЯ ЗАНЯТИЙ ПО ДИСЦИПЛИНЕ «ПРАКТИКУМ ПО РЕШЕНИЮ ЗАДАЧ НА ЭВМ» НА ТЕМУ «ОДНОМЕРНЫЕ МАССИВЫ» НА ОСНОВЕ КОМПЕТЕНТНОСТНОГО, ИНФОРМАЦИОННОГО И ДЕЯТЕЛЬНОСТНОГО ПОДХОДОВ (ЭТАП ПРИОБЩЕНИЯ)
Раздел:
Разработка методического обеспечения
Журнал:
Методическое обеспечение различных разделов информатики
15 апреля 2012 г.
Авторы:
Журавлев Сергей Владимирович
С. В. Журавлев
МЕТОДИКА ПРОВЕДЕНИЯ ЗАНЯТИЙ ПО ДИСЦИПЛИНЕ «ПРАКТИКУМ ПО РЕШЕНИЮ ЗАДАЧ НА ЭВМ» НА ТЕМУ «ОДНОМЕРНЫЕ МАССИВЫ» НА ОСНОВЕ КОМПЕТЕНТНОСТНОГО, ИНФОРМАЦИОННОГО И ДЕЯТЕЛЬНОСТНОГО ПОДХОДОВ (ЭТАП ПРИОБЩЕНИЯ)
Все задачи данной темы ориентированы на формирова-ние следующих компетенций:
владение культурой мышления, способность к обобще-нию, анализу, восприятию информации, постановке цели и выбору путей её достижения (ОК-1) — студенты обобщают знания и отрабатывают навыки работы с одномерными масси-вами, учатся анализировать методы подсчёта количества, суммы, произведения и т. д. элементов массива, отвечающих соответствующим требованиям, а также создания нового мас-сива путём преобразования элементов исходного, понимать условие конкретной задачи и выбирать подходящий метод для её решения;
готовность использовать основные методы, способы и средства получения, хранения, переработки информации, го-товность работать с компьютером как средством управления информацией (ОК-8) — методы: абстрагирование, анализ, синтез, логический метод, восхождение от абстрактного к конкретному; способы: чтение соответствующей литературы, работа в библиотеках, работа в информационно-поисковых системах; средства: печатные издания, компьютер.
Кроме того, задачи 11-30 формируют способность рабо-тать с информацией в глобальных компьютерных сетях (ОК-9) — студенты самостоятельно находят в поисковых системах необходимые сведения: какие числа называются близнецами, автоморфными, совершенными и т. д., способы создания но-вого массива на основе исходного или исходных.
Все задачи по данной теме подразделяются на 3 группы:
I. Задачи для ситуации полной информационной опреде-лённости:
1. Определить количество и вычислить сумму элементов одномерного массива размерности N, кратных 3.
2. Определить количество и вычислить среднее арифме-тическое элементов одномерного массива размерности N, имеющих чётные индексы.
3. Определить количество и вычислить сумму кубов эле-ментов одномерного массива размерности N, кроме элемен-тов, кратных 5.
4. Определить количество и вычислить произведение не-чётных элементов одномерного массива размерности N.
5. Определить количество и вычислить среднее арифме-тическое квадратов элементов одномерного массива размер-ности N, кроме элементов, являющихся простыми числами.
6. Определить количество и вычислить сумму индексов положительных элементов одномерного массива размерности N.
7. Определить количество и вычислить квадрат произве-дения индексов неотрицательных элементов одномерного массива размерности N.
8. Определить количество и вычислить куб суммы эле-ментов одномерного массива размерности N, имеющих ин-дексы, кратные 4.
9. Определить количество и вычислить произведение ин-дексов отрицательных элементов одномерного массива раз-мерности N, имеющих нечётные индексы.
10. Определить количество и вычислить куб среднего арифметического квадратов неположительных элементов од-номерного массива размерности N, имеющих индексы, крат-ные и 2, и 3.
II. Задачи для ситуации частичной информационной нео-пределённости:
11. Дан одномерный числовой массив. Вывести последо-вательность из нулей, имеющую наибольшую длину.
12. Дан одномерный числовой массив. Вывести последо-вательность из положительных элементов, имеющую наи-большую длину.
13. Даны 2 одномерных числовых массива. Вычислить средние арифметические элементов каждого из них.
14. Даны 2 одномерных числовых массива. Вычислить произведения чётных элементов каждого из них.
15. Даны 2 одномерных числовых массива. Вычислить суммы квадратов отрицательных элементов каждого из них.
16. Дан одномерный числовой массив натуральных чи-сел. Вывести последовательность из чётных простых чисел, имеющую наибольшую длину.
17. Дан одномерный числовой массив натуральных чи-сел. Вывести последовательность из палиндромов, кратных 5, имеющую наибольшую длину.
18. Даны 2 одномерных числовых массива натуральных чисел. Вычислить квадраты сумм элементов каждого из них, состоящих из двух одинаковых частей.
19. Даны 2 одномерных числовых массива натуральных чисел. Вычислить средние арифметические кубов совершен-ных чисел каждого из них.
20. Дан одномерный числовой массив. Вывести последо-вательность из неположительных чисел, кратных 3, имею-щую наибольшую длину.
III. Задачи для ситуации полной информационной нео-пределённости:
21. Дан одномерный числовой массив. Заменить каждый элемент массива произведением предыдущих чётных элемен-тов, включая заменяемый элемент, если он чётный.
22. Дан одномерный числовой массив. Заменить каждый элемент массива средним арифметическим предыдущих не-чётных элементов, включая заменяемый элемент, если он не-чётный.
23. Дан одномерный числовой массив. Заменить каждый элемент массива суммой квадратов предыдущих отрицатель-ных элементов, включая заменяемый элемент, если он отри-цательный.
24. Дан одномерный числовой массив. Заменить каждый элемент массива кубом суммы предыдущих неотрицательных элементов, включая заменяемый элемент, если он неотрица-тельный.
25. Даны 2 одномерных числовых массива. Создать тре-тий массив, состоящий из чётных элементов первого массива и нечётных элементов второго массива.
26. Даны 2 одномерных числовых массива. Создать тре-тий массив, состоящий из отрицательных элементов первого массива и положительных элементов второго массива.
27. Даны 2 одномерных числовых массива натуральных чисел. Создать третий массив, состоящий из простых элемен-тов первого массива и составных элементов второго массива.
28. Дан одномерный числовой массив. Заменить нулями все чётные элементы, предшествующие максимальному, и единицами все нечётные элементы, находящиеся после мини-мального. Если в массиве несколько максимальных или ми-нимальных элементов, то рассматривается первый по поряд-ку максимальный элемент и последний минимальный.
29. Дан одномерный числовой массив. Заменить нулями все отрицательные элементы, предшествующие минимально-му, и единицами все положительные элементы, находящиеся после максимального. Если в массиве несколько максималь-ных или минимальных элементов, то рассматривается первый по порядку минимальный элемент и последний максималь-ный.
30. Дан одномерный числовой массив натуральных чи-сел. Заменить каждый простой элемент суммой индекса этого элемента и максимального элемента массива, а каждый со-ставной элемент произведением индекса этого элемента и минимального элемента массива.
Теперь рассмотрим пример подробного решения одной задачи из первой группы.
Вычислить сумму элементов одномерного массива раз-мерности N.
Разместим необходимые компоненты на форме. Нам по-надобятся одна метка (Label1) для записи условия задачи, од-но текстовое окно (Edit1) для вывода суммы элементов мас-сива, 2 кнопки (Button1 для вычисления суммы элементов массива и Button2 для окончания работы программы), одна таблица строк (StringGrid1) для вывода элементов массива.
В компоненте Label1 разместим условие задачи. Очи-стим компонент Edit1. Для кнопки Button1 создадим над-пись Решение, для Button2 – надпись Выход. Настроим ком-понент StringGrid1.
Окончательный вид формы показан на рис. 1.
Опишем процедуру Button1Click:
var A: array of integer; //динамический одномерный мас-сив целого типа
i, s, N: integer; //i – индекс элемента массива A, s – сум
ма элементов массива A, N – размерность массива A
begin
N=StrToInt(InputBox('Размерность массива','Введите ко-личество элементов массива','5'));
if N>0 then
begin
SetLength(A, N);
StringGrid1.ColWidths[0]:=120;
StringGrid1.ColCount:=n+1;
StringGrid1.RowCount:=2;
StringGrid1.Cells[0, 0]:='Номер элемента';
StringGrid1.Cells[0, 1]:='Массив';
for i:=low(A) to high(A) do
begin
A[i]:=StrToInt(InputBox('Массив A', 'Введите '+ +IntToStr(i+1)+' элемент','0'));
StringGrid1.Cells[i+1, 0]:=IntToStr(i+1);
StringGrid1.Cells[i+1, 1]:=IntToStr(A[i]);
end; //конец цикла
s:=0;
for i:=low(A) to high(A) do
s:=s+A[i];
Edit1.Text:=IntToStr(s);
Finalize(A);
end //конец ветвления
else //если N неположительно
MessageDlg('Введено не натуральное число', mtError, [mbOK], 0);
end; //конец процедуры
Осталось запрограммировать кнопку Выход.
Программа решения задачи готова.
Теперь рассмотрим пример решения задачи из второй группы.
Даны 2 одномерных массива размерности N. Вычислить сумму элементов каждого из них.
Разместим необходимые компоненты на форме. Нам по-надобятся одна метка (Label1) для записи условия задачи, 2 текстовых окна (Edit1 для вывода суммы элементов первого массива и Edit2 для вывода суммы элементов второго масси-ва), 2 кнопки (Button1 для вычисления сумм элементов мас-сивов и Button2 для окончания работы программы), 2 табли-цы строк (StringGrid1 для вывода элементов первого массива и StringGrid2 для вывода элементов второго массива).
В компоненте Label1 разместим условие задачи. Очи-стим компоненты Edit1 и Edit2. Для кнопки Button1 создадим надпись Решение, для Button2 – надпись Выход. Настроим компоненты StringGrid1 и StringGrid2.
Окончательный вид формы показан на рис. 2.
Задачу можно решать напрямую, 2 раза составляя под-робный алгоритм ввода элементов массива и вычисления их суммы. Но можно сделать проще, дополнительно введя про-цедуру ввода элементов массива и функцию вычисления суммы элементов массива.
Опишем массив в разделе описания типов type. Перед строчкой Tform1=class(TForm) опишем массив mass:
mass=array of integer;
Далее в разделе implementation определим процедуру ввода элементов массива:
procedure TForm1.vvod(var m: mass; N: integer; StringGrid: TstringGrid); //массив m (в данном случае переда-ётся как переменная, а не как параметр), N – размерность массива m, StringGrid – текущая таблица строк
var i: integer; //индекс элемента массива m
begin
SetLength(m, N);
StringGrid.Clear;
StringGrid.ColCount:=N;
StringGrid.RowCount:=2;
for i:=low(m) to high(m) do
begin
m[i]:=random(10)-5; //заполняем очередной массив слу-чайными числами из отрезка [-5, 4]
StringGrid.Cells[i, 0]:=IntToStr(i+1);
StringGrid.Cells[i, 1]:=IntToStr(m[i]);
end; //конец цикла
end; //конец процедуры
Теперь нашу процедуру нужно описать в секции private:
procedure TForm1.vvod(var m: mass; N: integer; StringGrid: TstringGrid);
После процедуры vvod определим функцию вычисления суммы элементов массива.
function sum(var m: mass; N: integer): integer; //m – пе-ременная типа массив, N – размерность массива m
var s, i: integer; //s – сумма элементов массива m, i – ин-декс элемента массива m
begin
s:=0;
for i:=low(m) to high(m) do
s:=s+m[i];
sum:=s;
end; //конец функции
Опишем процедуру FormCreate:
begin
randomize;
end; //конец процедуры
Теперь наконец можно программировать кнопку Реше-ние:
procedure TForm1.Button1Click(Sender: Tobject);
var i, N: integer; //i – индекс элемента массива, N – ко-личество элементов массива
A: mass; //первый массив
B: mass; //второй массив
begin
N=StrToInt(InputBox('Размерность массива','Введите ко-личество элементов массива','5'));
if N>0 then
begin
vvod(A, N, StringGrid1);
Edit1.Text:=IntToStr(sum(A, N));
vvod(B, N, StringGrid2);
Edit2.Text:=IntToStr(sum(B, N));
Finalize(A);
Finalize(B);
end //конец ветвления
else //если N неположительно
MessageDlg('Введено не натуральное число', mtError, [mbOK], 0);
end; //конец процедуры
Осталось запрограммировать кнопку Выход.
Программа решения задачи готова.