1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() ![]() |
| Client |
10.11.2007 22:12
Сообщение
#1
|
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
не могу понять в зависимости от чего Z получает значение в тексте программы.
подскажите почему
|
| volvo |
10.11.2007 22:38
Сообщение
#2
|
|
Гость |
Z - это формальный параметр, с которым работает подпрограмма.
Ты передаешь в функцию какое-то значение, внутри функции оно доступно под именем Z. |
| Client |
10.11.2007 23:12
Сообщение
#3
|
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
так я же ни где z н присваиваю значение. А Z здесь параметр-переменная или параметр-константа?
|
| 2ral |
10.11.2007 23:23
Сообщение
#4
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 22 Пол: Мужской Реальное имя: Neymanov Tural Репутация: 0 |
если хочешь что бы функция не давала никакого значения Z просто обнули его в самом начале.
-------------------- Смейся и весь мир будет смеяться вместе с тобой, плачь и ты будешь плакать в одиночестве (Old Boy)
|
| volvo |
11.11.2007 0:01
Сообщение
#5
|
|
Гость |
Цитата А Z здесь параметр-переменная или параметр-константа? Просто параметр... Был бы параметр-переменная, его изменение передалось бы в основную программу - этого не происходит. Был бы параметр-константа, ты бы вообще не откомпилировал программу, потому как нельзя менять константу, ты меняешь - значит, не константа...Цитата я же ни где z н присваиваю значение. Повторяю: ты передаешь значение (неважно какое, КАКОЕ-ТО) в функцию? Вот функция ПРИНИМАЕТ его как Z (ты не должен ничего присваивать, за тебя это делает компилятор) |
| Client |
11.11.2007 7:17
Сообщение
#6
|
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
спасибо за помощь
У меня еще вопрос Почему эти 2 примера работают одинаково uses crt; и Добавлено через 5 мин.
Если у кого-нибудь есть материал про функции и процедуры, просьба, дайте ссылку Сообщение отредактировано: Client - 11.11.2007 7:24 |
| Lapp |
11.11.2007 7:46
Сообщение
#7
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Почему эти 2 примера работают одинаково -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
| Client |
11.11.2007 8:20
Сообщение
#8
|
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
Цитата writeln(' (x+y)*2/y= ',qw(x):0:13); вот здесь опять вызывается функция? или нет |
| Lapp |
11.11.2007 8:24
Сообщение
#9
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
вот здесь опять вызывается функция? или нет Да. Иначе говоря, предыдущий вызов (на отдельной строчке) - лишний. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
| Client |
11.11.2007 8:40
Сообщение
#10
|
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
я вот понимаю функцию так: в теле функции пишем операторы, имени функции присваиваем значение. потом при вызове функции используется ее значение. Вот например я делал программу, там надо найти дату на к дней назад с учетом висогного года. Значит можно сделать функцию логического типа и если год високосный то ей присвоить значение TRUE иначе FALSE. а потом в самой программе при проверке условия просто подтавляем
IF ИМЯ ФУНКЦИИ THEN в феврале 29 дней... я правильно понял? |
| volvo |
11.11.2007 9:37
Сообщение
#11
|
|
Гость |
Цитата я правильно понял? В основном... Только надо бы еще функции передать год, который ты собрался проверять на високосность, вот тогда будет совсем правильно... |
| Client |
11.11.2007 14:51
Сообщение
#12
|
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
function visgod:longint{хотя можно integer};
begin if (god mod 4=0) and not((god mod 100=0) and (god mod 400<>0)) then visgod:=god; end Вроде того? |
| volvo |
11.11.2007 16:53
Сообщение
#13
|
|
Гость |
Я вот тут: помогите плиз
тебе уже показывал, КАК ИМЕННО, а не "вроде того"... |
| Client |
11.11.2007 18:44
Сообщение
#14
|
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
всегда прокалываюся здесь
еще в тетради записывал, что не надо логич переменной присваивать значение с промощью условного оператора. эх.. спасибо за ответы Сообщение отредактировано: Client - 11.11.2007 19:14 |
| Client |
23.12.2007 12:52
Сообщение
#15
|
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
у меня еще вопрос
Function f(a:'a'..'z'):boolean;Почему так нельзя описывать параметры?? Обязательно надо создать свой диапазонный тип?? |
| volvo |
23.12.2007 12:56
Сообщение
#16
|
|
Гость |
Цитата Почему так нельзя описывать параметры?? Потому что Паскаль (Турбо и Object, помнится, что Extended вроде бы все-же разрешает) не позволяет конструировать типы в заголовках подпрограмм, а ты именно это и пытаешься сделать... |
| Client |
23.12.2007 13:01
Сообщение
#17
|
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
не позволяет конструировать типы в заголовках подпрограммЯсно, т.е. можно использовать только уже описанные типы. А вот здесь procedure(const A: array of mas_type; const size: integer);при описание массива?? И еще, как еще можно описать параметры, кроме как через VAR,CONST?? или это все способы?? Сообщение отредактировано: Client - 23.12.2007 13:05 |
| volvo |
23.12.2007 13:18
Сообщение
#18
|
|
Гость |
А вот здесь - ты не конструируешь новый тип, ты используешь открытый массив - их возможно использовать только в качестве параметров подпрограммы. Даже если в 32-битных компиляторах ты создашь динамический массив через
type , то это будет совсем не то, что procedure p(var arr: array of integer); Цитата как еще можно описать параметры, кроме как через VAR,CONST?? Можно вообще без ничего передавать, "по значению". Можно сделать бестиповый параметр:procedure p(var v); , тогда туда можно передать все, что угодно (фактически - это указатель (нетипизированный, pointer) на область памяти, занимаемой объектом). Пример использования я приводил здесь: Задача... вообщем не пойму на что |
| Client |
23.12.2007 15:21
Сообщение
#19
|
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
Спасибо volvo
помог как всегда |
| Client |
22.01.2008 19:45
Сообщение
#20
|
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
Можно еще вопрос?
Вот в основной программе можно сделать так n:=f(z);А в самой функции f как-нибудь можно написать k:=f;Чтоб в К лежало значение этой функции, но чтоб при этом не было рекурсии, чтоб здесь компилятор не просил параметр. Если можно, то как? |
![]() ![]() |
|
Текстовая версия | 15.11.2025 11:11 |