Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР5-С++-22 марта-2012.doc
Скачиваний:
12
Добавлен:
15.09.2019
Размер:
1.48 Mб
Скачать

Кузнецов Л.К.

Министерство финансов Российской Федерации

Всероссийская государственная налоговая академия

ИНФОРМАТИКА И ПРОГРАММИРОВАНИЕ

Бакалавры: 230700 "Прикладная информатика"

Язык программирования С++

Лабораторная работа № 05

ПРОГРАММИРОВАНИЕ ЛИНЕЙНЫХ

ВЫЧИСЛИТЕЛЬНЫХ ПРОЦЕССОВ

Автор профессор кафедры "Прикладной информатики в экономике"

кандидат технических наук Л.К. Кузнецов

13 марта 2012 г.

Москва

ВГНА

2012

Лабораторная работа № 05

Программирование линейных вычислительных процессов

Цель работы:

  • ознакомиться со структурой простейших программ на языке С++;

  • ознакомиться с понятием оператора в языке С++;

  • ознакомиться с правилами оформления операторов начала и конца программы в языке С++;

  • ознакомиться с понятием линейного вычислительного процесса и принципами его реализации на языке С++;

  • ознакомиться с преобразованием типов;

  • со структурой, правилами использования и выполнения оператора присваивания в языке С++;

  • ознакомиться с операторами потокового ввода и вывода данных в языке С++;

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

  • научиться объявлять переменные в программах на языке С++;

  • научиться правильно выбирать имена переменных;

  • научиться составлять таблицу идентифика­торов;

  • научиться присваивать значения переменной;

  • научиться присваивать значения при объявлении;

  • изучить список ключевых слов языка С++.

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

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

1. Краткие теоретические сведения

1.1. Структура простейших программ на языке С++

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

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

Программа с простейшей структурой на языке C++ приведена в примере 5.1.

Пример 5.1.

/*Программа LR5-Primer1*/

//Пример простейшей программы на С++

#include<iostream.h>

#include<conio.h>

int main()

{

cout << "Учимся программировать" << " на языке С++!";

getch();

return 0;

}

В данном случае программа содержит три оператора. Фигурные скобки (называемые группирующими символами) группируют связанные операторы:

/*Программа LR5-Primer1*/

Комментарии

//Пример простейшей программы на С++

#include <iostream.h>

#include<conio.h>

О писание главной функции

int main ()

Подключение заголовочных файлов

Н ачало блока

{

cout << "Учимся программировать

<< "на языке С++!";

Вывод строки символов

Ч тение символа

getch();

return 0;

Возврат из функции

}

Конец блока

Рис. 5.1. Пример программы на языке С++

Общая структура программы на С следующая:

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

int main()

{

тело программы

}

Рассмотрим структуру простейшей, ставшей классической, програм­мы на С++, результат работы которой – вывод на экран строки Учимся программировать на языке С++! (рис. 5.1).

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

В третьей и четвертой строках программы расположены директивы препроцессора. Директива препроцессора #include<iostream.h> подключает заголовочный файл iostream.h, содержащий объявления функций и переменных для потокового ввода/вывода (благодаря этой директиве используется оператор вывода cout) . Директива препроцессора #include<conio.h> подключает заголовочный файл conio.h, содержащий объявления функций для работы с символами (благодаря этой директиве используется функция getch() ).

Имя подключаемого модуля указы­вается в косых скобках <> (заголовочный файл находится в ка­талоге \ INCLUDE\).

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

Запомните:

– все директивы препроцессора начинаются со знака #;

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

Далее следует описание единственной в примере функции main(). Надо отметить, что любая программа на С++ обязательно включает в себя функцию main(), с которой и начинает свое выполнение. Функция с именем main является особенной, так как выполняется первой при запуске программы, то есть служит так называемой точкой входа в программу. Слово int говорит, что функция main возвращает (вычисляет) целое число.

Фигурные скобки после функции main обозначают её определение.

В фигурных скобках формируется тело программы.

В рассматриваемом примере тело программы содержит всего лишь три оператора: оператор консольного вывода после­довательности символов cout << , оператор (функция) чтения символа с клавиатуры getch() и оператор возврата из функции return. Оператор return обеспечивает механизм завершения работы функции main и передачу управления операционной системе..

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

