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

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

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

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

Добавлен: 24.04.2023

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

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

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

Версия Delphi 1 была выпущена в феврале 1995 г., Delphi 2 – в марте 1996г., а Delphi 3 – в мае 1997г. затем было решено интегрировать эту платформу программирования с CORBA (Common Object Request Broker Architecture – технология построения объектных приложений, предложенная компанией IBM), быстро развивающейся технологией создания распределенных приложений. Версия Delphi 4 со встроенными средствами CORBA появились на рынке в июне 1998г. Версия Delphi 5 была выпущена в августе 1999г., версия Delphi 6 выпущена в мае 2001г. и обновленная версия Delphi 7 выпущена в 2002 году. Система Delphi – ключевой программный продукт компании Borland. [23]

Среда Delphi - это сложный механизм, обеспечивающий высокоэффективную работу программиста. Среда DELPHI визуально реализуется в виде нескольких одновременно раскрытых на экране монитора окон. Количество, расположение, размер и вид окон может меняться программистом в зависимости от его текущих нужд, что значительно повышает производительность работы.

Главное окно всегда присутствует на экране и предназначено для управления процессом создания программы. Основное меню содержит все необходимые средства для управления проектом. Пиктограммы облегчают доступ к наиболее часто применяемым командам основного меню. [19]

1.3. Подпрограммы – процедуры и функции в языках высокого уровня

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

Структура подпрограммы напоминает программу в миниатюре: она также состоит из заголовка, блока объявлений переменных и блока инструкций. Отличия лишь в невозможности подключения модулей (блок uses), а так же в ограничениях на объявления типов данных: если локальные простые и даже составные типы в подпрограммах вполне допустимы, то объявление более сложных типов - объектов, классов и интерфейсов, в подпрограммах не допустимо, и они не могут быть локальными. Использование подпрограмм состоит из 2 этапов: сначала описание подпрограмм, а затем, уже в программе, ее вызов. [18]


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

Подпрограммой называют небольшую программа, решающую часть общей задачи. Каждая подпрограмма имеет имя, используемое в программе для вызова подпрограммы. Упоминание этого имени в тексте программы и есть вызов процедуры (функции). [4, с. 152]

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

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

2. Использование процедур в Турбо Паскаль

2.1. Теоретические аспекты использования процедур в Турбо Паскаль

Структура процедуры в Паскаль имеет следующий вид:

Procedure <имя процедуры>(формальные параметры : их тип);

Var

(локальные переменные)

begin

. . .

end;

Процедура вызывается по имени:

<имя процедуры> (фактические параметры); [5, c. 45-47]

Значение фактических параметров при вызове процедуры передаётся формальным параметрам. Временно управление передаётся процедуре, после завершения работы процедуры управление возвращается в основную программу.

Каждый формальный параметр указан вместе со своим типом. Соответствующий ему фактический параметр указан без типа. Формальные и фактические параметры должны соответствовать по количеству параметров, их типу и порядку следования.


Переменные, описанные в процедуре после слова Var, - это внутренние переменные процедуры или промежуточные, они собой данные для операций внутри процедуры и не представляют результат её выполнения, а нужны лишь для промежуточных действий. Данные и результаты описываются в круглых скобках после имени процедуры. Перед описанием переменных-результатов пишется служебное слово var. [15]

Если параметры определены как параметры-переменные, перед ними ставится слово VAR, а если это параметры-константы, - слово CONST, например:

Procedure MyProcedure (var d: Real; s: Real; const r: String);

Здесь d - параметр-переменная, s -параметр-значение, а r - параметр-константа. [5, с. 156-158]

Процедуры в программе выполняются не в том порядке, в каком они записаны, их вызывает главная программа по имени с указанием фактических параметров. [11]

На примере сложения двух целых чисел проиллюстрируем возможности Турбо Паскаля 7.0 по оформлению программ при помощи процедур. [6, с. 176-190]

Program ProcedureAndFunction;

Uses

Crt;

Var

a, b, SumNumbers : integer;

Procedure Summa1(Var Sum: integer; a, b : integer);

Begin

Sum:= a+b;

End;

Begin

ClrScr;

a := 12;

b := 15;

Summa1(SumNumbers, a, b);

writeln ('Сумма чисел равна ',SumNumbers);

End.

Вызов процедуры производится по ее имени. Наряду с параметрами-значениями a и b, которые подлежат сложению, в списке параметров присутствует параметр-переменная Sum, который содержит возвращаемое процедурой значение - сумму.

