Цикл с постусловием на языке Паскаль

Автор работы: Пользователь скрыл имя, 09 Декабря 2010 в 22:52, практическая работа

Описание работы

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

Содержание работы

Введение
Паскаль сегодня
Основные понятия. Основная структура программы
Цикл
Оператор цикла с постусловием
Практическая часть
Заключение
Список литературы

Файлы: 1 файл

МОУ лицей 27.doc

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

После компиляции минимальный размер исполняемого файла для ТМТ составляет около 15 Кбайт, а для Free Pascal — 55 Кбайт. Кроме того, второй требует еще внешнего DPMI-сервера на 20 Кбайт, тогда как у ТМТ он содержится внутри исполняемого файла. 

Чтобы сравнить скорости работы исполняемых  файлов, полученных с помощью этих компиляторов, можно использовать тест Ветстоуна по определению производительности системы с точки зрения выполнения операций над числами с плавающей запятой, переписанный с Фортрана на Паскаль (табл. 2 ). Значительно уступая TMT по оптимизации размера, Free Pascal работает в полтора раза быстрее. В то же время оба компилятора оставляют далеко позади Borland Pascal, особенно на современных процессорах. 

Однако  некоторые результаты при измерении  производительности выглядят довольно странно. Написанная на ассемблере процедура поиска кратчайшего пути в графе при помощи алгоритма Дейкстры, будучи откомпилированной тем же Free Pascal, выполнялась на 20% быстрее, чем ТМТ. При заполнении таблицы весов дуг графа использовался датчик случайных чисел, измерения повторялись 1000 раз и полученные значения усреднялись, а процедуры чтения, записи и пересылки содержимого оперативной памяти выполнялись в обоих случаях с одинаковой скоростью. 

Среднее время выполнения этого теста  для компилятора ТМТ Pascal составило 2,20 с, а для Free Pascal — 1,81 с. 

Кроме оптимизации, которую делает сам  компилятор, интересно также посмотреть, насколько оптимально написаны библиотечные процедуры. Это было решено сделать  на примере графической библиотеки. Следует сказать, что в обоих случаях состав процедур значительно отличался от прототипа, особенно у ТМТ. Впрочем, и Free Pascal оказался не на высоте. Хотя дисплей и видеоадаптер позволяли работать в режиме 1600x1200 точек (а среди констант, описывающих разрешение, было предусмотрено даже 2048x1536 точек), однако в действительности заявленное разрешение установить при помощи Free Pascal не удалось. Поэтому скорость вывода графических примитивов проверялась в режиме 1280x1024 точки при 256 цветах (табл. 3 ). По скорости вывода на экран заштрихованных фигур ТМТ почти на порядок превосходит своего конкурента, что, видимо, объясняется более совершенным алгоритмом. При рисовании линий ТМТ практически во всем отстает от FPC. Правда, в некоммерческой версии ТМТ, где производились измерения, в отличие от коммерческой не используется LFB, что при рисовании без экранного буфера должно приводить к ощутимой потере производительности. Возможно, что различие результатов объясняется этим. 

При выводе текста ТМТ втрое отстает от FPC, однако не следует этого пугаться. Дело в том, что тогда как Free Pascal вслед за Borland применяет шрифт размером 8x8, в ТМТ резонно предположили, что при разрешениях 640x480 точек и больше гораздо лучше будет смотреться шрифт размером 8x16. Так что замедление вывода в значительной степени связано с увеличением размера шрифта вдвое. 

В целом  реализация графической библиотеки ТМТ производит впечатление более  продуманной и отлаженной (хотя и  менее полной по отношению к Borland Pascal). 

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

Бесплатная версия TMT Pascal позволяет делать исполняемые файлы только для DOS, зато при использовании коммерческой один и тот же текст, будучи откомпилированным и для DOS, и для Windows, работает визуально совершенно одинаково, хотя внутренний механизм для DOS реализован через VESA, а для Windows — через DirectDraw.

Рекомендации 

