Использование функций в структурном программировании

Автор работы: Пользователь скрыл имя, 08 Июля 2014 в 19:22, курсовая работа

Краткое описание

Цель: рассмотреть возможности реализации метода структурного программирования средствами языка программирования Паскаль.
Задачи:
• Изучить методы и типизацию структурного программирования;
• Использовать возможности реализации подпрограмм языка программирования Паскаль на примере функций и процедур;
• Рассмотреть технологию обработки информации с помощью различных функций.

Содержание

ВВЕДЕНИЕ 2
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА 4
ЗАКЛЮЧЕНИЕ 19
ЛИТЕРАТУРА 20

Вложенные файлы: 1 файл

KURSOVAYa.docx

— 129.09 Кб (Скачать файл)

{Осуществляет печать  функции 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

 

ЗАКЛЮЧЕНИЕ

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

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

Систематизированы и закреплены практические навыки использования ЭВМ, программного обеспечения, существующих средств обслуживания системных программистов, а также теоретические знания по основным разделам курса «Структурного программирования». Основное внимание уделено изучению современных методов защиты информации, способов проектирования приложений, структурному и системному программированию.

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

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

 

ЛИТЕРАТУРА

  1. Pascal [Электронный ресурс] Режим доступа: http://progopedia.ru/language/pascal/
  2. Абрамов В.Г. Трифонов Н.П. Трифонова Г.Н.Введение в язык Паскаль/[Текст]//В.Г. Абрамов Н.П. Трифонов Г.Н.Трифонова Учеб. пособие .- М.: Наука 1988.-320с.
  3. Бетзольд Ч. Программирование под Windows 95. В двух книгах: BHV /[Текст]//Ч.Бетзольд - Санкт - Петербург, 2010, silt.,443 с.
  4. Вильямс С. Линкер, Том Арчер. Программирование для Windows 98. Библия разработчика. /[Текст]// С.Вильямс Линкер, Том Арчер.Диалектика - Москва, 2009.: ил. - Парал. тит. англ. Уч. пос.,332 с.
  5. Джесс Либерти. С++ за 21 день./[Текст]// Джесс Либерти.Вильямс - Москва, 2007.: ил. - Парал. тит. англ.,816 с.
  6. Йенсен К., Вирт Н. Паскаль. Руководство для пользователя и описание языка./[Текст]// К.Йенсен, Н.Вирт— М.: Финансы и статистика, 1982. — С. 151.
  7. Львовский М.Б. Методическое пособие «BOOK» по информатике для 9-11 классов. [Электронный ресурс] М.Б.Львовский Режим доступа:http://markbook.chat.ru/book/
  8. Могилев А.В. Практикум по инф-ке. Учебное пособие для студентов уч. Заведений/[Текст]// А.В.Могилев, Н.И.Пак, Е.К.Хеннер, М.:Академия, 2001.-608с.
  9. Немнюгин С.А. Turbo Pascal: /[Текст]// С.А.Немнюгин Практикум-2 издание, пер. и доп. - СПб: Питер 2007,45 с.
  10. Перминов О. Н. Язык программирования Паскаль Справочник. — /[Текст]//О. Н.Перминов М.: Радио и связь, 1989. — С. 128. — ISBN 5-256-00311-9
  11. Пильщиков В.Н. Сборник упражнений по языку /[Текст]//В.Н.Пильщиков Паскаль: Учеб. пособие для вузов.-М.:Наука, 1989.-160с.
  12. Попов В.Б. Паскаль и Дельфи: самоучитель,/[Текст]// В.Б.Попов СПб: Питер 2005,119 с.
  13. Семашко Г.Л., Салтыков А.И. Программирование на языке Паскаль. /[Текст]//Г.Л.Семашко, А.И.Салтыков М.: Наука 1988.-128с.
  14. Форум программистов Pascal. Программирование с использованием языка Pascal (Паскаль). [Электронный ресурс] Режим доступа: http://www.cyberforum.ru/pascal/
  15. Чеснокова О.В. Алгоритмы и программы. Учимся программировать /[Текст]// О.В.Чеснокова СПб: Питер 2008, 43 с.
  16. Язык Pascal. Программирование для начинающих[Электронный ресурс] Режим доступа: http://pas1.ru/
  17. Язык программирования Паскаль(Turbo Pascal). Обучающие уроки [Электронный ресурс] Режим доступа: http://life-prog.ru/view_cat.php?cat=1

Размещено на Allbest.ru


Информация о работе Использование функций в структурном программировании