2.2. Алгоритмизация задачи с использованием процедур в Паскаль

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

  1. Укрупненный алгоритм сортировки двумерного массива целых чисел по возрастанию, определения максимального положительного элементов.
  2. Сначала вводится размерность двумерного массива;
  3. Затем вводятся элементы двумерного массива целых чисел, причем числа могут быть и положительными и отрицательными;
  4. Затем производится сортировка элементов массива по возрастанию. Сортировку массива оформим в виде процедуры с параметрами;
  5. После сортировки массива распечатаем отсортированный массив и максимальный элемент массива (он последний в массиве); [3]
  6. Теперь приведем алгоритм сортировки двумерного массива.

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

  1. Для упрощения алгоритма вводится одномерный массив R, размерность которого равна n*n, элементы которого – это элементы двумерного массива. Сначала идет формирование одномерного массива R из элементов двумерного массива по строкам;
  2. Теперь элементы сформированного одномерного массива R упорядочиваются по возрастанию; замена элементов производится с помощью процедуры Swap, которой передаются параметры – элементы массива, которые нужно поменять местами;
  3. После сортировки одномерного массива идет обратное присвоение: элементам двумерного массива присваиваются элементы отсортированного одномерного массива. [12, 20]

Приведем блок-схему алгоритма (рис. 1). [1, 2]

начало

Ввод n

Ввод элемента M[i.j]

I=1;

j=1;

Присвоение одном. Мас. R[(i-1)*k+j] = M[I,j]

j=j+1;

j<=k

да

нет

i=i+1;

да

i<=k

нет

I=1;

1

j=1;

1

1

N3=rj

Rj=rj+1

Rj+1=n3

Rj>Rj+1

да

j=j+1;

j<=k

да

i=i+1;

1

I<=k

да

Переприсвоение двум. Мас. M[I,j]=R[(i-1)*k+j]

Вывод массива M

конец

Рисунок 1 – Блок-схема алгоритма сортировки двумерного массива [13]

2.3. Реализация задачи с использованием процедур на языке Turbo Pascal

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

Сортировка производится с помощью процедуры SortMax, которая имеет в качестве параметров размерность квадратной матрицы и сам двумерный массив. Процедура Swap меняет местами элементы массива. Имя программы SORTMAXV.pas.

PROGRAM SORTMAXV;

CONST

n=10; { максимальный размер массива }

type

Ind = 1 .. 10;

MM = array [ind] of Integer;

Matr = array [ind] of MM;

var

ii,jj,n : Ind;

M : Matr;

MN, MX: Integer; [8]

Procedure Swap(var n1,n2: integer);

Var n3: integer;

Begin

N3:=n1;

N1:=n2;

N2:=n3;

End; [20]

PROCEDURE SortMax (k: integer; var mm: Matr);

{ Процедура сортировки двумерного массива целых чисел по возрастанию }


VAR

i,j,l: integer;

m2: integer;

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

BEGIN

for i:=1 to k do

for j:=1 to k do

r[(i-1)*k+j]:=mm[I,j];

for i:=1 to k*k do

for j:=1 to k*k-1 do

if r[j]>r[j+1] then Swap(r[j],r[j+1]);

for i:=1 to k do

for j:=1 to k do

mm[I,j]:=r[(i-1)*k+j];

END; { процедуры SortMax} [9]

BEGIN {основная программа}

writeln(` введите размер двумерного массива n`);

read(n);

writeln(`введите массив по строкам`);

for ii:=1 to n do

for jj :=1 to n do

Read (M[ii,jj]);

ReadLn;

SortMax (n,M); { сортировка массива m }

{Печать отсортированного массива}

writeln (`отсортированный массив`);

for ii: =1 to n do

begin

for jj:=1 to n do

write (‘ ’, M[ii,jj]);

writeln;

end; [7]

readln;

END.

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

Рисунок 2 – Ход и результат выполнения программы SortMaxV.pas

К курсовой работе прилагается исходный модуль программы SortMaxV.pas.

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

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

3. Использование процедур в Delphi

3.1. Теоретические аспекты использования процедур в Delphi

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

Как правило, подпрограмма имеет параметры. Различаются формальные и фактические параметры. Параметры, указываемые в объявлении функции, называются формальными. Параметры, указываемые при вызове процедуры, называются фактическими.

Параметры используют:

  • для передачи данных в подпрограмму;
  • для получения результата из подпрограммы.

В общем случае в качестве фактического параметра процедуры можно использовать выражение, тип которого должен совпадать с типом соответствующего формального параметра. [10]