Главная » Просмотр файлов » Майлингова О.Л., Манжелей С.Г., Соловская Л.Б. - Прототипирование программ на языке Scheme

Майлингова О.Л., Манжелей С.Г., Соловская Л.Б. - Прототипирование программ на языке Scheme (1108536), страница 4

Файл №1108536 Майлингова О.Л., Манжелей С.Г., Соловская Л.Б. - Прототипирование программ на языке Scheme (Майлингова О.Л., Манжелей С.Г., Соловская Л.Б. - Прототипирование программ на языке Scheme) 4 страницаМайлингова О.Л., Манжелей С.Г., Соловская Л.Б. - Прототипирование программ на языке Scheme (1108536) страница 42019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 4)

Gerald Jay Sussman, MITArtificial Intelligence Lab). В 1990 году был принят стандарт языка SchemeIEEE Standard 1990Элементы языка программирования SchemeЯзык Scheme является интерпретируемым языком. Программа на Schemeсостоит из выражений, имеющих значения. Вычисляя выражения,интерпретатор выполняет один и тот же цикл: считывает выражение,вычисляет выражение, возвращает результат Выражения языка Schemeстроятся из следующих лексем.ЧислаНа языке Scheme числа представляются в десятичной системе счисления.Вещественные числа с плавающей точкой записываются в виде <p>e<k>,обозначающем число р 10k. Например, 123e10 представляет собой число123*10 10, -123.45е-1 - число -123.45 10 -1 .ИдентификаторыВ языке Scheme определены следующие ключевые слова:18andbegincondcons-streamdefinedelayelseerroriflambdaletmake-environmentorquotesequenceset!the-environmentunquoteИдентификаторы, не являющиеся ключевым словом, могут бытьиспользованы в качестве имен.

Большие и малые буквы не различаются, заисключением строковых констант. Примеры идентификаторов-имен:Q<=?list->vectorsoupa34kTMNs+the-word-recursion-has-many-meaningsFoo обозначает тот же объект, что и FOO.Пробельные символы и комментарииПробельные символы - пробелы, знаки табуляции и знаки конца строки.Используются в качестве разделителей между именами и числами, или дляформатирования текста.

Они могут входить в строковые константы.Комментарии ограничены знаком «;» слева, и концом строки справа.Специальные символы и их использованиеСледующие символы могут быть использованы в качестве «буквы» видентификаторах:.*/<= >!?:$%_&~^«.», «+» и «-» используются при записи чисел и идентификаторов. Точкатакже используется в записи составных данных типа точечная пара. «(» и«)» являются ограничителями списков и выражений.

«'» определяетсимвольные данные. «"» ограничивает строковые константы. «\»используется для включения специального символа в строковуюконстанту. «[», «]», «{» и «}» зарезервированы для расширений языка.«#t» и «#f» являются представлением логических констант истина иложь. «#\» используется для задания ASCII символа в числовом виде.«# (» определяет векторную константу.ВыраженияВыражением на языке Scheme называется фрагмент кода, значениекоторого может быть вычислено.

Существуют следующие типывыражений: константы, имена, списки из имен и констант в скобках,обозначающие вызовы процедур и специальные формы.Получая выражение, интерпретатор его вычисляет и возвращает результат,например, для отображения на экран. Ответ интерпретатора будемзаписывать после символа ->. Примером простейшего выражения являетсячисло. На ввод числа486интерпретатор отвечает-»486Для того чтобы построить более сложные выражения, числа и встроенныепроцедуры (например, + или *) можно объединять в списки.

Построенныетаким образом выражения будут иметь значение равное результатуприменения процедуры к аргументам. Например:(+((*(/(+137 349)100 -334)5 99)10 5}2.1 10)->->->->->486434495212.7Приведенные выше примеры выражений, построенных в виде списков,ограниченных скобками, означают вызов процедуры. Самый левыйэлемент списка представляет оператор, остальные элементы - операнды.Значение выражения получается в результате применения процедуры,заданной оператором, к аргументам, которыми являются значенияоперандов.Способ записи выражения, при которой оператор находится слева от своихоперандов, называется префиксной записью выражения.

Такая записьимеет ряд преимуществ. Например, позволяет легко описывать процедуры,допускающие произвольное количество аргументов. Например:(+ 11)-> 11(+ 21 35 12 7) ->(*25 4 12)->751200Неопределенности не возникает, так как оператор определен самым левымэлементом списка, а выражение ограничено скобками.

Другимпреимуществом префиксной записи является элегантное представлениесложных выражений в виде списков, содержащих в качестве элементовдругие списки.(+20(* 3 5)(- 10 6) )->19В принципе, нет ограничения на глубину вложенности, и на общуюсложность выражения, которое может вычислить интерпретатор. Значениевыражения(+ (* 3 (+ (* 2 4)(+3 5)))(+ (- 10 7)6) )интерпретируется как 57.

