Занимательный Паскаль 7
Шрифт:
Тогда: возникает исключение TypeError: unsupported operand type(s) for +: int and str Паскаль сообщит что произошла недопустимая операция склеивания разных типов данных.
Числовые переменные
Самым простым и важным видом переменных являются числовые переменные. Они допускают хорошее наглядное представление, которым пользуются все профессиональные программисты: числовая переменная — это “коробочка”, в которую можно положить на хранение какое-либо число.
Чтобы
на русском языке
на английском языке
запросить значение переменной Х с клавиатуры
x =Readln(“x=”);
вычислить значение Х
x=function;
напечатать значение Х
Writeln(x)
если значение переменной Х удовлетворяет условию, то…
if (x<=0) do:
begin
end;
При вычислении значений переменных будем использовать следующие обозначения: сложение =a+b; вычитание — , умножение *, деление /, целочисленное деление //, возведение в степень **, извлечение квадратного корня sqrt(х), синус sin(x), косинус cos(x), целая часть числа int(x), абсолютная часть числа abs(x), случайные числа — библиотека random.
Эти действия в Паскале называются операторами и функциями. В Паскале их много, с некоторыми остальными мы познакомимся позднее. Также будем полагать, что перед началом вычислений при выполнении программы всем значениям переменных присваивается нулевая величина (если конечно в условии задачи конкретно не указано, какое значение нужно ввести).
Каждый программист
Работа программы во многом определяется ходом изменения значений её переменных.
Поэтому каждый программист стремится как можно более точно предвидеть характер этого изменения: на умении делать трассировку (пошаговое выполнение), и точно прослеживать порядок значений переменных базируется мастерство составления программ.
В качестве тренировки разберем следующую задачу:
Какое значение будет иметь переменная х после 5го цикла выполнения программы?
Проверьте правильность своих рассуждений, запустив программу на выполнение…
Program 1;
var int: x,y,z,i;
begin
x=1;
y=1;
z=1;
i=0;
while (i<5) do:
begin
x=x*y*z+1;
y=x*y*z+1;
z=x*y*z+1;
i=i+1;
Writeln(x,y,z);
end;
Readln;
End.
Обратите внимание в этой программе вместо сложения умножение и результат растет уже в геометрической прогрессии. И тогда в качестве начальных значений переменных нужно брать единицы 1, так как если оставить 0 то 0*1*2*3*…* = 0 в любом случае…
Доктор Шибкин
Доктор Шибкин был человеком чрезвычайно рассеянным и частенько допускал оплошности. Но как ни странно, именно это приводило его
Так, читая предыдущий пункт книги, он проскочил глазами само задание и подумал, что нужно найти решение системы уравнений:
X=Х+Y+Z+1,
Y=X+Y+Z+1,
Z=X+Y+Z+1
что он и сделал мгновенно в уме: из одинаковости правых частей очевидно, что X=Y=Z, откуда: X=Y=Z=- 1/2 .
Когда же он собрался сверить ответ, то понял, что в задании речь идёт не о системе уравнений, а о программе для компьютера. Выполнив задание правильно, профессор с изумлением заметил: “Между двумя решениями нет ничего общего!”. С тех пор доктор Шибкин проникся идеей, что смысл математических и программных обозначений, при всей их схожести, — совершенно различный.
Таблица квадратов
Задача:
Составить программу, — печатающую таблицу квадратов целых чисел.
Решение:
Если значение переменной N будет пробегать натуральный ряд 1, 2, 3, …, N то переменная X=N*N даст квадрат N. Печатая значение N и X и зациклив программу, имеем:
Program 2;
var int: N=1;
begin
while (N<21) do:
begin
X=N*N;
Writeln(N, X);
N=N+1;
end;
Writeln(“End”);
Readln;
end.
Степени числа 2
Задача:
Аналогично таблице квадратов можно составить программу, печатающую числа 2**n: N=N+1; X=2**N. Однако это можно сделать проще, если заметить что степень числа 2 — представляет собой произведение двоек столько раз, каков показатель степени.
Решение:
Если значение переменной N будет пробегать ряд чисел от 1 до 21, то переменная X=1 в первом шаге, и затем X=X*2 в последующих шагах программы даст нам значение степени числа 2. Печатая значение N и X имеем:
Program 3;
var int: N=1;
var int: X=1;
begin
while (N<21) do:
begin
X=X*2;
Writeln(N, X);
N=N+1;
end;
Writeln(“End”);
Readln;
end.
Такой способ вычислений очень рационален. Чтобы лучше это понять, вычислим первые шесть значений 2^n вручную:
2*1=2
2*2=4
4*2=8
8*2=16
16*2=32
32*2=64
Т.е. вместо того, чтобы каждый раз перемножать n двоек, лучше один раз умножить на 2 предыдущее значение: 2^n=2*2^(n-1).
Такой способ задания числовых последовательностей, когда следующие элементы определяются через значения предыдущих, называется возвратным или рекуррентным.
Для себя его можно переформулировать в виде правила рекурсии: чтобы двигаться вперёд — смотри назад!
Метод Крамера — это метод численного интегрирования, который используется для решения систем линейных уравнений. Он основан на разбиении системы на более простые подсистемы и последовательном решении каждой из них методом Крамера.