вводный урок по теме "Массивы"

Опубликовано: 2011-01-16 16:46:48 Автор: Сухорукова Татьяна Васильевна Комментарии (3)

 Электронное пособие
Цели урока: 
  • познакомить учащихся с определением массива, индекса;
  • показать естественность использования циклов при обработке массивов;
  • продемонстрировать преимущество использования массивов при решении некоторых типов задач;
  • показать правила описания массивов в среде Turbo Pascal и продемонстрировать простейшие алгоритмы на массиве (поиск наибольшего, поиск заданного элемента и т.д.)
Требования к знаниям и умениям
  • Учащиеся должны знать основные типы данных и операции над ними, структуру условного и циклических операторов и их особенности.
  • Учащиеся должны уметь формулировать алгоритмы (линейные, ветвящиеся и циклические) словесно, записывать их в виде блок-схем, и программ, анализировать простые блок-схемы и программы.
Тип урока: лекционный.

Этапы урока
1. Новая тема

1. Определение массива и индекса.                                                                                           
2. Примеры реальных объектов, которые можно представить в виде массива.
3. Правила описания массивов на языке Turbo Pascal.
4. Примеры использования масивов.   
5. Использование  циклов при операциях с массивами.
6. Примеры операций с массивами на языке Turbo Pascal.

2. Рефлексия

Составить программу для нахождения среднего арифметического элементов массива

3. Домашнее задание.
4. Подведение итогов урока.

  Организационный момент.
 I.Объяснение нового материала.
В программировании даже при написании самых простых программ возникает необходимость в большом количестве переменных. Обычно они разные по типам и по использованию, но бывают ситуации, когда эти переменные одинаковы и их необходимо очень большое количество.
Для того, чтобы Вы лучше поняли, я приведу простой пример. Давайте представим работу такой программы, как нахождение среднего арифметического среди 100 чисел. Что нам понадобиться для написания такой программы? Конечно, сами числа. Для хранения 100 чисел мы должны использовать 100 переменных. Описать их можно, скажем, следующим образом:
var
n1,n2,n3,n4,n5,
n6,n7, ..., n100: Integer;
Это будет выглядеть крайне громоздко, не так ли? Вот здесь и возникает понятие массивов.
Массив - это на самом деле одна переменная, но она содержит в себе большое количество отдельных элементов, того типа, который определит программист, и столько, сколько он захочет. (При этом размер массива несколько ограничен). Что это означает? Что заведя переменную-массив мы как бы создаем цепочку переменных. После чего мы можем обратиться к любому элементу этой цепочки: прочитать его, изменить, сделать с ним все, что можно сделать с обычной переменной.
Мы можем создать цепочку и из чисел, и из символов, да и вообще из чего угодно. Сегодня мы разберем создание массивов из чисел, а далее по ходу рассылки разберемся и с другими типами массивов.
 
  1. Определение массива и индекса
 Массив – группа элементов одного типа, объединенных под общим именем.
Индекс – что-то (чаще всего номер), что позволяет отличать элементы массива один от другого и обращаться к ним.
  1. Примеры реальных объектов, которые можно представить в виде массива, обсуждение почему это так:
    • Почему книгу можно считать “массивом”? Что в этом случае будет элементом массива, а что - индексом?
    • Почему дом можно считать “массивом”? Что в этом случае будет элементом массива, а что - индексом?
    • Почему шахматную доску можно считать массивом? Что в этом случае будет элементом массива, а что - индексом?
    • Почему футбольную команду можно считать массивом? Что в этом случае будет элементом массива, а что - индексом?
  2. Правила описания массивов на языке Turbo Pascal
В описании массива имеется специальное слово array (массив), после которого в квадратных скобках через две точки указывается диапазон изменения номеров элементов, затем слово of (из) и пишется тип данных массива.
 
Массивы, как и простые переменные, подлежат описанию в разделе переменных:
 
    VAR <имя>: ARRAY[] OF <тип элементов>;
 
array (эррэй) - массив.  of (оф) - из.
Тип индексов  - любой скалярный тип кроме real. Индексы можно вычислять.
Тип элементов - любой для данной версии языка.
[min..max]    - размер массива. min - нижняя, max –верхняя границы индексов. min<=max. Границы можно задать с помощью переменных.
 
    Можно задавать постоянный массив:
