SlideShare ist ein Scribd-Unternehmen logo
1 von 57
1
МЕТОДИЧЕСКОЕ ПОСОБИЕ
«МАССИВЫ»
ТВОРЧЕСКИЙ ПРОЕКТ
Ивановой Ирины Александровны
2
СОДЕРЖАНИЕ
Пояснительнаязаписка 2
Глава 1. Методика изучения одномерных массивов 5
1.1 Понятие массива. Виды массивов 5
1.2 Одномерный массив. Работа с элементами
одномерного массива. Ввод и вывод элементов
одномерного массива 8
1.3 Составление и реализация программ с элементами
одномерного массива. Поиск данных. Сортировка элементов
одномерного массива 12
1.4 Практическая работа «Составление и реализация программ
по обработке элементов одномерного массива» 20
Глава 2. Методика изучения двумерных массивов 28
2.1 Двумерный массив. Работа с элементами
двумерного массива. Ввод и вывод элементов двумерного
массива 28
2.2 Составление и реализация программ с элементами
двумерного массива. Поиск данных. Сортировка элементов
в двумерном массиве 32
2.3 Практическая работа «Составление и реализация программ
по обработке элементов в двумерном массиве» 39
Глава 3. Проверка знаний обучающихся по изученой
теме и применении их при составлении более сложных
задач 47
3.1 Составление и реализация более сложныхзадач, включающих
одномерные и двумерные массивы 47
3.2 Тематическая аттестация «Массивы». 49
Заключение 53
Литература 55
3
Пояснительнаязаписка.
КОМПЬЮТЕРЫ решают сегодня самыеразнообразныезадачи – управляют
технологическими процессами, доказывают теоремы, переводят тексты с
одного языкана другой, рисуют картины, сочиняютмузыку, играют в шахматы.
Между тем компьютеры, так же как и предшественники – электронно -
вычислительные машины, появившиеся более полувека назад, вычисляют
самые элементарные арифметические или логические операции. Для того,
чтобы машина решила любую задачу необходимо, чтобы в память её была
введена соответствующая программа. Она представляет собой
последовательность команд, указаний машине – вычисление той или иной
операции, которая в совокупности описывает достаточно сложное действие.
Если в компьютер введена программа расчета космической траектории, то
машина последовательно вычисляет координаты точек этой траектории. Если
же в памяти машины находится программа шахматной игры, то та же
программа может стать партнёром в интересной игре.
Я хочу познакомить вас с одним из разделов программирования –
МАССИВЫ, описанном мною в методическом пособии «10 часов, которые
помогут изучить «МАССИВЫ»». Изучение и исследование этой темы в
программировании является актуальным так как в определённой степени
решают вопрос по созданию различных задач и программ не только по
информатике, а так же и по другим изучаемым предметам : математике, физике,
химии, биологии и т.д.
Ведь говоря о программировании в дальнейшем, можно смело сказать, что
оно не возможно без элементарных знаний по обработке данных, но нельзя
приступить к изучению темы «Массивы» не зная циклов и не умея строить
циклические программы.
В современном учебном плане в любой школе или гимназии, где есть
класс ВТ, очень часто стараются связать изучение других предметов с умением
работать на компьютере, в частности будем иметь в виду программирование.
Особенно это касается таких предметов как математика, физика, химия.
… Так вот. Хорошо зная одномерные и двумерные массивы, ученики уже
могут свободно составлять программы, выполняя физические и химические
практикумы, использовать знания на уроках геометрии, стереометрии, что
довольно часто практикуется в нашей гимназии №26 г. Стаханова.
Создание бинарных уроков, возможность применения своих знаний
конкретно на практике, повышает интерес учеников к изучению данной темы,
повышает успеваемость, качество знаний, а так же желание не останавливаться
на достигнутом и желание в дальнейшем использовать полученные знания и
умения при решении более сложных задач.
4
Какая же основная цель ставится при изучении данной темы? Это прежде
всего передать необходимый объём знаний ученикам по данной теме,
сформировать практические навыки по созданию программ и алгоритмов,
научить применять их как при изучении информатики в дальнейшем, так и при
изучении других предметов, способствовать развитию внимания, логического
мышления, памяти, а так же способствовать воспитанию силы воли и
целеустремлённости, без которой изучение программирования невозможно.
Задачи, поставленные для достижения нашей цели - прежде всего:
 изучить научно-педагогический материал по психологии, информатике,
методике преподавания информатики;
 проанализировать опыт ведущих учителей информатики в выборе
активных форм и методов обучения информатики, их практическую
деятельность по данной теме;
 систематизировать и углубить существующие материалы по данной теме;
 обобщить и систематизировать накопленный материал по данной теме.
Определив конкретно цели и задачи, кратко остановимся на структуре
работы, которая состоит из введения, глав и подпунктов,
заключения, литературы и приложений.
В главе1 излагаются теория и практика по изучению и составлению программ
с использованием команд обработки элементов одномерных массивов. Глава1
подразделяется на пункты, каждый из которых посвящён определённому
разделу темы.
Глава2 – так же посвящена изучению теоретического и практического
материала по созданию программ, но уже по обработке элементов двумерного
массива. В главе 2 предлагается текст практической работы по закреплению
знаний и умений работать с элементами двумерного массива, а так же тесты по
проверке и закреплению знаний учеников по данной теме.
Глава3 – представлены и разобраны более сложные программы по обработке
элементов одномерных и двумерных массивов.
В главе 3 предлагается варианты тематических аттестационных работ по
закреплению и проверке знаний учеников.
В заключении хотелось бы отметить некоторых ведущих специалистов в
области информатики, книги которыхвсегда являются настольными, благодаря
изучению которых собственные знания накапливаются, систематизируются и
позволяют создать свою методику по изучению определённой темы.
Прежде всего – книга «Методика преподавания информатики», в которой автор
А.И. Бочкин выделяет наиболее устойчивые, общезначимые объекты в
методике преподавания информатики.
Одним из интереснейших учебных пособий по информатике является пособие
Т. Грызловой и В. Грызлова «TURBO PASCAL 7.2», в которой автор в
соответствии с программой по информатике излагает основные понятия
5
информатики, вопросы моделирования, составления алгоритмов и программ на
языке TURBO PASCAL.
Книга «Начала программирования» автора Г. Григаса знакомит нас с
основными понятиями программирования.
Неоценимую помощь при подготовкек практическим занятиям оказывает книга
А.Я. Савельевой «Практикум по программированию», в котором всегда можно
подобрать разнообразные задачи различного характера.
В заключении небольшого обзора используемой литературы отметим довольно
известную книгу В.А. Каймина «Основы информатики и вычислительной
техники», в которойочень доступно, ярко освещены вопросы алгоритмизации,
показана связь алгоритма с созданием программы.
6
ГЛАВА 1. Методика изучения одномерногомассива.
Для удобства изучения материала, на который отводится 10 часов в школьной
программе, разобьём его на 10 уроков. Наиболее удобными формами обучения
(согласно собственным наблюдениям) являются: лекционно – практическая и
тестовая при закреплении.
Итак:
1.1 Понятие массива.Виды массивов.
УРОК 1. Понятие массива. Виды массивов.
…Программированию нельзя научить,
а можно лишь научиться…
В математике, экономике, информатике часто используются
упорядоченные наборы данных, например, последовательность чисел,
таблицы, списки фамилий.
Информацию часто удобно представлять в виде таблиц. Наиболее
привычными являются прямоугольные таблицы, то есть таблицы,
состоящие из строк и столбцов. Можно представить таблицу, которая
состоит из одной строки или одного столбца. Это будет линейная таблица,
то есть таблица, имеющая одно изменение.
Табличные величины относятся к составным величинам, так как включают
в себя другие величины, называемые элементами. В линейных таблицах
элементами являются ячейки, а в прямоугольных таблицах – записи.
Запись - это структурированный тип данных, который состоит из
фиксированного числа компонентов одного или нескольких типов.
Рис. 1.1. Пример записей. Расписание уроков
Существует множество задач обработки информации, заданной в форме
таблиц. К таким задачам относятся:
 изменение элементов таблицы (редактирование таблицы,
математические действия над элементами и т.д.);
День недели Номер
урока
Предмет Аудит.
Понедельник 1 Математика 15
Понедельник 2 Английский язык 15
Понедельник 3 Биология 15
Понедельник 4 Информатика 20
7
 поиск элементов, удовлетворяющих определённому
критерию(максимальных, минимальных значений, фрагментов текста и
т.д.);
 обработка значений таблицы (нахождение сумм и произведений
элементов и т.д.);
 сортировка таблиц, то есть упорядочение элементов по возрастанию
(убыванию).
В примерах таблиц на рис. 1.2 ячейки содержат однотипные данные: в
прямоугольной таблице - это целые числа, а в линейной таблице -
строковые величины. Эти таблицы называют массивами.
Массив - упорядоченный набор, имеющий одно имя и состоящий из
фиксированного числа однотипных элементов.
Массив обозначается одним именем. Так совокупность чисел
1.6, 14.9, -5.0, 8.5, 0.46 можно считать массивом и обозначить одним
именем, например А.
Каждый элемент массива обозначается именем с индексом. Элементы
массива упорядочены по значению индекса.
В математике, как правило, индекс либо заключается в круглые скобки,
либо указывается несколько ниже имени массива, например: А(1), А(2),
А(3), А(4), А(5), или А1, А2, А3, А4, А5 или в общем виде [Ai], где i=1, 2,
3, …,N.
На TURBO PASCAL 7.0 A[1]:=1.6, A[2]:=14.9, A[3]:=-5.0, A[4]:=8.5,
A[5]:=0.46.
Таким образом – индекс определяет положение элемента массива
относительно его начала.
Если в программе используется массив, то он должен быть
обязательно описан.
Форма описания массива:
VAR ИМЯ МАССИВА: ARRAY[N1 ..N2] OF <тип переменных>;
VAR A:ARRAY[1..1000] OF INTEGER;
Здесь N1, N2 – номер первого и последнего элементов массива
соответственно. В качестве типа элемента может использоваться любой тип
данных, за исключением файлового.
Если несколько массивов имеют одинаковый тип индексов и
одинаковый базовый тип, то допускается в описании объединять массивы
в список, например:
VAR A,B,C:ARRAY[1..50] OF INTEGER;
Здесь объявлено списком три массива А, В, С действительных чисел,
каждый из которых содержит по 50 элементов (от 1 до 50 ).
8
Нельзя путать понятия «индекс» и «тип индекса». Тип индекса
используется только в разделе описания массива, а индекс указывается в
разделе операторов для обозначения конкретных элементов массива. При
этом индекс должен быть того же типа, что и описание типа индекса.
В качестве индекса может быть выражение, частным случаем которого
является константа или переменная. Элемент массива иначе называется
переменной с индексом. В отличие от неё, переменная без индекса
называется просто переменной.
Элементы массива могут стоять как в левой части оператора присваивания,
так и в выражениях. Над элементами массива можно производить те же
операции, которые допустимы для данных его базового типа. Если
базовый тип есть INTEGER, то допустимы все операции целого типа,
включая и стандартные функции.
В языке TURBO PASCAL 7.2 помимо явного описания массивов в
разделе переменных имеется другая форма описания, состоящая из двух
этапов. Сначала в разделе описания типов TYPE указывается тип массива.
Затем в разделе описания переменных VAR перечисляются массивы,
относящиеся к указанному типу.
Введение типа массива увеличивает раздел описаний, но в то же время
упрощает отладку программы.
Указание типов в разделе описаний помогает достичь логической
ясности программы и является хорошим стилем программирования.
Описание массива в разделе TYPE выглядит следующим образом:
TYPE MASSIV=ARRAY[N1 ..N2] OF <тип элементов>.
Здесь N1 и N2 – номер первого и последнего элементов массива, а тип
массива определяется так же, как и в предыдущем описании.
Определить переменную как массив можно непосредственно при её
описании:
VAR A,B,C: MASSIV;
Следует отметить, что массивы А,В,С используются в разделе операторов
программы. Тип массива MASSIV введён формально только в разделе
описаний и нигде в программе не указывается и не обрабатывается.
Следует отметить, что размерность массива задаётся при его описании и в
процессе работы программы размерность массива изменять нежелательно.
Применение индексированных переменных даёт эффект лишь в том
случае, когда сам индекс не может быть переменной величиной.
9
Б)
А)
А)
А)
Рис. 1.2. Примеры таблиц:
А) линейная таблица, содержащая названия месяцев;
Б) прямоугольная таблица значений N, N2, N3 натуральных чисел.
С помощью операторов цикла можно работать со списком, включающим
500 наименований, так же легко, как и со списком из 5 наименований.
На следующих уроках я предлагаю рассмотреть одномерные и двумерные
массивы.
Но прежде чем закончить данную лекцию, хотелось бы предложить
несколько вопросов для закрепления изложенного материала:
1. Что такое массив?
2. Для чего служат индексы массива?
3. Что общего между строкой и массивом?
4. Что такое запись?
5. Приведите примеры записей?
6. Какие существуют виды массивов?
7. Чем отличаются одномерные массивы от двумерных?
ЯНВАРЬ
ФЕВРАЛЬ
МАРТ
АПРЕЛЬ
МАЙ
ИЮНЬ
ИЮЛЬ
АВГУСТ
СЕНТЯБРЬ
ОКТЯБРЬ
НОЯБРЬ
ДЕКАБРЬ
1 2 3 4 5 6 7
1 4 9 16 25 36 48
1 8 27 24 125 206 343
10
1.2 Одномерный массив. Работа с элементами
одномерного массива.
Ввод и вывод элементов одномерного массива.
УРОК 2. Одномерный массив. Работа с элементами одномерного
массива. Ввод и вывод элементов одномерного массива.
ОДНОМЕРНЫЙ МАССИВ – это линейно упорядоченная совокупность
элементов одного и того же типа.
Характерные особенности массива:
 тип элементов массива должен быть конкретно описан. К каждому
элементу массива должен быть прямой доступ.
 число элементов массива определяется в момент его описания и
