|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.08.2009, 16:38 | #1 |
Новичок
Джуниор
Регистрация: 09.08.2009
Сообщений: 4
|
Вопрос с оператором выбора Case
Здравствуйте. Есть вопрос по написанию программы с оператором выбора.
Я только учусь, собственно, по какому-то учебнику и сам себе придумываю задачи после того или иного урока. Познакомился с оператором Case, но не все стало понятно. Итак, суть программы в следующем: Сперва появляется запись-приветствие, потом представляется возможность выбора. Еще вначале, в блоке описания программы, я сделал запись, что: var a, ... ... ... : integer; Итак, представляется выбор, который, по идее, и реализован должен быть оператором case. Делаю запись: case a of 1 : writeln('...'); read(b); writeln('...'); ... Целый ряд операторов... 2: writeln('...'); ... Целый ряд операторов... И т.д. Однако такой задум реализовать не получается. Уже в начале второго оператора(в моем случае - ввода readln) выскакивает ошибка: "Constant and Case types don't match". Что делать? Добавлять дополнительные begin... end; в разных местах пробовал, не особо помогает. Понимаю, как реализовать такое через if - очень легко. Там после if... then ставится begin и всё идет, словно по маслу. Но хочется ведь разобраться, как такое делать с Case. Иначе зачем он тогда нужен? |
09.08.2009, 17:06 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
09.08.2009, 17:10 | #3 |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
Попробуй так:
Код:
Begin..End; Теперь эта группа будет считываться программой грубо говоря как один оператор. В Case можно также выставлять последовательность значений: Код:
И главное: не забывай, что при окончании записи вариантов нужно закрывать оператор Case при помощи команды "End;": Код:
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
09.08.2009, 21:16 | #4 |
Форумчанин
Регистрация: 26.04.2009
Сообщений: 270
|
Все верно растолкованно!
Но можно добавить. Так же можеш вот так: Case a of 1:{Procedura 1}; 2:{Procedura 2}; End; |
10.08.2009, 00:01 | #5 |
Зелень
Форумчанин
Регистрация: 03.02.2007
Сообщений: 302
|
Респект, кратко и ясно, хотел добавить, но добавить то уже нечего.
|
10.08.2009, 18:34 | #6 | |
Новичок
Джуниор
Регистрация: 09.08.2009
Сообщений: 4
|
Цитата:
Попробовал делать так. Всё равно что-то не выходит. Через процедуру получилось, как написали ниже, но интересно ведь понять источник ошибки в таком случае... Скомпилировало без всяких вопросов и проблем, ошибок нет. Однако программа при выполнении сворачивается сразу же, когда дело доходит до Case. Ввожу я, допустим, 1, как показано выше, и все. Свернулось. Нажимаю алт-ф5, чтобы посмотреть, в чем дело... Последняя запись так и остается "1". Ничего более. С типами нарушений, вроде нет. Я прописываю Case a of... для а определен тип у меня integer. Последний раз редактировалось Stratus; 10.08.2009 в 18:38. |
|
10.08.2009, 18:38 | #7 | |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
Цитата:
|
|
10.08.2009, 18:47 | #8 |
Новичок
Джуниор
Регистрация: 09.08.2009
Сообщений: 4
|
Сейчас...
Код:
|
10.08.2009, 18:51 | #9 |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
Case a of
А откуда программа возьмет значение а???? |
10.08.2009, 18:57 | #10 |
Новичок
Джуниор
Регистрация: 09.08.2009
Сообщений: 4
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
задача с оператором case (Pascal) | kena | Помощь студентам | 4 | 17.05.2009 12:54 |
Вопрос по Select Case | DENGA-RU | Microsoft Office Excel | 2 | 23.04.2009 21:03 |
проблема с оператором for | vakyla | Общие вопросы Delphi | 9 | 24.03.2009 20:07 |
проблемы с оператором Length | Picaso18 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 21.01.2009 18:40 |