У вас вопросы?
У нас ответы:) SamZan.net

Тема- Оператор присваивания в языке программирования1

Работа добавлена на сайт samzan.net: 2015-07-10

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 9.6.2025

 К. Поляков, 2009-2013

B2 (базовый уровень, время – 2 мин)

Тема:  Оператор присваивания в языке программирования1.

Что нужно знать:

  •  переменная – это величина, которая имеет имя, тип и значение; переменная может изменяться во время выполнения программы
  •  оператор присваивания служит для записи значения в переменную
  •  если в переменную записывают новое значение, старое стирается
  •  знаки +, -, *, / используются для обозначения операций сложения, вычитания, умножения и деления
  •  запись вида a div b означает результат целочисленного деления a на b (остаток отбрасывается)
  •  запись вида a mod b означает остаток от деления a на b
  •  запись вида  a := b + 2*c + 3; означает «вычислить значения выражения справа от знака присваивания := и записать результат в переменную a»; при этом значения других переменных (кроме a) не изменяются
  •  для многократного выполнения одинаковых операций используют циклы;
  •  цикл с переменной выполняется N раз, в этом примере переменная i принимает последовательно все значения от 1 до N с шагом 1

for i:=1 to N do begin

 { что-то делаем }

end;

  •  цикл с условием выполняется до тех пор, пока условие в заголовке цикла не нарушится;

while { условие } do begin

 { что-то делаем }

end;

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

Пример задания:

Определите значение переменной c после выполнения следующего фрагмента программы.

a := 5;

a := a + 6;

b := –a;

c := a  2*b;

Решение:

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

a

b

c

?

?

?

  1.  после выполнения оператора a := 5; изменяется значение переменной a:

a

b

c

?

?

?

a := 5;

5

  1.  оператор a := a + 6; означает «вычислить значение выражения a + 6 используя текущее значение a (равное 5), и записать результат обратно в переменную a»; таким образом, новое значение  равно 5 + 6 = 11:

a

b

c

?

?

?

a := 5;

5

a := a + 6;

11

  1.  следующий оператор, b := -a; изменяет значение переменной b, записывая в нее a; учитывая, что в a записано число 11, находим, что b будет равно –11:

a

b

c

?

?

?

a := 5;

5

a := a + 6;

11

b := –a;

–11

  1.  последняя команда, c := a  2*b, изменяет значение переменной c; при текущих значениях  a = 11 и b = –11 результат выражения  равен 11 – 2*(–11) = 33, это число и будет записано в переменную c:

a

b

c

?

?

?

a := 5;

5

a := a + 6;

11

b := –a;

–11

c := a  2*b;

33

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

Возможные ловушки и проблемы:

  •  нельзя забывать про знак переменных и про то, что «минус на минус дает плюс»

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

Определите значение переменной c после выполнения следующего фрагмента программы.

a := 40;

b := 10;

b := - a / 2 * b;

if a < b then

   c := b - a

else

   c := a - 2 * b;

Решение:

  1.  для решения нужно использовать «ручную прокрутку» программы
  2.  выполним начальные присваивания:

a

b

c

?

?

?

a := 40;

b := 10;

40

10

  1.  самый сложный оператор, содержащий «подводный камень»:

  b := - a / 2 * b;

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

  1.  результат:

b := - (40 / 2) * 10 = - 20 * 10 = - 200

a

b

c

?

?

?

a := 40;

b := 10;

40

10

b := - a / 2 * b;

-200

  1.  очевидно, что теперь условие «a < b» ложно, поэтому выполняется оператор, стоящий после слова else: c := a-2*b = 40 – 2*(-200) = 440.
  2.  Ответ: 440.

Возможные ловушки и проблемы:

  •  нужно не забыть, что умножение и деление имеют одинаковый приоритет, то есть выполняются по порядку слева направо (если нет скобок)

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

В результате выполнения фрагмента программы

while n < > 0 do begin

 write ( 2*(n mod 10)+1);

 n := n div 10;

end;

на экран выведено число 13717. Укажите все числа, которые могли находиться в переменной n до выполнения этого цикла.

Решение:

  1.  прежде всего, заметим, что для вывода используется оператор write, который не переходит на следующую строку; поэтому числа в цикле будут выводиться в одной строке «вплотную» друг к другу, без промежутков
  2.  вспомним, что n mod 10 – остаток от деления числа на 10 – это последняя цифра числа в десятичной системе счисления;
  3.  операция n div 10 (деление нацело на 10) равносильна отбрасыванию последней цифры в десятичной системе счисления
  4.  эти две операции выполняются пока значение переменной n не станет равно нулю
  5.  анализируя алгоритм, можно придти выводу, что этот фрагмент программы выводит на экран числа , где  – это -ая цифра с конца числа
  6.  подумаем, в каком интервале находится значение , если  – это цифра от 0 до 9: получаем интервал от до
  7.  поэтому разбить цепочку 13717 на части можно следующими способами:

1 – 3 – 7 – 17

1 – 3 – 7 – 1 – 7

13 – 7 – 17

13 – 7 – 1 – 7

  1.  в любом варианте разбиения каждое число получено по формуле , поэтому можно сразу определить цифры соответствующих чисел по формуле :

