Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

КЛАССИФИКАЦИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ (язык программирование бортовой компьютер)

Содержание:

ВВЕДЕНИЕ

язык программирование бортовой компьютер

Сейчас практически в каждой сфере деятельности человека имеют место языки программирования высокого уровня - Фортран, Алгол, Си, С++, Java, Паскаль и т.д. Для того, чтобы суметь качественно отличить один от другого, быть способным работать с тем или иным языком, необходимо знать классификацию языков программирования высокого уровня. Это и определяет тему данной курсовой работы.

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

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

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

Ввиду этого исследование данного аспекта программирования является крайне актуальным при написании современных программ на языках высокого уровня.

Итак, целью курсовой работы является раскрытие теоретических аспектов рассматриваемой темы, а также приобретение практических навыков применения процедур и функций на примере реализации конкретной задачи.

Для реализации данного цели необходимо выполнить ряд задач, а именно:

1) исследовать специфику и осуществить квалификацию языков программирования высокого уровня;

2) обосновать выбор языка Паскаль для последующего исследования;

3) изучить ключевые принципы применения процедур, функции и подпрограмм, а также разработки пользовательского меню средствами языка высокого уровня Паскаль;

4) реализовать полнофункциональную программу, дающую возможность отразить изученные теоретические вопросы на практике.

Структура курсовой работы состоит из введения, трех глав, заключения и списка использованных источников.

Глава 1. Обзор и анализ особенностей применения языков программирования

Языки программирования высокого уровня применяют в аппаратно-независимых системах программирования.

Языки программирования высокого уровня подразделяют на [3]:

- процедурно-ориентированные;

- проблемно-ориентированные;

- объектно-ориентированные.

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

1.1 Процедурно-ориентированные языки программирования

К первому классу языков, применяющихся для записи процедур или алгоритмов обработки информации, относят:

а) язык Фортран (Fortran). Представляет собой один из первых языков программирования высокого уровня. К его ключевым преимуществам можно отнести наличие существенного количества математических библиотек, поддержка работы с целыми, вещественными и комплексными числами высокой точности [3,4], интегрированных инструментов обработки массивов.

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

б) язык Бейсик (Basic). Создан в 1964 г. в качестве языка для обучения программированию [12].

Ключевыми преимуществами Бейсика являются: простой синтаксис, дающий возможность оперативно освоить данный язык программирования, легкость реализации графического интерфейса, опция применения WinAPI функций, что существенно увеличивает возможности языка.

Одним из ключевых недостатков Бейсика является то, что он поддерживает лишь операционные системы семейства Windows, DOS и Mac OS X, что существенно ограничивает область его использования. Вместе с тем недостатком является невысокая скорость работы и отсутствие механизма наследования реализации объектов [6].

в) язык Си (С) появился в 1969—1973 годах как язык системного программирования и изначально разрабатывался для написания ОС UNIX [4,12]. В 1980-е гг. язык С был дополнен инструментами объектно-ориентированного программирования и на базе него был создан язык C++.

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

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

г) язык Паскаль (Pascal). Был создан математиком Н. Виртом непосредственно для обучения программированию. Но затем Паскаль стал интенсивно использоваться для разработки программных средств в профессиональном программировании.

Самая первая версия была разработана в 1968 году профессором кафедры вычислительной техники Швейцарского федерального института технологии Никласом Виртом [3]. Ключевой целью при разработке нового языка является его простота с сохранением преимуществ уже существующих языков высокого уровня программирования.

Популярность Паскаля стала такой высокой, что уже к 1980 году было около 80 его трансляторов. В начале 80-х годов Паскаль еще более укрепил собственные позиции после разработки трансляторов Turbo-Pascal для персональных компьютеров. С данного времени язык смело вышел за границы узкого применения программистами-профессионалами. Он начал эксплуатироваться как рабочий инструмент пользователей и как средство обучения языкам программирования.

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

В отличие от языка С (С++) при применении Паскаль минимизированы вероятные синтаксические неоднозначности [1,2], синтаксис языка интуитивно понятен и доступен, т.к. язык изначально создавался для обучения студентов программированию.

