Формат с двумя числами предназначен только для вещественных чисел в форме с фиксированной точкой.

§4.3. Составной оператор

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

Begin

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

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

...

<операторn>

end

Пример: вся программа состоит из одного составного оператора.

§4.4. Пустой оператор

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

§4.5. Безусловный оператор перехода

Это единственный оператор, в котором используется метка. Он имеет вид:

Go To <метка>;

После выполнения этого оператора будет осуществлен переход на оператор, перед которым стоит указанная метка.

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

НЕ нашли? Не то? Что вы ищете?

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

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

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

Program S;

Label L;

Const Eps = 1E-6; {определим точность как константу}

Var a, x,y:real;

Begin

WriteLn (‘Введите число для определения кубического корня’);

Read (a);

x := a;

L: y := x; {«старим» предыдущее значение}

x := 1/3*(a/sqr(y)+2*y); {вычисляем новое значение}

If Abs(x-y)>Eps Then

GoTo L; {повторим, если разность старого и нового значений не достигла заданной точности}

WriteLn (‘Значение корня:’, x:10:6);

End.

§4.6. Условный оператор

При составлении по алгоритму программы на месте блока «Решение» записывается условный оператор, который может иметь 2 формы. В общем виде полная форма записывается как:

If <логическое выражение> Then <оператор1> Else < оператор2>;

а сокращенная:

If < логическое выражение > Then < оператор1>;

В первом случае, если логическое выражение истинно (True), то выполняется оператор1, а если ложно, то оператор2. Во втором случае при ложности логического выражения просто осуществляется переход к следующему оператору.

Наиболее простой пример – вычисление значения кусочно-непрерывной функции:

Program Function;

Var

f, x:real;

Begin

Read (x);

If x>=0 Then F := x*x {первый вариант}

Else F := sqrt (x); {второй вариант}

WriteLn ('Значение функции =',F:8:3);

end.

Заметим, что значение функции используется как имя переменной. Оно не должно содержать скобок, поэтому здесь вместо F(x) используется просто F (можно функцию назвать и по-другому, например Fx).

§4.7. Оператор цикла с параметром FOR

Операторы цикла заставляют выполняться входящие в их состав внутренние операторы несколько раз. В языке Паскаль существует три вида операторов цикла.

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

For <параметр цикла> := <начальное значение> To | DownTo <конечное значение> Do <внутренний оператор – тело цикла>

Внутренний оператор будет выполняться один раз для каждого значения параметра цикла из указанного диапазона. Если используется служебное слово То, то при каждом новом выполнении берется следующее значение, при DownTo – предыдущее (используются функции Succ и Pred), то есть тип параметра цикла должен быть дискретным.

При использовании оператора FOR необходимо соблюдать следующие правила:

1.  Начальное и конечное значение являются выражениями (константа – вырожденное выражение), а параметр цикла – имя переменной (может быть и структурированной, например, элемент массива).

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

3.  Если используется служебное слово То, а начальное значение больше конечного (или меньше в случае DownTo), то внутренний оператор не выполнится ни разу.

Пример на вычисление суммы с оператором FOR приводился ранее. Если количество повторений заранее известно, но параметр цикла – вещественный, то в явном виде этот оператор использовать нельзя. Ограничение на дискретный тип можно обойти, если ввести дополнительную целую переменную. Например, необходимо вычислить таблицу синуса для значений аргумента от 0.5 до 0.7 с шагом 0.01. Введем дополнительную переменную i, изменяющуюся от 0 до 20 (всего надо вычислить 21 точку). Если учесть, что внутри цикла надо использовать не только оператор вычисления синуса, но и оператор вывода, то в операторе цикла используем операторные скобки.

Программа будет выглядеть следующим образом:

Program Tabl;

Var

i:integer;

x:real;

Begin

WriteLn (' Таблица синуса');

For i:=0 To 20 Do

Begin

x := i/100+0.5;

WriteLn ('x=', x:4:1,'sin(x)=', sin(x):8:5);

end

end.

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

§4.8. Оператор цикла с предусловием WHILE

Общий вид оператора:

WHILE <логическое выражение> DO <оператор>;

Этот оператор заменяет в блок-схеме цикла только блок «Решение», если он стоит в самом начале цикла. Если используется параметр цикла, то он должен явно изменяться в цикле.

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

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

В качестве примера составим программу для вычисления суммы при заданной точности ε = 10-3:

Program Sum2;

Const Eps=1e-3;

Var

i:integer;

S, v:real;

Begin

S:=0;

i:=1;

v:=1; {любое число больше Eps}

While v>Eps do

Begin

v:=(i+1)/(i*i*i+8);

S:=S+v;

i:=i+1

end;

WriteLn (‘Сумма=’,S:6:3)

end.

Заметим, что вывод суммы выполняется в виде числа с фиксированной точкой (для большей наглядности) с тремя знаками в дробной части. Если выводить больше значений, то они недействительные, – числовой мусор; если выводить меньше, то тогда зачем считать с такой точностью?