1 – 3 – 7 – 17  0 – 1 – 3 – 8

1 – 3 – 7 – 1 – 7  0 – 1 – 3 – 0 – 3

13 – 7 – 17  6 – 3 – 8

13 – 7 – 1 – 7  6 – 3 – 0 – 3

  1.  вспоминаем, что цифры числа в цикле обрабатываются, начиная с последней, поэтому в ответе нужно перечислить числа 836, 3036, 8310 и 30310.
  2.  таким образом, правильный ответ – 836, 3036, 8310, 30310.

Возможные ловушки и проблемы:

  •  нужно уметь анализировать работу алгоритма, «прокручивать» его в уме
  •  можно забыть, что цифры числа обрабатываются в обратном порядке, начиная с последней


Задачи для тренировки
2:

  1.  Определите значение целочисленных переменных a и b после выполнения фрагмента программы:

a := 3 + 8*4;

b := (a div 10) + 14;

a := (b mod 10) + 2;

  1.  Определите значение целочисленных переменных a и b после выполнения фрагмента программы:

a := 1819;

b := (a div 100)*10+9;

a := (10*b–a) mod 100;

  1.  Определите значение целочисленных переменных a и b после выполнения фрагмента программы:

a := 42;

b := 14;

a := a div b;

b := a*b;

a := b div a;

  1.  Определите значение целочисленных переменных x, y и t после выполнения фрагмента программы:

x := 5;

y := 7;

t := x;

x := y mod x;

y := t;

  1.  Определите значение целочисленных переменных a и b после выполнения фрагмента программы:

а :=6*12 + 3;

b :=(a div 10)+ 5;

a :=(b mod 10)+ 1;

  1.  Определите значение целочисленных переменных x и y после выполнения фрагмента программы:

x := 336

У := 8;

x := x div y;

y := х mod у;

  1.  Определите значение целочисленных переменных a и b после выполнения фрагмента программы:

а :=1686;

b :=(a div 10) mod 5;

а := а - 200*b;

  1.  Определите значение целочисленных переменных x и y после выполнения фрагмента программы:

х := 11;

у := 5;

t := y;

у := х mod у;

x := t;

у := у + 2*t;

  1.  Определите значение целочисленных переменных x и y после выполнения фрагмента программы:

х := 19;

у := 3;

z := у*2;

у := х mod у;

х := х - z;

у := у + z;

  1.  Определите значение целочисленных переменных x, y и z после выполнения фрагмента программы:

х := 13;

у := 3;

z := x;

x := z div у;

у := х;

  1.  В результате выполнения фрагмента программы

while n <> 0 do begin

 write ( 2*(n mod 5 + 3) );

 n := n div 10;

end;

на экран выведено число 10614. Какое число хранилось до этого в переменной n, если известно, что все цифры в нем нечетные?

  1.  Определите значение переменной b после выполнения следующего фрагмента программы, где a и b – вещественные (действительные)  переменные:

a := -5;

b := 5 + 7 * a;

b := b / 2 * a; 

  1.  Определите значение переменной b после выполнения следующего фрагмента программы, где a и b – вещественные (действительные)  переменные:

a := 5;

b := 5 - 3 * a;

b := b / 2 * a; 

  1.  Определите значение переменной b после выполнения следующего фрагмента программы, где a и b – вещественные (действительные)  переменные:

a := 5;

b := 5 + 5 * a;

b := b / 2 * a; 

  1.  Определите значение переменной b после выполнения следующего фрагмента программы, где a и b – вещественные (действительные)  переменные:

a := 7;

b := 7 + 3 * a;

b := b / 2 * a; 

  1.  Определите значение переменной c после выполнения следующего фрагмента программы:

a := 100;

b := 30;

a := a – b*3;

if a > b then

    c := a – b

else c := b – a;

  1.  Определите значение переменных a и b после выполнения следующего фрагмента программы:

a := 2468;

b := (a mod 1000)*10;

a := a div 1000 + b;

  1.  Определите значение переменной c после выполнения следующего фрагмента программы:

a := 6;

b := 15;

a := b – a*2;

if a > b then

    c := a + b

else c := b – a;

  1.  Определите значение переменной c после выполнения следующего фрагмента программы:

a := -5;

b := 14;

b := b + a*2;

if a > b then

    c := a + b

else c := b – a;

  1.  Определите значение переменной c после выполнения следующего фрагмента программы:

a := -5;

b := 3;

a := a - b*2;

if a > b then

    c := b - a

else c := a – b;

  1.  Определите значение переменной c после выполнения следующего фрагмента программы:

a := -5;

b := -3;

a := a - b*3;

if a > b then

    c := b + a

else c := a – b;

  1.  Определите значение переменной c после выполнения следующего фрагмента программы:

a := -2;

b := -3;

a := b + a*3;

if a < b then

    c := a - b

else c := b – a;

  1.  Определите значение переменной c после выполнения следующего фрагмента программы:

a := 40;

b := 10;

b := a - 2*b;

if a < 2*b then

    c := a

