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

2. ПОНЯТИЕ ЯЗЫКА ПРОГРАММИРОВАНИЯ. ПОНЯТИЕ ЛЕКСИКИ, СИНТАКСИСА И СЕМАНТИКИ.

3.СПОСОБЫ ФОРМАЛЬНОГО ОПРЕДЕЛЕНИЯ СИНТАКСИСА ЯЗЫКА ПРОГРАММИРОВАНИЯ: МЕТАЯЗЫК, СИНТАКСИЧЕСКИЕ ДИАГРАММЫ.

Для того чтобы упростить процесс решения задач на ЭВМ, используются 2 основных метода:

- накопление посторонних программ – такие программы объединяются в библиотеки, пакеты прокладываемых программ или в специализированные программные системы. Они могут использоваться как самостоятельно для решения задач, так и быть составной частью других программ.

- разработка специальных языков программирования

Язык программирования – это искусственный язык, специально разрабатываемый человеком для облегчения процесса разработки программ. Позволяет описывать решение программы в текстовой или символьной форме. Все я.п. можно разделить на два основных класса:

Процедурно-ориентированные языки – алгоритмические – позволяют описать процесс решения задачи

Проблемно-ориентированные языки – неалгоритмические – позволяют описать саму задачу, её постановку.

Кроме того все я.п. можно разделить еще на 2 класса по степени удаленности языка от технических параметров ЭВМ:

1. языки высокого уровня – это инструмент для общения человека с некоторой реально не существующей (виртуальной) ЭВМ и сама эта ЭВМ как бы определяется правилами я.п. Такой язык, естественно, удален от технических характеристик реальной ЭВМ и нужен некоторый посредник, который бы осуществлял преобразование программ, написанном на этом языке для того, чтобы они могли быть исполнены на реально существующих ЭВМ. Такими посредниками являются транслятор, компилятор, интерпретатор и генератор.

2. языки низкого уровня – это языки которые зависят от технических характеристик ЭВМ – ассамблер.

Алфавит – это фиксированный набор символов, из которых должен состоять текст на заданном языке.

Синтаксис – система правил , определяющая допустимые конструкции из символов алфавита. Описывают формально, строго, однозначно.

Симантика – система правил истолкования определенных языковых конструкций. Позволяет правильно использовать те или иные конструкции языка.

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

Металингвинистическая формула имеет вид:

<понятие языка>::=<выражение, определяющее это понятие>

Для каждого понятия языка существует своя метафизическая формула.

В выражении могут использоваться терминальные символы, метасимволы, понятия языка.

Терминальные символы – символы алфавита я.п.

Метасимволы – набор символов, предназначенных для построения выражения.

Из основных символов языка формируются простейшие смысловые конструкции языка – слова или лексемы.

Идентификатор – лексема, которая используется для наименования объектов программы. Служебные – это предопределенные в я.п. идентификаторы, имеющие спец. назначение, могут использоваться для образования основных языковых конструкции языка

Рекурсивное определение – когда понятие используется в выражении, определяя его.

Ключевое слово – предопределенный ранее идентификатор. Используется для построения каких-то других сложных конструкции.

Синтаксические диаграммы – графическое изображение синтаксической конструкции.

4. Понятие объекта программы. Виды объектов: константа, переменная, функция. Задание (определение) объектов программы.

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

Константы

В языке (Турбо) Си имеются четыре типа констант: целые, вещественные (с плавающей точкой), символьные и строковые.

Константы целого типа. Константы целого типа могут задаваться в десятичной, двоичной, восьмеричной или шестнадцатеричной системе счисления.

Десятичные целые константы образуются из цифр. Первой цифрой не должен быть нуль.

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

Шестнадцатеричные константы всегда начинаются с цифры нуль и символа х или Х, за которыми может стоять одна или более шестнадцатеричных цифр.

Шестнадцатеричные цифры - это десятичные цифры от 0 до 9 и латинские буквы: a, b, c, d, e, f, или A, B, C, D, E, F.

К любой целой константе можно справа приписать символ l или L, и это будет означать, что константа - длинная целая (long integer). Символ u или U, приписанный к константе справа, указывает на то, что константа целая без знака (unsigned long).

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

Десятичная константа может иметь тип int или long в зависимости от ее значения. Восьмеричные и шестнадцатеричные константы в зависимости от значения тип int или unsigned int или long или unsigned long.

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

Формат представления:

[< цифры >] [.< цифры >] [< э > [– ] < цифры >],

где < э > - признак экспоненты, задаваемый символом е или Е. Цифры следующие за символом экспоненты – это целочисленное значение порядка действительного числа, возможно со знаком + или -.

Чтобы записать отрицательное действительное число, надо сформировать константное выражение: знак унарной операции минус за ним константа.

Константа с плавающей точкой имеет тип double.

Cимвольные константы

Cимвольная константа – это любой символ из множества представимых символов, в том числе и любой специальный символ. Cимвольные константы заключаются в апострофы (кавычки). Все символьные константы имеют в (Турбо) Си значение типа int (целое), совпадающее с кодом символа в кодировке ASCII.

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

Каждая esc - последовательность должна быть заключена в кавычки.

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

Функции.

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

Переменные.

Одним из основных понятий языка Си является объект - именованная область памяти. Частный случай объекта – переменная. Отличительная особенность переменной состоит в возможности связывать с её именем различные значения, совокупность которых определяется типом переменной. При задании значения переменной в соответствующую ей область памяти помещается код этого значения. Доступ к значению переменной наиболее естественно обеспечивает её имя, а доступ к участку памяти возможен только по его адресу. Каждая переменная перед её использованием в программе должна быть определена, т.е. для переменной должна быть выделена память. Размер участка памяти, выделяемой для переменной, и интерпретация содержимого зависят от типа, указанного в определении переменной. Определены целочисленные типы: char – целый длиной не менее 8 бит, short int – короткий целый, int - целый, long – длинный целый. Каждый из целочисленных типов может быть определен либо как знаковый signed либо как беззнаковый unsigned. Стандартом языка введены следующие вещественные типы: float – одинарной точности, double – удвоенной точности, long double – максимальной точности.

5. ПОНЯТИЕ ТИПА ДАННЫХ. ПОНЯТИЕ СИСТЕМЫ ТИПОВ. ОСНОВНЫЕ СОСТАВЛЯЮЩИЕ ТИПА.

6. ПОНЯТИЕ ПРОСТОГО ТИПА. ПОНЯТИЕ СТАНДАРТНОГО (БАЗОВОГО) ТИПА. КЛАССИФИКАЦИЯ СТАНДАТНЫХ ТИПОВ. ХАРАКТЕРИСТИКА ОСНОВНЫХ СОСТАВЛЯЮЩИХ ПРОСТЫХ СТАНДАРТНХ ТИПОВ.

7. ПОНЯТИЕ СЛОЖНОГО ТИПА. КЛАССИФИКАЦИЯ СЛОЖНЫХ ТИПОВ.

В (Турбо) Си переменные должны быть описаны, а их тип специфицирован до того, как эти переменные будут использованы.

При описании переменных применяется префиксная запись, при которой вначале указывается тип, а затем - имя переменной.

Общая форма описания простой переменной:

<спецификация типа > <идентификатор>[,<идентификатор>...]

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

Тип данного – это совокупность информации о значении величины, которая позволяет использовать эту величину при решении задачи на компьютере. Вся эта информация включает:

-множество допустимых значений, которые может принимать величина

- множество допустимых операций или действий, производимых над величиной

- размер памяти, выделяемой для хранения величины

- внутренне представление значения величины в единице памяти, выделяемой для хранения (физический уровень)

- структура значения – из чего состоит и как эти части взаимосвязаны (логический уровень, я.п.)

В зависимости от структуры значения:

- простые типы – значения не делятся ни на какие части, оно едино, операции выполняются над всем значением в целом.

1. базовые типы – полностью определены в языке программирования (есть имя). Используются для отражения распространенной информации: числовая (целые, действительные, комплексные), текстовая (символ), логическая (правда/ложь

2. типы, доопределяемые программистом – определяет множество допустимых значений (нет имени)

- сложные типы – значение состоит из частей/элементов, операции выполняются над элементами или всем значением в целом

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

Сложный тип строится по следующим правилам:

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

(при этом уровень вложенности может ограничиваться или нет);

б) внутри сложной структуры тип всех элементов может быть

– одинаков – однородная структура,

– различен – неоднородная структура;

в) количество элементов в структуре может быть:

– фиксировано в течение времени существования структуры (структуры фиксированного размера или статические),

– переменным, т.е. динамически меняться путем включения или исключения элементов в процессе работы со структурой (структуры переменного размера или динамические);

г) обращение (доступ) к элементам структуры может быть:

– непосредственное (прямое) - вычисляемое (по индексу или месту в структуре) или не вычисляемое (по имени элемента);

– последовательное - характерное для структур переменного размера.

Вид обращения определяется способом объединения компонент в единую структуру;

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