adfun.ru
 
BIGLIB
  большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно
 
АСТРОЛОГИЯ
  книги по астрологии
 
КРИМИНАЛ
  книги про криминал
 
ДЕТЕКТИВЫ
  детективы известных
   писателей
 
ФАНТАСТИКА
  фентези, фантастика,   фантастические повести
 
ПРИКЛЮЧЕНИЯ
  книги про приключения,   путешествия
 
ПОЛИТИКА
  книги про политиков,   репрессии
 
ПСИХОЛОГИЯ
  разнообразная литература   по психологии
 
КЛАССИКА
  классическая литература
 
КОМПЬЮТЕРНАЯ
  ЛИТЕРАТУРА
  про компютерное железо,   документация, языки   программирования
 
РЕЛИГИЯ, АТЕИЗМ
  книги про религию
 
ФИЛОСОФИЯ
  книги, которые заставляют   задуматься над   окружающим тебя миром.
 
ЭНЦИКЛОПЕДИИ
  самые интересные   энциклопедии на
   разные темы
 
МЕДИЦИНА
  медицинские книги,   методички,
   народные лечебники
 
КУЛИНАРИЯ
  рецепты тортов,   консервирование,
  все о спиртных
  напитках.
 
СТИХИ
  стихи популярных и не   очень авторов
 
ТВОРЧЕСТВО
  народное творчество,   стихи, песни и т.д.
 
ЮМОР
  анекдоты, приколы,   смешные истории
 
ЛЮБОВНЫЙ РОМАН
  мир высоких чувств и   любовных грез
 
ЭРОТИКА
  эротические рассказы,   книги о технике секса,   кама-сутра и др.




adfun.ru
Rambler's Top100 Rambler's Top100
    НА ГЛАВНУЮ
    РЕФЕРАТЫ
    ТОСТЫ
    ТЕСТЫ
    АВТО
    ДЛЯ СТУДЕНТА
    КНИГИ
    КОНТАКТ
 
Турбо С: руководство пользователя. Часть 2
Автор ""
Размер 800673 Байт
Страница 27 из 56
СКАЧАТЬ КНИГУ ЦЕЛИКОМ

                                                                                
          Следующая процедура Турбо Си, extprog, демонстрирует исполь-          
     зование этих новых библиотечных подпрограмм. extprog создает окно          
     Турбо Пролога, после чего выполнит в этом окне некоторые процеду-          
     ры ввода и вывода.                                                         
                                                                                
                                                                                
       void makewindow(int wno,int wattr,int fattr,char *title,                 
                                         int row,int srow,int scol);            
       void write_string(char *text);                                           
       void readchar(char *ch);                                                 
       void readline(char *in_str[]);                                           
       void removewindow(void);                                                 
                                                                                
       void extprog(void)                                                       
       {                                                                        
         char dummychar;                                                        
         char *Name;                                                            
                                                                                
         makewindow(1,7,7,"Hello there",5,5,15,60);                             
         write_string("\n\nIsn't it easy");                                     
         readchar(&dummychar);                                                  
         write_string("\nEnter your name: ");                                   
         readline(&Name);                                                       
         write_string("\nYour name is: ");                                      
         write_string(Name);                                                    
         readchar(&dummychar);                                                  
         removewindow();                                                        
       }                                                                        

                         - 219,220 -
                                                                                
                                                                                
                                                                                
          Единственное ограничение  при  вызове Турбо Пролога из Турбо          
     Си состоит в том,  что программа на  Турбо  Прологе  должна  быть          
     главной программой ввиду того, что Турбо Прологу необходимо уста-          
     навливать "кучу" и стеки.                                                  
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
          Списки и функторы                                                     
     -----------------------------------------------------------------          
                                                                                
          Турбо прологовские списки и функторы - это  структуры  Турбо          
     Си (смотри DUBLIST.C).                                                     
                                                                                
          Списки -  это рекурсивные структуры,  состоящие из трех эле-          
     ментов.  Первый элемент структуры является типом, он может прини-          
     мать  значение  1  (если  это элемент списка) и 2 (если это конец          
     списка). Второй элемент структуры - фактическое значение; он дол-          
     жен соответствовать типу элемента, определенного в программе Тур-          
     бо Пролога.  Например, список из действительных чисел может иметь          
     вид:                                                                       
                                                                                
         struct alist {                                                         
         char funct;                                                            
         double elem; /* cписок элементов типа real */                          
         struct alist *next;                                                    
         }                                                                      
                                                                                
          Третий элемент является указателем на следующий узел.                 
                                                                                

                         - 221,222 -
                                                                                
          Функторы Турбо Пролога - это структуры Си, состоящие из двух          
     элементов.  Первый элемент соответствует описанию домена на Турбо          
     Прологе. (Для получения более полной информации об описании доме-          
     нов в программах Турбо Пролога обратитесь к справочному руководс-          
     тву Турбо Пролога). Например:                                              
                                                                                
          domains                                                               
              func = i(integer); s(string)                                      
          predicates                                                            
              call(func)                                                        
          goal                                                                  
              call(X)                                                           
                                                                                
          Функтор Турбо Пролога func имеет два типа значений: первый -          
     integer, второй   - string.  Поэтому в этом примере тип элементов          
     структуры Турбо Си должен быть 1 или 2; 1  соответствует  первому          
     типу (целые числа), а тип 2 - второму типу (строковому).                   





Второй элемент структуры Турбо Си является фактическим зна- чением функтора и определяется как union (объединение) для воз- можных типов аргументов. union val { int ival; char *svar; }; struct func { char type; /* тип может быть 1 или 2 в соответствии с */ /* описанием домена в Турбо Прологе */ union val value; /* значение элемента функтора. */ } Замечание: функции alloc_gstack, _malloc и _free должны ис- пользоваться для распределения памяти (они находятся в CPINIT.OBJ). Эти функции необходимы, во-первых, для выделения па- мяти структурам Турбо Си и занесения их в динамическую область или стек Турбо Пролога и, во-вторых, для освобождения памяти в динамической памяти Турбо Пролога. Когда используется функция alloc_gstack, память при ложных правилах будет освобождаться автоматически, вынуждая Турбо Пролог выполнять повторное распределение памяти. Синтаксис этих функций Турбо Си приведен ниже: - 223,224 - void *alloc_gstack(size) /* распределяет память в стеке */ void *_malloc(size) /* распределяет память в "куче" */ _free(void * ptr,size) /* освобождает "кучу" */ Ниже приведен главный модуль Турбо Пролога PLIST.PRO, кото- рый вызывает функции из DUBLIST.C и печатает результаты. domains ilist = integer* ifunc = f(integer) global predicates clist(ilist,ifunc) - (i,o) (o,i) language c dublist(integer,ilist) - (i,o) language c goal clearwindow, clist([3],X), /* связывает X с f(3) */ write("X = ",X),nl, clist(Y,X), /* связывает Y с [6] */ write("Y = ",Y),nl, dublist(6,Z), /* связывает Z с [6,12] */ write(Z),nl. Компиляция DUBLIST.C ----------------------------------------------------------------- Также как и в первых двух примерах, вы должны откомпилиро- вать модуль DUBLIST.C в объектный (.OBJ) файл перед компоновкой его с главным модулем на Турбо Прологе PLIST.PRO. Вот команда для компоновки: tlink init plist dublist plist.sym, dublist, , prolog+emu+mathl+cl - 225,226 - Пример 4. Рисование 3-х мерных диаграмм. ----------------------------------------------------------------- На этом примере мы рассмотрим, как компилировать и компоно- вать модули Си и Пролога для создания унифицированной программы со смешением языков, комбинирующей гибкость искусственного интел- лекта с графическими возможностями Си. Конкретно программа включает следующее: - Модуль Турбо Си CBAR.C, который рисует столбиковые диаг- раммы (гистограммы), используя входные данные из другого файла. - Главный модуль Турбо Пролога PBAR.PRO, который требует от пользователя ввода данных. Текст программы на Си находится в файле CBAR.C на диске из комплекта поставки. Компиляция CBAR.C


Страницы : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 [27] 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56


adfun.ru









Форум раскрутка сайта и интернет-реклама
реклама - рекламное агентство -
Интернет PR агентство чат и форум
волчат знакомства - сайт знакомств
бесплатные компьютерные игры
фото знакомства
новые стеклопакеты -
качественное остекление балконов
портал - пластиковые окна -
закажите окна пвх в Москве

частная стоматология в Москве:
надежная стоматологическая клиника
протезирование зубов и
отбеливание зубов в стоматологии
Музыка - скачать mp3 музыка
каталог партнерские программы
ручной бесплатный обмен ссылками цифровые камеры цифровые фотоаппараты -
цифровые видеокамеры

театры - заказ билетов в театр -
магазин - продажа компьютеров
в Москве форум Испания - жилье -
недвижимость в испании

турфирма - испания туры
Переводы - бюро переводов
Законы - закон о товарных знаках,
Грузовые перевозки. АсМАП. Дальнобой закон о рекламе
Интернет казино
реклама на форуме и контекстная реклама
на Яндексе Баннерная сеть и
интернет каталог сайтов Holiday.Ru
Форумы политика, лучшие анекдоты
знакомства.