Презентация "Массивы"
презентация к уроку по информатике и икт (10 класс)

Дёмкина Любовь Геннадиевна

Презентация по программированию на Pascal на тему "Одномерные массивы и матрицы"

Скачать:

ВложениеРазмер
Office presentation icon Массивы1.33 МБ

Предварительный просмотр:


Подписи к слайдам:

Слайд 2

Индекс – величина, характеризующая положение элемента, относительно начала массива. ОДНОМЕРНЫЕ МАССИВЫ Конечная, упорядоченная по номерам совокупность значений, объединенных общим типом и именем – называется массивом. Например, массив Х из 30 элементов (целые числа) № Х 25 87 43 … … 29 17 30 33 Элементы массива

Слайд 3

Массивы 5 10 15 20 25 1 2 3 4 5 A массив 3 15 НОМЕР элемента массива ( ИНДЕКС ) A[1] A[2] A[3] A[4] A[5] ЗНАЧЕНИЕ элемента массива A[2] =10 НОМЕР (ИНДЕКС) элемента массива : 2 ЗНАЧЕНИЕ элемента массива : 10

Слайд 4

Описание массива на Паскале Массив целых чисел: имя начальный индекс конечный индекс тип элементов var A: array[1.. ] of integer ; const N=5; N var A : array[ 1 .. 5 ] of integer ; Размер через константу:

Слайд 5

Массивы Program massiv_Opr_elem; Const N= 5 ; Var i:integer; M:array[1..N] of integer; Begin For i:=1 to N do begin { Вводим элементы массива } Readln(M[i]); end; For i:=1 to N do begin { Печатаем элементы массива } Write( ‘M[‘ ,I, ‘]=‘ ,M[i]); { в одной строке } End; End. Определяется массив из 5 элементов (целые числа). Значения элементов массива вводятся с клавиатуры . Вывод элементов массива на экран. Типовые задачи:

Слайд 6

Массивы Program massiv_Opr_elem; Const N=10; Var k,s:integer; sr:real; M:array[1..N] of integer; begin Randomize; { активизируем датчик случайных чисел } For k:=1 to N do begin { Определяем элементы массива } M[k]:=random(101) – 50; { случ. числа от -50 до 50 } Writeln( M[k]); { Печатаем элементы массива в столбец } End; S:=0; For k:=1 to N do begin { Находим сумму } s:=s + M[k]; End; Sr:=s/n; { и среднее значение } Writeln( ‘ Сумма= ‘,s, ‘ Среднее значение = ’,sr:6:2); end. Заполнение элементов массива случайными числами и определение среднего арифметического.

Слайд 7

Нахождение количества элементов Дан массив А, состоящий из 10 элементов, значения которого вводятся с клавиатуры. Подсчитать сколько элементов массива имеют значения меньшие некоторой величины t. Program zadacha; Var A: array [1..10]of real; i,k: integer; t: real; begin k:=0; write (‘ введите значение переменной t’); read (t); for i:=1 to 10 do begin writeln (‘ введите значение ’ ,i, ’ элемента массива ’); readln (a[i]); If a[i]

Слайд 8

Составить программу вычисления среднего арифметического модулей отрицательных элементов массива А(15). Элементы массива вводятся с клавиатуры {1,5; 0; -2; 8; -5,3; -7,1; 0; -4; 10; -2,3; -8; 1,5; -1; -2,5; 5} Program mod; Const N=15; Var i, k: integer; sr, s: real; A: array [1..N] of real; Begin S:=0; k:=0; For i:=1 to N do begin Writeln (‘ введите значение ’ ,i, ‘ элемента массива ’ ) ; Readln (a[i]); If a[i]<0 then begin k:=k+1; s:=s+abs(a[i]); end; end; Sr:=s/k; Write (‘ значение sr=’ , sr:6:2); end.

Слайд 9

Практикум по решению задач 1 вариант. Массив А (20) заполнен датчиком случайных чисел. Найти количество элементов, имеющих отрицательное значение. 2 вариант. Дан массив В(20) целых чисел, заполненный датчиком случайных чисел. Выяснить верно ли, что сумма элементов массива есть четное число.

Слайд 10

