|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Тема №19 (время – 2 мин)
Тема: Оператор присваивания в языке программирования[16]. Что нужно знать: · переменная – это величина, которая имеет имя, тип и значение; переменная может изменяться во время выполнения программы · оператор присваивания служит для записи значения в переменную · если в переменную записывают новое значение, старое стирается · знаки +, -, *, / используются для обозначения операций сложения, вычитания, умножения и деления · запись вида 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; Решение: 43) для решения нужно использовать «ручную прокрутку» программы, то есть, выполнить вручную все действия 44) наиболее удобно и наглядно это получается при использовании таблицы, где в первом столбце записаны операторы программы, а в остальных показаны изменения переменных при выполнении этих операторов 45) здесь используются три переменные: a, b, c; до выполнения программы их значения анм неизвестны, поэтому ставим в таблице знаки вопроса:
46) после выполнения оператора a:= 5; изменяется значение переменной a:
47) оператор a:= a + 6; означает «вычислить значение выражения a + 6 используя текущее значение a (равное 5), и записать результат обратно в переменную a»; таким образом, новое значение равно 5 + 6 = 11:
48) следующий оператор, b:= -a; изменяет значение переменной b, записывая в нее –a; учитывая, что в a записано число 11, находим, что b будет равно –11:
49) последняя команда, c:= a – 2*b, изменяет значение переменной c; при текущих значениях a = 11 и b = –11 результат выражения равен 11 – 2*(–11) = 33, это число и будет записано в переменную c:
50) таким образом, правильный ответ – 33.
Ещё пример задания: Определите значение переменной c после выполнения следующего фрагмента программы. a:= 40; b:= 10; b:= - a / 2 * b; if a < b then c:= b - a Else c:= a - 2 * b; Решение: 1) для решения нужно использовать «ручную прокрутку» программы 2) выполним начальные присваивания:
3) самый сложный оператор, содержащий «подводный камень»: b:= - a / 2 * b; не забываем, что умножение и деление имеют равный приоритет, и в такой цепочке сначала выполнится деление, а потом умножение 4) результат: b:= - (40 / 2) * 10 = - 20 * 10 = - 200
5) очевидно, что теперь условие «a < b» ложно, поэтому выполняется оператор, стоящий после слова else: c:= a-2*b = 40 – 2*(-200) = 440. 6) Ответ: 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 8) в любом варианте разбиения каждое число получено по формуле , поэтому можно сразу определить цифры соответствующих чисел по формуле : 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 9) вспоминаем, что цифры числа в цикле обрабатываются, начиная с последней, поэтому в ответе нужно перечислить числа 836, 3036, 8310 и 30310. 10) таким образом, правильный ответ – 836, 3036, 8310, 30310. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.013 сек.) |