Шевченко Ольга Викторовна учитель информатики
Учебное занятие «Вставка и удаление элементов массива»
Предмет: Информатика и ИКТ.
Класс: 10 (профиль).
Ключевые слова: информатика, практическая работа, программирование,
массивы, вставка, удаление элементов.
Тип урока: практическая работа.
Оборудование: Раздаточный материал; персональные компьютеры.
Литература:
1.
Попов В.Б. Turbo Pascal для школьников: Учебн. пособие - 3-е доп.
изд. – М.: Финансы и статистика, 2010, - 528 с.: ил.
2.
Семашко Г.Л., Салтыков
А.И. «Программирование на языке паскаль», М: «Наука», 2005 г.
3.
Фаронов В.В. «Turbo Pascal 7.0. Начальный курс», М: «Нолидж», 2007 г.
Цель работы:
-
разобрать принципы вставки
и удаления элементов в одномерных и двумерных массивах,
-
закрепить полученные
знания, путем решения задач.
Время выполнения: 2 урока.
Ход урока.
I.
Удаление элементов из массива.
Одномерный массив
|
Двумерный массив
|
Постановка задачи:
|
Дан массив A(N). Удалить
элемент, расположенный на месте k.
|
Дан массив B(N,M). Удалить столбец с номером k. (аналогично для
удаления строки)
|
Описание способа удаления:
|
Сдвинуть весь «хвост» массива, начиная с элемента с номером k+1, на одну позицию влево, т.е. выполняя операцию: ai=ai+1,
где i = k, k+1,
…, N-1
Полученный массив
будет содержать N-1 элемент.
|
Сдвинуть все столбцы, начиная с k+1 по m на одну позицию влево, выполнив операции:
Для j от 1 до m-1 делать
Перебрать все
строки с 1 по n, выполнив
ai,j=ai,j+1
В новом массиве
будет M-1 столбец.
|
Пример:
|
Дано: 3 5 7 8 9 N=5, k=2
Операции: a2:=a3;
a3:=a4; a4:=a5
Итог: 3 7
8 9
|
Дано: N=3, M=4, k=2 Операции: Результат:
1 5 2 7 a1,2:=a1,3;
a1,3:=a1,4;
1 2 7
8 4 3 5 a2,2:=a2,3;
a2,3:=a2,4;
8 3 5
0 9 1 4 a3,2:=a3,3;
a3,3:=a3,4;
0 1 4
|
Программа
|
Program
pr1;
Uses crt;
Var a:array [1..100] of
integer;
n, k, i:byte;
Begin
Clrscr;
Randomize;
Writeln(‘Введите
количество элементов’);
Readln(n);
Writeln(‘Введите
№ удаляемого элемента’);
Readln(k);
{формирование
массива случайным образом}
For i:=1 to n do begin
a[i]:=random(101)-50;
write(a[i]:4)
end;
writeln;
{удаление
заданного элемента}
For i:=k to n-1 do
a[i]:=a[i+1];
{вывод итогового массива}
For i:=1 to n-1 do
write(a[i]:4);
readln
end.
|
program
pr2;
uses crt;
var b:array[1..100,1..100] of
real; i,j,m,n,k:byte;
begin
clrscr; randomize;
writeln('Введите кол-во строк и столбцов');
readln(n,m);
writeln('Введите
№ удаляемого столбца');
readln(k);
for i:=1 to n do begin {формируем
массив}
for j:=1 to m do begin
b[i,j]:=51*random-25;
write(b[i,j]:8:2)
end; writeln
end;
for j:=k to m-1 do {удаляем k-ый столбец}
for i:=1 to n do
b[i,j]:=b[i,j+1];
writeln;
{выводим полученный
массив}
for i:=1 to n do begin
for j:=1 to m-1 do begin
write(b[i,j]:8:2)
end;
writeln
end;
readln end.
|
Задачи для самостоятельного решения:
1.
В одномерном массиве A(N) найти
min элемент и удалить его.
2.
В двумерном массиве B(N,M)
удалить строку с номером k. При этом выполнить проверку: не превышает ли
значение k количества строк массива B.
II. Вставка (включение) элементов в массив.
Одномерный массив
|
Двумерный массив
|
Постановка задачи:
|
Дан массив A(N). Включить
на k место в этом массиве элемент, равный m.
|
Дан массив B(N,M). Добавить столбец с номером k. Элементы нового
столбца равны элементам массива C(N).(аналогично
для добавления строки)
|
Описание способа удаления:
|
Перед включением заданного элемента в массив, необходимо раздвинуть
этот массив, т.е. передвинуть «хвост» массива вправо на одну позицию, т.е.
выполняя операцию: ai+1=ai, где i = N, N-1, …, k. Перемещение
элементов массива начинаем с конца, в противном случае весь хвост массива
заполнится k-ым элементом.
Размер массива
увеличится до N+1 элемента.
|
Сдвинуть все столбцы, начиная с m по k на одну позицию вправо, выполнив операции:
для j от m до k делать
Перебрать все
строки с 1 по n, выполнив
ai,j+1=ai,j
Затем в i=1-ой по n строках ai,k:=ci
В новом массиве
будет M-1 столбец.
Важно: при добавлении столбца (строки) в двумерный массив, элементы этого
столбца (строки) берутся из дополнительного одномерного массива размером =
кол-ву строк двумерного массива (=кол-ву столбцов) либо вводятся с
клавиатуры.
|
Пример:
|
Дано: 3 8 7 6 5 N=5, k=2, m=4
Операции:
a6:=a5=5; a5:=a4=6; a4:=a3=7;
a3:=a2=8
a2:=m=4
Итог: 3 4
8 7 6 5
|
Дано: N=3, M=4, k=3 Операции: Результат:
C(N)={6,8,2} a1,5:=a1,4;
a1,4:=a1,3;
1 5 6 2 7
1 5 2 7 a2,5:=a2,4;
a2,4:=a2,3;
8 4 8 3 5
8 4 3 5 a3,5:=a3,4;
a3,4:=a3,3;
0 9 2 1 4
0 9 1 4
|
Программа
|
Program
pr3;
Uses crt;
Var a:array [1..100] of
integer;
n,k,i:byte; m:integer;
Begin
Clrscr;
Randomize;
Writeln('Введите количество элементов');
Readln(n);
Writeln('Введите
№ включаемого элемента');
Readln(k);
Writeln('Введите
значение включаемого эл-та');
Readln(m);
{формируем массив}
For i:=1 to n do begin
a[i]:=random(101)-50;
write(a[i]:4)
end; writeln;
{раздвигаем эл-ты
массива}
For i:=n downto k do
a[i+1]:=a[i];
{заносим новый
эл-т на k-ую позицию}
a[k]:=m;
{выводим
получившийся массив}
For i:=1 to n+1 do
write(a[i]:4);
readln
end.
|
program
pr4;
uses crt;
var b:array[1..100,1..100] of
real; i,j,m,n,k:byte;
c:array[1..100] of real;
begin
clrscr; randomize;
writeln('Введите
кол-во строк и столбцов');
readln(n,m);
writeln('Введите
№ добавляемого столбца');
readln(k);
for i:=1 to n do begin {формируем
исходный массив}
for j:=1 to m do begin
b[i,j]:=51*random-25;
write(b[i,j]:8:2)
end;writeln;end;writeln;
for i:=1 to n do begin {форм.
массив доб-го столбца}
c[i]:=51*random-25;
write(c[i]:8:2)
end; writeln; writeln;
for j:=m downto k do {раздвигаем
столбцы}
for i:=1 to n do
b[i,j+1]:=b[i,j];
for i:=1 to n do {добавляем
столбец}
b[i,k]:=c[i];
writeln;
for i:=1 to n do begin {выводим
полученный массив}
for j:=1 to m+1 do begin
write(b[i,j]:8:2)
end; writeln
end; readln end.
|
Задачи для самостоятельного
решения:
1.
В одномерном массиве A(N) найти
max элемент и вставить за ним элемент равный 2*max.
2.
В двумерном массиве B(N,M) вставить
k-ую строку элементов массива C(M). При этом выполнить проверку: не превышает
ли значение k количества строк массива B.
Рефлексия
Обсуждение итогов работы по данной теме в ходе освещения
следующих вопросов:
1. Какая технология используется при удалении
элементов массива
2. Что общего при удалении элементов одномерного
и многомерного массива (Аналогичное обсуждение ситуации с добавлением массива).
3. Подведение итогов – выставление оценок.
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.