«Осень 2024»

Разбор заданий № 8, 9, 10 - раздел "Обработка информации"

Материал содержит разбор заданий № 8, 9 и 10 - раздел "Обработка информации" (Алгоритм, свойства алгоритмов, способы записи алгоритмов. Блок-схемы. Представление о программировании. Алгоритмические конструкции.) и примеры для самоподготовки.

Олимпиады: Информатика 1 - 11 классы

Содержимое разработки

Задание 8

пример 8.1

В программе := обозначает оператор присваивания, знаки + , – , * , / - операции сложения, вычитания, умножения и деления. Правила выполнения операций и порядок действий соответствует правилам арифметики.

Определите значение переменной a после выполнения данного алгоритма:

a := 4

b := 3

b := a + 2 * b

a := a * 5 / b

В ответе укажите одно целое число – значение переменной a.

Решение

Составить таблицу трассировки

Строка алгоритма

Что выполняется

Значение a

Значение b

до

после

до

после

a := 4

Число 4 записывается в a

4

b := 3

Число 4 записывается в b

4

4

3

b := a + 2 * b

вычисляется значение 4+(2*3)=10 и записывается в b

4

4

3

10

a := a * 5 / b

вычисляется значение

(4*5)/10=2 и записывается в a

4

2

10

10


Ответ: 2


пример 8.2

Определить значение переменной a после выполнения данного алгоритма:

a := 3

b := 6

b := 12 + a * b

a := b / 5 * a

В ответе укажите одно целое число – значение переменной a.

Решение

Составить таблицу трассировки

Строка алгоритма

Что выполняется

Значение a

Значение b

до

после

до

после

a := 3

Число 3 записывается в a

3

b := 6

Число 6 записывается в b

3

3

6

b := 12 + a * b

вычисляется значение 12+(3*6)=30 и записывается в b

3

3

6

30

a := b / 5 * a

вычисляется значение

(30/5)*3=18 и записывается в a

3

18

30

30


Ответ: 18

задания для самоподготовки

пример 8.3


Определите значение переменной b после выполнения алгоритма:

а := 6

b := 4

а := 2*а + 3*b

b := a/2*b

В ответе укажите одно целое число — значение переменной b.



пример 8.4


Определите значение переменной b после выполнения алгоритма:

а := 4

b := 10

а := b - a*2

b := 24/a*4

В ответе укажите одно целое число — значение переменной b.



пример 8.5


Определите значение переменной b после выполнения алгоритма:

а := 10

b := 110

b := 110 + b/a

a := b/11*a

В ответе укажите одно целое число — значение переменной a.





задание 9

пример 9.1

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

Алгоритмический язык

Бейсик

Паскаль

алг

нач

цел  s, k

s := 0

 нц для k от 4 до 10

  s := s + 11

кц

вывод s

кон

DIM k, s AS INTEGER

s = 0

FOR k = 4 TO 10

  s = s + 11

NEXT k

PRINT s

END

var s,k: integer;

begin

 s := 0;

 for k := 4 to 10 do

   s := s + 11;

 writeln(s);

end.

 

 

Решение:

  1. напечатано в результате работы программы будет значение переменной s

  2. найдём значение переменной s:

цикл в программе (строка – for k := 4 to 10) будет выполняться 7 раз, = 10 – 4 + 1, т.е. при k = 4, 5, 6, 7, 8, 9, 10

  1. на каждом шаге цикла переменная s, увеличивается на 11 (строка – s := s + 11) и так как начальное значение переменной s было равно 0 (строка – s :=0), значение – s будет равно 7х11=77

Ответ: 77



пример 9.2

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

Алгоритмический язык

Бейсик

Паскаль

алг

нач

цел  y, n

y := 5

 нц для n от 1 до 4

  y := y + 5*n

кц

вывод y

кон

DIM n, y AS INTEGER

y = 5

FOR n = 1 TO 4

 y := y + 5*n

NEXT n

PRINT y

END

var y,n: integer;

begin

 y := 5;

 for n := 1 to 4 do

  y := y + 5*n;

 writeln(y);

end.

 


Решение:

  1. напечатано в результате работы программы будет значение переменной y

  2. найдём значение переменной y:

цикл в программе (строка – for n := 1 to 4) будет выполняться 4 раз, = 4 – 1 + 1, т.е. при n = 1, 2, 3, 4

  1. на каждом шаге цикла переменная y, увеличивается на 5*n (строка – y := y + 5*n) и так как начальное значение переменной y было равно 5 (строка – y :=5), на первом шаге цикла значение – y будет равно 10 = (5+5*1),

на втором шаге цикла y будет равен 20 = (10+5*2),

на третьем шаге цикла y будет равен 35 = (20+5*3)

на четвёртом шаге цикла y будет равен 55 = (35+5*4)

Ответ: 55


задания для самоподготовки


пример 9.3

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

Алгоритмический язык

Бейсик

Паскаль

алг

нач

цел  s, k

s := 8

 нц для k от 2 до 8

  s := s + 8

кц

вывод s

кон

DIM k, s AS INTEGER

s = 8

FOR k = 2 TO 8

  s = s + 8

NEXT k

PRINT s

END

var s,k: integer;

begin

 s := 8;

 for k := 2 to 8 do

   s := s + 8;

 writeln(s);

end.

 




пример 9.4

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

Алгоритмический язык

Бейсик

Паскаль

алг

нач

цел  s, n

s := 1

 нц для n от 10 до 13

  s := s*3

кц

вывод s

кон

DIM n, s AS INTEGER

s = 1

FOR n = 10 TO 13

  s = s*3

NEXT n

PRINT s

END

var s,n: integer;

begin

 s := 1;

 for n := 10 to 13 do

   s := s*3;

 writeln(s);

end.

 




пример 9.5

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

Алгоритмический язык

Бейсик

Паскаль

алг

нач

цел  s, k

s := 1

 нц для k от 1 до 9

  s := s + k

кц

вывод s

кон

DIM k, s AS INTEGER

s = 1

FOR k = 1 TO 9

  s = s + k

NEXT k

PRINT s

END

var s,k: integer;

begin

 s := 1;

 for k := 1 to 9 do

   s := s + k;

 writeln(s);

end.

 



задание 10

пример 10.1

В таблице Dat хранятся данные о количестве сделанных учениками заданий (Dat[1] заданий сделал первый ученик, Dat[2] – второй и т. д.). Определите, какое число будет напечатано в результате работы следующей программы. Текст программы приведён на трёх языках программирования.

Алгоритмический язык

Бейсик

Паскаль

алг

нач

  целтаб Dat[1:10]

  цел  k, m

  Dat[1] := 7; Dat[2] := 9

  Dat[3] := 10; Dat[4] := 5

  Dat[5] := 6; Dat[6] := 7

  Dat[7] := 9; Dat[8] := 8

  Dat[9] := 6; Dat[10] := 9

  m := 0

  нц для k от 1 до 10

    если Dat[k] то

     m := m + 1

    все

  кц

  вывод m

кон

DIM Dat(10) AS INTEGER

DIM k,m AS INTEGER

Dat(1) = 7:  Dat(2) = 9

Dat(3) = 10: Dat(4) = 5

Dat(5) = 6:  Dat(6) = 7

Dat(7) = 9:  Dat(8) = 8

Dat(9) = 6:  Dat(10) = 9

m = 0 

FOR k = 1 TO 10

 IF Dat(k)

  m = m + 1

 END IF

NEXT k

PRINT m

END

var k, m: integer;

 Dat: array[1..10] of integer;

begin

  Dat[1] := 7;  Dat[2] := 9;

  Dat[3] := 10; Dat[4] := 5;

  Dat[5] := 6;  Dat[6] := 7;

  Dat[7] := 9;  Dat[8] := 8;

  Dat[9] := 6;  Dat[10] := 9;

  m := 0;

  for k := 1  to 10 do

    if  Dat[k]

      m := m + 1;

  writeln(m)

end.


Решение:

  1. напечатано в результате работы программы будет значение переменной m (строка программы writeln(m))

  2. В программе сначала задаются значения отдельных элементов массива (Dat[i]), а потом в один проход по массиву (блок строк for k := 1  to 10 do … ...;) происходит какая-то его обработка. По алгоритму следует понять, какая обработка происходит.

  3. в теле цикла последовательно элементы массива сравниваются с 7 (строка - if  Dat[k] ), если значение элемента массива меньше семи, то происходит увеличение переменной m на 1 (строка - m := m + 1), таким образом программа реализует алгоритм подсчета количества элементов массива меньше 7.

  4. пересчитаем сколько элементов массива которые имеют значение меньше 7 – это будут Dat[4] равный 5, Dat[5] равный 6 и Dat[9] равный 6, значит переменная m будет равна 3

Ответ: 3




пример 10.2

В таблице Dat хранятся данные о количестве сделанных учениками заданий (Dat[1] заданий сделал первый ученик, Dat[2] – второй и т. д.). Определите, какое число будет напечатано в результате работы следующей программы. Текст программы приведён на трёх языках программирования.

Алгоритмический язык

Бейсик

Паскаль

алг

нач

  целтаб Dat[1:10]

  цел  k, m

  Dat[1] := 7; Dat[2] := 9

  Dat[3] := 10; Dat[4] := 5

  Dat[5] := 6; Dat[6] := 7

  Dat[7] := 9; Dat[8] := 8

  Dat[9] := 6; Dat[10] := 9

  m := 0

  нц для k от 1 до 10

    если Dat[k] 7  то

     m := m + Dat[k]

    все

  кц

  вывод m

кон

DIM Dat(10) AS INTEGER

DIM k,m AS INTEGER

Dat(1) = 7:  Dat(2) = 9

Dat(3) = 10: Dat(4) = 5

Dat(5) = 6:  Dat(6) = 7

Dat(7) = 9:  Dat(8) = 8

Dat(9) = 6:  Dat(10) = 9

m = 0 

FOR k = 1 TO 10

 IF Dat(k) 7 THEN

  m = m + Dat(k)

 END IF

NEXT k

PRINT m

END

var k, m: integer;

 Dat: array[1..10] of integer;

begin

  Dat[1] := 7;  Dat[2] := 9;

  Dat[3] := 10; Dat[4] := 5;

  Dat[5] := 6;  Dat[6] := 7;

  Dat[7] := 9;  Dat[8] := 8;

  Dat[9] := 6;  Dat[10] := 9;

  m := 0;

  for k := 1  to 10 do

    if  Dat[k] 7 then

      m := m + Dat[k];

  writeln(m)

end.


  1. напечатано в результате работы программы будет значение переменной m (строка программы writeln(m))

  2. В программе сначала задаются значения отдельных элементов массива (Dat[i]), а потом в один проход по массиву (блок строк for k := 1  to 10 do … ...;) происходит какая-то его обработка. По алгоритму следует понять, какая обработка происходит.

  3. в теле цикла последовательно элементы массива сравниваются с 7 (строка - if  Dat[k] 7), если значение элемента массива больше семи, то происходит увеличение переменной m на значение этого элемента массива (строка - m := m + Dat[k]), таким образом программа реализует алгоритм подсчета сумму значений элементов массива, которые больше 7.

  4. таких элементов четыре Dat[2] равный 9, Dat[3] равный 10,и Dat[7] равный 9 и Dat[10] равный 9, таким образом в итоге переменная m будет равна сумме значений этих элементов массива.

Ответ: 45



пример 10.3

