Структурное программирование – это концепция программирования, которая предусматривает:

Предварительный анализ сложной задачи или громоздкого алгоритма с целью разбивки на отдельные простые части. Последовательную детализацию всех частей и составление соответствующей программы. Использование трех базовых конструкций языка программирования (простой, ветвление, цикл) при составлении каждой программы. Написание программ, понятных для людей, которые будут с ними работать. Минимальное использование команд перехода (лучше вообще от них отказаться). Систему средств проверки правильности программы: логический анализ программы до ее выполнения, перекрестная проверка программ, коллективная работа над созданием сложный программ и т. п.

Процедуры

Синтаксис объявления процедуры:

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

               РазделОписанийИОбъявленийПроцедуры;

               begin

                       РазделКомандПроцедуры;

               end;

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

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

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

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

НЕ нашли? Не то? Что вы ищете?

Пример

Решить задачу о количестве вызов на АТС, используя три процедуры: 1. для определения количества вызовов за каждую секунду (CountCalls), 2. для вычисления количества вызовов за первые 10 секунд (CountCalls10), 3. для определения наибольшего количества вызовов за некоторую секунду (MaxCountCalls). Количество вызовов в секунду – случайная величина в диапазоне от 10 до 20.

Код программы в среде Pascal

program ATC;

uses Crt;

type calls = array[1..10] of integer;

var y : calls;

       max, s : integer;

procedure CountCalls (var y: calls); {процедура CountCalls }

var i : integer;

begin

       for i:=1 to 10 do

               begin

               y[i] := random(11)+10;

               writeln(‘y(’, i, ‘ )=’, y[i]);

               end;

end;

procedure CountCalls10 (y: calls; var s:integer); {процедура CountCalls10}

var i : integer;

begin

       s :=0;

       for i:=1 to 10 do s:= s + y[i];

       writeln (‘Сумма вызовов S=’, s:3);

end;

procedure MaxCountCalls (y: calls; var max : integer); {процедура MaxCountCalls }

var i : integer;

begin

       max := y[1];

       for i:=2 to 10 do

               if max < y[i] then max := y[i];

       writeln(‘Максимальное количество вызовов за одну секунду равно ’, max:3);

end;

begin

       clrscr;

       randomize;

       CountCalls(y); {Вызываем процедуру CountCalls }

       CountCalls10(y, s); {Вызываем процедуру CountCalls10}

       MaxCountCalls(y, max); {Вызываем процедуру MaxCountCalls }

       readln;

end.

Внешний вид формы в Delphi

В конструкторе

При выполнении


В данном проекте использован объект StringGrid (закладка Additional), у которого были изменены следующие свойства:

Свойство

Описание

Значение

ColCount

Количество столбов

10

DefaultColWidth

Ширина столбцов по умолчанию

50

FixedCol

Номер фиксированного столбца

0

FixedRow

Номер фиксированной строки

0

RowCount

Количество строк

1



Код программы в среде Delphi

{полный код модуля}

unit uProcedure;

interface

uses

       Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

       Dialogs, StdCtrls, Grids;

type

       TForm1 = class(TForm)

               Label1: TLabel;

               Label2: TLabel;

               Label3: TLabel;

               StringGrid1: TStringGrid;

               procedure FormCreate(Sender: TObject);

               {Объявление процедур в разделе объявлений}

               procedure CountCalls;

               procedure CountCalls10();

               procedure MaxCountCalls();

       private

               { Private declarations }

       public

               { Public declarations }

       end;

var

       Form1: TForm1;

       {Объявление переменных, с которыми работают все процедуры, как глобальные}

       y : array[1..10] of integer;

       max, s : integer;

implementation

{$R *.dfm}

{Реализация процедур}

procedure TForm1.CountCalls(); {процедура CountCalls }

var i : integer;

begin

       for i:=1 to 10 do

               begin

               y[i] := random(11)+10;

               StringGrid1.Cells[i-1, 0] :=IntToStr(y[i]);

               end;

end;

procedure TForm1.CountCalls10 (); {процедура CountCalls10}

var i : integer;

begin

       s :=0;

       for i:=1 to 10 do s:= s + y[i];

       Label2.Caption:='Всего вызовов  - '+IntToStr(s);

end;

procedure TForm1.MaxCountCalls (); {процедура MaxCountCalls }

var i : integer;

begin

       max := y[1];

       for i:=2 to 10 do

               if max < y[i] then max := y[i];

       Label3.Caption:='Максимальное количество вызовов за одну секунду - '+IntToStr(max);

end;

procedure TForm1.FormCreate(Sender: TObject);

var i: integer;

begin

       CountCalls(); {Вызываем процедуру CountCalls }

       CountCalls10(); {Вызываем процедуру CountCalls10}

  MaxCountCalls(); {Вызываем процедуру MaxCountCalls }

end;

end..

Лабораторная работа №12

Используя подпрограммы построить массив Y с элементами yk=fi(k), где k = 1, 2,…,12. Выполнить для этого массива поиск данных, взятый из условия лабораторной работы № 6 (циклы, табулирование функции). Выполнить два варианта: один – в среде Pascal, другой – в среде Delphi.

Функции

В отличие от процедуры функция может возвращать в точку своего вызова только один результат простого стандартного типа.

Синтаксис объявления функции:

function ИмяПроцедуры ( СписокФормальныхПараметров): ТипФункции;

               РазделОписанийИОбъявленийФункции;

               begin

                       РазделКомандФункции;

                       ИмяФункции := Выражение;

               end;

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

Синтаксис вызова функции :

ИмяФункции (СписокФактическихПараметров);

Пример

Описать функцию tg(x) и вычислить значение выражения tg(x) + ctg(x) + tg2(x)

Код программы в среде Pascal

program MyFunction;

uses Crt;

var x, y: real;

function tg(x: real): real;

begin

       tg := sin(x)/cos(x);

end.

begin

       clrscr;

       writeln(‘Введите x’);

       readln (x);

       y := tg(x) + 1/tg(x) + sqr(tg(x));

       writeln(‘y=’, y:5:2);

       readln;

end.

Внешний вид формы в Delphi


В конструкторе

При выполнении



Код программы в среде Delphi

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17