Главная страница
Навигация по странице:

  • Теория Логические выражения

  • Операция Описание Операнд 1 Операнд 2 Результат

  • Пример. Условные операторы: if х > 0 then х := х + 1 else x := 0; if q = 0 then a := 1; Оператор выбора

  • Замечание Современный стиль программирования предполагает состав- ление программ без использования оператора Goto. Компонент ListBox

  • Некоторые приемы работы с отладчиком

  • Практика Задача

  • Проект формы Текст модуля

  • № 3.14. Написать программу, которая определяет величину уклона на участке площадью Р га по заданному сечению го- ризонталей Н и длине всех горизонталей С

  • A=0, B=0, C — любое — ошибка при вводе исходных

  • Практикум по информатике


    Скачать 7.84 Mb.
    НазваниеПрактикум по информатике
    АнкорPraktikum_2008.pdf
    Дата21.09.2017
    Размер7.84 Mb.
    Формат файлаpdf
    Имя файлаPraktikum_2008.pdf
    ТипКнига
    #8906
    страница16 из 21
    1   ...   13   14   15   16   17   18   19   20   21
    § 3. Программы с разветвлениями
    В данном параграфе рассматриваются следующие вопро-
    сы:
    условный оператор, оператор выбора (варианта),
    оператор перехода, компоненты ListBox, ComboBox, некоторые приемы работы с отладчиком.
    Теория
    Логические выражения
    Логическое выражение в общем виде выгдядит так:
    ОП1 оператор ОП2,
    Где ОП1 и ОП2 — операнды логического выражения, в каче- стве которых может выступать переменная, константа, функция или выражение; оператор — это оператор сравнения.
    Результатом логического выраженияявляется логическое значение True или False. Логические выражения чаще всего ис- пользуются в условном операторе и в операторах цикла и состоят из:
    — логических констант True и False ;
    — операндов (переменные, элементы массивов, выражения)
    — логических переменных типа boolean;
    — операций сравнения (отношения);
    — логических операций;
    — круглых скобок.
    Для установления отношения между двумя значениями, за- данными выражениями, переменными или константами, исполь- зуются следующие операции сравнения:
    — = — равно,
    — < — меньше,
    — > — больше,
    — <= — меньше или равно,
    — >= — больше или равно,
    — <> — не равно,
    — in — принадлежность множеству.

    336
    Операции сравнения выполняются после вычисления соот- ветствующих выражений. Результатом операции сравнения явля- ется значение False, если соответствующее отношение не имеет места, или значение True, если соответствующее отношение име- ет место.
    Замечание
    Приоритет операций сравнения меньше, чем приоритет логи- ческих операций. Поэтому если содержащее операцию сравнения логическое выражение является операндом логической операции, то его нужно заключить в круглые скобки.
    В сложных логических выражениях используются следую- щие логические операторы
    Операция
    Описание
    Операнд 1
    Операнд 2
    Результат
    not
    Отрицание
    False
    True
    True
    False and
    Логическое и
    False
    False
    True
    True
    False
    True
    False
    True
    False
    False
    False
    True or
    Логическое или
    False
    False
    True
    True
    False
    True
    False
    True
    False
    True
    True
    True xor
    Исключающее или
    False
    False
    True
    True
    False
    True
    False
    True
    False
    True
    True
    False
    Пример.
    Логические выражения х < 10 х + 17 >= у
    (х > a) and (х < b).
    Переменные х, а, b и у могут принадлежать, например, к чи- словым или строковым типам.
    Условный оператор
    Условный оператор обеспечивает выполнение или невыпол- нение некоторых операторов в зависимости от соблюдения опре- деленных условий. Условный оператор в общем случае предна- значен для организации разветвления программы на два направ- ления и имеет формат: if <Условие> then <0ператор1> [ else <0ператор2> ];

    337
    Условие представляет собой выражение логического типа.
    Оператор работает следующим образом: если условие истинно
    (имеет значение True), то выполняется Оператор1, в другом слу- чае выполняется 0ператор2. Оба оператора могут быть составны- ми. Условный оператор может быть записан в сокращенной фор- ме, когда слово else и оператор после него отсутствуют. В этом случае при невыполнении условия выполняется оператор, сле- дующий за условным.
    Для организации разветвлений на три направления и более можно использовать несколько условных операторов, вложенных друг в друга. При этом каждое else соответствует тому then, кото- рое непосредственно ему предшествует. Из-за возможных оши- бок следует избегать большой вложенности условных операторов друг в друга.
    Пример.
    Условные операторы: if х > 0 then х := х + 1 else x := 0; if q = 0 then a := 1;
    Оператор выбора
    Оператор выбора является обобщением условного оператора и позволяет сделать выбор из произвольного числа имеющихся вариантов, то есть организовать разветвления на произвольное число направлений. Этот оператор состоит из выражения, назы- ваемого селектором, списка вариантов и необязательной ветви else, имеющей тот же смысл, что и в условном операторе.
    Формат оператора выбора: case <Выражение-селектор> of
    <Список1> : <Оператор1>;
    : else <Оператор>; end;
    Выражение–селектор должно быть порядкового типа. Каж- дый вариант представляет собой список констант, отделенных двоеточием от относящегося к данному варианту оператора, воз- можно, составного. Список констант выбора состоит из произ- вольного количества значений и диапазонов, отделенных друг от друга запятыми. Границы диапазона записываются двумя кон- стантами через разделитель " . . " . Тип констант должен совпа- дать с типом выражения–селектора.

    338
    Оператор выбора выполняется следующим образом:
    — вычисляется значение выражения–селектора;
    — производится последовательный просмотр вариантов на пред- мет совпадения значения селектора с константами и значениями из диапазонов соответствующего списка;
    — если для очередного варианта этот поиск успешный, то вы- полняется оператор этого варианта. После этого выполнение опе- ратора выбора заканчивается;
    — если все проверки оказались безуспешными, то выполняется оператор, стоящий после слова else (при его наличии).
    Пример.
    Оператор выбора. case DayNumber of
    1 .. 5 : strDay := 'Рабочий день';
    6, 7 : strDay := 'Выходной день' else strDay := ''; end;
    В зависимости от значения целочисленной переменной
    DayNumber, содержащей номер дня недели, присваивается соот- ветствующее значение строковой переменной strDay.
    Оператор перехода
    Оператор безусловного перехода осуществляет переход на оператор, помеченный меткой. Формат оператора перехода сле- дующий:
    Goto метка, где метка ― это идентификатор, находящийся перед оператором, который должен быть выполнен после опера- тора Goto.
    Метка должна быть описана в разделе label, который распо- лагается перед разделом описания переменных.
    Например,
    Label NNN, 123, G12;
    …….
    NNN: A:=D/S;
    ….
    Goto NNN;
    Замечание
    Современный стиль программирования предполагает состав- ление программ без использования оператора Goto.
    Компонент ListBox

    339
    TListBox (список) нужен для показа прокручиваемого спи- ска. Классический пример ListBox’а в среде Windows — выбор файла из списка в пункте меню File | Open многих прило- жений. Названия файлов или директорий находятся в ListBox.
    Главные свойства компонента TListBox
    Свойство
    Назначение
    Name
    Имя компонента. В программе ис- пользуется для доступа к свойствам компонента
    Items
    Элементы списка
    ItemIndex
    Номер выбранного элемента списка.
    Номер первого элемента списка ра- вен нулю
    Список может быть сформирован во время создания формы или во время работы программы.
    Для формирования списка во время создания формы надо в окне Инспектора Объектов (Object Inspector) выбрать свойство
    Items и щелкнуть на кнопке запуска редактора списка строк. В открывшемся окне String List Editor нужно набрать список, каж- дый элемент списка в отдельной строке. После ввода очередного элемента списка, для перехода к новой строке, необходимо на- жать клавишу «ENTER». После ввода последнего элемента спи- ска щелкнуть на кнопке OK.
    Добавить элементы в список непосредственно в программе можно с помощью метода Add, например:
    ListBox1.Items.Add('Россия');
    ListBox1.Items.Add('Австрия');
    Если ни один из элементов списка не выбран, то значение свойства ItemIndex равно –1.
    Компонент TComboBox
    TComboBox во многом напоминает TListBox, за исключением того, что позволяет вводить информацию в маленьком поле ввода/редактирования сверху либо путем выбора из списка. Не- которые свойства: Text (текст, находящийся в поле ввода- редактирования); Items (элементы раскрывающегося списка);
    DropDownCount (количество отображаемых элементов в раскры- том списке). Список может быть сформирован таким же образом, как у компонента ListBox.
    Некоторые приемы работы с отладчиком

    340
    Отладчик позволяет выполнять программу построчно, по функциям или по блокам. Указав, какие части программы долж- ны выполняться и когда выполнение программы должно приос- тановиться, можно быстро пропускать те участки программы, ко- торые работают правильно, сосредоточившись на отладке тех частей, которые приводят к неверному выполнению программы.
    Для управления выполнением программы предназначены сле- дующие команды.
    Run
    Программа выполняется без остановки на ка- ждой строке. Эта программа эквивалентна вы- полнению программы вне отладчика
    Step Over
    Программа выполняется построчно. Подпро- граммы выполняются как одна строка
    Trace Into
    Программа выполняется построчно. Также выполняется каждая строка подпрограммы
    Run To Cursor
    Программа выполняется до той строки, на ко- торой находится курсор в окне Редактора Ко- да
    Program Pause
    Выполнение программы приостанавливается
    Program Reset
    Выполнение программы завершается
    Add Breakpoint
    Можно указать точки прерывания при выпол- нении программы
    Add Watch
    Можно указать точки просмотра для слежения за изменением значений переменных или по- лей структур данных
    В процессе обучения программированию очень удобно поль- зоваться пошаговым выполнением программы. Почему? Это по- зволяет посмотреть, как изменяются значения переменных, уча- ствующих в программе, в процессе пошагового выполнения. Ка- кую последовательность действий предпринять? Установить кур- сор в тексте программы на вторую исполняемую строку после
    Begin и запустить команду Run To Cursor (F4). Программа вы- полнит этот оператор и остановится. В окне Редактора Кода вы- полненная строка будет помечена зеленой стрелкой слева и вы- делена синим цветом. Если навести курсор на название какой- нибудь переменной из предшествующей части программы, рядом с курсором появится справочное окошко, где приведено значение

    341
    этой переменной. Далее запустить командой Step Over (F8) сле- дующий шаг выполнения. Будет помечена следующая строка при выполнении. С помощью курсора мыши можно посмотреть, как изменились значения переменных при выполнении этого шага программы.
    Часто при отладке пользуются окном точек просмотра. Поме- тить переменные для просмотра можно, наведя на них курсор и выполнив команду Add Watch (Ctrl+F5). Далее следует запустить пошаговое выполнение программы. Часто окно Watch List бывает закрыто окном редактора кода. Его надо отодвинуть.
    Отладочные настройки отменяются командой Program Reset.
    Практика
    Задача
    Составить программу, определяющую по росту и весу пользо- вателя программы, похудеть или поправиться ему нужно и на сколько килограммов.
    Компоненты
    Имя компонента
    Свойства компонентов
    Значение
    Назначение
    Form1 Caption Контроль веса
    Заголовок формы
    Label1 Caption Поле для ввода веса
    Подсказка поль- зователю
    Label2 Caption Поле для ввода роста
    Подсказка поль- зователю
    Label3 Caption
    Поле вывода ре- зультатов работы программы
    Button1 Caption Вычислить
    Кнопка для вы- числения
    Переменные
    Обозначение в про- грамме
    Содержание
    Тип wes
    Вес
    Вещественный
    Rost
    Рост
    Вещественный opt
    Оптимальный вес
    Вещественный d
    Отклонение от опти- мального веса
    Вещественный
    Проект формы

    342
    unit wtest;
    …………………….
    var
    Form1: TForm1;
    implementation
    {$R *.DFM}
    procedure TForm1.Button1Click(Sender: TObject);
    var wes:real; {вес}
    Rost:real; {рост} opt:real; {оптимальный вес} d:real; {отклонение от оптимального веса}
    begin
    wes:=StrToFloat(Edit1.text);
    Rost:=StrToFloat(Edit2.Text); opt:=Rost-100; if wes=opt then
    Label3.caption:='Ваш вес оптимален!' else if wesLabel3.caption:='Вам надо поправиться, на'+ FloatTostr(d)+
    'кг.'; end else begin d:=wes-opt;
    Label3.caption:='Надо немного похудеть, на '+ FloatTostr(d)+ 'кг.'; end;
    end;
    end.

    343
    Результаты работы программы
    Задача
    Некоторая страховая компания страхует индивидуальные до- ма по следующей схеме:
    Стоимость страховки = Площадь * Цена_кв.м * Коэф.этажности *
    *Износ/100*Проценты*Курс_у.е..
    Цена_кв.м:
    Кирпичный коттедж — 200 у.е.
    Дом из оцилированного бревна — 250 у.е.
    Дом из бруса — 150 у.е.
    Дом из бревен — 100 у.е.
    Каркасно-щитовой — 50 у.е.
    Коэффициетн этажности:
    1 этаж — 1 2 этажа — 1,2 3 этаж — 1,3
    Коэффициент износа:
    Возраст дома:
    Более 15 лет — 0,8
    От 11 до15 лет — 0,6 от 6 до 10лет — 0,4 до 5 лет — 1
    Проценты страхового сбора:
    Количество лет страхования в данной страховой компании
    Превышает 7 лет — 1 процент
    От 3 до 7 лет — 2 процента
    До 3 лет (включительно) — 3 процента
    Компоненты
    Имя компонента
    Свойства компонентов
    Значение
    Назначение
    Form1 Caption Сумма страховки индиви- Заголовок формы

    344
    дуального дома
    Label1 Caption Программа для расчета суммы страхования инди- видуального дома в неко- торой страховой компании
    Справочная ин- формация для пользователя программы
    Label2 Caption Общая площадь (кв.м)
    Подсказка поль- зователю
    Label3 Caption Год постройки
    Подсказка поль- зователю
    Label4 Caption Сколько лет дом страхо- вался в данной страховой компании
    Подсказка поль- зователю
    Label5 Caption
    Поле для вывода суммы страховки дома
    Label6 Caption
    Поле для вывода текущей даты, установленной на компьютере
    Label7 Caption Курс у.е.
    Подсказка поль- зователю
    Edit1 Text
    …..
    Поле для ввода общей площади
    Edit2 Text
    …..
    Поле для ввода года постройки дома
    Edit3 Text
    …..
    Поле для ввода количества лет страхования в данной компании
    Edit4 Text
    Поле для ввода курса у.е.
    Button1 Caption РАСЧЕТ
    Кнопка для вы- числения суммы страховки
    Button2 Caption ВЫХОД
    Кнопка закрытия формы и выхода из программы
    ListBox1 Items
    Кирпичный коттедж
    Дом из оцилированного бревна
    Дом из бруса
    Дом из бревен
    Каркасно-щитовой
    Список для вы- бора типа дома
    ComboBox1 Text
    Items
    Количество этажей
    1 2
    3
    Поле со списком
    Переменные

    345
    Обозначение в про- грамме
    Содержание
    Тип
    S
    Общая площадь индиви- дуального дома
    Вещественный
    Zena_m
    Цена кв. метра
    Денежный
    Summa
    Сумма страхового взно- са
    Денежный d
    Текущий день
    Целый беззнаковый m
    Текущий месяц
    Целый беззнаковый
    Y
    Текущий год
    Целый беззнаковый
    God
    Год постройки дома
    Целый беззнаковый
    KE
    Коэффициент этажности Вещественный
    Iznos
    Коэффициент износа
    Вещественный
    Prozent
    Процент страхового взноса
    Вещественный
    Kurs
    Курс у.е.
    Вещественный
    Проект формы
    Текст модуля
    unit Unit1;
    ……………………….
    var
    Form1: TForm1;
    implementation
    {$R *.dfm}
    procedure TForm1.Button1Click(Sender: TObject);
    Var S:Real; //общая площадь дома
    Zena_m, Summa: currency;// цена кв.м, сумма страховки дома

    346
    d,m,Y,God: Word; // день, месяц, год страхования; год
    //постройки дома
    KE:Real; // коэффициент, учитывающий этажность
    Iznos:Real;// коэффициент износа
    Prozent:Integer; // процент страхового взноса
    Kurs:Real; // курс у.е.
    begin
    // ввод площади дома, года постройки и курса у.е.
    S:=StrToFloat(Edit1.Text);
    God:=StrToInt(Edit2.Text);
    Kurs:=StrToFloat(Edit4.Text);
    // вывод текущей даты на форму
    Label6.Caption:='Сегодня : '+DateToStr(Date);
    // по выбранному из списка типу дома определяется цена за
    //кв.м
    Case ListBox1.ItemIndex of
    0:Zena_m:=200;
    1:Zena_m:=250;
    2:Zena_m:=150;
    3:Zena_m:=100;
    4:Zena_m:=50;
    Else Exit; end;
    // определение коэффициента этажности
    // по выбранному из поля со списком числу этажей
    Case ComboBox1.ItemIndex of
    0:KE:=1;
    1:KE:=1.2;
    2:KE:=1.3;
    Else Exit; end;
    // разделение текущей даты на составляющие
    // и помещение их в отдельные переменные: год, месяц, день
    Decodedate(Date,Y,m,d);
    // если разность между текущим годом и годом постройки дома
    // не больше 5 лет, то износ равен 1
    If Y-God<=5 Then Iznos:=1
    // иначе если разность между текущим годом и годом постройки // дома
    // больше 5 лет и не более 10, то износ равен 0,8
    Else If ((Y-God)>5) and ((Y-God)<=10)
    Then Iznos:=0.8
    // иначе если разность между текущим годом и годом
    // постройки дома

    347
    // не больше 15 лет, то износ равен 0,6
    Else If Y-God<=15 Then Iznos:=0.6
    Else
    Iznos:=0.4;// иначе износ 0,4
    // если дом застрахован в данной компании не более 3 лет,
    // то процент страхового взноса равен 3
    If StrToInt(Edit3.Text)<=3 Then Prozent:=3
    // иначе дом застрахован в данной компании более 7 лет,
    // то процент страхового взноса равен 1
    Else If StrToInt(Edit3.Text)>7 Then Prozent:=1
    // иначе дом страхуется от 3 до 7 лет,
    // процент страхового взноса равен 2
    Else Prozent:=2;
    // расчет суммы страхового взноса
    Summa:=S*Zena_m*KE*Iznos/100*Prozent*Kurs;
    // вывод суммы страховки на форму
    Label5.Caption:='Сумма страховки Вашего дома составляет: '
    +FloatToStrF(Summa,Fffixed,10,2)+' руб.'
    end;
    procedure TForm1.Button2Click(Sender: TObject);
    begin
    Form1.Close;
    end;
    end.
    Результаты работы программы

    348
    Задачи для самостоятельного решения
    Группа А
    № 3.1. Дано действительное число x. Вычислить f(x), если
    ⎪⎩






    =
    случае
    противном
    в
    x
    при
    x
    x
    f
    4
    ,
    2 2
    )
    (
    2
    № 3.2. Даны три действительных числа. Выбрать из них те, кото- рые принадлежат интервалу (1;3).
    № 3.3. Даны действительные числа x, y (x
    ≠y). Меньшее из этих двух чисел заменить их полусуммой, а большее — их удвоенным произведением.
    № 3.4.Даны три действительные числа. Возвести в квадрат те из них, значения которых неотрицательны.
    № 3.5.Дано действительное число a. Вычислить f(x), если
    ⎪⎩



    +
    +

    +
    =
    +
    случаях
    остальных
    в
    x
    x
    x
    при
    x
    x
    x
    f
    )
    5 4
    /(
    1
    ,
    2 5
    4
    )
    (
    2 2
    № 3.6. Дано действительное число a. Вычислить f(x), если

    349



    ⎪⎪





    =
    ,
    1 0
    ,
    0
    ,
    0
    )
    (
    4
    случаях
    остальных
    в
    x
    x
    при
    x
    x
    при
    x
    f
    № 3.7. Дано действительное число a. Вычислить f(x), если
    ,
    sin
    1 0
    0
    ,
    0
    )
    (
    2 2
    2



    ⎪⎪




    <


    =
    случаях
    остальных
    в
    x
    x
    x
    при
    x
    x
    x
    при
    x
    f
    π
    № 3.8. Даны действительные числа a, b, c. Проверить, выполня- ются ли неравенства a< b< c.
    № 3.9. Даны действительные положительные числа: a, b, c, d. Вы- яснить, можно ли прямоугольник со сторонами a, b уместить внутри прямоугольника со сторонами c, d так, чтобы каждая из сторон одного прямоугольника была параллельна или перпенди- кулярна каждой стороне второго прямоугольника.
    № 3.10. Даны действительные положительные числа a, b, c, x, y.
    Выяснить, пройдет ли кирпич с ребрами a, b, c в прямоугольное отверстие со сторонами x и y. Просовывать кирпич в отверстие разрешается только так, чтобы каждое из его ребер было парал- лельно или перпендикулярно каждой из сторон отверстия.
    Группа Б
    № 3.11. Написать программу для определения площади треуголь- ного участка по заданным значениям длин его сторон А, В и С.
    Для вычисления площади использовать формулу Герона
    S=
    )
    )(
    )(
    (
    C
    P
    B
    P
    A
    P
    P



    , где P=
    2
    C
    B
    A
    +
    +
    — полупериметр.
    В программе предусмотреть проверку существования тре- угольника со сторонами А, В и С. Треугольник со сторонами А, В и С существует лишь в том случае, если одновременно выполня- ются неравенства
    A
    C
    B
    B
    C
    A
    C
    B
    A
    f f
    f
    +
    +
    +
    ,
    ,
    . В случае, если треугольник с заданными значениями сторон не существует, выдавать сообщение: «ОШИБКА, ПРОВЕРЬТЕ ИСХОДНЫЕ
    ДАННЫЕ» и передавать управление в начало программы. Длины

    350
    сторон вводить в метрах, площадь определять в гектарах с точно- стью до 1 га.
    № 3.12. Из вершины О трапециевидного участка (рис. 7–3) изме- рены расстояния А, С и В до трех остальных вершин и угол меж- ду сторонами А и В. Написать программу для вычисления пло- щади этого участка по формуле:
    α
    α
    α
    sin
    *
    *
    2
    cos
    *
    sin
    *
    2 2
    A
    A
    C
    B
    S

    +
    =
    А С
    α
    О
    В
    Рис. 6.3.
    Расстояния А, В и С измерены в метрах, угол
    α в градусах, минутах и секундах. Площадь вычислить в гектарах, с точностью до 0,001 га.
    Форма вывода результата:
    Площадь = значение S в га
    В программе предусмотреть следующие запросы при вводе:
    БОКОВАЯ СТОРОНА =
    ОСНОВАНИЕ =
    ДИАГОНАЛЬ =
    УГОЛ =
    В программе предусмотреть также проверку существования трапеции с введенными параметрами. Случаи, в которых трапе- цию построить нельзя:
    – угол
    α
    °
    ≥180 ,
    α
    sin
    *
    A
    C p
    ,
    -
    °
    ≤ 90 0
    α
    p и СВо всех указанных ситуациях выводить сообщение
    «ТРАПЕЦИИ НЕ СУЩЕСТВУЕТ», и передавать управление оператору ввода исходных данных.
    № 3.13. Написать программу для определения площади четырех- угольника по значениям его четырех сторон А, В, С, D и диагона- ли (рис. 7–4) по формуле:

    351
    S=
    )
    )(
    )(
    (
    )
    )(
    )(
    (
    2 2
    2 2
    1 1
    1 1
    L
    P
    D
    P
    C
    P
    P
    L
    P
    B
    P
    A
    P
    P



    +



    , где
    2 1
    L
    B
    A
    P
    +
    +
    =
    ,
    2 2
    L
    D
    C
    P
    +
    +
    =
    B
    A
    L C
    D
    3.30
    Рис. 6.4.
    Значения A, B, C, D, L вводить в метрах, площадь округлять до сотых гектара.
    В программе предусмотреть проверку условия
    )
    (
    )
    (
    )
    (
    )
    (
    )
    (
    )
    (
    C
    L
    D
    D
    L
    C
    L
    D
    C
    A
    L
    B
    B
    L
    A
    L
    B
    A
    >
    +

    >
    +

    >
    +

    >
    +

    >
    +

    >
    +
    В случае невыполнения этого условия выводить сообщение
    «ОШИБКА В ИСХОДНЫХ ДАННЫХ» и передавать управление оператору ввода исходных данных.
    В программе предусмотреть следующие запросы при вводе исходных данных:
    СТОРОНА СЛЕВА ОТ ДИАГОНАЛИ =
    СТОРОНА СПРАВА ОТ ДИАГОНАЛИ =
    ДИАГОНАЛЬ =
    Форма вывода результата:
    ПЛОЩАДЬ = значение S ГА.
    № 3.14. Написать программу, которая определяет величину
    уклона на участке площадью Р га по заданному сечению го-
    ризонталей Н и длине всех горизонталей С:
    P
    C
    H
    I
    175
    *
    =
    Если вычисленное значение I
    ≤3, выводить сообщение:
    «ИЗМЕРЕНИЕ
    ПЛОЩАДЕЙ
    ПО
    ФОТОСХЕМЕ
    ДОПУСТИМО: I<=3ГР.»
    В противном случае выводить сообщение:
    «ИЗМЕРЕНИЕ
    ПЛОЩАДЕЙ
    ПО
    ФОТОСХЕМЕ
    НЕДОПУСТИМО: I>3ГР.»
    Форма запросов при вводе исходных данных:

    352
    ПЛОЩАДЬ =
    СЕЧЕНИЕ ГОРИЗОНТАЛЕЙ =
    ДЛИНА ГОРИЗОНТАЛЕЙ =
    Примечание
    Уклон линии — отношение превышения h между точками к горизонтальному проложению S между ними.
    Превышение — разность высот точек.
    Горизонтальное проложение — ортогональная проекция ли- нии местности на горизонтальную плоскость.
    Высоты горизонталей всегда кратны высоте сечения релье- фа. Высота сечения рельефа — это расстояние, на которое отсто- ят друг от друга уровенные поверхности, рассекающие земную поверхность.
    № 3.14. Написать программу для вычисления предполагаемого валового сбора зерна по формулам: где x
    1
    , x
    2
    , x
    3
    — площади почвенных групп (в га),
    R — текущая норма осадков (в мм).
    Форма запросов при вводе исходных данных и сообщений при выводе результатов.
    ПЛОЩАДИ ПОЧВЕННЫХ ГРУПП:
    X1=
    X2=
    X3=
    ТЕКУЩАЯ НОРМА ОСАДКОВ=
    ПРЕДПОЛАГАЕМЫЙ ВАЛОВЫЙ СБОР ЗЕРНА=значение
    Y ц.
    № 3.15. Написать программу для определения положения точки с координатами X1, Y1 по отношению к полосе шириной P, ось ко- торой описывается уравнением AX + BY + C = 0.
    Расстояние от точки с координатами X1, Y1 до прямой мож- но вычислить по формуле
    ⎪⎩




    +
    +
    +
    <
    +
    +
    +
    =
    34
    ,
    56 59
    ,
    112 51
    ,
    84 6
    ,
    132 45
    ,
    431 34
    ,
    56 84
    ,
    56 56
    ,
    39 14
    ,
    73 36
    ,
    218 3
    2 1
    3 2
    1
    R
    для
    x
    x
    x
    R
    для
    x
    x
    x
    Y

    353
    Условием нахождения точки в указанной полосе является не- равенство R
    ≤P/2.
    В программе предусмотреть запросы на ввод исходных дан- ных:
    A, B, C=
    P=
    X1, Y1=
    Результат выводить в виде одного из сообщений:
    ТОЧКА В ПРЕДЕЛАХ ПОЛОСЫ или
    ТОЧКА ЗА ПРЕДЕЛАМИ ПОЛОСЫ
    № 3.16. Написать программу для определения положения точки с координатами X1, Y1 по отношению к круглому участку радиуса
    R с центром в точке с координатами X
    0
    , Y
    0
    Пояснение: признаком нахождения точки внутри или на гра- нице участка является выполнение неравенства где
    ΔX=X1-X0, ΔY=Y1-Y0.
    В программе предусмотреть выдачу запросов на ввод исход- ных данных:
    X0, Y0=
    R=
    X1, Y1=
    Результаты выводить в виде одного из сообщений:
    ТОЧКА В ПРЕДЕЛАХ УЧАСТКА или
    ТОЧКА ЗА ПРЕДЕЛАМИ УЧАСТКА
    № 3.17. Написать программу для определения положения точки с координатами X
    1
    , Y
    1
    , Z
    1
    по отношению к сфере с радиусом R и координатами центра X
    0
    , Y
    0
    , Z
    0
    . Признаком нахождения точки внутри сферы или на ее границе является выполнение неравенст- ва где
    |
    |
    2 2
    1 1
    B
    A
    C
    BY
    AX
    R
    +
    +
    +
    =
    ,
    2 2
    R
    Y
    X

    Δ
    +
    Δ
    ,
    2 2
    2
    R
    Z
    Y
    X

    Δ
    +
    Δ
    +
    Δ
    ,
    ,
    0 1
    0 1
    0 1
    Z
    Z
    Z
    Y
    Y
    Y
    X
    X
    X

    =
    Δ

    =
    Δ

    =
    Δ

    354
    В программе предусмотреть выдачу запросов на ввод исход- ных данных:
    X0, Y0, Z0=
    R=
    X1,Y1, Z1=
    Результаты выводить в виде одного из сообщений:
    ТОЧКА ЗА ПРЕДЕЛАМИ СФЕРЫ или
    ТОЧКА В ПРЕДЕЛАХ СФЕРЫ
    № 3.18. Написать программу для определения положения точки с координатами X1, Y1 по отношению к прямой, описываемой уравнением AX + BY + C = 0. Признаком того, что точка лежит на прямой, будем считать выполнение неравенства :
    Форма запросов при вводе исходных данных:
    A, B, C=
    X1, Y1=
    Форма вывода результата:
    ТОЧКА НА ПРЯМОЙ или
    ТОЧКА ВНЕ ПРЯМОЙ, в зависимости от выполнения или невыполнения заданного усло- вия.
    № 3.19. Написать программу, которая определяет положение прямой, заданной уравнением AX+BY+C=0, относительно пря- моугольной системы координат. Возможные ситуации:
    A=0, B=0, C — любое — ошибка при вводе исходных
    данных, прямой не существует,
    A=0, B
    ≠0, C=0 — прямая совпадает с осью X,
    A
    ≠0, B=0, C=0 — прямая совпадает с осью Y,
    A=0, B
    ≠0, C≠0 — прямая проходит через точку Y= –C/B параллельно оси X,
    A
    ≠0, B=0, C≠0 — прямая проходит через точку Y= –C/A параллельно оси Y,
    A
    ≠0, B≠0, C=0 — прямая проходит через начало координат и точку с произвольным значением X (преду- смотреть в случае возникновения указанной ситуации ввод значения X) и Y = –AX/B.
    001
    ,
    0
    |
    |
    1 1
    <
    +
    +
    C
    BY
    AX

    355
    A
    ≠0, B≠0, C≠0 — прямая пересекает ось X в точке X= –C/A и ось
    Y в точке Y=-C/B.
    Запросы при вводе исходных данных:
    ПАРАМЕТРЫ A, B, C =
    Форма вывода результатов:
    СОВПАДАЕТ С ОСЬЮ X или СОВПАДАЕТ С ОСЬЮ Y и т. п.
    В случае A
    ≠0, B≠0, C=0 вначале выводить запрос:
    «ВВЕДИТЕ ЛЮБОЕ ЗНАЧЕНИЕ X», а затем сообщение:
    «ПРОХОДИТ ЧЕРЕЗ НАЧАЛО КООРДИНАТ И ТОЧКУ
    X = значение, Y = значение».
    № 3.20. Написать программу, которая определяет, лежит ли точка с координатами X, Y на прямой, проведенной через точки с коор- динатами X
    1
    , Y
    1 и X
    2
    , Y
    2
    . Признаком, того что точка лежит на прямой, будем считать выполнение неравенства.
    01
    ,
    0
    X
    X
    X
    X
    Y
    Y
    Y
    Y
    1 2
    1 1
    2 1
    <





    Форма вывода результата:
    ТОЧКА НА ПРЯМОЙ, если точка лежит на прямой, и
    ТОЧКА ВНЕ ПРЯМОЙ, если точка лежит не на прямой.
    Форма запроса при вводе исходных данных:
    КООРДИНАТЫ X1, Y1=
    КООРДИНАТЫ X2, Y2=
    КООРДИНАТЫ X, Y=
    1   ...   13   14   15   16   17   18   19   20   21


    написать администратору сайта