О САЙТЕ
Добро пожаловать!

Теперь вы можете поделиться своей работой!

Просто нажмите на значок
O2 Design Template

ФЭА / Информатика / КУРСОВАЯ РАБОТА ПО ДИСЦИПЛИНЕ «ИНФОРМАТИКА» РАЗДЕЛ: АЛГОРИТМИЧЕСКИЙ ЯЗЫК PASCAL НА ТЕМУ: Разработка в среде Turbo Pascal программы удаления из массива повторяющихся элементов.

(автор - student, добавлено - 17-09-2017, 12:14)

 

Скачать:  1111.zip [265,34 Kb] (cкачиваний: 19)

 

КАФЕДРА ИНФОРМАТИКИ

 


 

 

 

 

 

КУРСОВАЯ РАБОТА

ПО ДИСЦИПЛИНЕ «ИНФОРМАТИКА»

РАЗДЕЛ: АЛГОРИТМИЧЕСКИЙ ЯЗЫК PASCAL

НА ТЕМУ:

Разработка в среде Turbo Pascal программы удаления из массива повторяющихся элементов.

 

 

 

 

 

 


 

Оглавление

Оглавление.. 2

1. ПОСТАНОВКА ЗАДАЧИ.. 3

2. Описание алгоритма решения задачи графическим способом... 4

2.1 Укрупненная схема алгоритма и ее детализация. 4

2.2 Блок – схема алгоритма. 8

3. Разработка программы на языке программирования pascal. 10

3.1 Описание блоков укрупненной схемы алгоритмов на языке программирования PASCAL. 11

3.2 Листинг программы.. 14

3.3 Тестирование программы.. 16

4. Список литературы... 17

 



1.ПОСТАНОВКА ЗАДАЧИ

Задан одномерный массив. Удалить из массива все повторяющиеся элементы, оставив их первые вхождения, то есть в массиве должны остаться только разные элементы.

Для отладки программы исходный массив сформировать с помощью генератора случайных чисел.

Под удаление элемента из массива понимать исключение этого элемента путём смещения всех следующих за ним элементов влево на 1 позицию и присвоение последнему элементу массива значение 0.

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


2.ОПИСАНИЕ АЛГОРИТМА РЕШЕНИЯ ЗАДАЧИ

ГРАФИЧЕСКИМ СПОСОБОМ


Укрупненная схема алгоритма и ее детализация


 

Детализация укрупненной схемы алгоритма

В программе решаются следующие задачи:

 

1. Заполнение одномерного массива.

2. Поиск повторяющихся элементов.

3. Удаление из массива повторяющихся элементов.

4. Вывод преобразованного массива

Ввод элементов одномерного массива

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

 

 



Поиск повторяющихся элементов

Обработку массива осуществляем в цикле с условием. Перед началом работы цикла его параметру задаем начальное значение, то есть i=1. В цикле условия проверяется условие (c=a[k]).

Внутренний цикл перебирает значения, следующие после a[i] до последнего. В цикле if сравнивается переменная c со всеми оставшимися. Мы используем дважды этот цикл, чтобы найти по вторяющиеся элементы, так как в случае если два или более одинаковых элемента идут друг за другом, то удалиться только один:

 

 

 


Удаление повторяющихся элементов массива

Удаляем из массива все повторяющиеся элементы, оставляя их первые вхождения, то есть в массиве должны остаться только разные


элементы. Под удаление элемента подразумеваем исключение этого элемента путём смещения всех следующих за ним элементов влево на 1 позицию и присвоение последнему элементу массива значения 0.

Ниже приведена блок-схема, которая демонстрирует:

 

 

 

 

 

 


Вывод элементов одномерного массива

После удаления выводим преобразованный массив. Вывод элементов одномерного массива осуществляется также при помощи цикла с параметром:

 

 

 



Блок-схема алгоритма


 

 



3.РАЗРАБОТКА ПРОГРАММЫ

НА ЯЗЫКЕ PASCAL

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

Для очистки ненужной информации на экране подключим процедуру ClrScr, которая должна быть описана в модуле CRT в разделе Uses сразу после запуска программы.

-Uses: указывает какие внешние TPU файлы будет использовать программа (это специфика Turbo Pascal).

В данной программе в разделе констант (const) объявим константу

N=15, где N- количество элементов массива.

Var- описывает переменные: i – порядковый номер элемента массива;j, k – дополнительные циклы; c – переменная, которой присваивается значение элемента, с которым нужно сравнить все остальные.

Integer- целочисленный тип, может принимать значение от -32768 до 32767 и занимает объем памяти в 16 бит.

Array [1..N] of Integer-Данный массив отображает последовательность чисел.

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

 

 


 

Описание блоков укрупненной схемы алгоритма

на языке Pascal

Ввод элементов одномерного массива

Используем процедуру вывода writeln (' Введите элементы массива: '). Writeln(a[i]) – оператор вывода. Выводит первое значение последовательности после обработки из оперативной памяти на внешнее устройство (экран, принтер, файл на диске).

Сначала выдается подсказка оператором writeln ('Введите элементы массива').Затем каждый очередной элемент массива считывается с экрана оператором readln(a[i]), который вызывается в цикле. Цикл работает до достижения переменной i значения N, то есть до конца массива.

В виде фрагмента программы это запишется следующем образом:

Writeln (' Введите элементы массива: ');

for i:=l to n do

begin

a[i]:=random(8)

write(a[i]:3);

end;

ClrScr- процедура очищает экран и устанавливает курсор в левый верхний угол экрана.

Randomize- процедура инициализирует встроенный генератор случайных чисел случайным значением. Случайное значение получается от системного таймера. Число, получаемое в результате работы генератора случайных чисел, хранится в предопределенной переменной с именем RandSeed.


Random - functionRandom[ (Range:Word) ];Назначение: Возвращает случайное число.

 

Поиск повторяющихся элементов массива

Обработку массива осуществляем в цикле с условием. Перед началом работы цикла его параметру задаем начальное значение, то есть i=1.

Внутренний цикл (for k:=i+1 to n do) перебирает значения, следующие после a[i] до последнего. .

For i:=1 to n-1 do- Оператор цикла со счетчиком. Этот оператор применяется, если требуется выполнить тело цикла заранее заданное количество раз. Задает определенное количество повторений операций. Оператор цикла со счетчиком подходит для программирования только таких циклических фрагментов, в которых до выполнения цикла известны начальное и конечное значения счетчика повторений цикла.

оператор for имеет два существенных ограничения:


1) Шаг изменения счетчика циклов может быть только или +1 (если используется ключевое слово to), или —1 (если используется ключевое слово down to).

2) Переменная, выступающая в роли счетчика циклов, может быть только порядкового типа и должна быть локальной для того блока, в котором находится оператор for.

If c=a[k] then begin - В данной операции используется условный оператор. В случае если значения cиa[k] удовлетворяют равенство c=a[k], программа выводит на экран следующий цикл, в котором мы удаляем этот элемент.

begin

for i:=1 to n-1 do


begin

c:=a[i];

for k:=i+1 to n do

if c=a[k] then

begin

Удаление повторяющихся элементов массива

 

Если у нас выполнилось условие c=a[k] то мы удаляем повторяющиеся элементы. В этом разделе мы также использовали цикл с параметром (for j:=k to n-1 do). a[n] присваивается нулю только после окончания цикла.

begin

for j:=k to n-1 do

a[j]:=a[j+1];

a[n]:=0;

end;

Вывод преобразованного массива

После удаления вывод преобразованный массив на экран стандарным способом вывода write(a[i], ' ') - вывод элементов массива в строку через пробел.

Writeln ('Преобразованный массив:');

for i:=l to n do write(a[i],' ');


Листинг программы

program Massiv;

uses crt;

const n=15;

var a:array[1..n] of integer;

i,j,c,k:integer;

begin clrscr;

randomize;

Writeln (‘Введите элементы массива:’);

for i:=1 to n do read(a[i]);

begin

a[i]:=random(8)

write(a[i]:3);

end;

for i:=1 to n-1 do

begin

c:=a[i];

for k:=i+1 to n do

if c=a[k] then

begin

for j:=k to n-1 do

a[j]:=a[j+1];

a[n]:=0;

end;

if c=a[k] then

begin

for j:=k to n-1 do


a[j]:=a[j+1];

a[n]:=0;

end;

end;

for i:=1 to n-1 do

begin

c:=a[i];

for k:=i+1 to n do

if c=a[k] then

begin

for j:=k to n-1 do

a[j]:=a[j+1];

a[n]:=0;

end;

if c=a[k] then

begin

for j:=k to n-1 do

a[j]:=a[j+1];

a[n]:=0;

end;

end;

writeln;

for i:=1 to n do write(a[i]:3);

readln;

end.


Тестирование программы

Ниже приведены результаты выполнения программы на примере

различных входных данных.


4. Список литературы

 

1.Иванов А.Ф., Потапова О.Н., Салихова Г.Л. Основы алгоритмического языка Pascal. – АГНИ, 2007.

2.Павловская Т.А. Паскаль. Программирование на языке высоко уровня. Питер, 2004

3.Немнюгин С.А. Turbo Pascal: учебник – СПб. - Питер, 2001

4.Окулов С. М. Основы программирования. Москва, 2008.

5. Попов В., «Паскаль и Дельфи. Самоучитель» - СПб: «Питер», 2003

 

 


Ключевые слова -


ФНГ ФИМ ФЭА ФЭУ Яндекс.Метрика
Copyright 2021. Для правильного отображения сайта рекомендуем обновить Ваш браузер до последней версии!