СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

13.4.Еще пример задания

Категория: Информатика

Нажмите, чтобы узнать подробности

Для подготовки к ОГЭ И ЕГЭ  по информатике

Просмотр содержимого документа
«13.4.Еще пример задания»

Еще пример задания:

В приведенном ниже фрагменте алгоритма, записанном на алгоритмическом языке, переменные a, b, c имеют тип «строка», а переменные i, k – тип «целое». Используются следующие функции:

Длина(a) – возвращает количество символов в строке a. (Тип «целое»)

Извлечь(a,i) – возвращает i-тый (слева) символ в строке a. (Тип «строка»)

Склеить(a,b) – возвращает строку, в которой записаны сначала все символы
строки
a, а затем все символы строки b. (Тип «строка»)

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

i := Длина(a)

k := 2

b := 'А'

пока i 0

нц

c := Извлечь(a,i)

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

i := i – k

кц

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

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

1) ‘АДЕПТ’ 2) ‘АДЗЕОП’ 3) ‘АДТЕТПТ’ 4) ‘АДЗОТ’

Решение:

  1. эта задача более близка к классическому программированию, здесь выполняется обработка символьных строк; вся информация для успешного решения, вообще говоря, содержится в условии, но желательно иметь хотя бы небольшой опыт работы с символьными строками на Паскале (или другом языке)

  2. заметим, что последняя команда алгоритма, b:=Склеить(b,'Т'), добавляет букву 'Т' в конец строки b, поэтому ответ 2 – явно неверный (строка должна оканчиваться на букву 'Т', а не на 'П')

  3. для решения будем использовать ручную прокрутку; здесь пять переменных: a, b, c, i, k, для каждой из них выделим столбец, где будем записывать изменение ее значения

  4. перед выполнением заданного фрагмента мы знаем только значение a, остальные неизвестны (обозначим их знаком вопроса):


    a

    b

    c

    i

    k


    'ПОЕЗД'

    ?

    ?

    ?

    ?

  5. в первой команде длина строки a (она равна 5 символам) записывается в переменную i:


    a

    b

    c

    i

    k


    'ПОЕЗД'

    ?

    ?

    ?

    ?

    i:=Длина(a)




    5


  6. следующие два оператора записывают начальные значения в k и b:


    a

    b

    c

    i

    k


    'ПОЕЗД'

    ?

    ?

    ?

    ?

    i:=Длина(a)




    5


    k:=2





    2

    b:='А'


    'A'




  7. далее следует цикл пока с проверкой условия i0 в начале цикла; сейчас i=50, то есть, условие выполняется, цикл начинает работать и выполняются все операторы в теле цикла:


a

b

c

i

k


'ПОЕЗД'

?

?

?

?

i:=Длина(a)




5


k:=2





2

b:='А'


'A'




i 0?

да

c:=Извлечь(a,i)

i:=Длина(a)




5

b:=Cклеить(b,c)

k:=2





i:=i–k




3


  • поскольку i=5, вызов функции Извлечь(a,i) выделяет из строки a символ с номером 5, это 'Д';

  • следующей командой этот символ приписывается в «хвост» строки b, теперь в ней хранится цепочка 'АД';

  • в команде i:=i-k значение переменной i уменьшается на k (то есть, на 2)

  1. далее нужно перейти в начало цикла и снова проверить условие i0, оно опять истинно, поэтому выполняется следующий шаг цикла, в котором к строке b добавляется 3-й символ строки a, то есть 'Е':


    a

    b

    c

    i

    k

    ...

    'ПОЕЗД'

    'АД'

    3

    2

    i 0?

    да

    c:=Извлечь(a,i)



    'Е'



    b:=Cклеить(b,c)


    'АДЕ'




    i:=i–k




    1


  2. условие i0 истинно, поэтому тело цикла выполняется еще один раз, к строке b добавляется 1-й символ строки a, то есть 'П':


    a

    b

    c

    i

    k

    ...

    'ПОЕЗД'

    'АДЕ'

    1

    2

    i 0?

    да

    c:=Извлечь(a,i)



    'П'



    b:=Cклеить(b,c)


    'АДЕП'




    i:=i–k




    –1


  3. теперь i=-1, поэтому при очередной проверке условие i0 в начале цикла оказывается ложным, выполнение цикла заканчивается, и исполнителю остается выполнить единственную строчку после цикла, которая дописывает в конец строки b букву 'Т':


    a

    b

    c

    i

    k

    ...

    'ПОЕЗД'

    'АДЕП'

    –1

    2

    i 0?

    нет

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


    'АДЕПТ'




  4. у нас получилось, что в конце выполнения фрагмента алгоритма в переменной b будет записана последовательность символов 'АДЕПТ'

  5. таким образом, правильный ответ – 1.

Возможные проблемы:

    • таблица получилась достаточно громоздкая, однако она позволяет наиболее наглядно решить задачу