Решение задач типа 9 ГИА по информатике
В прошлый раз мы рассмотрели решение задач типа 8 ГИА по информатике, которые рассчитаны на проверку умения исполнять линейные алгоритмы. Решение задач типа 9 ГИА по информатике подразумевает умение исполнить простейший циклический алгоритм, записанный на алгоритмическом язык.
Давайте рассмотрим решение задачи 9 ГИА по информатике из демоверсии 2013 года.
Запишите значение переменной 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
Автор: Александр Чернышов
9 комментариев
вопрос , когда мы 8 умножаем на 6 ( 6 это количество выполнений уравнения ) а 8 это что
8 — это на столько увеличивается значение переменной на каждом шаге цикла (s := s + 8)
Т. е. так как цикл выполняется 6 раз и на каждом шаге переменная s увеличивается на 8, то в конечном итоге она увеличится на 8+8+8+8+8+8 или на 6*8.
Андрей Слабов
Только тут ошибка. Не dim, а var.
На самом деле все просто. Итак, мы объявили две целочисленные переменные i и k. Далее идет блок операторов (после begin)
k:=4 переменной k присвоили значение 4
for i := 1 to 3 do — цикл, в котором переменная i меняется от 1 до 3 с шагом 1. Т. е. принимает значения 1, 2, 3.
k := 2*k + i — переменной k присваивается новое значение. На первой итерации (шаге) цикла, когда i=1 получим:
k:=2*4+1 = 9;
На второй (i=2)
k:=2*9+2 = 20;
На третьей (i=3)
k:=2*20+3 = 43
В строке writeln(k) значение k выводится на экран. А его мы только что нашли. На экране мы увидим 43.
b =12
c =0
WHILE b4
c= c+b
b= b-2
WEND
PRINT c
END
Как ты решать?
Александр, если я правильно понял, то в конце будет вывод «12»
ну или 36)
Поскажите пожалуйста как это решать
var b, c: integer;
begin
b:=2;
c:=0;
while b6 do
begin
c:=c + b;
b:=b + 1
end;
write(c);
end.
там: while b 6 do
Анна, не понятно. Между b и 6 должен быть знак, его нет.