Файл: Основы программирования на языке Pascal.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 31.03.2023

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

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Запустим программу и зададим размер массива равным 10 элементам. Результат работы программы показан на рисунке 8.

Рисунок 8‑ Результат работы программы для массива из 10 элементов

Из рисунка видно, что оба метода успешно справились с сортировкой массива, при этом сортировка пузырьковым методом заняла примерно в два раза больше времени чем сортировка вставками.

Проверим работы программы на массиве из 100 элементов (Рисунок 9).

Рисунок 9‑ Результат выполнения программы для массива из 100 элементов

Из рисунка видно, что количественно отношение времени двух методов осталось таким же, что согласуется с теоретическими сведениями.

ЗАКЛЮЧЕНИЕ

В данной курсовой работе было проведено исследование на тему «Программы циклической структуры. Массивы данных»

В главе 1 была обобщена информация о языках программирования, взятая из литературных источников. Описано понятие языка программирования, его назначение и выполняемые функции.

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

Были рассмотрены наиболее популярные на сегодняшний день языки программирования высокого уровня. Язык С++ является наиболее универсальным из них, он позволяет как создавать кроссплатформенные программы с высоким уровнем абстракции от оборудования, так и системные решения вроде драйверов и низкоуровневых программ. Такие языки как Perl и PHP нашли свое широкое применение в создании сайтов сети Интернет. Популярный на сегодняшний день C# создавался на основе языка C для работы с платформой .NET компании Microsoft.

Во второй главе рассмотрен предмет исследования – язык программирования Pascal. Показана краткая история создания языка, поддерживаемые инструкции и типы данных, описаны основные компиляторы.

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


СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ

  1. Панюкова, Т. А. Языки и методы программирования. Создание простых GUI-приложений с помощью Visual С++. Учебное пособие / Т.А. Панюкова, А.В. Панюков. - М.: Либроком, 2015. - 144 c
  2. Фаронов Валерий Васильевич. Delphi. Программирование на языке высокого уровня: Учебник для вузов / В. В. Фаронов. — СПб.: Питер, 2017. — 639 с.: ил. — (Учебник для вузов). — Библиогр.: с. 628 (7 назв.)
  3. Баррон, Дэвид Введение в языки программирования; М.: Мир - Москва, 2015. - 192 c.
  4. Григорьев, А.Б. О чем не пишут в книгах по Delphi; БХВ-Петербург - Москва, 2013. - 576 c.
  5. Гудман, Д. Java Script и DHTML. Сборник рецептов для профессионалов; СПб: Питер - Москва, 2013. - 523 c.
  6. Delphi 7 / А. Д. Хомоненко [и др.]; под ред. А. Д. Хомоненко. — СПб.: БХВ-Петербург, 2016. — 1200 с.: ил. — (В подлиннике). — Предм. указ.: с. 1196-1200
  7. Скворцова Л.А., Чудновская Н.Д. Лабораторный практикум по программированию в Delphi. Электронная версия
  8. Кристиансен, Том; Торкингтон, Натан Perl: библиотека программиста; СПб: Питер - Москва, 2015. - 736 c.
  9. Либерти, Джесс Освой самостоятельно C++ за 21 день; М.: Вильямс - Москва, 2015. - 816 c.
  10. Мугал, Халид А.; Расмуссен, Рольф В. Java. Руководство по подготовке к сдаче сертификационного экзамена CX-310-035 (+ CD-ROM); М.: Кудиц-образ - Москва, 2017. - 688 c.
  11. Муртаф, Б. Современное линейное программирование; Мир - Москва, 2010. - 224 c.
  12. Абельсон, Х.; Сассман, Дж. Структура и интерпретация компьютерных программ; М.: Добросвет - Москва, 2012. - 608 c.

Приложение А

Исходный код программы

unitSorting;

interface

uses

Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,

Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Label1: TLabel;

Edit1: TEdit;

Label2: TLabel;

Label4: TLabel;

Label5: TLabel;

Memo1: TMemo;

Label7: TLabel;

Memo2: TMemo;

Label8: TLabel;

Label9: TLabel;

Label10: TLabel;

Bevel1: TBevel;

Bevel2: TBevel;

Label11: TLabel;

Label12: TLabel;

Label13: TLabel;

Memo3: TMemo;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var N: integer; // переменная N, будет содержать размер массива

var j, temp, iter, ch, I, k, m: integer; // служебные переменные, будут использоваться в программе

var arr,arr2,arr3: array of integer; // массивы

var Fr, t0, t1: Int64; // служебные переменные для вычисления времени выполнения

var dt: Extended; // содержит время выполнение кода

begin

// инициализируем циклы и переменные


N := StrToInt(edit1.Text); // присваиваем переменной N значение размера массива введенного пользователем

setlength(arr,N); // задаем размеры массивов

setlength(arr2,N);

setlength(arr3,N);

label8.Caption:='Итераций: '; // задаем начальные значения надписям

label10.Caption:='Перестановок: ';

label9.Caption:='Времени: ';

label11.Caption:='Итераций: ';

label12.Caption:='Перестановок: ';

label13.Caption:='Времени: ';

for I := 0 to N-1 do // инициализируем массивы случайными числами

begin

arr[I]:=Random(100);

arr2[I]:=arr[I];

arr3[I]:=arr[I];

end;

// отображаем значение несортированного массива

Memo1.Clear();

for I := 0 to N-1 do

begin

Memo1.Lines.Add(IntToStr(arr[I]));

end;

// сортируем массив методом пузырьков

iter:=0; // обнуляем счетчики

ch:=0;

QueryPerformanceFrequency(Fr); // считываем частоту процессора

QueryPerformanceCounter(t0); // считываем значение системного таймера перед началом сортировки

for j := 0 to N do // сортируем массив

begin

iter:=iter+1;

for i := 0 to N-j do

begin

iter:=iter+1;

if arr2[i]>arr2[i+1] then

begin

ch:=ch+1;

temp:=arr2[i];

arr2[i]:=arr2[i+1];

arr2[i+1]:= temp;

end;

end;

end;

QueryPerformanceCounter(t1); // считываем значение системного таймера по окончанию сортировки

dt := (t1-t0)/(N*Fr); // вычисляем время выполнения циклов сортировки

// отображаем отсортированный методом пузырьком массив и данные счетчиков

Memo2.Clear();

for I := 1 to N do // выводим массив, отсортированный методом пузырьков

begin

Memo2.Lines.Add(IntToStr(arr2[I]));

end;

label8.Caption:=label8.Caption + IntToStr(iter); // выводим число итераций циклов

label10.Caption:=label10.Caption + IntToStr(ch); // выводим число перестановок

label9.Caption:=label9.Caption + FloatToStr(dt); // выводим затраченное на сортировку время в секундах

// сортируем массив методом вставок

iter:=0; // обнуляем счетчики

ch:=0;

Fr:=0;

t0:=0;

t1:=0;

QueryPerformanceFrequency(Fr); // считываем частоту процессора

QueryPerformanceCounter(t0); // считываем значение системного таймера перед началом сортировки

for I := 0 to N do

begin

iter:=iter+1;

temp := arr2[I];

j := 0;

while temp > arr2[j] do

begin

j:=j+1;

iter:=iter+1;

end;

for k:=I downto j+1 do

begin

arr2[k]:=arr2[k-1];

arr2[j]:=temp;

iter:=iter+1;

ch:=ch+1;

end;

end;

QueryPerformanceCounter(t1); // считываем значение системного таймера по окончанию сортировки

dt := (t1-t0)/(N*Fr); // вычисляем время выполнения циклов сортировки

// отображаем отсортированный методом вставок массив и данные счетчиков

Memo3.Clear();

for I := 1 to N do // выводим массив, отсортированный методом вставок

begin

Memo3.Lines.Add(IntToStr(arr2[I]));

end;

label11.Caption:=label11.Caption + IntToStr(iter); // выводим число итераций циклов

label12.Caption:=label12.Caption + IntToStr(ch); // выводим число перестановок

label13.Caption:=label13.Caption + FloatToStr(dt); // выводим затраченное на сортировку время в секундах