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

1.Условный оператор if

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

true Выражение false false

выражение

true

оператор1 оператор2

оператор

Формат оператора:

if (выражение ) оператор_1; [else оператор_2;]

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

if (a<0) b=1;

if (b>a) max = b; else max = a;

Оператор swith

Оператор swith (переключатель) предназначен для разветвления процесса вычислений на несколько направлений. Формат оператора:

Swith ( выражение ){

сase константное_выражение_1: [ список_операторов_1 ]

……..

сase константное_выражение_n: [ список_операторов_n ]

[default: операторы ]

}

Выполнение оператора начинается с вычисления выражения, а затем управление передается первому оператору из списка, помеченного константным выражением, значение которого совпало с вычисленным. После этого, если выход из переключателя явно не указан, последовательно выполняются все остальные ветви. Выход такого оператора осуществляется операторами break, return, default.

Операторы цикла

Любой цикл состоит из следующих основных элементов:

  • тело цикла;

  • начальные установки;

  • модификация параметров цикла;

  • проверка условия дальнейшего продолжения цикла

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

Структурная схема оператора цикла:

Начальные установки начальные установки

выражение операторы

операторы модиф. парал. цикла

модиф-я. парал-го. выражение

цикла

цикл с предусловием цикл с постусловием

Оператор while

While (выражение) оператор

Выражение определяет повторение цикла. Если результат выражения истина, то цикл выполняется, если же при первой проверке выражение ложно, то цикл не выполняется.

While – это цикл с предусловием

Цикл с постусловием do while

Do оператор while выражение

Сначала выполняется оператор, после этого вычисляется выражение (оператор составляет тело цикла). Если выражение истинно, то цикл выполняется еще раз. Цикл прекращается, когда выражение становится ложным. Или внутри тела цикла будет выполнятся оператор

Цикл с параметром for

For (инициализация; выражение; модификация) оператор;

Инициализация используется для объявления и присваивания начальных значений выражений, используемых в цикле. В качестве инициализации могут использоваться несколько операторов , разделенных запятой. Выражение определяет условие выполнения цикла. Если его результат приведенный к логическому типу bool=true, то цикл выполняется. Модификация выполняется после каждой итерации цикла и служит обычно для изменения параметра цикла.

Пример: for int i=1, s=0; i<=100; i++) s +=i;

Операторы передачи управления

В языке С++ используются 4 таких оператора:

1) goto – оператор безусловного перехода

Goto имеет следующий формат: goto метка;

Метка-это обычный идентификатор, областью действия, которого является функция. Использование оператора goto оправдано в следующих случаях:

  • принудительный выход вниз по тексту программы из нескольких вложенных циклов или переключателей;

  • переход из нескольких мест функции в одно;

Пример: int k;…

goto metka;…

{ int a=3,b=4;

k=a+b,

metka: int m=k+1;…

}

После выполнения такого фрагмента программы значение переменной m не определено.

2) break-используется внутри оператора цикла для обеспечения выхода в точку программы, находящуюся непосредственно внутри программы.

3) continue-этот оператор осуществляет переход к следующей итерации цикла, пропуская все операторы оставшиеся до конца тела цикла и передает управление на начало следующей итерации

4) return – оператор возврата из функции завершает ее действия и передает управление в точку ее вызова.

Return [выражение];

Директива при процессорах

Препроцессором называется первая фаза компилятора. Инструкция, которая подается на препроцессор, называется директивами. Любая директива начинается с символа #.

  1. директива include.

# include <имя файла>

Эта директива вставляется в указанный файл, в ту точку программы, куда она указана. Как правило, такие файлы носят расширение *.h и называются заголовочными файлами. Если не указан конкретный путь к h-файлу, то поиск идет в стандартных каталогах. Как правило, include содержит информацию об интерфейсе.

Файлы с расширением .h могут содержать:

  1. определение типов, const, встроенных функций, шаблонов и перечислений.

  2. объявление функций, данных, имен и шаблонов.

  3. Помимо этого содержит различного вида препроцессоры

  4. Различного рода комментарии.

В заголовочных файлах не должно быть определений, функций и данных.

2) директива define

Подставляет в текст программы:

  1. символьные const

  2. макросы

  3. символы управляющей условной компиляции

# define имя

  1. директивы условной компиляции:

#if

# ifdef константное выражение

# ifndef

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

Функция

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

[класс] тип имя ( [список параметров] )

[throw ( исключения )] { тело функции }

В определении, в объявлении и при вызове одной и той же функции типы и порядок следования параметров должны совпадать. Функцию можно определить как встроенную с помощью модификатора inline, который рекомендует компилятору вместо обращения к функции помещать ее код непосредственно в каждую точку вызова. Модификатор inline ставится перед типом функции. Он применяется для коротких функций.

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

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

Пример функции, возвращающей сумму двух целых величин:

#include <iostream.h>

int sum(int a, int b); // объявление функции

int main( ){

int a=2, b=3, c, d;

c=sum(a,b); // вызов функции

cin>>d;

cout<<sum(c,d); // вызов функции

return 0;

}

int sum(int a, int b){ // определение функции

return (a + b);

}

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

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

return [ выражение ];

Параметры функции.

Механизм параметров является основным способом обмена информацией между вызываемой и вызывающей функцией. Параметры, перечисленные в заголовке описания функции, называются формальными параметрами, а записанные в операторе вызова функции фактическими параметрами или аргументами. Существует два способа передачи параметров в функцию: по значению и по адресу.

  • При передаче по значению в стек заносятся копии значений аргументов, и операторы функции работают с этими копиями. Доступа к исходным значениям параметров у функции нет, а, следовательно, и нет возможности их изменить.

  • При передаче по адресу в стек заносятся копии адресов документов, а функция осуществляет доступ к ячейкам памяти по этим адресам и могут изменить исходные значения аргументов.

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

Формат простейшей функции-шаблона:

Template <class Type> заголовок{

/* тело функции */

}

Функция main( )

Функция, которой передается управление после запуска программы, должна иметь имя main. Она может возвращать значение в вызвавшую систему и принимать параметры из внешнего окружения. Возвращаемое значение должно быть целого типа. Стандарт предусматривает два формата функции:

// без параметров:

Тип main( ){ /* … */}

// с двумя параметрами:

Тип main(int argc, char* argv[ ]){ /* … */ }

При запуске программы параметры разделяются пробелами. Имена параметров в программе могут быть любыми, но принято использовать argc и argv. Первый параметр определяет количество параметров, передаваемых функции, включая имя самой программы, второй параметр является указателем на массив указателей типа char*.

Синтаксис и семантика программы

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

  1. Найти и выделить основные синтаксические конструкции в тексте исходной программы.

  2. Установить тип и проверить правильность построенной синтаксической конструкции.

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

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

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

Семантический анализ

Для проверки семантической правильности необходимо иметь информацию о всех найденных лексических единицах языка, о конструкциях, построенных на их основе и правильность этих конструкций с точки зрения синтаксиса. Т.е. семантический анализ может быть проведен только после полного синтаксического анализа Т.о. входными данными могут служить таблицы идентификаторов, результаты разбора синтаксических конструкций языка. Часто семантический анализ выполняется на 2-х фазах компиляции: на этапе синтаксического разбора; на этапе подготовки генерации кода. В 1-м случае, происходит проверка только, что вышедшей синтаксической конструкции на согласованность уже имеющихся конструкций. В качестве таких конструкций выступают процедуры, функции, блоки операторов входного языка. Во 2-м случае, по завершении синтаксического разбора всей входной цепочки символов происходите полный анализ с точки зрения семантики.

96. Типы данных на примере языка С++ (или Паскаль): целые, вещественные, логические, символьные, перечислимые, строковые, массивы, записи. Статические и динамические данные, указатели.

Соседние файлы в папке шпоры