В таблице Dat хранятся данные о количестве сделанных учениками заданий (Dat[1] заданий сделал первый ученик, Dat[2] – второй и т. д.). Определите, какое число будет напечатано в результате работы следующей программы. Текст программы приведён на трёх языках программирования.

Алгоритмический язык

Бейсик

Паскаль

алг

нач

  целтаб Dat[1:10]

  цел  k, m, n

  Dat[1] := 7; Dat[2] := 9

  Dat[3] := 10; Dat[4] := 5

  Dat[5] := 6; Dat[6] := 7

  Dat[7] := 5; Dat[8] := 8

  Dat[9] := 6; Dat[10] := 9

  m := 10; n := 0

  нц для k от 1 до 10

    если Dat[k] то

      m := Dat[k]

      n := k

    все

  кц

  вывод n

кон

DIM Dat(10) AS INTEGER

DIM k, m, n AS INTEGER

Dat(1) = 7:  Dat(2) = 9

Dat(3) = 10: Dat(4) = 5

Dat(5) = 6:  Dat(6) = 7

Dat(7) = 5:  Dat(8) = 8

Dat(9) = 6:  Dat(10) = 9

m = 10 : n = 0

FOR k = 1 TO 10

 IF Dat(k)

  m = Dat(k)

  n = k

 END IF

NEXT k

PRINT n

END

var k, m, n: integer;

Dat: array[1..10] of integer;

begin

  Dat[1] := 7;  Dat[2] := 9;

  Dat[3] := 10; Dat[4] := 5;

  Dat[5] := 6;  Dat[6] := 7;

  Dat[7] := 5;  Dat[8] := 8;

  Dat[9] := 6;  Dat[10] := 9;

  m := 10; n := 0;

  for k := 1  to 10 do

    if  Dat[k]

      begin

        m := Dat[k];

        n := k

      end;

  writeln(n)

end.


Решение:

  1. напечатано в результате работы программы будет значение переменной n (строка программы writeln(n))

  2. В программе сначала задаются значения отдельных элементов массива (Dat[i]), а потом в один проход по массиву (блок строк for k := 1  to 10 do … ...;) происходит какая-то его обработка. По алгоритму следует понять, какая обработка происходит.

  3. в теле цикла последовательно элементы массива сравниваются со значением переменной m – исходное значение 10 (строка - if  Dat[k] ), если значение элемента массива не больше переменной m, то переменной m присваивается значение этого элемента массива (строка - m := Dat[k];), и переменной n присваивается порядковый номер этого элемента массива (строка - n := k), таким образом программа реализует алгоритм поиска порядкового номера элемента массива, который имеет наименьшее значение.

  4. таких элементов два Dat[4] равный 5 и Dat[7] равный 5, на седьмом шаге выполнения цикла сравнивая значение Dat[7] с переменной m которая равна Dat[4] произойдет присваивание переменной n значение индекса 7, т.к. условие сравнения не строгое, таким образом в итоге переменная n будет равна 7

Ответ: 7



задания для самоподготовки


пример 10.4

В таблице 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

    если k 9  то

     m := m + Dat[k]

    все

  кц

  вывод 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 k 9 THEN

  m = m + Dat(k)

 END IF

NEXT k

PRINT m

END

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  k 9 then

      m := m + Dat[k];

  writeln(m)

end.



пример 10.5

В таблице 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 := 30

  нц для k от 1 до 11

    если Dat[k] то

     m := Dat[k]

    все

  кц

  вывод 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 = 30 

FOR k = 1 TO 11

 IF Dat(k)

  m = Dat(k)

 END IF

NEXT k

PRINT m

END

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 := 30;

  for k := 1  to 11 do

    if  Dat[k]

      m := Dat[k];

  writeln(m)

end.


пример 10.6

