Урок 21, 8 класс
Учитель: Брух Т.В.
Дата: ______________
Тема урока: «Массивы. Алгоритмы обработки массивов».
Тип урока: комбинированный, изучение нового материала.
Цели урока:
Повторить и закрепить материал по теме «Массивы»
познакомить с основными алгоритмами обработки массивов
применить полученные знания при решении жизненных ситуаций и различных задач
Задачи урока:
Воспитательная – развитие познавательного интереса, логического мышления
Учебная – освоение умений составления программ, используя массивы
Развивающая – развитие алгоритмического мышления, памяти, внимательности
Ход урока
I. Сообщение темы и задач урока.
Тема урока: Массивы. Алгоритмы обработки массивов. Сегодня на уроке мы научимся решать “базовые” задачи, алгоритмы которых являются составляющими многих задач на обработку массивов данных.
II. Повторение материала и анализ домашнего задания.
Самостоятельная работа (линейный, разветвляющийся, циклический алгоритм) – смотри приложение.
III. Изучение нового материала.
Что такое массив?
Массив – это группа переменных одного типа, расположенных в памяти рядом (в соседних ячейках) и имеющих общее имя. Каждая ячейка в массиве имеет уникальный номер.
Зачем нужны массивы?
Для хранения и обработки большого количества данных.
Для работы с массивами, что нужно сделать?
Массив необходимо объявить.
Для чего нужно объявить массив?
Определить тип входящих в него элементов, выделить место в памяти и присвоить имя.
Задание. Запишите объявления массивов по их характеристикам: (слайд 2)
массив a из 5 вещественных чисел, последний элемент под номером 6
(var a:array[2..6] of real;)
массив k из 12 целых чисел, номер последнего элемента 10
(var k:array[-1..10] of integer;)
массив b из 9 целых чисел, первый элемент имеет номер 0
(var b:array[0..8] of integer;)
Какое следующее действие после объявления массива в программе?
Заполнить массив.
Какие способы мы рассмотрели?
По формуле, с клавиатуры, используя псевдослучайные числа.
(Проверить работу на доске)
Задание. Запишите фрагмент кода, в котором массив a, объявленный как a: array[2..16] of integer;
заполняется по предложенному правилу: (слайд 3)
элементы массива - случайные числа из промежутка от 0 до 12
(a[i]:=random(13);)
каждый элемент массива в 4 раза больше своего индекса
(a[i]:=4*a[i];)
Заполнили массив. Что дальше делаем?
Вывод массива на экран.
(Проверить работу на доске).
Что выполняют фрагменты программ: (слайд 4)
For i:=1 to 10 do readln(A[i]); (заполняет массив 10 вещественными числами)
For i:=1 to 10 do A[i]:=i*i; (заполняет массив квадратами первых 10 натуральных чисел)
For i:=1 to 10 do writeln(A[i]); (выводит значения элементов массива в столбец)
For i:=1 to 10 do A[i]:=0; (заполняет массив 0)
Выполнив данные действия можно решать задачи обработки массивов.
Задание. На доске записана программа, но команды перепутаны. Необходимо восстановить правильный порядок и выяснить для решения какой задачи составлена программа. (слайд 5)
Программа нахождения суммы массива, состоящего из 10 целых псевдослучайных числа.
Проверим домашнее задание. Заполните массив случайными числами в интервале [0,100] и подсчитайте отдельно среднее значение всех элементов, которые
Program arr2;
const N=10;
var A: array [1..N] of integer;
i, sum1, sum2, count: integer;
begin
count:=0; sum1:=0; sum2:=0;
for i:=1 to N do begin
A[i]:=random (101);
if A[i]
count:= count+1;
sum1:= sum1 + A[i];
end
else
sum2:=sum2 + A[i];
write (A[i]:5);
end;
writeln;
write (‘Среднее значение элементов, которые sum1 / count) ;
writeln;
write (‘Среднее значение элементов, которые =50 равно ' , sum2/(N-count)) ;
end.
Задача. Магазин обслужил за день 200 покупателей, каждый из которых потратил на покупки не более 1000 рублей. Посчитать дневную прибыль магазина и сумму среднего потребительского чека.
Сколько переменных нужно? (200)
Заполним массив случайными числами, используя диапазон от 1 до? (1000)
Какие алгоритмы будем использовать при решении задачи? (Нахождения суммы и среднего арифметического)
Сколько покупателей, у которых сумма чека больше среднего?
Чек каждого покупателя необходимо сравнить с суммой среднего чека. Для этого необходимо использовать цикл. (записать на доске: if a[i]sr then k:=k+1;)
За компьютерами составляем программу.
program qq;
const n=200;
var a: array[1..n] of integer;
k,s,i:integer;
begin
s:=0;
k:=0;
for i:=1 to n do
begin
a[i]:=random(1001)+1;
s:=s+a[i];
end;
for i:=1 to n do
if a[i]s/200
then k:=k+1;
writeln('Дневная прибыль магазина ',s);
writeln('Сумма среднего потребительскоко чека ',s/200);
writeln('У ',k,' покупателей сумма чека больше среднего');
end.
Внести изменения в программу: Есть ли покупатель у которого сумма чека 555 рублей.
k:= 0;
for i:=1 to N do
if A[i] = 550 then k:= k+1;
if k 0 then write('Есть') else write('Не нашли!');
Есть необходимость просматривать весь массив? Нет, если нашли первого покупателя можно выйти из цикла? Как? break
k:= 0;
for i:=1 to N do
if A[i] = 555 then begin
k:= i;
break
end;
if k0 then write('Нашли') else write('Не нашли!');
Задача. Найти максимальную сумму потребительского чека.
M:= A[1];
for i:= 2 to N do
if A[i] M then
M:= A[i];
write(M);
Как найти номер покупателя?
M:= A[1]; nMax:= 1;
for i:= 2 to N do
if A[i] M then begin
M:= A[i];
nMax:= i;
end;
write('A[',nMax,']=',M);
По номеру элемента можно найти значение!
nMax:= 1;
for i:= 2 to N do
if A[i] A[nMax] then nMax:= i;
write('A[',nMax,']=', A[nMax] );
IV. Подведение итогов урока. постановка задания на дом.
Задача 1. В массиве хранится информация о максимальной скорости каждой из 40 марок легковых автомобилей. Определить скорости двух самых быстрых автомобилей.
program qq;
const n=10;
var a: array[1..n] of integer;
k,s,i:integer;
begin
for i:=1 to n do
begin
a[i]:=random(101)+1;
writeln(a[i]);
end; s:=a[1];k:=a[1];
for i:=2 to n do begin
if a[i]k then k:=a[i];
if (a[i]s) and (a[i]
end;
writeln('k=',k);
writeln('s',s);
end.
Задача 2. У вас есть доллары. Вы хотите обменять их на рубли. Есть информация о стоимости купли – продажи в банках города. В городе n банков. Составьте программу, определяющую какой банк выбрать, чтобы выгодно обменять доллары на рубли.