Критерии оценки языков программирования

Страницы работы

Фрагмент текста работы

вставит команды, приводящие тип переменной b к типу float. Однако если бы смешанные выражения в языке С не допускались, то подобная ошибка была бы зарегистрирована компилятором как ошибка определения типа.

В языках C++ и Java существуют типы целых чисел, меньше типа int. В языке C++ это типы char и short int, а в языке Java — byte, short и char. Операнды этих типов приводятся к типу int при применении к ним практически любого оператора. Та­ким образом, пока переменные этих типов могут содержать данные, нельзя оперировать с такими данными без приведения их к большему типу. Рассмотрим, например, следую­щие команды языка Java:

byte  a,   b,   с;

а  =  b  +   с;

Значение переменных b и с приводятся к типу int, после чего выполняется целочис­ленное сложение, результат которого преобразовывается в тип byte и присваивается переменной а.

Явное преобразование типов

Большинство языков позволяют выполнять явное преобразование типов, как сужающее, так и расширяющее. В некоторых случаях выдаются сообщения, предупреждающие о зна­чительном изменении величины объекта вследствие сужающего преобразования типов.

В языках, основанных на языке С, явное преобразование типа называется приведени­ем (cast). Синтаксис приведения не совпадает с синтаксисом вызовов функций: требуемый тип помещает­ся в круглые скобки непосредственно перед преобразовываемым выражением: (int)   angle

Одной из причин использования в языке С скобок при преобразованиях типов является существование в этом языке имен типов, состоящих из двух слов, например long int.

пример : 1

  1. откидывание :     двойное слово      ->       слово (сужающие преобразование типа)
  1. округление :         0,193 -> 0,2

пример : 2

  1. заполнить нулями или константой

                               ?

=>              

  1. заполнить исходя из исходного вида

    1111 |     0111

11111111 | 00000111

преобразования :

Ø  по умолчанию

Ø  явные

явные :       (long) – расширяющие

неявные :   сужающие

II.  Булевы выражения и выражения отношения.

Помимо арифметических выражений, еще выражения булевские, или логические.

(and, or, xor, not)          ( >, <, =>, >=, <=, ==, != )

| 1  -больше

<=>| -1 –меньше

| 0  –равно

Выражения отношения

Оператор отношений (relational operator) сравнивает значения двух своих операн­дов. Выражение отношений (relational expression) состоит из двух операндов и одного оператора отношений. Значение выражения отношений принадлежит к булевскому типу, за исключением случая, когда в языке нет булевского типа. Операторы отношений обыч­но перегружаются для большого числа типов. Операция, определяющая истинность или ложность выражения отношений, зависит от типов операндов. Она может быть простой (для целых операндов) или сложной (для операндов, являющихся символьными строка­ми). Обычными типами операндрв, которые могут использоваться в выражениях отно­шений, являются числовые типы, строки и порядковые типы.

Ниже приводится синтаксис выражений отношения в некоторых распространенных языках программирования.

Операция                       Pascal    Ada        С                      FORTRAN 77

Равно                               =           =           = =                     .EQ.

Неравно                          <>          !=         !=                       .NE.

Больше                             >          >            >                       .GT.

Меньше                           <           <            <                       .LT.

Больше или равно           >=        >=          >=                     .GE.

Меньше или равно         <=        <=          <=                     .LE.

Поскольку на карточных перфораторах времен разработки языка FORTRAN I отсутст­вовали символы < и >, то разработчики этого языка использовали в выражениях отношения соответствующие английские аббревиатуры. В языке FORTRAN 90 допускается использо­вание исходных операторов отношений и операторов, аналогичных существующим в языке Pascal, за исключением того, что для отношения равенства используется символ ==.

Приоритет операторов отношения всегда ниже приоритета арифметических опера­ций, поэтому в выражениях

а   +   1   >   2   *   b первыми вычисляются арифметические

Похожие материалы

Информация о работе