|
||||
Меню:
Главная
Форум
Литература: Программирование и ремонт Импульсные блоки питания Неисправности и замена Радиоэлектронная аппаратура Микросхема в ТА Рубрикатор ТА Кабельные линии Обмотки и изоляция Радиоаппаратура Гибкие диски часть 2 часть 3 часть 4 часть 5 Ремонт компьютера часть 2 Аналитика: Монтаж Справочник Электроника Мощные высокочастотные транзисторы 200 микросхем Полупроводники ч.1 Часть 2 Алгоритмические проблемы 500 микросхем 500 микросхем Сортировка и поиск Монады Передача сигнала Электроника Прием сигнала Телевидиние Проектирование Эвм Оптимизация Автомобильная электроника Поляковтрансиверы Форт Тензодатчик Силовые полевые транзисторы Распределение частот Резисторные и термопарные Оберон Открытые системы шифрования Удк |
[3] Переменные и присваивание значений Литеральные константы всегда ссылаются на один и тот же объект, а имена переменных в разное время могут ссылаться на различные объекты. Ссылка на объект по имени переменной изменяется тогда, когда выполняется выражение присваивания, то есть выражение, содержащее префикс присваивания. Префикс присваивания состоит из имени переменной, значение которой будет изменено, за которым следует левая стрелка "«-", которую в последних версиях языка Smalltalk можно заменять на более привычную пару символов ":=". Следующий пример - выражение с префиксом присваивания. Оно указывает, что переменная с именем quantity будет теперь ссылаться на объект, представляющий число 19: quantity 19 Сообщения Сообщения представляют взаимодействия компонентов системы Smalltalk. Сообщение запрашивает операцию над получателем сообщения. Выражение посылки сообщения состоит из получателя сообщения, имени сообщения, и, возможно, нескольких аргументов. Имя сообщения задается литералом и представляет собой название типа взаимодействия, которое отправитель сообщения желает выполнить с получателем. Например, в сообщении theta sin получатель сообщения - число, на которое ссылается переменная с именем theta, а имя сообщения - sin. Получатель сам решает, как ответить на сообщение, в данном случае, как вычислить функцию синуса от своего значения. В сообщении previousTotal + increment, имя сообщения - символ "+". Сообщение просит получателя вычислить сумму. В дополнение к имени, сообщение содержит еще один объект - increment, определяющий прибавляемое значение. Дополнительные объекты в сообщении - его аргументы. По своей структуре сообщения делятся на три группы: унарные, ключевые, бинарные. Унарные сообщения - сообщения без аргументов, которое вовлекают в операцию только один объект - получатель сообщения. Имя унарного сообщения может быть любым простым идентификатором. Например, theta sin quantity sqrt namestring size Ключевые сообщения - это общий тип сообщения с одним или более аргументами. Имя ключевого сообщения составляется из одного или более ключевых слов, по одному перед каждым аргументом. Ключевое слово - идентификатор с последующим двоеточием. Примеры ключевых сообщений: index max: limit ages at: Brett Jorgensen put: 3 Когда на имя многоаргументного ключевого сообщения ссылаются независимо от получателя этого сообщения, ключевые слова сливаются воедино. Так, например, имя последнего сообщения - at:put:. Число ключевых слов в сообщении может быть любым, но большинство сообщений в системе имеют их не более трех. Бинарные сообщения - специальный тип сообщения с одним аргументом. Имя бинарного сообщения состоит из одного или двух не алфавитно-цифровых символов. Единственное ограничение здесь то, что второй символ не может быть знаком минус. Бинарные сообщения обычно используются для арифметических и логических операций. Например, total - 1 total <= max Сообщения в языке Smalltalk обеспечивают двустороннюю связь. Имя и аргументы сообщения передают получателю информацию о том, какой тип ответа нужно подготовить. Получатель передает информацию обратно, возвращая отправителю объект, который становится значением выражения посылки сообщения. Если выражение включает префикс присваивания, то объект, возвращенный получателем, станет новым объектом, на который будет ссылаться переменная. Например, выражение sum - 3 + 4 устанавливает, что число 7 будет новым значением переменной с именем sum. Когда в одном выражении встречается несколько сообщений, они выполняются слева направо, при этом имеют место следующие правила синтаксического разбора: 1.Унарные выражения разбираются слева направо. 2.Бинарные выражения разбираются слева направо. 3.Бинарные выражения имеют приоритет над ключевыми выражениями. 4.Унарные выражения имеют приоритет над бинарными выражениями. 5.Выражения, взятые в скобки, имеют приоритет над унарными выражениями. Существует особая синтаксическая форма, называемая каскадированием, которая описывает посылку нескольких сообщений одному объекту. Любая последовательность сообщений может быть выражена и без использования этой формы. Однако каскадирование часто уменьшает необходимость в дополнительных переменных. Каскадное сообщение состоит из объекта-получателя, за которым располагаются несколько сообщений, разделенных точкой с запятой. Например: OrderedCollection new add: 1; add: 2; add: 3 Здесь три сообщения add: посылаются результату выражения OrderedCollection new. Без каскадирования для получения того же самого результата потребовалось бы четыре выражения (выражения друг от друга отделяются точкой) и переменная: temp temp - OrderedCollection new. temp add: 1. temp add: 2. temp add: 3 Блоки Блоки - объекты, используемые во многих управляющих структурах системы Smalltalk. Блок представляет собой отложенную последовательность действий. Выражение-блок состоит из заключенной в квадратные скобки последовательности выражений, разделяемых точками, точка стоящая после последнего выражения блока опускается. Например, [index *- index + 1] или [index *- index + 1. array at: index put: 0] Когда блок встречается в выражении, заключенные в квадратные скобки выражения блока сразу не выполняются. Последовательность действий, которую описывает блок, будет выполнена только тогда, когда блок получит унарное сообщение value (значение). Например, следующие два выражения дадут один и тот же результат: index *- index + 1 и [index *- index + 1] value Объект, возвращаемый после выполнения посланного блоку сообщения value, представляет значение последнего выполненного выражения блока. Блок, который не содержит никаких выражений ([]), когда ему посылается сообщение value, возвращает объект nil, неопределенный объект. Управляющие структуры Управляющие структуры определяют порядок некоторых действий. Фундаментальная управляющая структура в языке Smalltalk-80 обеспечивает последовательное выполнение следующих друг за другом выражений языка. Многие управляющие структуры, нарушающие последовательное выполнение выражений, могут быть реализованы с помощью блоков. Эти управляющие структуры вызываются либо посылкой сообщения блоку, либо посылкой сообщения с одним или более аргументами-блоками. Ответ на одно из эти сообщений и определяет порядок дальнейших действий посредством посылки блоку (или блокам) сообщения value. Пример управляющей структуры, реализованной с помощью блоков, - простое повторение действий, представленное посылкой целому числу сообщения timesRepeat: с блоком в качестве аргумента. В ответ целое число посылает блоку-аргументу сообщение value столько раз, сколько единиц содержит значение числа. Следующее выражение четыре раза удвоит значение переменной с именем amount: 4 timesRepeat: [amount *- amount + amount] Условные выражения Условные управляющие структуры используют два логических объекта true и false, логическую истину и логическую ложь. Логические объекты возвращаются после посылок сообщений, которые требуют простого ответа "да-нет" (например, сообщений для сравнения величин: <, <=, >, >=). Примером общей управляющей структуры, реализованной с помощью блоков, является условный выбор. Условный выбор похож на оператор if-then-else в алголоподобных языках и обеспечивается сообщением к логическим объектам с именем сообщения ifTrue:ifFalse: (еслиИстина:еслиЛожь:) и двумя аргументами-блоками. Например, следующее выражение присваивает 0 или 1 переменной parity, в зависимости от того, делится на 2 значение переменной number или нет. Бинарное сообщение \\ вычисляет остаток от деления целых чисел. |
Среды: Smalltalk80 MicroCap Local bus Bios Pci 12С ML Микроконтроллеры: Atmel Intel Holtek AVR MSP430 Microchip Книги: Емкостный датчик 500 схем для радиолюбителей часть 2 (4) Структура компьютерных программ Автоматическая коммутация Кондиционирование и вентиляция Ошибки при монтаже Схемы звуковоспроизведения Дроссели для питания Блоки питания Детекторы перемещения Теория электропривода Адаптивное управление Измерение параметров Печатная плата pcad pcb Физика цвета Управлении софтверными проектами Математический аппарат Битовые строки Микроконтроллер nios Команды управления выполнением программы Перехода от ahdl к vhdl Холодный спай Усилители hi-fi Электронные часы Сердечники из распылённого железа Анализ алгоритмов 8-разрядные КМОП Классификация МПК История Устройства автоматики Системы и сети Частотность Справочник микросхем Вторичного электропитания Типы видеомониторов Радиобиблиотека Электронные системы Бесконтекстный язык Управление техническими системами Монтаж печатных плат Работа с коммуникациями Создание библиотечного компонента Нейрокомпьютерная техника Parser Пи-регулятор ч.1 ПИ-регулятор ч.2 Обработка списков Интегральные схемы Шина ISAВ Шина PCI Прикладная криптография Нетематическое: Взрывной автогидролиз Нечеткая логика Бытовые установки (укр) Автоматизация проектирования Сбор и защита Дискретная математика Kb радиостанция Энергетика Ретро: Прием в автомобиле Управление шаговым двигателем Магнитная запись Ремонт микроволновки Дискретные системы часть 2 | ||