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

horizontal rule

Задание

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

horizontal rule

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

Задание

Задание необходимо сдать до 26 октября включительно. 

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

     

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

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

       
  2. Задача "Квадратное уравнение" (Pdf).
    Указания
    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. Задача "Копейка рубль бережет" (Pdf).
    Указания
    1. Оформите в виде процедуры перевод копеек в рубли и копейки.
    2. Оформите в виде функции подбор для заданного числа соответствующей формы слова "рубль". В реализации функции используйте оператор case.
    3. Оформите в виде функции подбор для заданного числа соответствующей формы слова "копейка". В реализации функции используйте оператор case.


    Следующие задачи являются дополнительными и не являются обязательными для выполнения, но решение подобных задач стоит определенное количество баллов (баллы указаны в скобках).
    Набравшие более 25 баллов в конце года получат зачет автоматом (при условии сдачи ВСЕХ лабораторных) по дисциплине "Практикум на ЭВМ".
    Набравшие менее 6 баллов в конце года получат дополнительное задание на экзамене по дисциплине "Основы программирования".


    Дополнительные задачи:
     

  4. Задача "Файл" (Pdf) (1).
     
  5. Задача "Время прибытия" (Pdf) (2).
     
  6. Задача "Шахматы" (Pdf) (3).
     
  7. Задача "Ремонт" (Pdf) (3).
     
  8. Задача "Прибытие самолета" (Pdf) (2).


 

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

  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;