WWW.LIB.KNIGI-X.RU
БЕСПЛАТНАЯ  ИНТЕРНЕТ  БИБЛИОТЕКА - Электронные матриалы
 

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования ...»

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ

ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

Т.Е. Мамонова

ИНФОРМАТИКА

Программирование на C++

Рекомендовано в качестве учебно-методического пособия Редакционно-издательским советом Томского политехнического университета Издательство Томского политехнического университета

681.3 УДК ББК М22 Мамонова Т.Е.

М22 Информатика. Программирование на C++: учебно-методическое пособие / Т.Е. Мамонова; Томский политехнический университет. – Томск: Изд-во Томского политехнического университета, 2011. – 118 с.

В авторской редакции В учебно-методическом пособии в краткой форме изложены теоретические вопросы курса «Информатика», где выделены важнейшие положения по программированию на языке высокого уровня C++. По каждой теме представлено большое количество тренировочных задач, включен справочный материал.

Пособие подготовлено на кафедре интегрированных компьютерных систем управления, соответствует программе дисциплины и предназначено для студентов ИДО, обучающихся по направлению 220700 «Автоматизация технологических процессов и производств».

УДК 681.3 ББК Рецензенты Доктор технических наук, профессор кафедры интегрированных компьютерных систем управления ИК ТПУ А.М. Малышенко Кандидат технических наук, доцент кафедры интегрированных компьютерных систем управления ИК В.Н. Шкляр © ФГБОУ ВПО НИ ТПУ, 2011 © Мамонова Т.Е., 2011 © Оформление. Издательство Томского политехнического университета, 2011 ОГЛАВЛЕНИЕ ОГЛАВЛЕНИЕ

ВВЕДЕНИЕ

1. ЯЗЫК ПРОГРАММИРОВАНИЯ C++

1.1. Нововведения C++ в сравнении с C

1.2. Дизайн C++

1.3. Технический обзор

2. ЛАБОРАТОРНАЯ РАБОТА № 1 «ЗНАКОМСТВО С ЯЗЫКОМ C++.

ОСНОВНЫЕ ФУНКЦИИ»

2.1. Методические указания

2.1.1. Алфавит C++

2.1.2. Этапы создания исполняемой программы

2.1.3. Типы данных C++

2.1.3.1. Концепция типа данных

2.1.3.2. Простые типы данных

2.1.4. Структура программы на языке C++

2.1.5. Директивы препроцессора

2.1.5.1. Директива #include

2.1.5.2. Директива #define

2.1.6. Предварительные замечания о функциях ввода/вывода

2.1.7. Переменные и выражения

2.1.7.1. Переменные

2.1.7.2. Операции

2.1.7.3. Выражения

2.1.8. Основные функции

2.1.8.1. Математические функции

2.1.8.2. Функции обработки сигналов

2.1.8.3. Функции ввода-вывода в стиле C

2.1.8.4. Функция работы с датой и временем

2.1.8.5. Функции локализации

2.1.8.6. Функции классификации и преобразования символов

2.1.8.7. Функции управления программой

2.1.8.8. Различные функции в стиле C

2.2. Примеры программ для выполнения лабораторной работы № 1

2.3. Вопросы для самоконтроля

2.4. Варианты заданий к лабораторной работе № 1

3. ЛАБОРАТОРНАЯ РАБОТА № 2

«ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ

ОСНОВНЫХ ОПЕРАТОРОВ ЯЗЫКА C++.

РАБОТА С МАССИВАМИ»

3.1. Методические указания

3.1.1. Основные операторы языка С++

3.1.1.1. Базовые конструкции структурного программирования

3.1.1.2. Составные операторы

3.1.1.3. Операторы выбора

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

Цикл с предусловием (while)

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

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

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

Оператор goto

Оператор break

Оператор continue

Оператор return

3.1.2. Одномерные массивы

3.1.2.1. Описание массива в C/C++

3.1.2.2. Обработка одномерных массивов

3.1.2.3. Перебор массива по одному элементу

3.1.2.4. Датчика случайных чисел для формирования массива

3.1.3. Многомерные массивы

3.2. Примеры программ для лабораторной работы № 2

3.3. Вопросы для самоконтроля

3.4. Варианты заданий к лабораторной работе № 2

4. КУРСОВАЯ РАБОТА «СОЗДАНИЕ СОБСТВЕННОЙ ФУНКЦИИ»

4.1. Методические указания

4.1.1. Объявление и определение функций

Глобальные переменные

Возвращаемое значение

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

4.2. Вопросы для самоконтроля

4.3. Варианты заданий курсовой работы

Вариант 1

СПИСОК ЛИТЕРАТУРЫ

ПРИЛОЖЕНИЕ А

ШАБЛОН ТИТУЛЬНОГО ЛИСТА ОТЧЁТА

ПО ЛАБОРАТОРНОЙ РАБОТЕ

ПРИЛОЖЕНИЕ Б

ГОСТ 19.701–90 Е.С.П.Д. СХЕМЫ АЛГОРИТМОВ, ПРОГРАММ, ДАННЫХ И

СИСТЕМ. УСЛОВНЫЕ ОБОЗНАЧЕНИЯ

И ПРАВИЛА ВЫПОЛНЕНИЯ

(ВЫПИСКИ)

ПРИЛОЖЕНИЕ В

ШАБЛОН ТИТУЛЬНОГО ЛИСТА

ПОЯСНИТЕЛЬНОЙ ЗАПИСКИ К КУРСОВОЙ РАБОТЕ

ВВЕДЕНИЕ

Данное учебно-методическое пособие предназначено для выполнения лабораторных работ по дисциплине «Информатика» для студентов ИДО, обучающихся по классической форме обучения (КЗФ) и с использованием дистанционных образовательных технологий (ДОТ) направления 220700 «Автоматизация технологических процессов и производств». В данном пособии представлены также материалы, необходимые при выполнении курсовой работы по дисциплине «Информатика».

В этом пособии на примерах рассматриваются различные алгоритмы, методы и примеры написания программ, структуры данных, типичные ошибки, которые совершают начинающие программисты, обсуждаются вопросы качества и стиля. Большое внимание уделяется процессу отладки и тестирования. Весь материал разбит на разделы, в первом из которых кратко описаны основы языка C++, два последующих совпадают по тематике и по содержанию темам лабораторных работ, которые должны выполнить студенты КЗФ и ДОТ при изучении «Информатики». Последний раздел соответствует задаче, которую необходимо выполнить в курсовой работе.

Пособие предназначено для изучения языка C++, но может быть использован и для освоения C, так как по каждой теме, там, где это имеет смысл, приводятся два варианта написания программы – в стиле C++ и в стиле C.

В пособии синтаксис языка C++ изложен в соответствии со стандартом ISO/IEC 14882 (1998). В настоящее время существует множество компиляторов C++, которые поддерживают данный стандарт в разной степени.

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

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

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

Данное пособие не рассчитано на обучение работе в конкретной среде.

Однако, здесь имеются все достаточные сведения по написанию программ в таких средах программирования на языке C++, как Visual C++ Studio или Borland C++. Краткие указания по программированию в данных средах предложены в [4].

1. ЯЗЫК ПРОГРАММИРОВАНИЯ C++

Язык программирования C++ – компилируемый строго типизированный язык программирования общего назначения. Поддерживает разные парадигмы программирования: процедурную, обобщённую, функциональную; наибольшее внимание уделено поддержке объектно-ориентированного программирования. В 1990-х годах язык стал одним из наиболее широко применяемых языков программирования общего назначения.

При создании C++ стремились сохранить совместимость с языком C. Большинство программ на C будут исправно работать и с компилятором C++. Язык C++ имеет синтаксис, основанный на синтаксисе C.

Язык возник в начале 1980-х годов, когда сотрудник фирмы «Bell Laboratories» Бьёрн Страуструп придумал ряд усовершенствований к языку C под собственные нужды. До начала официальной стандартизации язык развивался в основном силами Страуструпа в ответ на запросы программистского сообщества. В 1998 году был ратифицирован международный стандарт языка C++: ISO/IEC 14882:1998 «Standard for the C+ + Programming Language»; после принятия технических исправлений к стандарту в 2003 году нынешняя версия этого стандарта – ISO/IEC 14882:2003.[1] Название «C++» происходит от C, в котором оператор «++»

обозначает приращение.

1.1. Нововведения C++ в сравнении с C

Основными дополнениями языка программирования C++ по сравнению с языком C являются:

1) поддержка объектно-ориентированного программирования;

2) поддержка обобщённого программирования через шаблоны; дополнительные типы данных;

3) исключения; пространства имён;

4) встраиваемые функции;

перегрузка операторов;

5)

6) перегрузка имён функций; ссылки и операторы управления свободно распределяемой памятью;

7) дополнения к стандартной библиотеке.

1.2. Дизайн C++ В книге [1] Бьёрн Страуструп описывает некоторые правила, которые он использовал при проектировании C++. Знание этих правил может помочь понять, почему C++ такой, каким он стал. Вот некоторые из этих правил [1]:

1. Язык C++ разработан как универсальный язык со статическими типами данных, эффективностью и переносимостью языка C;

2. Язык C++разработан так, чтобы непосредственно и всесторонне поддерживать множество стилей программирования (процедурное программирование, абстракцию данных, объектно-ориентированное программирование и обобщённое программирование).

3. Язык C++ разработан так, чтобы давать программисту свободу выбора, даже если это даёт ему возможность выбирать неправильно.

4. Язык C++ разработан так, чтобы максимально сохранить совместимость с языком программирования C, тем самым делая возможным лёгкий переход от программирования на C.

5. Язык C++ избегает таких особенностей, которые зависят от платформы или не являются универсальными.

6. Язык C++ не накладывает никакой избыточной нагрузки на программу, не использующую какие-либо возможности.

7. Язык C++разработан так, чтобы не требовать слишком усложнённой среды программирования.

1.3. Технический обзор В 1998 году язык C++ был стандартизован Международной организацией стандартизации под номером 14882:1998 – Язык Программирования C++. В настоящее время рабочая группа МОС работает над новой версией стандарта под кодовым названием C++ 09 (ранее известный как C++0X), который должен выйти в 2009 году.

Стандарт C++ на 1998 год состоит из двух основных частей: ядра языка и стандартной библиотеки.

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

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

Кроме того, существует огромное количество библиотек C++, не входящих в стандарт. В программах на C++ можно использовать многие библиотеки C.

Стандартизация определила язык программирования C++, однако за этим названием могут скрываться также неполные, ограниченные достандартные варианты языка. В первое время язык развивался вне формальных рамок, спонтанно, по мере ставившихся перед ним задач. Развитию языка сопутствовало развитие кросс-компилятора Cfront. Новшества в языке отражались в изменении номера версии кросс-компилятора. Эти номера версий кросс-компилятора распространялись и на сам язык, но применительно к настоящему времени речь о версиях языка C++ не ведут.[2]

–  –  –

Цель работы. Изучение стандартной библиотеки функций языка C++, приобретение навыков ввода и вывода информации, а так же выполнение простейших операций на языке C++.

–  –  –

Отчет по лабораторной работе должен быть написан шрифтом Times New Roman, 14, интервал между строк – полуторный, абзац 1 см.

Отчёта должен иметь следующие пункты:

1. Титульный лист.

2. Цель работы.

3. Формулировка задания.

4. Код программы.

5. Блок-схема.

6. Результаты работы программы.

7. Выводы по работе.

Шаблон титульного листа для отчёта по лабораторной работе представлен в Приложении А.

При выполнении алгоритма программы в виде блок-схемы необходимо придерживаться действующим межгосударственным стандартом «Единая система программной документации», ГОСТ 19.701–90, приведённым в Приложении Б.

В пункте «Результаты работы программы» отображаются окна следующего вида:

2.1.1. Алфавит C++

Алфавит C++ включает:

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

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

• специальные знаки: {, %, # и т.д.;

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

Более подробная информация о составе языка программирования C++ представлена в [3].

2.1.2. Этапы создания исполняемой программы Схема подготовки исполняемого кода программы (exe-файла) представлены на рис. 1.

–  –  –

2.1.3. Типы данных C++ 2.1.3.1. Концепция типа данных Основная цель любой программы состоит в обработке данных. Данные различного типа хранятся и обрабатываются по-разному. В любом алгоритмическом языке каждая константа, переменная, результат вычисления выражения или функции должны иметь определенный тип.

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

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

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

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

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

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

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

2.1.3.2. Простые типы данных Простые типы делятся на целочисленные типы и типы с плавающей точкой. Для описания стандартных типов определены следующие ключевые слова:

• int (целый);

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

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

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

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

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

Существует четыре спецификатора типа, уточняющих внутреннее представление и диапазон значений стандартных типов:

• short (короткий);

• long (длинный);

• signed (со знаком);

• unsigned (без знака).

Каждый представленный тип подробно рассматривается в [3]. Для выполнения лабораторной работы необходимо иметь информацию об интервалах значений простых типов языка C++, представленных в табл. 2.

–  –  –

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

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

тип_возвращаемого_значения имя ( [ параметры ] ) {операторы, составляющие тело функции} Как правило, функция используется для вычисления какого-либо значения, поэтому перед именем функции указывается его тип. О функциях рассказывается в разделе «Функции». В данном пункте приведены лишь самые необходимые сведения:

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

• Тело функции заключается в фигурные скобки.

• Функции не могут быть вложенными.

• Каждый оператор заканчивается точкой с запятой (кроме составного оператора).

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

Пример структуры программы, содержащей функции main, f1 и f2 [4]:

директивы препроцессора описания void main() { операторы главной функции } int f1() { операторы функции f1 } int f2() { операторы функции f2 } 2.1.5. Директивы препроцессора С увеличением объема программы становится неудобно хранить ее в одном файле. Разбиение программы на функции является первым шагом в повышении уровня абстракции программы, следующий – группировка функций и связанных с ними данных в отдельные файлы (модули), компилируемые раздельно.

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

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

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

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

2.1.5.1. Директива #include Директива #include имя_файла вставляет содержимое указанного файла в ту точку исходного файла, где она записана. Включаемый файл также может содержать директивы #include.

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

Директива #include является простейшим средством обеспечения согласованности объявлений в различных файлах, включая в них информацию об интерфейсе из заголовочных файлов.

Заголовочные файлы обычно имеют расширение.h и могут содержать:

• определения типов, констант, встроенных функций, шаблонов, перечислений;

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

• пространства имен;

• директивы препроцессора;

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

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

При указании заголовочных файлов стандартной библиотеки расширение.h можно опускать. Для каждого файла библиотеки С с именем name.h имеется соответствующий файл библиотеки С++ cname.

2.1.5.2. Директива #define Директива #define определяет подстановку в тексте программы.

Она используется для определения:

• символических констант. Формат определения символической константы:

#define имя текст_подстановки /* Все вхождения имени заменяются на текст подстановки */

• макросов, которые выглядят как функции, но реализуются подстановкой их текста в текст программы. Формат определения макроса [4]:

#define имя( параметры ) текст_подстановки

• символов, управляющих условной компиляцией. Они используются вместе с директивами #ifdef и #ifndef.

Формат: #define имя Пример. 1 #define M 1000 #define Vasia “Василий Иванович” #define MAX(a,b) ((x)(y)?(x):(y)) #define __cplusplus Параметры используются при макроподстановке, например, если в тексте программы используется вызов макроса y=MAX(sum1, sum2);, он будет заменен на y=((sum1)(sum2)?(sum1):(sum2));

Использования макросов и символических констант в программах следует избегать.

Далее в рамках изучения курса «Информатика» с целью упрощения понимания программ будут приводиться примеры лишь такой директивой препроцессора, как #include.

2.1.6. Предварительные замечания о функциях ввода/вывода В языке нет встроенных средств ввода/вывода. Он осуществляется с помощью подпрограмм, типов и объектов, содержащихся в стандартных библиотеках ANSI C stdio.h и C++ iostream.h.

Основные функции ввода/вывода в стиле языка C:

int scanf (const char* format...)// ввод int printf(const char* format...)// вывод Они выполняют форматированный ввод и вывод произвольного количества величин в соответствии со строкой формата format. Строка формата содержит символы, которые при выводе копируются в поток (на экран) или запрашиваются из потока (с клавиатуры) при вводе, и спецификации преобразования, начинающиеся со знака %, которые при вводе и выводе заменяются конкретными величинами. Типы спецификаторов представлены в табл. 3.

Таблица 3 Спецификаторы формата для функции printf()

–  –  –

В спецификаторе формата, после символа % может быть указана точность (число цифр после запятой). Точность задаётся следующим образом: %.nкод формата. Где n – число цифр после запятой, а код формата – один из кодов приведённых выше.

Например, если имеется переменная x=10.3563 типа float и необходимо вывести её значение с точностью до 3-х цифр после запятой, то надо написать:

printf(«Переменная x = %.3f»,x);

В результате получится:

Переменная x = 10.356 Можете также указать минимальную ширину поля отводимого для печати. Если строка или число больше указанной ширины поля, то строка или число печатается полностью.

Например, если написано:

printf("%5d",20);

то результат будет следующим:

Следует обратить внимание на то, что число 20 напечаталось не с самого начала строки.

Если вы надо, чтобы неиспользованные места поля заполнялись нулями, то нужно поставить перед шириной поля символ 0:

printf("%05d",20);

Результат:

Кроме спецификаторов формата данных в управляющей строке могут находиться управляющие символы (табл. 5).

Таблица 5 Управляющие символы \f Новая страница, перевод страницы \n Новая строка, перевод строки \r Возврат каретки \t Горизонтальная табуляция \v Вертикальная табуляция \" Двойная кавычка \' Апостроф \\ Обратная косая черта \0 Нулевой символ, нулевой байт \a Сигнал \N Восьмеричная константа \xN Шестнадцатеричная константа \? Знак вопроса Чаще всего используется символ \n. С помощью этого управляющего символа можно переходить на новую строку.

Пример 2 #include stdio.h int main( { int i;

printf("Введите целое число\n");

scanf("%d", &i);

printf("Вы ввели число %d, спасибо!", i);

} Первая строка программы, приведённой в примере 1, – директива препроцессора, по которой в текст программы вставляется заголовочный файл stdio.h, содержащий описание использованных в программе функций ввода/вывод. Все директивы препроцессора начинаются со знака #.

Третья строка – описание переменной целого типа с именем i.

Функция printf в четвертой строке выводит приглашение «Введите целое число» и переходит на новую строку в соответствии с управляющей последовательностью \n. Функция scanf заносит введенное с клавиатуры целое число в переменную i, а следующий оператор выводит на экран указанную в нем строку, заменив спецификацию преобразования на значение этого числа. Ввод/вывод в стиле языка C рассмотрен в разделе «Функции ввода/вывода».

Пример 3. Вывести на экран:

a=5, b=6, c=9

–  –  –

В примере 3 отражены основные особенности структуры программ на C++, а так же синтаксис и структура. Первые две строки отражают директивы препроцессора, в заголовочных файлах которого подключаются библиотеки. Далее показано объявление основной функции main и её тело, заключённое в фигурные скобки. Тип результата данной функции безличный, обозначенный зарезервированным словом void и пустой список аргументов, обозначенный пустыми круглыми скобками после названия функции: «()». Следует отметить, что главная функция в C++ всегда носит название main. После открытой фигурной скобки расположено объявление переменных. При этом сначала записан тип переменных (int), а далее через запятую перечислены все переменные, относящиеся к данному типу. Запись оператора завершается символом «;», который считается составной частью оператора. Для вывода результата на экран используется функция printf. При этом записан спецификатор %d для вывода на экран целого десятичного числа. Функция getch используется для того, чтобы результат работы программы оставался на экране до нажатия любой клавиши. Программа завершается знаком «}».

Как выглядит программа, представленная в примере 2, с использованием библиотеки классов C++ iostream.hимеет вид, показанный в примере 4.

Пример 4 #include iostream.h int main() { int i;

cout "Введите целое число\n";

cin i;

cout "Вы ввели число i ", спасибо!";

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

Операнды задают данные для вычислений.

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

Каждый операнд является, в свою очередь, выражением или одним из его частных случаев, например, константой или переменной. Операции выполняются в соответствии с приоритетами. Для изменения порядка выполнения операций используются круглые скобки [2].

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

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

Переменная может быть объявлена многократно, но определена только в одном месте программы.

Для определения переменных применяется оператор описания следующего формата [4]:

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

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

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

Инициализатор можно записывать в двух формах – со знаком равенства или в круглых скобках:

= значение (значение) Пример 5. Описания переменных short int a = 1;

char s, symbol = 'f'; /* инициализация относится только к symbol */ char t = 54;

float c = 0.22, x, sum;

const char C = 'C';

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

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

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

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

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

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

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

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

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

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

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

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

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

Пример 6. Описания переменных с применением спецификаторов int a;//1 глобальная переменная a main() { int b;//2 локальная переменная b extern int x;//3 переменная х определена позже static int c;//4 локальная статическая //переменная c a = 1;//5 присваивание глобальной переменной int a;//6 локальная переменная a a = 2;//7 присваивание локальной переменной ::a = 3;//8 присваивание глобальной //переменной } int x = 4;//9 определение и инициализация x Если при определении начальное значение переменным явным образом не задается, компилятор присваивает глобальным и статическим переменным нулевое значение соответствующего типа.

Автоматические переменные не инициализируются.

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

2.1.7.2. Операции В табл. 6 приведено большинство операций, определенных в языке C++, в соответствии с их приоритетами (по убыванию приоритетов, операции с разными приоритетами разделены чертой) [4].

–  –  –

Операции увеличения и уменьшения на 1 (++ и --). Эти операции, называемые также инкрементом и декрементом, имеют две формы записи – префиксную, когда операция записывается перед операндом, и постфиксную. В префиксной форме сначала изменяется операнд, а затем его значение становится результирующим значением выражения, а в постфиксной форме значением выражения является исходное значение операнда, после чего он изменяется.

Операндом операции инкремента в общем случае является так называемое L-значение (L-value). Так обозначается любое выражение, адресующее некоторый участок памяти, в который можно занести значение. Переменная является частным случаем L-значения.

Операции отрицания (–, ! и ~). Арифметическое отрицание (унарный минус –) изменяет знак операнда целого или вещественного типа на противоположный.

Логическое отрицание (!) дает в результате значение 0, если операнд есть истина (не нуль), и значение 1, если операнд равен нулю. Операнд должен быть целого или вещественного типа или типа указатель.

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

Деление (/) и остаток от деления (%). Операция деления применима к операндам арифметического типа. Если оба операнда целочисленные, результат операции округляется до целого числа, в противном случае тип результата определяется правилами преобразования.

Операция остатка от деления применяется только к целочисленным операндам. Знак результата зависит от реализации.

Операции отношения (, =,, =, = =, != ) сравнивают первый операнд со вторым. Операнды могут быть арифметического типа или указателями. Результатом операции является значение true или false.

Операции сравнения на равенство и неравенство имеют меньший приоритет, чем остальные операции сравнения.

Поразрядные операции (&, |, ^) применяются только к целочисленным операндам и работают с их двоичными представлениями. При выполнении операций операнды сопоставляются побитово (первый бит первого операнда с первым битом второго, второй бит первого операнда со вторым битом второго, и т.д.).

Логические операции (&& и ||). Операнды логических операций И (&&) и ИЛИ (||) могут иметь арифметический тип или быть указателями, при этом операнды в каждой операции могут быть различных типов.

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

Логические операции выполняются слева направо.

Операции присваивания (=, +=, -=, *= и т.д.). Операции присваивания могут использоваться в программе как законченные операторы.

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

Формат операции простого присваивания (=):

операнд_1 = операнд_2 Первый операнд должен быть L-значением, второй – выражением.

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

В сложных операциях присваивания ( +=, *=, /= и т.п.) при вычислении выражения, стоящего в правой части, используется и L-значение из левой части, например, при сложении с присваиванием ко второму операнду прибавляется первый, и результат записывается в первый операнд.

Приоритеты операций представлены в табл. 7.

Таблица 7 Приоритеты операций Ранг Операции 1 ( ) [ ] -.

2 ! ~ – ++ -- & * (тип) sizeof тип ( ) 3 * / % (мультипликативные бинарные) 4 + – (аддитивные бинарные) 5 = = (отношения) Окончание таблицы 7 Ранг Операции 6 == != (отношения) 7 && (конъюнкция «И») 8 || (дизъюнкция «ИЛИ») 9 ?: (условная операция) Условная операция (?:). Эта операция тернарная, то есть имеет три операнда. Ее формат:

операнд_1?операнд_2:операнд_3 Первый операнд может иметь арифметический тип или быть указателем. Он оценивается с точки зрения его эквивалентности нулю.

Если результат вычисления операнда 1 равен true, то результатом условной операции будет значение второго операнда, иначе – третьего операнда.

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

Пример 7. Выражения (a + 0.

12)/6 x && y || !z (t * sin(x)-1.05e4)/((2 * k + 2) * (2 * k + 3)) Операции выполняются в соответствии с приоритетами. Для изменения порядка выполнения операций используются круглые скобки.

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

Порядок вычисления подвыражений внутри выражений не определен.

Результат вычисления выражения характеризуется значением и типом.

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

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

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

Ниже представлено краткое описание перечисленных функций. Их применение показано в разделе «Примеры программ для лабораторной работы №1» [5].

2.1.8.1. Математические функции

Функция acos

Прототип:

double acos(double x);

Заголовочный файл:

math.h (сmath) Описание: возвращает значение арккосинуса x (arccos x) в радианах и является функцией. обратной функции косинус. Параметр х может изменяться от –1 до 1. В примере 7 вычисляется значение арккосинуса 0.

Пример 8.

#include math.h #include iostream.h //… cout "acos(0)=" acos(0) '\n';

–  –  –

Функция atan

Прототип:

double atan(double x);

Заголовочный файл:

math.h (cmath) Описание: возвращает значение арктангенса x (arctg x) в радианах и является функцией и является функцией.

Функция atan2

Прототип:

double atan2(double у, double x);

Заголовочный файл:

math.h (cmath) Описание: возвращает значение арктангенса отношения параметров у/х (arctg (у/х)) в радианах и является функцией.

Функция ceil

Прототип:

double ceil(double x);

Заголовочный файл:

math.h (cmath) Описание: округляет вещественное значение x до ближайшего большего целого и возвращает его как вещественное.

–  –  –

Функция ldexp

Прототип:

double ldexp(double x, int exp);

Заголовочный файл:

math.h (cmath) Описание: получает мантиссу и показатель степени и возвращает число, равное произведению мантиссы на 2 в степени показатель степени.

Функция log

Прототип:

double log(double x);

Заголовочный файл:

math.h (cmath) Описание: возвращает значение натурального логарифма х (ln x, логарифм по основанию числа «е») и является обратной к функции exp.

–  –  –

Прототип:

double modf(double x, double *intptr);

Заголовочный файл:

math.h (cmath) Описание: разбивает х на целую и дробную части.

–  –  –

Функция sinh

Прототип:

double sinh(double x);

Заголовочный файл:

math.h (cmath) Описание: возвращает значение гиперболического синуса х, который является углом, заданным в радианах.

–  –  –

Функция tan

Прототип:

double tan(double x);

Заголовочный файл:

math.h (cmath) Описание: возвращает значение тангенса х (tg x), где х задается в радианах, и возвращает отношение двух сторон треугольника.

–  –  –

Функция signal

Прототип:

void (*signal(int signum,void(*func)(int))) (int);

Заголовочный файл:

signal.h (csignal) Описание: регистрирует обработчик сигналов.

2.1.8.3. Функции ввода-вывода в стиле C

–  –  –

Функция gets

Прототип:

char *gets(char *str);

Заголовочный файл:

stdio.h (cstdio) Описание: считывает строку до появления символа новой строки и помещает считанную строку по адресу, заданному указателем str.

Функция perror

Прототип:

void perror(const char *string);

Заголовочный файл:

stdio.h (cstdio) Описание: выводит сообщение об ошибке вида: «строка: сообщение», в котором «строка» определяется параметром string, a «сообщение» – кодом ошибки (код ошибки берется из глобальной переменной errno).

–  –  –

Описание: выводит на стандартное устройство вывода значения переменных, перечисленных в списке, обозначенном многоточием (...), в формате, определенном строкой format.

Функция putc

Прототип:

int putc(int ch, FILE *stream);

Заголовочный файл:

stdio.h (cstdio) Описание: выводит символ, размещенный в младшем байте аргумента ch, в поток указанного файла.

Функция putchar

Прототип:

int putchar(int ch);

Заголовочный файл:

stdio.h (cstdio) Описание: выводит символ, размещенный в младшем байте аргумента ch, в стандартный поток вывода.

–  –  –

Функция remove

Прототип:

int remove(const char *filename);

Заголовочный файл:

stdio.h (cstdio) Описание: удаляет существующий файл. В случае успеха возвращает нулевое значение, иначе – ненулевое.

Функция rename

Прототип:

int rename(const char *oldname, const char *newname);

Заголовочный файл:

stdio.h (cstdio) Описание: переименовывает существующий файл или папку.

–  –  –

Функция sprintf

Прототип:

int sprintf(char *buffer, const char * format,...);

Заголовочный файл:

stdio.h (cstdio) Описание: аналогично функции printf выводит отформатированные данные, но не на консоль, а в текстовую строку (которую впоследствии можно использовать для вывода на консоль).

Функция sscanf

Прототип:

int sscanf(const char *buf, const char * format,...);

Заголовочный файл:

stdio.h (cstdio) Описание: аналогично функции вводит данные, но не с клавиатуры, а из строки символов, переданной ей первым параметром.

Функция tmpfile

Прототип:

FILE *tmpfile(void);

Заголовочный файл:

stdio.h (cstdio) Описание: открывает временный файл в режиме двоичного ввода/ вывода.

2.1.8.4. Функция работы с датой и временем Для работы со временем и датой используется функция strftime.

Прототип:

size_t *strftime(char *str, size_t max_size,const char *fmt, const struct tm *time);

Заголовочный файл:

time.h (ctime) Описание: формирует строку str, содержащую дату и время в соответствии со строкой формата fmt.

2.1.8.5. Функции локализации Функциями локализации служат такие функции как localeconv и setlocale.

Функция localeconv

Прототип:

struct Iconv *localeconv(void);

Заголовочный файл:

locale.h (clocale) Описание: возвращает структуру, которая содержит детальное описание текущих установок локальной среды, то есть информацию, зависящую от страны.

Функция setlocale

Прототип:

char *setlocale(int type, const char *locale);

Заголовочный файл:

locale.h (clocale) Описание: устанавливает новую локализацию программы, которая подразумевает набор символов, форматы представления чисел, денежных единиц и т. п., для конкретной страны/ местности.

2.1.8.6. Функции классификации и преобразования символов В языке программирования C++ существует две функции классификации и преобразования символов: tolower и toupper.

Функция tolower

Прототип:

int tolower(int ch);

Заголовочный файл:

ctype.h (cctype) Описание: получает параметр ch и возвращает его в нижнем регистре (если он является символом буквы верхнего регистра) или сам символ.

Функция toupper

Прототип:

int toupper(int ch);

Заголовочный файл:

ctype.h (cctype) Описание: получает параметр ch и возвращает его в верхнем регистре (если он является символом буквы нижнего регистра) или сам символ.

2.1.8.7. Функции управления программой Основными функциями управления программой являются функции longjmp и setjmp.

–  –  –

Описание: выполняет переход по адресу envbuf, ранее определенному с помощью функции setjmp.

Функция setjmp

Прототип:

int setjmp(jmp_buf envbuf);

Заголовочный файл:

setjmp.h (csetjmp) Описание: наряду с функцией longjmp предоставляет возможность перехода между функциями.

2.1.8.8. Различные функции в стиле C

–  –  –

Функция atexit

Прототип:

void atexit(void (*func)(void));

Заголовочный файл:

stdlib.h (cstdlib) Описание: регистрирует функцию func, которая будет вызываться при завершении программы.

Функция atof

Прототип:

double atof(const char *str);

Заголовочный файл:

stdlib.h (cstdlib) Описание: преобразует строку, отображающую в виде символов в целое или вещественное число, в соответствующее вещественное число.

Функция atoi

Прототип:

int atoi(const char *str);

Заголовочный файл:

stdlib.h (cstdlib) Описание: преобразует строку, отображающую в виде символов целое число, в соответствующее целое число.

Функция atol

Прототип:

long atol(const char *str);

Заголовочный файл:

stdlib.h (cstdlib) Описание: преобразует строку, отображающую в виде символов целое число, в соответствующее длинное целое значение.

Функция bsearch

Прототип:

void bsearch(const void *key, const void *buf, size_t num, size_t size, int (*compare)(const void *, const void *) );

Заголовочный файл:

stdlib.h (cstdlib) Описание: производит поиск в массиве buf элемента, совпадающего с тем, на который указывает key, и возвращает указатель на найденный элемент. num – количество элементов в массиве buf, size – размер элемента массива в байтах.

Функция calloc

Прототип:

void *calloc(size_t num, size_t size);

Заголовочный файл:

stdlib.h (cstdlib) Описание: выделяет блок памяти (num элементов по size байт) и возвращает указатель на него.

Функция div

Прототип:

div_t div(int numerator, int denominator);

Заголовочный файл:

stdlib.h (stdlib) Описание: функция div производит деление целого numerator на целое denominator, возвращая результат в структуре, содержащей частное и остаток.