Домашняя работа 1 задача : Массив заполнен случайными величинами в диапазоне от -30 до 29 и состоит из N элементов. Подсчитать сколько в нём отрицательных, положительных и нулевых элементов. 2 задача: Задана последовательность из N целых натуральных чисел случайной величиной. Вычислить среднее арифметическое только тех элементов массива, порядковые номера которых совпадают со значением этого элемента.

Слайд 11

Организация ввода и вывода данных с использованием файлов Для массивов большого размера удобно производить ввод значений из текстового файла , заранее подготовив такой файл с исходными данными. Особенностью текстовых файлов является то, что они являются файлами последовательного доступа: нельзя прочитать какой-либо элемент текстового файла, не прочитав все предшествующие элементы. Аналогично нельзя записывать информацию в текстовый файл произвольным образом, писать в него можно только последовательно.

Слайд 12

Работа с файлами выполняется следующими процедурами: Assign – устанавливает связь между именем файла в программе (файловой переменной ) и физическим именем файла, принятым в ОС. Reset - открывает существующий файл для чтения. Rewrite – создает и открывает новый файл для записи на внеш­нем устройстве Close - закрывает открытый файл. Для определения конца файла используется стандартная встро­енная функция EOF , которая принимает значение True, если достигнут конец файла, и значение False в противном случае. Program Vvod; var i: integer; a: array [1..10] of integer; f_in: text; Begin assign (f_in, 'C:\Users\PascalABC.NET\input.txt'); reset (f_in); i:=1; While not Eof (f_in) do begin read (f_in, a[i]); Write(a[i],' '); i:=i+1; End ; close (f_in); end .

Слайд 13

Program Vvod_ Vivod ; var i: integer; a: array [1..10] of integer; f_in, f_out: text; Begin assign (f_in, 'C:\Users\PascalABC.NET\input.txt'); reset (f_in); assign(f_out, 'C:\Users\PascalABC.NET\output.txt'); Rewrite ( f_out ); i:=1; While not Eof (f_in) do begin read (f_in, a[i]); write ( f_out , a [i], ‘ ‘ ); i:=i+1; End ; close (f_in); close ( f_out ); end . Вывод в файл

Слайд 14

Часто содержимое текстового файла представляет собой символьную последовательность, разделенную на строки. Каждая строка заканчивается специальным признаком EOLN (end of line) – конец строки. Задача : Создать текстовый файл из целых чисел. Файл должен содержать несколько строк. Вывести на экран удвоенные числа из файла, сохраняя вид записи по строкам. Например, для исходного файла, содержащего числа 4 5 0 1 на экране должно появиться: 8 10 0 2. program task; var f: text; s: integer; begin assing (f, ‘c:\test.txt’); reset (f); while not Eof (f) do begin while not Eoln (f) do begin read (f, s); write (2*s, ‘ ‘); end; writeln; end; close (f); end.

Слайд 15

Пример. В текстовом файле f.txt через пробел записаны целые натуральные числа. Переписать в файл f1.txt из файла f.txt все числа, за исключением максимальных (предполагается, что их может быть несколько). Program T_1; var f, f1: Text; a, max: longint; flag: Boolean; begin Assign(f, 'f.txt'); Reset(f); max:=0; while not Eof (f) do begin Read (f, a); if a>max then max := a; end; Assign(f1,'f1.txt'); Rewrite(f1); Reset(f); while not Eof (f) do begin Read(f, a); if a<>max then WriteLn (f1, a); end; Close(f); Close(f1); end. Файлы f и f1 находятся в тоже папке, что и программа.

Слайд 16

Практикум решения задач Дан текстовый файл input.txt , содержащий N целы x чисел. Найдите среднее арифметическое данных чисел, запишите ответ в выходной файл output.txt .

Слайд 18

