АвторСообщение
Автор




Пост N: 124
Зарегистрирован: 21.05.06
Откуда: Украина, Днепропетровск
ссылка на сообщение  Отправлено: 06.02.08 12:23. Заголовок: Вопросы по Учебнику.


С момента опубликования Учебника по программированию на MQL4 мне стали приходить письма от читателей с вопросами. Предлагаю всем заинтересованным начинающим программистам продолжить общение здесь. Я постараюсь ответить на ваши вопросы.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 61 , стр: 1 2 3 4 5 6 7 All [только новые]


Автор




Пост N: 539
Зарегистрирован: 21.05.06
Откуда: Украина, Днепропетровск
ссылка на сообщение  Отправлено: 21.12.09 22:36. Заголовок: Mezon, я понимаю Ваш..


Mezon, я понимаю Ваши затруднения.
В данном случае Вы неправильно воспринимаете сущность понятий.
7 - это число, некоторое количество (яблок, например)
А - это переменная, т.е. некая сущность, которая может изменять своё значение по ходу исполнения программы. Например, количество людей в автобусе после каждой очередной остановки может изменяться.

Пример А = 7 воспринимается Вами неправильно просто потому, что Вы ещё не знаете (написано в учебнике позже) смысл знака =.
В данном случае эта запись (имеется ввиду запись в программе) не означает то же, чтов школьной тетрадке. Т.е. запись не означает: А равно семь, а означает буквально следующее: присвоить переменной А значение 7.

Различайте понятия. Переменная, Константа и Значение.

Константа это такой значёк (цифра), который прописывается в код программы. В данном случае это значок 7. Но есть ещё Значение 7, которое хранится в памяти компьютера. Переменной может быть присвоено Значение (но не Константа). В данном случае это Значение 7.

В другом случае Переменной А может быть присвоено Значение, получающееся в результате вычислений некоторого Выражения. Например, возможна запись А = В + С/2. Компьютер, увидев эту запись, сделает следующее:
1. Извлечёт из памяти Значение переменной С (например, оно равно 8).
2. Поделит С на 2 и этот промежуточный результат (4) запомнит.
3. Вычислит значение Выражения справа от знака равенства (например, если В равно 5) 5 + 4 (равно 9).
4. Присвоит полученное значение (9) переменной А.

В любой текущий момент любая переменная может иметь только одно значение. Но через некоторое время, после некоторых вычислений эта переменная может иметь другое значение.
Например, в 13:00 автобус вышел на маршрут. Обозначим количество пассажиров в автобусе переменной А.
В 13:05 зашло 2 человека. Переменная А имеет значение 2.
В 13:10 зашло ещё 3 человека. Переменная А имеет уже значение 5.
В 13:15 зашло 4 человека и 1 вышел. Переменная А имеет значение 8.
Если пассажирооборот описать в программе, и посмотреть что там случается с Переменной А, то легко обнаружится, что Переменная А всё время меняет своё значение.

Одновременно с этим, количество пассажиров, зашедших в автобус в 13:05, всё время (на протяжении всего времени исполнения программы) будет оставаться постоянным значением. В таких случаях обычно такие данные записывают в программу в виде Констант. В данном случае в виде Константы, имеющей Значение 2.

