Лабораторная работа 4.
Условные операторы.


Задание

Контрольные вопросы и задания


Несколько замечаний перед тем, как приступить к выполнению задания...

Задание

  1. Задача "Вычисление функции" (Word).

    Указания

    1. Оформите нахождение максимума из двух чисел в виде функции Max.
    2. Оформите нахождение минимума из двух чисел в виде функции Min.
    3. Оформите вычисление функции Z(x,y) в виде соответствующей функции. В реализации данной функции используйте вложенный оператор if и написанные ранее подпрограммы Max и Min.
  1. Задача "Вид треугольника" (Word).

    Указания

    1. Оформите в виде функции определение вида треугольника:
      function TypeOfTriangle(A, B, C: Real): Integer;
      { По длинам сторон треугольника A, B, C возвращает целое число (вид треугольника):
      0, если треугольник с такими сторонами построить нельзя
      3, если треугольник равносторонний
      2, если треугольник равнобедренный
      1, иначе (треугольник общего вида). }

       
    2. Треугольник существует, если сумма длин двух любых его сторон больше длины третьей стороны. В реализации функции TypeOfTriangle используйте вложенный оператор if .
    3. В реализации вывода результатов используйте оператор case.

       
  2. Задача "Квадратное уравнение" (Word).
     

    Указания

    1. Оформите в виде процедуры вычисление действительных корней квадратного уравнения и их количества:
      procedure Equation(A, B, C: Real; var X1, X2: Real; var N: Integer);
      { Вычисление действительных корней квадратного уравнения и их числа.
      A, B, C - коэффициенты квадратного уравнения, A<>0.
      Возвращает:
      X1, X2 - значения действительных корней. Побочный эффект: если действительных корней нет, возвращает в качестве X1 и X2 нули.
      N - число действительных корней:
      0, если действительных корней нет,
      1, если есть действительные корни и X1=X2
      2, если есть действительные корни и X1<>X2.}

     
  3. Задача "Копейка рубль бережет" (Word).
     

    Указания

    1. Оформите в виде процедуры перевод копеек в рубли и копейки.
    2. Оформите в виде функции подбор для заданного числа соответствующей формы слова "рубль". В реализации функции используйте оператор case.
    3. Оформите в виде функции подбор для заданного числа соответствующей формы слова "копейка". В реализации функции используйте оператор case.


 

Контрольные вопросы и задания

  1. Напишите, какое значение будет иметь переменная Z после выполнения операторов
    Z:=0;
    if X>0 then if Y>0 then Z:=1 else Z:=2;

    при следующих значениях переменных X и Y:
    a) X=1, Y=1
    b)
    X=1, Y=-1
    c) X=-1, Y=1
  2. Пусть имеется оператор присваивания X:=A or B and C, где переменные X, A, B, C имеют тип Boolean. Напишите условный оператор, который эквивалентен данному (например, оператору присваивания X:=not A эквивалентен условный оператор if A then X:=False else X:=True).
  3. Пусть имеется условный оператор if A then X:=B else X:=C, где переменные X, A, B, C имеют тип Boolean. Напишите оператор присваивания, который эквивалентен данному.
  4. Какие из следующих фрагментов программ содержат синтаксические ошибки? Обоснуйте ответ.
    1. var
        S: String;
      case S of
        'Zero': WriteLn('Ноль');
        'One': WriteLn('Один');
        'Two': WriteLn('Два');
      else
        WriteLn('Много!');
      end;
    2. var
        B: Boolean;
      case B of
        True: WriteLn('Истина');
        False: WriteLn('Ложь');
      else
        WriteLn('Неизвестно');
      end;

       
    3. var
        R: Real;
      case R of
        3.14159: WriteLn('Число Пи');
        2.71828: WriteLn('Число E');
      else

        WriteLn('Неизвестная константа');
      end;
    4. var
        I: Integer;
        S: String;
      case I div 100 mod 10 of
        0, 5..9: S:='копеек';
        1: S:='копейка';
        2..4: S:='копейки';
        else
          S:='????';
      end;
    5. type
        DayOfWeek=(Mon, Tue, Wed, Thu, Fri, Sat, Sun);
      var
        D: DayOfWeek;
      case D of
        Sat..Sun: WriteLn('Выходной день');
        else
          WriteLn('Рабочий день');
      end;