Задание 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.
|
Решение:
напечатано в результате работы программы будет значение переменной s
найдём значение переменной s:
цикл в программе (строка – for k := 4 to 10) будет выполняться 7 раз, = 10 – 4 + 1, т.е. при k = 4, 5, 6, 7, 8, 9, 10
на каждом шаге цикла переменная 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.
|
Решение:
напечатано в результате работы программы будет значение переменной y
найдём значение переменной y:
цикл в программе (строка – for n := 1 to 4) будет выполняться 4 раз, = 4 – 1 + 1, т.е. при n = 1, 2, 3, 4
на каждом шаге цикла переменная 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. |
Решение:
напечатано в результате работы программы будет значение переменной m (строка программы writeln(m))
В программе сначала задаются значения отдельных элементов массива (Dat[i]), а потом в один проход по массиву (блок строк for k := 1 to 10 do … ...;) происходит какая-то его обработка. По алгоритму следует понять, какая обработка происходит.
в теле цикла последовательно элементы массива сравниваются с 7 (строка - if Dat[k] ), если значение элемента массива меньше семи, то происходит увеличение переменной m на 1 (строка - m := m + 1), таким образом программа реализует алгоритм подсчета количества элементов массива меньше 7.
пересчитаем сколько элементов массива которые имеют значение меньше 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. |
напечатано в результате работы программы будет значение переменной m (строка программы writeln(m))
В программе сначала задаются значения отдельных элементов массива (Dat[i]), а потом в один проход по массиву (блок строк for k := 1 to 10 do … ...;) происходит какая-то его обработка. По алгоритму следует понять, какая обработка происходит.
в теле цикла последовательно элементы массива сравниваются с 7 (строка - if Dat[k] 7), если значение элемента массива больше семи, то происходит увеличение переменной m на значение этого элемента массива (строка - m := m + Dat[k]), таким образом программа реализует алгоритм подсчета сумму значений элементов массива, которые больше 7.
таких элементов четыре 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. |
Решение:
напечатано в результате работы программы будет значение переменной n (строка программы writeln(n))
В программе сначала задаются значения отдельных элементов массива (Dat[i]), а потом в один проход по массиву (блок строк for k := 1 to 10 do … ...;) происходит какая-то его обработка. По алгоритму следует понять, какая обработка происходит.
в теле цикла последовательно элементы массива сравниваются со значением переменной m – исходное значение 10 (строка - if Dat[k] ), если значение элемента массива не больше переменной m, то переменной m присваивается значение этого элемента массива (строка - m := Dat[k];), и переменной n присваивается порядковый номер этого элемента массива (строка - n := k), таким образом программа реализует алгоритм поиска порядкового номера элемента массива, который имеет наименьшее значение.
таких элементов два 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 то 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. |