Файл: Сравнительный анализ процедур для различных языков программирования (Использование процедур в Турбо Паскаль).pdf

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

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

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

Добавлен: 24.04.2023

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

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

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

Прежде чем процедуру можно будет использовать в приложении, следует знать имя процедуры, модуль, в котором она объявлена, и принимаемые процедурой параметры. Имя процедуры и список параметров — составные части заголовка процедуры. Заголовок простой процедуры выглядит следующим образом:  

procedure ИмяПроцедуры;

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

procedure ИмяПроцедуры (СписокПараметров);

Список параметров — это механизм передачи значений процедурам (равно как и функциям). Список параметров может содержать один или более параметров. Если список содержит более одного параметра, они разделяются точкой с запятой. Ниже приведен пример заголовка процедуры, которая принимает единственное строковое значение: 

procedure DisplayString(s: string); [17]

Процедура DisplayString принимает единственный строковый параметр. Как видите, объявление параметров почти полностью аналогично объявлению переменных. При использовании процедур имя параметра не имеет особого значения, чего нельзя сказать о типе данных параметра. Однако при создании процедур параметры действуют подобно переменным, поэтому важны как имя параметра, так и его тип данных. Пример:

procedure Имя_процедуры (параметры);

begin

//Код процедуры;

end;

Delphi обладает огромным множеством стандартных процедур, которые можно использовать в приложениях, например:

Таблица 1 – Стандартные процедуры [18]

procedure ChDir(const S: string);

изменяет текущий каталог;

procedure Delete(var S: string; Index, Count: Integer);

удаляет часть строки;

procedure Halt [ ( Exitcode: Integer) ];

Инициирует досрочное прекращение программы;

procedure Insert(Source: string; var S: string; Index: Integer);

вставляет одну строку в другую;

procedure New(var P: Pointer);

создает новую динамическую переменную и назначает указатель для нее;

procedure RmDir(const S: string);

удаляет указанный подкаталог (должен быть пустым).

Любое имя в программе должно быть обязательно описано перед использованием. Также и относительно подпрограмм: каждая процедура и функция должна быть описана в разделе описаний.

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


Вот какая иерархия описаний получится, к примеру, для программы, структура которой изображена на рис. 3 (для простоты считается, что все подпрограммы - это процедуры без параметров).

Рисунок 3 - Пример структуры программы [4, с. 152]

Procedure A;

Procedure Al;

begin

end {A1};

Procedure A2;

begin

end {A2};

begin {A}

end {A};

Procedure B;

Procedure Bl;

begin

end {B1};

Procedure B2;

Procedure B21;

и т.д.

В подпрограмме любого уровня обычно множество имен констант, переменных, типов и вложенных в нее подпрограмм низшего уровня. Все имена, описанные внутри подпрограммы, локализуются в ней, т.е. они как бы “невидимы” вне подпрограммы. Таким образом, для операторов, использующих обращение к подпрограмме, она представляется “черным ящиком”, в котором реализуется некоторый алгоритм. Все детали этой реализации скрыты от глаз пользователя подпрограммы и потому недоступны ему. К примеру, в рассмотренном выше примере из основной программы возможно обращение к процедурам А и В, но невозможно вызывать вложенные в них процедуры А1, А2, В1 и т.д. [4, c. 152-153]

Сказанное касается не только имен самих подпрограмм, но и вообще любых объявленных в них имен - типов, констант, переменных и меток. Все имена в пределах подпрограммы, в которой они объявлены, должны быть уникальными, и не совпадать с именем самой подпрограммы.

При входе в подпрограмму низшего уровня доступны не только объявленные в ней имена, но и все имена верхнего уровня. Образно говоря, любая подпрограмма как бы окружена полупрозрачными стенками: снаружи подпрограммы не видны ее внутренности, но, внутри подпрограммы, можно наблюдать все, что делается снаружи. Так, например, из подпрограммы В21 может быть вызвана подпрограмму А, использованы имена, объявленные в основной программе, в подпрограммах В и В2, и даже возможно обращение к ним. Любая подпрограмма может вызвать саму себя - такой способ вызова называется рекурсия. [4, с. 152-154]

3.2. Программная реализация процедур в Делфи

Ниже приведен листинг программы, осуществляющей сортировку двумерного массива и вывод максимального элемента.

Исходный модуль программы называется SortM1.pas, исполняемый модуль – PSotrM.exe.

unit SortM1; //Cортировка двумерного массива и вывод отсортированного массива


interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Memo1: TMemo;

Button1: TButton;

procedure VvM(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

r: array[1..9] of integer;

i,j,k: Integer;

str: string;

implementation

{$R *.dfm}

procedure TForm1.VvM(Sender: TObject);

// ввод массива чисел

var

r: array[1..9] of integer;

i,k,x: integer;

str: string;

begin

for k:=1 to 9 do

begin

str:=Memo1.Lines[k-1];

r[k]:=StrToInt(str);

end; [10]

// печать введенного массива

Memo1.Clear;

Memo1.Lines.Add('Введенный массив');

Memo1.Lines.Add('-----------------------------------');

i:=1;

while (i<=7) do

begin

str:=IntToStr(r[i])+' '+IntToStr(r[i+1])+' '+IntToStr(r[i+2]);

Memo1.Lines.Add(str);

i:=i+3;

end;

for i:=1 to 9 do //повторяется сколько элементов

for k:=1 to 8 do

if r[k+1]<r[k]

then

begin //обмен элементами

x:=r[k+1];

r[k+1]:=r[k];

r[k]:=x;

end; [4]

Memo1.Clear;

Memo1.Lines.Add('Отсортированный массив');

Memo1.Lines.Add('----------------------------------------------');

i:=1;

while (i<=7) do

begin

str:=IntToStr(r[i])+' '+IntToStr(r[i+1])+' '+IntToStr(r[i+2]);

Memo1.Lines.Add(str);

i:=i+3;

end;

str:='Максимальный элемент массива = '+IntToStr(r[9]);

ShowMessage(str);

end;

END.

Скриншот хода и результата выполнения программы SortM1.pas дан на рис. 4.

Рисунок 4 – Скриншот результата программы PSortM.exe

3.3. Сравнительный анализ использования процедур в языках программирования Паскаль и Делфи

Отличие использования процедур в этих языках программирования в том, что в Делфи запуск процедуры осуществляется чаще всего при наступлении какого-то события – нажатия кнопки, активации формы и т.д., а в Паскале оформляется просто вызов процедуры. Кроме того, в Делфи должно быть объявление процедур в классе type, а в Паскале этого нет.

В остальном использование процедур в обоих языках аналогично – процедуры вызываются по имени, в программе должно быть описание процедуры, начинающееся со слова Procedure, процедуре могут передаваться параметры с описанием типов параметров, тело процедуры находится между begin и end, используемые внутри процедуры переменные должны быть объявлены в процедуре.

Положительным фактом в языке Делфи является наглядность и удобство в использовании форм, в том, что окно исходного модуля и окно формы видны одновременно, а не как в Паскале.


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

Также проведен сравнительный анализ использования процедур в языках программирования Паскаль и Делфи.

Заключение

Языки высокого уровня (ЯВУ) позволяют писать программы текстом, похожим на английский язык. Программы, написанные на ЯВУ, более компактны, легче для понимания, а вероятность появления в них ошибок меньше, процесс отладки (поиска и исправления ошибок) легче. Они позволяют не учитывать особенностей конкретных компьютерных архитектур, благодаря чему возможно легкое перенесение созданных программ на другие компьютеры.

К языкам программирования высокого уровня относят: Фортран; Кобол; Алгол; Pascal; Basic; Java; DC, C++, C#; Objective C; Smalltalk; Delphi и другие.

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

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

В языках Delphi и Pascal два вида подпрограмм — процедура и функция. Каждая подпрограмма имеет имя, используемое в программе для вызова подпрограммы. Упоминание этого имени в тексте программы и есть вызов процедуры (функции).


Процедурой просто выполняются требуемые операции, без возврата никаких результатов своих действий. Результат - в изменениях, произошедших в программе в процессе выполнения этой процедуры.

Во второй главе дано подробное описание использования процедур в Паскаль, поставлена задача сортировки двумерного массива с использованием процедур. Проведена алгоритмизация задачи, реализация алгоритма на языке Турбо Паскаль, отладка программы и представлен ход и результат работы программы. Исходный модуль программы SortMasV.pas, листинг которой приведен в работе.

В третьей главе проведена реализация той же задачи на языке Делфи7, исходный модуль SortM1.pas, выполняемый модуль PSortM.exe. В программе используется процедура VvM, запускаемая по нажатию кнопки Ввод.

Программа вводит данные массива построчно в поле Memo, в нем же выводит отсортированный массив и максимальный элемент массива – последний элемент. Программа также отлажена и работает корректно.

К работе прикладываются оба выполняемых модуля.

Список использованных источников

Основы алгоритмизации и программирования: учебное пособие / Г.Р. Кадырова. – Ульяновск: УлГТУ, 2014. – 95 с.

Основы алгоритмизации и программирования: учебное пособие / Т.А. Жданова, Ю.С. Бузыкова. – Хабаровск : Изд-во Тихоокеан. Гос. ун-та, 2011. – 56 с.

Программирование и основы алгоритмизации: Для инженерных специальностей технических университетов и вузов. /А.Г. Аузяк, Ю.А. Богомолов, А.И. Маликов, Б.А. Старостин. - Казань: Изд-во КНИТУ- КАИ, 2015, - 153 с.

Фаронов В.В. Delphi. Программирование на языках высокого уровня: учебник для вузов. – СПб.: Питер, 2010. – 640 с.

Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие. - М.: Издательство «ОМД Групп», 2013. - 616 с.

Фаронов В.В. Турбо Паскаль. Учебное пособие. – СПб.: БХВ-Петербург, 2014. - 1056 с.

Шпак Ю.А. Turbo Pascal 7.0 на примерах/Под ред. Ю.С. Ковтанюка. — К.: Издательство Юниор, 2013. — 496 с.

Turbo Pascal. Самоучитель. О.А. Меженный. 2012. – 336 с.

Turbo Pascal: решение сложных задач. – СПб.: БХВ-Петербург, 2013. – 208 с.

Delphi. Урок №9. Создание собственных процедур и функций Delphi. Учебник по Delphi 7. 2015.

Модульное программирование. 23.12.2013. URL: http://life-prog.ru/1_3236_modulnoe-programmirovanie.html (дата обращения: 20.10.18).

Лекции по Паскаль. Сортировка двумерного массива. 2013. URL: http://mojainformatika.ru/paskal/lekczii-po-pascal/sortirovka-dvumernogo-massiva.html (дата обращения: 25.10.18).

Лекция 27. Двумерные массивы. Сортировка двумерного массива. Садовский Е.М. URL: http://znatok-pascal.ucoz.ru/publ/1-1-0-27 (дата обращения: 24.10.18).