Простая программа для автобуса может выглядеть так:
А = 0;
А = А + 2;
А = А + 3;
А = А + 4 - 1;



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 10
Зарегистрирован: 19.12.09
ссылка на сообщение  Отправлено: 21.12.09 23:15. Заголовок: Вот уже теплее (в см..


Вот уже теплее (в смысле начинаете понимать насколько мне непонятно) :" Константа это такой значёк (цифра), который прописывается в код программы. В данном случае это значок 7. Но есть ещё Значение 7, которое хранится в памяти компьютера. Переменной может быть присвоено Значение (но не Константа). В данном случае это Значение 7".
как их отличить друг от друга? Одну 7 от другой 7. По автобусу все равно "темно" . Если количество пассажиров А меняется от остановки к остановке - это переменная понятно. Но как количество пассажиров зашедших в 13:05 будет оставаться постоянным значением ? ведь в 13:15 мог выйти пассажир вошедший в 13:05... и А небудет = 2? Единственной константой в этом случае думаю будет водитель...(это величина постоянная не зависящая от количества пассажиров).

Спасибо: 0 
ПрофильЦитата Ответить
Автор




Пост N: 541
Зарегистрирован: 21.05.06
Откуда: Украина, Днепропетровск
ссылка на сообщение  Отправлено: 22.12.09 12:19. Заголовок: Как отличить значени..


Как отличить значение от константы.
Константа и Переменная - это программные термины, их можно видеть в тексте программы. А значение - это то, что хранится в памяти компьютера. Для константы значок 7 и значение 7 совпадают. А значение переменной может меняться.

Количество пассажиров, зашедших в 13:05 не изменяется. Вот, как зашли они один раз - два пассажира, так это уже раз и навсегда. Уже не будет больше момента 13:05 и в этот момент уже никто больше не зайдёт. Это уже история. Её изменить нельзя. С точки зрения программных терминов это константа.

Кто потом входит и выходит описывается другими константами. И в данном случае неважно кто именно (Вася или Коля). Последующие события влияют только на значение переменной А. В предыдущем примере программы значение переменной А постоянно меняется (от строки к строке сверху вниз) и соответствует текущему количеству пассажиров.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 12
Зарегистрирован: 19.12.09
ссылка на сообщение  Отправлено: 22.12.09 16:06. Заголовок: Вы меня извините, н..


Вы меня извините, не "варится" у меня пример с автобусом. Может еще одну букву ввести скажем В . Получается что А и переменная и константа в разные моменты времени? И почему за константу взята 2 , если они вошли в пустой автобус надо взять за константу 0 и от него (к нему ) прибалять , удалять пассажиров. Можно другой пример ? (на картошке , на спичках)...

Спасибо: 0 
ПрофильЦитата Ответить
Автор




Пост N: 544
Зарегистрирован: 21.05.06
Откуда: Украина, Днепропетровск
ссылка на сообщение  Отправлено: 22.12.09 23:41. Заголовок: Элементарный пример ..


Элементарный пример константы - это число Пи, равное, как известно, 3.1415
Задача: составить программу вычисления длины окружности в зависимости от радиуса.

Решение задачи (программный код):
R = 10;
L = 2*3.1415*R;

Здесь условно полагается, что у пользователя есть возможность изменять (настраивать) значение радиуса окружности. Например, пользователь вводит значение радиуса, равное 10 - получает длину окружности, равную 62.830. Потом пользователь может ввести радиус 20 и получит длину окружности 125.66

В этой задаче радиус R и длина окружности L - переменные, а 3.1415 - константа. Обычно константа - это такое значение в задаче, которое никогда не меняется в принципе.

Пожалуйста, примите во внимание, что компьютерная программа - это не перечень неких утверждений (типа, Пи равно 3.1415), а перечень инструкций (приказов, указаний) компьютеру для исполнения конкретных действий.
В первой строке программа даёт компьютеру приказ: присвоить переменной R значение 10.
Во второй строке программа даёт компьютеру приказ: вычислить значение справа от знака равенства и результат присвоить переменной L.

Выполняя последовательно строки кода компьютер доходит до самого конца программы. На этом пути он может что-то вычислить (в данном примере длину окружности) что-то напечатать, что-то выдать на экран и т.д.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 13
Зарегистрирован: 19.12.09
ссылка на сообщение  Отправлено: 23.12.09 08:55. Заголовок: Здесь вроде все в по..


Здесь вроде все в порядке, а в учебнике не понял . Поправьте меня если что то не так. Переменной может присваиваться любое значение даже константы. А константа "вешь" постоянная не зависящая ни от чего... которой мы тоже можем присвоить значение (наверно один раз). Возможно затруднение вызывает написание всего этого если буквой "А" обозначается переменная то константа должна обозначаться другой буквой? И гдето должно быть прописано что А В С переменные а Д Ж Е константы и значения вожможно будут у них одинаковые?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 36
Зарегистрирован: 03.09.09
ссылка на сообщение  Отправлено: 23.12.09 09:43. Заголовок: Mezon пишет: Возмож..


Mezon пишет:

 цитата:
Возможно затруднение вызывает написание всего этого если буквой "А" обозначается переменная то константа должна обозначаться другой буквой? И гдето должно быть прописано что А В С переменные а Д Ж Е константы и значения вожможно будут у них одинаковые?


Константа может быть названа любой буквой, от этого суть совсем не меняется.

В MQL4 константы обозначают директивой #define, например:

#define A 145 - объявлена константа А со значением 145.
#define B "Hello" - объявлена строковая константа со значением Hello
#define Pi 3.14 - объявлена константа Pi со значением 3.14

Если же вы хотите объявить переменную, то есть впоследствии планируете изменять значение, то эти же конструкции нужно переписать так:

int A = 145 - объявили целочисленную переменную A и присвоили ей начальное значение 145
string B = "Hello" - объявили строковую переменную B и присвоили ей начальное значение Hello
double Pi = 3.14 - объявили вещественную переменную Pi и присвоили ей начальное значение 3.14


Спасибо: 0 
ПрофильЦитата Ответить
Автор




Пост N: 545
Зарегистрирован: 21.05.06
Откуда: Украина, Днепропетровск
ссылка на сообщение  Отправлено: 23.12.09 11:42. Заголовок: Mezon пишет: Перем..


Mezon пишет:

 цитата:
Переменной может присваиваться любое значение даже константы.



Ещё раз обратите внимание на термины.
Константа и Значение - суть разные понятия.
Переменной присваивается Значение. Это значение сохраняется до тех пор, пока не будет изменено в процессе вычислений. В момент присвоения (чисто технически) Переменной присваивается то значение, которое содержится справа от знака равенства. Это может быть значение другой Переменной, значение константы (то, о чём Вы спрашиваете), значение выражения (каковое значение компьютер должен сначала вычислить), значение, возвращаемое функцией.

Значение же Константы в процессе вычислений никогда не изменяется.
Внешне в программе числовая константа (бывают и другие) может быть представлена в виде числа, непосредственно вбитого в код (3.1415 , 28 , 0.5 и пр), а может иметь название (А, В, Ku_Ku, Alpha и пр. ).

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 14
Зарегистрирован: 19.12.09
ссылка на сообщение  Отправлено: 23.12.09 12:24. Заголовок: Спасибо. В том то и ..


Спасибо. В том то и дело что я хочу понять саму суть а потом когда я буду отчетливо себе представлять что это такое, можно будет называть как угодно обозначать любыми значками и т.д.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 15
Зарегистрирован: 19.12.09
ссылка на сообщение  Отправлено: 23.12.09 12:26. Заголовок: Спасибо. Кое что уже..


Спасибо. Кое что уже становится на места. У меня еще один вопрос что такое "возвращает" ? Кто то у кого то брал взаймы?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 61 , стр: 1 2 3 4 5 6 7 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 0
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет