
Какую работу нужно написать?
Лекция 1.
Базы данных сапр cadence. Язык skill
Язык SKILL – высокоуровневый язык, предназначенный для настройки среды CADENCE. Весь САПР CADENCE построен с помощью этого языка. Всякий раз, используя формы, меню и горячие клавиши, программное обеспечение CADENCE использует функции SKILL для выполнения данного задания. Например, в большинстве случаев функции SKILL могут: открыть окно проекта, увеличить объекты проекта, поместить ячейку в проект. Функции SKILL можно вводить прямо в командной строке окна CIW или используя графический интерфейс. SKILL разработан на базе языка Lisp, но по синтаксису больше напоминает C.
Структура языка и его синтаксис
Четкой структуры программы не существует. Переменные задаются в процессе проектирования (написания программы). Имя переменной не может начинаться с числа. Регистр важен. Несколько выражений можно писать через пробел.
Обычно принят, но не обязателен следующий синтаксис:
Procedure(<name>( )
…
…
)
Специальные символы и операторы
SKILL использует многие арифметические операторы:
** - возведение в степень;
* - умножение;
/ - деление;
+ - сложение(плюс);
- - вычитание(минус);
++а - инкремент;
--а - декремент;
== - сравнение (равно);
!= - неравно
= - присваивание;
В следующей таблице приведен список специальных символов и их значений в SKILL.
Замечание: Всем символам, не являющимся буквами цифрами и ( _ или ?) , которые используются в имени переменных(функций) должен предшествовать, символ обратной косой черты (\).
Специальные символы SKILL
Символ
|
Имя |
Значение |
\ |
Обратная косая черта |
«Экранирование» для специальных символов
|
( ) |
Круглые скобки |
Группирует список элементов (тип list), вызов функции |
[ ] |
Квадратные скобки |
(номера элементов массива, только правая скобка закрывает все не закрытые скобки)
|
’ |
Одиночные кавычки |
Предотвращение интерпретации выражения a=5 b=a => b=5; b=’a => b=a
|
” |
Двойные кавычки |
Используется для задания типа строка.
|
, |
Запятая |
Необязательный разделитель элементов списка
|
; |
Точка с запятой |
Однострочный комментарий
|
+, –, *, / |
Арифметическая |
Для арифметических операций ; /* и */ также объединяют комментарии и определения
|
!,^,&,| |
Логическая |
Для логического оператора
|
<,>,= |
Сравнения relational |
Для сравнения и присвоения
|
? |
Знак вопроса |
Если является первым символом, то определяет ключевое
|
% |
Проценты |
Используется для характеристики чисел
|
Пример:
If(( ( ] ; результат – все скобки закрыты
Пробел
Пробел иногда приобретает смысловое значение, поэтому необходимо рассмотреть несколько синтаксических ограничений. При написании функции, имя функции пишется перед левой скобкой и пробел между ними недопустим.
Например,
f(a b c) и g() правильное название , но f (a b c) и g () неверно.
Также минус должен непосредственно предшествовать (без пробела) тому оператору, которому он принадлежит.
Например,
-1, -a, и -(a*b) правильная конструкция, но - 1, - a, и - (a*b) неверно.
Двойной минус (оператор вычитания) должен быть с обеих сторон окружен пробелами, либо пробелов ни там, ни там вообще быть не должно. Для избежания неясности один из методов должен быть использован постоянно.
Например,
a - b и a-b правильная конструкция для двойного минуса, но a -b неверно.
Комментарии
SKILL допускает два типа комментариев. Один стиль – блочно-ориентированный, где для разделения используются знаки /* и */.
Например:
/* This s a bloc of comments
comment line2
comment line3 etc.
*/
Второй стиль – линейно ориентирован. Точка с запятой (;) указывает, что вся информация до конца строки, после нее является комментарием.
Например,
x = 1 ; comment
;comment line1
Как более простой, рекомендуется линейно – ориентированный стиль.
Типы данных
Skill поддерживает различные типы данных.
array a (одномерный массив, двумерный получается комбинированием);
dbobject d (объект базы данных);
flonum f (число с плавающей точкой);
list l (связанный список);
integer x (целое число);
symbol s(символ);
stringSymbol S(символ или строка символов);
windowtype w(тип окна).
Численные типы данных
Целые числа, интерпретируются как десятичные. Двоичные, восьмеричные и шестнадцатеричные начинаются следующим образом:
0b – двоичный
0 – восьмеричный
0x – шестнадцатеричный
Задание числа с плавающей запятой можно осуществлять различными способами:
0.5
10.0
1е10
1е-10
1.1e10
Масштабные коэффициенты
Skill допускает подбор необходимого масштаба для десятичных чисел.
Масштабные коэффициенты должны появляться сразу после того числа к которому они относятся. Пробелов между числом и коэффициентом быть не должно.
Только первая нецифровая часть, появляющаяся после числа, значима. Остальные знаки, следующие за множителем игнорируются. Например, для значения 2.3mvolt, m существенна, а volt можно отбросить.
Если число было распознано как целое, то SKILL пытается сохранить его как целое число, коэффициент может быть представлен как целое число (когда коэффициент является целым множителем и результат не должен превышать максимального значения целого числа). Однако, значение числа с плавающей запятой возвращается.
Коэффициенты:
Символ |
Название |
Множитель
|
Пример |
Y |
Yotta |
1024 |
10Y [ 10e+25 ]
|
Z |
Zetta |
1021 |
10Z [ 10e+22 ]
|
E |
Exa |
1018 |
10E [ 10e+19 ]
|
P |
Peta |
1015 |
10P [ 10e+16 ]
|
T |
Tera |
1012 |
10T [ 1.0e13 ]
|
G |
Giga |
109 |
10G [ 10,000,000,000 ]
|
M |
Mega |
106 |
10M [ 10,000,000 ]
|
K |
Kilo |
103 |
10K [ 10,000 ]
|
% |
percent |
10-2 |
5% [ 0.05 ]
|
m |
milli |
10-3 |
5m [ 5.0e-3 ]
|
u |
micro |
10-6 |
1.2u [ 1.2e-6 ]
|
n |
nano |
10-9 |
1.2n [ 1.2e-9
|
p |
pico |
10-12 |
1.2p [ 1.2e-12 ]
|
f |
femto |
10-15 |
1.2f [ 1.2e-15 ]
|
a |
atto |
10-18 |
1.2a [ 1.2e-18 ]
|
z |
zepto |
10-21 |
1.2z [ 1.2e-21 ]
|
y |
yocto |
10-24 |
1.2y [ 1.2e-24 ]
|
Тип данных Atom
Atom – все объекты SKILL, кроме непустых листов. nil является одновременно и типом atom, и типом list.
Другими словами это все скалярные типы данных. Но есть несколько основных
nil – не верно (для логических операций) или пустой лист
t – верно (для логических операций)
unbound – переменная не была заданна
Нельзя пользоваться этими обозначениями для имен переменных.
Тип данных строка
Строка это последовательность символов, заключенных в двойные кавычки. Например: “acd” “123”
Тип данных List
SKILL list – это упорядоченный набор объектов данных SKILL. Структура данных list является основной в SKILL и может быть использована в самых различных ситуациях.
Элементы, входящие в list, могут быть любого типа данных, а также могут быть переменными или другими листами. List может включать в себя набор элементов или быть пустым. Пустой list обозначается пустыми скобками “( )” или специальным словом nil. В любом случае list должен быть заключен в скобки. List может содержать несколько элементов типа list для формирования структур данных любой сложности.
Задание List может осуществляться двумя способами:
задание элементов списка указанием количества аргументов функции list:
a = list(1 2 3)
задание элементов списка поименно с помощью оператора ('):
a = ‘(1 2 3)
List может состоять из символов, быть пустым, или содержать другие списки.
Примеры:
a = ‘(1 a 3)
a = ‘( )
a = ‘(‘(1 2)’(3 4))