Лингвистическая и металингвистическая хрень

Лингвистический знак —это единственное обозначение информационного элемента.

Лингвистическая форма —форма расположения лингвистических знаков, выраженных в данном языке.

Лингвистическая переменная —это обозначение, допускающее подстановку на свое место лингвистического знака или результата выполнения определенных действий.

Лингвистическая формула —форма записи элементов, среди которых есть хотя бы одна лингвистическая переменная.

Металингвистическая переменная —это обозначение названия правила, требующее на место названия подстановки соответствующей лингвистической формы, лингвистической формулы, либо другой лингвистической переменной.

Металингвистическая форма — заданная форма записи лингвистических форм, формул и металингвистических переменных.

Металингвистическая формула —это металингвистическая форма, в которой есть название в виде металингвистической формы и набора инструкций в виде металингвистических форм.

Формальные грамматики – это средства описания формального языка.

Формальная грамматика — способ описания формального языка, то есть выделения некоторого подмножества из множества всех слов некоторого конечного алфавита. Различают порождающие и распознающие (или аналитические) грамматики — первые задают правила, с помощью которых можно построить любое слово языка, а вторые позволяют по данному слову определить, входит оно в язык или нет.

Формальный синтаксис языка и грамматика языка — это совокупность металингвистических форм.

Билет 2.

Система счисления – это соглашение о представлении чисел посредством конечной совокупности символов (цифр), называемой алфавитом. Каждой цифре ставится в соответствие определенный количественный эквивалент.

Системы счисления разделяют на позиционные и непозиционные.

Непозиционная система счисления – это система, в которой цифры не меняют своего количественного эквивалента в зависимости от местоположения (позиции) в записи числа (система римских цифр).

Позиционная система счисления – смысл информации зависит от позиции пунктуационных знаков (десятичная система счисления).

Правила перевода числа в другую, не десятичную систему счисления различаются для целых и дробных чисел.

Перевод целого числа X осуществляется по следующему алгоритму:

1) получить цифру числа n-ой системы счисления как остаток от деления числа X на основание новой системы счисления n; полученную цифру приписать слева от имеющихся цифр;

2) принять за X частное от деления числа X на основание системы счисления n;

3) выполнять шаги 1-2, пока X ¹ 0.

Перевод из шестнадцатеричной в двоичную систему счисления - каждая цифра шестнадцатеричного числа заменяется тетрадой (четырьмя битами), являющейся представлением этой цифры в двоичной системе счисления (тоже самое с восьмеричной системой счисления только там берутся триады).

Перевод из двоичной в шестнадцатеричную систему счисления - двоичное число делится на тетрады справа налево. Каждая тетрада заменяется соответствующей ей цифрой. Если самая левая тетрада неполная, то есть содержит меньше четырех цифр, то слева от числа дописываются нули (то же самое с восьмеричной системой, только там триады).

Перевод дробных чисел с нулевой целой частью из десятичной в n-ую систему счисления - дробное число X, у которого целая часть равна 0, переводится из десятичной в n-ую систему счисления по следующему алгоритму:

1) умножить X на n;

2) получить цифру как целую часть числа X и приписать ее справа от имеющихся цифр;

3) обнулить целую часть числа X;

4) выполнять шаги 1-3, пока X ¹ 0 (при точном переводе) или до получения нужного количества цифр в дробной части (при приближенном переводе с заданной точностью).

Пример. Перевести число 0,6875 в двоичную систему счисления.

Решение. Вновь схему перевода запишем в виде столбца.

На последнем шаге перевода получена единица. После обнуления целой части получим 0. Значит, перевод закончен. Результат перевода числа 0,6875 в двоичную систему счисления – число 0,10112. Перевод из 2-ичной в 10-ичную систему осуществляется «поразрядной суммой» (то есть если переводить число 101,101 из двоичной в десятичную, мы получаем:

2^2*1+2^1*0+2^0*1+2^-1*1+2^-2*0+2^-3*=4*1+2*0+1*1+0,5*1+0,25*1+0,125*1= =4+1+0,5+0,125=5,625.)

Обратный код.

Дополнительный код — наиболее распространённый способ представления отрицательных целых чисел в компьютерах. Он позволяет заменить операцию вычитания на операцию сложения и сделать операции сложения и вычитания одинаковыми для знаковых и беззнаковых чисел, чем упрощает архитектуру ЭВМ. Дополнительный код отрицательного числа можно получить инвертированием модуля двоичного числа и прибавлением к инверсии единицы, либо вычитанием числа из нуля.

Прямой код -- код, полученный заменой старшего бита на 1 в отрицательных числах (у положительных чисел прямой код совпадает с исходным).

Обратный код — код, полученный побитовой инверсией (инверсия нулей и единиц).

Дополнительный код—«обратный код, к которому прибавили единицу» (но Деон скорее всего затребует то длинное определение которое сверху).

 

