Основные элементы языка программирования Icon. Чанышев О.Г. - 4 стр.

UptoLike

Составители: 

7
странять собственные выполняемые модули (exe – файлы), в от-
личие от PDC Visual Prolog.)
Приведем несколько «программулек» для иллюстрации:
procedure main()
#Перезапись файла
f:=open("x.txt","r")|stop("cannot open x.txt")
f2:=open("y.txt","w")|stop("cannot open y.txt")
# Классический стиль
while s:=read(f) do write(f2,s)
close(f)
close(f2)
end
В стиле Icon'а подчеркнутые элементы кода заменит выра-
жение
every write(f2,!f)
link graphics
procedure main()
# Простейший вариант открытия графического окна:
WOpen("size=400,300") | stop("can't open window")
Font("Times New Roman,18") # Устанавливаем шрифт
L:=["Линия 1","Линия 2","Линия 3"]
case SelectDialog("Выберите линию",L,L[1]) of
{
"Okey":
{
GotoRC(1,1)
WWrite(dialog_value) # Печатаем выбранную строку
WDone()
}
"Cancel": {}
}
end
Может быть, единственное, что мне не нравится в Icon'е, это
семантическая многозначность операционных символов (разре-
шаемая контекстно). Вот цитата из Cristophera [2, с
. 41]:
8
"The vertical bar, "|", read "«or»", looks like a binary operator
but does not behave like one".
Другой пример: символ "\" в выражениях "\x" и "|(z to y)\x"
обозначает различные операторы (в первом случае проверяется,
имеет ли значение переменная x, а во второмявляется ли огра-
ничителем генерируемых значений).
У Icon’а есть сложности с кириллицей. Он «не понимает»
кириллические имена файлов при стандартном открытии
f:=open(“имя_моего_файла”,”rt”) либо когда имя файла передается
в командной строке
icon_prog.exe имя_моего_файла
procedure main(args))
f:=open(args[1],”rt”)
……………………….
end
Чтобы обойти эту сложность, следует работать в графиче-
ском режиме и обращаться к соответствующему «диалогу».
Большинство проблем при парсировании кириллического
текста Вы можете обойти, создав собственное множество симво-
лов:
allRus:='АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЪЫЭ
ЮЯабвгдеёжзийклмнопрстуфхцчшщьъыэюя'
И при необходимости можете создать объеденное множество:
allLetters:= &ascii++allRus
………………………………………………………………..
Теперь несколько слов о
математических возможностях
Icon’а (которые меня не очень интересуют и в дальнейшем изло-
жении специально не рассматриваются). Язык обладает вполне
достаточным набором операторов и функций для того, чтобы быть
алгоритмически полным и в «вычислительном» смысле. Он рабо-
тает с целыми и реальными числами. Имеет специальные средства
для манипулирования коплексными и рациональными
числами.
Бинарные операторы:
* – умножение
/ – деление
% – остаток (5%2=1)
+ – сложение
- – вычитание
странять собственные выполняемые модули (exe – файлы), в от-             "The vertical bar, "|", read "«or»", looks like a binary operator
личие от PDC Visual Prolog.)                                       but does not behave like one".
     Приведем несколько «программулек» для иллюстрации:                  Другой пример: символ "\" в выражениях "\x" и "|(z to y)\x"
     procedure main()                                              обозначает различные операторы (в первом случае проверяется,
     #Перезапись файла                                             имеет ли значение переменная x, а во втором – является ли огра-
     f:=open("x.txt","r")|stop("cannot open x.txt")                ничителем генерируемых значений).
     f2:=open("y.txt","w")|stop("cannot open y.txt")                     У Icon’а есть сложности с кириллицей. Он «не понимает»
     # Классический стиль                                          кириллические имена файлов при стандартном открытии
     while s:=read(f) do write(f2,s)                               f:=open(“имя_моего_файла”,”rt”) либо когда имя файла передается
     close(f)                                                      в командной строке
     close(f2)                                                           icon_prog.exe имя_моего_файла
     end                                                                 procedure main(args))
                                                                         f:=open(args[1],”rt”)
     В стиле Icon'а подчеркнутые элементы кода заменит выра-             ……………………….
жение                                                                    end
     every write(f2,!f)                                                  Чтобы обойти эту сложность, следует работать в графиче-
     link graphics                                                 ском режиме и обращаться к соответствующему «диалогу».
     procedure main()                                                    Большинство проблем при парсировании кириллического
     # Простейший вариант открытия графического окна:              текста Вы можете обойти, создав собственное множество симво-
     WOpen("size=400,300") | stop("can't open window")             лов:
     Font("Times New Roman,18") # Устанавливаем шрифт                    allRus:='АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЪЫЭ
                                                                   ЮЯабвгдеёжзийклмнопрстуфхцчшщьъыэюя'
     L:=["Линия 1","Линия 2","Линия 3"]
                                                                         И при необходимости можете создать объеденное множество:
     case SelectDialog("Выберите линию",L,L[1]) of
                                                                         allLetters:= &ascii++allRus
     {
                                                                         ………………………………………………………………..
     "Okey":
                                                                         Теперь несколько слов о математических возможностях
     {
                                                                   Icon’а (которые меня не очень интересуют и в дальнейшем изло-
     GotoRC(1,1)                                                   жении специально не рассматриваются). Язык обладает вполне
     WWrite(dialog_value) # Печатаем выбранную строку              достаточным набором операторов и функций для того, чтобы быть
     WDone()                                                       алгоритмически полным и в «вычислительном» смысле. Он рабо-
     }                                                             тает с целыми и реальными числами. Имеет специальные средства
     "Cancel": {}                                                  для манипулирования коплексными и рациональными числами.
     }                                                                   Бинарные операторы:
     end                                                                 * – умножение
                                                                         / – деление
     Может быть, единственное, что мне не нравится в Icon'е, это         % – остаток (5%2=1)
семантическая многозначность операционных символов (разре-               + – сложение
шаемая контекстно). Вот цитата из Cristophera [2, с. 41]:                - – вычитание

                               7                                                                     8