Program poisc; const n = 15; var x : array [1..n] of integer; k , i, p: integer; B egin writeln('Введите число p>0 , которое будем искать в массиве'); readln(p); Randomize; k:=0; for i := 1 to n do begin x [i] :=random (50) ; if x [i] = p then k := k + 1; end; if k = 0 then writeln ('В массиве нет такого числа!') else writeln ('Число ’ ,p, ‘ в массиве присутствует ’ , k, ‘ раз ’) end. Подсчёт числа вхождений Р >0 в массив.

Слайд 19

Решение задач по обработке массивов Задание: Составить программу вычисления произведения положительных элементов массива В(20) в диапазоне от 0 до 10, стоящих на нечетных местах. Массив вводится с помощью датчика случайных чисел. Самостоятельная работа Задача. Найти сумму тех элементов массива X(10) , которые одновременно имеют четные и отрицательные значения. Значения массива вводятся с клавиатуры {0; - 1; -3; 4; -8; 0; 6 ; - 2; -1; -9}. Дополнительная задача. Заполните случайными числами два массива А(20) и В(20) в диапазоне от 0 до 10. Найдите только те элементы этих массивов, значения которых совпадают. Например, если А [2]= B[2]=4 , то на экран надо вывести: номер: 2 значение: 4 Если таких совпадений нет, то вывести на экран сообщение об этом.

Слайд 20

Вставка элементов в заданный массив Задача . Дан массив, состоящий из 20 элементов. Произвести вставку числа 10 в позицию m данного массива. Позиция m должна соответствовать диапазону 1 <=m<=n Program ZZZ; Const n=20; Var i, m: integer; A: array [1..n+1] of integer; Begin For i:=1 to n do readln (a[i]); Writeln (‘ введите номер индекса элемента вставки ’); Read (m); For i:=n+1 downto m+1 do a[i]:=a[i-1]; a[m]:=10; For i:=1 to n+1 do writeln (a[i]); end.

Слайд 21

Задача: Найти число элементов массива, которые больше своих «соседей», т.е. предшествующего и последующего элементов. Практика : Дан массив, состоящий из 1 0 элементов. Произвести вставку числа 0 в позицию 5 данного массива. Элементы массива определены датчиком случайных чисел от -19 до 20.

Слайд 22

Типовые задачи Нахождение экстремумов . Дан массив А(30), заполненный датчиком случайных чисел. Найти наибольшие и наименьшее значение массива. Program max_min; Var i,min,max: integer; A: array [1..30] of integer; Begin Randomize; For i:=1 to 30 do begin a[i]:=random(100); writeln (‘ значение ’,I,’ элемента = ‘,a[i]); end; Min:=a[1]; Max:=a[1]; For i:=2 to 30 do begin if a[i]max then max:=a[i]; End; Writeln (‘max=’,max, ‘min=‘,min); End.

Слайд 23

… Max:=M[1]; Inmax:=1; For k:=1 to N do { Находим максимальное и его индекс } If M[k] > Max then begin Max:= M[k]; Inmax:=k; end; Writeln( ‘ Максимальное = M[‘, inmax, ‘]=‘,Max); … Фрагмент программы нахождения max элемента и его индекса

Слайд 24

Практикум 1. Дан массив B(40) , заполненный датчиком случайных чисел. Определить: а) максимальный элемент и его индекс; б) минимальный элемент и его индекс; в) на сколько максимальный элемент больше минимального; ЗАДАЧА. Массив задан датчиком случайных чисел на интервале [-37, 66]. Найти наименьший нечетный элемент. Размер произвольный.

Слайд 25

Задача 1: В одномерном массиве, состоящим из n вещественных элементов, найти количество элементов, стоящих после максимального по модулю элемента. Program Z1; const n=20; Var i, k, inmax: integer; X: array [1..n] of real; Max: real; Begin For i:=1 to n do begin x[i]:=random(100) -50; writeln (‘ значение ’,i,’ элемента = ‘,x[i]); end; Max:=x[1]; Inmax:=1; For i:=2 to N do If abs(x[i]) > Max then begin Max:= x[i]; Inmax:=i; end; K:=0; For i:=inmax +1 to n do k:=k+1; write (‘k=‘ ,k); End.

Слайд 26

Задача 2: Дан массив, состоящий из N целых чисел, заполненный датчиком случайных величин. Найти произведение элементов массива, расположенных после первого отрицательного элемента.

Слайд 27

Поменять местами значения элементов. Дан массив А(40), заполненный датчиком случайных чисел. Поменять местами 1-й элемент с последним элементом, 2-й элемент с предпоследним и т.д. Program obmen; Var i,p: integer; a: array [1..40] of integer; Begin Randomize; For i:=1 to 40 do begin a[i]:=random (100) -50 ; writeln (‘ значение ’,I,’ элемент массива= ‘,a[i]) ; end; For i:=1 to 20 do begin p:=a[i]; a[i]:=a[40-i+1]; a[40-i+1]:=p; end; For i:=1 to 40 do Writeln ( ‘a(‘ ,i, ’)=‘ , a[i]); End.

Слайд 28

1 вариант. Дан массив X(20) , заполненный датчиком случайных чисел. Поменять местами минимальное значение и первый элемент массива. Дан массив А(15), заданный случайными числами в диапазоне от -10 до 10. Определите количество чётных и нечетных элементов массива. 2 вариант. Дан массив X(20) , заполненный датчиком случайных чисел. Поменять местами максимальное значение и последний элемент массива. Дан массив В(15), заполненный датчиком случайных чисел в диапазоне от -10 до 10. Найдите сумму всех четных элементов массива, имеющих нечетные номера или дать сообщение, что таких элементов нет.

Слайд 29

Формирование нового массива из элементов старого массива Дан массив X(20) , заполненный датчиком случайных чисел в диапазоне от -50 до 49 включительно. Сформировать новый массив Y из десяти первых положительных элементов массива X . Program zadacha; Label 1,2; Var X: array [1..20] of integer; Y: array [1..10] of integer; i,k: integer; Begin randomize; for i:=1 to 20 do begin x[i]:= random(100) -50; Writeln (‘ значение ’, I ,’ элемента массива= ‘ , x[i]); End; k:=o; For i:=1 to 20 do if x[i]>0 then begin k:=k+1; y[k]:=x[i]; if k=10 then goto 1 end; If k<10 then begin writeln (‘ элементов нет ’); goto 2; end; 1: writeln (‘ Элементы массива Y’); for k:=1 to 10 do writeln (y[k]); 2: end.

Слайд 30

program v10; const n=10; const m=15; var a: array [1..n] of integer; b: array [1..m] of integer; c: array [1..m] of integer; i,j,k,n1: integer; begin randomize; Write (‘ первый массив ’); for i:=1 to n do begin a[i]:=random(25); writeln (a[i]); end; write (‘ второй массив ’); for j:=1 to m do begin b[j]:=random(25); writeln (‘ значение ', j, ‘ элемента =' , b[j]); end; k:= 0 ; for i:=1 to n do begin for j:=1 to m do begin if a[i]=b[j] then begin k:=k+1; c[k]:=b[j]; end; end; end; writeln ('k=',k); n1:=k; write (‘ сформированный массив '); for k:=1 to n1 do writeln ('c[',k,']=',c[k]); end. Задача: Даны два одномерных массива разной размерности, заполненные датчиком случайных чисел. Сформировать массив, состоящий из элементов, принадлежащих и тому и другому массивам.

Слайд 31

Практикум решения задач Даны два массива одинаковой размерности. Получить третий массив такой же размерности, каждый элемент которого равен сумме соответствующих элементов данных массивов. Даны два одномерных массива одинаковой размерности. Получить третий массив той же размерности, каждый элемент которого равен наибольшему из соответствующих элементов данного массива.

Слайд 32

Метод «пузырька» Суть метода, в том, что последовательно сравнивают пары соседних элементов массива. Если первый элемент пары окажется больше второго, то они меняются местами и на второе место (как пузырёк) «всплывает» больший из двух элементов… Сравнение с перестановкой повторяются, пока не будет достигнут конец массива. В результате, начиная с конца массив упорядочен по возрастанию. Сортировка массива

Слайд 33

program sort_pyz; const n = 10; var a: array[1..n] of integer; i, j, p: integer; begin randomize; write (' Исходный массив: '); for i := 1 to n do begin a[i] := random( 31 ) -15 ; writeln (a[i]); end; for i := 1 to n-1 do begin { сортировка массива } for j := 1 to n - i do if a[j] > a[j+1] then begin p := a[j]; a[j] := a[j+1]; a[j+1] := p end; end; write (' Отсортированный массив: '); for i := 1 to n do writeln (a[i]); end.

Слайд 34

ДВУМЕРНЫЕ МАССИВЫ Положение элементов описывается двумя индексами. Их можно представить в виде прямоугольной таблицы или матрицы. а 11 а 12 а 13 а 21 а 22 а 23 А = Матрица А размерностью 2*3 (две строки, три столбца) Номер элемента определяется пересечением строки и столбца. а 12 – элемент, стоящий в первой строке и во втором столбце .

Слайд 35

Объявление двумерного массива ОДИН ИЗ НЕСКОЛЬКИХ СПОСОБОВ Const n = 2; m = 3; Var A: array[1..n,1..m] of < тип элементов > ; Формирование двумерного массива осуществляется всеми возможными способами: ввод с клавиатуры, через генератор случайных чисел, помощью файла или др.

Слайд 36

Главная диагональ квадратной матрицы проходит из левого верхнего угла в правый нижний. А [3,3]=

Слайд 37

Побочная диагональ квадратной матрицы проходит из правого верхнего угла в левый нижний. А [3,3]=

Слайд 38

Соотношение индексов в квадратной матрице i- номер строки, j -номер столбца i=j Элементы матрицы находятся на главной диагонали ij Элементы матрицы находятся под главной диагональю i+j=n+1 Элементы матрицы находятся на побочной диагонали i+jn+1 Элементы матрицы находятся под побочной диагональю

Слайд 39

Ввод-вывод значений элементов матрицы с клавиатуры Program zadacha; Var A: array [1..10, 1..10] of real; I, j: integer; Begin For i:=1 to 10 do For j:=1 to 10 do begin readln (a[I,j] ) ; Writeln ( ’a(‘ ,I, ‘,’ ,j, ‘)=‘ , a[I,j]); end; end.

Слайд 40

Ввод двумерного массива А с помощью генератора случайных чисел Program dv_mas; Const n = 10 ; m = 15 ; { размерностью 10*15 } Var i, j: integer; a: array[1..n,1..m] of integer ; Begin Randomize ; { активизируем датчик случайных чисел } For i:=1 to n do { Определяем элементы массива } For j:=1 to m do begin A[i,j]:=random(51) – 25; { случ. числа от - 2 5 до 2 5 } Write( ‘a(‘ ,i, ’,’ ,j, ‘)=‘, A[i,j]:5); { Печатаем элементы массива } End ; End.

Слайд 42

Типовые задачи Суммирование значений элементов матрицы и нахождение количества. Дана матрица А(10,15), заполненная датчиком случайных чисел в диапазоне от 0 до 30. Найти сумму значений всех элементов данной матрицы и количество нулевых элементов. Program sum; Var A: array [1..10,1..15] of integer; I, j, s,k: integer; Begin S:=0; K:=o; Randomize; For i:=1 to 10 do For j:=1 to 15 do begin a[I,j]:=random(31); s:=s+a[I,j] ; If a[I,j]:=0 then k:=k+1; end; Writeln (‘ сумма значений= ‘ ,s); Writeln (‘ количество нулевых= ‘ ,k); end.

Слайд 43

Практикум по решению задач Дана матрица А(10, 20), заполненная датчиком случайных чисел в диапазоне от -10 до 19 включительно. Подсчитать количество положительных значений и сумму отрицательных значений элементов матрицы. Домашнее задание Заполнить двумерный массив с клавиатуры, найти произведение элементов по главной и сумму по побочной диагонали.

Слайд 44

Нахождение экстремумов Дана квадратная матрица В(10,10), заполненная случайными числами в диапазоне от -15 до 25 включительно. Выдать на печать максимальное значение элементов данной матрицы. Program max; Var B: array [1..10, 1..10] of integer; i, j, max: integer; Begin Randomize; for i:=1 to 10 do for j:=1 to 10 do begin b[i,j]:=random(41)-15; end; Max:= b[1,1]; for i:=1 to 10 do for j:=1 to 10 do begin if b[i,j]> max then max:=b[i,j]; end; Writeln (‘max=‘ , max); end.

Слайд 45

Нахождение наибольших элементов каждой строки массива :

Слайд 46

Program Stroki; const n=3; m=4; var a:array [1..n,1..m] of real; max: array [1..n] of real; i, j: integer; Begin { ВВОД МАССИВА с клавиатуры } ……………………………… for i:=1 to n do begin max[i]:=a[i,1]; for j:=2 to m do begin if max[i] ’); for i:=1 to n do writeln(‘max[‘ , i , ‘]’, max[i]); end.

Слайд 47

Практическая работа по вариантам: Написать программы: Нахождения наименьших элементов в строках матрицы; Нахождения наименьших элементов в столбцах матрицы.

Слайд 48

Перестановка строк массива:

Слайд 49

Program Stroki 2 ; const n=5; m=4; var a:array [1..n,1..m] of integer; i, j,r,b,c: integer; Begin { ВВОД МАССИВА }; ……………………………… Writeln (‘ Введите номера меняемых местами строк ’); Readln (r, b); for j:=1 to m do begin c:=a[r, j]; a[r, j]:=a[b, j]; a[b, j]:=c; end; Writeln (‘ Новый массив => ’); for i:=1 to n do for j:=1 to m do begin write(a[i, j],’ ‘); writeln; end; end.

Слайд 50

for i:=1 to n-1 do for j:=1 to n-i do begin x:=a[i,j]; a[i,j]:=a[n-j+1,n-i+1]; a[n-j+1,n-i+1]:=x end; Writeln (' Обмен элементов симметрично побочной диагонали'); for i:=1 to n do begin for j:=1 to n do write(a[i, j]); Составьте программу, меняющую местами значения элементов массива А(N,N) симметрично относительно побочной диагонали. Фрагмент программы:

Слайд 51

for i:=1 to n do for j:=1 to n do if i=j then begin tmp:=a[i,j]; a[i,j]:=a[i,n-i+1]; a[i,n-i+1]:=tmp; end; Поменять значения элементов побочной и главной диагонали Фрагмент программы

Слайд 52

Практикум решения задач Задача: Дана матрица А [3,6] , заполненная датчиком случайных чисел. В числовой матрице поменять местами два столбца, т. е. все элементы одного столбца поставить на соответствующие им позиции другого, а его элементы второго переместить в первый.

Слайд 53

const N = 3; M = 6; var a: array[1..N,1..M] of integer; i, j, a, b, buff: integer ; begin randomize; for i:=1 to N do begin for j:=1 to M do begin a[i,j] := random(4); write(a[i,j]:3); end; writeln; end; write(' Какие столбцы поменять местами: '); readln(a,b); for i:=1 to N do begin buff := a[i,a]; a[i,a] := a[i,b]; a[i,b] := buff; end; for i:=1 to N do begin for j:=1 to M do write(a[i,j]:3); writeln; end; end.

Слайд 54

Задача . Дана матрица. Сформировать одномерный массив, каждый элемент которого равен сумме отрицательных элементов соответствующей строки заданной целочисленной матрицы. Const n=10; m=10; Var S: array[1..n] of integer ; A: array[1..n,1..m] of integer ; i,j: integer; Begin Randomize; For i:=1 to n do For j:=1 to m do begin a[I,j]:= random (100) -50 End; For i:=1 to n do begin S [ i ]:=0; { задание начальных значений элементов массива суммы } For j:=1 to m do if A[ i,j ] < 0 then S[ i ]:= S[ i ] + A[ i,j]; End; Writeln (‘ Массив из суммы отрицательных элементов ’) ; For i:=1 to n do { Печатаем элементы массива S} Write( S[ i ]:5); end.

Слайд 55

Практикум Дана матрица, состоящая из 10 строк и 5 столбцов и заполненная случайными числами в диапазоне от -30 до 29. Сформировать одномерный массив из произведений положительных значений элементов каждого столбца матрицы.

Слайд 56

Упорядочить каждую строку матрицы по возрастанию. Массив размером Мх N, элементы которого задаются датчиком случайных чисел на интервале [-17;26]. program porydok; Const n=5; m= 6 ; Var a: array [1..n,1..m] of integer; i, j, t,k : integer; Begin Randomize; For i:=1 to n do begin For j:=1 to m do begin a[i,j]:=random(44)-17; write(a[i,j],' '); end ; Writeln; end; for i := 1 to n do begin for j := 1 to m do for k := 1 to m-j do if (a[i, k] > a[i, k+1]) then begin t:= a[i,k]; a[i,k]:= a[i,k+1]; a[i,k+1]:= t; end ; end ; writeln (' упорядоченная матрица'); For i:=1 to n do begin For j:=1 to m do write(a[i,j],' '); Writeln; end; End .

Слайд 57

Практика Упорядочить каждый столбец матрицы по убыванию. Массив размером Мх N, элементы которого задаются датчиком случайных чисел на интервале [-10;24].