constx: array[1..10] ofinteger=(4,6,3,5,2,1,7,8,9,13);
const x: array [1..8] of char=('a','b','c','d','e','f','g','h');
    Элементы таких массивов являются константами.
Если массивы одинаковы и отличаются лишь именами, то их можно описать в одной строке:
      var a,b,c :array[1..n] of real; , где n -верхняя граница индекса и n описывается в разделе констант.
 
  1. Примеры описания массивов.
M : array [-5..5] of integer;
Сколько элементов в этом массиве? Какого они типа? Как они нумеруются?
Z: array[-8..-1] ofinteger;
Сколько элементов в этом массиве? Какого они типа? Как они нумеруются?
Mass: array[5..15] ofinteger;
Сколько элементов в этом массиве? Какого они типа? Как они нумеруются?
 
Вот пример описания массива на 100 чисел:
var Mas: Array [1..100] of Integer;
begin
Mas[1] := 100;
                                       Readln(Mas[2]);
Write(Mas[4]);
if Mas[100] < 18 then Halt;
Mas[50] := Mas[49] + Mas[1];
end.
 
  1. Использование циклов при операции с массивами.
 
Для ввода данных в память необходимо организовать цикл. Поскольку число повторений ввода данных известно, удобно использовать цикл пересчет. Ввод описанного массива а может иметь вид:
Write (‘введите элементы массива через пробел’);
For i:=1 to n do
Begin
Read(a[i]);
End;
 
Ввод массива.
Program V1;
  Const  n=10;
   Var А: array[1..n] of integer;
  i: integer;
Begin
  For i:=1 to n do
          begin
             writeln('Введите элементы массива ');
               readln(А[i]);
       end;
End.
                                   Вывод массива.
Program V2;
  Const  m=10;
     Var A: array[1..m] of integer;
        i: integer;
Begin
  For i:=1 to m do
       begin
             writeln('Вывод элементов массива ');
               writeln (A[i]);
       end;
End.    
                                                    
  1. Примеры операций с массивами на языке Turbo Pascal.
 
Задан одномерный массив А[1..15], определить сумму отрицательных элементов.
Program P1;
      Const  m=15;
      Var К: array[1..m] of integer;
        i,S: integer;
 Begin
    For i:=1 to m do
          begin
             writeln('Введите элементы массива ');
               readln(К[i]);
          end;
  S:=0;
      for i:=1 to m do
             if К[i]<0 then S:=S+ К[i];
          writeln('S=',S)
  End.
               Генерация элементов  массива с помощью функции случайных чисел.
Program P2;
  Const  m=10;
   Var F: array[1..m] of integer;
     i: integer;
Begin
 Randomize;
{функция позволяет перемешивать числа из диапазона указанном в функции randomи употребляется перед ней }
 For i:=1 to m do
            begin
              F[i]:=random(101);
              {Функция random(101) генерирует целые
                числа в диапазоне от 0 до 100}
               write(F[i]);
              end;   End.
Вот такая программа. Здесь я использую новую функцию Random , думаю, она вам не знакома. Очень интересная функция.
Функция Random
Данная функция возвращает от своей работы случайное число. Что значит "случайное число"? Это значит, что функция возвращает от своей работы какое-то число, каждый раз новое. В качестве параметра задается максимальное значение случайного числа, иначе говоря функция не возвратит число большего диапазона. Для того, чтобы использовать эту функцию, необходимо включить (так говорят, однако мне нравиться больше "инициализировать" - на включение это мало похоже) датчик случайных чисел. Тогда функция начнет нормально работать и возвращать действительно случайные значения.
Инициализация датчика случайных чисел (ДСЧ) происходит вызовом процедуры Randomize. Вы видите ее перед циклом.
Теперь посмотрите, как я использую эту функцию в программе. Дело в том, что вводить с клавиатуры 100 чисел не так уж и приятно, верно? Вот я и заполняю массив случайными числами. Диапазон до 500 вполне здесь подходит, числа будут не очень большие, но и не очень маленькие. При этом я циклом изменяю значение массива и с помощью переменной I пробегаюсь по всем его элементам, заполняя их случайными числами.
Этот пример хорошо демонстрирует создание массива и доступ к его элементам.
 
