Начальный курс информатики. Часть 2. Учебное пособие
.pdf
Сколько клеток приведенных лабиринтов соответствуют требованию, что, выполнив предложенную ниже программу, РОБОТ остановится в той же клетке, с которой он начал движение?
|
|
|
|
|
|
|
|
|
|
6 |
a) НАЧАЛО |
|
|
|
|
|
|
|
|
|
|
ПОКА <справа свободно> |
|
|
|
|
|
|
|
|
|
|
|
5 |
вправо |
|
|
|
|
|
|
|
|
|
|
4 |
ПОКА <сверху свободно> |
|
|
|
|
|
|
|
|
|
|
вверх |
|
|
|
|
|
|
|
|
|
|
|
3 |
ПОКА <слева свободно> |
|
|
|
|
|
|
|
|
|
|
2 |
влево |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
ПОКА <снизу свободно> |
|
|
|
|
|
|
|
|
|
|
|
1 |
вниз |
|
|
|
|
|
|
|
|
|
|
|
КОНЕЦ |
|
A |
|
B |
C |
D |
E |
F |
||||
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
6 |
b) НАЧАЛО |
|
|
|
|
|
|
|
|
|
|
ПОКА <слева свободно> |
||
|
|
|
|
|
|
|
|
|
5 |
влево |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
ПОКА <снизу свободно> |
||
|
|
|
|
|
|
|
|
|
4 |
вниз |
|
|
|
|
|
|
|
|
|
|
3 |
ПОКА <справа свободно> |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
вправо |
||
|
|
|
|
|
|
|
|
|
2 |
ПОКА <сверху свободно> |
|
|
|
|
|
|
|
|
|
|
вверх |
||
|
|
|
|
|
|
|
|
|
1 |
КОНЕЦ |
|
|
A |
|
B |
C |
D |
E |
F |
|
|
||
|
|
|
|
Рис. 8. |
Графическая форма описания (см. также с. 22) |
||||||
21
6
5
4
3
2
1
6
5
4
3
2
1
A B C D E F
c) НАЧАЛО
ПОКА <сверху свободно> вправо
ПОКА <справа свободно> вниз
ПОКА <снизу свободно> влево
ПОКА <слева свободно> вверх
КОНЕЦ
d)
НАЧАЛО ПОКА <справа свободно> вниз
ПОКА <снизу свободно> влево ПОКА <слева свободно> вверх ПОКА <сверху свободно>
вправо
КОНЕЦ
|
|
Рис. 8. Окончание |
|
|
|
|
21. По каналу навстречу друг другу движутся два корабля. |
|
|||||
Канал узкий и кораблям в нем не разойтись. В канале есть бухта, |
|
|||||
в которой помещается лишь один корабль. Описать команды |
|
|||||
исполнителя |
«автоматический |
диспетчер», |
который |
|
||
осуществляет |
проводку кораблей через .каналПридумать |
|
||||
удобную символическую запись для каждой команды. Составить |
|
|||||
программу действий диспетчера. |
|
|
|
|
||
22. Описать команды |
исполнителя«Диспетчер» для |
|
||||
решения старинной задачи о переправе козы, капусты и волка. |
|
|||||
Придумать |
удобную |
символическую |
запись |
для |
каждой |
|
команды. Составить программу действий диспетчера. |
|
|
||||
22
1.3. Величины. Команда присваивания
Информация, обрабатываемая алгоритмом, программой называется данными.
Величина - способ представления данных в алгоритме, программе. Это - отдельный информационный объект, отдельная
единица |
данных. |
Команды |
в |
компьютерной |
программе |
||
определяют |
действия, выполняемые |
|
над |
величинами. По |
|||
отношению |
к |
программе |
данные |
|
делятсяисходныена , |
||
результаты |
(окончательные |
данные) |
и |
промежуточные |
|||
данные, которые получаются в процессе вычислений (рис. 9).
|
Ввод |
|
|
|
Программа |
|
|
Вывод |
|
|||
|
Исходные данные |
|
|
Промежуточные |
|
Результирующие |
|
|||||
|
|
|
|
|
данные |
|
|
|
|
данные |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
Рис. 9. Преобразование данных |
|
|
|||||||
|
Пример 6. При решении квадратного уравнения: |
|
||||||||||
ах2 + bх + с = 0, исходными данными являются коэффициенты |
|
|||||||||||
а, b, с; результатами - корни уравнения x1 и х2; промежуточным |
|
|||||||||||
данным - дискриминант уравнения: D = b2 - 4ас. |
|
|
||||||||||
|
Пример 7. |
Нахождение |
площади |
треугольника |
по |
|||||||
формуле |
Герона S = |
p( p - a)( p - b)( p - c) . Исходными |
|
|||||||||
данными |
являются |
длины |
сторон |
треугольника: , b, с. |
|
|||||||
Результатом - значение |
площади S. Промежуточным данным - |
|
||||||||||
полупериметр р: |
|
|
|
a + b + c |
|
|
|
|
|
|||
|
|
|
|
|
p = |
. |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
Величины |
бывают постоянными |
и |
переменными. |
|
|||||||
Постоянная величина (константа) не изменяет своего значения в ходе выполнения алгоритма. Константа может обозначаться собственным значением (числа -56, 8.393) или символическим именем (число p).
23
Переменная величина может изменять значение в ходе выполнения алгоритма. Переменная всегда обозначается символическим именем, идентификатором, например: (V, S, Count).
И константам и переменным определяется место в памяти компьютера. У всякой величины имеются три основных характеристики: имя, значение, тип (рис. 10)
|
|
|
|
|
|
|
Начало |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
Имя |
|
|
|
Значение |
|
|
Тип |
|
|
|
|
|
|
|
Рис. 10. Характеристики величины |
|
|
|||||||||
Имя |
назначается |
автором |
алгоритма, программы |
в |
||||||||||
соответствии |
с |
правилами, соглашениями, принятыми |
в |
|||||||||||
используемом языке изложения. С точки зрения синтаксических |
|
|||||||||||||
правил языка переменная - идентификатор, который сопоставлен |
|
|||||||||||||
ей в качестве ее имени. Это имя используется для ссылки на |
|
|||||||||||||
значение переменной. |
|
|
|
|
|
|
|
|
||||||
Тип |
величины |
определяет |
множество |
допустимых |
||||||||||
значений, |
|
которые |
может принимать величина, множество |
|
||||||||||
допустимых |
действий, которые |
можно выполнять |
с |
этой |
||||||||||
величиной, а также форма внутреннего представления в памяти. |
|
|||||||||||||
Типы констант определяются по контексту(т.е. по форме |
|
|||||||||||||
записи |
в |
тексте), |
а типы переменных устанавливаются в |
|||||||||||
описании переменных. |
|
|
|
|
|
|
|
|
||||||
В любой язык входит минимально-необходимый набор |
||||||||||||||
основных |
|
типов |
данных, к которому относятся следующие: |
|||||||||||
целый, вещественный, логический и символьный. |
|
|
||||||||||||
Действия над величинами, определяемые алгоритмом или |
|
|||||||||||||
программой, основываются на системе следующих понятий: |
||||||||||||||
операция - выражение - команда или оператор - система команд. |
|
|||||||||||||
Операция – |
простейшее |
законченное действие |
над |
|||||||||||
данными. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24
Выражение – запись в алгоритме или программе, определяющая последовательность операций для вычисления некоторой величины.
Команда – входящее в запись алгоритма типовое предписание исполнителю выполнить некоторое законченное действие. Команды присваивания, ввода, вывода называются простыми командами; команды цикла и ветвления - составными, или структурными командами.
Процесс решения вычислительной задачиэто процесс последовательного изменения значений переменных. В итоге в определенных переменных получается искомый результат.
Переменная получает определенное значение в результате присваивания. В основном в СКИ для этого есть команды ввода и команда присваивания.
Команда присваивания - команда исполнителя, в
результате которой переменная получает новое значение.
Формат команды присваивания:
<имя переменной>: = <выражение> Команда присваивания выполняется за 2 шага:
1)вычисляется значение выражения, стоящего справа от знака присваивания;
2)переменная, имя которой стоит слева от знака присваивания, получает это значение, то есть оно записывается в память по адресу расположения переменной.
Таким образом, команда присваивания выполняется справа налево и ее нельзя путать с математическим равенством.
Например:
1. А:= В + С. До выполнения этой команды содержимое ячеек памяти было:
A |
5 |
B |
8 |
C |
10 |
После выполнения команды присваивания станет следующим:
25
A |
18 |
B |
8 |
C |
10 |
2. Х:= Х + А. До выполнения команды содержимое ячеек памяти было:
X |
10 |
A |
-3 |
После выполнения команды присваивания содержимое ячеек станет:
X |
7 |
A |
-3 |
Пример 8. Определите значение переменной c после выполнения следующего фрагмента программы.
a := 5;
a := a + 6;
b:= –a;
c:= a – 2 · b;
Решение: нужно выполнить вручную все действия. Оформим результаты выполнения команд в специальной табл. 2.
Таблица 2
Команда |
a |
b |
c |
a := 5; |
5 |
|
|
a := a + 6; |
11 |
|
|
b := – a; |
|
–11 |
|
c := a – 2 · b; |
|
|
33 |
Ответ: с = 33
Пример 9. В приведенном ниже фрагменте алгоритма, записанном на алгоритмическом языке, переменные a, b, c имеют тип «строка», а переменные i, k – тип «целое»:
i := Длина(a) k := 2
b := 'А'
пока i > 0
нц
c := Извлечь (a, i)
26
b := Склеить (b, c) i := i – k
кц
b := Склеить (b, 'Т')
Используются следующие функции:
Длина (a) – возвращает количество символов в строке a. (Тип «целое»)
Извлечь (a, i) – возвращает i-й (слева) символ в строке a. (Тип «строка»)
Склеить (a, b) – возвращает строку, в которой записаны сначала все символы строкиa, а затем все символы строкиb. (Тип «строка»)
Значения строк записываются в одинарных кавычках (Например, a:='дом').
Какое значение будет у переменнойb после выполнения вышеприведенного фрагмента алгоритма, если значение переменной a было ‘ПОЕЗД’?
Решение: выполняем команды алгоритма и фиксируем значение величин в табл. 3.
|
|
|
|
|
Таблица 3 |
|
|
|
|
|
|
|
a |
b |
c |
i |
k |
|
'ПОЕЗД' |
|
|
|
|
i:= Длина (a) |
|
|
|
5 |
|
k:= 2 |
|
|
|
|
2 |
b:= 'А' |
|
'A' |
|
|
|
i > 0? |
|
|
да |
|
|
c:= Извлечь (a, i) |
|
|
‘Д’ |
|
|
b:= Cклеить (b, c) |
|
‘АД’ |
|
|
|
i:= i–k |
|
|
|
3 |
|
Так как i = 5 и условие i > 0 выполняется, тело цикла выполняется еще раз (табл. 4).
27
Таблица 4
|
a |
b |
c |
i |
k |
... |
'ПОЕЗД' |
'АД' |
… |
3 |
2 |
i > 0? |
|
да |
|
|
|
c:= Извлечь (a, i) |
|
|
'Е' |
|
|
b:= Cклеить (b, c) |
|
'АДЕ' |
|
|
|
i:= i–k |
|
|
|
1 |
|
Условие i > 0 истинно, поэтому тело цикла выполняется еще один раз, к строке b добавляется 1-й символ строки a, то есть 'П' (табл. 5).
Таблица 5
|
a |
b |
c |
i |
k |
... |
'ПОЕЗД' |
'АДЕ' |
… |
1 |
2 |
i > 0? |
|
да |
|
|
|
c:= Извлечь (a, i) |
|
|
'П' |
|
|
b:= Cклеить (b, c) |
|
'АДЕП' |
|
|
|
i:= i–k |
|
|
|
–1 |
|
Теперь i = -1, поэтому при очередной проверке условие
i > 0 в начале цикла оказывается ложным, выполнение цикла заканчивается, и исполнителю остается выполнить единственную строчку после цикла, которая дописывает в конец строки b букву
'Т' (табл. 6).
Таблица 6
|
a |
b |
c |
i |
k |
... |
'ПОЕЗД' |
'АДЕП' |
… |
–1 |
2 |
i > 0? |
|
нет |
|
|
|
b:= Склеить (b, 'Т') |
|
'АДЕПТ' |
|
|
|
Ответ: 'АДЕПТ'.
Пример 10. Определите значение переменной c после выполнения следующего фрагмента программы:
a:= 40; b:= 10;
28
b:= - a / 2 · b;
если a < b
то c:= b - a
иначе c:= a - 2 · b;
Решение: для решения нужно выполнить вручную все действия. Оформим результаты выполнения команд в специальной табл. 7.
|
|
|
|
|
|
|
|
|
|
|
Таблица 7 |
|
|
|
|
Команда |
|
a |
b |
|
c |
|
|
|
|
|
|
|
|
a := 40; |
|
40 |
|
|
|
|
|
|
|
|
|
|
|
b := 10; |
|
|
|
10 |
|
|
|
|
|
|
|
|
|
b := - a / 2 · b; |
|
|
|
-200 |
|
|
|
|
|
|
|
|
|
a < b? |
|
|
|
40 < -200? нет |
|
|
|
|
|
||
|
|
c := a - 2 · b; |
|
|
|
|
440 |
|
|
|
|
|
|
Ответ: c = 440. |
|
|
|
|
|
|
|
|
|
|
|
||
Пример 11. Написать последовательность команд при- |
|
||||||||||||
сваивания, в результате выполнения которых переменныеа и b |
|
||||||||||||
поменяются значениями. |
|
|
|
|
|
|
|
|
|
|
|
||
Решение. Для |
решения |
потребуется |
еще |
одна |
|||||||||
дополнительная, промежуточная переменная с. |
|
|
|
||||||||||
c:= a; |
|
|
|
|
|
|
|
|
|
|
|
||
a:= b; |
|
|
|
|
|
|
|
|
|
|
|
||
b:= c |
|
|
|
|
|
|
|
|
|
|
|
||
Проверим правильность алгоритма, исполнив его для сле- |
|
||||||||||||
дующих значений переменных a и b: a = -5; b = 9. Результаты |
|
||||||||||||
исполнения алгоритма оформим в табл. 8. |
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
Таблица 8 |
|
|
|
|
Команда |
|
|
|
a |
|
b |
|
c |
|
|
|
|
|
|
|
|
|
-5 |
|
9 |
|
|
|
|
|
|
|
c:= a |
|
|
|
|
|
|
|
|
-5 |
|
|
|
|
a:= b |
|
|
|
9 |
|
|
|
|
|
|
|
|
|
b:= c |
|
|
|
|
|
-5 |
|
|
|
|
|
29
Коротко о главном
1.Компьютер-исполнитель работает с определенными данными по определенной программе. Данные – это множество величин.
2.Всякая обрабатываемая программой величина занимает свое место в памяти компьютера. Значение величины – это информация, хранимая в этом поле памяти.
3.Любой алгоритм работы с величинами может быть -со ставлен из следующих команд: присваивание; ввод; вывод.
4.Переменная величина получает значение в результате выполнения команды присваивания или команды ввода.
5.Ввод – это занесение данных с внешних устройств в оперативную память компьютера.
6.Результаты решения задачи выносятся на устройства вывода по команде вывода.
Вопросы и задания
1.Пусть переменная А имела значение 6. Какое значение получит переменная А после выполнения команды: А:= 3 + А - 2.
2.Определить конечные значения переменныхX и Y в результате выполнения следующих алгоритмов:
а) |
б) |
Х:= 2 |
Х:= 1,5 |
Х:= Х · Х |
Х:= 2 · Х+1 |
Х:= Х · Х · Х |
Y:= X/2 |
|
Y:= X + Y |
|
Х:= X - Y |
3. Записать алгоритм циклического перемещения влево значений между переменными А, В, С. Схема циклического перемещения:
A
B
C
30