В таблице Dat хранятся данные о количестве сделанных учениками заданий (Dat[1] заданий сделал первый ученик, Dat[2] – второй и т.д.). Определите, какое число будет напечатано в результате работы следующей программы. Текст программы приведён на трёх языках программирования.

Алгоритмический язык

Бейсик

Паскаль

алг

нач

  целтаб Dat[1:10]

  цел  k, m

  Dat[1] := 7; Dat[2] := 9

  Dat[3] := 10; Dat[4] := 5

  Dat[5] := 6; Dat[6] := 7

  Dat[7] := 9; Dat[8] := 8

  Dat[9] := 6; Dat[10] := 9

  m := 0

  нц для k от 1 до 10

    если Dat[k] 6  то

     m := m + 1

    все

  кц

  вывод m

кон

DIM Dat(10) AS INTEGER

DIM k,m AS INTEGER

Dat(1) = 7:  Dat(2) = 9

Dat(3) = 10: Dat(4) = 5

Dat(5) = 6:  Dat(6) = 7

Dat(7) = 9:  Dat(8) = 8

Dat(9) = 6:  Dat(10) = 9

m = 0 

FOR k = 1 TO 10

 IF Dat(k) 6 THEN

  m = m+1

 END IF

NEXT k

PRINT m

END

var k, m: integer;

 Dat: array[1..10] of integer;

begin

  Dat[1] := 7;  Dat[2] := 9;

  Dat[3] := 10; Dat[4] := 5;

  Dat[5] := 6;  Dat[6] := 7;

  Dat[7] := 9;  Dat[8] := 8;

  Dat[9] := 6;  Dat[10] := 9;

  m := 0;

  for k := 1  to 10 do

    if  Dat[k] 6 then

      m := m + 1;

  writeln(m)

end.




пример 10.7

В таблице Dat хранятся данные измерений среднесуточной температуры за 10 дней в градусах (Dat[1] – данные за первый день, Dat[2] –за второй и т. д.). Определите, какое число будет напечатано в результате работы следующей программы. Текст программы приведён на трёх языках программирования.

Алгоритмический язык

Бейсик

Паскаль

 алг

нач

  целтаб Dat[1:10]

  цел  k, m

  Dat[1] := 2;  Dat[2] := 5

  Dat[3] := 8;   Dat[4] := 5

  Dat[5] := 4;   Dat[6] := 2

  Dat[7] := 0;   Dat[8] := 3

  Dat[9] := 4;   Dat[10] := 5

  m := 0

  нц для k от 1 до 10

    если Dat[k] то

     m := Dat[k]

    все

  кц

  вывод m

кон

DIM Dat(10) AS INTEGER

DIM k,m AS INTEGER

Dat(1) = 2: Dat(2) = 5

Dat(3) = 8: Dat(4) = 5

Dat(5) = 4: Dat(6) = 2

Dat(7) = 0: Dat(8) = 3

Dat(9) = 4:Dat(10) = 5

m = 0 

FOR k = 1 TO 10

 IF Dat(k) m THEN

  m = Dat(k)

 END IF

NEXT k

PRINT m

END

 

var k, m: integer;

Dat: array[1..10] of integer;

begin

 Dat[1] := 2; Dat[2] := 5;

 Dat[3] := 8; Dat[4] := 5;

 Dat[5] := 4; Dat[6] := 2;

 Dat[7] := 0; Dat[8] := 3;

 Dat[9] := 4;Dat[10] := 5;

 m := 0;

 for k := 1 to 10 do

   if  Dat[k] m then

     m := Dat[k];

 writeln(m);

end.




Получите свидетельство о публикации сразу после загрузки работы



Получите бесплатно свидетельство о публикации сразу после добавления разработки


Серия олимпиад «Осень 2024»



Комплекты учителю



Качественные видеоуроки, тесты и практикумы для вашей удобной работы

Подробнее

Вебинары для учителей



Бесплатное участие и возможность получить свидетельство об участии в вебинаре.


Подробнее