Разработаем программу для решения квадратного уравнения: a*x2 + b*x + c = 0;
Известно, что решение вычисляется по формуле:
x1 = (-b + sqrt(b2 - 4*a*c))/(2*a); x2 = (-b - sqrt(b2 - 4*a*c))/(2*a);
где sqrt в Паскале обозначает квадратный корень.
Какие данные придется хранить и использовать?
Исходные данные (дано в задаче): a,b,c
Результаты: x1,x2
Полезно также вычислить предварительно b2 - 4*a*c - дискриминант.
Обозначим его: diskr (в отличие от математики, величины в программе могут обозначаться несколькими буквами - это даже удобнее - не забудете, что это дискриминант).
При решении конкретных задач величины a,b,c, x1,x2, diskr могут иметь различные значения, поэтому программисты называют их ПЕРЕМЕННЫМИ. Термины можно также искать в "задачнике-справочнике" (щелкните кнопку Справки и опуститесь в алфавитном списке до "Переменные", почитайте - что это). Можно искать, щелкнув кнопку "Руководство от Borland" - по оглавлению.
a,b,c, x1,x2, diskr - это имена переменных ( идентификаторы ). Здесь главное - что идентификаторы должны подчиняться определенным условиям, и идентификаторами обозначают, кроме переменных - другие элементы программы.
Естественно, константы - величины постоянные. Они тоже могут обозначаться идентификаторами, например:
Const Chislo_PI = 3.1415; И могут применяться "как есть" - например: 4*a*c - число 4 - константа, конечно. Строковые (текстовые) константы:
Const Privet = 'Привет от Васи !'; - именованная.
Переменные и константы имеют тип данных, обозначающий:
Можем ли мы сейчас вычислить дискриминант (по формуле:b2 - 4*a*c)? В формуле записаны все необходимые для вычисления действия, НО: какие значения сейчас имеют переменные a,b,c? Мы о них еще не позаботились, а они должны иметь значения, ЗАДАННЫЕ в задаче. Что нужно сделать? - То, что называется: ввести исходные данные. (Ввод - это информация, поступающая с клавиатуры, диска или порта ввода/вывода.)
Для ввода с клавиатуры используется процедура read или readln (позже узнаете, что такое процедура, сейчас - как ей пользоваться).
Синтаксис использования такой:
Read( [ Var F : Text; ] V1 [, V2,...,Vn ] );
ReadLn([ var F : Text; ] V1 [, V2, ...,Vn ]);
[ Var F : Text; ] - используется для чтения из файла, то есть нам не нужно.
V1 [, V2,...,Vn ] - список идентификаторов вводимых переменных.
ReadLn отличается тем, что после прочтения списка переменных не читает данные, оставшиеся в этой строке и переходит на новую строку. То есть для нашей задачи можно записать:
readln(a,b,c); - для ввода подряд трех чисел (разделяя их пробелом). В результате выполнения a будет равно первому числу, b - второму, c - третьему (дробную часть отделять точкой).
Принято перед вводом делать "приглашение", например, вывести на экран: Введите a,b,c (3 числа, разделяя пробелом).
Для этого есть процедуры write или writeln. Синтаксис использования такой:
Write( [ Var F : Text; ] P1 [,P2,...,Pn ] );
WriteLn([ Var F : Text; ] P1 [, P2, ...,Pn ] );
Каждый параметр P включает выражение, значение которого должно быть записано. Параметр записи может также содержать спецификаторы ширины поля и количества знаков после десятичной точки. Каждое выражение вывода должно иметь тип Char,
Integer, Real, String, Packed String или Boolean.
В данном случае нужно написать:
write('Введите a,b,c (3 числа, разделяя пробелом)');
Тогда после ) не будет перевода на новую строку и вводимые числа будут в этой же строке (кажется, так симпатичнее).
Вы можете пользоваться справочной системой Turbo7 (русифицированной): Меню\Help\ и далее можно выбрать:
- Turbo Pascal Language - Хороший, удобный справочник по языку Паскаль.
- Index - для поиска терминов в алфавитном порядке,
Если у Вас нет русифицированной справки (Turbo.tph - 933 384 b) -
скачайте архив 0,3Mb.
Можно и Turbo7 полностью - пишите. Можно и модули для профи - tp*.pas.
Далее - продолжение описания программы