Для большей наглядности оно может бытьзаписано в форматированном виде(+ ( * з(+ (* 2 4) (+3 5))( + (- 10 7)6)))Область действия именВ любом языке программирования имена используются для обращения ктем или иным вычислительным объектам. В Scheme имя определяетпеременную, значением которой является некоторый объект языка (число,процедура, и т.п.). Для именования используется специальная формаdefine. Запись(define size 2)приводит к тому, что интерпретатор связывает значение 2 с именем sizeТак как define это специальная форма, не имеющая вычисляемогозначения, ответ интерпретатора на такое выражение зависит отреализации. После того, как имя size было связано с числом 2, к этомуобъекту можно обращаться по имени:size(* 5 size)-> 2-> 10Примеры использования define:(define pi 3.14159)(define radius 10)(* pi (* radius radius))(define circumference (* 2 pi radius))circumference->314.159->62.831821Форма define является простейшим средством абстракции языка.

Онапозволяет использовать имена для обращения к результатам составныхпроцедур, например, вычисления площади круга, и именовать все болеекрупные объекты. Эта возможность упрощает инкрементную разработку итестирование программ. Как правило, программы на Scheme состоят избольшого количества относительно простых процедур.Любой идентификатор, который не является ключевым словом, можетбыть использован как имя. Совокупность пар <имя, значение> называетсяокружением (контекстом). Scheme является языком с блочнойструктурой, поддерживающим концепцию статического (раннего)связывания. Область видимости имени определяется выражением(блоком), в котором оно было определено. Определение имени вне какоголибо выражения означает, что имя глобальное, то есть значение, связанноес именем, доступно во всех выражениях, в которых это имя непереопределено.

Заметим, что предопределенные (встроенные) процедурыопределены в так называемом глобальном контексте.Символьные данныеОдним из основных типов объектов в языке Scheme являются символьныеконстанты. Значением символьной константы является сама этаконстанта. Можно сказать, что символьная константа - это текстовоепредставление объекта Scheme. Примером символьной константы являетсясимвол abc. значением которого является abc. Другими примерамисимвольных констант могут служить числа и логические константы: 123,78е-3, #t.Различие между именами и символьными константами заключается в том,что с именем связано некоторое значение, отличное от этого имени, азначением символьной константы является она сама. Для указания того,что идентификатор должен рассматриваться как символьная константа,используется оператор quote.Значением (quote <datum>) является <datum>.

При этом <datum> можетбыть текстовым представлением любого объекта Scheme. Заметим, чтозначение <datum> при этом не вычисляется, то есть quote блокируетвычисление. Вместо quote также можно использовать знак « ' »(«кавычка »). То есть, записи (quote <datum>) или '<datum>эквивалентны.(quote a)(quote # (a bс)) (quote (+ 12))22->а-> #(а Ь с)-> (+12)'а'#(а Ь с)'(+1 2)'(quote a)->->->->а# (а Ь с)(+ 1 2)(quote a)''а->(quote a)В отличие от символьных констант различают строковые константы,которые записываются в двойных кавычках.

Например, "abc".Значением числовых, строковых и логических констант являются самиконстанты, поэтому выделять их из контекста (с помощью quote илисимвола «кавычка») не обязательно.'"abc"->"abc""abc"->"abc"'145932145932'#t#t->->->->145932145932#t#tHo quote необходимо для отличия имен переменных от символьныхконстант:(define a 3) (define abc(+12))а(quote a)'аabc' abcb'b(+1 2)2) ->-> 3-> a-^ а-> 3-> abc-> ошибка - неопределенный объект-> b-> 3 •(+1(+1 2)Общие правила вычисления выраженийРассмотримпоследовательностьдействий,интерпретатор при вычислении выражений.которуювыполняет1. Вычислить подвыражения.2. Применить процедуру, которая является значением самого левогоподвыражения, к аргументам, которые получились в результатевычисления остальных выражений.23Рассмотрим вычисление выражения (* (+ 2 (* 4 6 ) ) (+ 3 5 7 ) ) .Правило вычисления выражения будет применено для вычислениязначений четырех различных вызовов процедур.

Предположим, чтоповторное применение правила (1) привело к тому, что требуетсявычислить значение так называемого примитива, например, числа,встроенного оператора или другого имени. В этих случаях действуютследующие правила:• значением констант являются константы (числовые, логические,строковые);• значением встроенного оператора являются последовательностимашинных команд, которые реализуют соответствующие операции;• значением имени являются объекты, связанные с этими именами втекущем контексте.Заметим, что эти правила вычисления выражений не справедливы дляопределения имен (define).

Вычисление (define x 3) не применяетdefine к аргументам х и 3, а связывает х с 3. То есть, define не являетсявызовом процедуры,Такие исключения из общих правил вычисления называютсяспециальными формами. Каждая специальная форма имеет свои правилавычисления. Разные типы выражений (с соответствующими правиламивычислений) определяют синтаксис языка. По сравнению с другимиязыками программирования Scheme имеет очень простой синтаксис, тоесть, количество специальных форм не велико.Определение процедурВ этом разделе на примере работы с числовыми данными будутрассмотрены правила построения процедур.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6417
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее