..

Сайт города Попасная.
 

 

 

Интернет издания:

ПОПАСНЯНСКАЯ ПРАВДА

 


Аренда звука колонок аренда колонок киев.

 

 

 

3.7. Пустой оператор

В языке Pascal определен пустой оператор, который не выполняет никакого действия. Например, завершить выполнение программы 3.2. при неправильном вводе коэффициента А квадратного уравнения Ах*x+Вх+С=0 можно переходом именно на такой оператор, как это сделано в приведенной ниже программе.

Программа 3.12.

Label 10;
Var
a,b,c,d,xl,x2:Real;
Begin
Write('Введите коэффициенты A,B,C; А не равно 0 ');
Readln(a,b,c);
If a=0 . .
Then Begin
Writeln ('Коэффициент А не должен быть равен 0');
GoTo 10; End;
d:=sqr(b)-4*a*c;
If d>=0 Then
Begin
x1:=(-b+sqrt(d))/2/a;
x2:=(-b-sqrt(d))/2/a;
Writeln('Корни уравнения: ',xl:6:2,x2:6:2);
End Else
Writeln('Уравнение не имеет решений');
10:
End.

В предпоследней строке программы, на которую выполняется переход, оператор отсутствует, то есть переход осуществляется к пустому оператору, а по правилам языка перед словом End символ «;» не ставится. Наличие такого символа перед словом End в других программах воспринимается компилятором как присутствие пустого оператора. Однако в ряде случаев появление пустого оператора при неверном написании программы может привести к серьезным ошибкам в ее выполнении. Рассмотрим, например, выполнение следующего фрагмента программы:
While n>=0 Do;
Begin
If n>max Then max:=n;
Write('Введите число’);
Readln(n);
End;

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

3.8. Система операторов

В предыдущих разделах приведено 9 типов операторов:
1. Оператор присваивания.
2. Оператор условия, имеющий две разновидности.
3. Составной оператор.
4. Оператор выбора, имеющий две разновидности.
5. Оператор безусловного перехода.
6. Пустой оператор.
7. Оператор цикла с предварительной проверкой условия.
8. Оператор цикла с последующей проверкой условия.
9. Оператор цикла с параметром, имеющий две разновидности.
В системе TurboPascal всего существует 11 типов операторов, два из которых до сих пор еще не были представлены. Один из них применялся в предыдущих разделах - это процедурный оператор, или оператор вызова процедуры. Второе название наиболее точно отражает назначение этого оператора: с его помощью осуществляется обращение к любой процедуре, независимо оттого, является ли процедура стандартной, например, процедур ввода-вывода Readln и Writeln, либо созданной самим программистом. Оператор состоит из имени процедуры и заключенного в круглые скобки списка фактических параметров. Как и любой другой, процедурный оператор заканчивается символом «точка с запятой». Оператор для действий над записями With предназначен для обработки структурированных данных типа запись и будет представлен в разделе 4.3. Операторы присваивания, безусловного перехода, пустой и вызова процедуры относятся к группе простых операторов. Остальные составляют группу структурированных операторов, поскольку в них содержатся другие операторы любых типов. При написании программ надо помнить назначение и относительно несложные правила построения всех операторов, это сэкономит время и избавит от досадных, а иногда и трудно обнаруживаемых ошибок. Так, внутренний оператор в цикле с последующей проверкой условия выполняются всегда хотя бы один раз, а внутренний оператор в цикле с предварительной проверкой условия обязательно должно менять значение выражения, входящего в условие, во Избежание бесконечного цикла.

Вопросы и задачи к разделу:

1. Дайте точное название оператора if c>o Then d:=Abs(x);
2. Введите 3 числа, найдите минимальную разность и максимальную сумму для всех пар чисел.
Указание: для решения этой задачи можно применить алгоритм поиска текущего минимума (максимума), но более простое решение достигается сортировкой данных, например, перестановкой значений по не возрастанию.
3. Замените оператор If b Then Writeln(7>5) Else Writeln(b); Простым оператором, выполняющим то же самое действие.
Указание: проведите синтаксический анализ оператора и рассмотрите все возможные случаи.
4. Сколько типов операторов содержится в этом фрагменте:
if x<o Then
Begin
y:=-l;
Write(Sqrt(x*y));
End Else; i:=i+l;

5. Какие правила языка нарушены в программе:
Var
n:Byte;
Readln(n);
Case n>0 Of 1..9: Write('Однозначное');
10..99: 'Двузначное';
Else GoTo End;
Writeln('число');
End.

4. Предложите критерии для сравнения условного оператора и оператора выбора.
5. Приведите описание алгоритма для цикла с постусловием, с предусловием и с параметром.
6. В чем сходство и отличие операторов с предусловием и постусловием?
7. Перечислите все зарезервированные слова, применяемые в операторах циклов.
8. Перечислите правила написания для каждого типа оператора.
9. В каких случаях не может быть выполнен синтаксически правильный оператор присваивания?
10. Какие типы операторов имеют разновидности?
11. Назовите типы операторов, для которых требуется соблюдения правила соответствия типов данных.
12. Треугольник задается длинами своих сторон. Определите тип треугольника.
Указание: не забудьте убедиться в существовании такой фигуры.
13. Числа вводятся с клавиатуры, пока не будет введен 0. Вычислите среднее арифметическое введенных чисел.
Указание: первое же число может оказаться нулем.
14. Вводится натуральное число, содержащее не более 4 цифр. Является ли это число палиндромом (перевертышем)?
15. Компьютер должен отгадать задуманное человеком натуральное число, не превосходящее 1000.
Указание: примените метод половинного деления.
16. Вводится натуральное число, содержащее не более 4 цифр. Верно ли, что оно содержит N одинаковых цифр? Число N также вводится с клавиатуры.

 

Вернуться к оглавлению

 
Popasnaya.com.ua Web-Source 2003 - 2004 / babelyuk jr / All Rights Reserved