Автор работы: Пользователь скрыл имя, 08 Июля 2014 в 19:22, курсовая работа
Цель: рассмотреть возможности реализации метода структурного программирования средствами языка программирования Паскаль.
Задачи:
• Изучить методы и типизацию структурного программирования;
• Использовать возможности реализации подпрограмм языка программирования Паскаль на примере функций и процедур;
• Рассмотреть технологию обработки информации с помощью различных функций.
ВВЕДЕНИЕ 2
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА 4
ЗАКЛЮЧЕНИЕ 19
ЛИТЕРАТУРА 20
{Осуществляет печать функции F (XPos - горизонтальная
позиция начала вывода)}
const
np = 20; {Количество вычислений функций}
var
x:real;
I:integer;
begin{PrintFunc}
for i : = 1 to np do
begin
x := i * (2 * pi / np) ;
GotoXY (XPos, WhereY);
WriteLn (x:5:3, F(x):18:5)
End
end;{PrintFunc}
{------------------}
Function Sinl(x: Real): Real; far;
Begin
sinl := (sin(x) + 1) * exp(-x)
end;
{---------------------}
Function Cosl(x: Real): Real; far;
begin
cosl := (cos(x) + 1) * exp(-x)
end;
{----------------------}
begin{основная программа)
CIrScr;{Очищаем экран}
PrintFunc (1, sin1);
GotoXY (1,1);{Переводим курсор
в левый верхний угол}
PrintFunc (40, cos1)
end.
Обратите внимание: для установления правильных связей функций SIN1 и COS1 с Процедурой PRINTFUNC они должны компилироваться с расчетом на дальнюю модель памяти. Вот почему в программу вставлены стандартные директивыFAR сразу за заголовками функций.
В таком режиме должны компилироваться любые процедуры (функции), которые будут передаваться в качестве фактических параметров вызова.
Стандартные процедуры (функции) Паскаля не могут передаваться рассмотренным способом.
В программе могут быть объявлены переменные процедурных типов, например, так:
var
p1: Proс1;
fl, f2: Func2;
ар: array [1..N] of Proс1;
Переменным процедурных типов допускается присваивать в качестве значений имена соответствующих подпрограмм.
После такого присваивания имя переменной становится синонимом имени подпрограммы, например:
type
Proc = Procedure (n: word; var a: Byte) ;
var
ProcVar: Proc;
x, у: Byte;
Procedure Proc1(x: word; var y: Byte); far;
begin
if x > 255 then
y:=x mod 255
else
у := Byte(x)
end;
begin {Главная.программа}
ProcVar := Proc1;
for x := 150 to 180 do
begin
ProcVar (x + 100,у);
Write (у:8)
end
end.
Разумеется, такого рода присваивания допустимы и для параметров-функций, пример:
type
FuncType = Function (i : Integer) : Integer;
vаг
VarFunc : FuncType;
i : Integer;
Function MyFunc (count : Integer) : Integer; far;
Begin
end;{MyFunc}
begin{Основная программа}
i :=MyFunc(l);(Обычное использование результата функции}
VarFunc := MyFunc; {Присваивание переменной процедурного типа имени функции MyFunc}
end.
Отметим, что присваивание
VarFunc := MyFunc(l);
будет недопустимым, так как слева и справа от знака присваивания используются несовместимые типы: слева - процедурный тип, а справа - INTEGER; имя функции со списком фактических параметров MyFunc(1) трактуется Паскалем как обращение к значению функции, в то время как имя функции без списка параметров рассматривается как имя функции.
В отличие от стандартного Паскаля, в Паскале разрешается использовать в передаваемой процедуре (функции) любые типы параметров: параметры-значения, параметры-переменные, параметры-константы (в стандартном Паскале только параметры-значения).
Написать программу, которая выводит на экран изображение шахматной доски. Используйте желтый и коричневый цвета для закрашивания квадратов. Прорисовка каждой детали выполняется с задержкой 1000 мс. После полной прорисовки стирать изображение и повторно выводить узор до нажатия Esc.
Листинг программы
МодульGraph
uses crt,graph;
procedure Kletka (x1,y1,c: integer; d: integer);
begin
Setcolor (c);
rectangle (x1,y1,x1+d,y1+d);
Setfillstyle (1,c);
Bar (x1,y1,x1+d,y1+d);
end;
var gd,gm,x1,y1,x2,y2,d1, i,j: integer;
c: char;
begin
initgraph (gd,gm,'');
d1: =round ( (getmaxY-60) /8);
x1: =100; y1: =50;
outtextXY (getmaxX div 2-40, 20,'Vyhod-Esc');
repeat
for i: =0 to 7 do
begin
for j: =0 to 7 do
begin
if odd (i+j) then Kletka (x1+d1*i,y1+d1*j,14,d1)
else Kletka (x1+d1*i,y1+d1*j,6,d1);
delay (1000);
end;
end;
delay (1000);
setfillstyle (1,0);
bar (x1,y1,x1+d1*8,y1+d1*8);
if keypressed then c: =readkey;
if c=#27 then exit;
until c=#27;
end.
Результат решения задачи представлен на рисунке.
Рисунок 2. Результат работы программы в Pascal
В настоящее время в помощь структурному подходу к программированию появилось новое направление - объектное программирование, не отменяющее, а дополняющее принципы структурного подхода, позволяющее разрабатывать и модернизировать программный код с меньшими затратами времени, распределять задачу программирования между большим количеством программистов.
В ходе выполнения данного курсового проекта были разработаны программы на языке высокого уровня Паскаль, а также изучены возможности данного языка.
Систематизированы и закреплены практические навыки использования ЭВМ, программного обеспечения, существующих средств обслуживания системных программистов, а также теоретические знания по основным разделам курса «Структурного программирования». Основное внимание уделено изучению современных методов защиты информации, способов проектирования приложений, структурному и системному программированию.
При выполнении курсового проекта произведено знакомство с реферативными журналами и другими информационными источниками по структурному и системному программированию с целью анализа состояния решаемой задачи.
Получены практические навыки работы в среде Паскаль.
Размещено на Allbest.ru
Информация о работе Использование функций в структурном программировании