Пятница, 29 Марта 2024, 05:05

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Turbo Pascal 7.0 Ошибка в переменной.
Turbo Pascal 7.0 Ошибка в переменной.
NaigelgogДата: Среда, 07 Декабря 2011, 17:22 | Сообщение # 1
частый гость
Сейчас нет на сайте
Code
pr2=10 ..40

Итак. Есть некая переменная pr2 и есть диапазон значений, который я хочу придать этой переменной.
Однако, после компиляции Turbo Pascal выдал мне, что после 10 должна быть точка с запятой.
Ответьте мне пожалуйста, с какого ей там быть? Оо


Никто не ждал, а я вернулся. о.о
Отныне зовите меня Ауткастом (жалко, что нельзя поменять логин...).

С.Н. Лукин. Turbo Pascal 7.0 Самоучитель для начинающих.
Прочитано.
Николай Прохоренок. Html, JavaScript, PHP и MySQL.Джентельменский набор Web-мастера.
Прочитано 57 страниц из 867.
noTformaTДата: Среда, 07 Декабря 2011, 17:33 | Сообщение # 2
Ukrainian independent game developer
Сейчас нет на сайте
Quote (Naigelgog)
Итак. Есть некая переменная pr2 и есть диапазон значений, который я хочу придать этой переменной.
Однако, после компиляции Turbo Pascal выдал мне, что после 10 должна быть точка с запятой.
Ответьте мне пожалуйста, с какого ей там быть? Оо

Code
program Hello;
type
MyType = 10..40;
var pr2:MyType;
begin
pr2 = 10;
end.


@noTformaT
NaigelgogДата: Среда, 07 Декабря 2011, 17:39 | Сообщение # 3
частый гость
Сейчас нет на сайте
Code
pr2 = 10;

Разве дальше pr2 будет принимать значение диапазона?


Никто не ждал, а я вернулся. о.о
Отныне зовите меня Ауткастом (жалко, что нельзя поменять логин...).

С.Н. Лукин. Turbo Pascal 7.0 Самоучитель для начинающих.
Прочитано.
Николай Прохоренок. Html, JavaScript, PHP и MySQL.Джентельменский набор Web-мастера.
Прочитано 57 страниц из 867.


Сообщение отредактировал Naigelgog - Среда, 07 Декабря 2011, 17:39
noTformaTДата: Среда, 07 Декабря 2011, 17:41 | Сообщение # 4
Ukrainian independent game developer
Сейчас нет на сайте
Quote (Naigelgog)
Разве дальше pr2 будет принимать значение диапазона?

да, оно может принять одно значение из диапазона 10...40

type
Index = 1..25;
var
i : Index;
{переменная принимает значения}
{только в диапазоне от 1 до 25}


@noTformaT
NaigelgogДата: Среда, 07 Декабря 2011, 17:49 | Сообщение # 5
частый гость
Сейчас нет на сайте
Нет, дело в том, что мне надо, что-бы оно просматривало, равна ли другая переменная переменной pr2.

Никто не ждал, а я вернулся. о.о
Отныне зовите меня Ауткастом (жалко, что нельзя поменять логин...).

С.Н. Лукин. Turbo Pascal 7.0 Самоучитель для начинающих.
Прочитано.
Николай Прохоренок. Html, JavaScript, PHP и MySQL.Джентельменский набор Web-мастера.
Прочитано 57 страниц из 867.
noTformaTДата: Среда, 07 Декабря 2011, 17:51 | Сообщение # 6
Ukrainian independent game developer
Сейчас нет на сайте
Quote (Naigelgog)
Нет, дело в том, что мне надо, что-бы оно просматривало, равна ли другая переменная переменной pr2.

условие чтоли?
что-типа находится ли значение переменной в этом диапазоне???


@noTformaT
NaigelgogДата: Среда, 07 Декабря 2011, 17:51 | Сообщение # 7
частый гость
Сейчас нет на сайте
А значением pr2 должен быть диапозон от 10 до 40.
Code
pr2=10 ..40;
if vozrast=pr2 then goto m3
                      else  goto m2;

Что-то вроде этого...

Добавлено (07.12.2011, 17:51)
---------------------------------------------

Quote
что-типа находится ли значение переменной в этом диапазоне???

Именно.


Никто не ждал, а я вернулся. о.о
Отныне зовите меня Ауткастом (жалко, что нельзя поменять логин...).

