Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с оператором case .... 
:(
    Опции темы
Mcicool
Дата 11.10.2005, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 9.10.2005

Репутация: нет
Всего: нет



Как пользоваться этой штукой??
PM MAIL   Вверх
Darhazer
Дата 11.10.2005, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 28.9.2005
Где: HellCity (Sofia, Bulgaria)

Репутация: нет
Всего: 29



Код
case x of:
1: y=y+1;
2: y=y-1;
3: y=-y;
end;


этот код аналогичен на:
Код
if x = 1 then y=y+1
else if x = 2 then y=y-1
else if x = 3 then y=-y


Понял?


--------------------
I'm a wheel, I'm a wheel, I can roll, I can feel
But you can't stop me turning
'Cause I'm the sun, I'm the sun, I can move, I can run
But you'll never stom me burning
PM MAIL WWW ICQ YIM   Вверх
Zero
Дата 11.10.2005, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Darhazer ты код то вначале проверяй чтоли, если не помнишь синтаксиса...
Оператор присваивания, в языке Паскаль пишется ":=", а не "="

Это сообщение отредактировал(а) Zero - 11.10.2005, 18:45
PM MAIL ICQ   Вверх
Mcicool
Дата 11.10.2005, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 9.10.2005

Репутация: нет
Всего: нет



Не очень я понял. У меня такая задача: Надо ввести число, если оно меньше 1, но больше 11, то вывести сообщение об ошибке. Если он равно 1,2,3,4 то это начальные классы, если 5 6 7 8 то средние, если 9 10 то старшие, если 11 то выпускной. Я ее сделал через IF then else, а надо через case никак не пойму как делать 8((
PM MAIL   Вверх
Payne
Дата 11.10.2005, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Детектив
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 6.4.2005
Где: Петербург

Репутация: нет
Всего: 10



Оператор case имеет следующий формат:

Код

case <переменная> of
  <значение 1>: <действие 1>;
  <значение 2>: <действие 2>;
  ...
  <значение n>: <действие n>
else
  <действие m>;

Вряд ли смысл того, что я тут написал, сразу станет понятен для тебя, но рассмотрим твой пример:

Код

var number: byte;
begin
  write ('Введите число: ');
  readln (number);
  case number of
    1..4: writeln ('Это начальные классы');
    5..8: writeln ('Это средние классы');
    9,10: writeln ('Это старшие классы');
    11: writeln ('Это выпускной')
  else
    writeln ('Вы ввели неверное число');
  end;
  repeat until keypressed;
end.

Как видишь, case просто проверяет, чему равно значение переменной (в данном случае number) и выполняет код, который соответствует значению переменной (задавать можно через запятую или интервал 1..4, 5..8 и т.д.). Если значение переменной не равно ни одному указанному в операторе case, то выполняется код, который стоит после оператора else (в данном случае если введено число 1 > number > 11).
Думаю, дальше разберешься сам smile .

Это сообщение отредактировал(а) Payne - 11.10.2005, 21:53
PM MAIL WWW ICQ Skype   Вверх
mvdr
Дата 11.10.2005, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


физик
***


Профиль
Группа: Участник
Сообщений: 1349
Регистрация: 31.12.2004
Где: Волгоград, Россия

Репутация: нет
Всего: 42



Код

case x of:
1: wtite('начальные классы');
2: wtite('начальные классы');
3: wtite('начальные классы');
4: wtite('начальные классы');
5: wtite('средние классы');
6: wtite('средние классы');
7: wtite('средние классы');
8: wtite('средние классы');
9: wtite('старшие классы');
10: wtite('старшие классы');
11: wtite('выпускной класс');
end;



--------------------
Появляюсь редко, но часто метко

Изображать идиота сложнее, чем изображать умного: полезнее и не каждому дано
PM ICQ   Вверх
Albinos_x
Дата 11.10.2005, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: нет
Всего: 108



Цитата
case <переменная> of:
  <значение 1>: <действие 1>;
  <значение 2>: <действие 2>;
  ...
  <значение n>: <действие n>;
else
  <действие m>;

только двоеточия не надо после of...
правильней так
Код

case <переменная> of    
  <значение 1>: <действие 1>;    
  <значение 2>: <действие 2>;    
  ...    
  <значение n>: <действие n>    
else    
  <действие m>;


Это сообщение отредактировал(а) Albinos_x - 11.10.2005, 20:10


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Mcicool
Дата 11.10.2005, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 9.10.2005

Репутация: нет
Всего: нет



Цитата
Код

case x of:
1: wtite('начальные классы');
2: wtite('начальные классы');
3: wtite('начальные классы');
4: wtite('начальные классы');
5: wtite('средние классы');
6: wtite('средние классы');
7: wtite('средние классы');
8: wtite('средние классы');
9: wtite('старшие классы');
10: wtite('старшие классы');
11: wtite('выпускной класс');
end;

А это еще что?! бред?

Спасибо тем, кто подсказал, большое!
Добавлено @ 19:54
Кстати, а почему если я вместо byte ставлю к примеру real пишет что
Ordinal expression expected??
PM MAIL   Вверх
Zero
Дата 11.10.2005, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(Mcicool @ 11.10.2005, 18:49)
Не очень я понял.

Вот смотри так...
Для примера возьмём оператор if...then...else;
у него будет синтаксис такой для твоего случая:
if <переменная> = <константа1> then <оператор 1>
else if <переменная> = <константа2> then <оператор2>
......
else if <переменная> = <константаN> then <операторN>
else <сообщение об ошибке>

где <переменная> ─ это то число которое вводится с клавиатуры, (символизирующее ноер класса в твоёс случае)
<константа> ─ это число с которым сравнивается переменная,(т.е. 1,2,3,4 или 5,6,7,8 или 9,10 или 11)
Эту всю запись, можно записать и с помощью оператора CASE...OF...
Запись будет выглядеть следующим образом:
предварительно должна быть определена какая-нибудь переменная, например:
Код

...
Var
  x:integer;  {это переменная которую ты вводишь с клавиатуры}
...

Далее пишешь так:
Код

Case x of
1: <оператор1>;
2:<оператор2>;
................
3:<оператор3>  {тут точка с запятой не ставится}
else
<сообщение об ошибке>

При выполнении оператора Case..Of, будет так: чему равна переменная X, строка с тем номером и выполнится, а если не одному из них не равна тогда выполнится строка после else, т.е. сообщение об ошибке.
Если конкрентно какой то пункт не поймёш, то пиши... smile
Добавлено @ 20:00
Упс... видимо меня уже тут опередили smile
PM MAIL ICQ   Вверх
Mcicool
Дата 11.10.2005, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 9.10.2005

Репутация: нет
Всего: нет



Кстати, а почему если я вместо byte ставлю к примеру real пишет что
Ordinal expression expected??
PM MAIL   Вверх
Zero
Дата 11.10.2005, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(Mcicool @ 11.10.2005, 20:01)
я вместо byte ставлю к примеру real пишет что
Ordinal expression expected??

Да потому что выражение между Case и of должно иметь перичислимый тип, я же тебе в предыдущей теме говорил, что информацию о всех ошибках можно узнать нажав F1.
А хочеш более подробно узнать об операторе CASE, поставь на него курсор и нажми <CTRL>+<F1>.
Добавлено @ 20:12
Цитата(Mcicool @ 11.10.2005, 19:44)
А это еще что?! бред?

Это твоё решение, должно быть таким... smile (доделать только немного надо)
PM MAIL ICQ   Вверх
Mcicool
Дата 11.10.2005, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 9.10.2005

Репутация: нет
Всего: нет



ok Спасибо! большое. Как хорошо, что на свете есть хорошие программисты! Кстати я включал эту справку, только нифига не понял 8))
PM MAIL   Вверх
Payne
Дата 11.10.2005, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Детектив
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 6.4.2005
Где: Петербург

Репутация: нет
Всего: 10



Цитата(Albinos_x @ 11.10.2005, 18:36)
только двоеточия не надо после of...

Ну да, как видишь, я заметил эту ошибку и в коде ее не допустил. А в примере забыл smile .
PM MAIL WWW ICQ Skype   Вверх
nikitao
Дата 11.10.2005, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: нет
Всего: 26



Цитата
ok Спасибо! большое. Как хорошо, что на свете есть хорошие программисты! Кстати я включал эту справку, только нифига не понял 8))

Странно,справка в Паскале мне больше всего нравилась,вообще без учебного пособия можно целыке модули осваивать


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0630 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.