Добавлен: 31.03.2023
Просмотров: 126
Скачиваний: 1
СОДЕРЖАНИЕ
1 ЯЗЫКИ ПРОГРАММИРОВАНИЯ. ОСНОВНЫЕ ПОНЯТИЯ И ТЕРМИНЫ
1.1. Понятие языка программирования
1.2 Классификация языков программирования
1.2.1 Классификация по степени ориентации на возможности ЭВМ
1.2.2 Классификация по типу решаемых задач
1.2.3 Классификация по степени ориентации на класс задач
1.2.4 Классификация по степени детализации алгоритма
1.2.5 Классификация по способу получения результата
1.2.6 Классификация по возможности создания новых типов данных и операций
1.3 Основные этапы разработки программ на языках программирования высокого уровня.
2 Язык программирования Pascal
3 РАЗРАБОТКА ПРОГРАММЫ СОРТИРОВКИ МАССИВОВ
Запустим программу и зададим размер массива равным 10 элементам. Результат работы программы показан на рисунке 8.
Рисунок 8‑ Результат работы программы для массива из 10 элементов
Из рисунка видно, что оба метода успешно справились с сортировкой массива, при этом сортировка пузырьковым методом заняла примерно в два раза больше времени чем сортировка вставками.
Проверим работы программы на массиве из 100 элементов (Рисунок 9).
Рисунок 9‑ Результат выполнения программы для массива из 100 элементов
Из рисунка видно, что количественно отношение времени двух методов осталось таким же, что согласуется с теоретическими сведениями.
ЗАКЛЮЧЕНИЕ
В данной курсовой работе было проведено исследование на тему «Программы циклической структуры. Массивы данных»
В главе 1 была обобщена информация о языках программирования, взятая из литературных источников. Описано понятие языка программирования, его назначение и выполняемые функции.
Также в главе проведена классификация языков программирования по основным критериям. Практически все современные языки высокого уровня относятся к машинно-независимым языкам. Чаще всего сейчас используются языки прикладного программирования. Практически все они позволяют создавать программы, основанные на объектно-ориентированном подходе.
Были рассмотрены наиболее популярные на сегодняшний день языки программирования высокого уровня. Язык С++ является наиболее универсальным из них, он позволяет как создавать кроссплатформенные программы с высоким уровнем абстракции от оборудования, так и системные решения вроде драйверов и низкоуровневых программ. Такие языки как Perl и PHP нашли свое широкое применение в создании сайтов сети Интернет. Популярный на сегодняшний день C# создавался на основе языка C для работы с платформой .NET компании Microsoft.
Во второй главе рассмотрен предмет исследования – язык программирования Pascal. Показана краткая история создания языка, поддерживаемые инструкции и типы данных, описаны основные компиляторы.
В третьей главе была разработана программа по сортировке массива двумя способами: методом вставки и методом пузырьков. Программа создана в среде Embarcodero Delphi. В данной программе выполняется кроме сортировки выполняется сравнение двух методов по количеству затраченных итераций цикла, перестановок и времени выполнения сортировки. На экране отображаются как отсортированные массивы, так и упомянутые выше параметры.
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
- Панюкова, Т. А. Языки и методы программирования. Создание простых GUI-приложений с помощью Visual С++. Учебное пособие / Т.А. Панюкова, А.В. Панюков. - М.: Либроком, 2015. - 144 c
- Фаронов Валерий Васильевич. Delphi. Программирование на языке высокого уровня: Учебник для вузов / В. В. Фаронов. — СПб.: Питер, 2017. — 639 с.: ил. — (Учебник для вузов). — Библиогр.: с. 628 (7 назв.)
- Баррон, Дэвид Введение в языки программирования; М.: Мир - Москва, 2015. - 192 c.
- Григорьев, А.Б. О чем не пишут в книгах по Delphi; БХВ-Петербург - Москва, 2013. - 576 c.
- Гудман, Д. Java Script и DHTML. Сборник рецептов для профессионалов; СПб: Питер - Москва, 2013. - 523 c.
- Delphi 7 / А. Д. Хомоненко [и др.]; под ред. А. Д. Хомоненко. — СПб.: БХВ-Петербург, 2016. — 1200 с.: ил. — (В подлиннике). — Предм. указ.: с. 1196-1200
- Скворцова Л.А., Чудновская Н.Д. Лабораторный практикум по программированию в Delphi. Электронная версия
- Кристиансен, Том; Торкингтон, Натан Perl: библиотека программиста; СПб: Питер - Москва, 2015. - 736 c.
- Либерти, Джесс Освой самостоятельно C++ за 21 день; М.: Вильямс - Москва, 2015. - 816 c.
- Мугал, Халид А.; Расмуссен, Рольф В. Java. Руководство по подготовке к сдаче сертификационного экзамена CX-310-035 (+ CD-ROM); М.: Кудиц-образ - Москва, 2017. - 688 c.
- Муртаф, Б. Современное линейное программирование; Мир - Москва, 2010. - 224 c.
- Абельсон, Х.; Сассман, Дж. Структура и интерпретация компьютерных программ; М.: Добросвет - Москва, 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); // выводим затраченное на сортировку время в секундах