Конспект урока "Исполнитель Робот. Двумерные массивы" 9 класс

1
Юдин Андрей Борисович
учитель информатики МКОУ Плесской СОШ
Приволжского р-на, Ивановской обл
Уроки информатики в 9 классе
«Исполнитель Робот. Двумерные массивы»
Введение
Данная презентация завершает курс программирования на основе системы
исполнителей Полякова Константина Юрьевича «Исполнители 2.5» Первые шесть
презентаций были опубликованы на «Учительском портале» это: Уроки информатики по
теме "Исполнитель Робот. Основные алгоритмические конструкции"
http://www.uchportal.ru/load/17-1-0-56893 , Уроки информатики в 7 классе «Исполнитель
Робот. Учим робота считать» http://www.uchportal.ru/load/17-1-0-57986 и Уроки
информатики в 7 классе «Исполнитель Робот. Графика Windows»
http://www.uchportal.ru/load/17-1-0-60836 . Уроки информатике в 9 классе «Исполнитель
Робот. Вычислительные алгоритмы»
http://www.uchportal.ru/informatika/ispolnitel_robot_vychislitelnye_algoritmy Уроки
информатики в 9 классе «Исполнитель Робот. Массивы» http://www.uchportal.ru/uroki-
informatiki-ispolnitel-robot-massivy . Уроки информатики в 9 классе "Исполнитель Робот.
Строки" http://www.uchportal.ru/informatika/uroki-v-9-klasse-ispolnitel-robot-stroki-70929
К сожалению, время, отведенное на программирование не велико, и полностью
показать, тему «Двумерные массивы», так как я ее вижу, к сожалению не получается.
Поэтому в архиве две презентации. Первая это та, что я использую на уроках, вторая
это для факультативных и кружковых занятий. Описание привожу к первой презентации.
Ко второй презентации, свои размышления и комментарии в отдельном файле.
Занятие 1-3.
Заполнение двумерного массива по определенному правилу.
Слайд 1. Дается математическое понятие матрицы. Здесь неплохо рассказать
детям, что существует раздел математики, который рассматривает матрицы и операции с
ними.
Слайд 2. Показан один из примеров применения матриц, для моделирования
поверхности.
Слайд 3. Приводится определение двумерного массива в программировании.
Необходимо учитывать, что в некоторых языках программирования нумерация строк и
столбцов начинается с 0. Тогда как большинство нормальных людей привыкли считать
натуральными числами, т.е. с единицы.
А так же приводится текст задачи: Заполнить массив размером 5 x 5 по
следующему правилу:
11111
22222
33333
44444
55555
В данной задаче массив имеет фиксированные размеры, для первой задачи, это будет
понятнее учащимся.
Слайд 4. Показано решение задачи сформулированной на слайде 3.
Слайд 5. Показан фрагмент блок-схемы задачи сформулированной на слайде 3.
2
Слайд 6. Вводится понятие главной и побочной диагонали. И формулируется
условие задачи: Заполнить произвольный массив размером 5 x 5 по следующему правилу:
10000
01000
00100
00010
00001
Слайд 7. Показано решение задачи сформулированной на слайде 6.
Слайд 8. Показан фрагмент блок-схемы задачи сформулированной на слайде 6.
Слайды 10 -11. Показаны неравенства, определяющие различные части двумерного
массива.
Слайды 12- 14. Показаны различные задачи на заполнение массива. Причем
добавляется условие, что размер массива может изменяться. Для упрощения работы все
задачи на квадратные матрицы, т.е. количество строк, совпадает с количеством столбцов.
Занятие 4.
Заполнение массива с клавиатуры и случайными числами.
Слайд 15. Показано заполнение массива с клавиатуры.
Слайд 16. Показан фрагмент блок-схемы заполнения массива с клавиатуры.
Необходимо уточнить учащимся, что заполнены с клавиатуры массив, необходимо
вывести на экран в виде таблицы, во избежание ошибок при заполнении. Поэтому
добавим вывод на экран, заполненного массива.
Программа
{
int a[10][10];
int i,j,n,k;
// ввод с клавиатуры
cout <<"Размер матрицы ";cin >>n;
for(i=0;i<n;i=i+1)
{
for(j=0;j<n;j=j+1)
{
cout <<"Введи а[" <<i <<"][" <<j <<"]=";
cin >>a[i][j];
}
}
// вывод в виде таблицы
for(i=0;i<n;i=i+1)
{
for(j=0;j<n;j=j+1) cout <<a[i][j]:4 ;
coutln;
}
}
Слайд 17. Показан фрагмент программы заполнения массива случайными числами
из интервала. Массив этими же циклами выводится на экран в виде таблицы.
Слайд 18. Показана блок-схема заполнения массива случайными числами.
Слайд 19. Показан фрагмент решения задачи: Заполнить двумерный массив N x N
случайными числами из интервала [-10 ; 10] и найти сумму элементов лежащих на
главной диагонали.
3
Слайд 20. Показан фрагмент решения задачи: Заполнить двумерный массив N x N
случайными числами из интервала [-10 ; 10] и найти количество отрицательных элементов
лежащих на главной диагонали.
Слайд 21. Показан фрагмент решения задачи: Заполнить двумерный массив N x N
случайными числами из интервала [-10 ; 10] и найти максимальный элемент лежащий на
главной диагонали.
Слайд 22. Даны задачи для самостоятельного решения. Приведу возможные
варианты решения этих задач.
1. Заполнить двумерный массив N x N случайными числами из интервала [-10 ;
10], выяснить что больше сумма элементов лежащих над главной диагональю или под
главной диагональю.
Программа
{
int a[10][10];
int i,j,n;
cout <<"Размер матрицы ";cin >>n;
for(i=0;i<n;i=i+1)
{
for(j=0;j<n;j=j+1)
{
a[i][j]=random(21)-10;
cout <<a[i][j]:4 ;
}
coutln;
}
int s=0,s1=0;
for(i=0;i<n;i=i+1)
for(j=0;j<n;j=j+1)
{
if (i>j) s=s+a[i][j];
if (i<j) s1=s1+a[i][j];
}
coutln <<"Под главной диагональю " <<s;
coutln <<"Над главной диагональю " <<s1;
if (s>s1) cout <<"Под главной больше";
if (s<s1) cout <<"Над главной больше";
if (s==s1) cout <<"Одинаково";
}
2. Заполнить двумерный массив N x N случайными числами из интервала [-10 ;
10], все элементы большие среднего арифметического элементов массива, заменить на 0.
Массив повторно вывести на экран.
Программа
{
int a[10][10];
int i,j,n;
cout <<"Размер матрицы ";cin >>n;
for(i=0;i<n;i=i+1)
{
for(j=0;j<n;j=j+1)
{
a[i][j]=random(21)-10;
cout <<a[i][j]:4 ;
4
}
coutln;
}
int s=0;
for(i=0;i<n;i=i+1)
for(j=0;j<n;j=j+1)
{
s=s+a[i][j];
}
float sr=s/(n*n);
coutln <<"Среднее арифметическое " <<sr;
for(i=0;i<n;i=i+1)
{
for(j=0;j<n;j=j+1)
{
if (a[i][j]>sr) a[i][j]=0;
cout <<a[i][j]:4 ;
}
coutln;
}
}
3. Заполнить двумерный массив N x N случайными числами из интервала [-10 ;
10] и найти сколько раз в массиве встречается максимальное по величине число.
Программа
{
int a[10][10];
int i,j,n;
cout <<"Размер матрицы ";cin >>n;
for(i=0;i<n;i=i+1)
{
for(j=0;j<n;j=j+1)
{
a[i][j]=random(21)-10;
cout <<a[i][j]:4 ;
}
coutln;
}
int max=a[1][1];
for(i=0;i<n;i=i+1)
for(j=0;j<n;j=j+1)
{
if (a[i][j]>max) max=a[i][j];;
}
coutln <<"Максимальное " <<max;
int k=0;
for(i=0;i<n;i=i+1)
for(j=0;j<n;j=j+1)
{
if (a[i][j]==max) k=k+1;
}
coutln <<"Встречается " <<k <<" раз";
}
5
4. Заполнить двумерный массив N x N случайными числами из интервала [-10 ;
10]. Найти сумму элементов. И если она отрицательная, заменить все элементы массива на
противоположные по знаку, если положительная или 0, удвоить каждый элемент массива.
Массив повторно вывести на экран.
Программа
{
int a[10][10];
int i,j,n;
cout <<"Размер матрицы ";cin >>n;
for(i=0;i<n;i=i+1)
{
for(j=0;j<n;j=j+1)
{
a[i][j]=random(21)-10;
cout <<a[i][j]:4 ;
}
coutln;
}
int s=0;
for(i=0;i<n;i=i+1)
for(j=0;j<n;j=j+1) s=s+a[i][j];
coutln <<"Сумма " <<s;
for(i=0;i<n;i=i+1)
{
for(j=0;j<n;j=j+1)
{
if (s<0) a[i][j]= -a[i][j];
if (s>=0) a[i][j]= 2 * a[i][j];
cout <<a[i][j]:4 ;
}
coutln;
}
}
Фрагментарно эти решения приведены на слайдах 24-27. Слайды имеют атрибут
скрытые и при прямом пролистывании не видны. Переход к ним и возвращение обратно
возможны только по гиперссылке.
Список используемой литературы
1. Система «Исполнители 2.5» и методические рекомендации к ней. Автор: Поляков
К.Ю. http://kpolyakov.spb.ru/school/robots/methodic.htm
2. В.В. Подбельский, С.С.Фомин. Программирование на языке Си. М .: ФиС, 1999,
600 с.
3. Х.М.Дейтел., П.Дж.Дейтел. Как программировать на Си++. М .: ЗАО БИНОМ,
1999, 1000 с. (первые 600 страниц - изложение обычного Си, наиболее подходят
для начинающих).