К недостаткам первоначально разработанного компилятора можно бы отнести ряд ограничений: невозможность передачи функциям массивов переменной длины, ограниченная библиотека ввода-вывода, отсутствие средств для подключения функций написанных на других языках и раздельной компиляции [7,9].

В настоящее время Паскаль все так же является интенсивно прогрессирующим языком программирования высокого уровня. Современные версии компилятора устранили немало вышеуказанных недостатков.

1.2 Проблемно-ориентированные языки программирования

Ключевым преимуществом данных языков программирования является минимизация трудозатрат программиста при решении задач принадлежащих определенному четко выделяемому классу [3]. К проблемно-ориентированным относят следующие языки программирования:

а) язык Лисп. Считается вторым после Фортрана старейшим высокоуровневым языком программирования [3,16]. Лисп чаще всего используется при создании экспертных систем и систем аналитических вычислений. Есть современные версии данного языка, интенсивно использующиеся при создании новейших web-технологий. Также модификации Лисп применяютс в роли интегрированных языков программирования в САПР. Примером является AutoLISP – язык для разработки надстроек в продуктах компании AutoDesk.

б) язык Пролог. Применяется для реализации систем искусственного интеллекта, а также и интеллектуальных систем баз данных [3].

Написание программ на данном языке значительно отличается от применения прочих языков программирования. Программа на Прологе не является реализацией какого-либо алгоритма, а представляет собой запись на языке формальной логики [16]. Следовательно, Пролог принадлежит к описательным языкам программирования.

Итак, областью использования данного языка является решение логических задач. Для создания вычислительных, графических задач, реализации пользовательского интерфейса данный язык не используется.

1.3 Объектно-ориентированные языки программирования

Множество объектно-ориентированных языков являются версиями процедурно-ориентированных и проблемно-ориентированных.

Сейчас чаще всего применяются и развиваются следующие среды программирования [3,4]:

а) Delphi (Lazarus - некоммерческая версия для ОС семейства Linux) – основана на Object Pascal;

б) C++, С# (~ C);

в) Visual Basic (~ Basic);

г) Visual Fortran (~ Fortran);

д) Prolog++ (~ Prolog).

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

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

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

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

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

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

В алгоритмическом языке Паскаль существует два вида подпрограмм – процедуры и функции.

Составляя программу, в особенности довольно большую, даже не задумываясь, автор разделяет ее на отдельные блоки, реализующие определенную функцию. Соединяя их (компонуя), в конечном итоге, добиваются решения поставленной задачи. Подобные блоки программы не обязательно имеют завершенный вид. Они именуются процедурами [1]. В отличие от процедур, функции имеют завершенный вид [7].

2.1 Специфика подпрограммы-процедуры

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

Форма записи процедуры: PROCEDURE имя ;

После объявления процедуры идет, как и в программе, объявление переменных процедуры и между Begin ⎯ End ; записывается ее программа (порядок выполнения операторов). Программа с использованием процедур имеет следующую структуру:

Program имя программы ;

Label .... ; Определение меток, констант,

Const ..... ; массивов и других переменных

: программы

Var ..... ;

Procedure имя ; Определение процедур и функций

Var ...... ; пользователя

Begin

:

End ;

Procedure имя ;

Var ...... ;

Begin

:

End ;

:

Procedure имя ;

Var ...... ;

Begin

:

:

End ;

BEGIN Основная программа, где

: процедуры и функции могут вызы-

: ваться сколь угодно раз

:

END.

Отметим лишь одну специфическую черту [13] - в процедуре после End ставится точка с запятой. Принято считать, что если большая часть программы размещается в процедурах и функциях, тем рациональнее она составлена.

2.2 Специфика подпрограммы-функции

Подпрограмма-функция необходима для расчета определенного параметра [10]. Результат ее работы возвращается в виде значения данной функции и способен применяться в выражениях. У данной подпрограммы два ключевых отличия от процедуры.

Первое отличие – в заголовке [7]: через двоеточие указывается тип возвращаемого параметра. Второе отличие состоит в том, что в теле функции хотя бы один раз имени функции должно быть присвоено значение. Для вызова функции необходимо в выражении, где используется ее значение, указать имя функции.

В качестве примера рассмотрим функцию, возвращающую наибольшее значение из двух чисел.

uses crt;var a,b:byte;function max(a,b:byte):byte; {a,b – формальные параметры функции}begin {начало функции} if a>b then max:=a else max:=b;

end; {конец функции}

{ основная программа}

begin

clrscr;

readln(a,b);

write(max(a,b)); {фактические параметры a,b передаются функции max}

readkey

end.

С использованием процедур и функций появляется вопрос применения переменных. Понятие места работы данных переменных можно пояснить на простом примере [10]. Есть некоторый внутригородской транспорт и междугородний. Естественно, что внутригородской не работает на маршрутах между городами, т.е. его применение ограничено (локализовано). Это является прямой аналогией работы переменной внутри процедуры (работа транспорта внутри города) ⎯ подобные переменные именуются локальными. Но междугородний транспорт может перемещаться как между городами, так и внутри любого города переменная работает не только между процедурами, но и внутри каждой из них. Такие переменые именуются глобальными [10].

Если программа включает множество процедур и переменных, то может образоваться ситуация, когда глобальные и локальные идентификаторы имеют одинаковые имена. Для компилятора это не является важным. Дело в том, что в подобном случае [18,20] с входом в процедуру запоминается значение глобальной переменной, а при выходе из нее ⎯ возвращается первоначальное значение. Из этого следует, что Паскаль позволяет нескольким программистам писать одну программу, не заботясь об опасности перепутать идентификаторы [7,9].

Всякая большая программа, прежде всего, собирается из процедур и функций. В свою очередь процедуры и функции аккумулируются в большие блоки, именующиеся программными модулями. Каждый программный модуль транслируется отдельно [10], объединяясь в реализуемую программу. Для подключения модуля к программе нужно упомянуть его имя в предложении:

USES имя модуля (модулей - через запятые) ;

Объявление модулей должно записываться в программе второй строкой после имени программы. При объявленном модуле процедуры и функции, интегрированные в данный модуль, вписываются в программу только своим именем, без раскрытия их программного содержания. Это значительно сокращает текстовую часть основной программы [8]. Ниже, в краткой форме, приведено содержание и назначение некоторых программных модулей [1].

Модуль SYSTEM: есть средства ввода - вывода, процедуры и функции для работы со строками, вещественными числами и динамической памятью. Данный модуль нужен так часто, что он автоматически подсоединяется к программе, без предварительного его объявления.

Модуль CRT: здесь есть средства управления дисплеем в текстовом режиме, клавиатурой и динамиком. С помощью его процедур можно изменять цвет, выводить данные в любом месте экрана, создавать окна, обрабатывать расширенные коды клавиш и воспроизводить звуки различной тональности.

Модуль DOS: обеспечивает доступ к возможностям операционной системы MS DOS - обработка даты и времени, информация о состоянии дисков, вызов программы или установить программу резидентной и т.д.

Модуль GRAPH: включает процедуры, дающие возможность воспроизводить точки, отрезки, многоугольники, окружности и многое другое в различной цветовой гамме и начертании, вывода текста в графическом режиме.

Ниже приведена простая программа использования модулей:

Program Pascal ;

Uses Crt, Graph ;

Var D,M : Integer ;

Key : Char ;

BEGIN

D := Detect ;

InitGraph(D, M, '') ;

SetTextStyle(0,0,10) ;

SetColor(4) ;

OutTextXY(80,150,'Turbo') ;

OutTextXY(60,250,'Pascal') ;

Key:=ReadKey;

CloseGraph;

END.

Результатом работы данной программы является написание по центру экрана дисплея, на темном фоне, красными буквами: Turbo Pascal.

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

3. Практическая реализация программы «Бортовой компьютер»

3.1 Постановка задачи и интерфейс программы

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

Данная программа эмулирует действия бортового компьютера. В качестве исходных данных принимает значения расстояния до «Финиша», желаемого время достижения «Финиша» и интервал вывода сообщений бортового компьютера.

Скорость на заданном интервале генерируется случайным образом. Отклонение составляет +- 1-цу от скорости, рекомендуемой в начале пути. Работа программы осуществляется в режиме «онлайн».

