(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 

Конференция "Micro Focus/Borland"

Обсуждение вопросов, связанных с компанией Micro Focus/Borland, ее продуктами CaliberRM, CaliberRDM, SilkTest, StarTeam, TeamDefine, Together и других.

 
 
Добавить сообщение »

Тема: Обсуждение материала "Алгоритм преобразует алгоритм!"

При программировании на delphi или Паскале иногда попадаются задачи, которые трудно "втиснуть" в стандартные конструкции языка. А решение лежит совсем рядом - в теории конечных автоматов.

Автор:  Владимир Дата: 18.02.2008 12:01
stokito пишет 14.02.2008 13:12:
>Отличная статья! Я ещё года четыре назад решил сделать свой язык программирования ....

Статья помоему чисто теоретическая и может кому нибуть поможет.
Пример помоему не очень удачный.

твой с goto я бы немного упростил:

1: begin b1; if not c1 then goto :3 end;
begin b2; if c2 then goto :0 end;
3: begin b3; goto :1 end;
0:

а мне больше нравится в этом случае без case и goto:

repeat
b1;
if c1 then begin
b2;
if c2 then break;
end;
b3;
until false;

и все укладывается в стандартный Паскаль.
Тотже repeat и два if и без case
Ответить на сообщение »
 
Автор:  stokito Дата: 14.02.2008 13:12
Отличная статья! Я ещё года четыре назад решил сделать свой язык программирования и эта статья ещё больше меня подтолкнула что язык нужен.
Давайте посмотрим так:
Что такое case? В терминологии это называется переключатель.
Сначала нужно вникнуть в его суть.
Его используют для того чтобы записать в программе некую таблицу действий имеющую такой вид:
<ключ> <Программный код>

В дельфи ключи могут быть только перечисляемого типа (Int, Enum)

Так вот, в этой статье про конечные автоматы переключатель используется на самом деле для имитации goto. Это те же яйца только в кофе.
Но даже хуже чем goto!
Почему?
сравните:

case state of
1: begin b1; if c1 then state:=2 else state:=3 end;
2: begin b2; if c2 then state:=0 else state:=3 end;
3: begin b3; state:=1 end;
end;

И тоже самое но через goto

1: begin b1; if c1 then goto :2 else goto :3 end;
2: begin b2; if c2 then goto :0 else goto :3 end;
3: begin b3; goto :1 end;

Но последний вариант ЛУЧШЕЕЕЕ, потому что не используется перменная и каждый раз не производится поиск по таблице переключателя для сравнения значений. Просто сразу выполняется переход.

В моём языке который собираюсь сделать такие случаи будут обрабатыватся специальной конструкцией - блок внутри которого будут метки goto... а хотя я ещё не определился.

Ждите бомбы :-)
Ответить на сообщение »
 

Добавить сообщение »

 Распечатать »
 Правила публикации »
   
 Рекомендовать »  
 

Магазин программного обеспечения   WWW.ITSHOP.RU
VMware Horizon 7 Standard : 10 Pack (CCU)
IBM DOMINO ENTERPRISE CLIENT ACCESS LICENSE AUTHORIZED USER LICENSE + SW SUBSCRIPTION & SUPPORT 12 MONTHS
Zend Server with Z-Ray Developer Edition - Standard
Pinnacle Studio 21 Plus. Электронный ключ.
GFI WebMonitor Plus Edition - подписка на 1 год
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Вопросы и ответы по MS SQL Server
Corel DRAW - от идеи до реализации
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
Обсуждения в форумах
Как мигрировать программу написанную на старом Буилдер 4.52 (1)
Мы поддерживаем старое приложение написанное с использованием С++ Буилдер 5.5 (ЕХЕ) и Буилдер...
 
Создание базы данных в Delphi, без сторонних БД (1)
Уважаемый автор, гуглю уже который день и у Вас как у всех "кидаем.." "даже не создаем проект"...
 
C++ Builder6 & Excel (11)
Доброе время суток! Пишу приложение в C++ Builder6 для формирования файлов Excel. Требуется...
 
Принцип создания плагинов в Delphi (3)
Достали, Эта статья не о плагинах а о подключении dll и возможности использования ресурсов в...
 
QuickREport (40)
Есть приложение скомпилированное в Delphi6. Для построения отчетов я использовал компонеты из...
 
 
 



    
rambler's top100 Rambler's Top100