Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика ответы на вопросы..docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
520.48 Кб
Скачать

Синтаксис:

#IFDEF Имя

Строки, которые следуют за этой директивой, будут прочитаны только в том случае, если ключевое слово Имя определено.

Чтение выполняется до тех пор, пока не будет найдено ключевое слово #ELSE или #ENDIF, после которого возобновится нормальный процесс компиляции.

Пример:

#IFDEF VER2_2_0

-Fu/usr/lib/fpc/2.2.0/linuxunits

#ENDIF

В этом примере /usr/lib/fpc/2.2.0/linuxunits будет добавлено в путь, если вы используете версию компилятора 2.2.0.

IFNDEF

Синтаксис:

#IFNDEF Имя

Строки, которые следуют за этой директивой, будут прочитаны только в том случае, если ключевое слово Имя НЕ определено.

Чтение выполняется до тех пор, пока не будет найдено ключевое слово #ELSE или #ENDIF, после которого возобновится нормальный процесс компиляции.

Пример:

#IFNDEF VER2_2_0

-Fu/usr/lib/fpc/2.2.0/linuxunits

#ENDIF

В этом примере /usr/lib/fpc/2.2.0/linuxunits будет добавлено в путь, если вы используете любую версию компилятора, кроме версии 2.2.0.

ELSE

Синтаксис:

#ELSE

Директива #ELSE может быть указана после директив #IFDEF или #IFNDEF как альтернатива. Строки, которые следуют за этой директивой, будут прочитаны только в том случае, если ключевое не выполнилось условие директив #IFDEF или #IFNDEF.

Чтение выполняется до тех пор, пока не будет найдено ключевое слово #ENDIF, после которого возобновится нормальный процесс компиляции.

Пример:

#IFDEF VER2_2_2

-Fu/usr/lib/fpc/2.2.2/linuxunits

#ELSE

-Fu/usr/lib/fpc/2.2.0/linuxunits

#ENDIF

В этом примере /usr/lib/fpc/2.2.2/linuxunits будет добавлено в путь, если вы используете версию компилятора 2.2.2, иначе будет добавлено /usr/lib/fpc/2.2.0/linuxunits.

ENDIF

Синтаксис:

#ENDIF

Директива #ENDIF отмечает конец блока, который начинается директивой #IF(N)DEF, возможно с директивой #ELSE между ними.

DEFINE

Синтаксис:

#DEFINE Имя

Директива #DEFINE определяет новое ключевое слово. Она имеет тот же эффект, что и параметр командной строки –dname.

UNDEF

Синтаксис:

#UNDEF Имя

Директива #UNDEF отменяет определение ключевого слова, если оно существует. Директива имеет тот же эффект, что параметр командной строки –uname.

WRITE

Синтаксис:

#WRITE Текст сообщения

Директива #WRITE выводит Текст сообщения на экран. Это может оказаться полезным для вывода предупреждений, если какие-либо опции являются установленными.

Пример:

#IFDEF DEBUG

#WRITE Setting debugging ON...

-g

#ENDIF

Если DEBUG определено, то этот пример выведет строку

Setting debugging ON...

а затем включит вывод отладочной информации.

INCLUDE

Синтаксис:

#INCLUDE ИмяФайла

Директива #INCLUDE даёт команду компилятору читать содержимое файла ИмяФайла, перед продолжением чтения параметров в текущем файле.

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

Пример:

#IFDEF LINUX

#INCLUDE /etc/fpc.cfg

#ELSE

#IFDEF GO32V2

#INCLUDE c:\pp\bin\fpc.cfg

#ENDIF

#ENDIF

Если вы работаете на LINUX-машине, то будет подключен конфигурационный файл /etc/fpc.cfg, а если вы работает на DOS-машине, то будет подключен конфигурационный файл c:\pp\bin\fpc.cfg.

SECTION

Синтаксис:

#SECTION Имя

Директива #SECTION действует как директива #IFDEF, только не требует директивы #ENDIF. Специальное имя COMMON всегда существует, то есть строки, которые следуют за #SECTION COMMON всегда будут читаться.

34. ЛИТЕРАЛ (literal). Содержащийся в тексте программы элемент данных, представленный в виде имеющих самостоятельное значение символа или последовательности символов. Л. являются непосредственно указанные в программе адреса, числовые или символьные константы, но не имена констант, переменных или других объектов программы. Например, в написанных на языке Паскаль операторах pi:= 3.14159; у:= 2*Р1*х; Л. является число 3.14159, а символы PI ни в первом, ни во втором операторах не являются самостоятельно значимыми и, следовательно, не образуют Л. Это просто имя константы. Аналогично, в написанных на языке Си директиве

35. В С# литералами называются постоянные значения, представленные в удобной для восприятия форме. Например, число 100 является литералом. Сами литералы и их назначение настолько понятны, что они применялись во всех предыдущих примерах программ без всяких пояснений. Но теперь настало время дать им формальное объяснение.

В С# литералы могут быть любого простого типа. Представление каждого литерала зависит от конкретного типа. Как пояснялось ранее, символьные литералы заключаются в одинарные кавычки. Например, 'а' и '%' являются символьными литералами.

Целочисленные литералы указываются в виде чисел без дробной части. Например, 10 и -100 — это целочисленные литералы. Для обозначения литералов с плавающей точкой требуется указывать десятичную точку и дробную часть числа. Например, 11.123 — это литерал с плавающей точкой. Для вещественных чисел с плавающей точкой в С# допускается также использовать экспоненциальное представление.

У литералов должен быть также конкретный тип, поскольку С# является строго типизированным языком. В этой связи возникает естественный вопрос: к какому типу следует отнести числовой литерал, например 2, 12 3987 или 0 .23? К счастью, для ответа на этот вопрос в С# установлен ряд простых для соблюдения правил:

  • Во-первых, у целочисленных литералов должен быть самый мелкий целочисленный тип, которым они могут быть представлены, начиная с типа int. Таким образом, у целочисленных литералов может быть один из следующих типов: int, uint, long или ulong в зависимости от значения литерала.

  • Литералы с плавающей точкой относятся к типу double.

  • Если вас не устраивает используемый по умолчанию тип литерала, вы можете явно указать другой его тип с помощью суффикса.

Так, для указания типа long к литералу присоединяется суффикс l или L. Например, 12 — это литерал типа int, a 12L — литерал типа long. Для указания целочисленного типа без знака к литералу присоединяется суффикс u или U. Следовательно, 100 — это литерал типа int, a 100U — литерал типа uint. А для указания длинного целочисленного типа без знака к литералу присоединяется суффикс ul или UL. Например, 984375UL — это литерал типа ulong.

Кроме того, для указания типа float к литералу присоединяется суффикс F или f. Например, 10.19F — это литерал типа float. Можете даже указать тип double, присоединив к литералу суффикс d или D, хотя это излишне. Ведь, как упоминалось выше, по умолчанию литералы с плавающей точкой относятся к типу double.

И наконец, для указания типа decimal к литералу присоединяется суффикс m или М. Например, 9.95М — это десятичный литерал типа decimal.

Несмотря на то что целочисленные литералы образуют по умолчанию значения типа int, uint, long или ulong, их можно присваивать переменным типа byte, sbyte, short или ushort, при условии, что присваиваемое значение может быть представлено целевым типом.

36. Идентификаторы  - имена объектов и конструкций программы (меток,  констант, типов, переменных, типов, процедур, функций, объектов, модулей, программ, полей в записях и т.д.). Имя может иметь любую длину, однако различимыми являются только первые 63 символа. Имя состоит из буквы, за которой могут следовать буквы, цифры или символ подчеркивания. (Имя может начинаться с символа подчеркивания, но этого не желательно делатель  т.к. с него начинаются большинство системных программ) Нельзя в качестве имен использовать ключевые слова, и стандартные имена, которые служат для обозначения некоторых констант, типов, процедур, функций, файлов и др. объектов. Эти имена распознаются компилятором без их дополнительного описания в программе. Выбор имени желательно осуществлять в соответствии с логической или физической сущности именуемого объекта, что облегчает понимание программы и служит признаком хорошего стиля программирования.

37. Идентификаторы — это имена, которые мы даем переменным, определенным пользователем типам (классам и структурам) и членам этих типов. Идентификаторы чувствительны к регистру символов, поэтому identifier и Identifier являются разными переменными. В С# идентификаторы обязаны подчиняться двум правилам. Во-первых, идентификатор должен начинаться с буквы или знака подчеркивания, хотя он может содержать и цифры. Во-вторых, в качестве идентификаторов нельзя использовать ключевые слова С#. С# имеет 76 зарезервированных ключевых слов:

abstract

do

implicit

params

switch

as

double

in

private

this

base

else

int

protected

throw

bool

enum

interface

public

true

break

event

internal

readonly

try

byte

explicit

is

ref

typeof

case

extern

lock

return

uint

catch

false

long

sbyte

ulong

char

finally

namespace

sealed

unchecked

checked

fixed

new

short

unsafe

class

float

null

sizeof

ushort

const

for

object

stackalloc

using

continue

foreach

operator

static

virtual

decimal

goto

out

string

void

default

if

override

struct

while

delegate

Если одно из этих слов требуется использовать в качестве идентификатора (например, если осуществляется доступ к классу, написанному с применением другого языка), то перед ним ставится знак @, который указывает компилятору, что это слово необходимо трактовать как идентификатор, а не как ключевое слово С# (таким образом, abstract не является допустимым идентификатором, a @abstract является). Наконец, идентификаторы могут записываться с помощью символов Unicode, указанных с использованием синтаксиса \uXXXX, где ХХХХ — четырехзначный шестнадцатеричный код Unicode символа. Приведем примеры допустимых идентификаторов: Name, uberflu?, _Identifier, \u005fIdentifier Последние два идентификатора являются идентичными и взаимозаменяемыми (005f — Unicode-код для знака подчеркивания), поэтому они не могут быть объявлены оба в пределах одной области видимости. Отметим, что хотя и можно использовать в качестве идентификаторов знаки подчеркивания, все же не рекомендуется делать это, поскольку противоречит рекомендациям Microsoft по именованию идентификаторов, которые были созданы для стандартизации соглашений по именам и для облегчения чтения кода других программистов.