Скачать презентацию Язык программирования Icon Целый мир в одном every Скачать презентацию Язык программирования Icon Целый мир в одном every

icon.ppt

  • Количество слайдов: 39

Язык программирования Icon. Целый мир в одном every. . . Выполнил: Бахарев Олег Язык программирования Icon. Целый мир в одном every. . . Выполнил: Бахарев Олег

Язык программирования Icon – мультипарадигменный тексториентированный сверхвысокоуровневый язык программирования. Icon был создан Ральфом Грисволдом Язык программирования Icon – мультипарадигменный тексториентированный сверхвысокоуровневый язык программирования. Icon был создан Ральфом Грисволдом в 1974 г

Особенности языка Динамическая типизация данных; Автоматическая конверсия типов; Встроенный уборщик мусора; “Все конструкции языка Особенности языка Динамическая типизация данных; Автоматическая конверсия типов; Встроенный уборщик мусора; “Все конструкции языка являются генераторами”; Наличие мощных средств работы со строками; Кросс-платформенная реализация графических функций (Linux & Windows);

Особенности языка Отсутствие ООП-системы; Backtracking (перебор с возвратом) и целенаправленное выполнение; Огромная библиотека функций Особенности языка Отсутствие ООП-системы; Backtracking (перебор с возвратом) и целенаправленное выполнение; Огромная библиотека функций (IPL – Icon Programming Library); Компиляция программ/библиотек в собственный формат высокоэффективного байт-кода (icode – для программ и ucode- для библиотек)

Известные реализации Icon (cs. arizona. edu/icon/) – классический “аризонский” Icon. Является эталонной реализацией. Unicon Известные реализации Icon (cs. arizona. edu/icon/) – классический “аризонский” Icon. Является эталонной реализацией. Unicon (unicon. sourceforge. net)– мощная реализация Icon со своей собственной IDE. Имеет в своем составе ООП-систему, специально адаптированную под Icon. Расширена относительно классического Icon. Object. Icon (code. google. com/p/objecticon) – Мощный ООП-язык программирования на основе Icon. Форк Unicon. Имеет полностью переработанную стандартную библиотеку (модификация IPL).

Редакторы, имеющие подсветку синтаксиса Icon Jedit; Notepad++ ( устанавливается отдельно); Crimson. Editor (устанавливается отдельно); Редакторы, имеющие подсветку синтаксиса Icon Jedit; Notepad++ ( устанавливается отдельно); Crimson. Editor (устанавливается отдельно); Kate (устанавливается отдельно); Con. Text Editor (только в составе IDP); Nano (устанавливается отдельно)

Программные комплекты для работы с Icon. Development. Package (Icon. Devel. Pack, IDP) - программный Программные комплекты для работы с Icon. Development. Package (Icon. Devel. Pack, IDP) - программный комплект для работы с кодом на Icon. Включает в себя: Con. Text Editor (редактор исходного кода), WINICON (дистрибутив Icon под Windows), upx (упаковщик программ), g. Icont (графический фронт-энд для компилятора) и два кратких пособия по Icon. Проект доступен на code. google. com/p/icondevelopment-package/

Концепция генераторов Генератор – выражение, способное возвращать более одного значения. В Icon практически каждое Концепция генераторов Генератор – выражение, способное возвращать более одного значения. В Icon практически каждое выражение является генератором и потенциально способно выдавать любое количество значений (в том числе, и ни одного) Например: что выведет следующая строка ? write(1 to 100)

Концепция генераторов Данная строка выведет только 1, поскольку генератор 1 to 100 получит управление Концепция генераторов Данная строка выведет только 1, поскольку генератор 1 to 100 получит управление только один раз. . . Чтобы вывести всю последовательность чисел, нужно задать соответствующий контекст для генерации (т. е заставить генератор получить управление более раза), для чего нужно вставить ключевое слово every: every write(1 to 100)

Целенаправленное выполнение С помощью генераторов в Icon реализуется концепция целенаправленного выполнения. Каждое выражение Icon Целенаправленное выполнение С помощью генераторов в Icon реализуется концепция целенаправленного выполнения. Каждое выражение Icon помимо, собственно, производимых значений могут производить успех (succeed) или неудачу (fail), которые могут быть использованы в управляющих конструкция вместо булевых значений.

Целенаправленное выполнение Именно благодаря этому мы можем написать: if a: =read() then write(a) Или Целенаправленное выполнение Именно благодаря этому мы можем написать: if a: =read() then write(a) Или можем написать более сокращенную форму этого выражения: while write(read()) Поскольку внешние функции также могут возвращать значение “неуспех”.

Цепочечные сравнения Операторы <, > и им подобные также могут производить успех (т. е Цепочечные сравнения Операторы <, > и им подобные также могут производить успех (т. е дают второй аргумент) и неуспех (т. е ничего не возвращается) и поэтому возможно писать вот такие выражения: if a

Основные элементы синтаксиса Синтаксис Icon очень напоминает C и Pascal, но является более высокоуровневым. Основные элементы синтаксиса Синтаксис Icon очень напоминает C и Pascal, но является более высокоуровневым. Основным смысловым блоком программы является процедура. (Стоит отметить, что процедуры в Icon, могут возвращать значения, подобно функциям). Точкой входа в программу является процедура main

Процедуры Общий синтаксис процедуры выглядит так: procedure <имя процедуры>(аргумент1, аргумент2, . . . , Процедуры Общий синтаксис процедуры выглядит так: procedure <имя процедуры>(аргумент1, аргумент2, . . . , аргумент. N) … … end При этом расположение процедур не имеет значения, а выполнение всегда начинается с main

Процедуры Общий синтаксис процедуры выглядит так: procedure <имя процедуры>(аргумент1, аргумент2, . . . , Процедуры Общий синтаксис процедуры выглядит так: procedure <имя процедуры>(аргумент1, аргумент2, . . . , аргумент. N) … … end При этом расположение процедур не имеет значения, а выполнение всегда начинается с main

Функции в Icon Ключевого слова function в Icon нет, однако, процедуры в Icon могут Функции в Icon Ключевого слова function в Icon нет, однако, процедуры в Icon могут возвращать значения. Возврат значения из процедуры производить с помощью ключевого слова return : procedure square() return x*x end При этом, функция может быть с любым количеством аргументов (в том числе, и с переменным количеством аргументов)

Процедура main Программа на Icon обязательно должна иметь процедуру main, имеющей следующий синтаксис: procedure Процедура main Программа на Icon обязательно должна иметь процедуру main, имеющей следующий синтаксис: procedure main() …. . . end Программа может не иметь процедуры main только в одном случае : если программа компилируется в ucode и будет использоваться в качестве библиотеки процедур

Переменные в Icon Local – локальные переменные процедур. Существуют только внутри поцедур, в которых Переменные в Icon Local – локальные переменные процедур. Существуют только внутри поцедур, в которых были определены. Static – статические переменные. Существуют внутри процедур, в которых были определены, но сохраняют последнее значение в течение выполнения всей программы в целом. Global – глобальные переменные, известные всем процедурам. Определяются в любом месте программы, однако, предпочтительнее определить их в начале программы перед объявлением процедур

Типы данных В Icon явно не указывается тип переменной, однако, несмотря на это существует Типы данных В Icon явно не указывается тип переменной, однако, несмотря на это существует достаточно развитая система типов с автоматическим приведением к нужному типу. При этом существует 4 фундаментальных типа и 6 структуральных типов. Для 4 фундаментальных типов специально выведены различные операторы сравнения, однако, в большинстве случаев из-за конверсии типов можно не задумываться о том, верный ли тип сравнения был использован.

Типы данных В Icon существуют следующие основные типы: целое число (integer); действительное число (real); Типы данных В Icon существуют следующие основные типы: целое число (integer); действительное число (real); строковый тип (string); символьное множество (cset); список (list); запись (record); таблица (table); файл (file); процедура (procedure) ковыражение (coexpression) пустой тип (&null)

Операторы присваивания Классический оператор присваивания в Icon выглядит так : = (подобно присваиванию в Операторы присваивания Классический оператор присваивания в Icon выглядит так : = (подобно присваиванию в Pascal), однако существует несколько вариаций оператора присваивания. Например, распространенные во многих языках: a+: =b a-: =b a*: =b a/: =b a%: =b Есть и более экзотические варианты, например: a>: =b, a<: =b, a|||: =b и т. д

Операторы сравнения Для сравнения числовых и строковых (а также символьных множеств) существуют разные операторы Операторы сравнения Для сравнения числовых и строковых (а также символьных множеств) существуют разные операторы сравнения. Операторы для сравнения числовых типов: <, >, =, <=, >=, ~= Для символьных типов: <<, >>, ==, ~==, <<=, >>= Также есть два особых оператора, которые можно условно считать операторами сравнения: (переменная определена? ) и / (переменная неопределена? т. е равна &null). Эти операторв используются в префиксной нотации

Другие операторы ! - генерация элементов из некой структуры. (например, символов строки или элементов Другие операторы ! - генерация элементов из некой структуры. (например, символов строки или элементов списка). Является префиксным оператором. Например: a: =[1, 2, 3, 4] every write(!a) ? - генерация случайного элемента структуры. Является префиксным оператором. Например: a: =[1, 2, 3, 4] write(? a)

Другие операторы * - размер структуры (строки, списка и т. д). Префиксный оператор. Например: Другие операторы * - размер структуры (строки, списка и т. д). Префиксный оператор. Например: a: = «test» write(*a) & - and. Логическое «И» . Возвращает успех в случае успешности обоих выражений. Например: if a>0 & b=2 then … Условие выполниться лишь в том случае, если переменная a больше нуля, а переменная b равна 2

Встроенные функции В Icon большое количество встроенных функций, которые можно поделить на несколько классов: Встроенные функции В Icon большое количество встроенных функций, которые можно поделить на несколько классов: математические функции; функции работы со строками; структурные функции; системные функции Также есть подкласс специфических операторов для работы с определенными структурными типами

Математические функции Встроенных математических функций довольно немного, но этого вполне хватает для построения сложных Математические функции Встроенных математических функций довольно немного, но этого вполне хватает для построения сложных вычислительных программ. В Icon есть следующие типовые функции: abs, asin, acos, atan, exp, cos, log, sin, sqrt, tan Также есть специфические функции: iand, ixor, ishift, dtor, rtod,

Строковые функции Самый мощный класс функций (благодаря наличию этих функций – Icon считается мощным Строковые функции Самый мощный класс функций (благодаря наличию этих функций – Icon считается мощным текст-ориентированным языком). Имеет множество функций для разбора строк неограниченной длины. Самые распространенные функции этого класса: reverse, trim, find, map, many, upto.

Структурные функции Самый многочисленный класс встроенных функций. Имеет в своем составе: функции для работы Структурные функции Самый многочисленный класс встроенных функций. Имеет в своем составе: функции для работы со списками (put, pop, get, push, sort b т. д); функции приведения типов; определения принадлежности к последовательностям (member, type) обобщенные функции манипулирования структурами (image, copy, delete, seq и т. д)

Системные функции Достаточно обширный класс, содержащий функции ввода/вывода, обращения к файлам и некоторые процедуры Системные функции Достаточно обширный класс, содержащий функции ввода/вывода, обращения к файлам и некоторые процедуры управления ходом программы. Самыми распространенными функциями этого класса являются следующие функции: read, write, seek, system, exit, stop, runerr.

Условия и сопоставление с образцом Условный оператор в Icon представлен единственной конструкцией: if … Условия и сопоставление с образцом Условный оператор в Icon представлен единственной конструкцией: if … then … else Которая очень напоминает инструкции из других языков программирования, однако, работает на основе парадигмы целенаправленного выполнения. В язык встроен оператор сопоставления с образцом: case … of { <образец1> : … … default : … }

Условия и сопоставление с образцом Условный оператор в Icon представлен единственной конструкцией: if … Условия и сопоставление с образцом Условный оператор в Icon представлен единственной конструкцией: if … then … else Которая очень напоминает инструкции из других языков программирования, однако, работает на основе парадигмы целенаправленного выполнения. В язык встроен оператор сопоставления с образцом: case … of { <образец1> : … … default : … }

Цикл с целочисленным счетчиком создается на основе генератора последовательности целых чисел I to j, Цикл с целочисленным счетчиком создается на основе генератора последовательности целых чисел I to j, который выглядит так: every I: =a to b do { …. } Иногда требуется приращение отличное от 1, и тогда генератор целых чисел дополняется словом by с указанием шага приращения: every I: =a to b by c do {. . . }

Циклы while и until Когда точно неизвестно сколько шагов нужно пройти в цикле (а Циклы while и until Когда точно неизвестно сколько шагов нужно пройти в цикле (а есть лишь условие окнчания цикла) или для организации цикла с нецелым приращением, удобно применить цикл while: while … do { … } Цикл until похож на while, только итерации цикла выполняются пока условие в цикле неуспешно, а вслучае успеха цикла прерывается: until … do { … }

Бесконечный цикл в Icon организуется очень просто: repeat { …. } Прервать бесконечный цикл Бесконечный цикл в Icon организуется очень просто: repeat { …. } Прервать бесконечный цикл можно с помощью оператора break внутри тела бесконечного цикла, или же с помощью оператора завершения всей программы exit()

Интересные возможности Icon Слайсинг – выборка (срез) любых элементов из структуры (чаще всего из Интересные возможности Icon Слайсинг – выборка (срез) любых элементов из структуры (чаще всего из строки или списка). Это очень удобная нотация: s[i: j] – выделяет элементы с i по j; s[i+: j] – выделяет j элементов начиная c I; s[i: *s] – выдедяет элементы с I b до конца строки; Также возможно присвоение срезам строки значений

Интересные возможности Icon Работа со строками – самая основная «фишка» Icon. В частности есть Интересные возможности Icon Работа со строками – самая основная «фишка» Icon. В частности есть оператор сканирования строк ? , который принимает строку и выражение по которому она сканируется. Также очень остроумно реализована конкатенация строк, которая может давать специфический оператор присваивания: a: =a||s 2 a||: =s 2 Эти два выражения абсолютно эквивалентны. Причем похожий оператор существует и для списков.

Библиотечные и invocableпроцедуры Для Icon существует огромная библиотека (поставляется вместе с ним), в которой Библиотечные и invocableпроцедуры Для Icon существует огромная библиотека (поставляется вместе с ним), в которой существует много полезных функций. Для того, чтобы использовать библиотечные функции нужно в начале программы применить такую конструкцию: link <имя файла> Также существует возможность вызова процедуры, если ее имя задано в строковой форме ( «sin» (12), например). Чтобы это осуществить в начале программы нужно выполнить следующую инструкцию: invocable «имя_процедуры»

Материалы по Icon Множество материалов доступно здесь: icon-programming. tk/ vk. com/icon_programming/ aqirbis. 0 fees. Материалы по Icon Множество материалов доступно здесь: icon-programming. tk/ vk. com/icon_programming/ aqirbis. 0 fees. net/

Спасибо за внимание !!! Спасибо за внимание !!!