Въведение в схемата език за ученици

Много добре знаеш, българинът може и вече се говори на английски, в училище бяхте научени някои необичайни език на математиката. Предлагам да се научат друг - Lisp. По-точно, един от най-интересните диалекти - Схема (обезмаслено).

Първо, погледнете малко по-необичаен словоред на този език: "действие - обект". Но това е нещо необичайно само в сравнение с най-популярните езици за програмиране. на български език е последователност необичайно:

  • три и пет сума.
  • Продукт от пет, шест и седем.
  • Купи на питите пекарна.

Всяка произведена в този език на трябва да бъде заобиколена от един чифт скоби. Пишем по-горе в схемата:

Може да бъде писмено изразяване и по-сложни:

"Купи в хляба хлебни: две плюс още една." Обикновено, не е тя? Нека да продължим. Фраза (* 3, 5) и добър (* ширина височина) - по-добре. Експресия (2 х 3.1415926 5) - интригуващо и (2 * пи радиус) е много по-значимо. Тук ширина. височина - променлива, и 3 и 5 - сегашните им стойности.

А променлива се определя по следната строителство Език:

Прочетете записано в руския "зададете ширина - е 3, височината - е 7, изчисли продукта от двете суми и ширината и височината (например, по периметъра на правоъгълника)." Резултатът от тези изчисления в този случай е 20.

Ние продължаваме да се подобри дизайна. Да предположим, че искаме да се изчисли сумата от квадратите на двете числа. Това може да стане, например, както следва:

Това нещо не е наред; ние обикновено вместо "Умножение променлива към себе си," казват "Квадратура на променливата" на млад лъв - квадрат:

"Сумата на площада и квадрат б». Има проблем - има решение. Ние може да обяви нова функция дума, го наричат ​​квадрат. Функцията ще приема като параметър на броя и го връща на площада. Това се прави по следния начин:

Функцията връща последната изчислената стойност. Това означава, че следващата функция square2:

ще се върне същия резултат като на площада. преди това се умножи две по две, без никакъв ефект. Препишете примера на сбора от квадратите на номера отново:

Ние не разполагаме с достатъчно думи в езика - ние ги добавя. Обикновено, когато пишете програма в Lisp, вие описвате не е алгоритъм, но първо да създадете език, а след това се формулира първоначалният проблем за него. Няколко точни - ти "персонализиране" на Схема езика, който толкова дълго, тъй като няма да съответства на езика, на който проблемът може да се формулира лесно.

Веднага пример. Нека нашата задача е да се направи програма, която иска от името на потребителя и след това извежда поздрав към него.

Схема ни дава някои готови "глаголи":

чете да чете името, показва изхода на нещо на екрана, нов ред заключение нов ред.

Бихме искали да имат "глаголите":

Здравей, за да поздрави с един параметър - името на потребителя; потребителя за потребителско име, без параметри.

Нашата задача ще изглежда така:

Делото за малки - да се определи поздравите и потребителя. Това не е проблем. Ето пълния текст на програмата.

Lisp - пълноправен функционален език, и по тази причина функцията - пълноправен член на този език, независимо от това дали сте ги определят себе си, или те са готови на езика. По-специално, те могат да бъдат предадени като параметри на други функции, но вече има общо с тях каквото е необходимо. Например, "номер модул" функцията може да бъде дефинирана, както следва:

"Ние определяме, че функцията на корема връща аргумента си, ако тя е положителна, или - -x». Или може да ви хареса:

"... ако аргументът е положителен, плюс, или минус х». Тук + функция връща резултат, ако израз или изпълнение -. който след това се прилага към аргумент х. Аз вярвам, че изграждането на смисъл, ако веднага ясно. Първо, той проверява първият аргумент, ако е вярно, вторият аргумент е изпълнена, в противен случай третия. Общият формат е както следва:

Къде да гледам и да се опитаме да редактирате

На теория, всичко е добро, а когато малко практика? В света можете да намерите много добре разработени среди за работа с Схема. За съжаление, по-голямата част от документацията за схемата на английски език, но можете да намерите отлично въведение в Руско - езикът просто.

Ето и имената на някои от най-често срещаните реализации:

Ракета един от най-пълните внедряванията, тя включва удобна урок Dr.Scheme сряда. Има версии за Windows платформи. Linux. Mac OS. Bigloo също доста пълна реализация. На разположение за Windows платформи. Linux. LispMe версия за портативни устройства с Palm OS операционна система.

Също така изглежда по-Gambit-C - една от най-бързо Схема компилатор.

Всички по-горе схема за прилагане - интерпретатор. Бягаш черупка - и можете да носите на диалог с него по схемата: в отговор на поканата му да влезе в структурата на схемата, и то ще се върне резултатите от изчисления.


Опитайте се да "играе" всички по-горе примери. Мисля, че ще се хареса!

упражнения

Вижте следващите две приложения на факториален изчисление функция F на (п) = 2 ⋅ 1 ⋯ п. Един от тях се основава на рекурсия. а другият - на повторения. Добави на Схема рекурсивни повторения и базирани изпълнение степенуване функция е (с. N) = а п>.

Вариант 1 Edit

Edit Вариант 2