Язык программирования C++ (Лекции по С++)

2013-10-10СтудИзба

Описание презентации

Файл "Язык программирования C++" внутри архива находится в следующих папках: Лекции по С++, Лекции. Презентация из архива "Лекции по С++", который расположен в категории "". Всё это находится в предмете "информатика" из 2 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "информатика" в общих файлах.

Просмотр презентации онлайн

Текст из слайда

Алгоритмические языки
и программирование.
2 семестр
МГТУ им. Н.Э. Баумана
Факультет Информатика и системы управления
Кафедра Компьютерные системы и сети
Лектор: д.т.н., проф.
Иванова Галина Сергеевна
1

Структура курса
Лекции – Особенности программирования на С++ в среде разработки
Microsoft Visual Studio 2008
Практики (17-19 – Delphi, 20-29 – C++ 2008):
ИУ6-21 – четверг
830-1150;
ИУ6-22 – суббота
ИУ6-23 – понедельник
830-1150;
1200-1525
РК1: динамические структуры данных (9 неделя);
РК2: иерархии классов (14 неделя);
ДЗ1: практики 17-23 с отчетами (8 неделя)
Зачет (кафедральный) по практикам.
Экзамен (результат идет в диплом):
1 – С++;
2 – Сравнение возможностей С++ и Delphi;
3 – Задача (снимается по результатам рейтингов)
2

Литература
1.
2.
3.
4.
5.
Подбельский В.В. Язык С++: Учеб. пособие. – М.: Финансы и
статистика, 2006.
Иванова Г.С., Ничушкина Т.Н., Пугачев Е.К. Объектноориентированное программирование. Учеб. для вузов. – М.: Изд-во
МГТУ им. Н.Э. Баумана, 2007.
Агабеков Л.Е., Иванова Г.С. Программирование на С++. Часть 1.
Средства процедурного программирования. Учебное пособие. –
М.: МГТУ, 1997. – В электронном виде.
Агабеков Л.Е., Иванова Г.С. Программирование на С++. Часть 2.
Средства объектно-ориентированного программирования.
Учебное пособие. – М.: МГТУ, 1996. – В электронном виде.
Иванова Г.С., Ничушкина Т.Н. Консольные приложения С++ в среде
Microsoft Studio 2003 (Visual C++): Методические указания по
выполнению лабораторных работ. – М.: МГТУ им. Н.Э. Баумана,
2008. – 13 с. – В электронном виде.
3

История создания С++
BCPL (1967)
Си - 1972 Денис Ритчи
(1989 Стандарт ANSI,
1999 Новый стандарт)
С++
(начало работы:1979-й год
автор: Бьерн Страуструп)
Standard С++
(1998)
Java
Первоначальное название «С with Classes».
Основное достоинство – наличие
большого количества специальных средств и механизмов,
упрощающих написание сложных системных программ.
Основной недостаток –
незащищенный синтаксис, который часто не позволяет точно
идентифицировать ошибку на
этапе компиляции программы.
C#
4

Глава 1 Скалярные типы
данных. Основные
операторы С++
МГТУ им. Н.Э. Баумана
Факультет Информатика и системы управления
Кафедра Компьютерные системы и сети
Лектор: д.т.н., проф.
Иванова Галина Сергеевна
5

1.1 Алфавит языка. Структура программы
Алфавит языка С++ включает:
1) латинские буквы;
2) арабские цифры: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;
3) шестнадцатеричные цифры: 0..9, а..f или A..F;
4) специальные символы: + - * / = ; { } и т. д.;
5) служебные слова: do, while, for, if, else и т. д.
В отличие от Паскаля С++ различает строчные и прописные буквы.
6

Структура консольной программы
Консольная программа на С++ включает:
<Команды препроцессора>
[<Объявление типов, переменных и констант>]
[<Объявления (прототипы) функций>]
<Описание функции main()>
[<Описания других функций>]
Нотация:
<...> – означает
некоторую конструкцию С++;
[<...>] – означает, что
присутствие конструкции в операторе не
обязательно
В С++ все программы/подпрограммы называются функциями.
Функция main() – основная программа, всегда имеющая имя main,
принимающая управление от операционной системы и возвращающая его ей. Присутствие этой функции (или функции WinMain() –
для Windows) является обязательным.
Команды препроцессора – команды, выполняемые перед компиляцией программы, могут использоваться для подключения необходимых библиотек.
7