Через определенный временной промежуток программа выводит информацию о времени с момента старта, пройденном пути, средней скорости на предыдущем отрезке, средней скорости к данному моменту, времени достижения «Финиша». Программа также рекомендует скорость, которую следует развивать, чтобы успеть к «Финишу» к сроку. По истечении времени на экран выводится сообщение о том, успел ли автомобиль достигнуть «Финиша» в желаемое время.

Программа выполнена в среде Turbo Pascal 7.1.

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

Рис.1. Меню пользователя программы

Рис.2. Ввод исходных данных

После выбора пункта меню «Работа программы» издается звуковой сигнал и запускается таймер. На экран выводится время старта – текущее системное время, используемые условные обозначения, а также скорость, рекомендуемая в начале пути. С определенным временным интервалом на экран выводятся расчетные характеристики.

Рис.3. Окно программы в режиме эмуляции работы

бортового компьютера

После истечения времени необходимого, чтобы достичь финиша, на экран выводится сообщение, успела ли машина его достичь. Т.к. скорость машины в установленном диапазоне изменяется случайным образом, при каждом запуске получается разный результат.

После нажатия любой клавиши на экране вновь появляется главное меню. При выборе пункта меню «Справка» (рис. 4) запускается соответствующая процедура, при помощи которой на экран выводится содержимое файла HLP.TXT. Этот файл должен размещаться в том же каталоге, что и исполнимый файл программы. При этом, если это необходимо, содержимое этого файла может быть легко отредактировано в текстовом редакторе без изменения исходного кода программы.

Пункт меню «Exit» дает возможность завершить работу программы.

Таким образом, использование меню пользователя, дающее возможность при помощи курсора легко выбрать нужное действие, существенно упрощает работу пользователя с программой.

Рис.4. Окно справки о работе программы

3.2 Программная реализация

Рассмотрим программную реализацию разработанной программы. Структура и назначение основных блоков соответствует материалу, который был исследован в теоретической части курсовой работы.

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

uses Crt,dos; { подключаются модули, их назначение описано в теоретической части курсовой работы}

const {определяются константы, необходимые для реализации пользовательского меню}

NORM=$17; { цвет невыделенного пункта }

SEL=$70; { цвет выделенного пункта } N=4;

var menu:array[1..N] of string[50];{ названия пунктов меню } punkt:integer; { номер выделенного пункта }

ch:char; { введенный символ }

i,j,x,y,col:integer; { координаты первой строки меню }

tin,tf,ss:integer; {описываются глобальные переменные, здесь tin - интервал вывода сообщений на экран, tf - желаемое время финиша, ss - расстояние до финиша,

f,f1,f2:boolean; {логические переменные, необходимые для контроля правильности ввода данных пользователем}

В следующем блоке реализуется определение процедур и функций пользователя.

В разработанной программе применялись следующие подпрограммы.

Procedure MenuToScr;{ вывод меню на экран }

begin

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

WRITELN;

writeln(' ГЛАВНОЕ МЕНЮ');

WRITELN;

WRITELN;

for i:=1 to N do {перебираются все пункты меню в цикле}

begin

GoToXY(x,y+i-1); {перевод курсора в нужную позицию}

write(menu[i]); {вывод пункта меню, содержащегося в массиве констант}

end;

TextAttr:=SEL; {изменение атрибутов текста - выделенный}

GoToXY(x,y+punkt-1);

write(menu[punkt]);{ выделяется строка меню }

TextAttr:=NORM; {изменение атрибутов текста - невыделенный}

end;

Следующая описываемая процедура отвечает за ввод данных пользователем.

procedure punkt1; {процедура ввода данных – соответствует первому пункту меню}

begin

CLRSCR;

f:=false;f1:=false;f2:=false; {признак того, что данные еще не введены}

textcolor(13); {изменяется цвет текста}

writeln;

WRITELN(' ВВЕДИТЕ ИСХОДНЫЕ ДАННЫЕ ');

writeln;

textcolor(14);

writeln;

repeat {заголовок цикла ввода значений }

if f=false {если первый параметр еще не введен}

then begin Write(' Введите расстояние до финиша -> ');

{$I-} {директива, выключающая автоматическую генерацию объектного кода – нужна для избежания ошибки ввода значения}

ReadLn(ss);

{$I+}{директива, включающая автоматическую генерацию объектного кода }

if (ioresult<>0) { если возникла ошибка – в данном случае, введено некорректное значение}

or (ss<1) then {если введенное значение меньше допустимого}

begin

textcolor(4);

writeln('Ошибка! Расстояние задано неверно!');

textcolor(14);

continue; {возвращение в начало цикла}

end

else f:=true; {признак того, что значение введено корректно}

end;

{Таким же образом реализован ввод двух остальных параметров}

if f1=false then

begin write(' Введите желаемое время финиша (секунды) -> ');

{$I-}

ReadLn(tf);

{$I+}

if (ioresult<>0) or (tf<=0) then begin

textcolor(4);

writeln('Ошибка! Время финиша введено неверно!');

textcolor(14);

continue; end

else f1:=true;

end;

if f2=false then begin

write(' Введите интервал вывода сообщений на экран (секунды) -> ');

{$I-}ReadLn(tin);

{$I+}

if (ioresult<>0) or (tin<=0) or (tin>=tf) then begin

textcolor(4);

writeln('Ошибка! Интервал вывода сообщений введен неверно!');

textcolor(14);

continue;

end

else f2:=true;

end;

until (f=true) and (f1=true) and (f2=true); { условие выхода из цикла – все три параметра введены верно}

Writeln('Press any key ...');

ch:=readkey; { ожидание нажатия любой клавиши}

ch:=#0;

end; {завершение процедуры}

Следующая процедура отвечает за эмуляцию работы персонального компьютера в режиме «онлайн».

Procedure punkt2; { процедура, соответствующая пункту 2 меню}

var vnp,tvr,h,min,s,ds,t:word; {описываются локальные переменные, используемые в данной процедуре}

vr:integer;

rs,vs,vsz,vszs,sp,v,vsr,vrk:real;

begin

ClrScr;

if (tf=0) then begin {проверка – введены ли исходные данные}

textcolor(13); writeln; writeln;

writeln('Сначала необходимо ввести исходные данные!');

readkey; textcolor(14);

exit; {завершение работы процедуры}

end;

GetTime(h,min,s,ds);{Вызов текущего времени}

vnp:=s+(min*60)+(h*3600); {время старта в секундах}

sound(3000); delay(2000); nosound; {звуковой сигнал}

TextColor(12); {Установка цвета "времени"}

GoToXY(40,1);

Write('Время старта ->:');

Write(h,' час ',min,' мин ',s,' сек'); {выводится на экран время старта}

textcolor(13);

writeln(' ':15,'Условные обозначения');

textcolor(14);

writeln('Время с момента старта ->TPR');

writeln ('Пройденный к данному моменту времени путь->PRS');

writeln ('Средняя скорость на отрезке ->VS');

writeln ('Средняя скорость к данному моменту времени ->VSZ');

writeln('Время, оставшееся до момента финиша ->TOST');

writeln('Рекомендуемая скорость в начале пути->',ss/tf:4:4);

writeln;

textcolor(13);

writeln(' ':15,'Поехали!');

textcolor(14); t:=0;

randomize; {инициализация генератора случайных чисел}

i:=0; vs:=0; j:=0; {обнуляем переменные}

vr:=round(ss/tf); {рекомендуемая средняя скорость}

repeat {начало прогона}

GetTime(h,min,s,ds);

tvr:=s+(min*60)+(h*3600);

if (vs=0) then for i:=1 to 10 do

begin

{пусть на заданном интервале скорость меняется случайным образом в пределах +- 1-ца от рекомендуемой 10 раз}

v:=(random(2*100)+100*(vr-1))/100;

vs:=vs+v;

end;

if (tvr>vnp) and ((tvr-vnp) mod tin =0) and ((tvr-vnp)>t) and ((tf-t)>tin) then begin

t:=tvr-vnp;{разница между временем старта и текущим временем}

write('TPR ->',t,' ¦ ');

vsz:=vsz+vs; {средняя скорость, рекомендуемая к данному моменту времени}

j:=j+10; {общее число замеров скорости}

vszs:=vsz/j;

vs:=vs/10; { средняя скорость на отрезке}

rs:=rs+vs*tin; {пройденный к данному моменту времени путь}

write ('PRS->',rs:3:3,' ¦ ');

write ('VS ->',vs:3:3,' ¦ ');

vs:=0;

write ('VSZ->',vszs:3:3,' ¦ ');

writeln('TOST->',tf-t,' ¦ ');

vrk:=(ss-rs)/(tf-t);

writeln('Рекомендуемая скорость->',vrk:4:4);

writeln;

end;

until (tvr-vnp)>=tf; {конец цикла – время истекло}

vs:=vs/10;

rs:=rs+vs*(tf-t);

t:=tvr-vnp;

write('TPR ->',t,' ¦ ');

if (tf-t)<tin then vs:=vrk*10;

vsz:=vsz+vs;

j:=j+10; {общее число замеров скорости}

vszs:=vsz/j;

write ('PRS->',rs:3:3,' ¦ ');

write ('VS ->',vs/10:3:3,' ¦ ');

write ('VSZ->',vszs:3:3,' ¦ '); writeln('TOST->',tf-t,' ¦ ');

sound(2000); delay(7000); nosound; textcolor(13); {звуковой сигнал – время истекло}

if rs>=ss {если время прогона меньше заданного}

then writeln(' ':15,'Успели!') else writeln(' ':15,'Не успели!');

GetTime(h,min,s,ds);

TextColor(12); {Установка цвета "времени"}

GoToXY(40,25);

Write('Время финиша ->:');

Write(h,' час ',min,' мин ',s,' сек');

textcolor(14);

readkey

end; {конец процедуры}

Далее рассматривается процедура, с помощью которой реализуется вывод на экран текстового файла справки.

procedure punkt3; {процедура, соответствующая 3-му пункту меню}

var txt:char; {объявляются локальные переменные процедуры}

help:text; {переменная – текстовый файл}

begin

clrscr;

assign(help,'hlp.txt'); {ассоциируется файловая переменная с именем файла}

writeln;

textcolor(13);

writeln;

textcolor(14);

{$I-}

Reset(help); {открывается файл для чтения}

{$I+}

if IOresult<>0 then {если ошибка возникла – файл не найден}

begin

textcolor(4);

writeln('Ошибка! Файл помощи отсутствует'); readkey;

textcolor(14);

exit; {завершение работы процедуры}

end else {если файл найден}

While not EOF(help) do {пока не будет достигнут конец файла}

begin

{считывается из файла символ и выводится на экран}

Read(help,txt); Write(txt);

end;

writeln;

writeln;

Writeln('Press any key ...');

writeln;

readkey;

end; {конец процедуры}

Далее следует основная программа, в которой процедуры и функции могут вызываться сколь угодно раз.

begin

ch:=#0; {переменная, в которой будет храниться код нажатой клавиши}

menu[1]:='1. Ввод начальных данных ';

menu[2]:='2. Работа программы ';

menu[3]:='3. Справка ';

menu[4]:='4. Exit ';

punkt:=1; {изначально выбран 1-й пункт меню}

x:=5; {координаты курсора}

y:=5;

TextAttr:=NORM;

MenuToScr; {вызов процедуры вывода меню на экран}

repeat {начала цикла, в котором на экран выводятся пункты меню}

ch:=ReadKey; {считывается код нажатой клавиши}

if ch=char(0) then begin ch:=ReadKey;

case ch of {в зависимости от того, какую клавишу нажал пользователь}

chr(80):{ стрелка вниз }

if punkt<N then begin

GoToXY(x,y+punkt-1); write(menu[punkt]);

punkt:=punkt+1; {номер выбранного пункта возрастает на единицу}

TextAttr:=SEl;

GoToXY(x,y+punkt-1);

write(menu[punkt]); TextAttr:=NORM;

end;

chr(72):{ стрелка вверх }

if punkt>1 then begin

GoToXY(x,y+punkt-1); write(menu[punkt]);

punkt:=punkt-1;

TextAttr:=SEl;

GoToXY(x,y+punkt-1);

write(menu[punkt]);

TextAttr:=NORM;

end;

end;

end

else

if ch=chr(13) then begin { нажата клавиша <Enter> }

case punkt of {вызывается соответствующая процедура, в зависимости от номера выбранного пункта}

1:punkt1;

2:punkt2;

3:punkt3;

4:ch:=chr(27);{ выход – нажата клавиша Esc}

end;

MenuToScr; {вызов процедуры вывода меню на экран}

end;

until ch=chr(27);{ условие выхода из цикла, 27 - код <Esc> }

end. {конец программы}

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

ЗАКЛЮЧЕНИЕ

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

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

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

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

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

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

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

Рассмотренные теоретические сведения были применены для реализации практической части курсовой работы.

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

Таким образом, в ходе написания третьей главы курсовой работы были на практике исследованы теоретические аспекты, рассмотренные во второй главе. Был описан интерфейс пользователя разработанной программы, а также ее программная реализация. Особое внимание было уделено процессу реализации пользовательского меню.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Александреску, А. Язык программирования D / А. Александреску. - СПб.: Символ-плюс, 2014. - 544 c.

2. Ашарина, И.В. Основы программирования на языках C и C++ / И.В. Ашарина. - М.: ГЛТ, 2012. - 208 c.

3. Баженова, И.Ю. Языки программирования: Учебник для студентов учреждений высш. проф. образования / И.Ю. Баженова; Под ред. В.А. Сухомлин. - М.: ИЦ Академия, 2012. - 368 c.

4. Гергель, В.П. Современные языки и технологии паралелльного программирования: Учебник / В.П. Гергель. - М.: МГУ, 2012. - 408 c.

5. Голицына, О.Л. Языки программирования: Учебное пособие / О.Л. Голицына, Т.Л. Партыка, И.И. Попов. - М.: Форум, НИЦ ИНФРА-М, 2013. - 400 c.

6. Головин, И.Г. Языки и методы программирования: Учебник для студентов учреждений высшего профессионального образования / И.Г. Головин, И.А. Волкова. - М.: ИЦ Академия, 2012. - 304 c.

7. Довек, Ж. Введение в теорию языков программирования / Ж. Довек, Ж.-Ж. Леви. - М.: ДМК, 2016. - 134 c.

8. Дорогов, В.Г. Основы программирования на языке С: Учебное пособие / В.Г. Дорогов, Е.Г. Дорогова; Под общ. ред. проф. Л.Г. Гагарина. - М.: ИД ФОРУМ, НИЦ ИНФРА-М, 2013. - 224 c.

9. Касторнова, В.А. Структуры данных и алгоритмы их обработки на языке программирования Паскаль: Учебное пособие / В.А. Касторнова. - СПб.: BHV, 2016. - 304 c.

10. Керниган, Б. Язык программирования C. / Б. Керниган, Д.М. Ритчи. - М.: Вильямс, 2016. - 288 c.

11. Кундиус, В.А. Теоретические основы разработки и реализации языков программирования / В.А. Кундиус. - М.: КноРус, 2013. - 184 c.

12. Монахов, В.В. Язык программирования Java и среда NetBeans / В.В. Монахов. - СПб.: BHV, 2012. - 704 c.

13. Орлов, С. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения / С. Орлов. - СПб.: Питер, 2013. - 688 c.

14. Пирс, Б. Типы в языках программирования / Б. Пирс. - М.: КДУ, 2012. - 680 c.

15. Серебряков, В.А. Теория и реализация языков программирования / В.А. Серебряков. - М.: Физматлит, 2012. - 236 c.

16. Страуступ, Б. Язык программирования С++. Специальное издание / Б. Страуступ. - М.: Бином, 2015. - 1136 c.

17. Троелсен, Э. Язык программирования C# 5.0 и платформа .NET 4.5 / Э. Троелсен. - М.: Вильямс И.Д., 2013. - 1312 c.

18. Фридман, А. Основы объектно-ориентированного программирования на языке СИ++ / А. Фридман. - М.: Горячая линия -Телеком, 2012. - 234 c.

19. Хейлсберг, А. Язык программирования C#. Классика Computers Science / А. Хейлсберг, М. Торгерсен, С. Вилтамут. - СПб.: Питер, 2012. - 784 c.

20. Цуканова, Н.И. Теория и практика логического программирования на языке Visual Prolog 7: Учебное пособие для вузов / Н.И. Цуканова, Т.А. Дмитриева. - М.: Гор. линия-Телеком, 2013. - 232 c.

21. Шохирев, М.В. Язык программирования Perl 5 / М.В. Шохирев. - М.: Интуит, 2014. - 279 c.