Методическое и дидактическое обеспечение преподавания раздела «Алгоритмы и программы» в 5-11 кл. Исполнитель

Вид материалаРеферат

Содержание


Точки» (журнал «Информатика и образование»). См. Приложение №3
К содержанию
Место урока в системе уроков
1. Актуализация знаний (7-8 мин)
Размерность массива
2. Изучение нового материала
Создание матрицы А(5*6)
Создание матрицы А(5*6)
Подобный материал:
1   2   3   4   5   6   7   8   9

program risunok; {Шутова Света 2005 г.}

uses crt, Graph;

var i,x,y,gd,gm : integer;

begin

x:=200; y:=300;

gd:=Detect; initgraph (gd,gm,’’);

Setcolor (4);

SetFillStyle (1,11);

Bar (140,70,390,350);

MoveTo(x,y); LineRel(25,0); LineRel(0,-60);

MoveTo(x+50,y); LineRel(25,0);

MoveTo(x+50,y); LineRel(0,-60);

Ellipse(x+38,y-98,0,360,30,40); SetFillStyle (7,5); FloodFill(x+38,y-98,4);

MoveTo(x+7,y-95); LineTo(x-15,y-45);

MoveTo(x+68,y-95); LineTo(x+78,y-45);

MoveTo(x+50,y-100);

Circle(x+40,y-164,25); SetFillStyle (1,12); FloodFill(x+40,y-164,4);

MoveTo(x+35,y-370);

Arc(x+40,y-205,160,20,17);

Ellipse(x+29,y-174,0,360,4,5);

Ellipse(x+45,y-174,0,360,4,5);

for i:=1 to 10 do begin {Начало цикла изменения улыбки чёртика}

SetColor(4); Arc(x+38,y-143,20,160,13);

Delay(50000); {Задержка для создания иллюзии движения}

SetColor(12); Arc(x+38,y-143,20,160,13);

SetColor(4); Arc(x+38,y-154,160,10,13);

Delay(50000);

SetColor(12); Arc(x+38,y-154,160,10,13);

end;

SetColor(12); Arc(x+38,y-143,20,160,13);

Arc(x+116,y-85,199,0,65);

Circle(x+180,y-90,5);

SetTextStyle(DefaultFont,HorizDir,3);

OutTextXY(10,350,'Привет из горячей точки');

readln;

CloseGraph {Именно так – readln; затем CloseGraph, иначе графику не увидеть}

end.

В конце урока все вместе проверяем работы. Это занимает 4-5 минут, но польза от этого, несомненно, большая. Это моё, это я сделал! Такие уроки запоминаются надолго. Особо отмечаются те, кто в программах использовал операторы цикла, ветвления, динамику. После проверки и выявления лучшего художника все получают листинги программ, сделанных предшественниками, одиннадцатиклассниками. Все получают огромное удовольствие : 10-й класс ищет ошибки и любуется картинками 11-го класса, а 11-й класс млеет от того, что десятиклассники не нашли ошибок и что их имена попали в историю программистского движения.

Напоследок я предлагаю листинг программы (код) « Точки» (журнал «Информатика и образование»). См. Приложение №3. После подробного разбора каждой! строчки учащиеся набирают эту программу и получают индивидуальные задания. Например:
  1. Найти наибольшее расстояние между точками, вывести это значение и номера точек на экран и соединить эти точки прямой жёлтого цвета.
  2. Найти максимальную (минимальную) координату по оси Ох (Оу) и провести через неё прямую, параллельную перпендикулярную Ох (Оу).
  3. Соединить первую точку с последней (все подряд, через одну и т.п.)

После этой работы я провожу самостоятельную работу по комментированию каждой! строчки этой же программы, а «выдающимся» даю программу «Треугольники», которую выполняем уже в 11 классе. Результаты всегда интересные. Большинство комментируют 80-90% кода.

Затем все получают творческое задание: Создать что-нибудь этакое, что вошло бы в анналы истории.

Эта тема обычно легко идёт в 10 классе. Для учащихся не представляет большой трудности перевести с уже хорошо известного языка Qbasic графические операторы.

Картины (назовём их так торжественно) получаются достаточно интересными, т.к. дети, имея опыт, стараются украсить свою картинку динамикой. Например, банальная ёлка превращается в произведение искусства (не побоюсь этого слова), если огни на ней будут переливаться, а игрушки на ней будут улыбаться, возни, конечно, больше, но, когда на карту поставлена великая дидактическая задача – учение с увлечением, то все затраты окупятся хорошим настроением и учителя и, особенно, детей. Они с азартом начинают придумывать «оживляшки», так что, когда придёт пора работать с макросами в приложениях Windows, в Visual Basic, Delphi, то уговаривать сделать красивую программу не надо. (См. Приложение 3-8). На этом заканчивается изучение темы в 10 классе. Следующая глава посвящена программированию в 11 классе.

( К содержанию)

7. 11 класс

Изучение программирования в 11 классе начинаем с работы над числовыми последовательностями. Учимся выводить на экран всю последовательность, n-ый элемент, рассчитывать сумму, находить максимальные и минимальные элементы последовательности. Этот материал служит хорошей подготовкой к работе с массивами (матрицами). В курсе алгебры этот материал прорабатывается очень слабо, и я решил чуть помочь математикам в работе над последовательностями.

Вот пример первой программы, которую мы создаём на уроке:

program posled1;

uses crt;

var m,n,x,y,i : integer;

s: real;

begin clrscr;

x:= 5;y:=4;s:=0;textcolor(2);

writeln ('дана последовательность:'); textcolor(14);

writeln ('{5/4, 4/1, 3/-2, 2/-5, 1/-8}');

writeln;

textcolor(2);writeln('выводим её на экран в том же виде и считаем сумму:');

textcolor(14);write(' ');

for i:= 1 to 5 do begin

write(x,'/',y,', '); x:= x-1; y:= y-3;s:=s+x/y;

end;

writeln; x:= 5;y:=4; writeln;

textcolor(2);writeln('выводим на экран в виде десятичной дроби');

textcolor(14);

for i:= 1 to 5 do begin

write (x/y:4:2,', '); x:= x-1; y:= y-3;

end;

writeln; writeln; textcolor(2); writeln('выводим сумму на экран:');

textcolor(14); writeln('сумма = ',s:4:2);

readln

end.

После этой программы уже самостоятельно каждый учащийся может выполнить зачётное задание типа:

program posled2;

uses crt;

var n1,n,m: integer;

s,sa: real;

begin clrscr;

writeln('2/2; 3/4; 4/6; 5/8; 6/10; 7/12; 8/14; 9/16; ...; ');

textcolor(2);

write('с какого элемента начинаем - ');readln (n1);

write('сколько элементов обрабатываем - ');readln (m);

textcolor(14);

for n:=n1 to m do

write(n+1,'/',n*2,'; ');

writeln;

for n:=n1 to m do

write((n+1)/(2*n):7:5,'; ');

for n:=n1 to m do

s:=s+(n+1)/(2*n);

sa:=s/(m);

writeln; textcolor(2);

writeln ('сумма ряда = ',s:7:5,'; ','среднее арифметическое ряда = ',sa:7:5,';');

readln

end.

После ознакомления с последовательностями переходим к одномерным массивам. Учимся выводить на экран весь массив, его часть, рассчитываем сумму, ищем MAX и MIN - элементы, среднее значение массива, его части.

Эта тема хорошо проработана во всех учебниках. Я бы хотел только привести здесь одну из наших программ, где мы выводим массив на экран и обрабатываем его:

program massiv1;

uses crt;

var k,l,s,i,n,min,max:integer;

sa: real;

a: array[1..20] of integer;

begin clrscr;

randomize; textcolor(2);

write('Cколько элементов будет в массиве?');readln(n);textcolor(14);

for i:=1 to n do begin

a[i]:=round(random(99));

writeln('a[',i,']=',a[i]);

end;

textcolor(2); max:=a[1];min:=a[1];s:=0;k:=1;l:=1;

for i:=1 to n do begin

s:=s+a[i];

if a[i]then begin min:=a[i];l:=i; end;

if a[i]>max then begin max:=a[i];k:=i; end;

end;

writeln('Сумма всех элементов = ',s);

writeln('Максимальный элемент = ',max,'. Он находится по адресу - ',k);

writeln('Минимальный элемент = ',min,'. Он находится по адресу - ',l);

readln;

end.

Особое внимание я хотел бы уделить изучению темы «Двумерные массивы. Матрицы». Хотя этот материал изучают в ВУЗах, мне удаётся заинтересовать ребят этой темой, т.к. она очень красива и понятна, если начать с программ вывода на экран и матриц. Обработку матриц дети лучше понимают, если в программе предусмотрена демонстрация всех этапов обработки. Вот пример программы, которую выполняют учащиеся при завершении темы «Матрицы»:

program massiv2;

uses crt;

var massiv: array [1..10,1..10] of byte;

i,j,m,n: byte;

begin

clrscr; textcolor(2); randomize;

for j:=1 to 10 do begin

for i:=1 TO 10 do begin

massiv[i,j]:=random(99);delay(100); gotoxy(i*3,j);write(massiv[i,j]);

end;

end;

writeln; textcolor(14);

Write('Какой столбец красим - ');Readln(m);

for j:=1 to 10 do begin

for i:=1 TO 10 do begin

if i=m then begin

textcolor(4);gotoxy(i*3,j);write(massiv[i,j]);

end

else begin

textcolor(2);gotoxy(i*3,j);write(massiv[i,j]);

end;

end;

end;

writeln; textcolor(14);gotoxy(12*3,11);

Write('Какую строчку красим - ');Readln(n);

for j:=1 to 10 do begin

for i:=1 to 10 do begin;

if j=n then begin

textcolor(4);gotoxy(i*3+40,j);write(massiv[i,j]);

end

else begin

textcolor(2);gotoxy(i*3+40,j);write(massiv[i,j]);

end;

end;

end;

Writeln;Writeln; textcolor(14); Writeln;

Writeln('Красим главную диагональ (i=j):');

for j:=1 to 10 do begin

for i:=1 to 10 do begin;

if j=i then begin

textcolor(4);gotoxy(i*3,j+13);write(massiv[i,j]);

end

else begin

textcolor(2);gotoxy(i*3,j+13);write(massiv[i,j]);

end;

end;

end;

textcolor(14); gotoxy(40,13);

Writeln('Красим побочную диагональ (j=11-i):');

for j:=1 to 10 do begin

for i:=1 to 10 do begin

if j=11-i then begin

textcolor(4);gotoxy(i*3+40,j+13);write(massiv[i,j]);

end

else begin

textcolor(2);gotoxy(i*3+40,j+13);write(massiv[i,j]);

end;

end;

end;

readln

end.

К этой программе легко добавить подсчёт суммы, среднего арифметического, поиск чётных и нечётных элементов в любой строке, столбце, диагонали. Можно обменивать, заменять и т.д., т.к. усвоен главный принцип: что хотим, то и делаем, куда хотим, туда и выводим.

При подготовке к ЕГЭ для формирования устойчивых навыков по обработке матриц я провожу сдвоенный урок. Ниже привожу конспект этого урока.

Место урока в системе уроков: Данный сдвоенный урок находится под номерами 89 и 90 в 4-х часовой программе профильного курса «Информатика и информационно-коммуникационные технологии» 10 класса.

Цели:
  • Сформировать представление о двумерном массиве;
  • отработать навыки работы с элементами двумерного массива,
  • научиться выводить зависимость между номером строки и номером столбца;
  • научиться заполнять двумерные массивы по заданному правилу,
  • развивать логическое мышление учащихся.

Оборудование: PC – 12 шт., мультимедиапроектор, ноутбук, экран-доска.

ПО (Программное Обеспечение): презентации «Матрицы. Столбцы и строки. Урок 1.ppt» и «Матрицы. Диагонали. Урок 2.ppt», файл «c:/PABCWork/Двумерные массивы», система программирования PascalABC, задания №№ 1-12 в файлах (c:/PABCWork/Заполнение матриц по правилу_1.doc и c:/PABCWork/Заполнение матриц по правилу_2.doc) на рабочих местах.

Файлы на Pascal: Пример1.pas, Пример2.pas, Над_под_главной.pas, Над_под_побочной.pas

Раздаточный материал: индивидуальные карточки-задания «Заполнение матриц по правилу_1» №№ 13-24 и «Заполнение матриц по правилу_2» №№ 13-24.

Ход занятия (1 урок)

На доске шаблон для матрицы (слайд 1)

1. Актуализация знаний (7-8 мин)

1) Что такое одномерный массив? (Массив — это пронумерованная последовательность величин одинакового типа, обозначаемая одним именем. Элементы массива располагаются в последовательных ячейках памяти, обозначаются именем массива и индексом. Каждое из значений, составляющих массив, называется его компонентой или элементом массива).

2) Размерность массива. (const n=10; или вручную)

3) Объявление (декларирование) массива. (var a:array[1..n] of {тип})

4) Формирование, ввод, заполнение массива:
  • ввод с клавиатуры; for i:= 1 to n write(‘Введите очередной элемент – ‘); readln(a[i]);)
  • с помощью генератора случайных чисел - randomize и функции Random;
  • по заданному правилу; (формирование числовых последовательностей)
  • или с помощью файла. (11 класс).

2. Изучение нового материала (20-22 мин).

1) Объявление темы урока. Работа с файлами на рабочих местах и распечатками файла («c:/PABCWork/Двумерные массивы»). Конспектирование определений: двумерный массив, матрица, размерность двумерного массива. Обращение к элементу матрицы (A[i,j]). Объявление, декларирование матрицы. Порядок матрицы (число строк (столбцов)).


Создание матрицы А(5*6)

{1 способ (ручной c помощью клавиатуры)}

Const M= 5; N=6;

Var    A: Array [1..M, 1..N] Of Integer ;

Begin

For i := 1 to m do

For j := 1 to n do Begin

Write(‘Введите очередной элемент массива: ’,i,’-я строка, ‘,j,’-ый столбец – ‘);

Readln(a[i,j];

End;

End.

Слайд №1
2) Слайд №1. Создаём массив вручную по образцу на слайде и сохраняем с именем «Массив 1.pas».

Для того, чтобы массив можно было вывести на экран, к программе добавляем цикл распечатки по строкам, обращаем внимание на необходимость ввода пустой строки и перехода на новую (Writeln;) и процедуру модуля Crt Delay (N:integer) для задержки вывода отдельных элементов. Так лучше наблюдать за технологией вывода массива на экран по строкам:

For i := 1 to m do Begin

For j := 1 to n do write(A[i,j]:4);

Writeln; delay(1000);

End;

Для закрепления представления о создании и выводе матрицы на экран несколько раз запускаем программу на исполнение, меняя M и N.


Создание матрицы А(5*6)

{2 способ (c помощью функции случайных чисел)}

Const M= 5; N=6;

Var    A: Array [1..M, 1..N] Of Integer ;

Begin

For i := 1 to m do Begin

For j := 1 to n do Begin

A[i,j] := random(100); write(A[i,j]:4);

End;

Writeln; delay(1000);

End;

End.

Слайд №2



3) Слайд №2. Создаём массив по образцу на слайде и сохраняем с именем «Массив 2.pas». Здесь сразу отмечаем, что для более компактной программы будет разумным введение в цикл создания массива процедур распечатки и задержки. Программа становится меньше в объёме и тут уместно будет вспомнить расхожее выражение времён начала программирования: Хороша верёвка длинная, а программа – короткая .



Свойства матрицы







j - столбцы







1

2

3

4

5

i – строки

1

1,1

1,2

1,3

1,4

1,5

2

2,1

2,2

2,3

2,4

2,5

3

3,1

3,2

3,3

3,4

3,5

4

4,1

4,2

4,3

4,4

4,5

5

5,1

5,2

5,3

5,4

5,5

Слайд №3