Что же, хотя крупные фирмы и отказались от ведения разработок Паскаля для DOS, небольшие компании, коллективы энтузиастов и даже отдельные  программисты весьма успешно продолжили это дело, создавая вполне достойную замену проверенному компилятору Turbo Pascal. Так что если вам нужен надежный компилятор и вы не хотите возиться с установкой и настройкой его самого и прилагаемой к нему среды, а также если при вашей работе предъявляются жесткие требования к объему кода, то лучше остановить свой выбор на ТМТ. Кстати, при применении внешнего DOS-расширителя памяти, например DOS4GW, минимальный объем исполняемого файла можно сократить до 3 Кбайт. Если же вам не терпится самому принять участие в разработке компилятора Паскаля, если вам нужен транслятор, настраиваемый на ваши конкретные задачи и вы согласны над ним поработать, то следует отдать предпочтение FPC. Впрочем, вместе с исходными текстами также поставляется Р32V, однако он в отличие от FPC компилируется в среде Borland Pascal. Правда, P32V — не полный компилятор, так как переводит текст на Паскале не в объектный код, а в текст на языке ассемблера, и поэтому потребуется внешний ассемблер. Если же вы работаете с OS/2, то целесообразнее предпочесть Virtual Pascal. 
 
 
 
 
 
 
 

Основные  понятия. 

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

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

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

Основная  структура программы. 

Правила языка Паскаль предусматривают единую для всех программ форму основной структуры: 

Program <Имя  программы>;

<Раздел  описаний>

Begin

<Тело  программы>

End. 

Здесь слова Program, Begin и End являются служебными. Правильное и уместное употребление этих слов является обязательным. 

Угловые скобки в формате указывают на то, чтожно изначально, то тело цикла  не будет выполнено ни разу. Если условие изначально истинно и  в теле цикла нет действий, влияющих на истинность этого условия, то тело цикла будет выполняться бесконечное количество раз. Такая ситуация называется "зацикливанием". Прервать зациклившуюся программу может либо оператор (нажав Ctrl+C), либо аварийный останов самой программы, в случае переполнения переменной, деления на ноль и т.п., поэтому использовать структуру цикла следует с осторожностью, хорошо понимая, что многократное выполнение должно когда-нибудь заканчиваться. 

На языке Pascal структура цикла "Пока" записывается следующим образом:

While <условие> Do <оператор>; 

Правда, лаконично? По-русски можно прочитать так: "Пока истинно условие, выполнять оператор". Здесь, так же как в формате условного оператора, подразумевается выполнение только одного оператора. Если необходимо выполнить несколько действий, то может быть использован составной оператор. Тогда формат оператора принимает такой вид: 

While <условие> Do

Begin  

<оператор #1>;

<оператор #2>;

<оператор #3>;

. . . 

End; 
 
 
 
 
 
 
 

Цикл 

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

Определения 

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

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

Виды  циклов: 

1.Безусловные  циклы

Иногда  в программах используются циклы, выход  из которых не предусмотрен логикой программы. Такие циклы называются безусловными, или бесконечными. Специальных синтаксических средств для создания бесконечных циклов, ввиду их нетипичности, языки программирования не предусматривают, поэтому такие циклы создаются с помощью конструкций, предназначенных для создания обычных (или условных) циклов. Для обеспечения бесконечного повторения проверка условия в таком цикле либо отсутствует (если позволяет синтаксис, как, например, в цикле LOOP…END LOOP языка Ада), либо заменяется константным значением (while true do … в Паскале). 

2.Цикл  с предусловием

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

while <условие> do begin  

  <тело  программы> 

end; 

На Си:

while(<условие>)

{

   <тело программы>

} 

3.Цикл  с постусловием

Цикл  с постусловием — цикл, в котором  условие проверяется после выполнения тела цикла. Отсюда следует, что тело всегда выполняется хотя бы один раз. В языке Паскаль этот цикл реализует оператор repeat..until; в Си — do…while.

Pascal:

repeat

    <тело цикла>

until <условие> 

Си:

do

{

    <тело цикла>

}

while(<условие>) 
 

В трактовке  условия цикла с постусловием в разных языках есть различия. В  Паскале и языках, произошедших от него, условие такого цикла трактуется как условие выхода (цикл завершается, когда условие истинно, в русской терминологии такие циклы называют ещё «цикл до»), а в Си и его потомках — как условие продолжения (цикл завершается, когда условие ложно, такие циклы иногда называют «цикл пока»)….. 

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