Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Lisp
Перезагрузить страницу Преобразование программы на языке Pascal
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
kugur kugur вне форума
Member
 
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.07.2009
По умолчанию Преобразование программы на языке Pascal - 27.07.2009, 13:19

Написать программу, которая преобразует условные операторы IF произвольной программы на языке Паскаль в соответствующие конструкции COND языка Лисп (считать, что в теле оператора IF одно TO-условие и одно Иначе-условие, и в обоих условиях выполняется присваивание значений переменным)
Ответить с цитированием
  (#2 (permalink)) Старый
VH VH вне форума
Member
 
Сообщений: 781
Сказал(а) спасибо: 0
Поблагодарили 11 раз(а) в 10 сообщениях
Регистрация: 29.06.2006
По умолчанию 27.07.2009, 18:59

Вероятно, следует читать «...в теле оператора IF один TO-оператор и один ИНАЧЕ-оператор, и в обоих операторах выполняется присваивание значений переменным», но и это не спасает, так как условие (в зависимости от значения которого выполняются части ТО или ИНАЧЕ) может представлять собой практически что угодно, например (из раздела Pascal данного сайта):
Код:
if ((allst[i]='-') or (allst[i]='+') or (allst[i]='/') or (allst[i]='*')) and (i<>1) and (allst[i-1]<>'(') then
if mainzn='' then
if (_16to10(st2)) or (_16to10(st2)<0.0000001) then
if k=round(k) then
if (i*i+j*j+k*k=n) then
а сочинять глобальный расшифровщик никакой мотивации нет и не будет.
Нет ли какого-нибудь ограничения на вид условия?
Ответить с цитированием
  (#3 (permalink)) Старый
kugur kugur вне форума
Member
 
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.07.2009
По умолчанию 27.07.2009, 20:20

Ограничение if ... then
Ответить с цитированием
  (#4 (permalink)) Старый
kugur kugur вне форума
Member
 
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.07.2009
По умолчанию 27.07.2009, 20:23

Короче простое какое-нибудь условие)
Ответить с цитированием
  (#5 (permalink)) Старый
VH VH вне форума
Member
 
Сообщений: 781
Сказал(а) спасибо: 0
Поблагодарили 11 раз(а) в 10 сообщениях
Регистрация: 29.06.2006
По умолчанию 28.07.2009, 00:38

Если условие состоит в том, что сравниваются две величины:
Код:
(defun F (pascal)
  (apply
  '(lambda (name var1 pred var2 then sym1 ass val1 else sym2 ass val2)
    (list 'cond
     (list
      (list pred var1 var2)
      (list 'setq var1 val1))
     (list
      T
      (list 'setq var2 val2))))
   pascal))
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
kugur kugur вне форума
Member
 
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.07.2009
По умолчанию 28.07.2009, 15:30

Спасибо))))))))))!Не мог бы объяснить,а то я разбираюсь,разбираюсь ничего не понимаю.Это конечно наглость последней степени, но мне сегодня сдавать задачу эту надо, я не успею разобраться.
Ответить с цитированием
  (#7 (permalink)) Старый
kugur kugur вне форума
Member
 
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.07.2009
По умолчанию 29.07.2009, 12:32

Не покидайте меня пожалуйста, объясните задачу
Ответить с цитированием
  (#8 (permalink)) Старый
VH VH вне форума
Member
 
Сообщений: 781
Сказал(а) спасибо: 0
Поблагодарили 11 раз(а) в 10 сообщениях
Регистрация: 29.06.2006
По умолчанию 29.07.2009, 13:42

ВНИМАНИЕ! Изменение функции:
Код:
(defun F (pascal)
  (apply
  '(lambda (name var1 pred var2 then sym1 ass val1 else sym2 ass val2)
    (list 'cond
     (list
      (list pred var1 var2)
      (list 'setq sym1 val1)); здесь
     (list
      T
      (list 'setq sym2 val2)))); и здесь
   pascal))
Функция работает следующим образом: выражение на языке Паскаль «разбивается» на отдельные «слова», c которыми связываются формальные параметры лямбда-выражения, а затем из этих параметров конструируется COND-форма языка LISP.
Например,
(F '(if a < 10 then b := 10 else c := -10))
name связывается с if
var1 связывается с a
pred связывается с <
var2 связывается с 10
then связывается с then
sym1 связывается с b
ass связывается с :=
val1 связывается с 10
и так далее, затем значения формальных параметров подставляются в внутри лямбда-выражения и конструируется
(COND ((< A 10) (SETQ B 10)) (T (SETQ C -10)))
Ответить с цитированием
  (#9 (permalink)) Старый
kugur kugur вне форума
Member
 
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.07.2009
По умолчанию 29.07.2009, 14:02

Спасибо))))))))))Большое спасибо)))))))))))))))
Ответить с цитированием
  (#10 (permalink)) Старый
kugur kugur вне форума
Member
 
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.07.2009
По умолчанию 29.07.2009, 14:53

Программа не работает почему то.Что с ней? Не запускается(
Ответить с цитированием
  (#11 (permalink)) Старый
VH VH вне форума
Member
 
Сообщений: 781
Сказал(а) спасибо: 0
Поблагодарили 11 раз(а) в 10 сообщениях
Регистрация: 29.06.2006
По умолчанию 29.07.2009, 15:12

XLISP-PLUS version 3.04
Portions Copyright © 1988, by David Betz.
Modified by Thomas Almy and others.
> (defun F (pascal)
(apply
'(lambda (name var1 pred var2 then sym1 ass val1 else sym2 ass val2)
(list 'cond
(list
(list pred var1 var2)
(list 'setq sym1 val1))
(list
T
(list 'setq sym2 val2))))
pascal))
F
> (F '(if a < 10 then b := 10 else c := -10))
(COND ((< A 10) (SETQ B 10)) (T (SETQ C -10)))
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование на языке Turbo Pascal Енот! Pascal 1 26.04.2012 19:10
Мельница с вращающимися лопастями на языке Pascal Arian_Rayn Pascal 0 13.11.2011 14:37
Напишите на языке Pascal программу multnum некрон Pascal 0 10.06.2011 00:13
Создане заголовка программы на русском языке Парвиз Visual C++ 6 19.01.2011 00:20
На каком языке писать программы для Windows? Sart532 С/С++ 6 18.01.2011 23:59
помогите составить программу на языке Pascal sedoff777 Pascal 1 18.11.2010 06:50
Преобразование программы в функцию Gock C++ Builder 6 31.03.2010 20:50
Перевод программы с Pascal в C++ roobpass Вопросы начинающих программистов 1 24.04.2009 20:06
Написание программы на языке С++ средствами OpenGL BOING Вопросы начинающих программистов 7 20.10.2008 14:33
Преобразование текста Пролог-программы Андр Prolog 1 06.05.2007 21:56
Перевод программы с Pascal на С++ matic Вопросы начинающих программистов 6 21.03.2007 13:46
Где найти документацию на русском языке Turbo Pascal 7.0 safpir Pascal 2 27.04.2004 01:49



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов