Языки программирования высокого уровня
Сравнительный анализ наиболее распространенных языков, их классификация, описание достоинств и недостатков. Использование процедур, функции и подпрограмм в языках программирования высокого уровня. Разработка и реализация программы "Бортовой компьютер".
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 22.06.2014 |
Размер файла | 329,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
Размещено на http://www.allbest.ru
Оглавление
Введение
1. Обзор и анализ особенностей применения языков программирования
2. Теоретические аспекты использования процедур и функций в языке Паскаль
3. Практическая реализация программы «Бортовой компьютер»
Заключение
Список использованной литературы
Введение
язык программирование бортовой компьютер
В настоящее время, во всем мире, наряду с языками высокого программирования, такими как: Фортран, Алгол, Си, С++, Java и др. особое место занимает Паскаль. Популярности среди программистов он обязан, прежде всего, своей простоте, универсальности и удобству работы в нем. Язык программирования Паскаль используется уже более тридцати лет. На сегодняшний день создано семь версий.
Объектом исследования курсовой работы являются языки программирования высокого уровня. Первая глава нашей работы посвящена сравнительному анализу наиболее распространенных языков, их классификации, описанию их достоинств и недостатков.
Предметом исследования данной курсовой работы является изучение такого актуального вопроса, как использование процедур, функции и подпрограмм в языках программирования высокого уровня, а также основных подходов к созданию пользовательских меню.
Использование подпрограмм позволяет значительно оптимизировать работу программиста, сократить объем памяти, занимаемый программой, сделать программный код более понятным. Создание пользовательских меню является одной из наиболее важных проблем при разработке пользовательского интерфейса.
Именно поэтому изучение этого аспекта программирования является особенно актуальным при написании современных программ на языках высокого уровня.
Таким образом, целью данной работы является раскрытие теоретических аспектов рассматриваемой темы, а также приобретение практических навыков использования процедур и функций на примере реализации конкретной задачи.
При выполнении курсовой работы пред нами были поставлены следующие задачи:
1.) Рассмотреть особенности и произвести квалификацию языков программирования высокого уровня.
2.) Обосновать выбор языка Паскаль для дальнейшего исследования.
3.) Рассмотреть основные принципы использования процедур, функции и подпрограмм, а также создания пользовательского меню средствами языка высокого уровня Паскаль.
4.) Реализовать полнофункциональную программу, позволяющую продемонстрировать изученные теоретические вопросы на практике.
В ходе теоретического исследования нами были использованы следующие основные литературные источники:
1. Кнут Д. Искусство программирования для ЭВМ. Т1. Основные алгоритмы. М.: Мир, 1978.
2. Прайс Д. Программирование на языке Паскаль: Практическое руководство. Пер. с англ. - М.:Мир, 1987.
3. Фаронов В.В. Турбо-Паскаль 7.0. Начальный курс. М.: "Нолидж", 1999.
4. Культин Н.Б. Программирование в Turbo Pascal 7.0 и Delphi. СПб.:БХВ - Санкт-Петербург, 1999.
5. Бобровский С. «Программная инженерия» С.Петербург, изд-во «Питер», 2003
А также другие источники, перечень которых приведен в списке использованной литературы.
1. Обзор и анализ особенностей применения языков программирования
Языки программирования высокого уровня используют в аппаратно-независимых системах программирования.
Языки программирования высокого уровня подразделяют на [3]:
процедурно-ориентированные;
проблемно-ориентированные;
объектно-ориентированные.
Каждый из описанных ниже языков программирования применяется для решения определенного круга задач.
К первому классу языков, который используется для записи процедур или алгоритмов обработки информации относят:
а) язык Фортран (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-х годов язык программирования Паскаль еще более усилил свои позиции после создания трансляторов Turbo-Pascal для персональных компьютеров. С этого момента язык смело вышел за рамки узкого использования программистами-профессионалами. Он начал использоваться как рабочий инструмент пользователей и как средство обучения языков программирования.
Одним из главных достоинств языка Паскаль является четкая структуризация, удобная среда разработки и отладки, позволяющая пользователю обнаружить логические и синтаксические ошибки в программе. Также к достоинствам можно отнести высокую скорость компиляции программ, возможность использования вставок языка Ассемблер.
В отличие от языка С (С++) в при использовании Паскаль сведены к минимуму возможные синтаксические неоднозначности [1,2], синтаксис языка является интуитивно понятным и доступным, поскольку, как уже было отмечено выше, язык изначально разрабатывался для обучения студентов программированию.
К недостаткам первоначально разработанного компилятора можно бы отнести ряд ограничений: невозможность передачи функциям массивов переменной длины, ограниченная библиотека ввода-вывода, отсутствие средств для подключения функций написанных на других языках и раздельной компиляции [7,9].
Несмотря на долгую историю, Паскаль является динамично развивающимся языком программирования высокого уровня. Современные версии компилятора ликвидировали большинство перечисленных выше недостатков.
Рассмотрим особенности языков другого класса. Основным достоинством проблемно-ориентированных языков программирования является минимизация трудозатрат программиста при решении задач принадлежащих некоторому четко выделяемому классу [3]. К проблемно-ориентированным относят следующие языки программирования:
а) язык Лисп. Считается вторым после Фортрана старейшим высокоуровневым языком программирования [3,16]. Данный язык наиболее часто применяется при разработке экспертных систем и систем аналитических вычислений. Существуют современные версии этого языка, которые активно применяются при разработке новейших web-технологий. Также модификации данного языка используются в качестве встроенных языков программирования в САПР. Примером может послужить AutoLISP - язык для разработки надстроек в продуктах компании AutoDesk.
б) язык Пролог. Используется для реализации систем искусственного интеллекта, а также и интеллектуальных систем баз данных [3].
Написание программ на языке Пролог существенно отличается от использования других языков программирования. Программа на Прологе не является реализацией некоторого алгоритма, а представляет собой запись на языке формальной логики [16]. Таким образом, данный язык относится к описательным языкам программирования.
Таким образом, сферой применения данного языка является решение логических задач. Для создания вычислительных, графически задач, реализации пользовательского интерфейса данный язык не предназначен.
Большинство объектно-ориентированных языков являются версиями процедурно-ориентированных и проблемно-ориентированных.
В настоящий момент наиболее активно используются и развиваются следующие среды программирования [3,4]:
а) Delphi (Lazarus некоммерческая - версия для ОС семейства Linux) - основана на Object Pascal;
б) C++, С# (~ C);
в) Visual Basic (~ Basic);
г) Visual Fortran (~ Fortran);
д) Prolog++ (~ Prolog).
Предметом исследования данной курсовой работы является изучение такого актуального вопроса, как использование процедур, функции и подпрограмм в языках программирования высокого уровня, а также основных подходов к созданию пользовательских меню.
Одним из важных факторов для выполнения поставленной задачи может отказаться и верный выбор языка программирования. Для реализации поставленной задачи можно использовать различные языки высокого уровня, наиболее распространенными из которых являются С++ и Паскаль.
Язык Паскаль является статически типизированным, компилируемым, поддерживает низкоуровневую работу с памятью. Именно поэтому его можно рекомендовать в качестве языка программирования для изучения работы подпрограмм, процедур и функций. Простота реализации графического интерфейса позволяет наглядно продемонстрировать процесс создания пользовательского меню.
В данной главе курсовой работы нами была произведена классификация языков программирования, рассмотрены сферы их применения, вкратце изложены их основные особенности, достоинства и недостатки.
Проанализировав все выше изложенное, нами был сделан аргументированный выбор языка программирования высокого уровня Паскаль для дальнейшего изучения предмета исследования.
2. Теоретические аспекты использования процедур и функций в языке Паскаль
В алгоритмическом языке Паскаль различают два вида подпрограмм - процедуры и функции.
Составляя программу, в особенности достаточно большую, даже не задумываясь, автор разбивает ее на отдельные блоки, выполняющие ту или иную функцию. Соединяя их (компонуя), в конечном итоге, добиваются решения поставленной задачи. Такие блоки программы не обязательно носят завершенный вид. Они называются процедурами [1]. В отличие от процедур, функции имеют завершенный вид [7].
Процедуры и функции могут быть как стандартными (находятся в библиотеке Паскаля), так и созданные пользователем. С помощью процедур и функций можно сделать программу компактнее с учетом того, что они могут несколько раз повторяться. Процедура, как и программа, имеет свое имя.
Форма записи процедуры: PROCEDURE имя ;
После объявления процедуры идет, как и в программе, объявление переменных процедуры и между Begin End ; записывается ее программа (порядок выполнения операторов). Программы, с применением процедур, имеет следующую структуру:
Program имя программы ;
Label .... ; Определение меток, констант,
Const ..... ; массивов и других переменных
: программы
Var ..... ;
Procedure имя ; Определение процедур и функций
Var ...... ; пользователя
Begin
:
End ;
Procedure имя ;
Var ...... ;
Begin
:
End ;
:
Procedure имя ;
Var ...... ;
Begin
:
:
End ;
BEGIN Основная программа, в которой
: процедуры и функции могут вызы-
: ваться сколь угодно раз
:
END.
Отметим только одну особенность [13] - в процедуре после End ставится точка с запятой. Принято считать, что если большая часть программы размещается в процедурах и функциях, тем рациональнее она составлена.
Подпрограмма-функция предназначена для вычисления какого-либо параметра [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. Практическая реализация программы «Бортовой компьютер
Для иллюстрации практического применения подпрограмм в языке высокого уровня Паскаль, а также особенностей проектирования пользовательского меню, разработаем следующую программу.
Постановка задачи
Данная программа эмулирует действия бортового компьютера. В качестве исходных данных принимает значения расстояния до «Финиша», желаемого время достижения «Финиша» и интервал вывода сообщений бортового компьютера.
Скорость на заданном интервале генерируется случайным образом. Отклонение составляет +- 1-цу от скорости, рекомендуемой в начале пути. Работа программы происходит в режиме реального времени.
Через заданный промежуток времени программы выводит информацию о времени с момента старта, пройденном пути, средней скорости на предыдущем отрезке, средней скорости к данному моменту, времени достижения «Финиша». Программа также рекомендует скорость, которую необходимо развивать, чтобы успеть к «Финишу» к сроку. По истечении времени на экран выводится сообщение о том, успел ли автомобиль достигнуть «Финиша» в желаемое время.
Программа реализована в среде Turbo Pascal 7.1.
Рассмотрим интерфейс пользователя программы. После запуска программы на экране появляется главное меню (рис. 1). Здесь пользователь программы при помощи курсора может выбрать необходимый ему пункт. При этом выбранный пункт меню подсвечивается. После нажатия клавиши Enter будет запущена соответствующая подпрограмма, которая отвечает за выполнение данного действия. На рис. 2 представлено окно программы в режиме ввода исходных данных. После нажатия любой клавиши на экране снова появляется меню пользователя.
Рис.1. Меню пользователя программы
Рис.2. Ввод исходных данных
После выбора пункта меню «Работа программы» издается звуковой сигнал и запускается таймер. На экран выводится время старта - текущее системное время, применяемые условные обозначения, а также скорость, рекомендуемая в начале пути. С заданным интервалом времени на экран выводятся расчетные параметры.
Рис.3. Окно программы в режиме эмуляции работы
бортового компьютера
После истечения времени, необходимого, чтобы достичь финиша, на экран выводится, сообщение, успела ли машина его достичь. Поскольку скорость машины в заданном диапазоне изменяется случайным образом, при каждом запуске мы увидим разный результат.
После нажатия любой клавиши на экране вновь появляется главное меню. При выборе пункта меню «Справка» (рис. 4) запускается соответствующая процедуры, при помощи которой на экран выводится содержимое файла HLP.TXT. Этот файл должен быть расположен в том же каталоге, что и исполнимый файл программы. При этом, при желании, содержимое этого файла может быть легко отредактировано в текстовом редакторе без изменения исходного кода программы.
Пункт меню «Exit» позволяет завершить работу программы.
Как мы видим, использование меню пользователя, позволяющее при помощи курсора легко выбрать нужное действие, значительно облегчает работу пользователя с программой.
Рис.4. Окно справки о работе программы
Рассмотрим программную реализацию разработанной нами программы. Структура и назначение основных блоков соответствует материалу, который был исследован в теоретической части курсовой работы.
Вначале мы подключаем необходимые модули, определяем метки, константы, массивы и другие глобальные переменные программы.
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. {конец программы}
Таким образом, результатом выполнения практической части курсовой работы стала разработка полнофункциональной программы, на примере создания которой были наглядно продемонстрированы преимущества использования пользовательских меню при разработке интерфейса пользователя, а также возможности использования подпрограмм в языке высокого уровня Паскаль.
Заключение
Язык программирования высокого уровня Паскаль обладает большими возможностями для решения достаточно широкого круга задач.
Вместе с тем, интуитивно понятный синтаксис, четкая структуризация, доброжелательный интерфейс среды разработки делает его одним из наиболее популярных языков программирования.
В первой главе курсовой работы нами была произведена классификация языков программирования, рассмотрены сферы их применения, вкратце изложены их основные особенности, достоинства и недостатки.
Одним из важнейших факторов при выполнении поставленной задачи является верный выбор языка программирования. Для реализации поставленной задачи можно использовать различные языки высокого уровня, наиболее распространенными из которых являются С++ и Паскаль.
Язык Паскаль является статически типизированным, компилируемым, поддерживает низкоуровневую работу с памятью. Именно поэтому его можно рекомендовать в качестве языка программирования для изучения работы подпрограмм, процедур и функций. Простота реализации графического интерфейса позволяет наглядно продемонстрировать процесс создания пользовательского меню.
Проанализировав все выше изложенное, нами был сделан аргументированный выбор языка программирования высокого уровня Паскаль для дальнейшего изучения предмета исследования.
Во второй главе курсовой работы нами были рассмотрены основные принципы использования подпрограмм - процедур и функций в алгоритмическом языке Паскаль. Также затронута смежная тема использование модулей для лучшей организации блочного использования процедур и функций. Приведены примеры программной реализации описанных структур.
Рассмотренные нами теоретические сведения были применены для реализации практической части курсовой работы.
Результатом выполнения практической части курсовой работы стала разработка полнофункциональной программы, на примере создания которой были наглядно продемонстрированы преимущества использования пользовательских меню при разработке интерфейса пользователя, а также возможности использования подпрограмм в языке высокого уровня Паскаль.
Таким образом, в ходе написания третьей главы курсовой работы были на практике исследованы теоретические аспекты, рассмотренные во второй главе. Был описан интерфейс пользователя разработанной программы, а также ее программная реализация. Особое внимание было уделено процессу реализации пользовательского меню.
Список использованной литературы
Абрамов В.Г., Трифонов Н.П., Трифонова Г.Н. Введение в язык Паскаль. -- М.: Наука, 1988
Абрамов С.А., Гнездилова Г.Г., Капустина Е.Н., Селюн М.И. Задачи по программированию. М.: “Наука”, 1988
Вирт Н. Алгоритмы и структуры данных. -- М.: Мир, 1989
Дагене В.А., Григас Г. К., Аугутис К.Ф. 100 задач по программированию. -- М.: Просвещение, 1993.
Епашников A.M., Епашников В.А. Программирование в среде Турбо Паскаль 7.0. -- М.: МИФИ, 1994
Размещено на Allbest.ru
Подобные документы
Классификация языков программирования. Использование циклических конструкций и выполнение итерационных процессов. Алгоритмические структуры циклов языков C, C++, Java, C#. Особенности современных языков программирования высокого уровня и их применение.
курсовая работа [345,6 K], добавлен 13.11.2009Основные сведения о языках программирования и их состав. Программа для компьютера. Использование компилятора и операторы. Языки программирования высокого уровня. Концепции объектно-ориентированного программирования. Языки искусственного интеллекта.
презентация [6,3 M], добавлен 14.08.2013Характеристика базовых конструкций языков программирования. Изучение истории их развития и классификации. Определение основных понятий языков программирования. Описание основных операторов, которые используются в языках программирования высокого уровня.
курсовая работа [400,6 K], добавлен 10.11.2016Изучение организации диалоговой программы и закрепления основных элементов программирования на языке Паскаль и Си (Delphi, C++ Builder). Описание представления информации в программах на языках высокого уровня. Сравнительная характеристика Delphi и C++.
курсовая работа [3,1 M], добавлен 27.02.2015Методы численного интегрирования. Характеристика основных составляющих структурного программирования. Решение задания на языке высокого уровня Паскаль. Построение графического решения задачи в пакете Matlab. Решение задания на языке высокого уровня C.
курсовая работа [381,7 K], добавлен 10.05.2018Машинные коды и ассемблер. Первые языки программирования высокого уровня. Язык программирования FORTRAN. Достоинства и недостатки ALGOL. Научные и бухгалтерские программы. Основные принципы, которые соблюдались при создании языка программирования Basic.
курсовая работа [407,4 K], добавлен 21.06.2014Понятия структурного программирования и алгоритма решения задачи. Краткая история развития языков программирования от машинных до языков ассемблера и языков высокого уровня. Процедурное программирование на C#. Методы и программы для моделирования.
учебное пособие [1,7 M], добавлен 26.10.2010Сравнительный анализ языков программирования высокого уровня Си и Паскаль. Реализация алгоритма обработки данных. Тестирование и отладка программы или пакета программ. Структура программы на языке Турбо Паскаль. Указатели и векторные типы данных.
курсовая работа [233,5 K], добавлен 14.12.2012Цель информационного программирования; алгоритмический язык как система обозначений и правил для единообразной и точной записи алгоритмов и их исполнения. Языки программирования низкого и высокого уровня; классификация и использование структуры данных.
реферат [383,1 K], добавлен 07.01.2012Языки программирования низкого и высокого уровней и среды реализации. Особенности процедурных, логических, объектно-ориентированных языков. Состав системы программирования: трансляторы, библиотеки и отладчик программ, компоновщик, средства редактирования.
презентация [11,9 K], добавлен 23.10.2013