Оглавление Дальше Первая программа (Turbo Pascal)


Разработаем программу для решения квадратного уравнения: 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 = 'Привет от Васи !'; - именованная.

Переменные и константы имеют тип данных, обозначающий:

  1. Множество возможных значений. Конкретно - a,b,c, x1,x2, diskr - вещественные числа, т е числа с дробной частью, положительные и отрицательные. В Паскале и Делфи таких типов несколько.
  2. Точность. Вещественные типы: Single, Real, double, extended имеют разную точность и разный диапазон значений. В этом же списке найдите и почитайте: Вещественный тип данных, Вещественное число.
  3. Объем памяти, необходимый для хранения значений. У этих типов он тоже разный.
  4. Способ преобразования (кодирования) значения в двоичный код, который хранится в памяти.
Подробнее о типах данных

Можем ли мы сейчас вычислить дискриминант (по формуле: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.

Далее - продолжение описания программы Дальше

Rambler's Top100
Hosted by uCoz