Для тех ,кто решил зарегистрироваться на форуме «Беседка» !
Категорически запрещена регистрация  с одноразового и временного e-mail !Такие пользователи будут отправляться в бан без объяснения причин.
После регистрации необходимо активировать свою учетную запись .Если Вы в почте не обнаружили письмо с активацией рекомендуется проверить папку «Спам».
С уважением
 Администрация форума

Автор Тема: Язык Pascal в среде Delphi  (Прочитано 41996 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн технарь

  • *
  • Сообщений: 12704
  • Пол: Мужской
  • Имя : Владимир

Re: Язык Pascal в среде Delphi 7
« Ответ #75 : 13 Января 2013, 22:35 »
case с выражениями работает, важно какого они типа
Да почитал, действительно работают... но только в качестве условия.

Варианты перебора условиями быть уже не могут. Т.е. запись
case x of
      x<=-1:
        begin
неверна в принципе.

А если записать так
case (x<=-1) of
      true:
        begin
        // команды, если условие выполняется
        end;
      false:
        begin
        // команды, если условие не выполняется
        end;

Щас попробую...

Оффлайн Olga

  • *
  • Сообщений: 236
  • Пол: Женский
  • Имя : Ольга

Re: Язык Pascal в среде Delphi 7
« Ответ #76 : 13 Января 2013, 22:53 »
Так самое прикольное,что F = Max(u, x),как использовать Х>2,какой брать макс.?

Оффлайн технарь

  • *
  • Сообщений: 12704
  • Пол: Мужской
  • Имя : Владимир

Re: Язык Pascal в среде Delphi 7
« Ответ #77 : 13 Января 2013, 22:55 »
Попробовал - работает.
Но вариантов перебора недостаточно (true и false). Получается внутри одного выбора нужно вставлять дополнительный case где делать ещё одну селекцию. Если так - непонятно, чем в данной задаче более оправдано использование case нежели if.

Оффлайн технарь

  • *
  • Сообщений: 12704
  • Пол: Мужской
  • Имя : Владимир

Re: Язык Pascal в среде Delphi 7
« Ответ #78 : 13 Января 2013, 22:59 »
Цитата
Так самое прикольное,что F = Max(u, x),как использовать Х>2,какой брать макс.?
Не очень понял, что вас смущает...
1. Вычисляем u
2. Находим большее между u и x

Оффлайн lexus

  • *
  • Сообщений: 1527
  • Пол: Мужской
  • Статус : ути-пути

Re: Язык Pascal в среде Delphi 7
« Ответ #79 : 13 Января 2013, 23:22 »
Вот сделала-работает только только так(хотя Х можно назначить не  -50 и +50,а и больше.
Ольга, поздравляю! Опять же, упирается в условие задачи, а именно типы. Мы предположили, что введённое число целое и конвертируется интеджер чики-пуки. В принципе можно, как уже писал выше, предполагать в качестве Х вещественное, а затем его конвертировать в Х1 целого типа, с которым и выполнять проверку, как у Вас и сделано. Ещё можно расширить пределы [-50..+50] до [-MaxInt..+MaxInt]  ink , тогда диапазон будет полным.

технарь, конструкция
Код: [Выделить]
case x of
      x<=-1:
        begin
конечно же работать не будет. Тут помимо вычисляемого значения ещё и тип совсем не соответствует. Ведь в варианте условия
x<=-1
имеет булевый тип.

А вот насчёт того, что варианты выбора не могут быть выражениями, я уже намекал выше, что это не совсем так. Варианты выбора могут быть выражениями, но только если их значение будет вычислено не во время выполнения приложения, а на этапе компиляции. Поэтому в качестве варианта выбора можно использовать не только константы, но и некоторые выражения. Например, если переменная i целого типа, то вполне себе нормальной будет конструкция

case i of
   integer('V'): s:='Госдура';
   5: s:='Шла Саша по шоссе...';
end;

На условия компиляции могут влиять и директивы $... , так что есть смысл пробежаться и по ним.

Так самое прикольное,что F = Max(u, x),как использовать Х>2,какой брать макс.?
Ольга, так Max - это встроенная функция, если я правильно понимаю.



Оффлайн технарь

  • *
  • Сообщений: 12704
  • Пол: Мужской
  • Имя : Владимир

Re: Язык Pascal в среде Delphi 7
« Ответ #80 : 13 Января 2013, 23:38 »
Цитата
На условия компиляции могут влиять и директивы $
Имеется ввиду
Извините, Вам не разрешено просматривать этот текст. Пожалуйста, войдите или зарегистрируйтесь.

Я не думаю, что в данной лабораторке требовалось рыть так глубоко.

Короче у меня получилось так...
(открыть/скрыть)

Есть косяк с обработкой ошибок, но не стал пока усложнять код.

Оффлайн lexus

  • *
  • Сообщений: 1527
  • Пол: Мужской
  • Статус : ути-пути

Re: Язык Pascal в среде Delphi 7
« Ответ #81 : 13 Января 2013, 23:54 »
Да, конструкция case удобна, но ИМХО применительно к данному заданию не к селу будет. Если посмотреть на Ольгино решение, то можно сразу понять, что стоит только во внешних интервалах сделать граничные точки не включёнными в интервал, как сразу такое решение работать не будет.  00))

case x of
 -50..-1:begin
   u:=(abs(x)-sqr(x)-3)/(2*sin(y));
   Edit3.Text:=FloatToStr(u);
   end;

 1..2:begin
   u:=(sqr(x)-1.5*y+cos(x))/(1-x);
   Edit3.Text:=FloatToStr(u);
 end;
 3..50:begin
  u:=sqrt(x-2)+sin(Sqr(x)-8);
  Edit3.Text:=FloatToStr(u);
 end;
 else
 ShowMessage('sin(y)=0,(1-x)=0');

Ну действительно, стоит нам исключить хоть значение 2, хоть 3 из интервалов (строгое нер-во), как сразу конструкция
3..50:begin
или
1..2:begin
работать перестанет и придётся искать замену алгоритма. В общем, дубовое задание, Ольга, прям так и скажите преподам.  :D

Имеется ввиду вот это?
Да, именно их имел в виду. Это я к тому примеру, что не только константы могут быть указаны в условиях выбора. Например, значение функции от константы вполне может быть вычислено ещё на этапе компиляции, ну типа length('Механик с ТС - мудак'), и по идее нет резона оставлять вычисление до этапа выполнения. И вот от установок компилятора может многое зависеть. Кстати, большинство из них может быть определено в настройках среды, но когда директивы явно указаны в тексте программы, то такие директивы имеют приоритет над общими настройками.

Оффлайн Olga

  • *
  • Сообщений: 236
  • Пол: Женский
  • Имя : Ольга

Re: Язык Pascal в среде Delphi 7
« Ответ #82 : 13 Января 2013, 23:55 »
Мне вот пока даже MaxInt не понятно.А если например в качестве Х взять какое нибудь дробное число-0.5,то работать уже не будет,в любом случае работает только с целыми числами.Я так понимаю?

Оффлайн технарь

  • *
  • Сообщений: 12704
  • Пол: Мужской
  • Имя : Владимир

Re: Язык Pascal в среде Delphi 7
« Ответ #83 : 13 Января 2013, 23:59 »
Это я к тому примеру, что не только константы могут быть указаны в условиях выбора.
Буду на будущее иметь ввиду - как то в этом направлении вообще не думал.

Оффлайн lexus

  • *
  • Сообщений: 1527
  • Пол: Мужской
  • Статус : ути-пути

Re: Язык Pascal в среде Delphi 7
« Ответ #84 : 13 Января 2013, 23:59 »
Мне вот пока даже MaxInt не понятно.
Ольга, стандартная константа модуля "систем", означающая самое большое целое число.

А если например в качестве Х взять какое нибудь дробное число-0.5,то работать уже не будет,в любом случае работает только с целыми числами.Я так понимаю?
Правильно мыслите, одно из решений описал выше в посте #79.
В принципе можно, как уже писал выше, предполагать в качестве Х вещественное, а затем его конвертировать в Х1 целого типа, с которым и выполнять проверку, как у Вас и сделано.

Оффлайн технарь

  • *
  • Сообщений: 12704
  • Пол: Мужской
  • Имя : Владимир

Re: Язык Pascal в среде Delphi 7
« Ответ #85 : 14 Января 2013, 00:02 »
Мне вот пока даже MaxInt не понятно.
Это системная переменная среды разработки (как я могу предполагать).
При попытке вывести её значение на экран получил результат  2147483647

Оффлайн lexus

  • *
  • Сообщений: 1527
  • Пол: Мужской
  • Статус : ути-пути

Re: Язык Pascal в среде Delphi 7
« Ответ #86 : 14 Января 2013, 00:05 »
Olga, я надеюсь, что Вы поняли, что данное задание имеет не сильно громоздкое решение через case, поскольку в вариантах конкретно граничные точки двух внешних интервалов включаются в сами интервалы (на самом деле полуинтервалы, лучи). А если изменить включение точек, то как верно пишет технарь, пришлось бы городить "костыли" и без ветвления и дополнительных проверок условий в случае с case не обойтись.

А интересно, Фурсенко бы такое задание решил бы? А оба Фурсенки вместе?  :D

Оффлайн Olga

  • *
  • Сообщений: 236
  • Пол: Женский
  • Имя : Ольга

Re: Язык Pascal в среде Delphi 7
« Ответ #87 : 14 Января 2013, 00:17 »
Фурсенко наверно и 1+1 не сложит без калькулятора  :unknown: .Так им в школе по информатике вообще учили на besic,а в универе сразу на Delphi,а математику читают от базы не общеобразовательных школ,а физ.-мат. школ.  :shock: .Кстати экзамен по математике она сдала за первый симместр.Вот щас смотрю на задание 4 лабораторной-как баран на новые ворота
(открыть/скрыть)
[attach=1]

Оффлайн lexus

  • *
  • Сообщений: 1527
  • Пол: Мужской
  • Статус : ути-пути

Re: Язык Pascal в среде Delphi 7
« Ответ #88 : 14 Января 2013, 00:21 »
Кстати экзамен по математике она сдала за первый симместр.
:good: молодец! Но моё мнение, что если Вы делфями будете заниматься так же и дальше, то внучке за Вами не угнаться.  ink

Цитата
Нарисовать блок-схему алгоритмов построения таблицы и графика.
Млин, меня всю жизнь наизнанку выворачивали задания, где нужно чертить всякие блок-схемы.  00))

Оффлайн Olga

  • *
  • Сообщений: 236
  • Пол: Женский
  • Имя : Ольга

Re: Язык Pascal в среде Delphi 7
« Ответ #89 : 15 Января 2013, 22:35 »
Я вот пока не знаю как диаграмму и график сделать,читать надо  00))