Электронная версия курса лекций по дисциплине "Информатика", страница 10

Замечание!!!  В ветвь then, также как и else, нельзя поместить несколько операторов. В каждой ветви может находиться либо одиночный оператор, либо составной. Не целесообразно брать в операторные скобки одиночные операторы (простой, условный, цикла, вызова подпрограммы и вызова подпрограммы), хотя это и не является ошибкой. Составной оператор обязательно включает в себя операторные скобки.

Вопрос 7

Пример конструкции “ЕСЛИ” с использованием составного оператора

Требуется составить алгоритм и программу нахождения корней квадратного уравнения ax2+bx+c=0 с произвольными коэффициентами a, b, c (a¹0), для фиксации результатов расчетов сделать копию пользовательского экрана.

1  Схема алгоритма решения задачи:

Ромб: d<0

нет
 
да
 
да
 

x1:=(-b+√d)/(2a)

 

Блок-схема: данные: Вывод:
”Действительных корней нет ”

x2:=(-b-√d)/(2a)

 

Блок-схема: данные: Вывод:x1,x2                                         

2  Текст программы на языке Паскаль:

program nk;

var

      a,b,c,d,x1,x2:real;

begin

write('Введите значения переменных a,b,c: ');        readln(a,b,c);

   writeln('Исходные данные: a=',a:4:2,' b=', b:4:2,'c=':5,c:4:2);

write('Результат: ');

   d:=sqr(b)-4*a*c;

   if d<0

     then writeln('действительных корней нет')

else begin

                 x1:=(-b+sqrt(d))/(2*a);

                 x2:=(-b-sqrt(d))/(2*a);

                writeln('x1=',x1:4:2,'x2=':5,x2:4:2)

            end;

   readln;

end.

3  Для того чтобы сделать копию пользовательского экрана с результатами выполнения программы нужно одновременно нажать клавиши “Shift” и “PrtSc” .

Вопрос 7

Текст программы на языке Delphi (консольный режим)

program Project2;

{$APPTYPE CONSOLE}

uses

        SysUtils;

  var

        a,b,c,d,x1,x2:real;

begin

write('Read a,b,c: ');        readln(a,b,c);

   writeln('Input data: a=',a:4:2,' b=', b:4:2,'c=':5,c:4:2);

   write('Risult: ');

   d:=sqr(b)-4*a*c;

   if d<0

       then writeln('Real root is not')

       else begin

                        x1:=(-b+sqrt(d))/(2*a);

                        x2:=(-b-sqrt(d))/(2*a);

                       writeln('x1=',x1:4:2,'x2=':5,x2:4:2)

               end;

   readln;

end.

Вопрос 8

Варианты записи условий (логических выражений)

В конструкции “ЕСЛИ” записывается выражение, которое может принимать значение или “истина” или “ложь”. Эти выражения могут быть или простыми или составными. Простое выражение в общем случае имеет вид: 

алгебраич. выражен.1 знак операц. сравнения алгебраич. выражен.2

Примеры простых условий: 1) y>=x+1; 2) D<0. Используются следующие знаки операции сравнения: 1) =; 2) <>; 3) <; 4) >; 5)>=; 6)<=.

Составные условия образуются из простых соединением их служебными словами языка Паскаль обозначающих соответственно имена логических операций “И”, “ИЛИ”, “НЕ”: AND, OR, NOT.

Пусть А, B некоторые логические выражения. Тогда можно записать:

 
1) (A) AND (B) (читается: А и В)- это условие истинно только в том случае, если истинны одновременно оба условия и условие А и условие В. Таким образом указанное условие ложно в случае, если ложно хотя бы одно условие или А или  В. Условие 0£x<5 на языке программирования - (x>=0)AND(X<5).

2) (A) OR (B) (читается: А или В)- это условие истинно в том случае, если истинно хотя  бы  одно условие или условие А или условие В. Таким образом указанное условие ложно в случае, если ложно и условие и А и  В. Условие (y>5)OR(x>3) истинно в случае, если истинно условие (y>5) или истинно условие (x>3) или оба условия.

3) NOT(A) (читается: не А) -это условие истинно в том случае, если условие А ложно. Это условие ложно, если условие А истинно.

Условие NOT(x>3) истинно в том случае, если условие x>3 ложно, т.е. если x£3.

Вопрос 9

Пример решения задачи с использованием конструкции “ЕСЛИ”, вложенной в другую конструкцию “ЕСЛИ”, отладочной печати  и  стандартного модуля “Printer”

Пусть требуется составить программу, позволяющую по заданному значению аргумента х найти значение у функции

Составим программу на языке Паскаль.

{...}

program funct;

Uses Printer;

var

   x,y:real;

begin

   write('Введите значения переменной x: '); readln(x);

   writeln(lst,'Исходные данные: x=', x:4:2);

   write('Отладочная печать: ');

   if x<0

then begin

     writeln('A');

               y:=-x

 end

      else if (x>=0) and (x<5)

                then begin

                            writeln('B');

                            y:=sqr(x)

end

    {можно было вместо условия (x>=0)and(x<5) записать x<5)}

else begin

                            writeln('C');

                            y:=x

                         end;

   writeln(lst,'Результат: ',y:4:2);

   readln;

end.

При отладке данной программы рекомендуется использовать пять тестовых значений: три находящиеся внутри указанных диапазонов и два граничных значения. Например, следующие значения исходной переменной х: -4, 0, 3, 5, 6.

Вопрос 10

Использование отладчика при отладке указанной программы

Чтобы избежать необходимости включения в текст программы дополнительной отладочной печати можно использовать встроенный отладчик системы программирования. Для этого выполним следующие действия:

а) Разместим в окне просмотра (Watch) имена переменных, изменение значений которых в процессе пошагового выполнения программы мы будем просматривать. Для этого расположим в окне редактора под переменной х курсор и реализуем команду Debug/Add Watch               (Control+F7).

б) Будем выполнять пошаговое выполнение программы нажатием на клавишу F7 или F8.

Вопрос 11

Конструкция  типа ”ВЫБОР” (”ВАРИАНТ”)

1  Пример программирования на языке Паскаль с использованием конструкции  ”ВЫБОР” .

{...}