Ул. Гагарина, д.42, г.Королев, М.О., 141070
ИНН/КПП 5018179774/501801001, ОГРН 1155000002750
Тел./факс 8-495-516-99-29
e-mail: api_korolev@ut-mo.ru
Павловская Яна Игоревна
Разработка развивающего квест-урока по решению задач
на одномерные массивы в рамках новой дидактики
Тема:«Одномерные массивы»
Класс:10
Количество часов:136
В соответствии с каким УМК по информатике был разработан урок:
Угринович Н. Д. Информатика и ИКТ. Профильный уровень: учебник для 10 класса / Н. Д. Угринович. — 3-е изд., испр. — М. : БИНОМ. Лаборатория знаний, 2008. — 387 с. : ил.
Методический подходк решению задач на одномерные массивы: от простого к сложному.
Литература:
Методическое пособие по программированию на языке Pascal ABC”, Ерѐмин О.Ф. (дополненное и переработанное), 2015г.;
Turbo Pascal решение сложных задач Автор: В. В. Потопахин. Изд. БХВ-Петербург 2006г.;
Златопольский Д. М. Сборник задач по программированию. — 3-е изд., перераб. И доп. — СПб. : БХВ-Петербург, 2011. — 304с.: ил. — (ИиИКТ);
Окулов С. М. Основы программирования / С. М. Окулов. — 3-е изд. — М. : Бином. Лаборатория знаний, 2006. — 440 с.
№ |
Этап урока |
Содержание урока |
|||||||||||||||||||||||||||||||||||||||||||
1 |
Актуализация знаний и деление на группы |
Урок-квест «Pascal» - это игра-путешествие по трем станциям, на которых каждой из команд предстоит актуализировать знания, изучить новую теорию и применить ее на практике. Сначала каждая из команд получает опросник и письменно отвечает на вопросы. После того, как первый этап будет пройден, командам будут предоставлены свитки с теорией и разбором задачи, которую им будет необходимо воспроизвести. На третьем этапе капитаны команд разыгрывают фанты с финальным заданием: решение задач на Pascalс использованием одномерных массивов.
Каждая из команд получает следующий Маршрутный лист: Название команды: _____________ Капитан команды: _______________
Станция «Пройди опрос»
|
|||||||||||||||||||||||||||||||||||||||||||
2 |
Изучение нового материала |
«Станция одномерные массивы и числа Фиббоначи» Команда получает свертки с материалом по одномерным массивам и числам Фиббоначи (см. Приложение1). Изучает теорию и разбирает следующую задачу: |
|||||||||||||||||||||||||||||||||||||||||||
3 |
Закрепление изученного материала |
Программа: Program Fib; Uses crt; const n=12; var А: array [1..n] of integer; i: integer; begin clrscr; А[1]:=1; А[2]:= 1; for i:= 3 to n do А[i]:= А[i-1] + А[i-2]; For i:= 1 to n do write (A[i]:5); readln; end.
Вывод: 1 январь 1 февраль 2 март 3 апрель 5 май 8 июнь 13 июль 21 август 34 сентябрь 55 октябрь 89 ноябрь 144 декабрь
Ответ: 144 кролика.
PascalStation При делении на 4 группы: 1 группа: Заполнить одномерный массив A(N) элементами последовательности Фибоначчи. Найти сумму первых K элементов. 2 группа: Дана последовательность Фибоначчи A(N). Что больше: сумма четных или произведение нечетных элементов и насколько. 3 группа: Напечатать те элементы массива A(N), индексы которых являются четными числами последовательности Фибоначчи. 4 группа: Заполнить массив A(N) так: первые K элементов заполнить элементами последовательности Фибоначчи, остальным - присвоить число m.
Решение задач + дополнительные задачи см.Приложение 2 |
|||||||||||||||||||||||||||||||||||||||||||
4 |
Домашнее задание |
1. Заполнить массив A элементами последовательности Фибоначчи до тех пор, пока элемент массива A не станет больше числа M. Вывести получившийся массив. 2. Заполнить массив A(N) элементами последовательности Фибоначчи. Найти сумму и произведение последних K элементов. |
Теоретическая часть. Изучение нового материала.Одномерные массивы:
Массив называется одномерным (линейным), если у каждого из его элементов имеется только один индекс.
К примеру, если мы будем в течение месяца ежедневно записывать среднесуточную температуру, и заносить эти данные в таблицу,
|
t[1] |
t[2] |
t[3] |
t[…] |
t[30] |
Моздок |
15 |
17 |
14 |
… |
21 |
то у нас получится одномерный массив, в котором будет храниться переменная t[j], с одним индексом (номером столбца).
t[1], t[2], t[3], … , t[n].
Пример описания одномерного массива:
Var A: array [1 … 15] of real;
Для указания количества элементов массива можно применять константы:
Const a=10;
Var A: array [1 … a] of integer;
Леонардо из Пизы, известный как Фибоначчи, был первым из великих математиков Европы позднего Средневековья. Будучи рожденным в Пизе в богатой купеческой семье, он пришел в математику благодаря сугубо практической потребности установить деловые контакты. В молодости Леонардо много путешествовал, сопровождая отца в деловых поездках. Например, мы знаем о его длительном пребывании в Византии и на Сицилии. Во время таких поездок он много общался с местными учеными.
Числовой ряд, носящий сегодня его имя, вырос из проблемы с кроликами, которую Фибоначчи изложил в своей книге «Liber abacci», написанной в 1202 году:
Человек посадил пару кроликов в загон, окруженный со всех сторон стеной. Сколько пар кроликов за год может произвести на свет эта пара, если известно, что каждый месяц, начиная со второго, каждая пара кроликов производит на свет одну пару?
В средневековой загадке с кроликами, которую загадал Фибоначчи, кроется мистическая последовательность чисел.
Решение этой задачи сводится к бесконечной последовательности чисел:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144 …
Последовательность чисел, первые два числа которой равны 1, а каждый последующий член (начиная с третьего) равен сумме двух предыдущих, называют последовательностью Фибоначчи, а сами числа числами Фибоначчи.
Последовательность Фибоначчи - это не просто игра с числами, а самое важное математическое выражение природных явлений из всех когда-либо открытых.
Эти числа возникают в самых разных математических ситуациях - комбинаторных, числовых, геометрических. Если вы любите отыскивать числовые закономерности в живой природе, то заметите, что числа Фибоначчи встречаются и там. Чешуйки на еловой шишке, ячейки на ананас и семена подсолнечника расположены спиралями, причем количество спиралей каждого направления так же, как правило, числа Фибоначчи.
Еще числа Фибоначчи обладают следующими свойствами:
Решение:
1 группа:Заполнить одномерный массив A(N) элементами последовательности Фибоначчи. НайтисуммупервыхK элементов.
ProgramFib;
Uses crt;
var a: array [1..100] of integer;
i,k,s: integer;
begin
clrscr;
Writeln ('Введите размерность массива ');
Read (n);
WriteLn ('Последовательность чисел Фибоначчи:');
a[1]:=1; a[2]:= 1;
for i:= 3 to n do begin
a[i]:= a[i-1] + a[i-2];
end;
writeLn;
for i:=1 to n do
write (a[i]:5);
WriteLn ('ВведитеК: ');
readLn (k);
s:= 0;
for i:= 1 to k do
s:= s + a[i];
WriteLn('Суммапервых ', k, 'элементов = ', s);
readln;
end.
2 группа:Дана последовательность Фибоначчи A(N). Что больше: сумма четных или произведение нечетных элементов и насколько.
Program Fib;
Uses crt;
var a: array [1..100] of integer;
i, n, p,s: integer;
begin
clrscr;
Writeln ('Введите размерность массива ');
Read (n);
a[1]:=1; a[2]:= 1;
for i:= 3 to n do begin
a[i]:= a[i-1] + a[i-2];
end;
WriteLn ('ПоследовательностьчиселФибоначчи:');
for i:=1 to n do
write (a[i]:5);
writeln;
s:= 0; p:=1;
for i:= 1 to n do begin
if a[i] mod 2 = 0 then s:= s + a[i]
else p:= p*a[i];
end;
if s>p then WriteLn ('Сумма четных чисел Фибоначчи больше произведения нечетных на ', s-p)
else
WriteLn ('Произведение нечетных чисел Фибоначчи больше суммы четных на ', p-s);
readln;
end.
3 группа:Напечатать те элементы массива A(N), индексы которых являются четными числами последовательности Фибоначчи.
Program Fib;
Uses crt;
var a: array [1..100] of integer;
I, n, k, s: integer;
begin
clrscr;
Writeln ('Введите размерность массива ');
Read (n);
a[1]:=1; a[2]:= 1;
for i:= 3 to n do begin
a[i]:= a[i-1] + a[i-2];
end;
WriteLn ('ПоследовательностьчиселФибоначчи:');
for i:=1 to n do
write (a[i]:5);
writeln;
WriteLn ('элементы массива, индексы которых являются четными числами последовательности Фибоначчи: ');
For i:= 1 to n do
if i mod 2 = 0 then
Write (a[i], '-');
Readln;
End.
4 группа:Заполнить массив A(N) так: первые K элементов заполнить элементами последовательности Фибоначчи, остальным - присвоить число m.
Program Fib;
Uses crt;
var a: array [1..100] of integer;
I, n, k, m: integer;
begin
clrscr;
Writeln ('Введите размерность массива ');
Read (n);
Writeln ('ВведитеК');
Readln (k);
Writeln ('Введитеm ');
Readln (m);
a[1]:=1; a[2]:= 1;
for i:= 3 to n do begin
a[i]:= a[i-1] + a[i-2];
end;
WriteLn ('ПоследовательностьчиселФибоначчи:');
for i:=1 to n do
write (a[i]:5);
writeln;
for i:= k+1 to n do
a[i]:= m;
for i:= 1 to n do
writeLn (a[i], '-');
readLn;
end.
Сверимся с ответами при фиксированных переменных величинах:
1 группа при n = 10, k = 5
2 группа при n = 10
3 группа при n = 10
4 группа при n = 10, k = 5, m = 22
Дополнительные задачи:
1. Программа вычисляющая среднее арифметическое массива:
Program SRedMass;
const N=10;
var SR,S:real;
I,Kol:integer;
A:array[1..N] of real;
begin S:=0; Kol:=0;
for I:=1 to N do
begin
read(A[I]);
if A[I]>0 then
S:=S+A[I]; Kol:=Kol+1;
SR:=S/Kol;
end;
Write('ср.арифм.= ',SR);
end.
2. Программа сортировки элементов массива пузырьковым методом:
Program SortPuzyrok;
const n=20;
var a : array [1..n] of integer;
i,j,k,prom : integer;
begin
for i:=1 to n do
begin
a[i]:=random(101);
write(a[i],' ');
end;
writeln;
for i:=2 to n do
for j:=1 to n do
if a[i]<a[j] then
begin
prom:=a[j];
a[j]:=a[i];
a[i]:=prom;
end;
for i:=1 to n do
begin
write(a[i],' ');
end;
end.
Добавление элемента в массив:
1) Задать случайным образом N элементов числового массива – числа от 0 до 20. Вставить в него число «-20» перед к-ым элементом.
Чтобы вставить в массив новый элемент на место К, нужно прежде всего предусмотреть для него место в массиве. Поэтому объявление массива будет выглядеть так: <имя>: array [1..n+1] of <тип>;
Обязательно ввести к – ый порядковый номер. В теле программы все элементы, начиная с к-ого и до N, следует передвинуть на 1 место к концу массива. После этого можно на к-ое место поставить значение, заданное по условию задачи:
For i := n downto кdo
a[i+1] := a[i];
a[i] := <новоезначение>;
Решение:
Program zad1;
Uses crt;
Var I,N,K:byte; A:array[1..100] of integer;
Begin clrscr;
Writeln(‘Введи размерность массива’);
Readln (N);
Writeln(‘исходный массив’);
Randomize;
For i:=1 to N do begin
A[i]:=random(20)+1;
Write(A[i]:3);
End;
Writeln;
Writeln(‘Введи номер к-го элемента’);
Readln (K);
For i:=N downto K do
A[i+1]:=A[i];
A[i]:=-20;
Writeln(‘измененныймассив’);
For i:=1 to N+1 do begin
Write(A[i]:3);
Readln;
End.
Удаление элементов из массива.
5) Задать случайным образом N элементов числового массива – числа 0 до 10. Удалить из него10-ый элемент. Чтобы удалить из массива элемент № 10, нужно все элементы, начиная с (10+1)-ого, передвинуть на 1 место к началу массива. Тогда алгоритм удаления элемента запишется так: For i := 10 to n-1 do a[i] := a[i+1]; |
Решение:
Program zad2;
Uses crt;
Var I,N:byte; A:array[1..100] of integer;
Begin clrscr;
Writeln(‘Введи размерность массива’);
Readln (N);
Writeln(‘исходный массив’);
Randomize;
For i:=1 to N do begin
A[i]:=random(10)+1;
Write(A[i]:3);
End;
Writeln;
For i:=10 to N-1 do
A[i]:=A[i+1];
Writeln(‘измененныймассив’);
For i:=1 to N-1 do begin
Write(A[i]:3);
Readln;
End.
Задать случайным образом N элементов числового массива
2) вставить «10» перед первым положительным элементом;
При решении данной задачи, обратить внимание учащихся на то, что необходимо сначала найти первый положительный элемент и определить его порядковый номер.
Решение:
Program zad3;
Uses crt;
Var I,N,x:byte; A:array[1..100] of integer;
Begin clrscr;
Writeln(‘Введи размерность массива’);
Readln (N);
Writeln(‘исходныймассив’);
Randomize;
For i:=1 to N do begin
A[i]:=random(20)-10;
Write(A[i]:3);
End;
Writeln;
For i:=N downto 1 do begin
If A[i]>0 then x:=I;
End;
Writeln(‘порядковый номер первого положительного элемента =’,x);
For i:=N downto x do
A[i+1]:=A[i];
A[i]:=10;
Writeln(‘измененныймассив’);
For i:=1 to N+1 do begin
Write(A[i]:3);
Readln;
End.