Описание функции
<Тип результата или void> <Имя функции> ([<Список параметров>])
{[ < Объявление локальных переменных и констант >]
<Операторы>
}
Если функция возвращает скалярное значение, то первое слово
описания содержит его тип. Если функция не возвращает значения,
т.е. фактически является процедурой, то указывают void – «пустой»
тип.
Независимо от наличия или отсутствия параметров скобки после
имени функции должны быть указаны обязательно. При отсутствии
параметров в скобках может быть указано void
{...} – операторные скобки, ограничивающие тело функции – аналог
begin ... end Паскаля
8

Сравнение программ, написанных на Паскале и С++
Turbo Delphi (консольный режим):
Program primer;
{$APPTYPE CONSOLE}
Microsoft Visual C++ - Пример Ex1_01:
#include
Uses SysUtils;
Var
Var
A:integer=18;
B:integer=24;
C:integer;
Function Nod(A,B:integer):integer;
Begin
while A<>B do
if A>B then A:=A-B
else B:=B-A;
Nod:=A;
End;
Begin
C:=Nod(A,B);
Writeln(‘Nod=‘, C);
End.
int a=18,
b=24,
c;
Команда
препроцессора
- подключение
библиотек
Объявление
переменных
int nod(int a,int b)
Описание
{
функции
while (a!=b)
if (a>b) a=a-b;
else b=b-a;
return a;
}
int main()
Основная
{
функция
c=nod(a,b);
printf("nod=%dn", c);
return 0;
9
}

1.2 Фундаментальные типы данных
1. Интегральные типы
Имя типа
Размер ,
байт
Интервал
значений
1
-128..127
0..255
short или _int[16] [signed] short
unsigned short
2
-32768..32767
0..65535
[int] или long или [signed] [int]
_int[32]
unsigned [int]
[signed] long
unsigned long
4
-231.. 231-1
0.. 232-1
long long или
_int[64]
8
-263.. 263-1
0.. 264-1
1
false (0), true(1)
char или _int[8]
bool
Подтипы
[signed] char
unsigned char
[signed] long long
Unsigned long long
Для совместимости с С по-прежнему считается: 0 – false; не 0 – true.
10

2. Вещественные типы
Тип
Размер,
байт
Значащих
цифр
Минимальное
положительное
число
Максимальное
положительное
число
float
4
6
1.175494351е-38
3.402823466е38
double
(long
double)
8
15
2.2250738585072014
е-308
1.797693134862318
e308
3. Неопределенный («пустой») тип void
Нельзя объявлять значения типа void, этот тип используется только
при объявлении:
 нетипизированных указателей;
 функций, не возвращающих значений (процедур).
11

1.3 Объявление переменных и констант
Формат:
[<Изменчивость>] [<Тип>]<Список идентификаторов>[=<Значение>];
где <Изменчивость> – описатель возможности изменения значений:
const – константа,
volatile – независимо меняющаяся переменная,
без указания – обычная переменная
<Тип> – описатель типа: int, char, float, double и т.д.;
<Список идентификаторов> – список имен переменных или констант;
<Значение> – начальное значение переменной или значение
константы.
Примеры:
а) int a, b;
// две целые переменные
б) float c=1.05, d; // инициализированное и неинициализ. значения
в) const unsigned char letter=‘a’; // константа – код буквы «a»
г) const a=15; // целая константа 15 – тип int – по умолчанию !
12

Перечисляемый тип
Используется для объявления совокупности поименованных целых
констант.
Формат:
enum {<Ид>[=<Целое>] [,<Ид>[<>]…]}
<Список переменных>;
Пример:
Имя
переменной
enum {SUN, MON, TUES, FRI=5, SAT} day;
SUN =0, MON = 1, TUES = 2, FRI=5, SAT=6
Константы присваиваются, начиная с нуля или с указанного значения.
13

Объявление типа
Появилось только в С++.
Формат:
typedef <Описание типа> <Имя объявляемого типа>;
Примеры:
Имя
нового типа
1) typedef unsigned int word;
2) typedef enum {false, true} boolean;
Имя
нового типа
14

1.4 Стандартные функции ввода/вывода
1 Форматный ввод /вывод
Ввод:
int scanf(<Форматная строка>,
<Список адресов переменных>);
// возвращает количество значений или EOF(-1)
Вывод:
int printf(<Форматная строка>, <Список выражений>);
где <Форматная строка> - строка, которая помимо символов содержит
спецификации формата вида для выводимых значений:
%[-] [<Целое 1>] [.<Целое 2>] <Формат>
«-» - выравнивание по левой границе,
<Целое 1> - ширина поля вывода;
<Целое 2> - количество цифр дробной части вещественного числа;
<Формат> - определяется специальной литерой.
15

Спецификации формата
d - целое десятичное число;
u - целое десятичное число без знака;
o - целое число в восьмеричной системе счисления;
x - целое число в шестнадцатеричной системе счисления (% 4x - без
гашения незначащих нулей);
f - вещественное число;
e - вещественное число в экспоненциальной форме;
c - символ;
p - указатель (адрес);
s - символьная строка.
Кроме этого, форматная строка может содержать:
n - переход на следующую строку;
n hhh - вставка символа с кодом ASCII hhh (код задается в
шестнадцатеричной системе счисления);
%% - печать знака %.
16

Примеры форматного ввода/вывода
а) i=26;
printf ("%-6d%% %o %xn", i, i, i);
26%321A 
б) scanf(”%d
%d”,&a,&b);
Вводимые значения:
1) 24
28
2) 24
28
в) scanf("%d,%d",&a,&b);
Вводимые значения: 24,28
г) scanf("%s",name);
Вводимые значения: Иванов Иван
Результат ввода: name="Иванов"
17

2 Ввод/вывод строк
Ввод:
char* gets(<Строковая переменная>);
// возвращает копию строки или NULL
Вывод:
int puts (<Строковая константа или переменная>);
Примеры:
а) puts("Это строка");
Результат: Это строка
б) gets(st);
Вводимые значения:
Иванов Иван
Результат:
st ="Иванов Иван"
18

3 Ввод/вывод символов
Ввод символа:
int getchar(); // возвращает символ или EOF
Вывод символа:
int putchar(<Символьная переменная или константа>);
Примеры:
а) ch=getchar( );
б) putchar(’t’);
19

1.5 Операции

Арифметические:
+ – сложение;
- – вычитание;
* – умножение;
/ – деление – результат – вещественное, если хотя бы одно из
чисел – вещественное, результат – целое, если делимое и делитель –
целые,
% - остаток от деления целых чисел.

Логические: ! (не), && (и), || (или).

Логические поразрядные:
- (не), & (и), | (или), ^ (исключающее или).

Отношения:
<, >, <=, >=, = = (равно), ! = (неравно).
20

Операции (2)

Сдвиги:
<идентификатор> >> <идентификатор> - сдвиг вправо,
<идентификатор> << <идентификатор> - сдвиг влево.

Порядковые:
++<идентификатор>, <идентификатор>++
(следующее);
- -<идентификатор>, <идентификатор> - - (предыдущее).

Присваивания:
= +=

-=
*=
/=
%=
&=
^=
|=
<<=
>>=
Условная:
<Выражение1>?<Выражение2>:<Выражение3>
21

Приоритет операций
1. ( ) [ ] -> :: .
2. ! (не) + - ++ -- &(адрес) *(указатель) sizeof new delete
3. .* ->*
4. * / %
5. + - (бинарные)
6. << >>
7. < <= > >=
8. = = ! =
9. &(поразрядное и)
10. ^(исключающее или)
11. | (поразрядное или)
12. &&
13. ||
14. ?=
15. = *= /= %= += -= &= ^= |= <<= >>=
16. ,
22

1.6 Оператор «Выражение»
Формат:
<Выражение1>[,<Выражение2>,...[,<Выражение n>]...]
Примеры:
a) int a=10, b=3; float ret; ret=a/b;
b=1, c=2
б) c=1; b=c++;
в) c=1;
sum=++c;
ret=3
c=2, sum=2
г) c=a<<4;
эквивалентно с=a*16;
д) a+=b;
эквивалентно a=a+b;
е) a=b=5;
эквивалентно b=5; a=b;
ж) с=(a=5, b=a*a);
эквивалентно a=5; b=a*a; c=b;
з) a=(b=s/k)+n;
эквивалентно b=s/k; a=b+n;
и) c=(a>b)?a:b;
если a>b, то с=a, иначе с=b
23

1.7 Блок операторов
Блок операторов используется в конструкциях ветвления,
выбора и циклов, предусматривающих один оператор.
Формат:
{ <Оператор>;… <Оператор>;}
Пример:
{
f=a+b;
a+=10;
}
Точка с запятой в
отличие от Паскаля
является частью
оператора, а потому
не может опускаться
перед фигурной
скобкой.
24

1.8 Оператор условной передачи управления
if (<Выражение>) <Оператор;> [ else <Оператор;>]
Примеры:
а) if (!b)
puts("с - не определено"); // если b=0, то – ошибка,
else {c=a/b; printf("c=%dn", c);} // иначе - выводится с.
б) if ((c=a+b)!=5) c+=b;
else c=a;
в) if ((ch=getchar())==′q′)
// если в ch введено q,
puts ("Программа завершена."); // то ...
else puts ("Продолжаем работу...");
// иначе ...
г) ch=′a′;
if ((oldch=ch, ch=′b′)==′a′)puts("Это символ ′a′n");
else puts("Это символ ′b′n");
25

1.9 Оператор выбора
switch (<выражение>)
{
case <элемент>: <операторы;>
case <элемент>: <операторы;>
...
[ default : <операторы;>]
}
Пример:
switch
{ case
case
case
case
case
case
case
}
(n_day)
1:
2:
3:
4:
5: puts("Go work!"); break;
6: printf("%s","Clean the yard and");
7: puts("relax!");
26

1.10 Операторы циклов
1. Оператор цикла while
while (<Выражение>) <Оператор>
Пример Ex1_02. Вычислить при x > 1 сумму ряда S=1+1/x1/x2+1/x3-... с точностью .
#include
#include
void main(int argc, char* argv[])
{ float s, r,x,eps;
puts("Input x, eps:");
scanf("%f %f", &x, &eps);
if (x<=1) puts("Error.");
else { s=1;
r=1/x;
while (fabs(r)>eps){ s+=r; r=-r/x; }
printf("Result= %f.n", s);
}
}
27

2. Оператор цикла for
for (<Выражение1>;<Выражение2>;<Выражение3>)<Оператор>;
Эквивалентно:
<Выражение1>
while (<Выражение2>)
{<Оператор>;
<Выражение3>;
}
Пример Ex1_03. Вычислить сумму первых десяти натуральных чисел.
#include
int main(int argc, char* argv[])
{ int i,s;
for (i=1,s=0;i<=10;i++) s+=i;
printf("Sum=%dn",s);
return 0;
}
28

3. Оператор цикла do ... while
do <Оператор > while (<Выражение>) ;
Пример. Игнорировать ввод значения, выходящего за
пределы заданного интервала.
do {
printf("Введите значение от %d до % d : ",low, high);
scanf(" %d ", &a);
}
while (ahigh);
29

1.11 Неструктурные операторы передачи
управления
1. Оператор безусловного перехода goto
goto <Метка перехода>;
Пример:
again: x=y+a;
...
goto again;
30

2. Оператор досрочного завершения break
break;
Пример Ex1_04. Суммирование до 10 чисел
вводимой последовательности. При вводе
отрицательного числа работа программы
завершается.
#include
void main()
{ int s=0, i, k;
puts("Input up to 10 numbers.");
for (i=1; i<11; i++)
{
scanf("%d",&k);
if (k<0) break;
s+=k;
}
printf("Result = %d.n",s);
}
break
31

3. Оператор продолжения continue
continue;
Пример Ex1_05. Программа суммирует 10
целых положительных чисел.
#include
void main()
{ int s=0,i=1,k;
puts("Input 10 numbers.");
while(i<11)
{ scanf("%d",&k);
if (k<0) { puts("Error.");
continue;
}
s+=k; i++;
}
printf("Result = %d.n",s);
}
continue
32

Пример Ex1_06. Вывод таблицы кодов
#include
int main(int argc, char* argv[ ])
{
int i,i1,in,col;
puts("Input first and last values");
scanf("%d %d",&i1,&in);
puts("Input colon number");
scanf("%d",&col);
for(i=i1;i<=in;i++)
if (iprintf("%c-%3d;%c",i,i,((i-i1+1)%col!=0)?' ':'n');
else printf("%c - %3d.",i,i);
return 0;
}
-32; !–33; "-34; #-35;
$-36; %-37; &-38; ′ -39.
33

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5259
Авторов
на СтудИзбе
421
Средний доход
с одного платного файла
Обучение Подробнее