–  –  –

Функция free

Прототип:

void free(void *pointer);

Заголовочный файл:

stdtib.h (cstdlib) Описание: освобождает блок памяти, полученный ранее одной из функций malloc, calloc, realloc. malloc, calloc или realloc.

Функция getenv

Прототип:

int getenv(const char *var_name);

Заголовочный файл:

stdlib.h (cstdlib) Описание: возвращает указатель на строку, которая содержит описание указанной переменной окружения (среды).

–  –  –

Функция ldiv

Прототип:

ldiv_t ldiv(long numerator, long denominator);

Заголовочный файл:

stdlib.h (cstdlib) Описание: выполняет деление numerator на denominator, возвращая результат в структуре типа ldiv_t, содержащей частное и остаток. результат в структуре типа ldiv_t, содержащей частное и остаток.

–  –  –

Функция qsort

Прототип:

void qsort(void *buf,size_t num,size_t size, int (compare)(const void *, const void *));

Заголовочный файл:

stdlib.h (cstdlib) Описание: выполняет сортировку массивов любых размеров и типов.

–  –  –

Функция realloc

Прототип:

void *realloc(void *memblock, size_t size);

Заголовочный файл:

stdlib.h (cstdlib) Описание: получает блок памяти (выделенный ранее одной из функций malloc, calloc, realloc). malloc, calloc или realloc).

Функция srand

Прототип:

vid srand(unsigned i.nt seed);

Заголовочный файл:

stdlib.h (cstdlib) Описание: устанавливает начальное значение последовательности псевдослучайных чисел.

Функция strtod

Прототип:

double strtod(const char *str, char **end);

Заголовочный файл:

stdlib.h (cstdlib) Описание: преобразует строку символов в числовое значение и возвращает его.

Функция strtol

Прототип:

double strtol(const char *str, char **end, int radix);

Заголовочный файл:

stdlib.h (cstdlib) Описание: преобразует строку символов в числовое значение с учетом указанной системы счисления radix и возвращает полученное число.

Функция strtoul

Прототип:

double strtoul(const char *str, char **end, int radix);

Заголовочный файл:

stdlib.h (cstdlib) Описание: преобразует строку символов в числовое значение с учетом системы счисления.

Функция system

Прототип:

int system(const char *command);

Заголовочный файл:

stdlib.h (cstdlib) Описание: передает строку командному процессору операционной системы.

–  –  –

Пример 10. Вывести на экран число 11 в десятичной и шестнадцатеричной системе исчисления.

Код программы:

/* Example 10 */ #include stdio.h #include conio.h void main() { int a;

a=11; // 11 в десятичной равно b в шестнадцатеричной printf("a-dec=%d, a-hex=%X",a,a);

getch();

}

–  –  –

Пример 13. Составить программу, которая выводит на экран запрос «How old are you?:» и ждёт ввода данных.

Далее выводится на экран следующий текст: «You are 20 age old.», если, например, введено число 20.

Код программы:

/* Example 13 */ #include stdio.h #include conio.h void main() { int age;

printf("\How old are you?:");

scanf("%d",&age);

printf("You are %d age old.", age);

getch();

} В данном примере при вызове функции scanf(), перед переменной age стоит знак &, так как функции scanf() нужны адреса переменных.

Функция scanf() запишет введённое значение по указанному адресу.

В нашем случае введённое значение 20 будет записано по адресу переменной age.

Пример 14. Составить программe-калькулятор, который может только складывать числа.

При вводе 100+34 программа выдаст результат: 100+34=134.

Код программы:

/* Example 14 */ #include stdio.h #include conio.h void main(void) { int x, y;

printf("\nAdding calculator of :");

scanf("%d+%d", &x, &y);

printf("\n%d+%d=%d", x, y, x+y);

getch();

} Пример 15 /* Example 15 */ #include stdio.h #include conio.h void main(void) { char name[5];

printf("\nEnter your code (no more that 5 symbol):");

scanf("%5s", name);

printf("\nYou enter %s", name);

getch();

} Данный пример показывает как установить ширину поля считывания. В этом примере ширина поля равна пяти символам. Если вы введёте строку с большим количеством символов, то все символы после 5-го будут отброшены. Обратите внимание на вызов функции scanf().

Знак & не стоит перед именем массива name так как имя массива name является адресом первого элемента массива.

Пример 16 /* Example 16 */ #include stdio.h #include conio.h void main(void) { char bal;

printf("Your mark 2,3,4,5:");

scanf("%[2345]", &bal);

printf("\nThe mark is %c", bal);

getch();

} Представленный пример показывает, как можно использовать множество поиска. После запуска программы введите число от 2 до 5.

–  –  –

// Проверка условия с помощью тернарной операции:

n++m++?cout"\n n++m++: it is true ":cout"\n n++m++:it is false ";

getch();

} Пример 19. Составить программу, которая вычисляет значение выражения f=cos(|x2|).

Код программы:

/*Example 19*/ #include conio.h #include math.h #include iostream.h void main() { double x,f; // объявление переменных cout"\n x=";

cinx; // ввод переменной x cout"\n-----------------------";

f=cos(abs(pow(x,2))); // расчёт функции f cout"\n f= "f; // вывод результата getch();

} Пример 20. Составить программу, в которой инициируются две переменные, к которым применяются операции &, |, ^. Результаты вычислений выводятся на экран.

/* Example 20 – инициируются две переменные и выводятся результаты выполнения операторов ~, &, | и ^ */ #include math.h #include iostream.h #include conio.h int main(int nArg1) { // Установка вывода в шестнадцатеричном виде cout.setf (ios::hex, ios::hex);// инициализация двух аргументов int nArgl;

int nArg2;

cout”Vvedite nArg1: “;

cinnArg1;

cout”Vvedite nArg2: “;

cinnArg2;

// Выполнение логических операций // Унарный оператор NOT cout”Arg1 = 0x”nArg1”\n”;

cout”Arg2 = 0x”nArg2”\n”;

cout”~nArg1 = 0x”~nArg1”\n”;

cout”~nArg1 = 0x”~nArg2”\n”;

// Выполнение бинарных операторов cout”nArg1&nArg2 = 0x”( nArg1&nArg2) ”\n”;

cout”nArg1|nArg2 = 0x”( nArg1|nArg2) ”\n”;

cout”nArg1^nArg2 = 0x”( nArg1^nArg2) ”\n”;

getch();

} Первая инструкция представленной программы (та, которая следует за ключевым словом main) – cout. setf (ios::hex); – меняет используемый по умолчанию десятичный формат вывода на шестнадцатеричный.

Далее, присвоив значения аргументам nArgl, nArg2, она выводит все варианты побитовых вычислений над этими переменными.

Пример 21. Составить программу, которая по введенным координатам определяет, входит ли точка в область, ограниченную условиями:

0x5, 0y4.

Код программы:

#include iostream.h #include conio.h int main() { int X,Y; bool h; // объявление переменных cout"BBEDITE X=";

cinX; // ввод координаты X cout"BBEDITE Y=";

cinY; // ввод координаты Y // Расчёт логической переменной:

h=((X=5)&&(Y=4)&&(X=0)&&(Y=0));

couth; // вывод результата getch();

}

2.3. Вопросы для самоконтроля

1. Из каких частей состоит программа на С++?

2. Чем определение отличается от объявления?

3. Перечислить этапы создания исполняемой программы на языке С++.

4. Что такое препроцессор?

5. Что такое директива препроцессора?

6. Привести примеры директив препроцессора.

7. Из каких элементов состоит естественный язык? Что является аналогами этих элементов в С++?

8. Что такое лексема? Привести примеры лексем в языке С++.

9. Что такое идентификатор? Правила записи идентификаторов.

10.Что такое константа? Как константа обрабатывается компилятором?

11.Какие типы констант существуют в С++. Привести примеры констант разных типов.

12. К какому типу относятся константы 192345, 0х56, 0хСВ, 016, 0.7865,.0045, ‘c’, “x”, one, “one”, 5, 5.?

13.Что такое тип данных?

14. Чем отличаются типы данных: float и double, char и wchar_t, int и short int?

15. Чем отличаются типы данных int и unsigned int?

16. Перечислить все типы данных, которые существуют в C++.

Сколько места в памяти занимают данные каждого типа?

17.На что влияет количество памяти, выделяемое для данных определенного типа?

18.Что такое переменная? Чем объявление переменой отличается от ее определения? Привести примеры определений и объявлений.

19.Что такое класс памяти? Какие классы памяти существуют в С++?

Привести примеры объявлений и определений переменных разных классов памяти.

20.Что такое выражение? Из чего состоит выражение?

21.Что такое операнд?

22.Какие операции можно применять к целочисленным данным? К вещественным данным? К символьным данным?

23.Что такое отношение?

24.В каком случае отношение считается ложным, а в каком – истинным?

25.Какие операции называются унарными? Привести примеры.

26.Какие операции называются бинарными? Привести примеры.

27.Что такое тернарная операция? Привести пример.

28.Какая разница между постфиксной и префиксной операцией инкремента (декремента)?

29.Какие операции присваивания существуют в С++?

30.Привести примеры выражений, содержащих операции присваивания, операции инкремента (декремента), аддитивные и мультипликативные операции. Пояснить, как они будут выполняться.

31. Что будет выведено функцией printf("\nСреднее арифметическое последовательности чисел равно: %10.5f \nКоличество четных элементов последовательности равно%10.5d ",S/n,k);

2.4. Варианты заданий к лабораторной работе № 1 Вариант 1

1. Введите обозначения и объявите переменные x, y, z и s. Запишите инструкции, которые присваивают переменной "x" значение -25.6, переменной "y" значение 128, а значение переменной "z" вводится с клавиатуры. Вычислите сумму значений трех величин по формуле: s=x+y+z.

Выведите результат на экран в виде:

x=-25.6 y=128 You enter z=1 Summa: s=103.4

2. Определить тип заданных выражений и найти их значения. Составить систему тестов и вычислить полученное выражение для нескольких значений n и m, определить при каких n и m выражение не может быть вычислено. При выполнении заданий на сравнения, использовать тернарную операцию.

а) k=n+(++m);

б) m--n;

3. Записать выражение, зависящее от координат точки X и Y и принимающее значение TRUE (t или 1), если точка принадлежит выделенной области (рис. 2), и FALSE (f или 0), если не принадлежит. Результаты вычислений вывести на печать. При выполнении задания использовать переменную логического типа, а не условный оператор.

y x Рис. 2. Область для решения логической задачи варианта 1 Вариант 2

1. Введите обозначения и объявите переменные x, y, z и S. Запишите инструкции, которые присваивают переменным "x", "y" и "z" значения, вводимые c клавиатуры. Вычислите квадрат суммы трех введённых вещественных чисел x, y, z. Выведите результат на экран в виде:

x=1 y=1 z=1

Answer:

S=9 *******************

2. Определить тип заданных выражений и найти их значения. Составить систему тестов и вычислить полученное выражение для нескольких значений n и m, определить при каких n и m выражение не может быть вычислено. При выполнении заданий на сравнения, использовать тернарную операцию.

а) k=--n-m++;

б) m++--n;

