Помощь в написании студенческих работ
Антистрессовый сервис

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

Курсовая Купить готовую Узнать стоимостьмоей работы

В отдельном разделе уделено внимание очень интересному свойству функций как рекурсия. Рассмотрены два вида рекурсии прямая и косвенная. Определены достоинства и недостатки рекурсии. Безусловно, достоинством рекурсии является компактная запись, а недостатком опасность переполнения стека (программа завершается с ошибкой). В результате выполнения работы изучен большой объем информации, получены… Читать ещё >

Функции в языке. Создание меню (реферат, курсовая, диплом, контрольная)

Содержание

  • 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.

Показать весь текст

Список литературы

  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
Заполнить форму текущей работой
Купить готовую работу

ИЛИ