Обучение решению задач из раздела "Основы алгоритмизации и программирования"
p align="left">Порядковый тип в свою очередь делится на:

1. целые типы;

2. логический тип или булевский тип;

3. символьный тип;

4. перечисляемые типы;

5. ограниченные типы или тип-диапазон.

На основе стандартных скалярных типов имеется возможность образовывать пользовательские скалярные типы. Есть два способа порождения новых скалярных типов - ограниченные и перечислимые типы.

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

Составные типы: структурированные типы, указатели, строки, процедурные, объекты, классы, варианты.

Структурированные типы в свою очередь делятся на:

1. регулярные типы (массивы);

2. комбинированные типы (записи);

3. множественные типы;

4. файловые типы;

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

Таким образом, Паскаль допускает образование структур данных произвольной сложности, позволяя тем самым достичь адекватного представления в программе тех данных, с которыми она оперирует.

3.2 Структурный тип данных массив

Каждое значение регулярного типа состоит из фиксированного числа элементов одного и того же базового типа. Такой способ образования новых значений (фиксированное число однотипных компонент) позволяет обозначать значения этих типов одним (групповым) именем. Объект регулярного типа часто называют массивом, а групповое имя используется в качестве имени этого массива. Доступ к отдельным элементам массивов организуется посредством указания имени массива и порядкового номера (индекса) необходимого элемента.

Для корректного определения регулярного типа необходимо задать две характеристики: тип элементов массива, а также количество и «способ нумерования» элементов. Последние характеристики задаются посредством указания типа индекса [1, c. 259].

Определение массива имеет следующий общий вид:

Type A = array [T1] of T2;

Здесь Array, of - служебные слова; Т1 - тип индекса массива; Т2 - тип компонент массива.

В дальнейшем идентификатор этого типа может быть использован в описании переменных.

В качестве типа индекса может выступать любой дискретный тип, кроме LongInt и ограниченных типов, построенных из типа LongInt, в частности, допустимы ограниченные и перечислимые типы. Элементами массива могут быть переменные любого типа.

Ниже приведены описания различных массивов:

Type

M1 = array [1..100] of real;

M2 = array [char] of boolean;

Matrix = array [ 1..10 ] of array[1..20] of integer;

Database = array [1..MaxF] of file of Person;

Var

Vector: M1;

Sym_Table: M2;

Arr1, Arr2: Matrix;

S: array [Red, Yellow, Green] of boolean;

Число элементов в массиве всегда должно быть фиксировано. Для задания количества элементов массива используется тип; число элементов определяется количеством возможных значений указанного типа, что отличает язык Паскаль от многих других языков, в которых размер массива задается либо целым числом (или выражением целого типа), либо диапазоном целых чисел. Это придает Паскалю дополнительную гибкость, позволяя «нумеровать» элементы массива не только целыми числами, но и значениями произвольного целого типа.

В качестве элементов массива могут выступать значения любого типа; в частности, ими могут быть значения любых составных типов, например, массивы:

Var

V2: array [1..10] of array [1..20] of byte;

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

Var

V2: array [ 1..10, 1..20 ] of of byte;

Число индексов в определении (т.е. размерность массива) в языке не ограничивается.

Паскаль допускает единственное возможное действие над массивом в целом: использование его в операторе присваивания, например, Vect1:=Vect2; причем типы обоих массивов должны быть эквивалентны.

Элемент массива считается переменной; он может получать значения (например, в операторе присваивания), а также участвовать в выражениях, где он представляет значение, помещенное в соответствующий элемент данного массива [2]. Ассортимент операций над элементами массива полностью определяется типом этих элементов (базовым типом массива).

4. Разработка методического обеспечения для работы со структурным типом данных массив

4.1 Основные этапы разработки решения задачи

Чтобы любую новую задачу решить с применением компьютера, необходимо предварительно создать соответствующую компьютерную программу. Технологический процесс разработки программы решения задачи включает следующие этапы [5]:

1) построение информационной модели задачи;

2) разработка алгоритма решения задачи;

3) написание программы;

4) отладка программы.

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

Разработка алгоритма - представление процесса решения задачи в виде последовательности определённых команд, выполнение которых обеспечивает получение нужных результатов.

Написание программы - запись алгоритма на языке программирования.

Отладка программы реализуется после ввода её в компьютер и состоит в обнаружении и устранении в ней синтаксических и семантических ошибок.

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

4.2 Реализация учебных задач по работе с массивами

При решении учебных задач учащимся предстоит научиться выполнять рая наиболее распространенных действий с массивами [9, с. 133]:

1) описание;

2) заполнение массива случайными числами;

3) заполнение массива с клавиатуры;

4) вывод на экран;

5) поиск максимального элемента;

6) вычисление суммы всех элементов массива;

7) вычисление количества положительных элементов;

8) удаление элементов из массива;

9) добавление элементов в массив;

10) замена элементов в массиве и другие.

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

Program Massiv1;

Uses Crt;

Const N=10;

Var A: array [1.. N] of integer; i: integer;

Begin

Randomize;

For i:=1 to N do A[i]:=Random (100);

ClrScr;

Writeln (`Введенный массив: ');

For i:=1 to N do write (A[i]: 4);

Writeln;

Readln;

End.

В данном примере мы заполнили массив случайными числами от 0 до 99, что обеспечила нам функция random (100). Если нам нужно получить случайные числа в другом диапазоне, например, не от нуля, расчет нужно сделать такой: функция random (N) выдаст N различных чисел от 0 до N-1. Если нам нужно, чтобы наименьшим числом диапазона было K, необходимо прибавить K к random (N). Наибольшее число, которое будет выдавать в этом случае формула random (N)+K, будет наибольшим числом диапазона.

Функция random без аргумента генерирует случайные вещественные числа на промежутке [0;1). Если случайные вещественные числа должны принадлежать иному промежутку, например, [3;4), то значение элемента задается выражением A[i]:=random+3 [4, с. 29].

Заполнение массива с клавиатуры. Заполним одномерный массив путем ввода с клавиатуры целых чисел и выведем его элементы на экран с противоположным знаком.

Program Massiv2;

Uses Crt;

Const N=10;

Type Mas: array [1.. N] of integer;

Var Line: Mas; i: integer;

Begin

For i:=1 to N do

Begin

Write (`Введите элемент с индексом ', i, ':');

Readln (Line[i])

End;

For i:=1 to N do Write(-Line[i]: 5);

Writeln;

Readln

End.

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

Program Maximum;

Const N = 10;

Type Mas = array [1.. N] of integer;

Var A: Mas; i, Max, Imax: integer;

Begin

Randomize;

For i:= 1 to N do

Begin

A[i]:= -50+Random (101);

Write (A[i]: 5)

End.

Writeln;

Imax:= 1; Max:= A[1];

For i:= 2 to N do

If Max < A[i] then

Max:= A[i]; Imax:=i

End;

Writeln (`Максимальный элемент в массиве = ', Max: 5);

WriteLN (`Его индекс = ', Imax: 5);

Readln;

End.

Заметим, что в процессе поиска максимума не обязательно хранить обе величины - номер максимума и его значение. Достаточно хранить одну, в зависимости от поставленной задачи. Если индекс максимума не нужно знать, достаточно будет переменной Max. Если нужен только номер - достаточно IMax. Тонкость состоит в том, что если нужно и то и другое, все равно достаточно найти только IMax, ведь значение максимума легко может быть получено по его индексу (A [IMax]).

Вычисление количества положительных элементов. Подсчет суммы элементов, которые удовлетворяют какому-то условию, осуществляется по принципу перебора всех элементов массива (цикл for) и проверки для каждого элемента выполнение условия (оператор if). Если условие выполнено, добавим элемент к сумме (S:= S+A[i]).

Program PositivSumm;

Const N = 10;

Type Mas = array [1.. N] of integer;

Var A: Mas; i, S: integer;

Begin

Randomize;

For i:= 1 to N do

Begin

A[i]:= -100+random (201);

Write (A[i]: 5)

End;

Writeln;

S = 0;

For i:= 1 to N do

If A[i] > 0 then S:= S+A[i];

Writeln (`Сумма положительных элементов= ', S);

Readln

End.

Удаление нескольких элементов. Дано число n, ряд из n чисел и число х. Необходимо найти и удалить все элементы со значением х, если такие есть в ряду. Оставшаяся часть сдвигается влево, сохраняя порядок чисел.

Program Udalenie;

Var n, i, Sdv, x: integer;

Var A: array [1.. 100] of integer;

Begin

Writeln (`Удалить числа: ');

Readln (n);

(*Ввод массива A*)

Readln (x);

Sdv:=0; i:=1;

While i<=n do

Begin

If A[i]=x then Sdv:=Sdv+1

Else A[i-Sdv]:=A[i];

i:=i+1

End;

n:=n-Sdv;

(*Вывод массива А*)

End.

В алгоритме по очереди просматриваются все элементы массива, начиная с первого. Элементы массива делятся на два вида: удаляемые и неудаляемые. Если в очередной клетке массива удаляемый элемент, тогда значение переменной Sdv увеличивается на единицу. Таким образом в переменной Sdv подсчитывается число удаляемых элементов.

Если в рассматриваемой клетке находится неудаляемый элемент, то он сдвигается на Sdv позиций влево, как и определено правилом.

Присоединение массива к массиву. Дано число m и ряд из m чисел. Затем дано число n и два ряда по n чисел. Требуется сформировать единый ряд чисел. Новый ряд получается при дописывании первого ряда в конец второго. Длина ряда увеличивается одной командой сразу на m.

Program Prisoedinenie;

Var n, m, i: integer;

Var A, B: array [1.. 100] of integer;

Begin

Writeln (`Объединение рядов: ');

Readln (m);

(*Ввод массива В из m элементов*)

Readln (n);

(*Ввод массива A*)

i:=1;

While i<=m do

Begin

A[i+n]:=B[i];

i:=i+1

End;

n:=n+m;

(*Вывод массива А*)

End.

Первый ряд запоминается во вспомогательном массиве В, а длина ряда - в переменной m. Затем в массив А заноситься второй ряд. Теперь достаточно дописать ряд из массива В элемент за элементом в продолжение массива А.

Перестановка соседей. Пусть дано число n и два ряда по n чисел в каждом. Требуется каждый элемент ряда, стоящий на четной позиции, поменять с предыдущим. Исполнение цикла по этому правилу должно начинаться со второго элемента ряда.

Program Perestanovka;

Var n, i, Buf: integer;

Var A: array [1.. 100] of integer;

Begin

Writeln (`Обмен чисел: ');

Readln (n);

(*Ввод массива А*)

i:=2;

While i<=n do

Begin

Buf:=A[i];

A[i]:=A[i-1];

A[i-1]:=Buf;

i:=i+2

End;

(*Вывод массива А*)

End.

В задаче исходный ряд чисел запоминается в массиве А. Затем числа ряда переставляются в массиве А в соответствии с условием задачи. Когда ряд полностью построен, содержимое массива А выводится на экран.

Слияние двух массивов. Пусть дано число n и два ряда по n чисел в каждом. Необходимо построить ряд, в котором первый элемент равен большему из первых элементов исходных рядов. Второй элемент - большему из вторых элементов исходных рядов и так для всех элементов. Вывести получившийся ряд.

Исходные данные задачи - два ряда чисел. Разместить эти числа можно в двух массивах: в А - первый ряд, а в В - второй ряд. Вычисляя элемент за элементом, будем выводить эти числа на экран [8, c. 67].

Program Sliyanie;

Var n, i, Max: integer;

Var A, B: array [1.. 100] of integer;

Begin

Writeln (`Выбор в парах: ');

Readln (n);

(*Ввод массива А*)

(*Ввод массива В*)

i:=1;

While i<=n do

Begin

If A[i]>B[i] then Max:=A[i]

Else Max:=B[i];

Write (Max, `'); i:=i+1

End

End.

Сортировка выбором. Сортировка выбором упорядочивает ряд из n чисел по возрастанию с использованием поиска наибольшего числа ряда. Среди всех элементов массива от A[1] до A[n] находим наиболший и меняем его местами с последним. Затем точно так же поступаем с рядом от A[1] до A[n-1]. Процесс завершается, когда дойдем до ряда из одного элемента A[1] [8, c. 73].

Program SortVibor;

Var n, i, j, Max, Pos: integer;

Var A: array [1..100] of integer;

Begin

Writeln (`Сортировка чисел: ');

Readln (n);

(*Ввод массива А*)

j:=n;

While j>1 do

Begin

If A[i]>Max then

Begin

Max:=A[i]; Pos:=i

End;

i:=i+1;

End;

A[Pos]:=A[j]; A[j]:=Max;

j:=j-1;

End;

(*Вывод массива А*)

End.

В программе переменная j указывает на последний элемент еще неотсортированной части ряда. В процессе поиска наибольший элемент среди чисел от A[1] до A[j] запоминается в переменной Max, а номер клетки - в переменной Pos. Затем найденный элемент меняется местами с элементом A[j]. Процесс поиска и обмена выполняется для значений j от n до 2 последовательно, постепенно уменьшая длину неотсортированной части ряда.

4.3 Описание игровых моментов при решении задач

При изучении раздела информатики «Алгоритмизация и программирование» написание рабочей программы является конечной целью применения игровых методов. Так, изучение структурного типа данных массив происходит более успешно, если использовать прием поэтапного усложнения задачи. Например, последовательная разработка алгоритмов для задач на отыскание максимума (минимума), замену указанного элемента, перестановка всех элементов массива в указанном порядке способствует развитию алгоритмического мышления и правильного составления алгоритма на основе уже имеющихся знаний. При этом прохождение каждого этапа написания программы сопровождается определенным поощрением или правом перехода к следующему этапу. В процессе работы учащиеся зарабатывают баллы, очки, бонусы, которые суммируются и находят свое отражение в отметках.

Плодотворность труда учащихся на уроке зависит от выбранной формы работы. Следует комбинировать самостоятельную и коллективную работу учеников для осуществления взаимопомощи и быстроты усвоения материала. Игра должна быть интересна и охватывать всех учащихся.

Игра «Группа разработчиков». Все учащиеся делятся на три группы. Каждая группа получает задание написать алгоритм нахождения максимума (минимума), алгоритм, сортирующий элементы массива по возрастанию (по убыванию), алгоритм, суммирующий элементы массива. После написания алгоритмов группы учеников заменяют одного из своих разработчиков представителем другой группы и совмещают два составленных алгоритма. После второго обмена представителями в каждой группе должны получиться одинаковые алгоритмы, выполняющие три поставленные изначально задачи.

Кроме того, принцип работы алгоритма на перестановку элементов массива в порядке возрастания, поиска максимального (минимального) элемента удобно продемонстрировать с помощью ролевого исполнения алгоритма, примером которого является игра «Сценка».

Игра «Сценка». Выбирается N количество учащихся в зависимости от количества переменных в алгоритме. Каждому ученику раздается соответствующая роль и его начальное значение: переменная Счетчик (1 ученик), ячейки массива (количество учеников зависит от размерности массива), переменная Максимум (1 ученик), переменная Минимум (1 ученик), переменная Сумма (1 ученик), а также ученик, записывающий на доске код программы. Задание: найти сумму максимального и минимального элементов массива. При этом на доске чертится массив из N элементов, отводится место для записи значения переменных. Далее учащиеся проигрывают алгоритм по ролям: если переменная счетчик увеличивает свое значение, то ученик, отвечающий за соответствующую ячейку массива, должен сказать значение своей ячейки или сравнить его со значением соседней ячейки и изменить его, если это соответствует алгоритму решения задачи, который один из учащихся записывает на доске. При этом за каждый правильный шаг начисляется бонус, а за неверный отнимается.

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

Игра «Улитка». Заранее готовиться плакат с изображением пустого массива в виде спирали размерностью N. Учащиеся по очереди бросают кубики, при этом выпавшие числа последовательно записывают в ячейки массива. Когда массив будет заполнен, учащиеся получают задание отсортировать массив в порядке возрастания (убывания) таким образом, чтобы каждое число повторялось в массиве только один раз. При этом после написания каждого элемента программы один из учеников проверяет его, внося при этом нужные коррективы в рисунок на плакате.

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

Игра «Японский рисунок». На доске имеется поле, размерностью N?M клеток. Каждый учащийся получает многомерный массив, который содержит значения только 1 и 0. Задача каждого ученика заключается в том, чтобы составить верный алгоритма подсчета количества нулей и единиц в своем массиве, и зарисовать на доске клетку, координаты которой по горизонтали и по вертикали равны соответственно количеству нулей и единиц в своем массиве. Если все подсчеты будут выполнены правильно, то из зарисованных клеток на доске сложится определенный рисунок.

Мотивационную составляющую решения любой алгоритмической задачи определяет правильно поставленная цель выполнения работы и ее дальнейшее применение.

Игра «Спортлото». Учащиеся получают задание написать алгоритм, который бы обнулял те стоки многомерного массива N?M, которые содержат указанное число. Затем каждый ученик получает свой лотерейный билет (файл, содержащий многомерный массив N?M). Учащиеся по очереди вытягивают бочонки с номерами, которые последовательно вводят в написанную ранее программу. Таким образом, победителем станет тот ученик, у которого раньше других будут вычеркнуты все строки его лотерейного билета, т.е. обнуляться все строки многомерного массива.

Разработанные игры «Группа разработчиков», «Сценка», «Улитка», «Японский рисунок», «Спортлото» могут применяться при изучении структурного типа данных массив (приложение A).

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

Заключение

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

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

В результате нашей работы были разработаны интересные методы построения и использования алгоритмов при решении стандартных задач из раздела «Основы алгоритмизации и программирование» на примере учебных задач по работе со структурным типом данных массив. Так как разнообразие способов и форм построения работы на уроке способствует избежанию рутинности и однообразности при решении стандартных задач.

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

Таким образом, поиск новых методов организации работы учащихся на уроке является одним из способов повышения эффективности урока как неотъемлемой составляющей образовательного процесса. Использование игровых моментов является синтезом классических способов построения урока и внедрением новых форм деятельности учащихся на уроке информатики.

Список использованных источников

1. Бочкин, А.И. Методика преподавания информатики / А.И. Бочкин. - Минск: Выш. школа, 1998. - 431 с.

2. Воскресная компьютерная школа [Электронный ресурс] / Система программиования Pascal ABC. - Режим доступа: http://sunschool.math.rsu.ru. - Дата доступа: 25.02.2010.

3. Еремин, О.Ф. Методическое пособие по программированию на языке Pascal ABC / О. Ф. Еремин. - М.: Моздок, 2009. - 49 с.

4. Заборовский, Г.А. Информатика: уч. пособие для 9-го кл. / Г. А. Заборовский, А.И. Лапо, А.Е. Пупцев. - Минск: Нар. Асвета, 2009. - 191 с.

5. Информационный канал Sub@cribe.ru [Электронный ресурс] / Программирование на Паскале. Новая методика обучения. - Режим доступа: http://subscribe.ru. - Дата доступа: 16.03.2010.

6. Лапчик, М.П. Методика преподавания информатики / М. П. Лапчик, И.Г. Семакин, Е.К. Хеннер. - М.: Изд. центр «Академия», 2001. - 624 с.

7. Малев, В.В. Общая методика преподавания информатики / В. В. Малев. - Воронеж: ВГПУ, 2005. - 271 с.

8. Миняйлова, Е.Л. Информатика: 9 класс: учебный курс / Е. Л. Миняйлова, Д. А. Вербовиков, Н. Р. Коледа. - Минск: Аверсэв, 2009. - 172 с.

9. Ушаков, Д.М. Паскаль для школьников / Д.М. Ушаков, Т.А. Юркова. - СПб.: Питер, 2010. - 256 с.

10. Фестиваль педагогических идей «Открытый урок» [Электронный ресурс] / «Алгоритмизация и программирование» в базовом курсе школы. - Режим доступа: http://festival.1september.ru. - Дата доступа: 26.02.2010.

Страницы: 1, 2



Реклама
В соцсетях
рефераты скачать рефераты скачать рефераты скачать рефераты скачать рефераты скачать рефераты скачать рефераты скачать