Нормализация вещественных чисел.

Нормализованная запись отличного от нуля действительного числа - это запись вида а = ±m × Рq (например 105=1,05*10^2),где q - целое число (положительное, отрицательное или ноль), а m - правильная Р-ичная дробь (грубо говоря Р—это основание системы счисления в которой записано число), у которой первая цифра после запятой не равна нулю, т.е. 1/Р ≤ m < 1. При этом m называется мантиссой числа, q - порядком числа. Первая (левая) цифра мантиссы нормализованного числа отлична от 0 (за исключением числа ноль), в двоичной системе счисления она всегда равна 1. Билет 3. Литерал — запись в исходном коде компьютерной программы, представляющая собой фиксированное значение. Литералы представляют собой константы, непосредственно включаемые в текст программы в отличие от прочих данных — констант и переменных, обращение к которым осуществляется посредством ссылок. Литералы не могут быть изменены в тексте программы. Литерал — это особая категория слов языка. Для каждого подмножества литералов используются собственные правила словообразования. Литерал: целый-литерал символьный-литерал литерал-с-плавающей-точкой строковый-литерал логический-литерал цифровая-последовательность Целый-литерал: десятичный-литерал целый-суффикс (opt) восьмеричный-литерал целый-суффикс (opt)

шестнадцатиричный-литерал целый-суффикс (opt)

Десятичный-литерал:

ненулевая-цифра

десятичный-литерал-цифра

Восьмеричный-литерал:

Восьмеричный-литерал восьмеричная-цифра

Шестнадцатиричный-литерал:

0х шестнадцатиричная-цифра

0Х шестнадцатиричная-цифра

шестнадцатиричный-литерал шестнадцатиричная-цифра

Целочисленный-суффикс:

беззнаковый-суффикс длинный-суффикс (opt)

длинный-суффикс беззнаковый-суффикс(opt)

Беззнаковый-суффикс: одно из

u U

Длинный-суффикс: одно из

l L

Символьный-литерал:

`c-символьная-последовательность

L`с-символьная-последовательность`

С-символьная-последовательность

с-символьная-последовательность:

с-символ

с-символьная-последовательность с-символ

 

с-символ:

любой элемент исходного набора символа символов кроме апострофа ('),

обратной косой черты (\) и перевода строки

escape-последовательность

универсальное-символьное-имя

 

литерал-с-плавающей-точкой:

дробная-константа показатель opt плавающий-суффикс opt

(Здесь и далее opt означает «optimal», то есть «необязательно».)

цифровая-последовательность показатель плавающий-суффикс opt

 

дробная-константа:

цифровая-последовательность opt. цифровая-последовательность

цифровая-последовательность.

 

показатель:

e знак opt цифровая-последовательность

E знак opt цифровая-последовательность

 

знак: одно из

 

+ -

цифровая последовательность:

цифра -

цифровая-последовательность цифра

 

плавающий-суффикс: одно из

f l F L

 

строковый-литерал:

" s-символьная- последовательность opt"

L " s-символьная- последовательность opt"

 

s-символьная- последовательность:

s-символ

s-символьная- последовательность s-символ

 

s-символ:

любой элемент исходного набора символов кроме двойных кавычек ("),

обратной косой черты (\) и перевода строки

scape-последовательность

универсальное-символьное-имя

 

логический-литерал:

false

true

 

 

Билет 4.

Формальное определение идентификатора имеет следующий вид:

идентификатор:

не-цифра

идентификатор не-цифра

идентификатор цифра

не-цифра: одно из

a b c d e f g h i j k l m n o p q r s t u v w x y z _

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

 

цифра: одно из

0 1 2 3 4 5 6 7 8 9

 

Ограничения состава и длины идентификаторов

 

Идентификаторы представляют собой произвольные имена любой

длины, присваиваемые классам, объектам, функциям, переменным,

определяемым пользователем типам данных и т.д. Идентификаторы

могут содержать буквы от A до Z и от a до z, символ подчеркивания

(_) и цифры от 0 до 9. Существует только два ограничения:

 

1. Первый символ должен являться буквой или символом подчеркивания.

2. По умолчанию распознаются только первые 32 символа в качестве значимых.

 

Билет 5.

Синтаксически единица трансляции определяется как последовательность внешних объявлений: единица-трансляции: последовательность-объявленийпоследовательность-объявлений: объявление последовательность-объявлений объявлениеобъявление: объявление-блока определение-функцииобъявление-блока: простое-объявление определение-псевдонима-пространства-имен using-объявление using-директиваопределение-функции: последовательность-спецификаторов-объявлений объявитель тело-функции Тело-функции: составная-инструкцияИнструкция:составная-инструкция {}инструкция-объявление int nинструкция-выражение a+bинструкция-выбора while, for, do-while, ifинструкция-интерпретация forachинструкция-перехода returt, break, goto, continueпомеченная-инструкция y:a=b+c Составная-инструкция:{последовательность-инструкцийopt} Последовательность-инструкций:ИнструкцияПоследовательность-инструкций инструкция Билет 6. простое-объявление:последовательность-спецификаторов-объявленийopt список-инициализирующих-объявленийopt; спецификатор-объявления:спецификатор-класса-храненияспецификатор-типаспецификатор-функцииfriendtypedef последовательность-спецификаторов-объявлений:последовательность-спецификаторов-объявленийopt спецификатор-объявления спецификатор-класса-хранения:autoregisterstaticexternmutable спецификатор-функции:inlinevirtualexplicit имя-typedef:идентификатор спецификатор-типа:спецификатор-простого-типаспецификатор-классаспецификатор-перечисленияспецификатор-сложного-типаcv-квалификатор спецификатор-простого-типа:::optспецификатор-вложенного-имениopt имя-типа::optспецификатор-вложенного-имени templateopt идентификатор-шаблонаcharwchar_tboolshortintlongsignedunsignedfloatdoublevoid имя-типа:имя-классаимя-перечисленияимя-typedef спецификатор-сложного-типа:ключевое-слово-класса::optспецификатор-вложенного-имениopt идентификаторenum::optспецификатор-вложенного-имениopt идентификаторtypename::optспецификатор-вложенного-имени идентификаторtypename::optспецификатор-вложенного-имени templateopt идентификатор-шаблона имя-перечисления:идентификатор спецификатор-перечисления:enum идентификаторopt {список-элементов-перечисленияopt} список-элементов-перечисления:определение-элемента-перечислениясписок-элементов-перечисления, определение-элемента- перечисления определение-элемента-перечисления:элемент-перечисленияэлемент-перечисления=константное-выражение элемент-перечисления:идентификатор имя-пространства-имен:оригинальное-имя-пространства-именпсевдоним-простанства-имен оригинальное-имя-пространства-именидентификатор определение-пространства-имен:определение-именованного-пространства-именопределение-неименованного-пространства-имен определение-именованного-пространства-имен:определение-оригинального-пространства-именопределение-расширенного-пространства-имен определение-оригинального-пространства-имен:namespace идентификатор {тело-пространства-имен} определение-расширенного-пространства-имен:namespace имя-оригинального-пространства-имен{тело-пространства-имен} определение-неименованного-пространства-имен:namespace {тело-пространства-имен} тело-пространства-имен:последовательность-объявленийopt псевдоним-пространства-имен:идентификатор определение-псевдонима-пространства-имен:namespace идентификатор= квалифицированный-спецификатор-пространства-имен квалифицированный-спецификатор-пространства-имен::optспецификатор-вложенного-имениopt имя-пространства-имен Билет 7. инструкция:помеченная-инструкцияинструкция-выражениесоставная-инструкцияинструкция-выбораинструкция-итерацииинструкция-переходаинструкция-объявленияблок-try помеченная-инструкция:идентификатор:инструкцияcase константное-выражение:инструкцияdefault:инструкция инструкция-выражение:выражениеopt; составная-инструкция:{последовательность-инструкцийopt} последовательность-инструкций:инструкцияпоследовательность-инструкций инструкция инструкция-выбора:if(условие)инструкцияif(условие)инструкция else инструкцияswitch(условие)инструкция условие:выражениепоследовательность-спецификаторов-типа объявитель=выражение-присваивания инструкция-итерации:while(условие)инструкцияdo инструкция while(выражение);for(инструкция-инициализации-for условиеopt;выражениеopt)инструкция инструкция-инициализации-for:инструкция-выражениепростое-объявление инструкция-перехода:break;continue;return выражениеopt;goto идентификатор; инструкция-объявления:объявления-блока

Теоретической основой структурного программирования принято считать принципы, изложенные в классической работе Бома и Джакопини [4]. Эта работа в оригинале на итальянском языке была опубликована в 1965 г., а в английском переводе - в 1966 г.

В соответствии с так называемой "структурной" теоремой, сформулированной и доказанной в этой работе, всякая программа может быть построена с использованием только трех основных типов блоков [4].

  1. Функциональный блок. Ему в языках программирования соответствуют операторы ввода и вывода или любой оператор (группа операторов) присваивания. В виде функционального блока может быть изображена любая последовательность операторов, выполняющихся один за другим, имеющая один вход и один выход.


Рис.1. Функциональный блок

  1. Условная конструкция. Этот блок включает проверку некоторого логического условия (P), в зависимости от которого выполняется либо оператор S1, либо оператор S2: If P Then S1 Else S2;.


Рис.2. Условная конструкция

  1. Блок обобщенного цикла. Этот блок обеспечивает многократное повторение выполнения оператора(ов) S, пока выполнено логическое условие P. Аналог блока обобщенного цикла на языке Pascal: While P Do S;.


Рис.3. Циклическая конструкция

Важной особенностью всех перечисленных блоков является то, что каждый из них имеет один вход и один выход.

Билет 8.инструкция-объявления:объявления-блокаобъявления-блока:простое-объявлениеasm-определениеопределение-псевдонима-пространства-именusing-объявлениеusing-директива (часть этих подразделов раскрыта в билете 6) using-объявление:using typenameopt::optспецификатор-вложенного-имени неквалифицированный-идентификатор;using::неквалифицированный-идентификатор; using-директива:using namespace::optспецификатор-вложенного-имениopt имя-пространства-имен;asm-определение:asm(строковый-литерал); спецификация-компоновки:extern строковый-литерал{список-объявленийopt}extern строковый-литерал объявление Билеты 9-11.Инструкция-выражение: выражениеoptСписок-выражений: выражение-присваивания список-выражений, выражение-присваиванияПервичные выражения: литерал this::идентификатор::идентификатор-оператора-функции::квалифицированный-индикатор идентификатор-выражениеУсловное- выражение: выражение-логического-ИЛИ выражение-логического-ИЛИ?выражение:выражение-присваиванияВыражение-присваивания: условное-выражение выражение-логического-ИЛИ оператор-присваивания выражение-присваивания выражение-trowОператор-присваивания: одно из = *= /= %= += -= >>= <<= &= ^= |= Выражение-логического-ИЛИ: выражение-логического-И выражение-логического-ИЛИ || выражение-логического-Ивыражение-логического-И:выражение-включающего-ИЛИвыражение-логического-И && выражение-включающего-ИЛИвыражение-включающего-ИЛИ:выражение-исключающего-ИЛИвыражение-включающего-ИЛИ I выражение-исключающего-ИЛИвыражение-исключающего-ИЛИ:выражение-Ивыражение-исключающего-ИЛИ^выражение-Ивыражение-И:выражение-равенствавыражение-И & выражение-равенствавыражение-равенствавыражение-отношениявыражение-равенства==выражение-отношениявыражение-равенства!=выражение-отношениявыражение-отношения:выражение-сдвигавыражение-отношения<выражение-сдвигавыражение-отношения>выражение-сдвигавыражение-отношения<=выражение-сдвигавыражение-отношения>=выражение-сдвигавыражение-сдвига:аддитивное-выражениевыражение-сдвига<< аддитивное-выражениевыражение-сдвига>> аддитивное-выражениеаддитивное-выражение:мультипликативное-выражениеаддитивное-выражение+мультипликативное-выражениеаддитивное-выражение-мультипликативное-выражениемультипликативное-выражение:рт-выражениемультипликативное-выражение* рт-выражениемультипликативное-выражение/ рт-выражениемультипликативное-выражение% рт-выражениерт-выражение:выражение-приведениярт-выражение.* выражение-приведениярт-выражение ->* выражение-приведениявыражение-приведения:унарное-выражение(идентификатор-типа) выражение-приведенияунарное-выражение:постфиксное-выражение++выражение-приведения--выражение-приведенияунарный-оператор выражение-приведенияsizeof унарное-выражениеsizeof (идентификатор-типа)new-выражениеdelete-выражениеунарный оператор: одно из* & + -! ~new-выражение:::opt new новое-размещениеopt идентификатор-нового-типановый-инициализаторopt::opt new новое-размещениеopt (идентификатор-типа)новый-инициализаторoptdelete-выражение::opt delete выражение-приведения::opt delete [] выражение-приведения Булевы функции. Конъюнкция — логическая операция, по своему применению максимально приближенная к союзу "и". Синонимы: логическое "И", логическое умножение, иногда просто "И". В булевой алгебре конъюнкция — это функция двух, трёх или более переменных (они же — операнды операции, они же — аргументы функции). Переменные могут принимать значения из множества . Результат также принадлежит множеству . Вычисление результата производится по простому правилу, либо по таблице истинности. Дизъюнкция — логическая операция, по своему применению максимально приближённая к союзу «или» в смысле «или то, или это, или оба сразу».В булевой алгебре дизъюнкция — это функция двух, трёх или более переменных (они же — операнды операции, они же — аргументы функции).
Правило: результат равен , если все операнды равны ; во всех остальных случаях результат равен . Билет 12. инструкция-выбора:if(условие)инструкцияif(условие)инструкция else инструкцияswitch(условие)инструкция условие:выражениепоследовательность-спецификаторов-типа объявитель=выражение-присваивания Билет 13. инструкция-итерации:while(условие)инструкцияdo инструкция while(выражение);for(инструкция-инициализации-for условиеopt;выражениеopt)инструкция инструкция-инициализации-for:инструкция-выражениепростое-объявление

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow