Скачать 58.46 Kb.
|
Урок №2 по теме МАССИВЫ. Одномерные массивы. Работа с элементами Пример Найти сумму 30 целых чисел. Решение Для решения этой задачи используется одномерный массив. Одномерный массив - это фиксированное количество элементов одного и того же типа, объединенных одним именем, где каждый элемент имеет свой номер. Например, введем 30 целых чисел от 25 до54 и объединим их общим именем А № А
Имя А - это общее имя для всех элементов. Элементы массива - это целые числа, их 30. Опишем в разделе типов свой тип - одномерный массив, состоящий из 30 целых чисел. Type myarray = Array [1..30] Of Integer. Напомним, что раздел типов, начинается со служебного слова TYPE, после этого идет имя нового типа и его описание. Между именем типа и его описанием ставится знак "равно" (в разделе переменных между именем переменной и её описанием ставится двоеточие). Тогда: myarray - это имя нового типа; Array - служебное слово (в переводе с английского означает "массив", "набор"); [1..30] - в квадратных скобках указывается номер первого элемента, затем, после двух точек, номер последнего элемента массива, пусть в этом примере первый элемент имеет номер 1, а последний - номер 30; Of - служебное слово (в переводе с английского -"из" ); Integer - тип всех элементов массива. Таким образом, одномерный массив описывается следующим образом: Array[n1..n2] Of <тип элементов>; где n1 - номер первого элемента, n2 - номер последнего элемента, в качестве типа элементов может использоваться любой тип данных, кроме файлового. Так как каждый элемент имеет свой номер, то к каждому элементу можно обращаться непосредственно. Для того, чтобы обратиться к i-у элемент этого массива, необходимо записать: A[i] - сначала имя массива, а в квадратных скобках указывается номер элемента, к которому обращаемся, - i. Например, обращаемся к первому элементу массива А - А1[1], а к пятому - А[5]. Пример: Составить программу нахождения суммы элементов массива. Решение Опишем две процедуры (формирование и вывода массива)и функцию нахождения суммы элементов, которые будем использовать в основной части. Заметим, что заполнение и вывод массива можно осуществить только поэлементно, то есть можно сначала присвоить значение первому элементу, затем второму и так далее, то же самое и с выводом на экран - выводим первый, второй, третий и так до последнего. Будем вводить значение элементов массива с клавиатуры. Program Example-37; Const n = 30; {n - это количество элементов массива } Type myarray = Array [1...n] Of Integer; Var A : myarray; s : Integer; {s - значение этой переменной будет равно сумме всех элементов массива} Procedure Init1(Var m : myarrfy); Var i : Integer; {i - это переменная для работы с элементами массива} Begin Writen ('введите',n,'чисел'); For i:=1 To n Do {ввод массива с клавиатуры} Readln(m[i]); {чтение i-го элемента} End; Procedure Print(m: myarray); Var i : Integer; Begin For i:=1 To n Do {вывод массива} Write(m[i]:3); {вывод i-го элемента} Writeln; End; Function Sum(m: myarray): Integer; Var i, sum : Integer; Begin sum:=0 {начальное значение суммы} For i:=1 To n Do {её нахождение} sum:=sum+m[i]; {к уже найденной сумме первых (i-1) элементов прибавляем i-ый элемент} End; Begin Init1(A); {обращение к процедуре формирования} Print (A); {вывод массива} s:=Sum (A); {нахождение суммы элементов} Writeln ('их сумма равна ',s);{вывод результата на экран} Readln; End. Способы задания одномерных массивов Первый способ задания одномерного массива - это задание с клавиатуры (он был рассмотрен в примере выше - процедура Init1). Второй способ задания - это задание с помощью генератора случайных чисел, этот способ более удобен, когда много элементов в массиве. Составим программу заполнения распечатки одномерного массива, с помощью генератора случайных чисел. Процедура вывода уже составлена ранее, а процедуру формирования напишем новую. Program Example-38; Const n = 30; dd = 51; {n - это количество элементов массива, dd - для генератора случайных чисел} Type myarray = Array [1..n] Of Integer; Var A : myarray; Procedure Init2(Var m : myarray); {процедура заполнения (инициализации) массива случайными числами} Var i : Integer; Begin For i:=1 To n Do m[i] := -25 + Random(dd); {Random выбирает случайное число из отрезка от 0 до dd-1, тогда i-му элементу массива будет присвоена сумма выбранного случайного числа и -25, таким образом, массив будет заполняться случайными числами от -25 до -25+(dd-1), то есть до -26+dd} End; Procedure Print (m : myarray); {процедура вывода (распечатки) массива} ... Begin Randomize; {включение генератора случайных чисел} Init2(A); {обращение к процедуре заполнения массива} Print(A); {обращение к процедуре вывода заполненного массива} Readln; End. Третий способ задания - это чтение чисел из файла. Можно заранее создать типизированный файл одномерных массивов (например, по тридцать элементов), а затем считывать из него сразу целый массив и работать с ним. Но мы воспользуемся текстовым файлом, так как его создавать намного удобнее. Пусть в файле записано несколько строк, а в каждой из них по 30 целых чисел. Тогда вся программа может быть такой: Program Example-39; Const n = 30; {n - это количество элементов массива,} Type myarray = Array [1..n] Of Integer; Var A : myarray; F : text; Procedure Init3 (Var m : myarray); {процедура заполнения (инициализации) массива} Var i : Integer; Begin For i:=1 To n Do Read (f, m[i]) {чтение из файла очередного числа} End; Procedure Print (m:myarray); {процедура вывода (распечатка) массива} ... Begin {связываем файловую переменную с конкретным внешним файлом} Assign (F,'...'); Reset(F); {открываем его для чтения } While Not EOf (F) Do Begin {считаем очередную строку} Init3(A);{обращение к процедуре вывода } Readln(F); End; Readln; End. Работа с элементами массива (разбор на примерах) При работе с элементами массивов можно выделить несколько видов задач.
Домашнее задание §2.2.9 Стр. 94 – 99. Ответить на контрольные вопросы, выполнить задания №№5, 6, 7, 8, 9, 10 в тетради.1>0> |