Банк рефератов содержит более 364 тысяч рефератов, курсовых и дипломных работ, шпаргалок и докладов по различным дисциплинам: истории, психологии, экономике, менеджменту, философии, праву, экологии. А также изложения, сочинения по литературе, отчеты по практике, топики по английскому.
Полнотекстовый поиск
Всего работ:
364150
Теги названий
Разделы
Авиация и космонавтика (304)
Административное право (123)
Арбитражный процесс (23)
Архитектура (113)
Астрология (4)
Астрономия (4814)
Банковское дело (5227)
Безопасность жизнедеятельности (2616)
Биографии (3423)
Биология (4214)
Биология и химия (1518)
Биржевое дело (68)
Ботаника и сельское хоз-во (2836)
Бухгалтерский учет и аудит (8269)
Валютные отношения (50)
Ветеринария (50)
Военная кафедра (762)
ГДЗ (2)
География (5275)
Геодезия (30)
Геология (1222)
Геополитика (43)
Государство и право (20403)
Гражданское право и процесс (465)
Делопроизводство (19)
Деньги и кредит (108)
ЕГЭ (173)
Естествознание (96)
Журналистика (899)
ЗНО (54)
Зоология (34)
Издательское дело и полиграфия (476)
Инвестиции (106)
Иностранный язык (62792)
Информатика (3562)
Информатика, программирование (6444)
Исторические личности (2165)
История (21320)
История техники (766)
Кибернетика (64)
Коммуникации и связь (3145)
Компьютерные науки (60)
Косметология (17)
Краеведение и этнография (588)
Краткое содержание произведений (1000)
Криминалистика (106)
Криминология (48)
Криптология (3)
Кулинария (1167)
Культура и искусство (8485)
Культурология (537)
Литература : зарубежная (2044)
Литература и русский язык (11657)
Логика (532)
Логистика (21)
Маркетинг (7985)
Математика (3721)
Медицина, здоровье (10549)
Медицинские науки (88)
Международное публичное право (58)
Международное частное право (36)
Международные отношения (2257)
Менеджмент (12491)
Металлургия (91)
Москвоведение (797)
Музыка (1338)
Муниципальное право (24)
Налоги, налогообложение (214)
Наука и техника (1141)
Начертательная геометрия (3)
Оккультизм и уфология (8)
Остальные рефераты (21697)
Педагогика (7850)
Политология (3801)
Право (682)
Право, юриспруденция (2881)
Предпринимательство (475)
Прикладные науки (1)
Промышленность, производство (7100)
Психология (8694)
психология, педагогика (4121)
Радиоэлектроника (443)
Реклама (952)
Религия и мифология (2967)
Риторика (23)
Сексология (748)
Социология (4876)
Статистика (95)
Страхование (107)
Строительные науки (7)
Строительство (2004)
Схемотехника (15)
Таможенная система (663)
Теория государства и права (240)
Теория организации (39)
Теплотехника (25)
Технология (624)
Товароведение (16)
Транспорт (2652)
Трудовое право (136)
Туризм (90)
Уголовное право и процесс (406)
Управление (95)
Управленческие науки (24)
Физика (3463)
Физкультура и спорт (4482)
Философия (7216)
Финансовые науки (4592)
Финансы (5386)
Фотография (3)
Химия (2244)
Хозяйственное право (23)
Цифровые устройства (29)
Экологическое право (35)
Экология (4517)
Экономика (20645)
Экономико-математическое моделирование (666)
Экономическая география (119)
Экономическая теория (2573)
Этика (889)
Юриспруденция (288)
Языковедение (148)
Языкознание, филология (1140)

Доклад: Форматированный ввод

Название: Форматированный ввод
Раздел: Рефераты по информатике, программированию
Тип: доклад Добавлен 15:15:04 19 сентября 2008 Похожие работы
Просмотров: 38 Комментариев: 2 Оценило: 0 человек Средний балл: 0 Оценка: неизвестно     Скачать

ДНЕПРОПЕТРОВСКАЯ ОБЛАСТНАЯ АДМИНИСТРАЦИЯ

ИНСТИТУТ ПРЕДПРИНИМАТЕЛЬСТВА «СТРАТЕГИЯ»

КАФЕДРА ЕКНОМИЧЕСКОЙ КИБЕРНЕТИКИ И

ПРОГРАМНОГО ОБЕСПЕЧЕНИЯ

ДОКДАД

ПО ДИСЦИПЛИНЕ:

«ФУНКЦИОНАЛЬНОЕ ПРОГРАММИРОВАНИЕ»

НА ТЕМУ:

«ФОРМАТИРОВАННЫЙ ВВОД »

Выполнил:

студент группы П-01-51

Руденко Владимир

2003г.

г. Желтые Воды


Если не использовать специальную команду ввода, то данные можно передавать лисповской функции только через параметры и свободные переменные. Соответственно, без использования выводы, результат можно получить лишь через конечное значение выражения. Часто все же возникает необходимость вводить исходные данные и выдавать сообщения т тем и самым управлять и получать промежуточные результаты во время вычислений, как это делается и в других языках программирования.

Лисповская функция чтения READ отличается от ввода в других языках программирования тем, что она обрабатывает выражение целиком, а не отдельные элементы данных. Вызов этой функции осуществляется пользователем (немного упрощенно) в виде:

(READ)

Как только интерпретатор встречает предложение READ, вычисления приостанавливаются до тех пор, пока пользователь не введет какой-нибудь символ или целиком выражение.

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

По своему действию READ представляет собой функцию, но у нее есть побочный эффект, состоящий именно во вводе выражения. Учитывая это, READ является не чистой функцией, а псевдо функцией.

Если прочитанное значение необходимо сохранить для дальнейшего использования, то вызов READ должен быть аргументом какой-нибудь формы, например присваивания (SETQ), которая свяжет полученное выражение:

_(setq input (read))

(+ 2 3); введенное выражение

(+ 2 3); значение

_input

(+ 2 3)

Форма, вызывающая интерпретатор, и функция READ совместно с другими функциями позволяет читать выражения внешние по отношению к программе. Из них можно строить новые лисповские выражения или целые программы. Построенные структуры можно вычислить, передав их непосредственно интерпретатору:

_(evalinput)

5

_(eval (list (read) (read) (read)))

+ 2 3

5

Функция READ основана на работающей на системном уровне процедуре чтения (Lisp reader). Она читает выражение, образуемое последовательностью знаков, поступающих из файла или иного источника. Внешние устройства становятся доступными из Лисп – системы через объекты, называемые потоками. На логическом уровне потоки независимо от характера внешнего устройства являются последовательностью читаемых или записываемых знаков или битов. Для ввода и вывода, как и для двустороннего обмена, существуют свои типы потоков и специальные операции.

Процедура чтения содержит анализатор, проверяющий знаки в читаемой им последовательности. Чтение обычного алфавитно-цифрового знака никаких особых действий не требует, в то время как чтение специального знака, такого как открывающая или закрывающая скобка, пробел, разделяющий элементы. Или точка, приводит к специальным действиям. Соответствие между различными знаками и действиями определяется так называемой таблицей чтения, которая задает лисповские функции для знаков. Знаки, вызывающие специальные действия, называют макрознаками или макросами чтения, поскольку их чтение требует более сложных действий. Таблица чтения доступна программисту, и он может сам определять новые интерпретации знаков и, таким образом, расширять или изменять синтаксис Лиспа.

Действие макроса – чтения определяется в Лиспе при помощи обыкновенной функции. Она читает и возвращает в качестве значения форму, для построения которой она в свою очередь может предварительно использовать макросы. Определим для примера макрос чтения %, действующий так же, как апостроф. Действие блокировки вычисления пользователь может определить в виде функции, которая рекурсивно читает очередное выражение и возвращает его в составе формы QUOTE:

_(defun f () (stream char)

(list ‘quote (read)))

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

Запись символов и определенных для них макроинтерпретаций в таблицу чтения осуществляется командой:

(SET-MACRO-CHARACTER знак функция)

_(set-macro-character

#\% ‘f)

Здесь запись #\% обозначает знак процента (%) как объект с типом данных знак.

После этих определений можно знак процента использовать так же, как апостроф:

_%(a %b c)

(A (QUOTE B) C)

Таблиц чтения может быть несколько, но процедура чтения использует в каждый момент времени лишь одну таблицу. Текущая таблица сохраняется как значение системной переменной *READTABLE*.

Встроенными макросами чтения в Коммон Лиспе являются:

( ; начинает ввод списка или точечной пары

) ; заканчивает ввод списка или точечной пары

' ; возвращает очередное выражение в виде вызова QUOTE

; ; символы до конца строки считаются комментарием

\ ; выделение одиночного специального знака

| ; выделение нескольких специальных знаков

; |…|

“ ;строка: “…”

Макрознаки нельзя использовать в составе символов наподобие обычных знаков, поскольку процедура чтения проинтерпретирует их в соответствии с таблицей как макросы чтения. Для включения таких знаков в состав имен нужно использовать специальные выделяющие знаки: |, \, которые блокируют макрообработку знаков.


ПРИМЕРЫ

Чтение строки

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

(defun readf_ ()

(let ((word (read)))

(cond ((eq word ‘?) ‘(?))

(t (cons word (readf_))))))

Ввод в режиме EVALQUOTE

Функция READ, которая вводит вызов функции в виде: fn(a1 a2 … an) и возвращает значение вызова

(defun readq_ ()

(eval (cons (read) (read))))

Оценить/Добавить комментарий
Имя
Оценка
Комментарии:
Где скачать еще рефератов? Здесь: letsdoit777.blogspot.com
Евгений06:45:18 19 марта 2016
Кто еще хочет зарабатывать от 9000 рублей в день "Чистых Денег"? Узнайте как: business1777.blogspot.com ! Cпециально для студентов!
19:51:28 28 ноября 2015

Работы, похожие на Доклад: Форматированный ввод

Назад
Меню
Главная
Рефераты
Благодарности
Опрос
Станете ли вы заказывать работу за деньги, если не найдете ее в Интернете?

Да, в любом случае.
Да, но только в случае крайней необходимости.
Возможно, в зависимости от цены.
Нет, напишу его сам.
Нет, забью.



Результаты(150917)
Комментарии (1842)
Copyright © 2005-2016 BestReferat.ru bestreferat@mail.ru       реклама на сайте

Рейтинг@Mail.ru