3. Записать выражение, зависящее от координат точки X и Y и принимающее значение TRUE (t или 1), если точка принадлежит выделенной области (рис. 3), и FALSE (f или 0), если не принадлежит. Результаты вычислений вывести на печать. При выполнении задания использовать переменную логического типа, а не условный оператор.

–  –  –

Вариант 5

1. Введите обозначения и объявите переменные x, y, f. Запишите инструкции, которые присваивают переменной "x" значение 30.5, значение переменной "y" вводится с клавиатуры. Вычислите по формуле:

f = x + x y. Выведите результат на экран по образцу:

You enter: Answer:

y=4.5 f=5.725 Примечание: см. Приложение Б

2. Определить тип заданных выражений и найти их значения. Составить систему тестов и вычислить полученное выражение для нескольких значений n и m, определить при каких n и m выражение не может быть вычислено. При выполнении заданий на сравнения, использовать тернарную операцию.

а) k=n++*m;

б) n++m;

3. Записать выражение, зависящее от координат точки X и Y и принимающее значение TRUE (t или 1), если точка принадлежит выделенной области (рис. 6), и FALSE (f или 0), если не принадлежит. Результаты вычислений вывести на печать. При выполнении задания использовать переменную логического типа, а не условный оператор.

–  –  –

Вариант 6

1. Введите обозначения и объявите переменные x, y, z и S. Запишите инструкции, которые присваивают переменным "x", "y" и "z" значения, вводимые c клавиатуры. Вычислите квадрат разности трех введённых вещественных чисел f = ( x y z ) 2. Выведите результат на экран в виде:

You enter:

x=1.4 y=4.5 z=3.1 Answer: 38.44

2. Определить тип заданных выражений и найти их значения. Составить систему тестов и вычислить полученное выражение для нескольких значений n и m, определить при каких n и m выражение не может быть вычислено. При выполнении заданий на сравнения, использовать тернарную операцию.

а) k=--m-n++;

б) m*mn++;

3. Записать выражение, зависящее от координат точки X и Y и принимающее значение TRUE (t или 1), если точка принадлежит выделенной области (рис. 7), и FALSE (f или 0), если не принадлежит. Результаты вычислений вывести на печать. При выполнении задания использовать переменную логического типа, а не условный оператор.

–  –  –

Вариант 7

1. Введите значение углов a и b в градусах. Посчитайте и выведите значения cos и sin этих углов. Результат решения задачи выведите на экран по образцу:

********* Answer:********* sin(45)=0.707 sin(90)=1 cos(45)=0.707 cos(90)=0 Примечание: см. Приложение Б

2. Определить тип заданных выражений и найти их значения. Составить систему тестов и вычислить полученное выражение для нескольких значений n и m, определить при каких n и m выражение не может быть вычислено. При выполнении заданий на сравнения, использовать тернарную операцию.

а) k=m++-n++;

б) m++--n;

3. Записать выражение, зависящее от координат точки X и Y и принимающее значение TRUE (t или 1), если точка принадлежит выделенной области (рис. 8), и FALSE (f или 0), если не принадлежит. Результаты вычислений вывести на печать. При выполнении задания использовать переменную логического типа, а не условный оператор.

y

–  –  –

Вариант 8

1. Введите обозначения и объявите переменные a, b, c и d. Запишите инструкции, которые присваивают переменной "a" значение -87.3, переменной "b" значение 111, а значение переменной "c" вводится с клавиатуры. Вычислите по формуле: f = e c + b a. Выведите результат на экран в виде:

a=-87.3 b=111 You enter c=0 Answer: d=199.3 Примечание: см. Приложение Б

2. Определить тип заданных выражений и найти их значения. Составить систему тестов и вычислить полученное выражение для нескольких значений n и m, определить при каких n и m выражение не может быть вычислено. При выполнении заданий на сравнения, использовать тернарную операцию.

а) k=m+--n;

б) m++--n;

3. Записать выражение, зависящее от координат точки X и Y и принимающее значение TRUE (t или 1), если точка принадлежит выделенной области (рис. 9), и FALSE (f или 0), если не принадлежит. Результаты вычислений вывести на печать. При выполнении задания использовать переменную логического типа, а не условный оператор.

–  –  –

Вариант 9

1. Введите обозначения и объявите вещественные переменные y (y0) и x (x0). Значения переменных вводятся с клавиатуры. Вычислите десятичный и натуральный логарифмы введённых переменных. Выведите результат на экран по образцу:

You enter: Answer:

x=2.5 ln(2.5)=0.916 log(2.5)=0.3974 y=1 ln(1)=0 log(1)=0 Примечание: см. Приложение Б

2. Определить тип заданных выражений и найти их значения. Составить систему тестов и вычислить полученное выражение для нескольких значений n и m, определить при каких n и m выражение не может быть вычислено. При выполнении заданий на сравнения, использовать тернарную операцию.

а) k= (n++)+m--;

б) n*mn++;

3. Записать выражение, зависящее от координат точки X и Y и принимающее значение TRUE (t или 1), если точка принадлежит выделенной области (рис. 10), и FALSE (f или 0), если не принадлежит. Результаты вычислений вывести на печать. При выполнении задания использовать переменную логического типа, а не условный оператор.

y

0 x

Рис. 10. Область для решения логической задачи варианта 9 Вариант 10

1. Введите значение угла в градусах такое что b [ 1,1]. Посчитайте и выведите значения arccos, arcsin и arctg этого угла. Результат решения задачи выведите на экран по образцу:

You enter:

b=0.5 ******************* arcsin(0.5)=30 arccos(0.5)=60 arctg(0.5)=26 ******************* Примечание: см. Приложение Б

2. Определить тип заданных выражений и найти их значения. Составить систему тестов и вычислить полученное выражение для нескольких значений n и m, определить при каких n и m выражение не может быть вычислено. При выполнении заданий на сравнения, использовать тернарную операцию.

а) k=n++*m;

б) ++mn;

3. Записать выражение, зависящее от координат точки X и Y и принимающее значение TRUE (t или 1), если точка принадлежит выделенной области (рис. 11), и FALSE (f или 0), если не принадлежит. Результаты вычислений вывести на печать. При выполнении задания использовать переменную логического типа, а не условный оператор.

y

–  –  –

Цель работы. Научиться использовать основные операторы языка C++ при программировании задач, приобрести навыки работы с циклами, в том числе вложенными циклами (матрицами).

3.1. Методические указания Для успешного выполнения лабораторной работы №2 необходимо изучить предложенный в разделе 3 материал, составить три программы в соответствии с вариантами заданий (п. 3.3) и выполнить отчёт в соответствии с требованиями.

Для определения номера варианта заданий, необходимо воспользоваться табл. 9, в которой установлено соответствие между второй буквой фамилии студента и номерами вариантов.

Таблица 9 Распределение номеров вариантов лабораторной работы №2

–  –  –

Отчет по лабораторной работе должен быть написан шрифтом Times New Roman, 14, интервал между строк – полуторный, абзац – 1 см.

Отчёт должен иметь следующие пункты:

1. Титульный лист.

2. Цель работы.

3. Формулировка задания.

4. Код программы.

5. Блок-схема.

6. Результаты работы программы.

7. Выводы по работе.

Шаблон титульного листа для отчёта по лабораторной работе представлено в Приложении А.

При выполнении алгоритма программы в виде блок-схемы необходимо придерживаться действующим межгосударственным стандартом «Единая система программной документации», ГОСТ 19.70-90, приведённым в Приложении Б.

В пункте «Результаты работы программы» отображаются окна следующего вида:

3.1.1. Основные операторы языка С++

3.1.1.1. Базовые конструкции структурного программирования Операторы в языке C++ предназначены для описания действий.

Любой оператор может быть помечен меткой. Операторы отделяются друг от друга точкой с запятой.

В теории программирования доказано, что программу для решения задачи любой сложности можно составить только из трех структур [4]:

1. Линейная.

2. Разветвляющаяся.

3. Циклическая.

Эти структуры называются базовыми конструкциями структурного программирования.

Линейной называется конструкция, представляющая собой последовательное соединение двух или более операторов.

Ветвление – задает выполнение одного из двух операторов, в зависимости от выполнения какого либо условия.

Цикл – задает многократное выполнение оператора.

Таблица 10 Отображение базовых конструкций на блок-схеме

Следование Ветвление Цикл

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

Операторы управления работой программы называют управляющими конструкциями программы. К ним относят:

1) составные операторы;

2) операторы выбора;

3) операторы циклов;

4) операторы передачи управления.

3.1.1.2. Составные операторы

К составным операторам относят:

1) собственно составные операторы;

2) блоки.

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

Пример 22. Составной оператор { n++;

summa+=n;

} Пример 23. Блок { int n=0;

n++;

summa+=n;

} Отличием примера 22 от примера 21 является наличие определения переменной n.

3.1.1.3. Операторы выбора

К операторам выбора относятся:

1. условный оператор;

2. переключатель.

Условный оператор Условный оператор имеет полную и сокращенную форму.

Сокращённая форма используется, если в задаче имеется более двух условий.

Сокращенная форма для условного оператора имеет вид [1]:

if (выражение-условие ) оператор;

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

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

Полная форма для условного оператора имеет вид:

if ( выражение-условие ) оператор1;

else оператор2;

Если значение выражения-условия отлично от нуля, то выполняется оператор1, при нулевом значении выражения-условия выполняется оператор2.

Пример 24

1) if (a0) b = 1;// 1

2) if (ab && (ad || a==0)) b++;

else {b* = a; a = 0;}// 2

3) if (ab) {if (ac) m = a; else m = c;} else {if (bc) m = b; else m = c;}// 3 В пункте 1) примера 24 отсутствует ветвь else. Подобная конструкция называется «пропуск оператора», поскольку присваивание либо выполняется, либо пропускается в зависимости от выполнения условия.

Если требуется проверить несколько условий, их объединяют знаками логических операций. Например, выражение в пункте 2) примера 24 будет истинно в том случае, если выполнится одновременно условие ab и одно из условий в скобках. Если опустить внутренние скобки, будет выполнено сначала логическое И, а потом – ИЛИ.

Оператор в пункте 3) примера 24 вычисляет наибольшее значение из трех переменных. Фигурные скобки в данном случае не обязательны.

Пример 25 if (d=0) { x1=(-b-sqrt(d))/(2*a);

x2=(-b+sqrt(d))/(2*a);

cout “\nx1=”x1“x2=”x2;

} else cout“\nРешения нет”;

Переключатель Переключатель определяет множественный выбор.

Общая форма для записи переключателя имеет вид [4]:

switch (выражение) { case константа1 : оператор1 ;

case константа2 : оператор2 ;

...........

[default: операторы;] } При выполнении оператора switch, вычисляется выражение, записанное после switch, оно должно быть целочисленным. Полученное значение последовательно сравнивается с константами, которые записаны следом за case. При первом же совпадении выполняются операторы помеченные данной меткой. Если выполненные операторы не содержат оператора перехода, то далее выполняются операторы всех следующих вариантов, пока не появится оператор перехода или не закончится переключатель. Если значение выражения, записанного после switch не совпало ни с одной константой, то выполняются операторы, которые следуют за меткой default. Метка default может отсутствовать.

Пример 26 #include iostream.h void main() { int i;

cout"\nEnter the number";

cini;

switch(i) { case 1:cout"\nthe number is one";

case 2:cout"\n2*2="i*i;

case 3:cout"\n3*3="i*i; break;

case 4:cout"\n"i" is very beautiful!";

default:cout"\nThe end of work";

} }

Результаты работы программы, представленной в примере 25 следующие:

При вводе 1 будет выведено:

The number is one 2*2=1 3*3=1

При вводе 2 будет выведено:

2*2=4 3*3=4

При вводе 3 будет выведено:

3*3=9

При вводе 4 будет выведено:

4 is very beautiful!

При вводе всех остальных чисел будет выведено:

The end of work Выход из переключателя обычно выполняется с помощью операторов break или return, о которых будет рассказано далее.

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

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

В теории программирования различают два вида циклов:

1) арифметические;

2) итерационные;

Арифметические или счетные циклы – циклы с управляющей переменной (счетчиком или параметром цикла). Выполняется известное число раз.

Итерационные – циклы, которые выполняются в зависимости от истинности или ложности заданного условия. В итерационных циклах известно условие выполнения цикла. Итерационными циклами являются циклы «с предусловием» и циклы «с постусловием».

–  –  –

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

Нельзя передавать управление извне внутрь цикла. Выход из цикла возможен как при выполнении условия выхода, так и по операторам break, return или безусловного перехода.

Цикл с предусловием (while) Цикл с предусловием реализует структурную схему, приведенную на рис.

1 (а), и имеет вид:

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

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

Пример 26. Программа печатает таблицу значений функции y=x2+1 во введенном диапазоне).

#include stdio.h int main(){ float Xn, Xk, Dx;

printf("Введите диапазон и шаг изменения аргумента: ");

scanf("%f%f%f", &Xn, &Xk, &Dx);

printf("| X | Y |\n");//шапка таблицы int X = Xn;//начальные установки цикла while (X=Xk){//проверка условия выхода printf("| %5.2f | %5.2f |\n", X, X*X + 1);//тело X += Dx;//модификация } } Цикл с постусловием (do while) Цикл с постусловием реализует структурную схему, приведенную на рис.

1(б), и имеет вид:

do оператор while (выражение);

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

Пример 27. Проверка ввода.

#include iostream.h int main() { char answer;

do { cout "\nКупи слоника! "; cin answer;

}while (answer != 'y');

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

Цикл с параметром имеет следующий формат [3]:

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

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

Выражение определяет условие выполнения цикла: если оно не равно 0 (истинно), цикл выполняется.

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

Простой или составной оператор представляет собой тело цикла.

Любая из частей оператора for может быть опущена (но точки с запятой надо оставить на своих местах!).

Пример 28. Оператор, вычисляющий сумму чисел от 1 до 100:

for (int i = 1, s = 0; i=100; i++) s += i;

Пример 29.

Программа печатает таблицу значений функции y=x2+1 во введенном диапазоне:

#include stdio.h int main() { float Xn, Xk, Dx;

printf("Введите диапазон и шаг изменения аргумента: ");

scanf("%f%f%f", &Xn, &Xk, &Dx);

printf("| X | Y |\n");

for (int X = Xn; X=Xk; X += Dx) printf("| %5.2f | %5.2f |\n", X, X*X + 1);

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

В С++ есть несколько операторов, изменяющих естественный порядок выполнения вычислений [5]:

• оператор безусловного перехода goto;

• оператор выхода из цикла break;

• оператор перехода к следующей итерации цикла continue;

• оператор возврата из функции return.

Оператор goto

Оператор безусловного перехода goto имеет формат:

goto метка;

В теле той же функции должна присутствовать ровно одна конструкция вида:

метка: оператор;

Оператор goto передает управление на помеченный оператор.

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

Использование оператора безусловного перехода оправдано в двух случаях:

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

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

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

–  –  –

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

Оператор return

Оператор возврата из функцииreturn завершает выполнение функции и передает управление в точку ее вызова. Вид оператора:

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

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

3.1.2. Одномерные массивы В языке C/C++, кроме базовых типов, разрешено вводить и использовать производные типы, полученные на основе базовых. Стандарт языка определяет три способа получения производных типов:

• массив элементов заданного типа;

• указатель на объект заданного типа;

• функция, возвращающая значение заданного типа.

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

Резервирование памяти для массива выполняется на этапе компиляции программы [1].

3.1.2.1. Описание массива в C/C++ Описание массива в программе отличается от описания простой переменной наличием после имени квадратных скобок, в которых задается количество элементов массива (размерность):

Пример 31. Описания массива из 10 вещественных чисел float a [10];

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

Пример 32. Инициализация массива int b[5] = {3, 2, 1}; // b[0]=3, b[1]=2, b[2]=1, b[3]=0, b[4]=0 Размерность массива может быть задана только целой положительной константой или константным выражением.

Для доступа к элементу массива после его имени указывается номер элемента (индекс) в квадратных скобках.

–  –  –

В примере 33 размерность массивов предпочтительнее задавать с помощью типизированных констант.

3.1.2.2. Обработка одномерных массивов При работе с массивами очень часто требуется одинаково обработать все элементы или часть элементов массива. Для этого организуется перебор массива.

Перебор элементов массива характеризуется:

• направлением перебора;

• количеством одновременно обрабатываемых элементов;

• характером изменения индексов.

По направлению перебора массивы обрабатывают:

• слева направо (от начала массива к его концу);

• справа налево (от конца массива к началу);

• от обоих концов к середине.

Индексы могут меняться

• линейно (с постоянным шагом);

• нелинейно (с переменным шагом).

3.1.2.3. Перебор массива по одному элементу

Элементы можно перебирать:

1. Слева направо с шагом 1, используя цикл с параметром:

for(int I=0;In;I++){обработка a[I];}

2. Слева направо с шагом отличным от 1, используя цикл с параметром:

for (int I=0;In;I+=step){обработка a[I];}

3. Справа налево с шагом 1, используя цикл с параметром:

for(int I=n-1;I=0;I--){обработка a[I];}

4. Справа налево с шагом отличным от 1, используя цикл с параметром:

for (int I=n-1;I=0;I-=step){обработка a[I];} 3.1.2.4. Датчика случайных чисел для формирования массива.

Датчик случайных чисел (ДСЧ) – это программа, которая формирует псевдослучайное число. Простейший ДСЧ работает следующим образом [3]:

1)Берется большое число К и произвольное x0 [0,1].

2)Формируются числа х1=дробная_часть(х0*К);

х2=дробная_часть(х1*К); и т. д.

В результате получается последовательность чисел х0, х1, х2,... беспорядочно разбросанных по отрезку от 0 до 1. Их можно считать случайными, а точнее псевдослучайными. Реальные ДСЧ реализуют более сложную функцию f(x).

В С++ имеется функция int rand() – возвращает псевдослучайное число из диапазона 0..RAND_MAX=32767, описание функции находится в файле stdlib.h.

–  –  –

Пример 35. Найти максимальный элемент массива.

#includeiostream.h #includestdlib.h #includeconio.h void main() { int a[100];

int n;

cout"\nEnter the size of array:";

cinn;

for(int I=0;In;I++) { a[I]=rand()%100;

couta[I]" ";

} int max=a[0];

for(int I=1;In;I++) if (a[I]max)max=a[I];

cout"\nMax="max;

getch();

} В программе, представленной в примере 35 также используется перебор массива по одному элементу слева направо с шагом 1.

3.1.3. Многомерные массивы Многомерные массивы задаются указанием каждого измерения в квадратных скобках, например, оператор int matr [6][8]; задает описание двумерного массива из 6 строк и 8 столбцов. В памяти такой массив располагается в последовательных ячейках построчно. Многомерные массивы размещаются так, что при переходе к следующему элементу быстрее всего изменяется последний индекс [4].

Для доступа к элементу многомерного массива указываются все его индексы, например, matr[i][j].

Пример 36. Инициализация многомерного массива:

int mass2 [][]={ {1, 1}, {0, 2}, {1, 0} };

int mass2 [3][2]={1, 1, 0, 2, 1, 0};

На рис. 13 представлены блок-схемы алгоритмов двумерных массивов <

–  –  –

#include stdio.h #include conio.h #include math.h void main() { float y,z,f;

int x;

printf("vvedite x=");

scanf("%d",&x);

if (x=3) { y=cos(5*x*x+2)/sqrt(3*x*x*x);

z=pow(8*x+3,1/3);

} else { y=exp(3*x-16)/pow((x+3)*(x+3)*(x-5)*(x-5),1/3);

z=3*pow(x,2+4*x);

} f=y*y+z*z;

printf("F=%.3f\nx=%d\ny=%.3f \nz=%.3f",f,x,y,z);

getch();

} Пример 39. Написать программу соответствия между числом и текущим цветом (для процедуры textcolor (color)). «Color» может принимать значение 0…7 из Задания № 5 (0 – черный, 1 – голубой, 2 – зеленый, 3 – васильковый, 4 – красный, 5 – фиолетовый, 6 – коричневый, 7 – светло-серый), либо 8 – темносерый 13 – сиреневый 9 – светло-голубой 14 – желтый 10 -салатовый 15 – белый 11 – алый #include stdio.h #include conio.h #include math.h void main() { int x;

printf("vvedite x:");

scanf("%d",&x);

switch(x) { case 0:printf("black");break;

case 1:printf("blue");break;

case 2:printf("green");break;

case 3:printf("cornflower-blue");break;

case 4:printf("red");break;

case 5:printf("purple");break;

case 6:printf("brown");break;

case 7:printf("light grey");break;

case 8:printf("dark grey");break;

case 9:printf("light blue");break;

case 10:printf("salad");break;

case 11:printf("scarlet");break;

case 12:printf("orange");break;

case 13:printf("liliac");break;

case 14:printf("yellow");break;

case 15:printf("white");break;

default:printf("incorrect number");

} getch();

} Пример 40. Вычислить факториал числа n.

#include iostream.h void main (void) { int i, n;

float fact = 1;

cout “введите число, факториал которого вычислить:”;

cin n;

for ( i = 1; i = n; i++) fact = fact*i;

cout n”!= “ fact;

} Пример 41. Домножить все элементы массива на квадрат его наименьшего элемента. Вывести измененный массив.

#include iostream.h #include math.h #include iomanip.h void main (void) { int i, n, a[20], min;

cout ”введите количество чисел в массиве (20) ”; cin n;

for (i=0; in; i++) { cout “введите ” i “ элемент массива:”;

cin a[i];

} min = a[0];

for (i=0; in; i++) if (a[i] min) min = a[i];

for (i=0; in; i++) { a[i] = a[i]*pow(min,2);

cout setw(8) a[i];

} } Пример 42. Дана последовательность из n целых чисел. Найти количество элементов этой последовательности, кратных числу K1 и не кратных числу K2.

#include iostream.h #include conio.h #include math.h #include stdio.h void main() { int n,x,s1,s2,i,k1,k2;

cout"vvedite n:";

cinn;

printf("vvedite k1:");

scanf("%d",&k1);

printf("vvedite k2:");

scanf("%d",&k2);

cout"vvedite elementi: \n";

for(s1=0,s2=0,i=1;i(n+1);i++) { scanf("%d",&x);

if(x%k1==0) s1++;

if(x%k2!=0) s2++;

} printf("kol-vo kratnix k1=%d \nkol-vo ne kratnix k2=%d",s1,s2);

getch();

} Пример 43. Дана последовательность целых чисел, за которой следует 0. Найти количество элементов этой последовательности, кратных ее первому элементу.

#include iostream.h #include conio.h #include math.h #include stdio.h void main() { int a,x,k;

printf("vvedite 4isla posledovatelnosti\n");

scanf("%d",&a);

if (a!=0) { k=1;

do { scanf("%d",&x);

if(x%a!=0) k++;

} while (x!=0);

--k;

printf("kol-vo kratnix 1-my 4leny noclegovatelnosti=%d",k);

} else { printf(“v posledovatelnosti 1 4len:Hevozmozhno proizvesti racc4et”);

} getch();

}

–  –  –

3.3. Вопросы для самоконтроля

1. Перечислите основные операторы С++.

2. Опишите порядок действий при работе с оператором присваивания.

3. Чем отличаются составные операторы.

4. Применение оператора выбора.

5. Какие виды циклов существуют, как они определяются в языке С++.

6. В каких ситуациях применяются операторы перехода.

7. Массивы (определение, инициализация).

8. Способы перебора массивов.

9. Пречислите способы сортировки массивов.

10.Поиск в одномерных массивах (дихотомический и линейный).

11.Инициализация вложенного массива.

12.Описание вложенного массива (матрицы) в блок-схеме.

13.Запишите часть программы, отвечающей за умножение двух матриц.

Для чего используется ключевое слово default при работе с оператором выбора.

Форма записи условного оператора в языке C++.

15.

–  –  –

Вариант 3

1. Написать программу, которая при вводе начальной буквы печатает имя полностью (Анна, Михаил, Владимир, Ирина, Сергей). (В описании переменной использовать тип данных char).

2. Дана последовательность целых чисел, за которой следует 0.

Найти сумму элементов с четными номерами из этой последовательности. При выполнении задания воспользоваться операторами циклов.

3. Найти матрицу C:

–  –  –

4. КУРСОВАЯ РАБОТА

«СОЗДАНИЕ СОБСТВЕННОЙ ФУНКЦИИ»

Цель работы. Закрепление теоретических знаний по дисциплине «Информатика», а также практических навыков по программированию на языке C++.

4.1. Методические указания Общие методические указания по определению вариантов курсовой работы и сами варианты приведены в методических указаниях для студентов ИДО, обучающихся по направлению 220700 «Автоматизация технологических процессов и производств» по курсу «Информатика».

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

1) титульный лист;

2) цель работы;

3) формулировку заданий;

4) теоретическую часть;

код программы на C++;

5)

6) алгоритм программы, представленный в виде блок-схемы;

результаты работы программы;

7) выводы по работе;

8)

9) список литературы.

Шаблон титульного листа пояснительной записки к курсовой работе представлен в Приложении B. Каждый вариант ИДЗ состоит из одного задания на создание собственной функции.

Для курсовой работы имеется 10 вариантов. Вариант задания выбирается в соответствии с последней цифрой шифра зачетной книжки студента, 0 соответствует 10-му варианту. Например, для шифра З-8А11/01 должен быть выбран вариант 1, а для шифра З-8А10/10 – вариант 10.

4.1.1. Объявление и определение функций Функция – это именованная последовательность описаний и операторов, выполняющая какое-либо законченное действие. Функция может принимать параметры и возвращать значение [4].

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

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

Процесс отладки программы, содержащей функции, можно лучше структурировать. Часто используемые функции можно помещать в библиотеки. Таким образом создаются более простые в отладке и сопровождении программы Любая программа на С++ состоит из функций, одна из которых должна иметь имя main (с нее начинается выполнение программы).

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

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

Объявление функции (прототип, заголовок, сигнатура) задает ее имя, тип возвращаемого значения и список передаваемых параметров.

Определение функции содержит, кроме объявления, тело функции, представляющее собой последовательность операторов и описаний в фигурных скобках [6]:

[ класс ] тип имя ([ список_параметров ])[throw ( исключения )] { тело функции } Рассмотрим составные части определения.

• С помощью необязательного модификатора класс можно явно задать область видимости функции, используя ключевые слова extern и

static:

extern – глобальная видимость во всех модулях программы (по умолчанию);

static – видимость только в пределах модуля, в котором определена функция.

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

• Список параметров определяет величины, которые требуется передать в функцию при ее вызове. Элементы списка параметров разделяются запятыми. Для каждого параметра, передаваемого в функцию, указывается его тип и имя (в объявлении имена можно опускать).

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

На имена параметров ограничений по соответствию не накладывается.

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

Директива inline носит рекомендательный характер и выполняется компилятором по мере возможности.

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

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

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

Пример 48. Функция, возвращающая сумму двух целых величин.

#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); // вызов функции } int sum(int a, int b)// определение функции { return (a+b);

} Пример 49. Функция, выводящая на экран поля переданной ей структуры.

#include iostream.h struct Worker { char fio[30];

int date, code;

float salary;

};

void print_worker(Worker);//объявление функции int main() { Worker stuff[100];

/* формирование массива stuff */ for(int i=0;i100; i++) print_worker(stuff[i]);/*вызов функции */ } void print_worker(Worker w)//определение функции { coutw.fio' 'w.date' 'w.code' ' w.salary;

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

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

Пример 50 #include iostream.h void f(int a) { cout "n m\n";

while (a--) { static int n = 0;

int m = 0;

cout n++ ' ' m++ '\n';

} } int main() { f(3);

} Статическая переменная n примера 50 размещается в сегменте данных и инициализируется один раз при первом выполнении оператора, содержащего ее определение. Программа выведет на экран:

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

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

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

Возвращаемое значение

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

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

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

Пример 51 int f1(){return 1;} //правильно void f2(){return 1;} /*неправильно, f2 не должна возвращать значение*/ double f3{return 1;}/*правильно, 1 преобразуется к типу double*/ ВНИМАНИЕ!

Нельзя возвращать из функции указатель на локальную переменную.

Пример 52 int* f() {int a = 5; return &a;} // нельзя!

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

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

Существует два вида передачи величин в функцию: по значению и по адресу.

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

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

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

Пример 53 #include iostream.h //объявление функции f void f(int i, int* j, int& k);

int main() { int i = 1, j = 2, k = 3;

cout "i j k\n";

cout i ' ' j ' ' k '\n';

f(i, &j, k);

cout i ' ' j ' ' k;

} // определение функции f void f(int i, int* j, int& k) { i++; (*j)++; k++;

}

Результат работы программы:

ijk В примере 53 первый параметр (i) передается по значению. Его изменение в функции не влияет на исходное значение. Второй параметр (j) передается по адресу с помощью указателя, при этом для передачи в функцию адреса фактического параметра используется операция взятия адреса, а для получения его значения в функции требуется операция разыменования. Третий параметр (k) передается по адресу с помощью ссылки.

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

Если требуется запретить изменение параметра, используется модификатор const.

Пример 54 int f(const char*);

char* t(char* a, const int* b);

СОВЕТ!

Рекомендуется указывать const перед всеми параметрами, изменение которых в функции не предусмотрено. Это облегчает отладку. Кроме того, на место параметра типа const& может передаваться константа.

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

4.2. Вопросы для самоконтроля В каких случаях используют функции в С++.

1.

2. Из каких частей состоит функция.

3. Формальные и фактические параметры.

4. Глобальные т локальные параметры.

5. Прототип функции.

6. Передача одномерных массивов в функции. Примеры.

7. Передача многомерных массивов в функции. Примеры.

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

8.

Перечислите вида передачи величин в функцию.

9.

10. Использование оператора return в функции.

11.Что определяет тип функции.

12.Чем объявление функции отличается от определения функции.

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

14. Как можно явно задать область видимости функции.

15. С какой целью используется модификатор inline.

–  –  –

СПИСОК ЛИТЕРАТУРЫ

1. Бьерн Страуструп. Дизайн и эволюция C++. – СПб.: ДМК Пресс, Питер, 2006. – 543 с.

2. Иванов В.Б. Прикладное программирование на C/C++: с нуля до мультимедийных и сетевых приложений / В.Б. Иванов. – М.: СОЛОНПресс, 2008. – 240 с.

3. Мамонова Т.Е. Информатика. Общая информатика. Основы языка C++: учебное пособие / Т.Е. Мамонова; Томский политехнический университет. – Томск: Изд-во Томского политехнического университета, 2011. – 202 с.

4. Павловская Т.А. С/С++. Программирование на языке высокого уровня. – СПб.: Питер, 2010.

5. Справочник по функциям C++. URL: http://valera.asf.ru/cpp/help/ (дата обращения: 23.09.2011).

6. Функции стандартного ввода-ввода в С++ [Электронный ресурс].

– Режим доступа: http://www.realcoding.net (дата обращения: 29.09.2011).

–  –  –

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ

ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ

ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Институт/ Факультет – _____________________________________________

Направление – _____________________________________________

Кафедра –

–  –  –

Томск – 2011 Примечания.

1. Наименование Института/Факультета/Направления/Кафедры печатаются строчными буквами кроме первой прописной.

2. Наименование лабораторной работы печатается прописными буквами.

3. В расшифровке подписи инициалы располагаются перед фамилией.

<

–  –  –

Дата введения 01.01.92.

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

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

Требования стандарта являются обязательными.

1. Общие положения

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

1.2. Схемы могут использоваться на различных уровнях детализации, причём число уровней зависит от размеров и сложности задачи обработки данных. Уровень детализации должен быть таким, чтобы различные части и взаимосвязь между ними были понятны в целом.

1.3. В настоящем стандарте определены символы, предназначенные для использования в документации по обработке данных, и приведено руководство по условным обозначениям для применения их в:

1) схемах данных;

2) схемах программ;

3) схемах работы системы;

4) схемах взаимодействия программ;

5) схемах ресурсов системы.

1.4. В стандарте используются следующие понятия:

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

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

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

2. Описание схем

2.1. Схема данных...

2.2. Схема программы 2.2.1. Схемы программ отображают последовательность операций в программе.

2.2.2. Схема программы состоит из:

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

2) линейных символов, указывающих поток управления;

3) специальных символов, используемых для обеспечения написания и чтения схемы.

2.3. Схема работы системы...

2.4. Схема взаимодействия программ.

...

2.5. Схема ресурсов системы.

...

–  –  –

3.1.1.2. Запоминаемые данные.

Символ отображает хранимые данные в виде, пригодном для обработки, носитель данных не определён.

3.1.2. Специфические символы данных 3.1.2.1. Оперативное запоминающее устройство Символ отображает данные, хранящиеся в оперативном запоминающем устройстве.

3.1.2.2. Запоминающее устройство с последовательным доступом.

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

3.1.2.3. Запоминающее устройство с прямым доступом.

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

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

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

3.1.2.7.

Бумажная лента Символ отображает данные, представленные на носителе в виде бумажной ленты.

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

3.2. Символы процесса 3.2.1. Основные символы процесса 3.2.1.1. Процесс Символ отображает функцию обработки данных любого вида (выполнение определённой операции или группы операций, приводящие к изменению значения, формы или размещения информации или к определению, по которому из нескольких направлений потока следует двигаться).

3.2.2. Специфические символы процесса 3.2.2.1. Предопределённый процесс Символ отображает предопределённый процесс, состоящий из одной или нескольких операций или шагов программы, которые определены в другом месте (в программе, модуле).

