Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль-конспект ИНФОРМАТИКА.doc
Скачиваний:
60
Добавлен:
09.04.2015
Размер:
639.49 Кб
Скачать

1.7.5. Пример простой программы

Решить квадратное уравнение АХ*Х + ВХ + С = 0

Возможности:

1) если А=0, В=0, С=0, то уравнение имеет бесконечное множество решений;

2) если А=0, В=0, С<>0, то уравнение не имеет решений;

3) если А=0, В<>0, С<>0, то уравнение имеет единственный корень Х=-С/В

4) если А<>0, В<>0, С<>0, то решение уравнения зависит от дискриминанта D=B*B-4AC;

4a) если D<0, то уравнение имеет комплексные корни;

4б) если D=0, то уравнение имеет два одинаковых корня X=-B/2A;

4в) если D>0, то уравнение имеет два корня X1 = (-B+D) / 2A;

X2=(-B-D)/2A

PROGRAMM QUADRA

VAR A,B,C,D,X1,X2: REAL;

BEGIN

WRITE(‘ВВЕДИТЕ А, В, С’);

READLN(A,B,C);

IF (A=0) AND (B=0) AND (C=0)

THENWRITELN (‘Уравнение имеет беск. множество решений’)

ELSE IF (A=0) AND (B=0) AND (C<>0)

THENWRITELN (‘Уравнение не имеет решений’)

ELSE IF (A=0) AND (B<>0) AND (C<>0)

THEN WRITELN (‘Корень Х = ’ -C/B)

ELSE IF D<0 THEN

WRITELN (‘Комплексные корни’)

ELSE

WRITELN (‘Два равных корня Х=’, -В/2А)

ELSE BEGIN D:=SWRT(B*B-4*A*C);

X1:=(-B+SQRT(D))/(2*A);

X2:=(-B-SQRT(D))/(2*A);

WRITELN(‘Корни уравнения: X1=‘,X1,’ X2=‘,X2)

END;

END.

1.7.6. Оперетор безусловного перехода

Обычно операторы программы на языке Паскаль выполняются в том порядке, в каком они записаны. Это естественный порядок выполнения программы. Однако иногда возникают ситуации, когда необходимо прервать естественный порядок и принудительно передать управление в заданную точку программы. Для этих целей используется оператор перехода, который имеет вид:

Gotoметка;

В качестве меток в языке Паскаль разрешается использовать целые числа из диапазона 0…9999 или идентификаторами. Метка может предшествовать любому оператору и отделяться от него двоеточием

Пример:

………….

Goto99;

……………

99:writeln(‘выполнен оператор’);

…………….

Все метки, прежде чем они используются в программе, должны быть описаны в разделе описания меток. Напомним еще раз одно из основных правил языка программирования Паскаль: все объекты, используемые в программе, должны быть описаны.Метки в этом смысле не представляют собой исключения. Раздел описания меток начинается со словаLABEL, за которым через запятую перечисляются используемые в программе метки,например:LABEL5, 99, 100,start,error;

Вопрос об использовании (точнее говоря, о неиспользовании)оператора перехода многократно обсуждался. Ясно, что бессистемное использование оператора перехода вредно, поскольку программа становится малопонятной и, что еще важнее, статический текст программы не отражает динамики ее выполнения. Общая рекомендация по использованию операторов перехода заключается в следующем: их следует использовать в каких-то необычных ситуациях, когда без них трудно обойтись. Чаще всего это возникает при различных нетипичных завершениях циклов. Во всяком случае, их следует стараться избегать.

Пример.Пусть производится последовательное чтение и суммирование какого-то ряда положительных чисел, причем их количество неизвестно. Концом последовательности служит первое же отрицательное число.

Programsumma;

Label99;

Var number,sigma: real;

Begin

Sigma:=0;

While sigma>=0 do

Begin

Read(number);

If number <0 them goto 99;

Sigma:=sigma+number;

End;

99: write(‘summa chisel=’,sigma);

end.

В данной программе с помощью заголовка цикла Whilesigma>=0doмоделируетсябесконечный цикл(сумма положительных чисел всегда положительна), и выход из цикла осуществляется с помощью оператора перехода.