далее не меняется.
Описать массив можно следующим образом:
1-ый способ.
TYPE имя типа = ARRAY [тип индекса] OF тип компонент массива;
VAR идентификатор массива: имя типа;
Пример:
TYPE MAS = ARRAY [1..5] OF INTEGER;
VAR A: MAS;
2-ой способ:
VAR идентификатор массива : ARRAY [M..N] OF тип элементов массива;
где M, N – константы целого типа.
Пример:
A: ARRAY[1..5] OF INTEGER;
B: ARRAY[5..10] OF REAL;
Один и тот же массив А был описан в приведенных примерах двумя
способами.
При обращении к массиву необходимо указать идентификатор переменной-
массива, а так же её индекс, который указывает на местонахождение
значения в массиве. Индекс записывается возле идентификатора
переменной массива в квадратных скобках. Тип индекса может
принадлежать к любому скалярному типу, кроме действительного. Индекс
массива часто называют счётчиком массива. Именно счётчик указывает
расположение элемента в строке.
Пример: A[1], A[5], D[2].
11
TURBO PASCAL не имеет способов одновременного ввода/вывода всех
элементов массива, поэтому ввод и вывод в одномерном массиве
осуществляется поэлементно.
Пример: ввести и вывести на экран элементы массива А: -3, 10, 150, 0.
Об этом массиве мы можем сказать, что длина массива А – 5 элементов.
Значения можно представить как целые числа.
Program primer;
Var A: Array[1..5] of integer;
i: integer;
Begin
For i:= 1 to 5 do
Begin
Write(‘A=’); Readln(A[i]);
End;
For i: =1 to 5 do
Begin
Writeln(‘A[‘,I,’]=’,A[i])’);
End;
End.
Ввод и вывод элементов массива А можно осуществить и таким образом:
Program primer;
Var A: Array[1..5] of integer;
i: integer;
Begin
For i:= 1 to 5 do
begin
Write(‘A=’); Readln(A[i]);
Writeln(‘A[‘,I,’]=’,A[i])’);
End;
End.
Для закрепления изученного материала предлагается выполнить следующие
задания:
Задание 1: ввести и вывести на экран элементы массива К: 0.75, 15.5,
125, -25.751, 1000.
Описание массива
Вывод элементов одномерного
массива
Описание массива
Ввод и вывод элементов
одномерного массива А -
объеденены
Ввод элементов одномерного
массива
12
Программа:
Program primer1;
Uses crl;
Var K: Array[1..5] of real;
i: integer;
Begin
Clrscr;
Fori:= 1 to 5 do
begin
Write(‘K=’); Readln(K[i]);
Writeln(‘K[‘, i ,’]=’, K[i]:10:2);
End;
End.
В данной программе при выводе элементов массива К на экран
используется следующая запись: K[i]:10:2. Объяснить это можно так: для
вывода значений на экран отводится 10 общих позиций и для вывода
знаков после запятой отводится 2 позиции, это значит, что значение -
25.751 на экране будет выглядеть следующим образом:
Задание 2: ввести элементы массива С: -0.755, 125.75, 0, -12500.
вывести на экран только положительные элементы
массива С.
Программа:
Program primer2;
Uses crl;
Const N=4;
Var C: Array[1..N] of real;
i: integer;
Begin
Clrscr;
Fori:= 1 to 4 do
begin
Write(‘C=’); Readln(C[i]);
If C[i]>=0 Then Writeln(‘C[‘, i ,’]=’, C[i]:10:2);
End;
End.
13
Вопросы для закрепления:
1. Как определяется место элемента в одномерном массиве?
2. Дать определение одномерному массиву?
3. Перечислить характерные особенности одномерного массива.
Задание на дом:
Задание: Обозначим одномерный массив действительных чисел именем Х.
Кол-во элементов в массиве Х – 10. Составить программу ввода элементов
массива Х и вывода на экран только отрицательных значений.
1.3 Составление и реализация программ с элементами
одномерного массива. Поиск данных. Сортировка
элементов в одномерном массиве.
УРОК 3. Составление и реализация программ с элементами
одномерногомассива. Поиск данных. Сортировка
элементов в одномерном массиве.
Зная и умея правильно описывать, вводить и выводить элементы
одномерного массива, а так же умея строить команду выбора, перейдём к
более сложным операциям работы с одномерным массивам и наиболее
удобно рассматривать их на конкретных примерах.
Одними из самых простых операций с элементами одномерного массива
являются нахождение суммы произведения элементов. Рассмотрим
несколько задач:
ЗАДАЧА 1: Составить программу нахождения суммы S, элементов
одномерного массива А, длина которого – 10 элементов.
Программа:
Program primer1;
Uses crl;
Const N=10;
Var A: Array[1..N] of integer;
i: integer;
S: integer;
14
Begin
Clrscr;
S:=0;
Fori:= 1 to N do
Вegin
Write(‘A=’); Readln(A[i]);
S:= S+A[i];
End;
Writeln(‘S=’, S[i]);
End.
В данной программе следует обратить внимание на командную строку:
S:=0. Это объясняется тем, что перед накоплением суммы чисел, сумма
обнуляется. Поэтому эту команду необходимо установить в начале
программы, перед открытием цикла. Команда вычисления суммы строится
по правилам математики: к предыдущему значению суммы добавляется
следующее значение: S:= S+A[i].
ЗАДАЧА 2 (самостоятельно): Составить программу нахождения суммы S,
не нулевых элементов одномерного массива А, длина которого – 10
элементов.
Программа:
Program primer2;
Uses crl;
Const N=10;
Var A: Array[1..N] of integer;
i: integer;
S: integer;
Begin
Clrscr;
S:=0;
Fori:= 1 to N do
Вegin
Write(‘A=’); Readln (A[i]);
IF A[i] <> 0 THEN S:= S+A[i];
End;
Writeln (‘S=’, S);
End.
15
В данной программе следует обратить внимание на командную строку IF
A[i] <> 0 THEN S:= S+A[i] , в которой перед накоплением суммы:
S:=S+A[i], элемент массива A[i] проверяется согласно условию задачи: IF
A[i]<> 0.
ЗАДАЧА 3: Составить программу нахождения произведения D, элементов
одномерного массива F, длина которого – N элементов.
Программа:
Program primer 3;
Uses crl;
Const N=10;
Var F: Array[1..N] of integer;
i: integer;
D: integer;
Begin
Clrscr;
D:=1;
Fori:= 1 to N do
Вegin
Write (‘F=’); Readln(F[i]);
D:= D*F[i];
End;
Writeln (‘МАССИВ F:’);
Fori:= 1 to N do
Вegin
Writeln (‘F[’,I,’]=’,F[i});
End;
Writeln (‘D:=’,D);
End.
Для закрепления задач на нахождение суммы и произведения элементов
массива предлагается следующая задача:
ЗАДАЧА 4 (самостоятельно): Составить программу нахождения
произведения D, положительных элементов одномерного массива K: -5,
0.5, 1.75, -2.245, 3 .
Программа:
Program primer 4;
Uses crl;
Var K: Array[1..5] of real;
16
i: integer;
D: real;
Begin
Clrscr;
D:=1;
For i:= 1 to 5 do
Вegin
Write (‘K=’); Readln (K[i]);
IF K[i] > =0 THEN D:= D*K[i];
End;
Writeln (‘K=’, K[i]: 10:1);
End.
Следующий тип задач с элементами одномерного массива – это поиск
элементов с условием.
Ярким примером, иллюстрирующим данный тип задач, является нахождение
минимального (максимального) элемента в одномерном массиве.
ЗАДАЧА 5: Составить программу нахождения MAX элемента в одномерном
массиве А: -5, 50, 1.75, -2.245, 100, 0 .
Программа:
Program primer 5;
Uses crl;
Var A: Array[1..6] of real;
i: integer;
MAX: real;
Begin
Clrscr;
Fori:= 1 to 6 do
Вegin
Write (‘A=’); Readln (A[i]);
End;
MAX:=A[1};
For i:= 2 to 6 do
Вegin
If A[i}>= MAX THEN MAX:= A[i};
End;
Writeln (‘MAX:=’, MAX : 5 :1);
End.
17
В данной программе следует обратить внимание на командную строку
MAX:=A[1]. Это значит, что после ввода данных, но перед сравнением
элементов необходимо за максимальное значение принять значение первого
элемента и затем при сравнении, если значение последующих элементов
больше максимального значения, то последнее значение принимает значение
большего.
Для закрепления этого типа задач для самостоятельной работы
предлагается следующая задача:
ЗАДАЧА 6 (самостоятельно): Составить программу нахождения MIN
элемента в одномерном массиве А: -5, 50, 1.75, -2.245, 100, 0 .
Программа:
Program primer 6;
Uses crl;
Var A: Array[1..6] of real;
i: integer;
MIN: real;
Begin
Clrscr;
Fori:= 1 to 6 do
Вegin
Write (‘A=’); Readln (A[i]);
End;
MIN:=A[1};
Fori:= 2 to 6 do
Вegin
If A[i} < MIN THEN MIN:= A[i};
End;
Writeln (‘MIN:=’, MIN : 5 :1);
End.
Данная задача отличается командной строкой If A[i] < MIN THEN MIN:=
A[i}, т.е. меняется только условие If A[i] < MIN … .
Говоря о работе с элементами в одномерном массиве, а конкретнее о
задачах на поиск элементов с условием, следует обратить внимание на
задачи по упорядочению элементов в одномерном массиве по возрастанию
(убыванию). Существует много методов решения подобных задач. наиболее
популярным является «метод пузырька».
18
«МЕТОД ПУЗЫРЬКА» основан на перестановке соседних чисел. Для
упорядочения элементов массива производим повторные обращения к
массиву, каждый раз перемещая наименьший элемент части массива, что
остается на начало.
Перемещение элементов массива происходит следующим образом:
пересматриваем элементы массива справа налево, сравнивая пары соседних
чисел; если числа в паре размещены в порядке возрастания, то оставляем
без изменения, а если нет – то меняем их местами. В результате первого
прохода наименьший элемент массива будет поставлен в начало массива.
Во втором проходе такие операции выполняются над элементами с
последующего до второго, а в третьем – с последующего до третьего и
т.д. Упорядочение массива будет закончено, когда при проходе массива не
выполняется ни одной перестановки элементов массива. Факт перестановки
фиксируется переменной PRAP, которая в самом начале имеет значение 0,
приобретает значение 1 тогда, когда выполняется перестановка в какой-
либо паре.
Флажок PRAP используется с целью экономии времени в том случае,
когда часть элементов массива вначале упорядочена.
Для закрепления выше сказанного рассмотрим пример:
Program BUBBLESORT;
Uses CRT;
Const N=10; (количество элементов массива)
Var A: array[1..N] of integer; (описание массива)
I,j : integer; (вспомогательные переменные)
ADOP: integer; (вспомогательная переменная)
PRAP: integer;
Begin
Clrscr;
Writeln (‘Ввести элементы массива:’);
For i:=1 to N do
Begin
Write (‘A[‘,I,’]=’); Readln (A[i]);
End;
Writeln (‘Массив к сортированию:’);
Writeln;
For i:=1 to N do Writeln (A[i]:5);
WRITELN;
I:=2;
Repeat PRAR:-0;
For j:=N Downto i do
19
Begin
If A[j] < A[j-1] Then
Begin
ADOP:=A[j-1];
A[j-1]:=A[j];
A[j]:=ADOP;
PRAP:=1;
End;
End;
I:=i+1;
Until PRAP=0;
Writeln;
Writeln (‘Массив после сортирования:’);
Writeln;
For i:=1 to N do
Writeln (A[i]):5);
Writeln;
End.
Кроме, рассмотренного выше «метода пузырька», упорядочение элементов
массива производить и методом выбора минимального элемента.
Метод «ВЫБОРА МИНИМАЛЬНОГО ЭЛЕМЕНТА» основан на том, что
массив пересматривается:
первый раз – выбирается минимальный элемент этого массива, который
меняется местами с первым элементом массива; второй раз - массив
пересматривается с другого элемента. Снова находится минимальный
элемент, который меняется местами с другим элементом массива.
Данный процесс выполняется до тех пор, пока не будет поставлено на
место N-1 ый элемент.
Рассмотрим упорядочение массива методом выбора минимального элемента:
Program MINSORT;
Uses CRT; { кол-во элементов массива }
Const N=10;
Var A: array[1..N] of integer; { описание массива }
I,j : integer; { вспомогательные переменные }
A min: integer; { вспомогательная переменная для
минимального элемента массива }
L: integer; { порядковый номер минимального
20
элемента массива }
Begin
Clr Scr;
Writeln (‘Ввести элементы массива’);
For i:=1 to N do
Begin
Write (‘A[‘,I,’]=’); Readln(A[i]);
End;
Writeln (‘ Массив к сортированию:’);
Writeln;
For i:=1 to N do
Write (A[i]:5);
Writeln;
For i:=1 to N do
Begin
Amin:=A[i];
L:=I;
J:=i+1;
While J<=N do
Begin
If Amin>A[j} Then
Begin
Amin:=A[j];
L:=j
End;
J:=J+!;
End;
A[l]:=A[i];
A[i]:=Amin;
End;
Writeln;
Writeln (‘Массив после сортирования:’);
Writeln:
For i:=1 to N do
Write (A[i]:5);
Writeln;
End.
Для закрепления изложенного материала предлагается следующая
самостоятельная работа:
21
ЗАДАЧА 7( самостоятельно ): Дан массив В: -5, 0, 100, -0.75, -50, 75, 1000.
Упорядочить данный массив в порядке убывания ( использовать любой
метод сортировки).
Вопросы для закрепления:
1. Дать определение одномерномумассиву?
2. Как описывается одномерный массив?
3. Каким образом осуществляется обращение к элементам одномерного
массива?
4. Как вводить элемент одномерного массива в память компьютера?
5. Какая идея лежит в основе алгоритма нахождения максимального или
минимального элемента одномерного массива?
6. Как организовать вывод результатов обработкимассивов?
Задание на дом:
Задание 1: Дан одномерный массив чисел Х.
Кол-во элементов в массиве Х – 15. Составить программу упорядочения
элементов массива по убыванию (метод сортирования выбрать по
желанию).
Задание 2*: Даны два одномерных массива А и В – одинаковой длины.
Упорядочить массив А по возрастанию, а массив В по убыванию. Получить
массив С, путем сложения массива А и массива В, а затем упорядочить массив
С по возрастанию.
1.4 Практическая работа «Составление и реализация
программ обработки элементов одномерного массива».
УРОК 4. Практическая работа«Составление и реализация
программ обработки элементов одномерного массива».
После изучения раздела темы предлагается практическая работа, которая
включает контрольные вопросы, тесты и выполнение заданий конкретно по
составлению программ на языке TURBO PASCAL.
Практическая работа построена так, что выполнив одно задание, было легко
работать дальше.
22
В цели практической работы отмечено то, что необходимо усвоить, какие
практические навыки необходимо приобрести, какие знания и умения следует
закрепить. Именно для достижения этих целей и предлагаются задания, которые
в свою очередь конкретизируются пунктами. Каждый пункт следует выполнять
в определенном порядке, так как они предусматривают нарастание уровня
сложности, а в некоторых случаях выполнение последующих невозможно без
выполнения предыдущих.
Практические работы представлены в двух формах.
Все задания можно разбить на четыре уровня:
I. первый уровень является достаточно легким, его не трудно выполнить без
помощи учителя;
II. второй уровень предусматривает наличие подсказок, поданных в рамках;
III. третий уровень содержит подсказки в таком виде: подсказка подана не
полностью; подсказка, которую необходимо выбрать из двух –
правильной и неправильной;
IV. четвертый уровень требует творческого подхода, умения находить
правильное решение, а так же дополнительных знаний и умений.
1 форма проведенияпрактическойработы:
Тема: Создание и реализация программ обработки элементов
одномерного массива табличных величин.
Цель: Научится составлять и реализовывать программы обработки
элементов одномерного массива.
Вопросы, на которые необходимо ответь перед выполнением
практической работы:
1. Дать определение одномерного массива?
2. как описать одномерный массив?
3. Как осуществляется ввод и вывод одномерного массива7
4. В чем заключается принцип нахождения максимального (минимального)
массива?
5. Каким образом можно осуществить сортировку массива по возрастанию
(убыванию).
Составить и выполнить тесты для проверки правильностифункциони-
рования программы.
23
Тесты:
1. Какие из одномерных массивов описаны правильно, а какие нет?
A. Var A:array [1..5] of real;
B. Type MAS=ARRAY [‘A’..’D’]; var B:mas;
C. Var C:[integer] of char;
D. Var D:array [true..flse] of char;
Правильно: ___________ Неправильно: _________________
2. Будет ли правильно написана команда A[i]:=B, если изменить А, В
описаны таким образом:
Type MAS=array [1..3, 1..5] of real;
MAS1=array [1..3] of real;
Var A:mas;
B:mas1;
Ответ: (да, нет)
3. Какие из приведенных ниже команд присвоения являются правильными,
если переменные и константы в программеописаны таким образом:
Const A=’СТІЛ’;
B=’C’;
Type MAS=array [1..4] of char;
Var S:char;
K:mas;
I:integer;
a) s:a;
b) k:=a;
c) s:=b;
d) k[6]=b;
e) k:=b;
f) i:=org(k[i]);
Правильно: ____________ Неправильно: _________________
4. Сколько элементов содержит каждый из массивов?
a) var A:array [‘A’..’C’],2..5] of real; N=
24
b) var B:array [false..true] of Boolean; N=
c) type C=(m1,m2,m3,m4); N=
Var X: array [C];
5. приведенных ниже обращений к элементам массивов есть правильным, а
какие нет?
a) a[‘B’,3]; d) b[0,false];
b) a[‘B’,6]; e) x[m2];
c) b[true]; f) x[true];
Правильно: ___________ Неправильно: _________________
6. Указать, какие из приведенных ниже массивов являются правильными, а
какие нет?
a) var a:array [1..20] of real;
b) type Mas:array[1..20] of real; var A:Mas;
c) type Mas=array [1:20] of real; var A:Mas;
d) type Mas=array [1..20] of real; var A:Mas;
e) type Mas=array [1,20] of real; var A:Mas;
f) var A:array [1..20] of real;
Правильно: ____________ Неправильно: _______________
7. Задано описание массива:
Type MASSIV=array [1..20] of real;
Var A: massiv;
I: integer;
Указать, какие из приведенных ниже утверждений записаны правильно, а
какие нет?
a) i:=10;
a[j]:=7.5;
b) i:=10;
a[3*i]:=7.5;
c) i:=10;
a[I div 2]:=7.5;
d) i:=10;
a[trunc(i/2)]:=7.5;
25
e) i:=10;
a[i/2]:=7.5;
f) i:=10;
a[Int(i/2)]:=7.5
Правильно: ________________ Неправильно: _________________
Задания для практической работы:
1. Найти минимальный и максимальный элемент массива А[1..10] и
поменять их местами.
2. Найти среднее геометрической значение элементов массива А[1..10].
3. Найти сумму ненулевых элементов массива А[1..10] .
4. Найти среднее арифметическое значение элементов массива А]1..10].
5. Переписать подряд в массив Y[1..10] дополнительные и в массив X[1..10]
отдельные элементы массива .
6. Найти в массиве А[1..10] элемент кратный 5. напечатать его и его
порядковый номер.
7. Найти сумму элементов массива А[1..10] кратных 3.
2. форма проведенияпрактической работы.
В данной практической работе по окончании выполнения учителю
предлагается заполнить листок контроля, в котором указываются оценки о
выполнении работы. Высший бал за практическую работу – 12 баллов.
Тема: Созданиеи реализация программ обработки одномерных
(линейных) массивов на языке TURBO PASCAL
Цель: Научится организовывать иобрабатывать элементы в
одномерного массива на языке TURBO PASCAL;
приобрести практическиенавыки создания иреализации
программ обработки линейных массивов
на языке TURBO PASCAL.
Задания: Составьте программу обработки элементов одномерного
массива.
Выполнениеработы:
26
1-2. Дайте ответ на один из предложенных учителем вопрос:
1) Что такое массив?
2) Как задаются элементы в одномерном массиве?
3) Как организовать описание линейного(одномерного)
массива на языке TURBO PASCAL?
4) Как сформулировать новый тип переменных, которые
представлены в виде таблицы?
5) Как организовать ввод элементов одномерного массива в
память ПК?
6) Как организовать вывод результата в одномерном массиве?
7) Какая идея лежит в основе алгоритма нахождения самого
большого элемента массива?
8) Опишите один из методов сортирования элементов
таблицы?
3. Создайте файл и сохраните его с определенным именем
по известной вам структуре.
4-6. В таблице указан алгоритм обработки элементов линейной таблицы -
10 целых чисел. Дополните его необходимыми частями. Реализуйте
составленную программу в среде программирования TURBO
PASCAL.
Запишите алгоритм для своего варианта задания.
1
S:=0
For i:=1 to n do
If a [i] < 0 then s:=s+1;
2
S:=0
For i:=1 to n do
If a [i] > 0 then s:=s+1;
3
d:=1
For i:=1 to n do
d:=d*a [i]
4
s:=0
For i: =1 to n do
If a[i]
5
d: =1
For i:=1 to n do
If a [i] <0 then d :=d*a[i]
27
Запишите программу и результаты работы в тетрадь в отведенном в конце
работы месте.
7-9. В среде программирования TURBO PASCAL составьте
программу для решения задач своего варианта:
1) Все отрицательные элементы таблицы замените нулями и
подсчитайте количество тех элементов, которые равны 5.
2) Найдите наибольший элемент среди всех положительных
элементов одномерного массива А (10).
3) Посчитайте количество элементов в одномерном массиве,
которые равны ее последнему элементу.
4) Найдите произведение элементов в одномерном массиве с
парными индексами.
5) Найдите количество элементов в одномерном массиве,
которые равны нулю, а все отрицательные замените ее
модулями.
6) В данной последовательности, состоящей из 10 целых чисел
поменяйте местами первый и наименьший элемент.
7) В данном одномерном массиве переставьте местами
элементы с конца на начало.
8) В данном одномерном массиве найдите максимальный
элемент и замените его нулем.
9) Найдите сумму квадратов всех отрицательных элементов
одномерного массива В[5].
10)Найти произведение отрицательных элементов одномерного
массива В[5], которые имеют непарные индексы.
Запишите программу и результаты работы в тетрадь в отведенном в конце
работы месте.
При написании программы определитесь, к какому типу стандартных программ она
принадлежит – это поможет вам при составлении алгоритма.
Допишите в программе начало (введение элементов массива)
и конец программы (выведение результата). Для описания алгоритма обратите
внимание на форму, которая дает изменение в теле цикла (результатом есть сумма -
произведения или количество).
28
10-11. В средепрограммирования TURBO PASCAL решите следующие задачи:
1) Дано действительные числа а1, а2, … а10 и b1, b2, … b10.
Вычислите (а1 + b10) (а2 + b9)…(а10 + b1).
2) Дано два одинаковые по длине массивы. Объедините их в
третий массив, чередуя элементы первого и второго массивов.
Проверьте, получен ли у вас упорядоченный (по возрастанию
или убыванию) массив?
Запишите программу и результаты работы в тетрадь в отведенном в конце
работы месте.
12. Данные в массивах задайте произвольно.
Записать текст программы и результаты ее выполнения в тетрадь:
Данный листок контроля завершает выполнение практической работы.
Задание 1 2 3 4 5 6 7 8 9 10 11 12
Оценка
за выполнению
Дата выполнения Оценка
Подпись
учителя
29
ГЛАВА 2. Методика изучения двумерного массива.
2.1 Двумерный массив.
Работа с элементами вдвумерном массиве.
Ввод и вывод элементов двумерного массива.
УРОК 5. Двумерный массив. Работа с элементами двумерного
массива. Ввод и вывод элементов двумерного массива.
Говоря о двумерном массиве, хотелось бы сразу сказать, что это массив, в
котором элемент характеризуется не только положением в строке, как это было
в одномерном массиве, но и положением в столбце.
Иными словами, двумерный массив можно рассматривать как таблицу,
состоящую из m-рядков и n-столбцов.
Двумерный массив можно описать двумя способами:
1-ый способ:
Туре
Имя типа = array[тип индекса] of array [тип индекса] of тип компонент:
Var идентификатор массива: имя типа;
Пример: Type MAS = array [1..5] of array ]1..4] of integer;
Var MATR: MAS;
2-ой способ:
Var
Имя массива : array[m..n, k..b] of тип элементов массива;
Пример: Var
MATR: array[1..10, 1..5] of integer;
Обращение к элементам массива, описанным таким образом осуществляется
так:
MATR[i,j]- это элемент массива MATR, который находится на пересечении i-
строки и j-столбца.
Пример: MATR[3,2] – элемент, который находится на пересечении
3- строки и 2-столбца.
Обработка элементов двумерного массива осуществляется таким же образом,
что и в одномерном, единственное отличие – это использование вложенных
циклов.
30
В данном примере ввод элементов массива осуществляется с помощью
объединения команд Write и Readln и массив будет записан не в виде
двумерной таблицы, а в виде таблицы вытянутой в столбец.
Write (‘Введите A’,i,’,’,j,’]=’) – данная командная строка является для
программиста в виде – а[1,2]=, т.е. информация про то, какой элемент массива
вводим. Readln (M[I,j]) – считывает элемент массива.
Что бы можно было вводить таблицу в «природном» виде – ряд за рядом,
необходимо использовать другую форму введения элементов массива:
For i:=1 to 3 do
Begin
For j:=1 to 4 read (M[I,j]);
Readln;
End.
Введение элементов в двумерном массиве необходимо также осуществлять в
цикле:
For i:=1 to 3 do
For j:=1 to 4 do
Writeln (‘a[’,I,j’]=’,a[I,j]);
В данном случае все элементы таблицы будут записаны в виде одного столбика.
Что бы выведение таблицы осуществлялось в «природном» виде, т.е. ряд за
рядом, необходимоиспользовать такую форму выведения двумерного массива:
For i:=1 to 3 do
Begin
For j:=1 to 4 do write(a[I,j]:6);
Writeln;
End.
В данном случае таблица будет выведена так, как она записана var a:array
[1..3,1..4] of integer; (3 ряда по 4 числа в каждом).
Для закрепления изученного материала предлагается выполнить следующие
задания:
Задание 1: ввести и вывести на экран элементы элементы матрицы
К[1..3,1..4].
Программа:
31
Program primer1;
Uses crl;
Var K: Array[1..3,1..4] of integer;
I,j: integer;
Begin
Clrscr;
Writeln(‘Введите значения элементов матрицы К:’);
Writeln;
Fori:= 1 to 3 do
Begin
Forj:-= 1 to 4 do
Writeln(‘K[‘, i ,’,’,j,’]=’), Readln(K[I,j]);
End;
Writeln;
Writeln (‘Общий вид матрицы:);
Writeln;
For i:= 1 to 3 do
Begin
For j:= 1 to 4 do Write K[I,j]:5);
Writeln;
End;
End.
Результаты выполнения программы :
Общий вид матрицы:
1 2 -3 4
2 -2 -6 7
-5 8 0 9
После выполнения этой программы, усложним задачуи выведем на экран
только положительные значения матрицы К:
Программа:
Program primer1;
Uses crl;
Var K: Array[1..3,1..4] of integer;
I,j: integer;
Begin
Clrscr;
Writeln(‘Введите значения элементов матрицы К:’);
Writeln;
Fori:= 1 to 3 do
32
Begin
Forj:-= 1 to 4 do
Writeln(‘K[‘, i ,’,’,j,’]=’), Readln(K[I,j]);
End;
Writeln;
Writeln (‘Общийвид матрицы до преобразования:);
Writeln;
For i:= 1 to 3 do
Begin
For j:= 1 to 4 do Write K[I,j]:5);
Writeln;
End;
Writeln(‘Общий вид таблицы после преобразования:);
Fori:=1 to 3 do
Begin
For j:= 1 to 4 do
If K[I,j]>=0 Then Write(K[I,j]:5) Else Write(‘ ‘);
Writeln;
End;
End.
Результат от выполнения этой программы на экране следующий:
Общий вид матрицы до преобразования:
1 2 -3 4
2 -2 -6 7
-5 8 0 9
Общий вид матрицы после преобразования:
1 2 4
2 7
8 0 9
Вопросы для закрепления:
1. Как определяется место элемента в двумерном массиве?
2. Дать определение двумерному массиву?
3. Перечислить характерные особенности двумерного массива.
4. Как можно описать двумерныймассив с помощьюодномерного?
5. Чем отличается ввод элементов в двумерном массиве от ввода элементов
в одномерном (линейном) массиве?
33
6. Как организовать вывод элементов в двумерном массиве в виде таблицы?
Задание на дом:
Задание: Двумерный массив действительных чисел Х[1..N,1..M].
Составить программу ввода элементов массива Х и вывода на экран
только отрицательных значений.
2.2 Составление и реализация программ с элементами
двумерного массива. Поиск данных. Сортировка
элементов в двумерном массиве.
УРОК 6. Составление и реализация программ с элементами
двумерного массива. Поиск данных. Сортировка
элементов в двумерном массиве.
Зная и умея правильно описывать, вводить и выводить элементы
двумерного массива, а так же умея строить команду выбора, перейдём к более
сложным операциям работы с двумерным массивам и наиболее удобно
рассматривать их на конкретных примерах.
Одними из самых простых операций с элементами двумерного массива
являются нахождение суммы, произведения элементов. Рассмотрим
несколько задач:
ЗАДАЧА 1: Составить программу нахождения суммы S, элементов
двумерного массива А, элементами которого являются:
-5 1 7.5 9
0 -1 0.5 -5
Программа:
Program primer1;
Uses crt;
Const N=2;
M=4;
Var A: Array[1..N,1..M] of real;
i: integer;
j: integer;
S: integer;
Begin
34
Clrscr;
S:=0;
Fori:= 1 to N do
Вegin
Forj:=1 to M do
Write(‘A[I,j]=’); Readln(A[I,j]);
S:= S+A[I,j];
End;
Writeln(‘S=’, S[i]);
End.
В данной программе следует отметить, что при вводе элемента двумерного
массива, указывается строка, а затем – столбец и поэтому индекс элемента
будет иметь вид: A[I,j].
Команда вычисления суммы : S:= S+A[I,j].
ЗАДАЧА 2 (самостоятельно): Составить программу нахождения суммы S
отрицательных элементов двумерного массива А элементами которого
являются:
-5 1 7.5 9
0 -1 0.5 -5
Программа:
Program primer2;
Uses crl;
Const N=2;
М=4;
Var A: Array[1..N,1..М] of integer;
i: integer;
j: integer;
S: integer;
Begin
Clrscr;
S:=0;
Fori:= 1 to N do
Вegin
For j:= 1 to M do
Write(‘A[I,j]=’); Readln (A[I,j]);
IF A[I,j] >= 0 THEN S:= S+A[I,j];
End;
Writeln (‘S=’, S);
End.
35
В данной программе командную строку IF A[I,j] >= 0 THEN S:= S+A[I,j]
говорит о том, что перед накоплением суммы: S:=S+A[i], элемент массива
A[I,j] проверяется согласно условию задачи: IF A[I,j]>= 0.
ЗАДАЧА 3: Составить программу нахождения произведения D, элементов
двумерного массива F элементами которого являются:
1 7 0 3 10
25 1 8 15 0
4 -5 0 -9 -1
Программа:
Program primer 3;
Uses crl;
Const N=3;
М=5;
Var F: Array[1..N,1..M] of integer;
i: integer;
j: integer;
D: integer;
Begin
Clrscr;
D:=1;
Fori:= 1 to N do
Вegin
For j:= 1 to M do
Write (‘F[I,j]=’); Readln(F[I,j]);
D:= D*F[I,j];
End;
Writeln (‘МАССИВ F:’);
Fori:= 1 to N do
Вegin
For j:=1 to M do
Writel(‘F[’,I,’]=’,F[I,j]:6);
Wriyeln;
End;
Writeln (‘D:=’,D);
End.
Для закрепления задач на нахождение суммы и произведения элементов
массива предлагается следующая задача:
36
ЗАДАЧА 4 (самостоятельно): Составить программу нахождения
произведения D, положительных элементов двумерного массива K
элементами которого являются:
1 7 0 3 -17
-21 1 8 15 0
4 -5 0 -9 -1
Программа:
Program primer 4;
Uses crl;
Var K: Array[1..3, 1..5] of real;
i: integer;
j: integer;
D: real;
Begin
Clrscr;
D:=1;
For i:= 1 to 3 do
Вegin
For j:= 1 to 5 do
Write (‘K[I,j]=’); Readln (K[I,j]);
IF K[I,j] > =0 THEN D:= D*K[I,j];
End;
Writeln (‘D=’, D: 10:1);
End.
Следующий тип задач с элементами двумерного массива – это поиск
элементов с условием.
Ярким примером, иллюстрирующим данный тип задач, является нахождение
минимального (максимального) элемента в двумерном массиве.
ЗАДАЧА 5: Составить программу нахождения MAX элемента в двумерном
массиве А, включающем:
1 7 0 3 -17
-21 1 8 15 0
4 -5 0 -9 -1
Программа:
Program primer 5;
Uses crl;
Var A: Array[1..3, 1..5] of real;
i: integer;
37
j: integer;
MAX: real;
Begin
Clrscr;
Fori:= 1 to 3 do
Вegin
For j:= 1 to 5 do
Write (‘A[I,j]=’); Readln (A[I,j]);
End;
MAX:=A[1,1};
For i:= 1 to 3 do
Вegin
If A[i,j] >= MAX THEN MAX:= A[I,j];
End;
Writeln (‘MAX:=’, MAX : 5 :1);
End.
В данной программе следует обратить внимание на командную строку
MAX:= A[1,1]. Это значит, что после ввода данных, но перед сравнением
элементов необходимо за максимальное значение принять значение первого
элемента, в нашем случае A[1,1], и затем при сравнении, если значение
последующих элементов больше максимального значения, то последнее
значение принимает значение большего.
Для закрепления этого типа задач для самостоятельной работы
предлагается следующая задача:
ЗАДАЧА 6 (самостоятельно): Составить программу нахождения MIN
элемента в двумерном массиве А:
1 7 0 100 -17
-21 1 8 15 0
4 -5 0 -9 -50
Программа:
Program primer 6;
Uses crl;
Var A: Array[1..3, 1..5] of real;
i: integer;
j: integer;
MIN: real;
Begin
Clrscr;
Fori:= 1 to 3 do
38
Вegin
For j:= 1 to 5 do
Write (‘A[i,j]=’); Readln (A[I,j]);
End;
MIN:= A[1,];
Fori:= 1 to 3 do
Вegin
For j:=1 to 5 do
If A[I,j] < MIN THEN MIN:= A[I,j];
End;
Writeln (‘MIN:=’, MIN : 5 :1);
End.
Данная задача отличается командной строкой If A[I,j] < MIN THEN MIN:=
A[I,j}, т.е. меняется только условие If A[I,j] < MIN … .
Говоря о работе с элементами в двумерном массиве, а конкретнее о задачах
на поиск элементов с условием, следует внимание на задачи такого типа, как
поиск конкретного элемента, например:
ЗАДАЧА 7: Составить программу нахождения в двумерном массиве А,
элемента равного К, если массив А представлен следующими элементами:
1 7 0 100 -17
-21 1 8 15 0
4 -5 0 -9 -50
Программа:
Program primer 7;
Uses crl;
Var A: Array[1..3, 1..5] of real;
i: integer;
j: integer;
К: real;
Begin
Clrscr;
Fori:= 1 to 3 do
Вegin
For j:= 1 to 5 do
Write (‘A[i,j]=’); Readln (A[I,j]);
End;
Write(‘K:=’); Readln(K);
Fori:= 1 to 3 do
Вegin
39
For j:=1 to 5 do
If A[I,j] = K THEN Writeln(‘Элемент найден К=’,A[i,j]:5:1);
End;
End.
Для закрепления этого задач подобного типа, следует рассмотреть и такую
задачу:
ЗАДАЧА 8: Составить программу нахождения в двумерном массиве А,
элемента равного F и посчитать сколько элементов равных F есть в двумерном
массиве, если массив А представлен следующими элементами:
1 7 0 100 -17
-21 1 8 15 100
4 -5 100 -9 -50
Программа:
Program primer 8;
Uses crl;
Var A: Array[1..3, 1..5] of real;
i: integer;
j: integer;
K: integer;
F: real;
Begin
Clrscr;
Fori:= 1 to 3 do
Вegin
For j:= 1 to 5 do
Write (‘A[i,j]=’); Readln (A[I,j]);
End;
Write (‘F:=’);
Readln(F);
Fori:= 1 to 3 do
Вegin
For j:=1 to 5 do
If A[I,j] = F THEN K:=K+1;
End;
Writeln (‘Количество элементов, равныхF, в массиве:’,K);
End.
40
Вопросы для закрепления:
1. Дать определение двумерному массиву?
2. Как описать двумерный массив?
3. Каким образом осуществить обращение к элементам в двумерном
массиве?
4. Как ввести элементы в двумерном массиве в память
компьютера?
5. Какая идея лежит в основеалгоритма нахождения
максимального или минимального элемента в двумерном
массиве?
6. Как организовать вывод результатов обработки в двумерном
массивов?
Задание на дом:
Задание 1: Дан двумерный массив А, состоящих из натуральных чисел.
Составить программу, которая посчитает количество МАХ элементов в массиве
А, включающем следующие числа:
-0.75 100 0 -1.438
10 0 1 1000
1000 -1.5 5 1000
Задание 2*: Составить программу построения и вывода на печать таблицы
Пифагора.
2.3 Практическая работа «Составление и реализация
программ обработки элементов двумерного массива».
УРОК 7. Практическая работа«Составление и реализация
программ обработки элементов двумерного массива».
После изучения раздела темы, как и в предыдущем случае, в качестве
закрепления изученного материала предлагается практическая работа, которая
включает контрольные вопросы, тесты и выполнение заданий конкретно по
составлению программ на языке TURBO PASCAL.
Не будем повторять, что тема и цель соответствуют программе изучения
информатики, утвержденной МОН Украины, об этом сказано выше, отметим,
что так же как и в разделе 1.4 предлагаем две формы проведения практической
41
работы по закреплению знаний. умений и навыков работы с элементами
двумерного массива.
1 форма проведенияпрактическойработы:
Тема: Создание и реализация программ обработки элементов
двумерного массива .
Цель: Научится составлять и реализовывать программы обработки
элементов двумерного массива.
Вопросы, на которые необходимо ответь перед выполнением
практической работы:
1. Дать определение двумерному массиву?
2. Как описать двумерный массив?
3. Как осуществляется ввод и вывод элементов двумерного
массива ?
4. В чем заключается принцип нахождения максимального
(минимального) в двумерном массиве?
5. Каким образом можно осуществить сортировку массива по
возрастанию (убыванию).
Составить и выполнить тесты для правильности функционирования программ.
Тесты:
1. Какие из одномерных массивов описаны правильно, а какие
нет?
A. Var A:array [1..5] of real;
B. Type MAS=ARRAY [‘A’..’D’]; var B:mas;
C. Var C:[integer] of char;
D. Var D:array [true..flse] of char;
Правильно: ___________ Неправильно: _________________
2. Какие из двумерных массивов написаны правильно, а какие нет?
a. Var A:array [1..3, 1..5] of real;
b. Type MAS=array [‘A’..’D’,1..4] of integer; var B:mas;
42
c. Type MAS1=array[1..10] of char; var C:array[1..3] of MAS1;
d. Var D:array [3,4] of integer; var E:array [1..3],[1..5] of real;
Правильно: ____________ Неправильно: __________________
3. Будет ли правильно написана команда A[i]:=B, если изменить А, В
описаны таким образом:
Type MAS=array [1..3, 1..5] of real;
MAS1=array [1..3] of real;
Var A:mas;
B:mas1;
Ответ: (да, нет)
4. Какие из приведенных ниже команд присвоения являются правильными,
если переменные и константы в программеописаны таким образом:
Const A=’СТІЛ’;
B=’C’;
Type MAS=array [1..4] of char;
Var S:char;
K:mas;
I:integer;
g) s:a;
h) k:=a;
i) s:=b;
j) k[6]=b;
k) k:=b;
l) i:=org(k[i]);
Правильно: ____________ Неправильно: _________________
5. Сколько элементов содержит каждый из массивов?
a) var A:array [‘A’..’C’],2..5] of real; N=
b) var B:array [false..true] of Boolean; N=
c) type C=(m1,m2,m3,m4); N=
Var X: array [C];
43
6. Используя описание массивов из задания 5, обозначить, какие из
приведенных ниже обращений к элементам массивов есть правильным, а
какие нет?
e) a[‘B’,3]; d) b[0,false];
f) a[‘B’,6]; e) x[m2];
g) b[true]; f) x[true];
Правильно: ___________ Неправильно: _________________
7. Указать, какие из приведенных ниже массивов являются правильными, а
какие нет?
f) var a:array [1..20] of real;
g) type Mas:array[1..20] of real; var A:Mas;
h) type Mas=array [1:20] of real; var A:Mas;
i) type Mas=array [1..20] of real; var A:Mas;
j) type Mas=array [1,20] of real; var A:Mas;
f) var A:array [1..20] of real;
Правильно: ____________ Неправильно: _______________
8. Задано описание массива:
Type MASSIV=array [1..20] of real;
Var A: massiv;
I: integer;
Указать, какие из приведенных ниже утверждений записаны правильно, а
какие нет?
b) i:=10;
a[j]:=7.5;
b) i:=10;
a[3*i]:=7.5;
c) i:=10;
a[I div 2]:=7.5;
h) i:=10;
a[trunc(i/2)]:=7.5;
e) i:=10;
a[i/2]:=7.5;
f) i:=10;
44
a[Int(i/2)]:=7.5
Правильно: ________________ Неправильно: _________________
Задания для практической работы:
1. Найти минимальный и максимальный элемент массива А[1..5, 1..4] и
поменять их местами.
2. Найти среднее геометрической значение элементов массива А[1..10,
1юю10].
3. Найти сумму ненулевых элементов массива А[1..10, 1..10] .
4. Найти среднее арифметическое значение элементов массива А[1..10,
1..10].
5. Переписать подряд в массив Y[1..2, 1..3] дополнительные и в массив
X[1..2, 1..3] отдельные элементы массива .
6. Найти в массивеА[1..10, 1..10] элемент кратный 50. напечатать его и
его порядковый номер.
7. Найти сумму элементов массива А[1..10. 1..10] кратных 5.
2 форма проведенияпрактической работы:
Тема: Создание и реализация программ с элементами
двумерного массива на языке TURBO PACAL.
Мета: Научиться описывать прямоугольные таблицы
на языке TURBO PACAL.
Получить практические навыки по созданию и реализации
программ обработки элементов двумерного массива
на языке TURBO PASCAL.
Задание:Составить программу обработки заданного
двумерного массива.
Выполнениеработы:
1-2. Дать ответ на одиниз предложенных учителем вопрос:
 Что такое двумерный массив?
 Как задаються значения элементов в двумерном массиве?