§4.9. Оператор цикла с постусловием REPEAT

Общий вид оператора:

Repeat

<оператор>;

...

Until <логическое выражение>;

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

Существенным отличием от оператора While является то, что внутренние операторы выполняются, пока выражение ложно.

Примеры вычисления кубического корня (уже рассматривался с использованием метки) и бесконечной суммы:

Program S2;

Label L;

Const Eps = 1E-6;

Var a, x,y:real;

Begin

WriteLn ('Введите число для определения кубического корня');

Read (a);

x := a;

Repeat

y := x;

x := 1/3*(a/sqr(y)+2*y);

Until Abs(x-y)<Eps;

WriteLn ('Значение корня:', x:10:6);

End.

Program Sum3;

Const Eps=1e-3;

Var

i:integer;

S, v:real;

Begin

S:=0;

i:=1;

Repeat

v:=(i+1)/(i*i*i+8);

S:=S+v;

i:=i+1;

Until v<Eps;

WriteLn ('Сумма=',S:6:3)

end.

§4.10. Оператор выбора CASE

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

CASE <выражение> OF

k1,k2... : <оператор1>;

...

l1,l2... : <операторn>

[ Else

<операторm> ]

End;

Часть Else является расширением Турбо-Паскаля.

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

ki, ..., li – константы выбора. Они должны быть различными и принимать значения выражения. Можно использовать одну или несколько констант, а так же диапазоны.

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

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Основные порталы (построено редакторами)

Домашний очаг

ДомДачаСадоводствоДетиАктивность ребенкаИгрыКрасотаЖенщины(Беременность)СемьяХобби
Здоровье: • АнатомияБолезниВредные привычкиДиагностикаНародная медицинаПервая помощьПитаниеФармацевтика
История: СССРИстория РоссииРоссийская Империя
Окружающий мир: Животный мирДомашние животныеНасекомыеРастенияПриродаКатаклизмыКосмосКлиматСтихийные бедствия

Справочная информация

ДокументыЗаконыИзвещенияУтверждения документовДоговораЗапросы предложенийТехнические заданияПланы развитияДокументоведениеАналитикаМероприятияКонкурсыИтогиАдминистрации городовПриказыКонтрактыВыполнение работПротоколы рассмотрения заявокАукционыПроектыПротоколыБюджетные организации
МуниципалитетыРайоныОбразованияПрограммы
Отчеты: • по упоминаниямДокументная базаЦенные бумаги
Положения: • Финансовые документы
Постановления: • Рубрикатор по темамФинансыгорода Российской Федерациирегионыпо точным датам
Регламенты
Термины: • Научная терминологияФинансоваяЭкономическая
Время: • Даты2015 год2016 год
Документы в финансовой сферев инвестиционнойФинансовые документы - программы

Техника

АвиацияАвтоВычислительная техникаОборудование(Электрооборудование)РадиоТехнологии(Аудио-видео)(Компьютеры)

Общество

БезопасностьГражданские права и свободыИскусство(Музыка)Культура(Этика)Мировые именаПолитика(Геополитика)(Идеологические конфликты)ВластьЗаговоры и переворотыГражданская позицияМиграцияРелигии и верования(Конфессии)ХристианствоМифологияРазвлеченияМасс МедиаСпорт (Боевые искусства)ТранспортТуризм
Войны и конфликты: АрмияВоенная техникаЗвания и награды

Образование и наука

Наука: Контрольные работыНаучно-технический прогрессПедагогикаРабочие программыФакультетыМетодические рекомендацииШколаПрофессиональное образованиеМотивация учащихся
Предметы: БиологияГеографияГеологияИсторияЛитератураЛитературные жанрыЛитературные героиМатематикаМедицинаМузыкаПравоЖилищное правоЗемельное правоУголовное правоКодексыПсихология (Логика) • Русский языкСоциологияФизикаФилологияФилософияХимияЮриспруденция

Мир

Регионы: АзияАмерикаАфрикаЕвропаПрибалтикаЕвропейская политикаОкеанияГорода мира
Россия: • МоскваКавказ
Регионы РоссииПрограммы регионовЭкономика

Бизнес и финансы

Бизнес: • БанкиБогатство и благосостояниеКоррупция(Преступность)МаркетингМенеджментИнвестицииЦенные бумаги: • УправлениеОткрытые акционерные обществаПроектыДокументыЦенные бумаги - контрольЦенные бумаги - оценкиОблигацииДолгиВалютаНедвижимость(Аренда)ПрофессииРаботаТорговляУслугиФинансыСтрахованиеБюджетФинансовые услугиКредитыКомпанииГосударственные предприятияЭкономикаМакроэкономикаМикроэкономикаНалогиАудит
Промышленность: • МеталлургияНефтьСельское хозяйствоЭнергетика
СтроительствоАрхитектураИнтерьерПолы и перекрытияПроцесс строительстваСтроительные материалыТеплоизоляцияЭкстерьерОрганизация и управление производством