Вам нужнакурсовая работа?
Интересует Программирование?
Оставьте заявку
на Курсовую работу
Получите бесплатную
консультацию по
написанию
Сделайте заказ и
скачайте
результат на сайте
1
2
3

" Функции в языке.Создание меню".

  • 48 страниц
  • 20 источников
  • Добавлена 11.06.2012
1 100 руб.2 200 руб.
  • Содержание
  • Часть работы
  • Список литературы
  • Вопросы/Ответы
ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ
1.Языки программирования высокого уровня
1.1.Основные понятия и определения
1.2.Особенности построения, достоинства и недостатки
1.3.Наиболее распространенные языки программирования
1.4.Обоснование выбора языка Паскаль
2.Функции в языке
2.1.Основные понятия и определения
2.2.Рекурсивные функции
2.3.Встроенные функции
2.4.Использование функций
3.Создание меню
3.1.Меню в текстовом режиме
3.2.Меню в графическом режиме
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
ПРИЛОЖЕНИЕ 1
ПРИЛОЖЕНИЕ 2

Фрагмент для ознакомления

По изучению литературы по программированию дано определение языкам программирования высокого уровня, определена общая классификация, выделены особенности построения, достоинства и недостатки, определены наиболее распространенные языки программирования. В завершении первой главы обоснован выбор языка программирования высокого уровня Паскаль для создания меню.
Обзор литературы, по тематике курсовой работы, позволил сформировать следующее заключение по использованию функций. Значительное увеличение сложности решаемых задач, приводит к увеличению размеров и сложности программ. С увеличением объема программы становиться трудно, разрабатывать и производить отладку громоздкого кода. Увеличение жизненного цикла программ приводит к тому, что с течением времени из-за изменений условий использования программ возникает необходимость в модификации кода, для повышения эффективности. Использование подпрограмм (функций) является первым шагом к повышению степени абстракции программы и ведет к упрощению ее структуры. Разделение программы на подпрограммы позволяет также избежать избыточности кода, поскольку подпрограмму записывают один раз, а в дальнейшем многократно можно ее вызывать. Разбиение на подпрограммы уменьшает время перекомпиляции и облегчает процесс отладки, скрывая детали за интерфейсом модуля. Упрощение структуры программы и облегчение написания и отладки вот главная цель использования подпрограмм (функций). В практике программирования такой подход принято называть структурным программирование.
При выполнении курсовой работы удалось рассмотреть лишь небольшую часть основных функций языка программирования Паскаль, определить основные виды функций. Рассмотрена возможность создания собственной функции. Определена структура объявления и вызова функции.
В отдельном разделе уделено внимание очень интересному свойству функций как рекурсия. Рассмотрены два вида рекурсии прямая и косвенная. Определены достоинства и недостатки рекурсии. Безусловно, достоинством рекурсии является компактная запись, а недостатком опасность переполнения стека (программа завершается с ошибкой).
В третьем параграфе курсовой работы подробно описан механизм создания меню.
Был рассмотрен механизм создания в текстовом режиме и в графическом режиме. Текстовой режим более простой в организации, но не дает красивых эффектов, интересного оформления интерфейса меню.
При описании процесса создания меню упор делался на использование в коде функций языка.
В основе алгоритма создания меню лежит принцип постоянного контроля нажатия клавиш на клавиатуре и чтения нажатых клавиш. Для выполнения этих функций используются две функции: KeyPressed и ReadKey.
Функция KeyPressed определяет факт нажатия на любую клавишу и не приостанавливает дальнейшее исполнение программы. Возвращает значение типа Boolean – True, если клавиша нажата клавиша (и тогда в буфере клавиатуры есть хотя бы один символ), False – если клавиша не нажата (и, соответственно, буфер клавиатуры пуст).
Функция ReadKey читает расширенный код нажатой клавиши без эхо повтора и приостанавливает исполнение программы до нажатия на любую клавишу, кроме Shift, Ctrl, Alt, CapsLock, NumLock, ScrollLock.
При каждом нажатии происходит вывод меню на экран с новыми параметрами. Здесь задействованы функции вывода и продемонстрированы функции в текстовом и графическом режиме.
Детальное изучение этой темы позволило в конце создать приложения в которых отражены возможности функций языка Паскаль по созданию удобного текстового и графического меню листинг программ приведен в приложении 1 и в приложении 2 к курсовой работе.
Для того чтобы создать графическое меню был изучен библиотечный модуль Graph со всеми входящими в него функциями. Полученные знания по модулю Graph были применены при написании собственного меню, использован основной функционал модуля.
Текстовое меню в разработанной программе позволяет перемещаться и открывать все пункты меню. Графическое меню в разработанной программе позволяет перемещаться с помощью графического курсора по всем пунктам меню и вызывать при выборе определенного пункта меню соответствующую процедуру построения геометрической фигуры или графика.
В результате выполнения работы изучен большой объем информации, получены знания по функциям в языке программирования, что позволит в дальнейшем применять эти знания на практике. А также получен теоретические знания и практический опыт по создания меню в приложениях. Выполнение работы было полезным и интересным.

СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
Андреева Т. А Программирование на языке Pascal. – М.: Бином. Лаборатория знаний, 2006. – 240 с.
Давыдов В.Г. Программирование и основы алгоритмизации: Учеб. Пособие. – М.: Высш. Шк., 2003. – 447 с.
Иванова Г.С. Технология программирования: Учебник для вузов. – М: МГТУ им. Н.Э. Баумана, 2007. - 320 с.
Климова Л. М. Pascal 7.0.Практическое программирование. Решение типовых задач. Изд. 4-е,доп. М: КУДИЦ-ОБРАЗ, 2003. - 528 с.
Культин Н. Turbo Pascal в задачах и примерах. - СПб.: БХВ-Петербург, 2006. - 256 с.
Малыхина М. П. Программирование на языке высокого уровня Turbo Pascal. - СПб.: БХВ-Петербург, 2006. - 544 с.
Моргун А. Н. Программирование на языке Паскаль (Pascal). Основы обработки структур данных. — М.: Диалектика, 2005. - 576 с.
Немнюгин С.А. Turbo Pascal. – СПб.: Питер, 2000. - 496 с.
Павловская Т.А. Паскаль. Программирование на языке высокого уровня: Учебник для вузов. – СПб.: Питер, 2007. - 393 с.
Попов В.Б. Паскаль и Дельфи. Самоучитель. – СПб.: Питер, 2004. - 544 с.
Рапаков Г. Г. Программирование на языке Pascal. - СПб.: БХВ-Петербург, 2004. - 480 с.
Сухарев М. Turbo Pascal 7.0. Теория и практика программирования. – СПб.: Наука и техника, 2006. - 544 с.
Фаронов В.В. Delphi: Программирование на языке высокого уровня: Учебник для вузов. - СПб.: Питер, 2007. - 640 с.
Фаронов В.В. Turbo Pascal. - СПб.: БХВ-Петербург, 2004. - 1056 с.
Федоренко Ю. Алгоритмы и программы на Turbo Pascal. Учебный курс. . – СПб.: Питер, 2001. - 240 с.
Домнин Ф. А. Язык программирования Паскаль(Turbo Pascal). Обучающие уроки – 2009. – 28 декабря [Электронный ресурс]. URL: http://www.life-prog.ru/view_zam.php?id=24 (дата обращения: 11.03.2012).
Библиотека учебных материалов. Расширенные коды клавиш. – 2010. – 10 ноября [Электронный ресурс]. URL: http://primat.at.ua/publ/6-1-0-481 (дата обращения: 11.03.2012).
Лекции по Turbo Pascal. – 2010. – 28 марта [Электронный ресурс]. URL: http://codingrus.ru/readarticle.php?article_id=2239
Васильев Н.А. Краткая справка по языку программирования Turbo Pascal. – 2004. [Электронный ресурс]. URL: http://forprogrammer.narod.ru/pascal/index.htm
Язык Паскаль. Процедуры и функции. – 2011. – 2 июля [Электронный ресурс]. URL:http://pas1.ru/functionprocedure
ПРИЛОЖЕНИЕ 1
Приложение с меню созданным в текстовом режиме
Uses CRT;{подключение модуля CRT }
Const MaxMenuItem = 4;{количество пунктов меню}
Var Ret : Byte;

Function MainMenu(R_Select:Byte):Byte;
Type TMenu = record
X,Y : Byte;
S : String[20];
End;

Var Menu : Array [0..MaxMenuItem] Of TMenu;
Run : Boolean; {выбран пункт меню}
Sel : Byte;
TC, TB : Byte; {цвет}

{ вывод на экран названия пункта меню }
Procedure DrawMenu;
Var I : Byte;
Begin
For I := 0 To MaxMenuItem Do {цикл по всем пунктам меню}
Begin
GotoXY(Menu[I].X, Menu[I].Y);{ Перемещает курсор в заданную позицию экрана }
Write(Menu[I].S);{вывод названия пункта меню}
End;
End;
{процедура визуализации выделения пункта меню}
Procedure Select (I:Byte);
Begin
TextBackground(TC); TextColor(TB);
GotoXY(Menu[I].X, Menu[I].Y); {перемещение курсора}
Write(Menu[I].S); {вывод названия пункта меню}
TextBackground(TB); TextColor(TC);
End;
{процедура визуализации снятия выделения пункта меню}
Procedure DeSelect (I:Byte);
Begin
TextBackground(TB); TextColor(TC);{изменение цвета выделения и шрифта текста}
GotoXY(Menu[I].X, Menu[I].Y);{перемещение курсора}
Write(Menu[I].S);{вывод названия пункта меню}
TextBackground(TB); TextColor(TC);
End;
Begin
{определение названия и координат пунктов меню}
Menu[0].S := 'item 0'; Menu[0].X := 20; Menu[0].Y := 5;
Menu[1].S := 'item 1'; Menu[1].X := 20; Menu[1].Y := 6;
Menu[2].S := 'item 2'; Menu[2].X := 20; Menu[2].Y := 7;
Menu[3].S := 'item 3'; Menu[3].X := 20; Menu[3].Y := 8;
Menu[4].S := ' exit '; Menu[4].X := 20; Menu[4].Y := 9;

ClrScr;{очистка экрана}
TC := TextAttr mod 16;
TB := TextAttr div 16;

DrawMenu;
Sel := R_Select;
Select(Sel);

Run := False;
While Not Run Do Begin
Case ReadKey Of
#13 : Run := True;{нажата Enter}
#27 : Begin{нажата Esc}
Run := True;
Sel := MaxMenuItem;
End;

#0 : Case ReadKey Of
#72 : Begin{нажата клавиша стрелка вверх}
DeSelect(Sel); {снимается выделение с пункта меню}
If Sel = 0{если первый пункт меню}
Then Sel := MaxMenuItem {присваиваем порядковый номер последнего}
Else Sel := Sel - 1; {если не первый порядковый номер уменьшаем на 1}
Select(Sel);{выделяем пункт меню}
End;
#80 : Begin{нажата клавиша стрелка вниз}
DeSelect(Sel);{снимается выделение с пункта меню}
If Sel = MaxMenuItem{проверка последний пункт меню или нет}
Then Sel := 0 {если последний присваиваем порядковый номер первого}
Else Sel := Sel + 1; {если не последний увеличиваем на 1}
Select(Sel);{выделяем пункт меню}
End;
End;
End;
End;
MainMenu := Sel;
TextBackground(TB);
TextColor(TC);

ClrScr;{очистка экрана}
End;

