Структурное программирование – это концепция программирования, которая предусматривает:
Предварительный анализ сложной задачи или громоздкого алгоритма с целью разбивки на отдельные простые части. Последовательную детализацию всех частей и составление соответствующей программы. Использование трех базовых конструкций языка программирования (простой, ветвление, цикл) при составлении каждой программы. Написание программ, понятных для людей, которые будут с ними работать. Минимальное использование команд перехода (лучше вообще от них отказаться). Систему средств проверки правильности программы: логический анализ программы до ее выполнения, перекрестная проверка программ, коллективная работа над созданием сложный программ и т. п.Процедуры
Синтаксис объявления процедуры:
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 |