else c := b;

  1.  Определите значение переменной c после выполнения следующего фрагмента программы, в котором a, b и с – переменные вещественного (действительного) типа:

a := 120;

b := 100;

a := a + b / 2;

if b < a / 2 then

    c := b + a

else c := b + a / 2;

  1.  Определите значение переменной S после выполнения следующего фрагмента программы:

S:=1; i:=1;

while i < 5 do begin

 S := S + i*(i+1);

 i := i + 1;

end;

  1.  Определите значение переменной S после выполнения следующего фрагмента программы:

S:=0; i:=7;

while i > 1 do begin

 S := S + i div 2;

 i := i - 1;

end;

  1.  Определите значение переменной P после выполнения следующего фрагмента программы:

P:=1; i:=3;

while i <= 9 do begin

 P := P * (i div 3);

 i := i + 1;

end;

  1.  Определите значение переменной с после выполнения следующего фрагмента программы:

a:= 7;

a:= a - 4;

b:= -a;

c:= -a + 2*b;

  1.  Определите значение переменной с после выполнения следующего фрагмента программы:

a:= 5;

a:= 12 – a*a;

b:= -a;

c:= 10*a - b;

  1.  Определите значение переменной с после выполнения следующего фрагмента программы:

x:= 2.5E+02;        { 2.5E+02 = 2.5·10+02 = 250}        

x:= x + 0.5E+02;    { 0.5E+02 = 0.5·10+02 = 50}

y:= -x;

c:= -2*y - x;

  1.  Определите значение переменной с после выполнения следующего фрагмента программы:

m:= 67;

m:= m + 13;

n:= m/4 – m/2;

c:= m - n;

  1.  Определите значение переменной с после выполнения следующего фрагмента программы:

x:= 8 + 2*5;

y:= (x mod 10) + 14;

x:= (y div 10) + 3;

c:= x - y;

  1.  Определите значение переменной с после выполнения следующего фрагмента программы:

a := 30;

b := 6;

a := a / 2 * b;

if a > b then

    c := a - 3 * b

else c := a + 3 * b;

  1.  (http://ege.yandex.ru) Определите значение переменной с после выполнения следующего фрагмента программы:

a := 30;

b := 6;

a := a / 5 * b;

if a > b then

    c := a - 4 * b

else c := a + 4 * b;

  1.  Определите значение переменной с после выполнения следующего фрагмента программы:

a := 6*12 + 3;

b := a div 10 + 5;

a := b mod 10 + 1;

c := a*a + b*b – a / 2 * b;

  1.  Определите значение переменной с после выполнения следующего фрагмента программы:

a := 30;

b := 14;

a := a – 2 * b;

if a > b then

 c := b + 2 * a

else

 c := b - 2 * a;

  1.  Определите значение переменной с после выполнения следующего фрагмента программы:

a := 40;

b := 6;

a := a * 3 / b;

if a > b then

 c := a + 5 * b

else

 c := a - 5 * b;

  1.  Определите значение переменной с после выполнения следующего фрагмента программы:

a:= 30;

b:= 6;

a:= a * 3 / b;

if a < b then

 с:= 2*a - 10 * b

else  

 с:= 2*a + 10 * b;

  1.  Определите значение переменной с после выполнения следующего фрагмента программы:

a:= 30;

b:= 6;

a:= a * 3 / b;

if a > b then

 с:= 2*a - 5*(b+2)

else

 с:= 2*a + 5*(b+2);

1 Здесь рассматривается только язык Паскаль, который является наиболее распространенным в школах России.

2 Источники заданий:


Демонстрационные варианты ЕГЭ 2004-2013 гг.


Тренировочные варианты МИОО.


Гусева И.Ю. ЕГЭ. Информатика: раздаточный материал тренировочных тестов. — СПб: Тригон, 2009.


Крылов С.С., Лещинер В.Р., Якушкин П.А. ЕГЭ-2010. Информатика. Универсальные материалы для подготовки учащихся / под ред. В.Р. Лещинера / ФИПИ. — М.: Интеллект-центр, 2010.


Якушкин П.А., Ушаков Д.М.  Самое полное издание типовых вариантов реальных заданий ЕГЭ 2010. Информатика.  — М.: Астрель, 2009.


М.Э. Абрамян, С.С. Михалкович, Я.М. Русанова, М.И. Чердынцева. Информатика. ЕГЭ шаг за шагом. – М.: НИИ школьных технологий, 2010.


Самылкина Н.Н., Островская Е.М. ЕГЭ 2011. Информатика. Тематические тренировочные задания. — М.: Эксмо, 2010.

 15 http://kpolyakov.narod.ru




1. Общая характеристика биологии в додарвиновский перио
2. .Учёт осн срв 1.1Осн срва их классиф и оценка 1
3. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата історичних наук Дніпропетро
4. I. ГорНечерХау Пиопи II
5. это годы резкого подъема российской правовой культуры российского правоведения выхода их на передовые мир.html
6. практикум по бухгалтерскому учету Шаркаева О
7. Камю А. Человек на зачумленной земле
8. Дифтерия.html
9. 200г Председатель А
10. Об утверждении Типовых отраслевых норм бесплатной выдачи работникам специальной одежды специальной обув