Интерактивные анимации, обучающие работе с алгоритмами

Анализируя демонстрационные материалы ЕГЭ по информатике за 2007 год натолкнулся на задачу по работе со строковыми функциями на школьном алгоритмическом языке. Но, например, в учебнике "Информатика и информационные технологии 10-11" Н.Угриновича строковые функции рассматриваются только для VB, а алгоритмический язык в нем не рассматривается. И только в учебнике "Информатика 10-11" Л.З.Шауцукова удалось найти следующую информацию:

Функции и команды обработки строк на Школьном АЯ

 

1. Функция - длин(S) - возвращает количество символов в строке S
2. Операция -S[ i ] - вырезает из строки S символ под номером i, либо S[ i, j ] - позволяет вырезать последовательность символов, начиная с символа под номером i и заканчивая символом j
3. Команда - S[N:M] := SubS, - часть строки S, начиная с позиции N и кончая позицией M, заменяется на подстроку SubS такой же длины.

Но, очевидно для того чтобы выпускнику "жизнь медом не казалась", составители вопросов ЕГЭ переделали данные команды на свой лад. Например, в демо-версии ЕГЭ 2007 задача А20, предполагающая проверку знаний и умений учащихся по использованию функций и команд обработки строк на школьном алгоритмическом языке выглядит следующим образом:

 

А20. В приведенном ниже фрагменте алгоритма, записанном на алгоритмическом языке, переменные a, b и с - имеют тип "строка", а переменные i, k -"целое". Используются следующие функции: Длина(а) - возвращает количество символов в строке а. (тип "целое") . Извлечь(а, i) - возвращает i-й (слева) символ в строке а. (тип "строка"). Склеить(a, b) - возвращает строку, в которой записаны сначала все символы строки а, а затем все символы строки b. (тип " строка")

Значения строк записываются в одинарных кавычках. (например, а := 'дом')

 

Фрагмент алгоритма:

i:= Длина(а) 
k:= 2
ПОКА i > 0
НЦ
с := Извлечь(а, i) 
b :=
Склеить(b, с)
i := i - k 
КЦ

b :=
Склеить(b,'Т') 

Какое значение будет у переменной b после выполнения вышеприведенного фрагмента алгоритма, если значение переменной а было 'ПОЕЗД'

1. 'АДЕПТ'

2. 'АДЗЕОП'

3. 'АДТЕТПТ'

4. 'АДЗОТ'

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

 

Итак, мы имеем a = "ПОЕЗД". Тогда i = 5, k = 2, b = "А"
Проверяем условие i > 0. оно истинно, поэтому приступаем к выполнению тела цикла: с := Извлечь(а, i) Запоминаем в переменной c 5-й символ из "ПОЕЗД". с = "Д" b := Склеить(b, с) к предыдущему значению b приклеили справа значение с.
b = "АД" Изменяем значение i, уменьшая его на 2, поскольку i = i - k, а k = 2.
Получаем, что i = 3. Стало быть, что i все еще больше 0, следовательно выполняем тело цикла еще раз.
с := Извлечь(а, i) т.е. с = "Е" 3-й символ из "ПОЕЗД"
b := Склеить(b, с) - b = "АДЕ" к предыдущему значению b = "АД" приклеили справа значение с= "Е"
Изменяем значение i, уменьшая его снова на 2, поскольку k не изменялось.
Получаем i = 1. i все еще больше 0, выполняем тело цикла еще раз.
с := Извлечь(а, i) - с = "П" (1-й символ из "ПОЕЗД")
b := Склеить(b, с) - b - "АДЕП" (к предыдущему значению b = "ATE" приклеили справа значение с = "П")
Изменяем значение i, уменьшая его на 2.
Получаем i = -1. Проверяем условие i > 0. оно стало ложным, следовательно цикл закончился.
После цикла вновь следует команда склейки но только уже не вырезанной, а указанной буквы b := Склеить(b,'Т') поэтому приклеиваем к получившейся переменной b = "АДЕП" справа букву "Т". Получаем слово "АДЕПТ".

Таким образом приходим к выводу, что правильный ответ имеет номер - 1.

Если желаете отработать данную тему с помощью интерактивных роликов - вам сюда


Copyright © somit.ru & А. Козлов, 2009

Рейтинг@Mail.ru