
- •1 Курс, 2 семестр
- •230105 Программное обеспечение вычислительной техники и автоматизированных систем
- •График выполнения лабораторных работ
- •Блок-схемы алгоритмов и откорректированные после выполнения тексты функций, реализующих программы.
- •Вводное занятие к лабораторным работам
- •Базовые стандартные типы данных
- •В каждой очерченной части находятся операторы с одинаковым приоритетом
- •Создание нового проекта
- •Добавление к проекту нового файла с исходным текстом
- •Компиляция, компоновка и выполнение проекта
- •Открытие существующего проекта
- •Научитесь общаться с компилятором при появлении ошибок в тексте вашей программы
- •Добавление к проекту существующего файла с исходным текстом
- •Приложение 1
- •Лабораторная работа № 1
- •Тексты индивидуальных задач, выполняемых в лабораторной работе
- •Лабораторная работа № 2
- •Тексты индивидуальных задач, выполняемых в лабораторной работе
- •Лабораторная работа № 3
- •Тексты индивидуальных задач, выполняемых в лабораторной работе
- •Лабораторная работа № 4
- •Тексты индивидуальных задач, выполняемых в лабораторной работе
- •Лабораторная работа № 5
- •Тексты индивидуальных задач, выполняемых в лабораторной работе
- •Лабораторная работа № 6
- •Тексты индивидуальных задач, выполняемых в лабораторной работе
- •Лабораторная работа № 7
- •Тексты индивидуальных задач, выполняемых в лабораторной работе
В каждой очерченной части находятся операторы с одинаковым приоритетом
Таблица 2
Приоритет |
Оператор |
Назначение оператора |
Синтаксис оператора |
1 |
:: |
разрешение области видимости |
имя_класса :: член |
:: |
глобальное |
:: имя |
|
2 |
-> |
выбор члена |
указатель -> член |
[ ] |
индексация |
указатель [ ] выр |
|
( ) |
вызов функции |
выр ( список_выр ) |
|
sizeof |
определение размера типа |
sizeof ( тип ) |
|
sizeof |
определение размера объекта |
sizeof выр |
|
3 |
++ |
приращение после |
lvalue ++ |
++ |
приращение до |
++ lvalue |
|
- - |
уменьшение после |
lvalue - - |
|
- - |
уменьшение до |
- - lvalue |
|
~ |
дополнение |
~ выр |
|
! |
не |
! выр |
|
- |
ударный минус |
- выр |
|
+ |
ударный плюс |
+ выр |
|
& |
адрес объекта |
& lvalue |
|
* |
разыменование |
* выр |
|
new |
создание (размещение) |
new mun |
|
delete |
уничтожение (освобождение) |
delete указатель |
|
delete [ ] |
уничтожение вектора |
delete [выр ] указатель |
|
( ) |
преобразование типа |
( тип ) выр |
|
4 |
* |
умножение |
выр * выр |
/ |
деление |
выр / выр |
|
% |
взятие по модулю (остаток) |
выр % выр |
|
5 |
+ |
сложение (плюс) |
выр + выр |
- |
вычитание (минус) |
выр - выр |
|
6 |
<< |
сдвиг влево |
lvalue << выр |
>> |
сдвиг вправо |
lvalue >> выр |
|
7 |
< |
меньше |
выр < выр |
<= |
меньше или равно |
выр <= выр |
|
> |
больше |
выр > выр |
|
>= |
больше или равно |
выр >= выр |
|
Приоритет |
Оператор |
Назначение оператора |
Синтаксис оператора |
8 |
= = |
равно |
выр == выр |
!= |
не равно |
выр != выр |
|
9 |
& |
побитовое И |
выр & выр |
10 |
^ |
побитовое исключающее ИЛИ |
выр ^ выр |
11 |
| |
побитовое включающее ИЛИ |
выр | выр |
12 |
&& |
логическое И |
выр && выр |
13 |
|| |
логическое ИЛИ |
выр || выр |
14 |
?: |
арифметический if |
выр ? выр : выр |
15 |
= |
простое присваивание |
lvalue = выр |
* = |
умножить и присвоить |
lvalue * = выр |
|
/ = |
разделить и присвоить |
lvalue / = выр |
|
% = |
взять по модулю и присвоить |
lvalue % = выр |
|
+ = |
сложить и присвоить |
lvalue + = выр |
|
- = |
вычесть и присвоить |
lvalue - = выр |
|
16 |
, |
запятая (последование) |
выр , выр |
J = I ++; равнозначно J = I; I = I + 1;
J = ++ I; равнозначно I = I + 1; J = I;
Термин lvalue (left value) – леводопустимое выражение (происходит от объяснения операции присваивания LV=A , в которой левый операнд LV может быть только адресным объектом, т.е. изменяемым выражением).
Выражение (выр expression) – это последовательность имен объектов, соединенных операторами. Эта последовательность задает выполнение некоторых действий над объектами в виде математической формулы и/или отношения.
Например, если определены следующие объекты:
int nA1, nA2 ;
float fltB ;
то выражения могут выглядеть так:
nA1 + fltB – 2. / nA2
или так
fB = 2.8
или так
nA1 = (nA2 + fltB) / nA2 - fltB * nA1
Инструкция- выражение – это выражение, после которого стоит точка с запятой.
Например:
nB = 2.8 ;
nA1 = (nA2 + fB) / nA2 - fB * nA1 ;
Последовательность действий, заданных операторами определяется, как и в математике, их приоритетом, но может быть изменена с помощью круглых скобок.
Синтаксической программной единицей является объект, тип которого относится к группе производных типов и называется function - «функция». Объект типа функция (часто мы будем говорить просто функция) – это специальный вид подпрограмм.
Программа на языке С++ - набор объектов-функций. Как всякий объект, функцию надо уметь определять (создавать). Определение объекта типа функция отличается от определения объектов других типов.
Вот как синтаксически выглядит определение функции:
тип_возвращаемого_значения имя_объекта_функции ( список_формальных_параметров )
{
/* Это тело функции. Здесь пишутся инструкции, которые определяют объекты,
создаваемые внутри функции.
Здесь пишутся инструкции, задающие действия над этими объектами, которые
задают алгоритм работы функции
*/
}
Итак, определение функции состоит из заголовка функции:
тип_возвращаемого_значения имя_объекта_функции ( список_формальных_параметров )
и тела функции, заключенного в фигурные скобки:
{
/* Это тело функции. Здесь пишутся инструкции, которые определяют объекты,
создаваемые внутри функции.
Здесь пишутся инструкции, задающие действия над этими объектами, которые
задают алгоритм работы функции
*/
}
Определить объект типа функция, как и любой другой объект, можно только один раз. И как любой другой объект функцию порой приходится описывать. Зачем? Для того, чтобы уметь правильно с ней работать.
Как выглядит инструкция описания функции? Синтаксически – это точная копия заголовка функции, после которого стоит точка с запятой (ведь это инструкция!):
тип_возвращаемого_значения имя_объекта_функции ( список_формальных_параметров ) ;
Для инструкции описания функции есть специальное название – прототип (prototype).
В примере тела функции показано, как записать в программе на языке С++ много строковый комментарий, который дает нужные пояснения:
/* это много
строковый
комментарий */
Комментарий, который занимает одну строку, можно создать так:
// это комментарий в одну строку
В комментарии можно использовать любые символы.
Так как программа может состоять из одной или нескольких функций, то система должна знать, с какой функции следует начинать выполнять программу. Такой функцией всегда будет функция, которая имеет имя main:
// тип_возвращаемого_значения имя_объекта_функции ( список_формальных_параметров )
void main ( void )
{
// инструкции тела функции main
}
Слово void является зарезервированным словом и именем никакого типа. В заголовке этой функции void используется, чтобы указать, что функция не имеет возвращаемого значения и список ее формальных параметров пустой.
Далее следует пример программы, состоящей из одной функции. А раз функция одна, то такой функцией должна быть только функция main.
Обратите внимание на цвет текста. Зарезервированные слова в редакторе пишутся синим цветом, комментарии зеленным, все остальные слова (слова, начертания которых определяет программист) и символы–операторы черные.
/* файл MyFirst.cpp содержит программу, 1
состоящую из одной функции main 2
единственное действие этой программы - 3
ввести два числа, 4
вывести на экран их сумму и 5
приветствие "BYE !" 6
7 */
//================================================= 8
#include <iostream> // 9
#include <conio.h> // 10
using namespace std; // 11
// 12
void main (void) // 13
{ // 14
int nA; // 15
float fltB; // 16
cout <<"Input numbers:\t" // 17
<<"\nfirst int\t"; // 18
cin>>nA; // 19
cout<<"second float\t"; // 20
cin>>fltB; // 21
float fltSumma; // 22
fltSumma = nA + fltB; // 23
cout<<"summa = " << fltSumma; // 24
cout<<"\n\tBYE !"; // ПОКА 25
getch(); // 26
} // 27
Рассмотрим приведенный текст. Программа содержит функцию main. Она состоит из заголовка ( строка 13 ) и тела ( строки 14 – 27 ).
Тело функции состоит из инструкций. Каждая инструкция заканчивается точкой с запятой. Инструкций в теле функции всего 11, из них 3 – это инструкции определения объектов nA, fltB, fltSumma. Эти инструкции создают объекты. Напоминаем, что любой объект, имя которого встречается в программе, должен быть определен и определен всего один раз. Инструкции определения объектов легко распознать, т.к. они всегда начинаются с имен типов - здесь int и float (строки 15, 16, 22).
Кроме этого в функции определены константные объекты-строки, это последовательности символов, взятые в двойные кавычки.
Вот они: "Input numbers:\t",
"\nfirst int\t",
"second float\t",
"summa = ",
"\n\tBYE !".
Обратите внимание, что почти в каждой из этих строк присутствуют escape-символы (здесь, для того чтобы их разглядеть, они выделены жирным курсивом).
Кроме объектов a, b, summa и константных строк в тексте появились имена cout и cin. Это имена объектов, но где их определения?
Объекты cout и cin – стандартные абстрактные объекты, тип их называется «поток», с их помощью организуется ввод и вывод. Описание этих объектов присоединяется в строке 9. В этой строке записана директива специальной программы – препроцессор. Директива #include вставляет перед текстом функции текст файла iostream. Обратите внимание, что эта директива не является элементом языка С++, это элемент другого языка, языка программы, которая называется препроцессор. Директива, не являясь инструкцией языка С++, не имеет заканчивающей её точки с запятой. В тексте включенного файла iostream находятся описания объектов cout и cin, эти описания и присоединяются к тексту программы. А определения этих объектов cout и cin находятся в стандартной библиотеке. Написание имени файла в треугольных скобках < > указывает системе, где, в каких папках искать файл и соответствующую ему библиотеку. Это делается автоматически.
Обратите внимание на инструкцию в строке 19:
using namespace std;
Эта инструкция определяет область имен, где необходимо искать определения используемых в программе имен объектов. Дело в том, что сейчас существует очень много различных библиотек, в которых могут появиться одинаковые имена. Инструкция using namespace определяет, что поиск нужно осуществлять в области имен стандартной библиотеки std.
Последнее имя, которое используется в этой программе – имя getch. Это имя объекта типа функция. По какому внешнему признаку система и мы узнаем, что это имя функции, а не какого-то объекта любого другого типа? Этим признаком является то, что сразу после этого имени появляется оператор вызова функции – круглые скобки ().
Это стандартная функция, ее описание находится в файле conio.h , который подключается директивой препроцессора #include в строке 10. Само определение этого объекта функции ( последовательность команд, определяющих алгоритм выполнения функции) будет найдено автоматически в стандартной библиотеке.
В функции main 7 инструкций-выражений.
Что делают инструкции-выражения?
То, что делают операторы, которые в них используются!!!
Обратите внимание, как внешне по разному эти инструкции выглядят. Их разнообразие бесконечно.
Инструкции-выражения
cout << "Input numbers:\t" << "\nfirst int\t";
cout << "second float\t";
cout << "summa = " << fltSumma;
cout << "\n\tBYE !";
используя оператор << совместно с потоковым объектом cout выводят на экран строковые константы и значение объекта summa.
Инструкции-выражения
cin>>nA;
cin>>fltB;
используя оператор >> совместно с потоковым объектом cin копируют (вводят) в область объектов а и b значения, которые вводятся с клавиатуры.
Инструкция-выражение
fSumma = nA + fB;
с помощью оператора + вычисляет сумму значений объектов a и b и результат этого суммирования с помощью оператора = (присвоить) копирует в объект summa.
Инструкция-выражение
getch();
с помощью оператора () (оператор вызова функции) вызывает функцию getch, и ничего более.
Вопрос: а вот что делает вызванная стандартная функция?
Каждая функция делает то, что определяет ее алгоритм. Эта функция ожидает, пока не будет введен какой либо символ с клавиатуры в ее буферную область памяти. В этой программе функция getch вызывается в инструкции-выражении для организации задержки (пока пользователь не введет какой-либо символ, не выполняется никаких действий со стороны программы).
ЗАДАНИЕ НА ИЗУЧЕНИЕ НАЧАЛ РАБОТЫ В СРЕДЕ MICROSOFT VISUAL STUDIO.NET
Найдите на указанном преподавателем диске папку с именем вашей группы (если ее нет, то создайте ее) и сделайте в ней свою папку с вашей фамилией. В этой папке вы будете работать в течение всего первого семестра.