Будь умным!


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

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

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

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

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

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

от 25%

Подписываем

договор

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

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

 К. Поляков, 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, аналитический):

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

Исходная цифра

n mod 10

2*(n mod 10)+1

0

0

1

1

1

3

2

2

5

3

3

7

4

4

9

5

5

11

6

6

13

7

7

15

8

8

17

9

9

19

  1.  на основе таблицы, разобьем нашу цепочку 13717 на все возможные комбинации:

1 – 3 – 7 – 1 – 7

1 – 3 – 7 – 17

13 – 7 – 17

13 – 7 – 1 – 7

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

0 – 1 – 3 – 0 – 3

0 – 1 – 3 – 8

6 – 3 – 8

6 – 3 – 0 – 3

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


Задачи для тренировки
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.  (http://ege.yandex.ru) Определите значение переменной s после выполнения следующего фрагмента программы:

 n := 1;

 s := 0;

 while n <= 101 do begin

   s := s + 7;

   n := n + 1

 end;

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

 n := 4;

 s := 0;

 while n <= 8 do begin

   s := s + 15;

   n := n + 1

 end;

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

 n := 0;

 s := 512;

 while s >= 0 do begin

   s := s - 20;

   n := n + 1

 end;

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

 n := 14;

 s := 0;

 while n <= 18 do begin

   s := s + 25;

   n := n + 1

 end;

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

a:= 30;

b:= 6;

a:= a/5 – (b – 3);

if 2*a > b then

 с:= a - 5*b + 2;

else

 с:= a + 5*b + 2;

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

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


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


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


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


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


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


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


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

 17 http://kpolyakov.spb.ru




1. Чтение детей и подростков в России на рубеже веков- смена модели чтения
2. При дезинфекції або знезаражуванні знищуються в основному патогенні мікроорганізми
3. История и основы садово паркового искусства
4.  Содержание предназначение правила пользования
5. ЗАТО В соответствии с Законом Российской Федерации о закрытых административнотерриториальных образован
6. Тема- Понятие об организации оповещения и передачи донесений на флоте
7. I века до нашей эры Эллинизм с точки зрения исторической науки это период в истории античных государств
8. варианта Дата проведения ЕГЭ
9. логика восходит к древнегреческому слову логос означавшему слово мысль понятие рассуждение и закон
10. Референдум як основна форма безпосередньої демократії
11. Христианская этика
12. Альнернатива средневековой Руси 13-15 в.html
13. Мein Кmpf Munchen 1940 сокращенно МК затем следует номер части и номер главы и
14. реферат дисертації на здобуття наукового ступеня кандидата медичних наук Одес
15. НА ТЕМУ- Внешняя политика СССР в предвоенные годы 30ые 40ые г
16. Біосфера - жива оболонка Землі
17. Организация туризма во Франции
18. DISK 1 INSTLL EXE Instll progrm UNZIP EXE Decompress
19. КОНТРОЛЬНАЯ РАБОТА по дисциплине Ипотечные системы и кредит Выполнил- студе.html
20. Характеристика и исследование трудовых ресурсов и производительности труда на ЗАО