Решение задач типа 9 ГИА по информатике
Запишите значение переменной 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. |
Ответ: ___________________________.
Решение:
Итак, рассмотрим этот алгоритм, записанный на разных языках.
Вначале объявляется, что будут использованы переменные k и s целочисленного типа
Алгоритмический язык | Бейсик | Паскаль |
цел s, k | DIM k, s AS INTEGER | Var s,k: integer; |
Далее переменной s присваивается значение 8.
Алгоритмический язык | Бейсик | Паскаль |
s := 8 | s = 8 | s := 8 |
После этого описывается цикл, где в качестве параметра выступает переменная 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. Т. е. эта операция будет выполняться на каждой итерации (на каждом шаге) цикла.
И в самом конце на экран выводится значение переменной 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.
Ответ: 56
Решение задач типа 10 ГИА по информатике
В таблице Dat хранятся данные о численности учеников в классах (Dat[1] число учеников в первом классе, Dat[2] – во втором и т. д.). Определите, какое число будет напечатано в результате работы следующей программы. Текст программы приведён на трёх языках программирования.
Алгоритмический язык | Бейсик | Паскаль |
алг нач целтаб Dat[1:11] цел k, m Dat[1] := 20; Dat[2] := 25 Dat[3] := 19; Dat[4] := 25 Dat[5] := 26; Dat[6] := 22 Dat[7] := 24; Dat[8] := 28 Dat[9] := 26; Dat[10] := 21 Dat[11] := 27 m := 0 нц для k от 1 до 11 если Dat[k] 22 то m := m + 1 все кц вывод m кон | DIM Dat(11) AS INTEGER DIM k,m AS INTEGER Dat(1) = 20: Dat(2) = 25 Dat(3) = 19: Dat(4) = 25 Dat(5) = 26: Dat(6) = 22 Dat(7) = 24: Dat(8) = 28 Dat(9) = 26: Dat(10) = 21 Dat(11) = 27 m = 0 FOR k = 1 TO 11 IF Dat(k) 22 THEN m = m + 1 END IF NEXT k PRINT m | Var k, m: integer; Dat: array[1..11] of integer; Begin Dat[1] := 20; Dat[2] := 25; Dat[3] := 19; Dat[4] := 25; Dat[5] := 26; Dat[6] := 22; Dat[7] := 24; Dat[8] := 28; Dat[9] := 26; Dat[10] := 21; Dat[11] := 27; m := 0; for k := 1 to 11 do if Dat[k] 22 then begin m := m + 1 end; writeln(m) End. |
Ответ: ___________________________.
Решение:
Рассмотрим программу пошагово. Итак, в самом начале объявляются переменные, которые будут использоваться (переменные k и m), а так же массив Dat, содержащий 11 элементов (от 1 до 11).
Примечание. В массиве Dat, который описан на языке Basic будет 12 элементов, так как нумерация начинается не с первого элемента, а с нулевого.
Алгоритмический язык | Бейсик | Паскаль |
целтаб Dat[1:11] цел k, m | DIM Dat(11) AS INTEGER DIM k,m AS INTEGER | Var k, m: integer; Dat: array[1..11] of integer; |
Далее идет заполнение массива. Например, элементу массива с индексом 1 присваивается значение 20, элементу с индексом 2 — 25 и так далее. В итоге полученный массив можно представить в таком виде:
Массив Dat
Индекс | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
Значение | 20 | 25 | 19 | 25 | 26 | 22 | 24 | 28 | 26 | 21 | 27 |
Далее переменной m присваивается значение 0. После чего начинается цикл с параметром k, при этом k изменяется от 1 до 11 с шагом 1.
В теле цикла происходит проверка условия
Алгоритмический язык | Бейсик | Паскаль |
если Dat[k] 22 то m := m + 1 все | IF Dat(k) 22 THEN m = m + 1 END IF | if Dat[k] 22 then begin m := m + 1 end; |
Значение элемента массива с индексом k сравнивается с числом 22. Если элемент массива больше 22, то переменная m увеличивается на 1. В противном случае ничего не происходит.
В самом конце программы на экран выводится значение переменной m.
Итак, мы перевели программу на человеческий язык, теперь давайте подумаем, что же в итоге получим после ее выполнения. Нас интересует цикл — именно там происходит изменение значения переменной m. До цикла ее значение равно нулю. Далее программа перебирает все элементы массива и сравнивает их с числом 22. И если элемент массива больше 22, то переменная m увеличивается на 1. Таким образом, нам необходимо посчитать все элементы массива, которые больше 22 — их число и будет равно значению переменной m. Таких элементов 7 — это элементы с индексами 2, 4, 5, 7, 8, 9 и 11.
Следует обратить внимание на элемент под номером 6, который равен 22. Так как сравнение у нас строгое ( знак ), то его мы не учитываем, так как 22 не больше 22. Учитывать его можно было бы в том случае, если бы в сравнении стоял знак =.
Итак, правильный ответ 7.