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 последовательно, постепенно уменьшая длину неотсортированной части ряда.


Информация о работе «Обучение решению задач из раздела "Основы алгоритмизации и программирования"»
Раздел: Педагогика
Количество знаков с пробелами: 41340
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
29193
3
0

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

Скачать
49877
5
0

... в среде Delphi). Задачи использовались как с данного сайта, так и из других источников – книг и семинарских занятиях по информатике в МГОУ. Курс завершается разработкой игры. Программное обеспечение: свободно распространяемая версия объектно-ориентированной среды программирования Delphi. Методы обучения: метод проектов, лекции, проблемный метод, частично-поисковый метод. Контроль знаний и умений ...

Скачать
27624
3
2

... учеников 1. Организационный момент Здравствуйте. Сегодня мы будем говорить о том, как работать с графикой при помощи языка программирования Pascal. Вы уже знакомы с различными типами графики. Какие это типы? (растровый и векторный) Как задается графический объект при использовании графики этих типов. Pascal поддерживает вывод на экран и векторной и растровой графики, но мы рассмотри ...

Скачать
75362
0
4

... (Wide Area Information Server) сервере; news - группа новостей телеконференции Usenet; telnet - выход на ресурсы сети Telnet; ftp - файл на FTP - сервере. host. domain - доменное имя в сети Интернет. port - число, которое необходимо указывать, если метод требует номер порта. Пример: http://support. vrn.ru/archive/index.html. Префикс http://указывает, что далее следует адрес Web-страницы, / ...

0 комментариев


Наверх