Поиск максимальных и минимальных элементов
Дан одномерный массив Kиз 10 целых элементов, найти максимальный элемент и его индекс.
Решение:
Program Poisk_2;
      Const  maxM=10;
      Var К: array[1..maxM] of integer;
       Max, i, j: integer;
 Begin
   Randomize;
  For i:=1 to maxM do
            begin
                    К[i]:=random(101);
                           write(К[i]);
              end;
        Max:=K[1];
         J:=1;
         for i:=2 to maxM do
             if Max
               writeln('Максимальный элемент=', max);
              writeln('Индекс макс. элемента=', j);
 End.
 
   СОРТИРОВКА ВЫБОРОМ
For i:=1 to N-1 do
begin
K:=i; max:=A[i]
for j:=i+1 to N do
  if A[j]>max then
  begin
      max:=A[j];
     K:=j;
 end;
A[K]:=A[i];A[i]:=max;
end;
 
II. Рефлексия.
Составить программу нахождения среднего арифметического элементов массива.
 
Program N1;
var
  M: Array [1..100] of Integer;
  S: Real;
   I: Byte;
begin
   Randomize;
   ForI := 1 to 100 do
   M[I] := Random(500);
    ForI := 1 to 100 do
     S := S + M[I];
     S:= S/ 100;
     Write('Среднее арифметическое всех чисел массива: ', S);
end.
 
III. Домашнее задание.
 
1 Дан массив из 15 чисел. Заполните его случайными числами. Определить, сколько в нем элементов, отличных от последнего элемента. Вывести их количество. 2 Дан массив из 50 чисел. Заполните его случайными числами. Вывести на экран сначала все положительные его элементы, а затем все отрицательные. 3 Дан массив из 10 чисел. Введите его с клавиатуры, после чего измените у всех чисел знак на противоположный. Вывести получившийся массив на экран.    
 
IV. Подведение итогов урока
 
Массив– группа элементов одного типа, объединенных под общим именем.
Индекс– что-то (чаще всего номер), что позволяет отличать элементы массива один от другого и обращаться к ним.
Массивы описываются в разделе описания переменных. Общий вид описания:
<имя массива>: array [<начальный индекс>..<конечный индекс>] of <тип элемента>;
Примеры:
A : array [1..10] of real;
для ввода массива можно использовать цикл:
For i:=1 to 10 do read( A[i] );
 
С отдельным элементом массива можно делать все, что с любой переменной. A[i]:=25
 
Функция Random(A: Integer);.
Данная функция возвращает от своей работы случайное число.
 
 Среди введенных чисел  максимальное мы находим следующим образом:
Сначала за максимальное принимается первое число;
После оно сравнивается со всеми оставшимися числами, при этом:
Если следующий элемент больше принятого за максимум (переменная Max), то оно принимается за максимум.
После сравнения всех элементов в конце концов остается одно число, которое больше всех в массиве.

Просмотров: 3364

Категория: Информатика

 

Добавлять комментарии могут только зарегистрированные пользователи. Зарегистрироваться.
2011-01-18 00:00:29
Достаточно интересный и насыщенный урок. Между этапами урока четко прослеживается взаимосвязь. Я думаю, что ученики уйдут с урока с пополненным багажом знаний). Один вопрос, данный урок Вы даете по школьной программе или во время элективных курсов? Интересуюсь потому, что по программе не успеваю дать этот материал (10 часов на программирование). Интересно, какой выход Вы нашли из данной ситуации.

2011-01-18 00:10:10

У вас в задаче poisk_2, опечатка:

program poisk_2;
const  maxM=10;
var К: array[1..maxM] of integer;
    max, i, j: integer;
begin
  randomize;
  for i:=1 to maxM do
  begin
    К[i]:=random(101);
    write(К[i]);
  end;
 
  Max:=K[1];
 
  //вот тут
  J:=1;
  for i:=2 to maxM do
    if Max
 
  //а должно быть так
  for i:=2 to maxM do
     if Max<k[i] then
     begin
          max:=k[i];
          j:=i;
     end;
  writeln('Максимальный элемент=', max);
  writeln('Индекс макс. элемента=', j);
end.

2011-01-18 00:58:20

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

Оформление на основе шаблона с сайта:  XTemplate
Страница сгенерирована за 0.004991 секунд