Таблица 1. Сценарий проведения лабораторных и практических занятий.
Из сценария в таблице 1 видно, что создание алгоритмов и отладка программ различной структуры в рамках одной книги задача достаточно громоздкая и нежелательная.
Очевидно, что каждая книга должна представлять собой выпуск по одной или двум работам.
В первом выпуске книги «Нейросети и программирование» рассматривались работы №1 Работа с графическим интерфейсом языка программирования» и №2 Создание алгоритмов и отладка программ линейной структуры. И были сделаны первые шаги в цикле занятий по данному лабораторному практикуму.
Во второй книге данной серии, продолжается рассмотрение очередных тем из сценария (см. таблицу 1):
№3 Создание алгоритмов и отладка программ с использованием логических высказываний.
№4 Создание алгоритмов и отладка программ с использованием логических операций.
В третьей книге серии кратко и на конкретных примерах рассматриваются вопросы, касающиеся создания алгоритмов и отладки программ циклической структуры при работе с системой программирования на языке Паскаль (работы №5 и 6).
Таким образом, четвертая книга этой серии посвящена рассмотрению вопросов создания алгоритмов и отладки программ обработки одномерных массивов (работы №7 и 8).
1.Лабораторная работа. Обработка одномерных числовых массивов
При выполнении работы необходимо знать:
— Знать и уметь строить алгоритмы циклической структуры для обработки одномерных массивов, знать операторы цикла (смотри лаб. работу №5).
— Знать принципы и приемы обработки одномерных числовых массивов с использованием операторов цикла.
— Уметь составить схему программы (алгоритм) циклической структуры для обработки одномерного числового массива и записать программу по готовому алгоритму.
Теоретический минимум:
Переменные-массивы являются переменными сложного (структурированного) типа и представляют собой организованную группу элементов одного типа (линейную или прямоугольную таблицу).
Массив — это упорядоченная совокупность однотипных данных, имеющая одно общее имя.
Линейные таблицы представляют собой одномерные массивы, а прямоугольные таблицы — двумерные массивы.
1.1.Порядковые номера элементов массива (индексы)
A [10] — одномерный массив.
Так как массив имеет одно общее имя, его элементы различаются только номерами (индексами).
При объявлении массива в программе после имени массива в квадратных скобках указывается его размерность, то есть количество элементов. Элементы такого массива идут по порядку с 0 по 10 (всего 11 элементов). Нулевой элемент можно не использовать.
Z [5, 6] — двумерный массив, содержит 5 строк и 6 столбцов (или 6 строк и 7 столбцов вместе с нулевыми). Чтобы обратиться к текущему (очередному) элементу массива, надо указать номер строки и столбца: Z [i, j]:
i — номера строк, j — номера столбцов.
Таким образом, массив имеет следующие свойства:
— Массив имеет имя, которое задает программист
— Массив имеет сквозную нумерацию элементов
— Массив имеет размерность, то есть определенное количество элементов
— Массив имеет тип, определяющий тип всех входящих в него элементов
— Массив имеет значения элементов, которые могут быть заданы в процессе выполнения программы и могут изменяться в пределах диапазона объявленного типа в ходе выполнения программы
Объявление массива. Перед началом работы с массивом необходимо объявить его и зарезервировать место в памяти под соответствующие количество элементов.
1.2.Объявление одномерного массива в программе
Type Mas = array [1..10] of integer; {объявляем тип массив из 10 целых элементов}
Var A, B: Mas; {переменные A, B типа массив}
Массивы можно объявить и так:
Var A, B: array [1..10] of integer; {переменные A, B типа массив из 10 целых элементов}
Первый способ объявления предпочтительнее, так как при этом программа получается более наглядной. Кроме того, при использовании подпрограмм массивы следует объявлять с явным указанием типа, чтобы массивы в главной программе и массивы в подпрограммах принадлежали к одному и тому же типу. В противном случае при передаче данных в подпрограммы и обратно возникнет ошибка.
Ввод элементов массива может осуществляться разными способами. Любая обработка массивов, в том числе ввод и вывод, производится поэлементно, т.е. в цикле.
Приведем пример организации ввода одномерного массива целых чисел А [10]. Нулевой элемент использовать не будем.
1.2.1 Ввод элементов одномерного массива с клавиатуры:
For i:=1 to 10 do begin
Writeln («Введите значение A [», i,»]:»);
Readln (A [i]);
End;
При запуске на выполнение необходимо поочередно ввести 10 элементов массива (долго, не всегда удобно).
1.2.2 Ввод элементов одномерного массива случайным образом:
Randomize;
For i:=1 to 10 do begin
A [i]:=random (200) -100;
End;
При запуске программы на выполнение элементы массива получат случайные значения при помощи генератора случайных чисел Random в интервале [-100; 100 [.
Вывод значений элементов массива на экран. Осуществляется при помощи цикла. Перед выводом лучше очистить экран командой ClrScr. Вывод одномерного числового массива на экран можно осуществлять в строчку или столбик.
1.2.3 Вывод значений элементов одномерного массива на экран:
ClrScr; {очищение экрана}
For i:=1 to 10 do begin
Write (A [i]:5); {вывод элементов массива в строчку, на каждый элемент отводится 5 позиций}
End;
ClrScr; {очищение экрана}
For i:=1 to 10 do begin
Writeln (A [i]);
{вывод элементов массива в столбик}
End;
Обработка массивов обычно связана с подсчетом суммы, произведения элементов массива, всех или выборочно, с поиском максимального или минимального элемента, подсчетом количества положительных, отрицательных, четных, нечетных либо каких-то еще элементов массива. Возможны также преобразования массивов: перестановка элементов, сдвиг элементов и т. д. Обработка массивов осуществляется при помощи циклов.
2.Решение задач
Задача 1.
Задать одномерный числовой массив А [10] из целых чисел. Определить сумму и количество отрицательных элементов массива.
Математическая формулировка задачи:
Чтобы определить сумму и количество отрицательных элементов массива, нужно сначала заполнить массив некоторыми числами, а затем просмотреть массив сначала, от первого элемента до последнего (в цикле). Каждый элемент нужно проверить — если он окажется отрицательным (соответствующим нашему критерию), то его нужно добавлять в сумму, а если не отрицательным — то не нужно добавлять в сумму.
Количество элементов, соответствующих какому-либо критерию, в данном случае отрицательных по значению, подсчитывается при помощи специальной переменной. До подсчета она равна нулю, и увеличивается на 1 каждый раз, когда найден нужный (отрицательный) элемент.
Схема алгоритма к задаче 1.
Текст программы к задаче 1:
Program Ex_8_1;
Uses Crt;
Type Mas = array [1..10] of integer;
{объявляем тип массив из 10 целых чисел}
Var A: Mas;
{переменная A типа массив}
S: real;
{сумма отрицательных элементов массива}
i: integer; {индексы массива}
k: integer; {количество отрицательных эл-ов массива}
Begin
ClrScr; {очищение экрана}
Textcolor (1); {установим цвет текста синий}
Randomize;
For i:=1 to 10 do begin
A [i]:=random (200) -100;
Writeln (A [i]);
{вывод элементов массива в столбик}
End;
S:=0; k:=0;
For i:=1 to 10 do begin
If A [i] <0 then begin
S:=S+A [i];
k:=k+1;
End;
End;
Writeln; {перевод строки}
Textcolor (2); {установим цвет текста зеленый}
Writeln («Сумма отрицательных элементов массива», S);
Writeln («Количество отрицательных элементов», k);
Readln;
End.
Задача 2.
Задать одномерный числовой массив А [15] из целых чисел. Сформировать одномерный массив В из положительных элементов массива А.
Математическая формулировка задачи:
Прежде всего нужно заполнить исходный массив А какими-либо числами. Часть из них могут быть положительными, а часть отрицательными или равными нулю.
Чтобы получить одномерный массив В из элементов исходного массива А нужно просматривать массив А в цикле и проверять каждый элемент исходного массива, является ли его значение положительным. Если найден положительный элемент, то его значение нужно записать в первую ячейку нового массива В (присвоить элементу массива В значение элемента массива А). Затем просмотр продолжается. Отыскав второе положительное значение, записываем его во вторую ячейку массива В и так далее.
Обратите внимание, что увеличение индексов (номеров) элементов массива В идет не одновременно с увеличением индексов массива А. В самом деле, ведь не каждый элемент массива А попадет в массив В. Даже количество элементов массива В заранее не известно (это будет зависеть от конкретных данных массива А). Поэтому понадобится одна переменная для индексации массива А и другая переменная для индексации массива В, причем увеличение индекса в массиве В будет происходить только в тот момент, когда очередному элементу массива В присваивается найденный в массиве А положительный элемент.
Порядковые номера элементов массива (индексы)
Схема алгоритма к задаче 2
Текст программы к задаче 2:
Program Ex_8_2;
Uses Crt;
Type Mas = array [1..15] of integer;
{объявляем тип массив из 10 целых чисел}
Var A, В: Mas;
{переменные A, В типа массив}
i: integer; {индексы массива A}
k: integer; {индексы массива В}
Begin
ClrScr; {очищение экрана}
Randomize;
For i:=1 to 15 do begin
A [i]:=random (200) -100;
Write (A [i]:5);
{вывод элементов массива в одну строку}
End;
Writeln; {перевод строки}
k:=0;
For i:=1 to 15 do begin
If A [i]> 0 then begin
k:=k+1; {увеличение индекса массива В}
B [k]:=A [i]; {записываем положительные элементы массива А в массив В}
Write (B [k]:5);
{выводим элементы массива В на экран}
End;
End;
Writeln; {перевод строки}
Textcolor (4); {установим цвет текста красный}
Writeln («Количество элементов массива B», k);
Readln;
End.
Задача 3.
Задать одномерный числовой массив А [15] из целых чисел. Определить произведение четных по значениям элементов массива, стоящих после минимального элемента.
Математическая формулировка задачи:
Чтобы определить такое произведение, требуется сначала найти минимальное значение в массиве и запомнить в какой-либо переменной порядковый номер минимума. После этого надо подсчитать произведение четных по значениям элементов, начиная просмотр массива не с первого элемента, как обычно, а с этого номера.
Поиск минимума в массиве происходит по стандартному алгоритму. Сначала за минимум принимается значение первого по порядку элемента массива. Номер минимума соответственно принимается за 1. Массив просматривается поэлементно в цикле от первого элемента до последнего. Если найдется элемент, значение которого меньше, чем принятый минимум, то минимум равен ему. Одновременно меняется и номер минимума. После выхода из цикла в переменной минимум окажется наименьшее значение массива.
Схема алгоритма к задаче 3.
Бесплатный фрагмент закончился.
Купите книгу, чтобы продолжить чтение.