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

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

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

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; //конец процедуры

Осталось запрограммировать кнопку Выход.

Программа решения задачи готова.

PDF