3.2.2.3. Ручная операция Символ отображает любой процесс, выполняемый человеком.

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

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

3.2.2.6. Граница цикла Символ, состоящий из двух частей, отображает начало и конец цикла. Обе части символа имеют один и тот же идентификатор. Условия для инициализации, приращения, завершения и т.д. помещаются внутри символа в начале или в конце в зависимости от расположения операции, проверяющей условие.

Пример:

3.3. Символы линий 3.3.1. Основной символ линий 3.3.1.1. Линия Символ отображает поток данных или управления.

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

3.3.2 Специфические символы линий.

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

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

3.4. Специальные символы 3.4.1. Соединитель Символ отображает выход в часть схемы и вход из другой части этой схемы и используется для обрыва линии и продолжения её в другом месте. Соответствующие символы-соединители должны содержать одно и то же уникальное обозначение.

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

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

–  –  –

4. Правила применения символов и выполнения схем

4.1. Правила применения символов 4.1.1. Символ предназначен для графической идентификации функции, которую он отображает, независимо от текста внутри этого символа.

4.1.2. Символы в схеме должны быть расположены равномерно.

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

4.1.3. Большинство символов задумано так, чтобы дать возможность включения текста внутри символа. Формы символов... должны служить руководством для фактически используемых символов.

Не должны изменяться углы и другие параметры, влияющие на соответствующую форму символов. Символы должны быть, по возможности, одного размера.

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

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

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

Пример:

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

Если использование символов комментария может запутать или разрушить ход схемы, текст следует помещать на отдельном листе и давать перекрёстную ссылку на символ.

4.1.5. В схемах может использоваться идентификатор символов.

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

Пример:

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

Пример:

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

4.2. Правила выполнения соединений 4.2.1. Потоки данных или потоки управления в схемах показываются линиями. Направление потока слева направо и сверху вниз считается стандартным.

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

4.2.2. В схемах следует избегать пересечения линий.

4.2.4. Линии в схемах должны подходить к символу либо слева, либо сверху, а исходить либо справа, либо снизу. Линии должны быть направлены к центру символа.

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

4.3. Специальные условные обозначения 4.3.1. Несколько выходов 4.3.1.1. Несколько выходов из символа следует показывать:

1) несколькими линиями от данного символа к другим символам;

2) одной линией от данного символа, которая затем разветвляется в соответствующее число линий.

Примеры:

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

Примеры:

–  –  –

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ

ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ

ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Институт/ Факультет – _______________________________________________

Направление – ________________________________________________

–  –  –

Примечания.

4. Наименование Института/Факультета/Направления/Кафедры печатаются строчными буквами кроме первой прописной.

5.Наименование курсового проекта /работы печатается прописными буквами.

6. В расшифровке подписи инициалы располагаются перед фамилией.

Похожие работы:

«28.01.2004 № 8/10444 ПОСТАНОВЛЕНИЕ МИНИСТЕРСТВА СТАТИСТИКИ И АНАЛИЗА РЕСПУБЛИКИ БЕЛАРУСЬ 31 декабря 2003 г. № 258 8/10444 Об утверждении Положения о порядке переоценки основных средств по состоянию на 1 января 20...»

«Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования Владимирский государственный университет Кафедра строительных конструкций МЕТОДИЧЕСКИЕ УКАЗАНИЯ К ПРАКТИЧЕСКИМ ЗАНЯТИЯМ ПО ДИСЦИПЛИНЕ "ИНЖЕНЕРНЫЕ ИЗЫСКАНИЯ, ИНВЕНТАРИЗАЦИЯ И РЕКОНСТРУКЦИЯ ГОРОДСК...»

«А.В.УЛЫБИН канд. тех. наук, доцент С.Д.ФЕДОТОВ инженер (Санкт-Петербургский государственный политехнический университет) ОПРЕДЕЛЕНИЕ ПРОЧНОСТИ АРМАТУРЫ ПРИ ОБСЛЕДОВАНИИ ЖЕЛЕЗОБЕТОННЫХ КОНСТРУКЦИЙ При обследовании железобетонных элементов наибол...»

«Ф Е Д Е Р А Л Ь Н О Е АГ ЕНТСТ ВО ПО Т Е Х Н И Ч Е С К О М У Р ЕГУЛИР ОВА НИЮ И МЕТ РОЛОГИИ СВИДЕТЕЛЬСТВО об утверждении типа средств измерений R U.C.2 7.0 0 7.A № 43130 Срок действия до 01 октября 2014 г.Н А И М Е Н О В А Н И Е Т И П А С Р Е Д С Т В И ЗМ Е Р Е Н И Й Квадранты оптические КО И ЗГО ТО В И ТЕЛ Ь Открыт...»

«ЭКЗОГЕННОЕ СОЦИОКУЛЬТУРНОЕ ВОЗДЕЙСТВИЕ (сравнительно-исторический анализ) ВАРДГЕС ПОГОСЯН История без социологии слепа, социология без истории пуста. Норман Готвальд В конце ХХ в. проблемы взаимоотношения цивилизаций выдвинулись в гуманитарных науках на ведущие позиции. В фокусе внимания оказалось столкновение цивил...»

«Руководство пользователя ExStick® DO600 ® Прибор для измерения концентрации растворенного в воде кислорода (оксиметр) Введение Поздравляем с приобретением прибора для измерения концентрации растворённого в воде кислорода и тем...»

«НАУЧНО-ПРОИЗВОДСТВЕННАЯ КОМПАНИЯ АРМАСТЕК® УТВЕРЖДАЮ: Директор НПК АРМАСТЕК® /И.А. Мехоношин./ Альбом технических решений ПО ПРИМЕНЕНИЮ НЕМЕТАЛЛИЧЕСКОЙ КОМПОЗИТНОЙ АРМАТУРЫ (АКС) АРМАСТЕК® ПЕРИОДИЧЕСКОГО ПРОФИЛЯ В БЕТОННЫХ КОНСТРУКЦИЯХ Пермь, 2011 г. 1 РАЗРАБОТАН обществом с ограниченной от...»

«Министерство образования Республики Беларусь Учреждение образования "БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ" Кафедра инженерной графики ВЫШИНСКИЙ Н. В. ТЕХНИЧЕСКАЯ МЕХАНИКА. СБОРНИК ЗАДАЧ Минск 2015 Введение Раздел 1. Статик...»

«УДК 629.331 ОЦЕНКА ЭФФЕКТИВНОСТИ ФУНКЦИОНИРОВАНИЯ АВТОМОБИЛЬНОГО ТРАНСПОРТА Н.В. Пеньшин ГОУ ВПО "Тамбовский государственный технический университет", г. Тамбов Рецензент Б.И. Герасимов Ключевые слова и фразы: качество автомобильн...»

«Лекция 8 Восстановление информации Причины повреждений Логические (Программные сбои, вирусы, ошибки пользователей) Физические (Химические, электрические, механические) Способы восстановления Программный Аппаратный Передаваемая информация 1. Использование самокорректирующих кодов 2. Использовани...»

«Труды Нижегородского государственного технического университета им. Р.Е. Алексеева № 2(99) УДК 621.74:669.018.9 А.А. Панфилов, Е.С. Прусов, В.А. Кечин ПРОБЛЕМЫ И ПЕРСПЕКТИВЫ РАЗВИТИЯ ПРОИЗВОДСТВА И ПРИМЕНЕНИЯ АЛЮМОМАТРИЧНЫХ КОМПОЗИЦИОННЫХ СПЛАВОВ Владимирский государственный университет им. А.Г. и Н.Г. Столетовых Рассмотрены осн...»

«КУЛЕБАКСКИЙ МЕТАЛЛУРГИЧЕСКИЙ ЗАВОД ОПЫТ КАЧЕСТВО НАДЕЖНОСТЬ ИННОВАЦИОННОСТЬ УСПЕХ Польша Калиш Ржежев Pratt & Whitney Canada SPZ GROUP A United Technologies Company ПРЕДПРИЯТИЕ С ИНОСТРАННЫМИ ИНВЕСТИЦИЯМИ ОТКРЫТОЕ АКЦИОНЕРНОЕ ОБЩЕСТВО ОАО "РУСПОЛИМЕТ" СОЗДАЕТ СО...»

«Евгений Головаха Психологическое время личности НПФ "Смысл" УДК 159.9.072 ББК 88.3 Головаха Е. И. Психологическое время личности / Е. И. Головаха — НПФ "Смысл", В монографии предложена причинноц...»

«Интернет-журнал Строительство уникальных зданий и сооружений, 2013, №1 (6) Internet Journal Construction of Unique Buildings and Structures, 2013, №1 (6) Эффективность работы чиллера The efficiency of chiller’s work студент Хведченя Ольга Владимировна ФГБОУ ВПО Санкт-...»

«Теплофизика и аэромеханика, 2012, том 19, № 5 УДК 536.3 Изменение оптических свойств системы “оксидная пленкаметалл” в процессе роста пленки: компьютерное моделирование* С.П. Русин Объединенный институт высоких температур РАН, Москва E-mail: sprusin@yandex.ru Представлены результаты...»

«  ФЕДЕРАЛЬНОЕ АГЕНТСТВО   ПО ТЕХНИЧЕСКОМУ РЕГУЛИРОВАНИЮ И МЕТРОЛОГИИ     НАЦИОНАЛЬНЫЙ ГОСТ Р   СТАНДАРТ РОССИЙСКОЙ   ФЕДЕРАЦИИ       Интегрированная логистическая поддержка экспортируемой продукции военного назна...»

«ВЕСТНИК _АЛМАТИНСКОГО УНИВЕРСИТЕТА ЭНЕРГЕТИКИ И СВЯЗИ _ № 3 (26) 2014 _ Научно-технический журнал Выходит 4 раза в год Алматы № 3 (26) СОДЕРЖАНИЕ 2014 ЭЛЕКТРОЭНЕРГЕТИКА И ЭЛЕКТРОТЕХНОЛОГИЯ Хренов C.И., Белоусов С.В., Ковалев Д.И. Создание комплекса электрооборудования для повышения н...»

«Вестник Тюменского государственного университета. Гуманитарные исследования. Humanitates. 2016. Том 2. № 2. C. 35-44 Марина Витальевна ВЛАВАЦКАЯ1 Анастасия Вячеславовна КОРШУНОВА2 УДК 81'373.42 +37+367 ФУНКЦИОНАЛЬНО-СЕМАНТИЧЕСКИЙ АНАЛИЗ КАК МЕТОД ЛИНГВИСТИЧЕСКОГО ИССЛЕДОВАНИЯ (НА МАТЕРИАЛЕ АНГЛИЙС...»

«Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Владимирский государственный университет имени Александра Григорьевича и Николая Григорьевича Столет...»

«Электротехника и электроэнергетика 193 УДК 621.314.2 А.С. Плехов 1, М.Н. Охотников 2, В.Г. Титов 3 ТЕХНОЛОГИЯ ЭНЕРГОСБЕРЕЖЕНИЯ В ЭЛЕКТРОПРИВОДЕ ООО "Энергосбережение"1, ООО "Развитие"2, Нижегородский государственный технический университе...»









 
2017 www.lib.knigi-x.ru - «Бесплатная электронная библиотека - электронные матриалы»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.