Рефераты. Обучение решению задач из раздела "Основы алгоритмизации и программирования"

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

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.

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



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.