| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > "Глупые" вопросы от Unknown |
| Автор: Unknown 11.7.2004, 02:22 |
| наткнулся на некоторые "глупые" вопросы в литературе ("глупыми" я считаю вопросы, которые либо не понимаю, либо ответ на них очевиден) . Их у меня пока всего два : . 1. Почему знак умножения всегда выписывается явно? 2. Почему запись формул на языке Паскаль линейна? . (взято из О.Ф Усковой, "Программирование на языке Паскаль" задачник) . и вот такая задача "Не прибегая к помощи компьютера определите результат выполнения программы :" . var j, n : word; a, b, c : LongInt; begin n := 25: a := 1; b := 1; for j:= 3 to n do begin c := b; b := a + b; a := c; end; WriteLn('F_', n, ' = ', b); ReadLn; end. (С.А. Немнюгин, "Turbo Pascal", учебник, стр.49, упр.1.4) *********************** прошу комментарии, варианты ответов. |
| Автор: dvamaster 11.7.2004, 15:30 | ||
Неужели задача про числа фибоначи. |
| Автор: Pakshin A. S. 11.7.2004, 21:36 |
| Похоже на то. Надо с листком бумаги посидеть несколько минут... ответ и выйдет. По вопросам: интересно, а что имелось в виду в первом вопросе?! По второму: читаться компилятором не будет |
| Автор: Unknown 11.7.2004, 21:57 |
| to dvamaster : На первый - да и я так думаю, синтаксис языка таков, что непозволяет такую запись. вот я и думаю что имелось ввиду во втором вопросе? Вообще эти воросы любят задавть преподаватели в институтах, потому как любой ответ можно считать неправильным(неизвестно что конкретно имеется ввиду.) . to Pakshin A. S. : несколько минут?! да там 22 прохода!!! ******************************************* задаю эти вопросы здесь, потому как знаю за собой такой грешок : когда задача трудная, стараюсь обойти ее всевозможными способами, например, говорю себе, что воросы "глупые, неточные, неконкретные". В (0) самообман? или же действительно тупняк? |
| Автор: Pakshin A. S. 11.7.2004, 22:04 |
| Такие проходы делаются за пять-десять минут (максимально) с калькулятором. А если догадаться про Фибоначи, то можно этот ряд ещё быстрее записать. |
| Автор: Unknown 12.7.2004, 00:39 |
| да, но это задание дано после ПЕРВОГО урока в Немнюгине. Короче чтобы изучать Пас по Немнюгину, надо знать Пас. . еще вопрос : "Почему запись формул на языке Паскаль линейна?" и "Чему равен результат вычисления выражения (a div b)*b + (a mod b)?" оба они из Усковой. |
| Автор: Pakshin A. S. 12.7.2004, 09:43 |
| выражениt (a div b)*b скорее всего равно a |
| Автор: dvamaster 12.7.2004, 12:38 |
| Pakshin A. S. Ты не знаешь целочисленную двоичную математику, если думаешь что точно так будет. Но ты сомневался, и это правильно. |
| Автор: Unknown 12.7.2004, 14:03 |
| если бы там "*b" не было, то выражение равно а/b. а так? . вопрос про "9!" снят, задача снята. остальные вопросы остаются. |
| Автор: Zaman 12.7.2004, 14:20 | ||
Pakshin A. S.
Если B>A то не будит A, мне так кажеться. Добавлено @ 14:22 так же есть другие варианты, когда A>B но А не кратно В, тоже будит другой результат |
| Автор: Calypso 12.7.2004, 14:24 | ||
Таких вещей я избегаю. т.к.Лучше применить (a*c) div b (этому меня Немнюгин в книге научил) (a div b)*b <> a (a div b)*b + (a mod b) = a |
| Автор: Vit 12.7.2004, 16:31 | ||
Потому что встретив "ab" не возможно определить это переменная с именем ab или a*b. Компиллятор в отличие от человека строится по принципам максимальной однозначности, это оберегает от многих ошибок... |
| Автор: Unknown 12.7.2004, 17:42 |
| Ясно, всем спасибо. Остается последний (пока я дальше не стал двигаться..) вопрос : "2. Почему запись формул на языке Паскаль линейна?" |
| Автор: Vit 12.7.2004, 18:14 | ||
А что покажет строка "showmessage(inttostr(i));" без компа кто может сказать?
|
| Автор: Unknown 26.7.2004, 16:09 |
| эх, приболел я малясь. но уже все. ангина. . так почему все таки "Запись формул на языке Паскаль линейна?" |
| Автор: x77 26.7.2004, 16:12 |
| что значит линейна? и как выглядит "нелинейная" формула? |
| Автор: Unknown 26.7.2004, 16:28 |
| а вот это ХЗ. афтар (Ускова) не уточняет. в том то и дело! |
| Автор: December 26.7.2004, 17:09 |
| Может, в смысле что запись формулы не рекурсивна? то есть ты не можешь использовать переменную или функцию, пока её не объявишь? |
| Автор: Unknown 26.7.2004, 17:42 |
| наверно да. тогда вопрос будет выглядеть так : "Почему на языке Паскаль нельзя использовать переменную или фукнцию, пока ее не объявишь?" . но ведь рекурсия в Паскале есть! |
| Автор: December 26.7.2004, 19:23 | ||
я аллегорически выразился |
| Автор: Berill 27.7.2004, 07:29 | ||||||
Если я с утра не торможу, то покажет 6. Добавлено @ 07:33
Так уж Паскаль устроен, и мы ничего не можем изменить. Хотя с другой стороны очень даже удобно. Я например уже заранее при этом знаю что и где мне понадобиться. |
| Автор: Berill 27.7.2004, 07:41 |
| Насчет того, что покажет 6 я не прав. Кто-нибудь может объяснить, почему после GOTO 1, значение J становиться "-1". |
| Автор: Unknown 27.7.2004, 17:00 | ||||||||
это, конечно так, но я бы посмотрел как ьы это преподу на экзамене скажешь... |
| Автор: Cheba 27.7.2004, 17:19 | ||||
Ничего оно не должно показывать. Тут применяется GoTo и Label (перед begin'ом). Получается как бы бесконечный цикл. Кстати, из-за этого его и не рекомендуют использовать. Его даже так и переводят на русский: "Иди на ...". |
| Автор: p0s0l 27.7.2004, 19:24 | ||||||||||
Почему не покажет ? Я проверил - у меня показало 8... Теперь попытаюсь объяснить:
Goto тут смущает тем, что не происходит инициализация переменной цикла (оператором FOR), но она делается до этого принудительно (j := 0;). Но цикл всё равно получился кастрированным, т.к. кроме j у него есть еще внутренняя невидимая переменная, отвечающая за количество оставшихся шагов цикла, она получается неинициализированной, поэтому если бы break не было, то цикл выполнялся бы фиг знает сколько шагов (зависит от мусора в стеке)...
Если я правильно тебя понял, то ты неправильно понял |
| Автор: Berill 28.7.2004, 08:46 | ||
Понятно, что мой ответ не очень информативен. Могу только посоветовать(причем и себе тоже) прочитать о структуре компилятора Паскаля. |
| Автор: Cheba 28.7.2004, 16:32 | ||
|
| Автор: Unknown 28.7.2004, 22:38 | ||||
я бы посоветовал Усковой (и вообще всем преподам) _конкретнее_ задавать вопрос.. . а тем временем...... у меня еще один тупой вопрос : "Какие обозначения используются в форматах вывода?" этот вобще кандидат на первое место в Top10Shit |
| Автор: AriX 28.7.2004, 23:14 | ||
| Unknown кстати про
результата не будет - там ошибка - n :=25: (надо точку с запятой) |
| Автор: December 28.7.2004, 23:27 | ||
Это типа форматирование строки в writeln? %d, %f или чё-то такое? |
| Автор: Cheba 29.7.2004, 09:08 | ||||
Нет это скорее о выводе real'ов. Типа такого:
Если так, то вот выдержка их доков от Delphi:
|
| Автор: Blacksnow 3.8.2004, 16:10 | ||
Задача к программированию, если честно сказать имеет малое отношение. Единственное, что требуеться увидеть в ней числа Фибонначи (если знать что это такое Далее можно выписать все числа до 25, можно меньше, если знать свойство: Fn+m=Fn-1*Fm+Fn*Fm+1. В нашем случаи разбиваем как 13+12 и получаем, что F25=F12*F12+F13*F13=F12^2+F13^2. Если человек не первый раз видит ряд, то можно вспомнить, что F10=55, F12=144, F13=233 (я вспомнил Таким образом, задача имеет математический характер. |