ПРАВИЛА ПУНКТУАЦИИ.

ПРОЦЕДУРЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ.

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

q Break – завершает выполнение цикла, внутри которого записана;

q Continue – выполняет переход к следующей итерации цикла;

q Exit – выполняет выход из программы или подпрограммы, внутри которой записана;

q Halt – немедленно завершает выполнение программы.

Кроме того, для передачи управления используется оператор перехода goto.

Этот оператор имеет вид:

GOTO N;

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

Использование оператора безусловного перехода оправданно, как правило, в двух случаях:

Ø принудительный выход вниз по тексту программы из нескольких вложенных циклов или операторов выбора;

Ø переход из нескольких мест программы в одно (например, если перед выходом из программы необходимо всегда выполнять какие-либо действия).

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

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

1. Точка с запятой не ставится в разделах описаний после зарезервированных слов unit, uses, label, type, const, varи ставится после завершения каждого описания.

2. Точка с запятой не ставится после begin и перед end, так как эти слова являются операторными скобками, а не операторами.

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

4. В операторах цикла точка с запятой не ставится после while, repeat, do и перед unit.

5. В условных операторах точка с запятой не ставится после then и перед else.

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

Чтобы избежать ошибок, рекомендуется:

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

 

КОНТРОЛЬНЫЕ ВОПРОСЫ

1. Оператор безусловного перехода, его назначение и особенности применения.

2. Назначение, формы записи и порядок выполнения оператора условияif.

3. Особенности использования вложенных условных операторов.

4. Каковы отличия оператора выбора case от оператора условия if?

5. Какие правила должны выполняться при использовании оператора выбора case?

6. Найти ошибки в программе:

program tn1;

const L=18;

label 18,8;

var x,y:integer;

begin

y:=0;

8: read(x);

if x<0 then goto L;

y:=y+x;

goto 18;

L: writeln(y)

end.

7. Найти ошибки в следующих операторах:

а) if 1<x<2 then x:=x+1; y:=0; б) if 1<x and x<2 then

else x:=0; y:=y+1; begin

x:=x+1; y:=0

end;

else begin

x:=0; y:=y+1

end

8. Какие из приведенных ниже операторов являются неправильными и почему?

а) if a<b then a:=a*a else b:=b*b; б) if x and y then s:=s+1; else s:=s-1;

в) if k<>m then k:=m; г) if 5 then s:=s+5;

д) 12: if (a<b) or c then c:=false; е) if (a=b) and p then p:=p+10.5;

ж) 34: if 0<x<2 then if y<1 then 34 з) begin

else goto 15 77: if |x|<1 then goto 5

else 15: y:=sqr(y) begin x:=x/2; goto 77; y:=sin(x) end

end;

 

9. Если n=3, то какое значение будет иметь переменная f после выполнения следующего составного оператора?

begin

f:=1; i:=2;

1: if i>n then goto 9;

f:=f*i; i:=i+1; goto 1;

9: end

 

10. Найти ошибки в следующих операторах:

a) begin b) 34: if 0<x<2

77: if |x|<1 then goto 5 then if y<1 then goto 34 else goto 15

begin x:=x/2; goto 77; else 15: y:=sqr(y)

5: y:=sin(x)

end

end;

 

11. Какое значение будет иметь переменная z после выполнения операторов

z:=0;

if x>0 then if y>0 then z:=1 else z:=2

при следующих значениях переменных x и y: a) x=y=1; b) x=1, y= -1; c) x= -1, y=1.

 

12. Какие значения имеют переменные А и В в результате выполнения условного оператора:

IF A<B THEN A:=B ELSE B:=A, если перед его выполнением А=0.5, В= -1.7?

 

13. Какая задача решается при выполнении оператора:

IF X<Y THEN MAX:=Y ELSE MAX:=X?

14. Каково назначение операторов повтора (цикла)?

15. Какие требования предъявляются к выражениям, управляющим повторениями?

16. В чем отличия операторов цикла while и repeat?

17. В каких случаях предпочтительнее использовать для организации циклов оператор цикла for? Что записывается в заголовке этого оператора?

18. Каким образом в операторе цикла for описывается направление изменения значения параметра цикла?

19. Какие ограничения налагаются на использование управляющей переменной (параметра цикла) в цикле for?

20. Что такое вложенные циклы? Какие дополнительные условия необходимо соблюдать при организации вложенных циклов?

ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ

Задача 1.

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

Задача 2.

В 1202 году итальянский математик Леонард Пизанский (Фибоначчи) предложил такую задачу: пара кроликов каждый месяц дает приплод – двух кроликов (самца и самку), от которых через два месяца уже получается новый приплод. Сколько кроликов будет через год, если в начале года имелась одна пара? Согласно условию задачи числа, соответствующие количеству кроликов, которые появятся через каждый месяц, составляют последовательность 1, 1, 2, 3, 5, 8, 13, 21, 34, … Составьте программу, позволяющую найти все члены числа Фибоначчи, меньшие заданного числа N.

Задача 3.

Старинная задача. Сколько можно купить быков, коров и телят, если плата за быка 10 рублей, за корову – 5 рублей, за теленка – полтинник (0,5 рубля), если на 100 рублей надо купить 100 голов скота.

Задача 4.

Составьте программу получения всех совершенных чисел, меньших заданного числа n. Число называется совершенным, если равно сумме всех своих положительных делителей, кроме самого этого числа. Например, 28 – совершенно, так как 28=1+2+4+7+14. (Грекам были известны четыре совершенных числа: 6, 28, 496, 8128. Эти числа высоко ценились. Даже в XII веке церковь утверждала, что для спасения души необходимо найти пятое совершенное число. Это число было найдено только в XV веке. До сих пор совершенные числа полностью не исследованы – неизвестно, имеется ли конечное их число или бесконечно. Неизвестно ни одного нечетного совершенного числа, но и не доказано, что таких чисел нет.)

Задача 5.

Если сложить все цифры какого-либо числа, затем все цифры найденной суммы и повторять много раз, будет получено однозначное число (цифра), называемая цифровым корнем данного числа. Например, цифровой корень числа 34697 равен 2 (3+4+6+9+7=29; 2+9=11; 1+1=2). Составьте программу для нахождения цифрового корня натурального числа.

Задача 6.

Рассчитать траекторию движения снаряда по формулам

при постоянных скоростях . Время изменяется от нуля с шагом .

Задача 7.

На заданном расстоянии (S) от пушки находится стена. Известен угол наклона () пушки и начальная скорость () снаряда. Попадет ли снаряд в стену, если ?

Задача 8.

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

Задача 9.

Составить программу вычисления значения функции: