
- •6. Алгоритмы и программы
- •6.1. Алгоритм и алгоритмический процесс
- •6.1.1. Основные свойства алгоритмов:
- •6.1.2. Способы записи алгоритма
- •6.1.3. Схемы алгоритмов и программ
- •6.2. Переменная и постоянная величина Выражения
- •6.3. Присваивание
- •6.4. Основные этапы решения задач на эвм
- •6. 5. Алгоритмизация. Базовые алгоритмические структуры
- •6.5.1. Реализация базовых структур в языке Pascal
- •6.5.2. Реализация базовых структур в языке qBasic
- •Операторы тела цикла
- •6.6. Ввод - вывод
- •6.6.1.Ввод-вывод данных на языке Pascal
- •Var X, y: integer; {Описание переменных X, y целочисленного типа}
- •6.6.2. Ввод-вывод данных на языке qBasic
- •6.7. Алгоритмы линейной и разветвляющейся структуры
- •Решение задачи 6.3. На языке Turbo Pascal:
- •6.8. Циклические алгоритмы
- •Input "Введите натуральное м : " , m
- •Print : print "о т в е т : Сумма этих чисел равна "; s
- •6.9. Итерационные циклы
- •6.10. Массивы
- •6.11. Вложенные циклы
- •6.12. Подпрограммы
- •6.12.1. Параметры подпрограмм
- •6.12.2. Подпрограммы в языке Pascal
- •Операторы функции, один из которых
- •6.12.3. Подпрограммы в языке Basic
- •6.13. Рекурсия
- •6.14. Логические операции с числами
- •6.15. Работа с символьной информацией
- •6.15.1. Работа с символьной информацией в языке Basic
- •6.15.2. Работа с символьной информацией в языке Pascal
6.3. Присваивание
Задание нового значения переменной называется присваиванием. Во многих языках программирования, например, Pascal, оператор присваивания имеет вид:
переменная : = выражение;
Например, y := (a+b) * sin(x/4);
i := i+1.
Cимвол ":=" обозначает операцию присваивания и означает команду заменить прежнее значение переменной, стоящей в левой части, на вычисленное значение выражения, стоящего в правой части (в языке Basic операция присваивания обозначается символом "=").
Примеры операторов присваивания:
X := 5; читается "X присвоить 5"
A := X - 2; читается "A присвоить X-2"
X := X + 1; читается "X присвоить X+1"
При выполнении оператора присваивания сначала вычисляется значение выражения, записанного справа от знака присваивания, а потом это значение заменяет собой прежнее значение переменной, указанной в левой части оператора.
Таким образом, присваивание можно понимать как операцию "заменить на". В программе при этом происходит пересылка (копирование) значения выражения из одного места памяти в другое. Последний из приведенных операторов, например, увеличивает на единицу значение переменной X.
Упражнения:
1. Какими будут значения переменных после выполнения следующих операторов присваивания:
а) X:=15; Y:=2*X+5; X:=X*X+Y*5; Y:=X+Y;
б) X:=5; Y:=10; Z=15; X:=X+Y; Z:=Z+Y; Z:=Z+X+Y;
в) N:=10; A:=20; B:=15; C:=A+B-N; C:=C*2; B:=A+B-C; A:=A+B-C;
A:=N*A; N:=N+1;
г) X:=5; Y:=2*X; X:=X*X-Y+5; Y:=X+Y;
Для того, чтобы вручную выполнить алгоритм, обычно используют так называемую трассировочную таблицу, в которую записывают значения переменных после каждой команды.
а) X:=15; Y:=2*X+5; X:=X*X+Y*5; Y:=X+Y;
Решение. Трассировочная таблица:
Номер шага= |
1 |
2 |
3 |
4 |
X= |
15 |
|
15*15+35*5=400 |
|
Y= |
|
2*15+5=35 |
|
400+35=435 |
Ответ: X=400 Y=435
б) X:=5; Y:=10; Z=15; X:=X+Y; Z:=Z+Y; Z:=Z+X+Y;
Решение. Трассировочная таблица:
Номер шага= |
1 |
2 |
3 |
4 |
5 |
6 |
X= |
5 |
|
|
5+10=15 |
|
|
Y= |
|
10 |
|
|
|
|
Z= |
|
|
15 |
|
15+10=25 |
25+15+10=50 |
Ответ: X=15; Y=10; Z=50;
2. Написать последовательность операторов присваивания, при выполнении которой переменные A и B обменяются значениями.
Указание: воспользоваться вспомогательной переменной.
Решение:
P:=A; A:=B; B:=P;
Используется вспомогательная переменная Р.
Проверим решение при А=5, В=10.
Трассировочная таблица:
-
Номер шага=
1
2
3
А=5
10
В=10
5
Р
5
Вывод: Решение верно.
3. Каким было значение переменной А, если после выполнения следующих операторов присваивания оно стало равно 25?
A :=A+1; A :=A*2; A :=A-1; A :=A+10;
Так как известен конечный результат, то трассировочную таблицу заполним от последней команды к первой.
Решение. Таблица обратной трассировки:
-
Номер шага=
4
3
2
1
А=
А+10=25; (A=15)
A-1=15; (A=16)
A*2=16; (A=8)
A+1=8; (A=7)
7
Или другое решение:
25=A+10; => A=15;
15=A-1; => A=16;
16=A*2; => A=8;
8=A+1; => A=7;
Ответ А=7;
Проверим решение. Трассировочная таблица:
-
Номер шага=
1
2
3
4
А=7
7+1=8;
8*2=16;
16-1=15;
15+10=25;
Вывод: Решение верно, конечное значение А равно заданному.
4. Каким было значение переменной X, если после выполнения следующих операторов присваивания оно стало равно 8?
X :=X*5; X :=X-10; X :=X+1; X :=X/2;
5. Следующие операторы присваивания представить в виде последовательности простых присваиваний, содержащих одну арифметическую операцию. Использовать минимальное количество вспомогательных переменных.
а) z :=x*y-5;
б) y :=a/(a+b)+x*(a + b/5);
в) z :=x+y-a/b;
г) z := (x – y)/(x + 1) + (x + y)/(xy)
Решение. а) z=x*y; z=z - 5;
б) y=a+b; y=a/y1; r=b/5; r=a+r; r=x*r; y=y+r;
r – вспомогательная переменная.
6. Написать последовательность простых присваиваний, содержащих по одному умножению, для вычисления заданной степени величины а.
а) a4 за 2 операции б) a6 за 3 операции
в) a7 за 4 операции г) a8 за 3 операции
д) a15 за 5 операции е) a4 и a20 за 5 операции
Решение.
а) a4 за 2 операции б) a6 за 3 операции
r=a*a; a2 r=a*a; a2
r=r*r; a4 r=r*a; a3
r=r*r; a6
7. Преобразовать заданное выражение.
а) использовать только 4 операции сложения или вычитания и 4 операции умножения.
2x4 – 3x3 + 4x2 - 5x + 6
Решение.
2*x4 – 3*x3 + 4*x2 – 5*x + 6 = x*(2*x3 – 3*x2 + 4*x – 5)+6 =
x* (x*(2*x2 – 3*x + 4) – 5) +6= x*(x*(x*(2*x-3)+4)-5)+6
Запишем в виде простых присваиваний:
1. r=2*x; 2. r=r-3; 3. r=x*r; 4. r=r+4;
5. r=x*r; 6. r=r-5; 7. r=x*r; 8. r=r+6;
Условие задачи соблюдается.
б) использовать только 3 операции умножения, 2 операции сложения или 1 операцию вычитания:
4x3 + 3x2 - 2x + 1
в) использовать минимальное количество операций:
5x5 - 4x4 + 3x3 - 2x2 + 1