Begin
ClrScr; {очистка экрана}
TextBackground(Blue);
TextColor(LightGreen);

Ret := 0;
Repeat
Ret := MainMenu(Ret);
Case Ret Of
0: Begin
WriteLn('Выбран пункт: ', Ret);
WriteLn('... нажми клавишу ...');
ReadLn;
End;
1: Begin
WriteLn(' Выбран пункт: ', Ret);
WriteLn('... нажми клавишу ...');
ReadLn;
End;
2: Begin
WriteLn(' Выбран пункт: ', Ret);
WriteLn('... нажми клавишу ...');
ReadLn;
End;
3: Begin
WriteLn(' Выбран пункт: ', Ret);
WriteLn('... нажми клавишу ...');
ReadLn;
End;
Else Begin
WriteLn('Выход из программы');
WriteLn('... нажми клавишу ...');
ReadLn;
End;
End; {case Ret}
Until Ret = MaxMenuItem;
TextBackground(Black);
TextColor(LightGray);
ClrScr;

End.
ПРИЛОЖЕНИЕ 2
Приложение с меню созданным в графическом режиме
uses crt, graph;
type Point=record{для центра курсора}
x,y,x1,y1:integer;
end;
procedure Clear;
{очистка экрана, за исключением вертикальной полосы, где меню}
begin
Setcolor(0);
rectangle(95,1,640,480);
setfillstyle(1,0);
Bar(95,1,640,480);
end;
procedure Krug;
{рисование окружности}
begin
Setcolor(5);
Circle(200,200,100);
end;
procedure Kvadrat;{рисование квадрата}
begin
Setcolor(9);
rectangle(105,15,620,460);
end;
procedure MyBar;{рисование параллепипеда}
begin
Setcolor(10);
rectangle(195,200,340,380);
setfillstyle(1,10);
Bar3D(195,200,340,380,50,topon);
end;

procedure Grafik;{рисование графика функции}
var xe,ye,xen,xek,yen, yek: integer;
xs,ys,kdx,kdy,kt, i: integer;
x2,y2,xn,yn,xk,yk,mx,my,hx,hdx, hdy: real;
x,y:integer;
xst, yst: string;
begin
xn:=0;
xk:=30;
yn:=-1.5;
yk:=1.5;
xen:=150;
xek:=630;
yen:=400;
yek:=50;
hdx:=pi;
hdy:=0.5;
kdx := round ((xk-xn)/hdx+1);
kdy := round ((yk-yn)/hdy+1);
rectangle (xen,yek,xek,yen);
mx:=(xk-xn)/(xek-xen);
my:=(yk-yn)/(yen-yek);
xs := round (xen+(0-xn)/mx);
ys := round (yen-(0-yn)/my);
setcolor (14);
line (xen,ys,xek,ys);
line (xs,yen,xs,yek);
x2:=xn;
{создание рисок и подписей оси х}
for i:=1 to kdx do
begin
xe := round (xen+(x2-xn)/mx);
str (x2:5:2,xst);
line (xe,ys,xe,ys+5);
outtextxy (xe-20,ys+10,xst);
x2:=x2+hdx;
end;
y2:=yn;
{создание рисок и подписей оси y}
for i:=1 to kdy do
begin
ye := round (yen-(y2-yn)/my);
str (y2:5:2,yst);
line (xen,ye,xen-5,ye);
outtextxy (xen-50,ye-4,yst);
y2:=y2+hdy;
end;
x2:=xn;
hx:=mx;
kt:=xek-xen+1;
Moveto (xe,ye);
for i:=1 to kt do
begin
y2 := sin(x2);
xe := round (xen+(x2-xn)/mx);
ye := round (yen-(y2-yn)/my);
Lineto (xe,ye);
x2:=x2+hx;
end;
end;
procedure menyu;
{создание кнопок, курсора, его перемещение и условия выполнения процедур}
var x,y,x1,y1:integer;
i,c:byte;
a:Point; {центр курсора}
move:boolean;
k:char;
begin

{создание кнопок }
x:=1;y:=10;{верхний левый угол первой кнопки}
for i:=1 to 5 do
begin
y:=10+20*(i-1);
Setcolor(i+1);
Rectangle(x,y,x+90,y+20);
Setfillstyle(1,i+1);
Bar(x,y,x+90,y+20);
end;

{надписи на кнопках}
Setcolor(0);
outtextxy(5,18,'Krug');
outtextxy(5,38,'Kvadrat');
outtextxy(5,58,'Bar3D');
outtextxy(5,78,'Grafik');
outtextxy(5,98,'Clear');

{создание и движение курсора}
a.x:=80;a.y:=118;{начало}
move:=true;
repeat
if keypressed then
begin
k:=readkey;
if k=#80 then
begin
a.y1:=a.y;
a.x1:=a.x;
a.y:=a.y+20;
move:=true;
end;
if k=#72 then
begin
a.y1:=a.y;
a.x1:=a.x;
a.y:=a.y-20;
move:=true;
end;

if (k=#32)and (a.y=18) then Krug; {knoka 1 + probel}
if (k=#32)and (a.y=38) then Kvadrat;
if (k=#32)and (a.y=58) then MyBar;
if (k=#32)and (a.y=78) then Grafik;
if (k=#32)and (a.y=98) then Clear;
end;
if move then
begin
if a.y1=18 then c:=2
else if a.y1=38 then c:=3
else if a.y1=58 then c:=4
else if a.y1=78 then c:=5
else if a.y1=98 then c:=6
else c:=0;
Setcolor(c);
Circle(a.x1,a.y1,5);
Setfillstyle(1,c);
Fillellipse(a.x1,a.y1,5,5);
Setcolor(12);
Circle(a.x,a.y,5);
Setfillstyle(1,12);
Fillellipse(a.x,a.y,5,5);
move:=false;
end;
until k=#27;
end;

var grDriver, grMode, ErrCode: integer;
begin
grDriver := Detect;
InitGraph(grDriver, grMode, '');
ErrCode := GraphResult;
if ErrCode <> grOk then begin
WriteLn('Graphics error: ', GraphErrorMsg(ErrCode));
WriteLn('Press "Enter" key to halt:');
ReadLn; Halt(1)
end;
menyu;
readln;
closegraph;
end.













2

СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
1.Андреева Т. А Программирование на языке Pascal. – М.: Бином. Лаборатория знаний, 2006. – 240 с.
2.Давыдов В.Г. Программирование и основы алгоритмизации: Учеб. Пособие. – М.: Высш. Шк., 2003. – 447 с.
3.Иванова Г.С. Технология программирования: Учебник для вузов. – М: МГТУ им. Н.Э. Баумана, 2007. - 320 с.
4.Климова Л. М. Pascal 7.0.Практическое программирование. Решение типовых задач. Изд. 4-е,доп. М: КУДИЦ-ОБРАЗ, 2003. - 528 с.
5.Культин Н. Turbo Pascal в задачах и примерах. - СПб.: БХВ-Петербург, 2006. - 256 с.
6.Малыхина М. П. Программирование на языке высокого уровня Turbo Pascal. - СПб.: БХВ-Петербург, 2006. - 544 с.
7.Моргун А. Н. Программирование на языке Паскаль (Pascal). Основы обработки структур данных. — М.: Диалектика, 2005. - 576 с.
8.Немнюгин С.А. Turbo Pascal. – СПб.: Питер, 2000. - 496 с.
9.Павловская Т.А. Паскаль. Программирование на языке высокого уровня: Учебник для вузов. – СПб.: Питер, 2007. - 393 с.
10.Попов В.Б. Паскаль и Дельфи. Самоучитель. – СПб.: Питер, 2004. - 544 с.
11.Рапаков Г. Г. Программирование на языке Pascal. - СПб.: БХВ-Петербург, 2004. - 480 с.
12.Сухарев М. Turbo Pascal 7.0. Теория и практика программирования. – СПб.: Наука и техника, 2006. - 544 с.
13.Фаронов В.В. Delphi: Программирование на языке высокого уровня: Учебник для вузов. - СПб.: Питер, 2007. - 640 с.
14.Фаронов В.В. Turbo Pascal. - СПб.: БХВ-Петербург, 2004. - 1056 с.
15.Федоренко Ю. Алгоритмы и программы на Turbo Pascal. Учебный курс. . – СПб.: Питер, 2001. - 240 с.
16.Домнин Ф. А. Язык программирования Паскаль(Turbo Pascal). Обучающие уроки – 2009. – 28 декабря [Электронный ресурс]. URL: http://www.life-prog.ru/view_zam.php?id=24 (дата обращения: 11.03.2012).
17.Библиотека учебных материалов. Расширенные коды клавиш. – 2010. – 10 ноября [Электронный ресурс]. URL: http://primat.at.ua/publ/6-1-0-481 (дата обращения: 11.03.2012).
18. Лекции по Turbo Pascal. – 2010. – 28 марта [Электронный ресурс]. URL: http://codingrus.ru/readarticle.php?article_id=2239
19.Васильев Н.А. Краткая справка по языку программирования Turbo Pascal. – 2004. [Электронный ресурс]. URL: http://forprogrammer.narod.ru/pascal/index.htm
20.Язык Паскаль. Процедуры и функции. – 2011. – 2 июля [Электронный ресурс]. URL:http://pas1.ru/functionprocedure

Процедуры и функции в языке Паскаль. Сфера действия описаний

Процедуры и функции в языке Паскаль. Сфера действия описаний

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

Структура процедуры или функции очень похожа на структуру главной процедуры, она также содержит раздел описаний и раздел операторов; раздел операторов начинается с BEGIN и заканчивается END; (но не КОНЕЦ. - в качестве основной процедуры). Единственным новым оператором для вас будет оператор заголовка, с которого начинается любая процедура и функция. Все процедуры и функции, написанные в разделе описаний любых других процедур или функций, в том числе и основной процедуры. Оператор заголовка процедуры имеет вид:

PROCEDURE имя ( список параметров ) ;

Здесь имя - имя процедуры (любой идентификатор), список параметров может отсутствовать, но если он есть, записывается в скобках после имени процедуры и имеет вид :

[VAR] название ... название : тип ;

...........................

[VAR] название ... название : тип

Здесь имя - имя параметров, каждый параметр может быть использован внутри процедуры в качестве переменной данного типа. Тип - имя типа, но не является описание пользовательского типа; скажем, описание параметра в виде x:1..5 неправильно, но, если выше описанная этого типа: TYPE MyType=1..5, то параметр может быть описан в виде x:MyType. Ключевое слово VAR перед описать параметры в этом случае означает, что все настройки ";" или ")" - параметры-переменные; если VAR отсутствует, параметры являются параметрами-значениями. Смысл этих понятий, мы рассмотрим позже.

Процедуры могут вызывать другие процедуры и функции, с помощью уже известного вам оператора вызова:

имя ( список аргументов );

Список аргументов задается в и только в том случае, когда в заголовке процедуры задан список параметров. Аргументы в списке разделяются запятыми и могут быть любые выражения, если соответствующий параметр является параметром-значением, или только имена переменных, если соответствующий параметр является параметром-переменной. Количество аргументов всегда должно совпадать с количеством параметров, и тип аргумента должен быть таким же, как тип параметра. При вызове процедуры значения соответствующих аргументов, переданных функции, и, таким образом, процедура получает информацию от вызывающей процедуры или функции. Написать программу, использующую процедуру, которая будет легко отобразить значение переменной :

Узнать стоимость работы