Замечания:

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

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

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

1.2. Понятие оператора в языке С++

Когда вы создаете программы на C++, вы реально работаете в терминах операторов.

Операторы аналогичны предложениям в человеческом языке. Язык С++ облада­ет набором простых операторов, которые последовательно выполняют задачи и по­зволяют составлять операторы, которые в свою очередь можно объединять в блоки операторов, выполняющихся как единое целое.

Оператор – действие, которое должен выполнить компьютер.

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

В об­щем случае оператор можно представить следующим образом:

MS;

Здесь М - либо отсутствует, либо имеет вид:

М1: М2: … Мк: (к  1), где Мi ( i - 1, 2, …, к) – идентификатор, называемый меткой оператора;

Sсобственно оператор;

; – признак конца оператора.

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

Приведем примеры операторов:

START: i = i + 1;

a = 1;

y = sin(x);

goto START;

;

FIN: ;

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

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

По своему назначению операторы С++ делятся на следующие группы:

описательные (объявления), с их помощью сообщаются имена и типы объектов, с которыми программа должна работать;

ввода-вывода, с помощью, которых вводятся и выводятся данные;

вычислительные (операторы-выражения), с помощью, которых осуществляются собственно вычисления по программе;

­– управления, определяющие порядок выполнения оператора в программе (условные операторы, к которым относятся оператор условия if и оператор выбора switch; операторы  цикла (for, while, do while); операторы  перехода (break, continue, return, goto); оператор возврата return);

операторы, предназначенные для обработки прерываний программы.

– другие операторы.

Каждый оператор в свою очередь может содержать несколько частей: ключевые слова, операнды, метки и т.д.

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

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

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

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

Вид конкретных операторов языка С++ и их назначение будут рассмот­рены дальше.

По умолчанию операторы выполняются последовательно. Однако последова­тельное выполнение годится лишь для самых простых программ. Поэтому в язы­ке С++, как и в любом другом языке, определен набор операторов управления потоком выполнения (flow-of-control statement), которые позволяют выполнять дру­гие операторы условно или неоднократно. Операторы if и switch обеспечивают условное выполнение. Операторы for, while и do. . .while обеспечивают повторное выполнение. Поэтому последние операторы зачастую называют циклами или операторами цикла.

1.3. Метка оператора в языке С++

Метка представляет собой идентификатор с расположенным за ним символом двоеточия (:).

Метками помечают какой-либо оператор, на который в даль­нейшем должен быть осуществлен безусловный переход.

Помеченный опе­ратор – это любой оператор, которому предшествует идентифи­катор, сопровождаемый двоеточием.Например,

end: return; //помеченный оператор, к нему может

//осуществить переход оператор goto

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

АВС: х = 4 + х * 3;

Метка – это идентификатор. Таким образом, допустимы, например, такие помеченные операторы:

XYZ: = (b-с) * (d-c);

сс: z * = 1;

Безусловная передача управления на метку производится при помощи оператора goto.

Оператор goto осуществляет безусловную передачу управления по­меченному оператору в другом месте программы. Операторы goto нарушают последователь­ность выполнения операций программы, поэтому их следует избегать.

Оператор goto может осуществлять переход (адресоваться) к мелкам, обязательно расположенным в одном с ним теле функции.

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

Синтаксис оператора goto:

goto метка;

Данный оператор – очень мощное и небезопасное средство управления поведением программы. Использовать его нужно крайне осторожно, так как, например, "прыжок" внутрь цикла (обход кодов инициализации) может привести к трудно локали­зуемым ошибкам.

Использование оператора goto будет рассмотрено в ЛР 6..

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

metJca: int z = 0, d = 4; // Матка перед определением

Перед пустым оператором (см. раздел 1.4) также имеет право стоять Метка.

Метки можно размещать во всех точках программы, где син­таксис разрешает использовать операторы.

Внимание: Использование оператора goto не было одобрено разработчиками алгоритмических языков еще в 1960-х го­дах. Он существенно затрудняет контроль последовательности выполнения операторов программы, а также является источником ошибок при последующих модификациях. Любая программа, в которой был использован оператор goto, может быть переписана без него.

Правило: Для оператора goto существует только одно правило – никогда не используйте оператор goto в своих программах!