С.Н. Лукин. Turbo Pascal 7.0 Самоучитель для начинающих.
Прочитано.
Николай Прохоренок. Html, JavaScript, PHP и MySQL.Джентельменский набор Web-мастера.
Прочитано 57 страниц из 867.
VinchensooДата: Среда, 07 Декабря 2011, 17:52 | Сообщение # 8
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Блин.

Code
var pr2:integer;
begin
randomize;
pr2:= random(31)+10;
end;

Не проще?


NaigelgogДата: Среда, 07 Декабря 2011, 17:55 | Сообщение # 9
частый гость
Сейчас нет на сайте
Не катит.

Никто не ждал, а я вернулся. о.о
Отныне зовите меня Ауткастом (жалко, что нельзя поменять логин...).

С.Н. Лукин. Turbo Pascal 7.0 Самоучитель для начинающих.
Прочитано.
Николай Прохоренок. Html, JavaScript, PHP и MySQL.Джентельменский набор Web-мастера.
Прочитано 57 страниц из 867.
GameMixДата: Среда, 07 Декабря 2011, 18:32 | Сообщение # 10
старожил
Сейчас нет на сайте
Naigelgog, а почему бы не сделать так:
Code
if ((vozrast >= 10) and (vozrast <=40))
  then
    goto m3
  else
    goto m2;


Steel Standoff - 2D аркада.
Мои статьи
masb8ly-GCДата: Среда, 07 Декабря 2011, 21:17 | Сообщение # 11
постоянный участник
Сейчас нет на сайте
goto лучше не используй. В высших учебных этого совсем не приветствуют. Да и на олимпиадах не очень любят его.
Почему бы не написать эти m3 и m2 прямо в цикле? Или через функцию сделать?


Backend Developer ESIS
Client Side Developer Room8Studio
Technical Leader Lucid Reality Labs
Chief Technology Officer The Intruders
Chief Technology Officer RoyalePlay Games


Сообщение отредактировал masb8ly-GC - Среда, 07 Декабря 2011, 21:18
NaigelgogДата: Четверг, 08 Декабря 2011, 16:06 | Сообщение # 12
частый гость
Сейчас нет на сайте
Это не для школы. Просто програмку делаю. (Только она сырая ужасно, но...)

Добавлено (08.12.2011, 16:06)
---------------------------------------------
GameMix, при твоём коде он одновременно оба маркера выполняет.


Никто не ждал, а я вернулся. о.о
Отныне зовите меня Ауткастом (жалко, что нельзя поменять логин...).

С.Н. Лукин. Turbo Pascal 7.0 Самоучитель для начинающих.
Прочитано.
Николай Прохоренок. Html, JavaScript, PHP и MySQL.Джентельменский набор Web-мастера.
Прочитано 57 страниц из 867.
masb8ly-GCДата: Четверг, 08 Декабря 2011, 19:48 | Сообщение # 13
постоянный участник
Сейчас нет на сайте
Я понимаю, что не для школы и не для вышки, но всеже искать надо более рациональные пути решения данной задачи!

Backend Developer ESIS
Client Side Developer Room8Studio
Technical Leader Lucid Reality Labs
Chief Technology Officer The Intruders
Chief Technology Officer RoyalePlay Games
NaigelgogДата: Четверг, 08 Декабря 2011, 21:25 | Сообщение # 14
частый гость
Сейчас нет на сайте
Ну меня сейчас маркеры очень спасают и лично я другого способа перескочить несколько операторов не знаю.)

Никто не ждал, а я вернулся. о.о
Отныне зовите меня Ауткастом (жалко, что нельзя поменять логин...).

С.Н. Лукин. Turbo Pascal 7.0 Самоучитель для начинающих.
Прочитано.
Николай Прохоренок. Html, JavaScript, PHP и MySQL.Джентельменский набор Web-мастера.
Прочитано 57 страниц из 867.
masb8ly-GCДата: Четверг, 08 Декабря 2011, 21:26 | Сообщение # 15
постоянный участник
Сейчас нет на сайте
Попробуй все эти операторы описать в цикле!

Backend Developer ESIS
Client Side Developer Room8Studio
Technical Leader Lucid Reality Labs
Chief Technology Officer The Intruders
Chief Technology Officer RoyalePlay Games
NaigelgogДата: Пятница, 09 Декабря 2011, 17:08 | Сообщение # 16
частый гость
Сейчас нет на сайте
Всем спасибо за помощь, но я сам разобрался.

Никто не ждал, а я вернулся. о.о
Отныне зовите меня Ауткастом (жалко, что нельзя поменять логин...).

С.Н. Лукин. Turbo Pascal 7.0 Самоучитель для начинающих.
Прочитано.
Николай Прохоренок. Html, JavaScript, PHP и MySQL.Джентельменский набор Web-мастера.
Прочитано 57 страниц из 867.
TimKruzДата: Суббота, 10 Декабря 2011, 12:46 | Сообщение # 17
старожил
Сейчас нет на сайте
Quote (Naigelgog)
pr2=10 ..40;
if vozrast=pr2 then goto m3 else goto m2;

Если ты имел в виду проверку, находится ли значение переменной vozrast в определённом диапазоне, то логичнее и проще сделать так:
Code
if vozrast in [10..40] then //операнд in - проверка на вхождение значения в множество; [10..40] - множество значений.
begin
   //blablabla
end else
begin
   //blablabla
end;

В принципе, можно описать множество как переменную или константу, но, я думаю, тебе это не нужно, т.к. диапазон фиксирован и используется только в одном месте.
Кстати, множество можно описать, скажем, так: [10,20,30..40,44,50..60,70,71], при чём вместо чисел могут быть буквы, строки (в одинарных кавычках) и т.п.

На счёт GoTo: эта вещь конечно, нужная, но используется редко, т.к. сильно снижает читабельность кода (постоянно приходится взглядом искать, где же эта метка расположена, ну и структура "сверху - вниз" нарушается) и, как следствие, усложняет поиск ошибок. Советую использовать этот оператор как можно реже; в абсолютном большинстве случаев можно сделать тоже самое с помощью других приёмов - проще и удобнее.
Quote (Naigelgog)
Прошу прощения, я ещё не разбираюсь в type-ах ^^
Quote (Naigelgog)
создана первая большая программа

blink
Quote (Naigelgog)
я сам разобрался.

Ммм, и не поделишься своим собственным решением проблемы? huh Было бы интересно посмотреть и, возможно, предложить более рациональный вариант.


NaigelgogДата: Суббота, 10 Декабря 2011, 21:56 | Сообщение # 18
частый гость
Сейчас нет на сайте
Уж прошу прощения, но сейчас я пишу с мобильника и дома буду часов в шесть, поэтому код программы привести не могу. Одно скажу, что решил с помощью процедур, ибо понял, что программу я немного неправильно построил. Поэтому в конце и выполнялись оба маркера. Они у меня друг за другом шли.
И да, GameMix, твой метод сработал. ^^ Спасибо ему уж.

Добавлено (10.12.2011, 21:56)
---------------------------------------------
И да, достаточно большую программу на строк сто можно написать и без описания типов.


Никто не ждал, а я вернулся. о.о
Отныне зовите меня Ауткастом (жалко, что нельзя поменять логин...).

С.Н. Лукин. Turbo Pascal 7.0 Самоучитель для начинающих.
Прочитано.
Николай Прохоренок. Html, JavaScript, PHP и MySQL.Джентельменский набор Web-мастера.
Прочитано 57 страниц из 867.
masb8ly-GCДата: Воскресенье, 11 Декабря 2011, 13:43 | Сообщение # 19
постоянный участник
Сейчас нет на сайте
Quote (Naigelgog)
И да, достаточно большую программу на строк сто можно написать и без описания типов.

Ну на счет тайпов это кому как привычнее и удобнее. А вот, что достаточно большая программа умещается в 100 строк для меня сюрприз)
Не поделитесь, что делает ваша программа?


Backend Developer ESIS
Client Side Developer Room8Studio
Technical Leader Lucid Reality Labs
Chief Technology Officer The Intruders
Chief Technology Officer RoyalePlay Games
NaigelgogДата: Воскресенье, 11 Декабря 2011, 16:47 | Сообщение # 20
частый гость
Сейчас нет на сайте
Что-то вроде мультфильма списанного с учебника XD
Ладно, признаю- погорячился. Уберу я эту строчку из подписи.)


Никто не ждал, а я вернулся. о.о
Отныне зовите меня Ауткастом (жалко, что нельзя поменять логин...).

С.Н. Лукин. Turbo Pascal 7.0 Самоучитель для начинающих.
Прочитано.
Николай Прохоренок. Html, JavaScript, PHP и MySQL.Джентельменский набор Web-мастера.
Прочитано 57 страниц из 867.
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Turbo Pascal 7.0 Ошибка в переменной.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг