Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Http://cert. Obninsk. Ru/gost/282/282. Html



ГОСТ 19.701-90

Теорема структур:

l В 1965 г. профессор Дейкстра стал пропагандировать стиль программирования без goto (без оператора безусловного перехода).

l В течении короткого времени этот стиль широко распространился, и в 1966 г. два математика Байм и Якснима доказали теорему структур: Любую программу можно составить, используя только три структуры.

Вопрос №2. Общие сведения о структуре языка про­граммирования. Понятия алфавита, син­таксиса и семантики языка. Лексемы языка (идентификаторы, константы, ключевые слова, знаки операций, разделители). Вы­ражения и операторы.

В формулировке слово «структура» - базовая конструкция программирования:

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

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

Пример:.

l ветвление существует двух видов: на две ветви или на произвольное количество ветвлений

l циклы существуют трех видов:

- С предусловием (while).

- С постусловием (do while), тело цикла будет выполнено хотя бы один раз.

- С заранее заданным числом повторов тела цикла (for).

Язык С++ определяется заданием:

l Алфавита (основные неделимые знаки с помощью которых пишутся тексты);

l Синтаксиса (свод правил, по которым строятся элементы языка);

l Семантики (правила, по которым определяются смысл и правило использования элементов языка).

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

Алфавит языка, или его символы – это основные неделимые знаки, с помощью которых пишутся все тексты на языке.

Лексема, или элементарная конструкция, - минимальная единица языка, имеющая самостоятельный смысл.

Выражение задает правило вычисления некоторого значения.

Оператор задает законченное описание некоторого действия.

Состав алфавита языка С/С++:

l арабские цифры от 0 до 9;

l прописные и строчные латинские буквы и знак подчеркивания;

l специальные знаки:

“ { }, ¦ [ ] () + - / % *. \

‘:? < = >! & # ~; ^

l пробельные символы: пробел, символы табуляции, перехода на новую строку.

Из символов алфавита формируются лексемы языка:

l идентификаторы;

l ключевые (зарезервированные) слова;

l знаки операций;

l константы;

l разделители (скобки, точка, запятая, пробельные символы);

l комментарии.

Границы лексем определяются другими лексемами, такими, как разделители или знаки операций.

Идентификатор – это имя программного объекта.

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

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

l Пробелы внутри имен не допускаются.

l Длина идентификатора не ограничена.

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

Правила:

l идентификатор не должен совпадать с ключевыми словами и менами используемых стандартных объектов языка;

l не рекомендуется начинать идентификатор с символа подчеркивания, поскольку они могут совпасть с именами системных функций или переменных;

l на идентификаторы, используемые для определения внешних переменных, налагаются ограничения компоновщика.

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

Знак операции – это один или более символов, определяющих действие над операндами.

l Внутри знака операции пробелы не допускаются.

l Операции делятся на унарные, бинарные и тернарную по количеству участвующих в них операндов.

l Большинство стандартных операций может быть переопределено.

Константами называют неизменяемые величины.

l Различаются целые, вещественные, символьные и строковые константы.

l Компилятор, выделив константу в качестве лексемы, относит ее к одному из типов по ее внешнему виду.

Форматы констант, соответствующие каждому типу, приведены в таблице.

l Если требуется сформировать отрицательную целую или вещественную константу, то перед константой ставится знак унарной операции изменения знака (-).

l Вещественная константа в экспоненциальном формате представляется в виде мантиссы и порядка.

l Символьные константы, состоящие из одного символа, занимают в памяти 1 байт и имеют стандартный тип char. Двухсимвольные – 2 байта и имеют тип int.

Вопрос №3. Понятие типа данных. Ос­новные типы данных. Представление объ­ектов различных типов данных в памяти ЭВМ. Описание переменных основных типов. Преобразование типов.

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

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

Тип данных определяет:

l внутреннее представление данных в памяти компьютера;

l множество значений, которые могут принимать величины этого типа;

l операции и функции, которые можно применять к величинам этого типа.

Все типы языка С++ можно разделить на основные и составные.

l Шесть основных типов данных для представления целых, вещественных, символьных и логических величин.

l На основе этих типов программист может вводить описание составных типов. К ним относятся массивы, перечисления, функции, структуры, ссылки, указатели, объединения и классы.

Свойства основных типов данных определяется компилятором.

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

l int (целый);

l char (символьный);

l wchar_t (расширенный символьный);

l bool (логический);

l float (вещественный);

l double (вещественный с двойной точностью).

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

Существует четыре спецификатора типа, уточняющих внутреннее представление и диапазон значений стандартных типов: short (короткий), long (длинный), signed (знаковый), unsigned (беззнаковый).

В С++ введен тип void, множество значений его пусто.

Вопрос №4. Понятие перемен­ной, область видимости идентификатора, область действия переменной. Понятие программного объекта. Класс памяти, время жизни программного объекта.

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

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

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

[класс памяти] [const] тип имя [инициализатор];

l Класс памяти может принимать одно из значений: auto, extern, static, register.

l Модификатор const показывает, что значение переменной изменять нельзя. Такую переменную называют константой.

l При описании переменной можно присвоить начальное значение, это называется инициализацией.

int a=1;

float x(0.3);

Константа инициализируется при объявлении.

Если переменная объявлена внутри блока, то это переменная локальная и область ее действия от точки описания до конца блока, включая все вложенные блоки.

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

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

Как правило область видимости совпадает с областью действия. Исключение: когда во вложенном блоке описана переменная с таким же именем. В этом случае внешняя переменная во вложенном блоке невидима, хотя он входит в ее область действия. К внешней переменной, елси она глобальная, можно обратиться, используя операцию доступа к области видимости ::.

Время жизни переменной может быть постоянным (в течение выполнения программы) и временным (в течение выполнения блока).

Класс памяти определяет время жизни и область видимости программного объекта. Если класс памяти не указан явным образом, он определяется компилятором исходя из контекста объявления.

Для задания класса памяти используются следующие спецификаторы:

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

l extern – означает, что переменная определяется в другом месте программы.

l static – статическая переменная. Время жизни – постоянное. Инициализируется один раз при первом выполнении оператора, содержащего определение переменной.

l register – аналогично auto, но память выделяется по возможности в регистрах процессора.

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

Имя переменной должны быть уникальным в своей области действия.

Вопрос №6. 6. Основные операции языка С++ (унарные, бинарные, тренарная).

Операции выполняются в соответствии с приоритетами.

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

Преобразования бывают двух типов:

l изменяющие внутреннее представление величин (с потерей точности или без);

l изменяющие только интерпретацию внутреннего представления.

Например, к первому типу относится преобразование целого числа в вещественное (без потери точности) и наоборот (возможно, с потерей точности), ко второму – преобразование знакового целого в безнаковое.

Величины типов char, signed char, unsigned char, short int и unsigned short int преобразуются в тип int,если он может представить все значения, или в unsigned int в противном случае.





Дата публикования: 2015-02-03; Прочитано: 293 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.012 с)...