45
 Как организовать описание элементов двумерного массива на
языке TURBO PASCAL?
 Как можно описать двумерный массив с помощью одномерного
массива?
 Чем отличается ввод элементов двумерного массива от
линейного?
 Как организовать вывод элементов двумерного массива в
табличной форме?
 Что такое главная диагональ массива и какие особенности
алгоритмов, что связанны с ее обработкой?
 Чем отличается алгоритм нахождения наибольшего элемента
двумерного массиваот аналогичного для линейного?
3. Создать файл и сохранить его с определенным именем
за известной вам структурой.
4-6. В таблице задан алгоритм обработкиэлементов
двумернойтаблице - 9 целых чисел,
Дополнить его необходимымичастями.
Реализуйте созданную программу в среде программирования
TURBO PASCAL.
Запишите словесно этот алгоритм для своего варианта задания.
1
S:=0
For i:=1 to n do
For j:=1 to n do
S:=s+a[i,j];
2
K:=0
For i:=1 to n do
For j:=1 to n do
If a[i,j]>0 then k:=k+1;
3
d:=1;
For i:=1 to n do
For j:=1 to n do
d:=d*a[i,j];
4
k:=0;
For i:=1 to n do
For j:=1 to n do
If a[i,j]<0 then k:=k+1;
5
d:=1;
For i:=1 to n do
d:=d*a[i,j];
6
s:=0;
For i:=1 to n do
For j:=1 to n do
If a[i,j]<0 then
46
s:=s+f[i,j];
Запишите программу и результаты работы в тетрадь в отведенное в конце
работы место.
7-9. В середине программирования развязка задачи своего варианта:
1) Найдите максимальный элемент главной диагонали
прямоугольной таблице В[1..3,1..3].
2.) Найти количество элементов таблице A[1..3,1..3],
которые равны её первому элементу.
3) В прямоугольной таблице В[1..3,1..3] все элементы
заменить их квадратами.
4) Найти произведение элементов таблице
А[1..3,1..3], которые меньше 1.
5) Найти сумму квадратов тех элементов квадратной
таблицы В[1..3,1..3], которые находятся на главной
диагонали.
6) Заменить все элементы главной диагонали квадратной
таблицы В(3х3) на их квадраты.
7) Все дополнительные элементы квадратной таблицы
В[1..3,1..3] заменить их квадратными корнями.
8) Найти ряд , в котором расположенный наименьший
элемент главной диагонали прямоугольной таблице
В[1..3,1..3].
9) Замените все отрицательные элементы таблицы А (3х3)
нулями, а дополнительные – единицами.
10) Подсчитать количество элементов таблицы А(3х3),какие
больше её первого элемента.
Запишите программуи результаты роботы в тетрадь в отведённом в конце
работы месте.
10-11. В среде программирования Turbo Pascal развяжите следующие задачи:
1) Расписание движения N маршрутов автобусов по М остановкам
города на протяжении одного часа записано в таблицу
размером NxM. Считается, что каждый автобус может быть на
остановке только один раз, а значение”0” означает, что на этой
остановке автобус не останавливается.
Определите, на каких остановках останавливается наибольшее
кол-во автобусов (если таких несколько – указать все).
47
2) Таблицу футбольного чемпионата заданного квадратной
матрицей NxМ, в которой все элементы, которые лежат на
главной диагонали - равны 0, а другие - 2, 1 или 0 (2- победа, 1-
ничья, 0- поражение). Определите, Какая команда получила
выигрыш, и те команды, которые прошли чемпионат без
поражения.
Запишите программу и результаты работы в отведенном в конце работы месте.
12. Какие ещё вопросы можно поставить к задаче вашего варианта, так как
реализовывать его в программе?
Запишите текст программы и результаты её выполнения в тетрадь:
Данный листок контроля завершает выполнение данной практической
работы.
Задание 1 2 3 4 5 6 7 8 9 10 11 12
Оценка
за выполнению
Дата выполнения Оценка
Подпись
учителя
48
ГЛАВА 3. Проверка знаний учащихся по теме и применении их
при составлении более сложных задач.
3.1 Составление и реализация более сложныхпрограмм,
включающих элементы одномерного и двумерного
массива.
УРОК 8,9. Составление и реализация более сложных программ,
включающих элементы одномерного и двумерного
массива.
ЗАДАЧА 1: Составить алгоритм и написать программу с решением следующей
задачи: в таблице А[1:100] записанные случайным делом нули и единицы.
Заменить 0 на 1, а 1 на 0.
Программа:
Program primer 1;
Uses Crt;
Var I : integer;
a : array [1. .100] of integer;
Procedure init; { Процедура заполнения массива}
var I :=1 to 100 do
a [i] :=random (2);
End;
Procedure print; {Процедура выводу массива на печать}
Var I : integer;
Begin
For I :=1 to 100 do
Write (a[i]);
Writeln;
End;
Procedure change; {Процедура замещения 1 на 0 I 0 на 1}
Var I : integer;
Begin
For I :=1 to 100 do
a [i] :=1-a [i];
End;
Begin
C1rscr;
49
Randomize;
Textcolor (15);
Textcolor (7);
Init;
Writeln (“Начальный массив”);
Print;
Change;
Writeln(“Изменённый массив”);
Print;
Writeln(“Нажмите Enter.”);
Readln;
End.
ЗАДАЧА 2: Составить алгоритм и написать программу для решения следующей
задачи: целочисленная таблица А [1:100] заполненная случайным образом
числами от -3 до 6. Проверьте, есть ли в ней отрицательные элементы. Если есть,
найдите наибольшее и, при котором А[i]<0.
Программа:
Uses crt;
Var: i:integer;
a:array [1..100] of integer;
Procedure init;
var i:integer;
Begin
for i:=1 to 100 do
a[i]:=-3+random(10);
Задание на дом:
Задание 1: Дан двумерный массив А, состоящих из натуральных чисел.
Составить программу, которая посчитает сумму выделенных элементов в
массиве А, включающем следующие числа:
75 100 5
10 -90 15
1000 -105 57
Задание 2: Дан двумерный массив А, состоящих из натуральных чисел.
Составить программу, которая посчитает сумму выделенных элементов в
массиве А, включающем следующие числа
50
75 100 5
10 -90 15
1000 -105 57
Задание 3: Дан двумерный массив А, состоящих из натуральных чисел.
Составить программу, которая посчитает сумму выделенных элементов в
массиве А, включающем следующие числа:
75 100 5
10 -90 15
1000 -105 57
3.2 Тематическая аттестация «Массивы».
УРОК 10. Тематическая аттестация «Массивы».
Для проведения тематических аттестаций по теме «Массивы» предлагаются
следующие задания как теоретические так и практические, а так же
методические рекомендации проверки заданий исходя из 12 – бальной
шкалы оценивания.
Работа включает 4 уровня:
1 уровень (начальный): 1. 2, 3 задания.
Этот уровень состоит из трех заданий и оценивается 1 бал за каждое.
Задания построены в виде тестов. Необходимо только выбрать верный
вариант ответа.
2 уровень (средний): 4, 5, 6, задания.
Этот уровень состоит тоже из трех заданий, которые включают
простейшие вопросы учебного материала, или требуют повторить
некоторые операции. Задания во втором уровне оцениваются 1 балом.
3 уровень (достаточный): 7 задание.
Этот уровень состоит из одного задания и оценивается 3 балами. Задание
стандартное, отвечает школьной программе, необходимо самостоятельно
сформулировать ответ.
4 уровень (высокий): 8 задание.
Этот уровень состоит так же как и предыдущий из одного задания,
которое является нестандартным, творческим и оценивается 3 балами.
51
Аттестацию предлагается проводить по двум вариантам.
1 вариант:
TURBO PASCAL 7.2
1) Элементы линейного (одномерного) массива имеют:
(1 бал)
А) 1 индекс;
Б) 2 индекса;
В) Не имеют индексов;
Г) Нет верных ответов
2) Двумерный массив, состоящий из 100 элементов имеет одинаковое
количество строк и столбцов.
Сколько строк имеет массив?
(1 бал)
А) 10;
Б) 50;
В) 100;
Г) Нет верных ответов
3) Какие действия выполняет фрагмент данной программы?
(1 бал)
For i:=1 to 10 do
Readln (a[i])
А) Разрешает произвестивывод на экран 10-ти элементов линейного массива А;
Б) Разрешает совершить ввод 100 элементов массиваА (10Х10);
В) Разрешает совершить ввод 10 элементов линейного массива А;
Г) Нет верных ответов
4) Записать фрагмент программы для вывода на печать элементов линейного
массива размером 20.
(1 балл)
5) Какие действия выполняет данный фрагмент программы?
(1 бал)
k=0;
for i:=1 to 10 do
for j:=1 to 10 do
if a[I,j]>0 then k:=k+1;
writeln(k);
6) Найти ошибку в программе:
(1 бал)
52
Var
A:array[1..10] of integer,
begin
for i:=1 to 20 do
readln(a[i]);
for i:=1 t0 20 do
if a[i]=20 then
writeln(‘Есть’);
readln;
end.
7) Линейный массив состоит из 30 элементов. Упорядочить элементы массива в
порядке возрастания.
(3 бала)
8) Вывести таблицу футбольного чемпионата (n x n), в которой все элементы
главной диагонали равны 0, а все остальные 2,1,0 (2-выиграш, 1-ничья, 0-
проигрыш). Выяснить, есть ли одна команда, которая проиграла меньше
половины игр.
(3 бала)
2 вариант:
TURBO PASCAL 7.2
1) Элементы линейного (одномерного) массива имеют:
(1 бал)
А) 1 индекс;
Б) 2 индекса;
В) Не имеют индексов;
Г) Нет верных ответов.
2) Двумерный массив состоит из 100 элементов имеет одинаковоеколичество
строки столбцов. Сколькистрокимеет массив?
(1 бал)
А) 10;
Б) 50;
В) 100;
Г) Нет верных ответов
3) Какие действия выполняет фрагмент программы?
(1 бал)
For i:=1 to 10 do
Readln (a[i]);
53
А) Разрешает произвестивывод на экран 10-ти элементов линейного массива А;
Б) Разрешает совершить ввод 100 элементов массиваА(10Х10);
В) Разрешает совершить ввод 10 элементов линейного массива А;
Г) Нет верных ответов
4) Записать фрагмент программы для вывода на печать элементов линейного
массива размером 20.
(1 бал)
5) Какие действия выполняет данный фрагмент программы?
(1 бал)
k=0;
for i:=1 to 10 do
for j:=1 to 10 do
if a[I,j]>0 then k:=k+1;
writeln(k);
6) Найдите ошибку в программе.
(1 бал)
Var
A:array[1..10] of integer,
begin
for i:=1 to 20 do
readln(a[i]);
for i:=1 t0 20 do
if a[i]=20 then
writeln(‘Есть’);
readln;
end.
7) Линейный массив состоящий из 30 элементов. Упорядочить элементы
массива в порядке возрастания.
(3 бала)
8) Вывести таблицу футбольного чемпионата (n x n), в которой все элементы
главной диагонали равны 0, а все остальные 2,1,0 (2-выиграш, 1-ничья, 0-
проигрыш). Выяснить, есть ли одна команда, которая проиграла меньше
половины игр.
(3 бала)
File0 1cfa643bcb8a4dd691ff13631417a33b894e6c4d
File0 1cfa643bcb8a4dd691ff13631417a33b894e6c4d
File0 1cfa643bcb8a4dd691ff13631417a33b894e6c4d
File0 1cfa643bcb8a4dd691ff13631417a33b894e6c4d

Weitere ähnliche Inhalte

Ähnlich wie File0 1cfa643bcb8a4dd691ff13631417a33b894e6c4d

инф1 4 и инф3-4 2012
инф1 4 и инф3-4 2012инф1 4 и инф3-4 2012
инф1 4 и инф3-4 2012DrofaUral
 
8 in2 g_2015 2 часть
8 in2 g_2015 2 часть8 in2 g_2015 2 часть
8 in2 g_2015 2 часть11book
 
конспект урока
конспект урокаконспект урока
конспект урокаmbjygu
 
Урок информатики "Формализация и визуализация моделей. Типы информационный мо...
Урок информатики "Формализация и визуализация моделей. Типы информационный мо...Урок информатики "Формализация и визуализация моделей. Типы информационный мо...
Урок информатики "Формализация и визуализация моделей. Типы информационный мо...Kirrrr123
 
344 1 биология. растения. 6кл. в 2ч. ч.1-постникова е.а_2008 -172с
344 1  биология. растения. 6кл. в 2ч. ч.1-постникова е.а_2008 -172с344 1  биология. растения. 6кл. в 2ч. ч.1-постникова е.а_2008 -172с
344 1 биология. растения. 6кл. в 2ч. ч.1-постникова е.а_2008 -172сdfdkfjs
 
презенация
презенацияпрезенация
презенацияDENGALKRAP
 
Информатика в начальной школе и новые стандарты
Информатика в начальной школе и новые стандартыИнформатика в начальной школе и новые стандарты
Информатика в начальной школе и новые стандартыЖуланова Валентина
 
угринович
угриновичугринович
угриновичGulshatka
 
задания для самостоятеьного изучения предмета математика
задания для самостоятеьного изучения предмета математиказадания для самостоятеьного изучения предмета математика
задания для самостоятеьного изучения предмета математикаRoman Prilipa
 
344 2 биология. растения. 6кл. в 2ч. ч.2-постникова е.а_2008 -168с
344 2  биология. растения. 6кл. в 2ч. ч.2-постникова е.а_2008 -168с344 2  биология. растения. 6кл. в 2ч. ч.2-постникова е.а_2008 -168с
344 2 биология. растения. 6кл. в 2ч. ч.2-постникова е.а_2008 -168сdfdkfjs
 
Metodika resheniya zadach_v_nachal_noy_shkol
Metodika resheniya zadach_v_nachal_noy_shkolMetodika resheniya zadach_v_nachal_noy_shkol
Metodika resheniya zadach_v_nachal_noy_shkolssusera868ff
 
I g semakin_m_s_tsvetkova_informatika_7_9_klassy
I g semakin_m_s_tsvetkova_informatika_7_9_klassyI g semakin_m_s_tsvetkova_informatika_7_9_klassy
I g semakin_m_s_tsvetkova_informatika_7_9_klassyKirrrr123
 
406 2 информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2 информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192сdfdkfjs
 

Ähnlich wie File0 1cfa643bcb8a4dd691ff13631417a33b894e6c4d (20)

инф1 4 и инф3-4 2012
инф1 4 и инф3-4 2012инф1 4 и инф3-4 2012
инф1 4 и инф3-4 2012
 
8 in2 g_2015 2 часть
8 in2 g_2015 2 часть8 in2 g_2015 2 часть
8 in2 g_2015 2 часть
 
34
3434
34
 
34
3434
34
 
конспект урока
конспект урокаконспект урока
конспект урока
 
Урок информатики "Формализация и визуализация моделей. Типы информационный мо...
Урок информатики "Формализация и визуализация моделей. Типы информационный мо...Урок информатики "Формализация и визуализация моделей. Типы информационный мо...
Урок информатики "Формализация и визуализация моделей. Типы информационный мо...
 
1
11
1
 
344 1 биология. растения. 6кл. в 2ч. ч.1-постникова е.а_2008 -172с
344 1  биология. растения. 6кл. в 2ч. ч.1-постникова е.а_2008 -172с344 1  биология. растения. 6кл. в 2ч. ч.1-постникова е.а_2008 -172с
344 1 биология. растения. 6кл. в 2ч. ч.1-постникова е.а_2008 -172с
 
презенация
презенацияпрезенация
презенация
 
Информатика в начальной школе и новые стандарты
Информатика в начальной школе и новые стандартыИнформатика в начальной школе и новые стандарты
Информатика в начальной школе и новые стандарты
 
угринович
угриновичугринович
угринович
 
задания для самостоятеьного изучения предмета математика
задания для самостоятеьного изучения предмета математиказадания для самостоятеьного изучения предмета математика
задания для самостоятеьного изучения предмета математика
 
344 2 биология. растения. 6кл. в 2ч. ч.2-постникова е.а_2008 -168с
344 2  биология. растения. 6кл. в 2ч. ч.2-постникова е.а_2008 -168с344 2  биология. растения. 6кл. в 2ч. ч.2-постникова е.а_2008 -168с
344 2 биология. растения. 6кл. в 2ч. ч.2-постникова е.а_2008 -168с
 
156
156156
156
 
156
156156
156
 
Metodika resheniya zadach_v_nachal_noy_shkol
Metodika resheniya zadach_v_nachal_noy_shkolMetodika resheniya zadach_v_nachal_noy_shkol
Metodika resheniya zadach_v_nachal_noy_shkol
 
S10gallamov
S10gallamovS10gallamov
S10gallamov
 
I g semakin_m_s_tsvetkova_informatika_7_9_klassy
I g semakin_m_s_tsvetkova_informatika_7_9_klassyI g semakin_m_s_tsvetkova_informatika_7_9_klassy
I g semakin_m_s_tsvetkova_informatika_7_9_klassy
 
matematika 2
 matematika 2 matematika 2
matematika 2
 
406 2 информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2 информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
 

Mehr von ssusera868ff (20)

Trigonometricheskie uravneniya
Trigonometricheskie uravneniyaTrigonometricheskie uravneniya
Trigonometricheskie uravneniya
 
777
777777
777
 
A6c
A6cA6c
A6c
 
111
111111
111
 
Trigonometria
TrigonometriaTrigonometria
Trigonometria
 
777
777777
777
 
Kontrolynyh rabot-po-matematike
Kontrolynyh rabot-po-matematikeKontrolynyh rabot-po-matematike
Kontrolynyh rabot-po-matematike
 
555
555555
555
 
777
777777
777
 
Prakticheskih rabot-ppkrs
Prakticheskih rabot-ppkrsPrakticheskih rabot-ppkrs
Prakticheskih rabot-ppkrs
 
23
2323
23
 
111
111111
111
 
23
2323
23
 
23
2323
23
 
555
555555
555
 
23
2323
23
 
777
777777
777
 
23
2323
23
 
23
2323
23
 
23
2323
23
 

File0 1cfa643bcb8a4dd691ff13631417a33b894e6c4d

  • 2. 2 СОДЕРЖАНИЕ Пояснительнаязаписка 2 Глава 1. Методика изучения одномерных массивов 5 1.1 Понятие массива. Виды массивов 5 1.2 Одномерный массив. Работа с элементами одномерного массива. Ввод и вывод элементов одномерного массива 8 1.3 Составление и реализация программ с элементами одномерного массива. Поиск данных. Сортировка элементов одномерного массива 12 1.4 Практическая работа «Составление и реализация программ по обработке элементов одномерного массива» 20 Глава 2. Методика изучения двумерных массивов 28 2.1 Двумерный массив. Работа с элементами двумерного массива. Ввод и вывод элементов двумерного массива 28 2.2 Составление и реализация программ с элементами двумерного массива. Поиск данных. Сортировка элементов в двумерном массиве 32 2.3 Практическая работа «Составление и реализация программ по обработке элементов в двумерном массиве» 39 Глава 3. Проверка знаний обучающихся по изученой теме и применении их при составлении более сложных задач 47 3.1 Составление и реализация более сложныхзадач, включающих одномерные и двумерные массивы 47 3.2 Тематическая аттестация «Массивы». 49 Заключение 53 Литература 55
  • 3. 3 Пояснительнаязаписка. КОМПЬЮТЕРЫ решают сегодня самыеразнообразныезадачи – управляют технологическими процессами, доказывают теоремы, переводят тексты с одного языкана другой, рисуют картины, сочиняютмузыку, играют в шахматы. Между тем компьютеры, так же как и предшественники – электронно - вычислительные машины, появившиеся более полувека назад, вычисляют самые элементарные арифметические или логические операции. Для того, чтобы машина решила любую задачу необходимо, чтобы в память её была введена соответствующая программа. Она представляет собой последовательность команд, указаний машине – вычисление той или иной операции, которая в совокупности описывает достаточно сложное действие. Если в компьютер введена программа расчета космической траектории, то машина последовательно вычисляет координаты точек этой траектории. Если же в памяти машины находится программа шахматной игры, то та же программа может стать партнёром в интересной игре. Я хочу познакомить вас с одним из разделов программирования – МАССИВЫ, описанном мною в методическом пособии «10 часов, которые помогут изучить «МАССИВЫ»». Изучение и исследование этой темы в программировании является актуальным так как в определённой степени решают вопрос по созданию различных задач и программ не только по информатике, а так же и по другим изучаемым предметам : математике, физике, химии, биологии и т.д. Ведь говоря о программировании в дальнейшем, можно смело сказать, что оно не возможно без элементарных знаний по обработке данных, но нельзя приступить к изучению темы «Массивы» не зная циклов и не умея строить циклические программы. В современном учебном плане в любой школе или гимназии, где есть класс ВТ, очень часто стараются связать изучение других предметов с умением работать на компьютере, в частности будем иметь в виду программирование. Особенно это касается таких предметов как математика, физика, химия. … Так вот. Хорошо зная одномерные и двумерные массивы, ученики уже могут свободно составлять программы, выполняя физические и химические практикумы, использовать знания на уроках геометрии, стереометрии, что довольно часто практикуется в нашей гимназии №26 г. Стаханова. Создание бинарных уроков, возможность применения своих знаний конкретно на практике, повышает интерес учеников к изучению данной темы, повышает успеваемость, качество знаний, а так же желание не останавливаться на достигнутом и желание в дальнейшем использовать полученные знания и умения при решении более сложных задач.
  • 4. 4 Какая же основная цель ставится при изучении данной темы? Это прежде всего передать необходимый объём знаний ученикам по данной теме, сформировать практические навыки по созданию программ и алгоритмов, научить применять их как при изучении информатики в дальнейшем, так и при изучении других предметов, способствовать развитию внимания, логического мышления, памяти, а так же способствовать воспитанию силы воли и целеустремлённости, без которой изучение программирования невозможно. Задачи, поставленные для достижения нашей цели - прежде всего:  изучить научно-педагогический материал по психологии, информатике, методике преподавания информатики;  проанализировать опыт ведущих учителей информатики в выборе активных форм и методов обучения информатики, их практическую деятельность по данной теме;  систематизировать и углубить существующие материалы по данной теме;  обобщить и систематизировать накопленный материал по данной теме. Определив конкретно цели и задачи, кратко остановимся на структуре работы, которая состоит из введения, глав и подпунктов, заключения, литературы и приложений. В главе1 излагаются теория и практика по изучению и составлению программ с использованием команд обработки элементов одномерных массивов. Глава1 подразделяется на пункты, каждый из которых посвящён определённому разделу темы. Глава2 – так же посвящена изучению теоретического и практического материала по созданию программ, но уже по обработке элементов двумерного массива. В главе 2 предлагается текст практической работы по закреплению знаний и умений работать с элементами двумерного массива, а так же тесты по проверке и закреплению знаний учеников по данной теме. Глава3 – представлены и разобраны более сложные программы по обработке элементов одномерных и двумерных массивов. В главе 3 предлагается варианты тематических аттестационных работ по закреплению и проверке знаний учеников. В заключении хотелось бы отметить некоторых ведущих специалистов в области информатики, книги которыхвсегда являются настольными, благодаря изучению которых собственные знания накапливаются, систематизируются и позволяют создать свою методику по изучению определённой темы. Прежде всего – книга «Методика преподавания информатики», в которой автор А.И. Бочкин выделяет наиболее устойчивые, общезначимые объекты в методике преподавания информатики. Одним из интереснейших учебных пособий по информатике является пособие Т. Грызловой и В. Грызлова «TURBO PASCAL 7.2», в которой автор в соответствии с программой по информатике излагает основные понятия
  • 5. 5 информатики, вопросы моделирования, составления алгоритмов и программ на языке TURBO PASCAL. Книга «Начала программирования» автора Г. Григаса знакомит нас с основными понятиями программирования. Неоценимую помощь при подготовкек практическим занятиям оказывает книга А.Я. Савельевой «Практикум по программированию», в котором всегда можно подобрать разнообразные задачи различного характера. В заключении небольшого обзора используемой литературы отметим довольно известную книгу В.А. Каймина «Основы информатики и вычислительной техники», в которойочень доступно, ярко освещены вопросы алгоритмизации, показана связь алгоритма с созданием программы.
  • 6. 6 ГЛАВА 1. Методика изучения одномерногомассива. Для удобства изучения материала, на который отводится 10 часов в школьной программе, разобьём его на 10 уроков. Наиболее удобными формами обучения (согласно собственным наблюдениям) являются: лекционно – практическая и тестовая при закреплении. Итак: 1.1 Понятие массива.Виды массивов. УРОК 1. Понятие массива. Виды массивов. …Программированию нельзя научить, а можно лишь научиться… В математике, экономике, информатике часто используются упорядоченные наборы данных, например, последовательность чисел, таблицы, списки фамилий. Информацию часто удобно представлять в виде таблиц. Наиболее привычными являются прямоугольные таблицы, то есть таблицы, состоящие из строк и столбцов. Можно представить таблицу, которая состоит из одной строки или одного столбца. Это будет линейная таблица, то есть таблица, имеющая одно изменение. Табличные величины относятся к составным величинам, так как включают в себя другие величины, называемые элементами. В линейных таблицах элементами являются ячейки, а в прямоугольных таблицах – записи. Запись - это структурированный тип данных, который состоит из фиксированного числа компонентов одного или нескольких типов. Рис. 1.1. Пример записей. Расписание уроков Существует множество задач обработки информации, заданной в форме таблиц. К таким задачам относятся:  изменение элементов таблицы (редактирование таблицы, математические действия над элементами и т.д.); День недели Номер урока Предмет Аудит. Понедельник 1 Математика 15 Понедельник 2 Английский язык 15 Понедельник 3 Биология 15 Понедельник 4 Информатика 20
  • 7. 7  поиск элементов, удовлетворяющих определённому критерию(максимальных, минимальных значений, фрагментов текста и т.д.);  обработка значений таблицы (нахождение сумм и произведений элементов и т.д.);  сортировка таблиц, то есть упорядочение элементов по возрастанию (убыванию). В примерах таблиц на рис. 1.2 ячейки содержат однотипные данные: в прямоугольной таблице - это целые числа, а в линейной таблице - строковые величины. Эти таблицы называют массивами. Массив - упорядоченный набор, имеющий одно имя и состоящий из фиксированного числа однотипных элементов. Массив обозначается одним именем. Так совокупность чисел 1.6, 14.9, -5.0, 8.5, 0.46 можно считать массивом и обозначить одним именем, например А. Каждый элемент массива обозначается именем с индексом. Элементы массива упорядочены по значению индекса. В математике, как правило, индекс либо заключается в круглые скобки, либо указывается несколько ниже имени массива, например: А(1), А(2), А(3), А(4), А(5), или А1, А2, А3, А4, А5 или в общем виде [Ai], где i=1, 2, 3, …,N. На TURBO PASCAL 7.0 A[1]:=1.6, A[2]:=14.9, A[3]:=-5.0, A[4]:=8.5, A[5]:=0.46. Таким образом – индекс определяет положение элемента массива относительно его начала. Если в программе используется массив, то он должен быть обязательно описан. Форма описания массива: VAR ИМЯ МАССИВА: ARRAY[N1 ..N2] OF <тип переменных>; VAR A:ARRAY[1..1000] OF INTEGER; Здесь N1, N2 – номер первого и последнего элементов массива соответственно. В качестве типа элемента может использоваться любой тип данных, за исключением файлового. Если несколько массивов имеют одинаковый тип индексов и одинаковый базовый тип, то допускается в описании объединять массивы в список, например: VAR A,B,C:ARRAY[1..50] OF INTEGER; Здесь объявлено списком три массива А, В, С действительных чисел, каждый из которых содержит по 50 элементов (от 1 до 50 ).
  • 8. 8 Нельзя путать понятия «индекс» и «тип индекса». Тип индекса используется только в разделе описания массива, а индекс указывается в разделе операторов для обозначения конкретных элементов массива. При этом индекс должен быть того же типа, что и описание типа индекса. В качестве индекса может быть выражение, частным случаем которого является константа или переменная. Элемент массива иначе называется переменной с индексом. В отличие от неё, переменная без индекса называется просто переменной. Элементы массива могут стоять как в левой части оператора присваивания, так и в выражениях. Над элементами массива можно производить те же операции, которые допустимы для данных его базового типа. Если базовый тип есть INTEGER, то допустимы все операции целого типа, включая и стандартные функции. В языке TURBO PASCAL 7.2 помимо явного описания массивов в разделе переменных имеется другая форма описания, состоящая из двух этапов. Сначала в разделе описания типов TYPE указывается тип массива. Затем в разделе описания переменных VAR перечисляются массивы, относящиеся к указанному типу. Введение типа массива увеличивает раздел описаний, но в то же время упрощает отладку программы. Указание типов в разделе описаний помогает достичь логической ясности программы и является хорошим стилем программирования. Описание массива в разделе TYPE выглядит следующим образом: TYPE MASSIV=ARRAY[N1 ..N2] OF <тип элементов>. Здесь N1 и N2 – номер первого и последнего элементов массива, а тип массива определяется так же, как и в предыдущем описании. Определить переменную как массив можно непосредственно при её описании: VAR A,B,C: MASSIV; Следует отметить, что массивы А,В,С используются в разделе операторов программы. Тип массива MASSIV введён формально только в разделе описаний и нигде в программе не указывается и не обрабатывается. Следует отметить, что размерность массива задаётся при его описании и в процессе работы программы размерность массива изменять нежелательно. Применение индексированных переменных даёт эффект лишь в том случае, когда сам индекс не может быть переменной величиной.
  • 9. 9 Б) А) А) А) Рис. 1.2. Примеры таблиц: А) линейная таблица, содержащая названия месяцев; Б) прямоугольная таблица значений N, N2, N3 натуральных чисел. С помощью операторов цикла можно работать со списком, включающим 500 наименований, так же легко, как и со списком из 5 наименований. На следующих уроках я предлагаю рассмотреть одномерные и двумерные массивы. Но прежде чем закончить данную лекцию, хотелось бы предложить несколько вопросов для закрепления изложенного материала: 1. Что такое массив? 2. Для чего служат индексы массива? 3. Что общего между строкой и массивом? 4. Что такое запись? 5. Приведите примеры записей? 6. Какие существуют виды массивов? 7. Чем отличаются одномерные массивы от двумерных? ЯНВАРЬ ФЕВРАЛЬ МАРТ АПРЕЛЬ МАЙ ИЮНЬ ИЮЛЬ АВГУСТ СЕНТЯБРЬ ОКТЯБРЬ НОЯБРЬ ДЕКАБРЬ 1 2 3 4 5 6 7 1 4 9 16 25 36 48 1 8 27 24 125 206 343
  • 10. 10 1.2 Одномерный массив. Работа с элементами одномерного массива. Ввод и вывод элементов одномерного массива. УРОК 2. Одномерный массив. Работа с элементами одномерного массива. Ввод и вывод элементов одномерного массива. ОДНОМЕРНЫЙ МАССИВ – это линейно упорядоченная совокупность элементов одного и того же типа. Характерные особенности массива:  тип элементов массива должен быть конкретно описан. К каждому элементу массива должен быть прямой доступ.  число элементов массива определяется в момент его описания и далее не меняется. Описать массив можно следующим образом: 1-ый способ. TYPE имя типа = ARRAY [тип индекса] OF тип компонент массива; VAR идентификатор массива: имя типа; Пример: TYPE MAS = ARRAY [1..5] OF INTEGER; VAR A: MAS; 2-ой способ: VAR идентификатор массива : ARRAY [M..N] OF тип элементов массива; где M, N – константы целого типа. Пример: A: ARRAY[1..5] OF INTEGER; B: ARRAY[5..10] OF REAL; Один и тот же массив А был описан в приведенных примерах двумя способами. При обращении к массиву необходимо указать идентификатор переменной- массива, а так же её индекс, который указывает на местонахождение значения в массиве. Индекс записывается возле идентификатора переменной массива в квадратных скобках. Тип индекса может принадлежать к любому скалярному типу, кроме действительного. Индекс массива часто называют счётчиком массива. Именно счётчик указывает расположение элемента в строке. Пример: A[1], A[5], D[2].
  • 11. 11 TURBO PASCAL не имеет способов одновременного ввода/вывода всех элементов массива, поэтому ввод и вывод в одномерном массиве осуществляется поэлементно. Пример: ввести и вывести на экран элементы массива А: -3, 10, 150, 0. Об этом массиве мы можем сказать, что длина массива А – 5 элементов. Значения можно представить как целые числа. Program primer; Var A: Array[1..5] of integer; i: integer; Begin For i:= 1 to 5 do Begin Write(‘A=’); Readln(A[i]); End; For i: =1 to 5 do Begin Writeln(‘A[‘,I,’]=’,A[i])’); End; End. Ввод и вывод элементов массива А можно осуществить и таким образом: Program primer; Var A: Array[1..5] of integer; i: integer; Begin For i:= 1 to 5 do begin Write(‘A=’); Readln(A[i]); Writeln(‘A[‘,I,’]=’,A[i])’); End; End. Для закрепления изученного материала предлагается выполнить следующие задания: Задание 1: ввести и вывести на экран элементы массива К: 0.75, 15.5, 125, -25.751, 1000. Описание массива Вывод элементов одномерного массива Описание массива Ввод и вывод элементов одномерного массива А - объеденены Ввод элементов одномерного массива
  • 12. 12 Программа: Program primer1; Uses crl; Var K: Array[1..5] of real; i: integer; Begin Clrscr; Fori:= 1 to 5 do begin Write(‘K=’); Readln(K[i]); Writeln(‘K[‘, i ,’]=’, K[i]:10:2); End; End. В данной программе при выводе элементов массива К на экран используется следующая запись: K[i]:10:2. Объяснить это можно так: для вывода значений на экран отводится 10 общих позиций и для вывода знаков после запятой отводится 2 позиции, это значит, что значение - 25.751 на экране будет выглядеть следующим образом: Задание 2: ввести элементы массива С: -0.755, 125.75, 0, -12500. вывести на экран только положительные элементы массива С. Программа: Program primer2; Uses crl; Const N=4; Var C: Array[1..N] of real; i: integer; Begin Clrscr; Fori:= 1 to 4 do begin Write(‘C=’); Readln(C[i]); If C[i]>=0 Then Writeln(‘C[‘, i ,’]=’, C[i]:10:2); End; End.
  • 13. 13 Вопросы для закрепления: 1. Как определяется место элемента в одномерном массиве? 2. Дать определение одномерному массиву? 3. Перечислить характерные особенности одномерного массива. Задание на дом: Задание: Обозначим одномерный массив действительных чисел именем Х. Кол-во элементов в массиве Х – 10. Составить программу ввода элементов массива Х и вывода на экран только отрицательных значений. 1.3 Составление и реализация программ с элементами одномерного массива. Поиск данных. Сортировка элементов в одномерном массиве. УРОК 3. Составление и реализация программ с элементами одномерногомассива. Поиск данных. Сортировка элементов в одномерном массиве. Зная и умея правильно описывать, вводить и выводить элементы одномерного массива, а так же умея строить команду выбора, перейдём к более сложным операциям работы с одномерным массивам и наиболее удобно рассматривать их на конкретных примерах. Одними из самых простых операций с элементами одномерного массива являются нахождение суммы произведения элементов. Рассмотрим несколько задач: ЗАДАЧА 1: Составить программу нахождения суммы S, элементов одномерного массива А, длина которого – 10 элементов. Программа: Program primer1; Uses crl; Const N=10; Var A: Array[1..N] of integer; i: integer; S: integer;
  • 14. 14 Begin Clrscr; S:=0; Fori:= 1 to N do Вegin Write(‘A=’); Readln(A[i]); S:= S+A[i]; End; Writeln(‘S=’, S[i]); End. В данной программе следует обратить внимание на командную строку: S:=0. Это объясняется тем, что перед накоплением суммы чисел, сумма обнуляется. Поэтому эту команду необходимо установить в начале программы, перед открытием цикла. Команда вычисления суммы строится по правилам математики: к предыдущему значению суммы добавляется следующее значение: S:= S+A[i]. ЗАДАЧА 2 (самостоятельно): Составить программу нахождения суммы S, не нулевых элементов одномерного массива А, длина которого – 10 элементов. Программа: Program primer2; Uses crl; Const N=10; Var A: Array[1..N] of integer; i: integer; S: integer; Begin Clrscr; S:=0; Fori:= 1 to N do Вegin Write(‘A=’); Readln (A[i]); IF A[i] <> 0 THEN S:= S+A[i]; End; Writeln (‘S=’, S); End.
  • 15. 15 В данной программе следует обратить внимание на командную строку IF A[i] <> 0 THEN S:= S+A[i] , в которой перед накоплением суммы: S:=S+A[i], элемент массива A[i] проверяется согласно условию задачи: IF A[i]<> 0. ЗАДАЧА 3: Составить программу нахождения произведения D, элементов одномерного массива F, длина которого – N элементов. Программа: Program primer 3; Uses crl; Const N=10; Var F: Array[1..N] of integer; i: integer; D: integer; Begin Clrscr; D:=1; Fori:= 1 to N do Вegin Write (‘F=’); Readln(F[i]); D:= D*F[i]; End; Writeln (‘МАССИВ F:’); Fori:= 1 to N do Вegin Writeln (‘F[’,I,’]=’,F[i}); End; Writeln (‘D:=’,D); End. Для закрепления задач на нахождение суммы и произведения элементов массива предлагается следующая задача: ЗАДАЧА 4 (самостоятельно): Составить программу нахождения произведения D, положительных элементов одномерного массива K: -5, 0.5, 1.75, -2.245, 3 . Программа: Program primer 4; Uses crl; Var K: Array[1..5] of real;
  • 16. 16 i: integer; D: real; Begin Clrscr; D:=1; For i:= 1 to 5 do Вegin Write (‘K=’); Readln (K[i]); IF K[i] > =0 THEN D:= D*K[i]; End; Writeln (‘K=’, K[i]: 10:1); End. Следующий тип задач с элементами одномерного массива – это поиск элементов с условием. Ярким примером, иллюстрирующим данный тип задач, является нахождение минимального (максимального) элемента в одномерном массиве. ЗАДАЧА 5: Составить программу нахождения MAX элемента в одномерном массиве А: -5, 50, 1.75, -2.245, 100, 0 . Программа: Program primer 5; Uses crl; Var A: Array[1..6] of real; i: integer; MAX: real; Begin Clrscr; Fori:= 1 to 6 do Вegin Write (‘A=’); Readln (A[i]); End; MAX:=A[1}; For i:= 2 to 6 do Вegin If A[i}>= MAX THEN MAX:= A[i}; End; Writeln (‘MAX:=’, MAX : 5 :1); End.
  • 17. 17 В данной программе следует обратить внимание на командную строку MAX:=A[1]. Это значит, что после ввода данных, но перед сравнением элементов необходимо за максимальное значение принять значение первого элемента и затем при сравнении, если значение последующих элементов больше максимального значения, то последнее значение принимает значение большего. Для закрепления этого типа задач для самостоятельной работы предлагается следующая задача: ЗАДАЧА 6 (самостоятельно): Составить программу нахождения MIN элемента в одномерном массиве А: -5, 50, 1.75, -2.245, 100, 0 . Программа: Program primer 6; Uses crl; Var A: Array[1..6] of real; i: integer; MIN: real; Begin Clrscr; Fori:= 1 to 6 do Вegin Write (‘A=’); Readln (A[i]); End; MIN:=A[1}; Fori:= 2 to 6 do Вegin If A[i} < MIN THEN MIN:= A[i}; End; Writeln (‘MIN:=’, MIN : 5 :1); End. Данная задача отличается командной строкой If A[i] < MIN THEN MIN:= A[i}, т.е. меняется только условие If A[i] < MIN … . Говоря о работе с элементами в одномерном массиве, а конкретнее о задачах на поиск элементов с условием, следует обратить внимание на задачи по упорядочению элементов в одномерном массиве по возрастанию (убыванию). Существует много методов решения подобных задач. наиболее популярным является «метод пузырька».
  • 18. 18 «МЕТОД ПУЗЫРЬКА» основан на перестановке соседних чисел. Для упорядочения элементов массива производим повторные обращения к массиву, каждый раз перемещая наименьший элемент части массива, что остается на начало. Перемещение элементов массива происходит следующим образом: пересматриваем элементы массива справа налево, сравнивая пары соседних чисел; если числа в паре размещены в порядке возрастания, то оставляем без изменения, а если нет – то меняем их местами. В результате первого прохода наименьший элемент массива будет поставлен в начало массива. Во втором проходе такие операции выполняются над элементами с последующего до второго, а в третьем – с последующего до третьего и т.д. Упорядочение массива будет закончено, когда при проходе массива не выполняется ни одной перестановки элементов массива. Факт перестановки фиксируется переменной PRAP, которая в самом начале имеет значение 0, приобретает значение 1 тогда, когда выполняется перестановка в какой- либо паре. Флажок PRAP используется с целью экономии времени в том случае, когда часть элементов массива вначале упорядочена. Для закрепления выше сказанного рассмотрим пример: Program BUBBLESORT; Uses CRT; Const N=10; (количество элементов массива) Var A: array[1..N] of integer; (описание массива) I,j : integer; (вспомогательные переменные) ADOP: integer; (вспомогательная переменная) PRAP: integer; Begin Clrscr; Writeln (‘Ввести элементы массива:’); For i:=1 to N do Begin Write (‘A[‘,I,’]=’); Readln (A[i]); End; Writeln (‘Массив к сортированию:’); Writeln; For i:=1 to N do Writeln (A[i]:5); WRITELN; I:=2; Repeat PRAR:-0; For j:=N Downto i do
  • 19. 19 Begin If A[j] < A[j-1] Then Begin ADOP:=A[j-1]; A[j-1]:=A[j]; A[j]:=ADOP; PRAP:=1; End; End; I:=i+1; Until PRAP=0; Writeln; Writeln (‘Массив после сортирования:’); Writeln; For i:=1 to N do Writeln (A[i]):5); Writeln; End. Кроме, рассмотренного выше «метода пузырька», упорядочение элементов массива производить и методом выбора минимального элемента. Метод «ВЫБОРА МИНИМАЛЬНОГО ЭЛЕМЕНТА» основан на том, что массив пересматривается: первый раз – выбирается минимальный элемент этого массива, который меняется местами с первым элементом массива; второй раз - массив пересматривается с другого элемента. Снова находится минимальный элемент, который меняется местами с другим элементом массива. Данный процесс выполняется до тех пор, пока не будет поставлено на место N-1 ый элемент. Рассмотрим упорядочение массива методом выбора минимального элемента: Program MINSORT; Uses CRT; { кол-во элементов массива } Const N=10; Var A: array[1..N] of integer; { описание массива } I,j : integer; { вспомогательные переменные } A min: integer; { вспомогательная переменная для минимального элемента массива } L: integer; { порядковый номер минимального
  • 20. 20 элемента массива } Begin Clr Scr; Writeln (‘Ввести элементы массива’); For i:=1 to N do Begin Write (‘A[‘,I,’]=’); Readln(A[i]); End; Writeln (‘ Массив к сортированию:’); Writeln; For i:=1 to N do Write (A[i]:5); Writeln; For i:=1 to N do Begin Amin:=A[i]; L:=I; J:=i+1; While J<=N do Begin If Amin>A[j} Then Begin Amin:=A[j]; L:=j End; J:=J+!; End; A[l]:=A[i]; A[i]:=Amin; End; Writeln; Writeln (‘Массив после сортирования:’); Writeln: For i:=1 to N do Write (A[i]:5); Writeln; End. Для закрепления изложенного материала предлагается следующая самостоятельная работа:
  • 21. 21 ЗАДАЧА 7( самостоятельно ): Дан массив В: -5, 0, 100, -0.75, -50, 75, 1000. Упорядочить данный массив в порядке убывания ( использовать любой метод сортировки). Вопросы для закрепления: 1. Дать определение одномерномумассиву? 2. Как описывается одномерный массив? 3. Каким образом осуществляется обращение к элементам одномерного массива? 4. Как вводить элемент одномерного массива в память компьютера? 5. Какая идея лежит в основе алгоритма нахождения максимального или минимального элемента одномерного массива? 6. Как организовать вывод результатов обработкимассивов? Задание на дом: Задание 1: Дан одномерный массив чисел Х. Кол-во элементов в массиве Х – 15. Составить программу упорядочения элементов массива по убыванию (метод сортирования выбрать по желанию). Задание 2*: Даны два одномерных массива А и В – одинаковой длины. Упорядочить массив А по возрастанию, а массив В по убыванию. Получить массив С, путем сложения массива А и массива В, а затем упорядочить массив С по возрастанию. 1.4 Практическая работа «Составление и реализация программ обработки элементов одномерного массива». УРОК 4. Практическая работа«Составление и реализация программ обработки элементов одномерного массива». После изучения раздела темы предлагается практическая работа, которая включает контрольные вопросы, тесты и выполнение заданий конкретно по составлению программ на языке TURBO PASCAL. Практическая работа построена так, что выполнив одно задание, было легко работать дальше.
  • 22. 22 В цели практической работы отмечено то, что необходимо усвоить, какие практические навыки необходимо приобрести, какие знания и умения следует закрепить. Именно для достижения этих целей и предлагаются задания, которые в свою очередь конкретизируются пунктами. Каждый пункт следует выполнять в определенном порядке, так как они предусматривают нарастание уровня сложности, а в некоторых случаях выполнение последующих невозможно без выполнения предыдущих. Практические работы представлены в двух формах. Все задания можно разбить на четыре уровня: I. первый уровень является достаточно легким, его не трудно выполнить без помощи учителя; II. второй уровень предусматривает наличие подсказок, поданных в рамках; III. третий уровень содержит подсказки в таком виде: подсказка подана не полностью; подсказка, которую необходимо выбрать из двух – правильной и неправильной; IV. четвертый уровень требует творческого подхода, умения находить правильное решение, а так же дополнительных знаний и умений. 1 форма проведенияпрактическойработы: Тема: Создание и реализация программ обработки элементов одномерного массива табличных величин. Цель: Научится составлять и реализовывать программы обработки элементов одномерного массива. Вопросы, на которые необходимо ответь перед выполнением практической работы: 1. Дать определение одномерного массива? 2. как описать одномерный массив? 3. Как осуществляется ввод и вывод одномерного массива7 4. В чем заключается принцип нахождения максимального (минимального) массива? 5. Каким образом можно осуществить сортировку массива по возрастанию (убыванию). Составить и выполнить тесты для проверки правильностифункциони- рования программы.
  • 23. 23 Тесты: 1. Какие из одномерных массивов описаны правильно, а какие нет? A. Var A:array [1..5] of real; B. Type MAS=ARRAY [‘A’..’D’]; var B:mas; C. Var C:[integer] of char; D. Var D:array [true..flse] of char; Правильно: ___________ Неправильно: _________________ 2. Будет ли правильно написана команда A[i]:=B, если изменить А, В описаны таким образом: Type MAS=array [1..3, 1..5] of real; MAS1=array [1..3] of real; Var A:mas; B:mas1; Ответ: (да, нет) 3. Какие из приведенных ниже команд присвоения являются правильными, если переменные и константы в программеописаны таким образом: Const A=’СТІЛ’; B=’C’; Type MAS=array [1..4] of char; Var S:char; K:mas; I:integer; a) s:a; b) k:=a; c) s:=b; d) k[6]=b; e) k:=b; f) i:=org(k[i]); Правильно: ____________ Неправильно: _________________ 4. Сколько элементов содержит каждый из массивов? a) var A:array [‘A’..’C’],2..5] of real; N=
  • 24. 24 b) var B:array [false..true] of Boolean; N= c) type C=(m1,m2,m3,m4); N= Var X: array [C]; 5. приведенных ниже обращений к элементам массивов есть правильным, а какие нет? a) a[‘B’,3]; d) b[0,false]; b) a[‘B’,6]; e) x[m2]; c) b[true]; f) x[true]; Правильно: ___________ Неправильно: _________________ 6. Указать, какие из приведенных ниже массивов являются правильными, а какие нет? a) var a:array [1..20] of real; b) type Mas:array[1..20] of real; var A:Mas; c) type Mas=array [1:20] of real; var A:Mas; d) type Mas=array [1..20] of real; var A:Mas; e) type Mas=array [1,20] of real; var A:Mas; f) var A:array [1..20] of real; Правильно: ____________ Неправильно: _______________ 7. Задано описание массива: Type MASSIV=array [1..20] of real; Var A: massiv; I: integer; Указать, какие из приведенных ниже утверждений записаны правильно, а какие нет? a) i:=10; a[j]:=7.5; b) i:=10; a[3*i]:=7.5; c) i:=10; a[I div 2]:=7.5; d) i:=10; a[trunc(i/2)]:=7.5;
  • 25. 25 e) i:=10; a[i/2]:=7.5; f) i:=10; a[Int(i/2)]:=7.5 Правильно: ________________ Неправильно: _________________ Задания для практической работы: 1. Найти минимальный и максимальный элемент массива А[1..10] и поменять их местами. 2. Найти среднее геометрической значение элементов массива А[1..10]. 3. Найти сумму ненулевых элементов массива А[1..10] . 4. Найти среднее арифметическое значение элементов массива А]1..10]. 5. Переписать подряд в массив Y[1..10] дополнительные и в массив X[1..10] отдельные элементы массива . 6. Найти в массиве А[1..10] элемент кратный 5. напечатать его и его порядковый номер. 7. Найти сумму элементов массива А[1..10] кратных 3. 2. форма проведенияпрактической работы. В данной практической работе по окончании выполнения учителю предлагается заполнить листок контроля, в котором указываются оценки о выполнении работы. Высший бал за практическую работу – 12 баллов. Тема: Созданиеи реализация программ обработки одномерных (линейных) массивов на языке TURBO PASCAL Цель: Научится организовывать иобрабатывать элементы в одномерного массива на языке TURBO PASCAL; приобрести практическиенавыки создания иреализации программ обработки линейных массивов на языке TURBO PASCAL. Задания: Составьте программу обработки элементов одномерного массива. Выполнениеработы:
  • 26. 26 1-2. Дайте ответ на один из предложенных учителем вопрос: 1) Что такое массив? 2) Как задаются элементы в одномерном массиве? 3) Как организовать описание линейного(одномерного) массива на языке TURBO PASCAL? 4) Как сформулировать новый тип переменных, которые представлены в виде таблицы? 5) Как организовать ввод элементов одномерного массива в память ПК? 6) Как организовать вывод результата в одномерном массиве? 7) Какая идея лежит в основе алгоритма нахождения самого большого элемента массива? 8) Опишите один из методов сортирования элементов таблицы? 3. Создайте файл и сохраните его с определенным именем по известной вам структуре. 4-6. В таблице указан алгоритм обработки элементов линейной таблицы - 10 целых чисел. Дополните его необходимыми частями. Реализуйте составленную программу в среде программирования TURBO PASCAL. Запишите алгоритм для своего варианта задания. 1 S:=0 For i:=1 to n do If a [i] < 0 then s:=s+1; 2 S:=0 For i:=1 to n do If a [i] > 0 then s:=s+1; 3 d:=1 For i:=1 to n do d:=d*a [i] 4 s:=0 For i: =1 to n do If a[i] 5 d: =1 For i:=1 to n do If a [i] <0 then d :=d*a[i]
  • 27. 27 Запишите программу и результаты работы в тетрадь в отведенном в конце работы месте. 7-9. В среде программирования TURBO PASCAL составьте программу для решения задач своего варианта: 1) Все отрицательные элементы таблицы замените нулями и подсчитайте количество тех элементов, которые равны 5. 2) Найдите наибольший элемент среди всех положительных элементов одномерного массива А (10). 3) Посчитайте количество элементов в одномерном массиве, которые равны ее последнему элементу. 4) Найдите произведение элементов в одномерном массиве с парными индексами. 5) Найдите количество элементов в одномерном массиве, которые равны нулю, а все отрицательные замените ее модулями. 6) В данной последовательности, состоящей из 10 целых чисел поменяйте местами первый и наименьший элемент. 7) В данном одномерном массиве переставьте местами элементы с конца на начало. 8) В данном одномерном массиве найдите максимальный элемент и замените его нулем. 9) Найдите сумму квадратов всех отрицательных элементов одномерного массива В[5]. 10)Найти произведение отрицательных элементов одномерного массива В[5], которые имеют непарные индексы. Запишите программу и результаты работы в тетрадь в отведенном в конце работы месте. При написании программы определитесь, к какому типу стандартных программ она принадлежит – это поможет вам при составлении алгоритма. Допишите в программе начало (введение элементов массива) и конец программы (выведение результата). Для описания алгоритма обратите внимание на форму, которая дает изменение в теле цикла (результатом есть сумма - произведения или количество).
  • 28. 28 10-11. В средепрограммирования TURBO PASCAL решите следующие задачи: 1) Дано действительные числа а1, а2, … а10 и b1, b2, … b10. Вычислите (а1 + b10) (а2 + b9)…(а10 + b1). 2) Дано два одинаковые по длине массивы. Объедините их в третий массив, чередуя элементы первого и второго массивов. Проверьте, получен ли у вас упорядоченный (по возрастанию или убыванию) массив? Запишите программу и результаты работы в тетрадь в отведенном в конце работы месте. 12. Данные в массивах задайте произвольно. Записать текст программы и результаты ее выполнения в тетрадь: Данный листок контроля завершает выполнение практической работы. Задание 1 2 3 4 5 6 7 8 9 10 11 12 Оценка за выполнению Дата выполнения Оценка Подпись учителя
  • 29. 29 ГЛАВА 2. Методика изучения двумерного массива. 2.1 Двумерный массив. Работа с элементами вдвумерном массиве. Ввод и вывод элементов двумерного массива. УРОК 5. Двумерный массив. Работа с элементами двумерного массива. Ввод и вывод элементов двумерного массива. Говоря о двумерном массиве, хотелось бы сразу сказать, что это массив, в котором элемент характеризуется не только положением в строке, как это было в одномерном массиве, но и положением в столбце. Иными словами, двумерный массив можно рассматривать как таблицу, состоящую из m-рядков и n-столбцов. Двумерный массив можно описать двумя способами: 1-ый способ: Туре Имя типа = array[тип индекса] of array [тип индекса] of тип компонент: Var идентификатор массива: имя типа; Пример: Type MAS = array [1..5] of array ]1..4] of integer; Var MATR: MAS; 2-ой способ: Var Имя массива : array[m..n, k..b] of тип элементов массива; Пример: Var MATR: array[1..10, 1..5] of integer; Обращение к элементам массива, описанным таким образом осуществляется так: MATR[i,j]- это элемент массива MATR, который находится на пересечении i- строки и j-столбца. Пример: MATR[3,2] – элемент, который находится на пересечении 3- строки и 2-столбца. Обработка элементов двумерного массива осуществляется таким же образом, что и в одномерном, единственное отличие – это использование вложенных циклов.
  • 30. 30 В данном примере ввод элементов массива осуществляется с помощью объединения команд Write и Readln и массив будет записан не в виде двумерной таблицы, а в виде таблицы вытянутой в столбец. Write (‘Введите A’,i,’,’,j,’]=’) – данная командная строка является для программиста в виде – а[1,2]=, т.е. информация про то, какой элемент массива вводим. Readln (M[I,j]) – считывает элемент массива. Что бы можно было вводить таблицу в «природном» виде – ряд за рядом, необходимо использовать другую форму введения элементов массива: For i:=1 to 3 do Begin For j:=1 to 4 read (M[I,j]); Readln; End. Введение элементов в двумерном массиве необходимо также осуществлять в цикле: For i:=1 to 3 do For j:=1 to 4 do Writeln (‘a[’,I,j’]=’,a[I,j]); В данном случае все элементы таблицы будут записаны в виде одного столбика. Что бы выведение таблицы осуществлялось в «природном» виде, т.е. ряд за рядом, необходимоиспользовать такую форму выведения двумерного массива: For i:=1 to 3 do Begin For j:=1 to 4 do write(a[I,j]:6); Writeln; End. В данном случае таблица будет выведена так, как она записана var a:array [1..3,1..4] of integer; (3 ряда по 4 числа в каждом). Для закрепления изученного материала предлагается выполнить следующие задания: Задание 1: ввести и вывести на экран элементы элементы матрицы К[1..3,1..4]. Программа:
  • 31. 31 Program primer1; Uses crl; Var K: Array[1..3,1..4] of integer; I,j: integer; Begin Clrscr; Writeln(‘Введите значения элементов матрицы К:’); Writeln; Fori:= 1 to 3 do Begin Forj:-= 1 to 4 do Writeln(‘K[‘, i ,’,’,j,’]=’), Readln(K[I,j]); End; Writeln; Writeln (‘Общий вид матрицы:); Writeln; For i:= 1 to 3 do Begin For j:= 1 to 4 do Write K[I,j]:5); Writeln; End; End. Результаты выполнения программы : Общий вид матрицы: 1 2 -3 4 2 -2 -6 7 -5 8 0 9 После выполнения этой программы, усложним задачуи выведем на экран только положительные значения матрицы К: Программа: Program primer1; Uses crl; Var K: Array[1..3,1..4] of integer; I,j: integer; Begin Clrscr; Writeln(‘Введите значения элементов матрицы К:’); Writeln; Fori:= 1 to 3 do
  • 32. 32 Begin Forj:-= 1 to 4 do Writeln(‘K[‘, i ,’,’,j,’]=’), Readln(K[I,j]); End; Writeln; Writeln (‘Общийвид матрицы до преобразования:); Writeln; For i:= 1 to 3 do Begin For j:= 1 to 4 do Write K[I,j]:5); Writeln; End; Writeln(‘Общий вид таблицы после преобразования:); Fori:=1 to 3 do Begin For j:= 1 to 4 do If K[I,j]>=0 Then Write(K[I,j]:5) Else Write(‘ ‘); Writeln; End; End. Результат от выполнения этой программы на экране следующий: Общий вид матрицы до преобразования: 1 2 -3 4 2 -2 -6 7 -5 8 0 9 Общий вид матрицы после преобразования: 1 2 4 2 7 8 0 9 Вопросы для закрепления: 1. Как определяется место элемента в двумерном массиве? 2. Дать определение двумерному массиву? 3. Перечислить характерные особенности двумерного массива. 4. Как можно описать двумерныймассив с помощьюодномерного? 5. Чем отличается ввод элементов в двумерном массиве от ввода элементов в одномерном (линейном) массиве?
  • 33. 33 6. Как организовать вывод элементов в двумерном массиве в виде таблицы? Задание на дом: Задание: Двумерный массив действительных чисел Х[1..N,1..M]. Составить программу ввода элементов массива Х и вывода на экран только отрицательных значений. 2.2 Составление и реализация программ с элементами двумерного массива. Поиск данных. Сортировка элементов в двумерном массиве. УРОК 6. Составление и реализация программ с элементами двумерного массива. Поиск данных. Сортировка элементов в двумерном массиве. Зная и умея правильно описывать, вводить и выводить элементы двумерного массива, а так же умея строить команду выбора, перейдём к более сложным операциям работы с двумерным массивам и наиболее удобно рассматривать их на конкретных примерах. Одними из самых простых операций с элементами двумерного массива являются нахождение суммы, произведения элементов. Рассмотрим несколько задач: ЗАДАЧА 1: Составить программу нахождения суммы S, элементов двумерного массива А, элементами которого являются: -5 1 7.5 9 0 -1 0.5 -5 Программа: Program primer1; Uses crt; Const N=2; M=4; Var A: Array[1..N,1..M] of real; i: integer; j: integer; S: integer; Begin
  • 34. 34 Clrscr; S:=0; Fori:= 1 to N do Вegin Forj:=1 to M do Write(‘A[I,j]=’); Readln(A[I,j]); S:= S+A[I,j]; End; Writeln(‘S=’, S[i]); End. В данной программе следует отметить, что при вводе элемента двумерного массива, указывается строка, а затем – столбец и поэтому индекс элемента будет иметь вид: A[I,j]. Команда вычисления суммы : S:= S+A[I,j]. ЗАДАЧА 2 (самостоятельно): Составить программу нахождения суммы S отрицательных элементов двумерного массива А элементами которого являются: -5 1 7.5 9 0 -1 0.5 -5 Программа: Program primer2; Uses crl; Const N=2; М=4; Var A: Array[1..N,1..М] of integer; i: integer; j: integer; S: integer; Begin Clrscr; S:=0; Fori:= 1 to N do Вegin For j:= 1 to M do Write(‘A[I,j]=’); Readln (A[I,j]); IF A[I,j] >= 0 THEN S:= S+A[I,j]; End; Writeln (‘S=’, S); End.
  • 35. 35 В данной программе командную строку IF A[I,j] >= 0 THEN S:= S+A[I,j] говорит о том, что перед накоплением суммы: S:=S+A[i], элемент массива A[I,j] проверяется согласно условию задачи: IF A[I,j]>= 0. ЗАДАЧА 3: Составить программу нахождения произведения D, элементов двумерного массива F элементами которого являются: 1 7 0 3 10 25 1 8 15 0 4 -5 0 -9 -1 Программа: Program primer 3; Uses crl; Const N=3; М=5; Var F: Array[1..N,1..M] of integer; i: integer; j: integer; D: integer; Begin Clrscr; D:=1; Fori:= 1 to N do Вegin For j:= 1 to M do Write (‘F[I,j]=’); Readln(F[I,j]); D:= D*F[I,j]; End; Writeln (‘МАССИВ F:’); Fori:= 1 to N do Вegin For j:=1 to M do Writel(‘F[’,I,’]=’,F[I,j]:6); Wriyeln; End; Writeln (‘D:=’,D); End. Для закрепления задач на нахождение суммы и произведения элементов массива предлагается следующая задача:
  • 36. 36 ЗАДАЧА 4 (самостоятельно): Составить программу нахождения произведения D, положительных элементов двумерного массива K элементами которого являются: 1 7 0 3 -17 -21 1 8 15 0 4 -5 0 -9 -1 Программа: Program primer 4; Uses crl; Var K: Array[1..3, 1..5] of real; i: integer; j: integer; D: real; Begin Clrscr; D:=1; For i:= 1 to 3 do Вegin For j:= 1 to 5 do Write (‘K[I,j]=’); Readln (K[I,j]); IF K[I,j] > =0 THEN D:= D*K[I,j]; End; Writeln (‘D=’, D: 10:1); End. Следующий тип задач с элементами двумерного массива – это поиск элементов с условием. Ярким примером, иллюстрирующим данный тип задач, является нахождение минимального (максимального) элемента в двумерном массиве. ЗАДАЧА 5: Составить программу нахождения MAX элемента в двумерном массиве А, включающем: 1 7 0 3 -17 -21 1 8 15 0 4 -5 0 -9 -1 Программа: Program primer 5; Uses crl; Var A: Array[1..3, 1..5] of real; i: integer;
  • 37. 37 j: integer; MAX: real; Begin Clrscr; Fori:= 1 to 3 do Вegin For j:= 1 to 5 do Write (‘A[I,j]=’); Readln (A[I,j]); End; MAX:=A[1,1}; For i:= 1 to 3 do Вegin If A[i,j] >= MAX THEN MAX:= A[I,j]; End; Writeln (‘MAX:=’, MAX : 5 :1); End. В данной программе следует обратить внимание на командную строку MAX:= A[1,1]. Это значит, что после ввода данных, но перед сравнением элементов необходимо за максимальное значение принять значение первого элемента, в нашем случае A[1,1], и затем при сравнении, если значение последующих элементов больше максимального значения, то последнее значение принимает значение большего. Для закрепления этого типа задач для самостоятельной работы предлагается следующая задача: ЗАДАЧА 6 (самостоятельно): Составить программу нахождения MIN элемента в двумерном массиве А: 1 7 0 100 -17 -21 1 8 15 0 4 -5 0 -9 -50 Программа: Program primer 6; Uses crl; Var A: Array[1..3, 1..5] of real; i: integer; j: integer; MIN: real; Begin Clrscr; Fori:= 1 to 3 do
  • 38. 38 Вegin For j:= 1 to 5 do Write (‘A[i,j]=’); Readln (A[I,j]); End; MIN:= A[1,]; Fori:= 1 to 3 do Вegin For j:=1 to 5 do If A[I,j] < MIN THEN MIN:= A[I,j]; End; Writeln (‘MIN:=’, MIN : 5 :1); End. Данная задача отличается командной строкой If A[I,j] < MIN THEN MIN:= A[I,j}, т.е. меняется только условие If A[I,j] < MIN … . Говоря о работе с элементами в двумерном массиве, а конкретнее о задачах на поиск элементов с условием, следует внимание на задачи такого типа, как поиск конкретного элемента, например: ЗАДАЧА 7: Составить программу нахождения в двумерном массиве А, элемента равного К, если массив А представлен следующими элементами: 1 7 0 100 -17 -21 1 8 15 0 4 -5 0 -9 -50 Программа: Program primer 7; Uses crl; Var A: Array[1..3, 1..5] of real; i: integer; j: integer; К: real; Begin Clrscr; Fori:= 1 to 3 do Вegin For j:= 1 to 5 do Write (‘A[i,j]=’); Readln (A[I,j]); End; Write(‘K:=’); Readln(K); Fori:= 1 to 3 do Вegin
  • 39. 39 For j:=1 to 5 do If A[I,j] = K THEN Writeln(‘Элемент найден К=’,A[i,j]:5:1); End; End. Для закрепления этого задач подобного типа, следует рассмотреть и такую задачу: ЗАДАЧА 8: Составить программу нахождения в двумерном массиве А, элемента равного F и посчитать сколько элементов равных F есть в двумерном массиве, если массив А представлен следующими элементами: 1 7 0 100 -17 -21 1 8 15 100 4 -5 100 -9 -50 Программа: Program primer 8; Uses crl; Var A: Array[1..3, 1..5] of real; i: integer; j: integer; K: integer; F: real; Begin Clrscr; Fori:= 1 to 3 do Вegin For j:= 1 to 5 do Write (‘A[i,j]=’); Readln (A[I,j]); End; Write (‘F:=’); Readln(F); Fori:= 1 to 3 do Вegin For j:=1 to 5 do If A[I,j] = F THEN K:=K+1; End; Writeln (‘Количество элементов, равныхF, в массиве:’,K); End.
  • 40. 40 Вопросы для закрепления: 1. Дать определение двумерному массиву? 2. Как описать двумерный массив? 3. Каким образом осуществить обращение к элементам в двумерном массиве? 4. Как ввести элементы в двумерном массиве в память компьютера? 5. Какая идея лежит в основеалгоритма нахождения максимального или минимального элемента в двумерном массиве? 6. Как организовать вывод результатов обработки в двумерном массивов? Задание на дом: Задание 1: Дан двумерный массив А, состоящих из натуральных чисел. Составить программу, которая посчитает количество МАХ элементов в массиве А, включающем следующие числа: -0.75 100 0 -1.438 10 0 1 1000 1000 -1.5 5 1000 Задание 2*: Составить программу построения и вывода на печать таблицы Пифагора. 2.3 Практическая работа «Составление и реализация программ обработки элементов двумерного массива». УРОК 7. Практическая работа«Составление и реализация программ обработки элементов двумерного массива». После изучения раздела темы, как и в предыдущем случае, в качестве закрепления изученного материала предлагается практическая работа, которая включает контрольные вопросы, тесты и выполнение заданий конкретно по составлению программ на языке TURBO PASCAL. Не будем повторять, что тема и цель соответствуют программе изучения информатики, утвержденной МОН Украины, об этом сказано выше, отметим, что так же как и в разделе 1.4 предлагаем две формы проведения практической
  • 41. 41 работы по закреплению знаний. умений и навыков работы с элементами двумерного массива. 1 форма проведенияпрактическойработы: Тема: Создание и реализация программ обработки элементов двумерного массива . Цель: Научится составлять и реализовывать программы обработки элементов двумерного массива. Вопросы, на которые необходимо ответь перед выполнением практической работы: 1. Дать определение двумерному массиву? 2. Как описать двумерный массив? 3. Как осуществляется ввод и вывод элементов двумерного массива ? 4. В чем заключается принцип нахождения максимального (минимального) в двумерном массиве? 5. Каким образом можно осуществить сортировку массива по возрастанию (убыванию). Составить и выполнить тесты для правильности функционирования программ. Тесты: 1. Какие из одномерных массивов описаны правильно, а какие нет? A. Var A:array [1..5] of real; B. Type MAS=ARRAY [‘A’..’D’]; var B:mas; C. Var C:[integer] of char; D. Var D:array [true..flse] of char; Правильно: ___________ Неправильно: _________________ 2. Какие из двумерных массивов написаны правильно, а какие нет? a. Var A:array [1..3, 1..5] of real; b. Type MAS=array [‘A’..’D’,1..4] of integer; var B:mas;
  • 42. 42 c. Type MAS1=array[1..10] of char; var C:array[1..3] of MAS1; d. Var D:array [3,4] of integer; var E:array [1..3],[1..5] of real; Правильно: ____________ Неправильно: __________________ 3. Будет ли правильно написана команда A[i]:=B, если изменить А, В описаны таким образом: Type MAS=array [1..3, 1..5] of real; MAS1=array [1..3] of real; Var A:mas; B:mas1; Ответ: (да, нет) 4. Какие из приведенных ниже команд присвоения являются правильными, если переменные и константы в программеописаны таким образом: Const A=’СТІЛ’; B=’C’; Type MAS=array [1..4] of char; Var S:char; K:mas; I:integer; g) s:a; h) k:=a; i) s:=b; j) k[6]=b; k) k:=b; l) i:=org(k[i]); Правильно: ____________ Неправильно: _________________ 5. Сколько элементов содержит каждый из массивов? a) var A:array [‘A’..’C’],2..5] of real; N= b) var B:array [false..true] of Boolean; N= c) type C=(m1,m2,m3,m4); N= Var X: array [C];
  • 43. 43 6. Используя описание массивов из задания 5, обозначить, какие из приведенных ниже обращений к элементам массивов есть правильным, а какие нет? e) a[‘B’,3]; d) b[0,false]; f) a[‘B’,6]; e) x[m2]; g) b[true]; f) x[true]; Правильно: ___________ Неправильно: _________________ 7. Указать, какие из приведенных ниже массивов являются правильными, а какие нет? f) var a:array [1..20] of real; g) type Mas:array[1..20] of real; var A:Mas; h) type Mas=array [1:20] of real; var A:Mas; i) type Mas=array [1..20] of real; var A:Mas; j) type Mas=array [1,20] of real; var A:Mas; f) var A:array [1..20] of real; Правильно: ____________ Неправильно: _______________ 8. Задано описание массива: Type MASSIV=array [1..20] of real; Var A: massiv; I: integer; Указать, какие из приведенных ниже утверждений записаны правильно, а какие нет? b) i:=10; a[j]:=7.5; b) i:=10; a[3*i]:=7.5; c) i:=10; a[I div 2]:=7.5; h) i:=10; a[trunc(i/2)]:=7.5; e) i:=10; a[i/2]:=7.5; f) i:=10;
  • 44. 44 a[Int(i/2)]:=7.5 Правильно: ________________ Неправильно: _________________ Задания для практической работы: 1. Найти минимальный и максимальный элемент массива А[1..5, 1..4] и поменять их местами. 2. Найти среднее геометрической значение элементов массива А[1..10, 1юю10]. 3. Найти сумму ненулевых элементов массива А[1..10, 1..10] . 4. Найти среднее арифметическое значение элементов массива А[1..10, 1..10]. 5. Переписать подряд в массив Y[1..2, 1..3] дополнительные и в массив X[1..2, 1..3] отдельные элементы массива . 6. Найти в массивеА[1..10, 1..10] элемент кратный 50. напечатать его и его порядковый номер. 7. Найти сумму элементов массива А[1..10. 1..10] кратных 5. 2 форма проведенияпрактической работы: Тема: Создание и реализация программ с элементами двумерного массива на языке TURBO PACAL. Мета: Научиться описывать прямоугольные таблицы на языке TURBO PACAL. Получить практические навыки по созданию и реализации программ обработки элементов двумерного массива на языке TURBO PASCAL. Задание:Составить программу обработки заданного двумерного массива. Выполнениеработы: 1-2. Дать ответ на одиниз предложенных учителем вопрос:  Что такое двумерный массив?  Как задаються значения элементов в двумерном массиве?
  • 45. 45  Как организовать описание элементов двумерного массива на языке TURBO PASCAL?  Как можно описать двумерный массив с помощью одномерного массива?  Чем отличается ввод элементов двумерного массива от линейного?  Как организовать вывод элементов двумерного массива в табличной форме?  Что такое главная диагональ массива и какие особенности алгоритмов, что связанны с ее обработкой?  Чем отличается алгоритм нахождения наибольшего элемента двумерного массиваот аналогичного для линейного? 3. Создать файл и сохранить его с определенным именем за известной вам структурой. 4-6. В таблице задан алгоритм обработкиэлементов двумернойтаблице - 9 целых чисел, Дополнить его необходимымичастями. Реализуйте созданную программу в среде программирования TURBO PASCAL. Запишите словесно этот алгоритм для своего варианта задания. 1 S:=0 For i:=1 to n do For j:=1 to n do S:=s+a[i,j]; 2 K:=0 For i:=1 to n do For j:=1 to n do If a[i,j]>0 then k:=k+1; 3 d:=1; For i:=1 to n do For j:=1 to n do d:=d*a[i,j]; 4 k:=0; For i:=1 to n do For j:=1 to n do If a[i,j]<0 then k:=k+1; 5 d:=1; For i:=1 to n do d:=d*a[i,j]; 6 s:=0; For i:=1 to n do For j:=1 to n do If a[i,j]<0 then
  • 46. 46 s:=s+f[i,j]; Запишите программу и результаты работы в тетрадь в отведенное в конце работы место. 7-9. В середине программирования развязка задачи своего варианта: 1) Найдите максимальный элемент главной диагонали прямоугольной таблице В[1..3,1..3]. 2.) Найти количество элементов таблице A[1..3,1..3], которые равны её первому элементу. 3) В прямоугольной таблице В[1..3,1..3] все элементы заменить их квадратами. 4) Найти произведение элементов таблице А[1..3,1..3], которые меньше 1. 5) Найти сумму квадратов тех элементов квадратной таблицы В[1..3,1..3], которые находятся на главной диагонали. 6) Заменить все элементы главной диагонали квадратной таблицы В(3х3) на их квадраты. 7) Все дополнительные элементы квадратной таблицы В[1..3,1..3] заменить их квадратными корнями. 8) Найти ряд , в котором расположенный наименьший элемент главной диагонали прямоугольной таблице В[1..3,1..3]. 9) Замените все отрицательные элементы таблицы А (3х3) нулями, а дополнительные – единицами. 10) Подсчитать количество элементов таблицы А(3х3),какие больше её первого элемента. Запишите программуи результаты роботы в тетрадь в отведённом в конце работы месте. 10-11. В среде программирования Turbo Pascal развяжите следующие задачи: 1) Расписание движения N маршрутов автобусов по М остановкам города на протяжении одного часа записано в таблицу размером NxM. Считается, что каждый автобус может быть на остановке только один раз, а значение”0” означает, что на этой остановке автобус не останавливается. Определите, на каких остановках останавливается наибольшее кол-во автобусов (если таких несколько – указать все).
  • 47. 47 2) Таблицу футбольного чемпионата заданного квадратной матрицей NxМ, в которой все элементы, которые лежат на главной диагонали - равны 0, а другие - 2, 1 или 0 (2- победа, 1- ничья, 0- поражение). Определите, Какая команда получила выигрыш, и те команды, которые прошли чемпионат без поражения. Запишите программу и результаты работы в отведенном в конце работы месте. 12. Какие ещё вопросы можно поставить к задаче вашего варианта, так как реализовывать его в программе? Запишите текст программы и результаты её выполнения в тетрадь: Данный листок контроля завершает выполнение данной практической работы. Задание 1 2 3 4 5 6 7 8 9 10 11 12 Оценка за выполнению Дата выполнения Оценка Подпись учителя
  • 48. 48 ГЛАВА 3. Проверка знаний учащихся по теме и применении их при составлении более сложных задач. 3.1 Составление и реализация более сложныхпрограмм, включающих элементы одномерного и двумерного массива. УРОК 8,9. Составление и реализация более сложных программ, включающих элементы одномерного и двумерного массива. ЗАДАЧА 1: Составить алгоритм и написать программу с решением следующей задачи: в таблице А[1:100] записанные случайным делом нули и единицы. Заменить 0 на 1, а 1 на 0. Программа: Program primer 1; Uses Crt; Var I : integer; a : array [1. .100] of integer; Procedure init; { Процедура заполнения массива} var I :=1 to 100 do a [i] :=random (2); End; Procedure print; {Процедура выводу массива на печать} Var I : integer; Begin For I :=1 to 100 do Write (a[i]); Writeln; End; Procedure change; {Процедура замещения 1 на 0 I 0 на 1} Var I : integer; Begin For I :=1 to 100 do a [i] :=1-a [i]; End; Begin C1rscr;
  • 49. 49 Randomize; Textcolor (15); Textcolor (7); Init; Writeln (“Начальный массив”); Print; Change; Writeln(“Изменённый массив”); Print; Writeln(“Нажмите Enter.”); Readln; End. ЗАДАЧА 2: Составить алгоритм и написать программу для решения следующей задачи: целочисленная таблица А [1:100] заполненная случайным образом числами от -3 до 6. Проверьте, есть ли в ней отрицательные элементы. Если есть, найдите наибольшее и, при котором А[i]<0. Программа: Uses crt; Var: i:integer; a:array [1..100] of integer; Procedure init; var i:integer; Begin for i:=1 to 100 do a[i]:=-3+random(10); Задание на дом: Задание 1: Дан двумерный массив А, состоящих из натуральных чисел. Составить программу, которая посчитает сумму выделенных элементов в массиве А, включающем следующие числа: 75 100 5 10 -90 15 1000 -105 57 Задание 2: Дан двумерный массив А, состоящих из натуральных чисел. Составить программу, которая посчитает сумму выделенных элементов в массиве А, включающем следующие числа
  • 50. 50 75 100 5 10 -90 15 1000 -105 57 Задание 3: Дан двумерный массив А, состоящих из натуральных чисел. Составить программу, которая посчитает сумму выделенных элементов в массиве А, включающем следующие числа: 75 100 5 10 -90 15 1000 -105 57 3.2 Тематическая аттестация «Массивы». УРОК 10. Тематическая аттестация «Массивы». Для проведения тематических аттестаций по теме «Массивы» предлагаются следующие задания как теоретические так и практические, а так же методические рекомендации проверки заданий исходя из 12 – бальной шкалы оценивания. Работа включает 4 уровня: 1 уровень (начальный): 1. 2, 3 задания. Этот уровень состоит из трех заданий и оценивается 1 бал за каждое. Задания построены в виде тестов. Необходимо только выбрать верный вариант ответа. 2 уровень (средний): 4, 5, 6, задания. Этот уровень состоит тоже из трех заданий, которые включают простейшие вопросы учебного материала, или требуют повторить некоторые операции. Задания во втором уровне оцениваются 1 балом. 3 уровень (достаточный): 7 задание. Этот уровень состоит из одного задания и оценивается 3 балами. Задание стандартное, отвечает школьной программе, необходимо самостоятельно сформулировать ответ. 4 уровень (высокий): 8 задание. Этот уровень состоит так же как и предыдущий из одного задания, которое является нестандартным, творческим и оценивается 3 балами.
  • 51. 51 Аттестацию предлагается проводить по двум вариантам. 1 вариант: TURBO PASCAL 7.2 1) Элементы линейного (одномерного) массива имеют: (1 бал) А) 1 индекс; Б) 2 индекса; В) Не имеют индексов; Г) Нет верных ответов 2) Двумерный массив, состоящий из 100 элементов имеет одинаковое количество строк и столбцов. Сколько строк имеет массив? (1 бал) А) 10; Б) 50; В) 100; Г) Нет верных ответов 3) Какие действия выполняет фрагмент данной программы? (1 бал) For i:=1 to 10 do Readln (a[i]) А) Разрешает произвестивывод на экран 10-ти элементов линейного массива А; Б) Разрешает совершить ввод 100 элементов массиваА (10Х10); В) Разрешает совершить ввод 10 элементов линейного массива А; Г) Нет верных ответов 4) Записать фрагмент программы для вывода на печать элементов линейного массива размером 20. (1 балл) 5) Какие действия выполняет данный фрагмент программы? (1 бал) k=0; for i:=1 to 10 do for j:=1 to 10 do if a[I,j]>0 then k:=k+1; writeln(k); 6) Найти ошибку в программе: (1 бал)
  • 52. 52 Var A:array[1..10] of integer, begin for i:=1 to 20 do readln(a[i]); for i:=1 t0 20 do if a[i]=20 then writeln(‘Есть’); readln; end. 7) Линейный массив состоит из 30 элементов. Упорядочить элементы массива в порядке возрастания. (3 бала) 8) Вывести таблицу футбольного чемпионата (n x n), в которой все элементы главной диагонали равны 0, а все остальные 2,1,0 (2-выиграш, 1-ничья, 0- проигрыш). Выяснить, есть ли одна команда, которая проиграла меньше половины игр. (3 бала) 2 вариант: TURBO PASCAL 7.2 1) Элементы линейного (одномерного) массива имеют: (1 бал) А) 1 индекс; Б) 2 индекса; В) Не имеют индексов; Г) Нет верных ответов. 2) Двумерный массив состоит из 100 элементов имеет одинаковоеколичество строки столбцов. Сколькистрокимеет массив? (1 бал) А) 10; Б) 50; В) 100; Г) Нет верных ответов 3) Какие действия выполняет фрагмент программы? (1 бал) For i:=1 to 10 do Readln (a[i]);
  • 53. 53 А) Разрешает произвестивывод на экран 10-ти элементов линейного массива А; Б) Разрешает совершить ввод 100 элементов массиваА(10Х10); В) Разрешает совершить ввод 10 элементов линейного массива А; Г) Нет верных ответов 4) Записать фрагмент программы для вывода на печать элементов линейного массива размером 20. (1 бал) 5) Какие действия выполняет данный фрагмент программы? (1 бал) k=0; for i:=1 to 10 do for j:=1 to 10 do if a[I,j]>0 then k:=k+1; writeln(k); 6) Найдите ошибку в программе. (1 бал) Var A:array[1..10] of integer, begin for i:=1 to 20 do readln(a[i]); for i:=1 t0 20 do if a[i]=20 then writeln(‘Есть’); readln; end. 7) Линейный массив состоящий из 30 элементов. Упорядочить элементы массива в порядке возрастания. (3 бала) 8) Вывести таблицу футбольного чемпионата (n x n), в которой все элементы главной диагонали равны 0, а все остальные 2,1,0 (2-выиграш, 1-ничья, 0- проигрыш). Выяснить, есть ли одна команда, которая проиграла меньше половины игр. (3 бала)