Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая по ТЯП. Вариант 18.doc
Скачиваний:
18
Добавлен:
01.05.2014
Размер:
583.17 Кб
Скачать

2.2. Описание семантики входного языка

Программа представляет собой множество пользовательских типов данных (далее - классов), находящихся в каталогах (package) и связанных включением (import), один из которых обязательно имеет функцию-член с сигнатуройvoid main(String args). В каждом файле может быть описан только один класс. Класс имеет поля, которые могут быть членами-данными встроенных или же определяемых пользователем типов (разработанных классов) или членами-функциями (далее - просто функциями). Инициализация члена-данного может быть осуществлена во время объявления этого члена-данного. Поля класса должны иметь уникальные имена. Переменные, объявленные внутри одно блока должны иметь уникальные имена. Областью видимости локальной переменной является блок. Локальные переменные объявленные внутри блока перекрывают переменные с теми же именами, объявленными вне этого блока. Имя формально параметра функции также перекрывает имя переменной, объявленной как член-данное класса. Время жизни неименованных переменных (используемых в выражениях) ограничивается временем вычисления результата выражения. Время жизни локальной переменной ограничивается блоком, в котором она была определена.

  • Представление данных различных типов в оперативной памяти (ширина и диапазоны):

    Тип

    Ширина, бит

    Диапазон значений

    int

    32

    от -2 147 483 648 до 2 147 483 647

    double

    64

    от 1.7e-308 до 1.7e+308

    char

    16

    от 0 до 65 536

    String

    ограничено размером ОП

  • Проектируемый язык - регистрозависимый.

  • Существует набор зарезервированных языком слов. Их нельзя использовать для задания <идентификатора>. Зарезервированные слова:

while

int

package

length

if

double

import

concat

else

String

class

substring

goto

char

void

replace

read

true

null

find

write

false

new


Арифметические операции. Используются в выражениях, стоящих в правой части присваивания. В арифметическом выражении приоритет операций обычный. Деление на ноль запрещено.

Знак операции

Название операции

Порядок выполнения

++

Увеличение на единицу

Справа налево

--

Уменьшение на единицу

Справа налево

*

Умножение

Слева направо

/

Деление

Слева направо

+

Сложение (положительное число)

Слева направо

-

Вычитание (отрицательное число)

Слева направо

Операции отношения. Используются при вычислении условных выражений.

Знак операции

Название операции

Порядок выполнения

<

Меньше

Слева направо

<=

Меньше или равно

Слева направо

>

Больше

Слева направо

>=

Больше или равно

Слева направо

==

Равно

Слева направо

!=

Не равно

Слева направо

В случае сравнения переменных (или результатов выражений) разного типа, - типы преобразуются согласно правилам преобразования типов

  • String-переменной может быть назначена строковая константа (строка символов в двойных кавычках);

  • Когда операция деления применяется к целочисленному типу, дробная часть теряется;

  • Каждая переменная и каждое выражение имеют тип, и каждый тип строго определён;

  • Все назначения, явные или через передачу параметров в вызовах методов, проверяются на совместимость типов;

  • При выполнении операции присваивания результат приводится к типу переменной слева от знака операции присваивания, при этом возможно преобразование как старшего типа к младшему, так и наоборот;