2. Актуализация знаний Здравствуйте, ребята! Сегодня мы продолжим изучение темы «Одномерные массивы», но, прежде чем перейти к новой теме, запишите сегодняшнюю дату и оставьте место для названия сегодняшнего урока. Теперь ответьте на следующие вопросы: • что такое массив; • как определить одномерный массив из 5 элементов, являющихся вещественными числами; • что выполняют следующие фрагменты кода: Max := A[1]; For i := 2 to N do if A[i]Max then Max := A[i]; | x:=a[k1]; a[k1] := a[k2]; a[k2] := x; | |
(Отвечают на вопросы) Массив - поименованная совокупность однотипных элементов, упорядоченных по индексам, определяющим положение элемента в массиве. var arr: array [1..5] of real 1) находит максимальный элемент массива; 2) меняет местами элементы массива с индексами k1 и k2. |
3. Изучение нового материала Теперь рассмотрим с вами следующую задачу, знакомую вам из курса алгебры 7 класса (запишите её условие): пусть имеется неупорядоченный ряд чисел с нечетным количеством элементов (8, 9, 4, 7, 2). Необходимо найти медиану этого ряда. Кто может сказать, что такое медиана ряда чисел? (Если затруднения, то вывожу подсказку с упорядоченными рядами и их медианами.) Так что же необходимо сделать, прежде чем найти медиану неупорядоченного ряда? Да, именно так. Задача упорядочивания элементов внутри какой-либо структуры в определенном порядке является довольно часто встречающейся на практике. Обычно такую задачу называют задачей сортировки. Сегодня мы с вами рассмотрим задачу сортировки одномерных массивов. Запишите название сегодняшнего урока: «Сортировка одномерных массивов». Рассмотрим с вами один из алгоритмов сортировки одномерных массивов – алгоритм сортировки выбором. Сортировать массив в данном случае будем по убыванию. Шаг 1. Обозначаем imax как максимальный элемент и присваиваем ему значение i: imax:=i; Шаг 2. Запускаем цикл от i+1 элемента, в котором проверяем условие a[j] a[imax] и если оно выполняется, то imax присваиваем значение j: for j:=i+1 to 10 do if a[j]a[imax] then imax:=j; Шаг 3. Присваиваем значение a[i] для x: x:=a[i]; Шаг 4. Присваиваем значение a[imax] для a[i]: a[i]:=a[imax]; Шаг 5. Присваиваем значение x для a[imax]: a[imax]:=x; Запишите этот алгоритм в своих тетрадях. А теперь применим этот алгоритм к нашей задаче. Пока я буду набирать задачу в редакторе, записывайте её решение у себя в тетради. [Совместно с обучающимися решается задача на компьютере в IDE, попутно решение проецируется на экран]. Выполним трассировку программы для i = 1 и i = 2. |
Записывают условие задачи. Медиана упорядоченного ряда чисел – это число, которое находится в середине этого ряда (для ряда с нечетным количеством элементов), или число, которое равняется среднему арифметическому двух чисел ряда, стоящих в середине (для ряда с четным количеством элементов). Ряд нужно упорядочить. Записывают тему урока. (Записывают алгоритм в тетрадях) Алгоритм сортировки выбором: Шаг 1. Обозначаем imax как максимальный элемент и присваиваем ему значение i: imax:=i; Шаг 2. Запускаем цикл от i+1 элемента, в котором проверяем условие a[j] a[imax] и если оно выполняется, то imax присваиваем значение j: for j:=i+1 to 10 do if a[j]a[imax] then imax:=j; Шаг 3. Присваиваем значение a[i] для x: x:=a[i]; Шаг 4. Присваиваем значение a[imax] для a[i]: a[i]:=a[imax]; Шаг 5. Присваиваем значение x для a[imax]: a[imax]:=x. Участвуют в обсуждении задачи, записывают решение в тетради. program sort1; var a: array [1..5] of integer; i, j, min, imin: integer; begin for i:=1 to 5 do read(a[i]); for i:=1 to 5 do write(a[i]:4); writeln; for i:= 1 to 4 do begin min:=a[i]; imin:=i; for j:= i+1 to 5 do if a[j] min then begin min:=a[j]; imin:=j; end; a[imin]:=a[i]; a[i]:=min; end; for i:=1 to 5 do write(a[i]:4); writeln; writeln('Медиана = : ',a[3]); end. К доске для составления трассировочной таблицы выходит один из учеников, остальные заполняют трассировочную таблицу в своих тетрадях. i | a[i] до внутреннего цикла | j | min | imin | a[i] после внутреннего цикла | 1 | 8 | | 8 | 1 | | | | 2 | 8 | 1 | | | | 3 | 4 | 3 | | | | 4 | 4 | 3 | | | | 5 | 2 | 5 | | | | | | | 2 | 2 | 9 | | 9 | 2 | | | | 3 | 4 | 3 | | | | 4 | 4 | 3 | | | | 5 | 4 | 3 | | | | | | | 4 | |
4. Закрепление изученного Рассмотрим следующий фрагмент кода: for i:=1 to n-1 do if a[i] 0 then begin imin:=i; for j:=i to n do if (a[j] 0) and (a[j] imin:=j; if imin i then begin tmp:=a[i]; a[i]:=a[imin]; a[imin]:=tmp; end; end; Что он выполняет? Теперь пересаживайтесь за компьютеры и самостоятельно выполните следующее задание: необходимо создать массив из 10 элементов, заполненных случайными целыми числами от 1 до 30, и вывести его на экран, отводя на каждое число 5 экранных позиций. Выполнить сортировку только четных элементов массива по возрастанию (нечетные при этом остаются на своих местах). Вывести преобразованный массив на экран. | Данный фрагмент кода производит сортировку положительных элементов массива в порядке возрастания. Выполняют самостоятельное задание. program sort2; var a: array [1..10] of integer; i, j, min, imin: integer; begin randomize; for i:=1 to 10 do a[i]:=random(30)+1; for i:=1 to 10 do write(a[i]:5); writeln; for i:= 1 to 9 do if a[i] mod 2 = 0 then begin min:=a[i]; imin:=i; for j:= i+1 to 10 do if (a[j] mod 2 = 0) and (a[j] min:=a[j]; imin:=j; end; a[imin]:=a[i]; a[i]:=min; end; for i:=1 to 10 do write(a[i]:5); end. |
5. Подведение итогов Итак, чему вы научились в течение сегодняшнего занятия? Перечислите шаги алгоритма сортировки выбором. |
Осуществлять сортировку одномерного массива, используя алгоритм сортировки выбором. Шаг 1. Обозначаем imax как максимальный элемент и присваиваем ему значение i: imax:=i; Шаг 2. Запускаем цикл от i+1 элемента, в котором проверяем условие a[j]a[imax] и если оно выполняется, то imax присваиваем значение j: for j:=i+1 to 10 do if a[j]a[imax] then imax:=j; Шаг 3. Присваиваем значение a[i] для x: x:=a[i]; Шаг 4. Присваиваем значение a[imax] для a[i]: a[i]:=a[imax]; Шаг 5. Присваиваем значение x для a[imax]: a[imax]:=x. |
6. Домашнее задание П. 2.2. Задачи: 1) Создать массив из 10 элементов, заполненных случайными целыми числами от -25 до 25, и вывести его на экран, отводя на каждое число 5 экранных позиций. Выполнить сортировку элементов, стоящих на нечетных местах. 2) Создать массив из 12 элементов, заполненных случайными целыми числами от -25 до 25, и вывести его на экран, отводя на каждое число 5 экранных позиций. Отсортировать массив таким образом, чтобы в левой его части были отрицательные числа в порядке убывания, а в правой части – положительные числа в порядке возрастания. Вывести преобразованный массив на экран. |
Записывают в дневниках д/з. |