Turbo_paskal_massivy.ppt
- Количество слайдов: 22
Тема : “Система программирования Турбо Паскаль” Программирование массивов
Одномерные массивы. Работа с элементами (разбор на примерах) Одномерный массив это фиксированное количество элементов одного типа, объединенных одним именем, при чем каждый элемент имеет свой уникальный номер и но мера элементов идут подряд. Например имя А общее для всех элементов. Одномерный массив описывается сле дующим образом: Array[n 1. . n 2] Of <тип элементов>; где n 1 номер первого элемента, n 2 номер послед него элемента, в качестве типа элементов может исполь зоваться любой тип данных, кроме файлового. Для того чтобы обратиться к элементу этого масси ва, необходимо указать имя массива и в квадратных скобках номер элемента. Например, первый эле мент массива А А[1], а пятый А[5].
Program Example_88; { Ввод элементов массива с клавиатуры и вывод его на печать + нахождение суммы элементов массива} Const n=30; {Количество элементов массива} Var A: array[1. . n] Of Integer; i, sum: Integer; Begin Writeln('Введите ', n, ' чисел'); For i: =1 To n Do Readln(a[i]); {Ввод массива с клавиатуры} For i: =1 To n Do {Вывод массива} Write(a[i]: 3); {Вывод i гo элемента} sum: =0; {Начальное значение суммы} For i: =1 To n Do sum: =sum+a[i]; Writeln('их сумма равна ', sum); Readln; End.
(Перед этим дать процедуры ввода и вывода массивов Книга Турбо Паскаль стр 37) Заполнение массива с помощью гене ратора случайных чисел. Этот способ более удобен, когда в массиве много элементов, а их точные значения не слишком важны. Для получения случайных чисел практически во всех современных языках программирования имеется стандартная функция. В языке Паскаль имеется функция Random. Формулы для расчета случайного числа x различного типа в программе приведены в Тип величины х Диапазон возможных Паскаль значений таблице: Вещественный x: =Random 0≤x<A x: =Random*A A≤x<B Целый 0≤x<1 x: =A+Random*(B A) 0≤x≤A x: =Random(A+1) A≤x≤B x: =Random(B A+1)
При каждом новом запуске программы с использовании функции Random будут генерироваться одни и те же случайные числа. Чтобы исключить это, необходимо записать (желательно в начале программы) оператор Randomize (без параметров), инициализирующий генератор случайных чисел. Составим программу заполнения одномерного мас сива с помощью генератора случайных чисел. Процедура вывода уже составлена ранее
Program Example_100; const n=10; Var a: array[1. . n] of Integer; Var i, sum: integer; Begin Randomize; for i: =1 to n do a[i]: =random(50) 25; for i: =1 to n do write(a[i]: 3); Readln; end.
Ввод элементов массива с клавиатуры и вывод его на печать + нахождение суммы элементов массива (с использованием прцедур ввода и вывод элементов массива и функции подсчета суммы) Program Example_89; Const n=30; {Количество элементов массива} Type myarray=Array[1. . n] Of Integer; Var A: myarray; s: Integer; {Значение этой переменной s будет равно сумме всех элементов массива}
Procedure Init 1(Var m: myarray); Var i: Integer; {Переменная для работы с элементами массива} Begin Writeln('Введите ', n, ' чисел'); For i: =1 To n Do {Ввод массива с клавиатуры} Readln(m[i]); {Чтение i гo элемента} End;
Procedure Print (m: myarray); Var i: Integer Begin For i: =1 To n Do {Вывод массива} Write(m[i]: 3); {Вывод i гo элемента} Writeln; End;
Function Summa (m: myarray): Integer; Var i, sum: Integer; Begin sum: =0; {Начальное значение суммы} For i: =1 To n Do sum: =sum+m[i]; {К уже найденной сумме прибавляем i й элемент} summa: =sum; End;
Begin Init 1(A); {Обращение к процедуре формирования массива} Print(A); {Вывод массива} s: =Summa(A); {Нахождение суммы элементов} Writeln('их сумма равна ', s); {Вывод результата на экран} Readln; End.
Program Example_90; {заполнение массива с помощью генератора случайных чисел } Const n=30; dd=51; {n количество элементов массива, dd используется в генераторе случайных чисел} Type myarray = Array [1. . n] Of Integer; Var A: myarray; Procedure Init 2 (Var m: myarray); {Процедура заполнения (инициализации) массива случайными числами} Var : Integer; Begin For i: =1 To n Do m [i]: = 25+Random(dd); {Функция Random выбирает случайное число из отрезка от 0 до dd 1. Оче редному элементу массива будет при своена сумма выбранного случайного числа и 25, таким образом, массив будет заполняться случайными числами от 25 до 25+(dd 1), то есть до 26+dd}
End; Procedure Print (m: myarray); {процедура вывода (распечатки) массива} … Begin Randomize; {Инициализация генератора случайных чисел} Init 2(А); {Обращение к процедуре заполнения массива} Print(A); {Обращение к процедуре вывода массива} Readln; End.
Работа с элементами массива (разбор на примерах) Книга Турбо Паскаль стр 37 При работе с элементами массива можно выделить несколько видов задач. Нахождение суммы (или произведения) элементов (Найти сумму элементов, кратных заданному числу. ) 2. Нахождение номеров элементов, обладающих заданным свойством (Найти номера четных элементов. ) 3. Нахождение количества элементов, обладающих заданным свойством (Найти количество положительных и отрицательных элементов в данном массиве. ) 4. Есть ли в данном массиве элементы с данным свойством, или найти первый (последний) элемент, отвечающий 5. заданным условиям (Есть ли отрицательный элемент в массиве? ), (Найти номер последнего отрицательного элемента массива. ) 1.
Методы работы с элементами одномерного массива Книга Турбо Паскаль стр 39 n n Изменение значений некоторых элементов n (Заменить отрицательные элементы массива на их аб солютные величины. ) n (Прибавить к каждому элементу массива число 25) n (Если очередной элемент массива четный, то приба вить к нему первый, если нечетный − прибавить послед ний. Первый и последний элементы не изменять. ) Создание массива n Даны два одномерных массива одинаковой размер ности. Получить третий массив такой же размерности, каждый элемент которого равен сумме соответствующих элементов данных массивов. n Даны первый член арифметической прогрессии и ее разность. Записать в массив первые n членов прог рессии.
Работа с несколькими массивами Даны два одномерных массива − А и В. Найти их скалярное произведение. n Решение Скалярным произведением двух массивов одинако вой размерности называется сумма произведений соот ветствующих элементов: a[1]*b[1]+a[2]*b[2]+. . . +a[n 1]* *b[n 1]+. . . +а[n]*b[n], где n − количество элементов в массивах. Program Example_102; Function Sp (a, b: myarray): longint; Var i: Integer; s: Longint; Begin s: =0; For i: =1 To n Do s: =s+a[i]*b[i]; Sp: =s; End;
Удаление элементов из одномерного массива Книга Турбо Паскаль стр 40 n n Удалить из массива, в котором все элементы различ ны, максимальный элемент. После удаления максималь ного элемента массив "уплотнить", сдвинув все следую щие за ним элементы влево. Последнему (самому право му) элементу массива присвоить 0. Решить предыдущую задачу, считая, что максималь ный элемент может встречаться несколько раз.
Вставка элементов в одномерный массив Книга Турбо Паскаль стр 42 n n n Вставка элемента после элемента с заданным номером Вставка элемента перед элементом с данным номером Вставка нескольких элементов
Перестановки элементов массива Книга Турбо Паскаль стр 43 n n n Перестановка двух элементов Перестановка нескольких элементов (части) массива (Дан одномерный массив А, состоящий из 2 n эле ментов. Поменять местами его половины. )
ДВУХМЕРНЫЕ МАССИВЫ. Описание. Работа с элементами Книга Турбо Паскаль стр 44 Двухмерные массивы можно представить в виде пря моугольной таблицы или матрицы. Рассмотрим матрицу А размерностью 2 х3 (состоя щую из двух строк по три элемента в каждой): a 11 a 12 a 13 A= a 21 a 22 a 23 Положение каждого элемента определяется двумя числами: номером строки, в которой находится элемент, и номером столбца. Например, а 12 − это элемент, сто ящий в первой строке и во втором столбце.
ДВУХМЕРНЫЕ МАССИВЫ. Описание. Работа с элементами Книга Турбо Паскаль стр 44 Нужно объявить массив в разделе описания переменных: Var a: Array[1. . n, 1. . m] Of <тип элементов>; Рассмотренные выше методы решения задач обра ботки одномерных массивов могут применяться и для обработки двухмерных массивов.
ДВУХМЕРНЫЕ МАССИВЫ. Описание. Работа с элементами Книга Турбо Паскаль стр 44 Поскольку положение элемента в двухмерном массиве описывается двумя индексами (первый − номер строки, второй − номер столбца), программы для решения большинства матрич ных задач строятся на основе вложенных циклов. Обыч но внешний цикл организуется по строкам матрицы, то есть в нем выбирается требуемая строка матрицы, а внут ренний цикл − по столбцам матрицы, в нем выбирает ся элемент строки. Для присваивания значений элемен там массива могут быть использованы операторы при сваивания и операторы ввода.
Turbo_paskal_massivy.ppt