Ответ: 440

B9 (базовый уровень, время – 4 мин)

Тема: Умение исполнить простейший циклический алгоритм, записанный на алгоритмическом языке.

Что нужно знать:

· Алгоритмы описывают последовательность действий, производимых над объектами, определенными условием задачи;

· переменная – это величина, которая имеет имя, тип и значение; переменная может изменяться во время исполнения алгоритма;

· оператор присваивания служит для записи значения в переменную, который записывается так: <имя переменной> =: <выражение>;

· значение, присвоенное переменной, сохраняется в ней до следующего присваивания этой переменной нового значения; если в переменную записывают новое значение, старое стирается;

· знаки +, -, *, / используются для обозначения операций сложения, вычитания, умножения и деления. Правила выполнения операций и порядок действий соответствуют правилам арифметики.

· запись вида a div b означает результат целочисленного деления a на b (остаток отбрасывается);

· запись вида a mod b означает остаток от деления a на b;

· запись вида a := с + 4*d + 1; означает «вычислить значения выражения справа от знака присваивания := и записать результат в переменную a»; при этом значения других переменных (кроме a) не изменяются;

· циклы используют для многократного выполнения одинаковых операций;

· тело цикла – это последовательность действий, многократно повторяющаяся в процессе выполнения цикла;

· цикл с переменной выполняется N раз, в этом примере переменная i принимает последовательно все значения от 1 до N с шагом 1

for i:=1 to N do begin

{ последовательность действий}

end;

· цикл с условием выполняется до тех пор, пока условие в заголовке цикла не нарушится;

while { условие } do begin

{ последовательность действий}

end;

· зацикливание - эта такая ситуация, когда цикл с условием работает бесконечно долго из-за того, что условие все время остается истинным.

 

Задача 1: Определите значение переменной c после выполнения следующего фрагмента программы.

a := 40;

b := 10;

b := - a / 2 * b;

if a < b then

c := b - a

else

c := a - 2 * b;

Решение:

1) выполним вручную все действия программы;

2) составим таблицу, где в первом столбце записаны операторы программы, а в остальных показаны изменения переменных при выполнении этих операторов;

3) в задаче используются три переменные: a, b, c;

  a b c
a := 40; b := 10;  

4) операторb := - a / 2 * b;

ВНИМАНИЕ: умножение и деление имеют равный приоритет, и в такой цепочке сначала выполнится деление, а потом умножение

b := - (40 / 2) * 10 = - 20 * 10 = - 200

  a b c
a := 40; b := 10;  
b := - a / 2 * b;   -200  

5) проверяем условие «a < b»; оно «ложно», поэтому выполняется оператор, стоящий после слова else: c := a-2*b = 40 – 2*(-200) = 440:

  a b c
a := 40; b := 10;  
b := - a / 2 * b;   -200  
c := a-2*b    

 

Ответ: 440

Задача 2:Запишите значение переменной s, полученное в результате работы следующей программы. Текст программы приведён на трёх языках программирования.

Алгоритмический язык Бейсик Паскаль
алг нач цел s,k s:=8 нц для k от 3 до 8 s:=s+8 кц вывод s кон DIM k, s AS INTEGER s = 8 FOR k = 3 TO 8 s = s + 8 NEXT k PRINT s Var s,k: integer; Begin s := 8; for k := 3 to 8 do s := s + 8; writeln(s); End.

Решение:

1) рассмотрим этот алгоритм, записанный на разных языках;

2) в задаче использованы переменные k и s целочисленного типа:

Алгоритмический язык Бейсик Паскаль
цел s, k DIM k, s AS INTEGER Var s,k: integer;

 

3) Далее переменной s присваивается значение 8:

Алгоритмический язык Бейсик Паскаль
s := 8 s = 8 s := 8

 

4) далее описывается цикл, где в качестве параметра выступает переменная k, которая изменяется от 3 до 8 с шагом 1 (т. е. будет принимать последовательно значения 3, 4, 5, 6, 7 и 8).

Алгоритмический язык Бейсик Паскаль
нц для k от 3 до 8 s := s + 8 кц FOR k = 3 TO 8 s = s + 8 NEXT k for k := 3 to 8 do s := s + 8;

 

В теле цикла только одна команда s := s + 8, т.е. эта операция будет выполняться на каждом шаге цикла.

5) В итоге на экран выводится значение переменной s:

Алгоритмический язык Бейсик Паскаль
вывод s PRINT s writeln(s);

В теле цикла происходит увеличение значения переменной s на 8. Т.к. параметр цикла увеличивается от 3 до 8 с шагом 1, то при выполнении программы тело цикла будет выполняться 6 раз ( k будет равно 3, 4, 5, 6, 7, 8). Следовательно, переменная s увеличится на 8 * 6 = 48. А если начальное значение переменной s = 8 и после выполнения программы оно увеличится на 48, то в конечном итоге значение переменной s станет равным 56.