The Physics Department,
Southern Federal University,
Russia [email protected]
Доцент кафедры прикладной
электродинамики и
компьютерного
моделирования, к.ф.-м.н.
Губский Д.С.
Технологии программирования (часть 1)
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Задачи
2
Основная задача — обеспечить фундамент для
овладения в дальнейшем другими языками,
основанными на Си (Java, PHP, JavaScript и др.).
Язык Си рассматривается не столько как
инструмент, сколько как основа современного
программисткого мировоззрения.
Понятие технологии программирования. Методы и
приемы создания приложений с помощью языков
программирования.
Язык Си.
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Содержание курса
3
Характеристики языка. Структура программы.
Принципы структурного программирования. Алгоритмы.
Типы данных. Переменные и константы. Описание
переменных. Массивы. Основные арифметические
операции. Циклы. Условные операторы. Функции.
Передача параметров при вызове функций.
Глобальные и локальные переменные. Строки.
Указатели. Структуры. Работа с файлами.
Современные методы программирования. Понятие об
объектном программировании и его основы. Развитие
принципов модульности. Понятие объекта. Объектные
модели предметных областей. ООП как инструмент
повышения надежности программ. Классы и все, что
связано с ними.
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
В результате вы будете
4
• знать язык программирования С++, его основные возможности, структуру программы, принципы программирования и современные методы программирования;
• уметь решить поставленную задачу, путем написания необходимой программы на языке С++, применять полученные знания для оптимального построения физико-математических моделей различных процессов;
• иметь представление об объектно-ориентированном программировании, его преимуществах и недостатках; современном состоянии в области информационных технологий и путях ее дальнейшего развития; ориентироваться в типовых задачах и представлять пути их решения.
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Литература
5
• Керниган Б., Ритчи Д. Язык программирования Си.
Москва, "Финансы и статистика", 1992.
• Страуструп Б. Язык программирования С++. -
Киев, "Диа-Софт", 1993 г. (Страуструп, Бьерн. Язык программирования C++: специальное издание
/ Бьерн Страуструп ; пер. с англ. С. Анисимова, М. Кононова под ред. Ф.
Андреева, А. Ушакова - Москва: Бином-Пресс, 2007. - 1104 с.)
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Литература
6
• Пахомов Б.И. С/С++ и MS Visual C++ 2008 для
начинающих. / СПб.: БХВ -Петербург, 2009. – 624 с.
• Пахомов Б.И. С/С++ и MS Visual C++ 2012 для
начинающих. / СПб.: БХВ-Петербург, 2013. – 512 с.
• Прохоренок Н.А. Программирование на С++ в
Visual Studio 2010 Express / Самиздат, 2010. – 550 с.
• Интернет
• Библиотека MSDN https://msdn.microsoft.com/ru-ru
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Литература
7
• Грис Д. Наука программирования. Москва, "Мир",
1984.
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Visual Studio 2015
https://www.visualstudio.com/ru/
(Версия community)
Dev-C++
среда разработки приложений для Си/С++
Термин IDE
Интегрированная среда разработки – IDE
(Integrated Development Environment)
ПО
8
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Лекции
Практика
Экзамен
Что будет
9
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ 10
Понятие технологии программирования
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
С++
11
Язык С++
История
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
История
12
Вдохновлённые языком ALGOL-60 Математическая
лаборатория Кембриджского Университета совместно с
Компьютерным отделом Лондонского университета
создали в 1963 году язык CPL (Combined Programming
Language).
Язык CPL был сложным, и в 1966 году был создан язык
BCPL, основное предназначение которого заключалось
в написании компиляторов.
BCPL послужил предком для языка B (Би) (1969 г.).
Язык B (Би) был использован для написания самых
ранних версий UNIX. Именно этот язык послужил
непосредственным предшественником языка C (Си).
Язык программирования Си был разработан в стенах
Bell Labs в период с 1969 по 1973 годы.
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Истроя
13
Успех Си в основном связан с тем, что на нём была
написана значительная часть операционной системы
UNIX.
Первая книга, посвящённая языку Си была написана
Керниганом и Ритчи в 1978 году и вышла в свет под
названием «Язык программирования Си».
В конце 1970-х годов, язык Си начал вытеснять BASIC.
В 1980-х годах он был адаптирован под архитектуру
IBM-PC, что привело к значительному скачку его
популярности.
.
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
История
14
В то же время (начало 1980-х годов) Бьярн Страуструп
начал разработку языка программирования, который бы
сочетал в себе синтаксис популярного языка Си и
концепцию объектно-ориентированного
программирования.
В 1983 году произошло переименование языка из «Cи с
классами» в «язык программирования C++».
C++ компилируемый язык программирования общего
назначения, сочетает свойства как высокоуровневых,
так и низкоуровневых языков программирования.
Название «язык программирования C++» происходит от
языка программирования C, в котором унарный
оператор ++ обозначает инкремент переменной.
.
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
История
15
Первый коммерческий выпуск состоялся в октябре 1985
года.
Разработка американского стандарта Си началась в
1983 под покровительством Американского
Национального Института Стандартов (ANSI).
Язык подвергся небольшим изменениям в 1995.
Более значительные изменения случились в 1999 году,
когда был опубликован стандарт ISO/IEC 9899:1999.
Язык, описанный в этом стандарте, обычно называют
C99.
В 2011 году вместе с редакцией языка Си++ был
выпущен стандарт C11.
……………….
.
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ 16
Структура программы
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Структура программы
17
// Start.cpp: определяет точку входа для
консольного приложения.
//
#include "stdafx.h"
#include <iostream>
int main()
{
std::cout << "First Programm!" << "\n";
return 0;
}
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Структура программы
18
// Start.cpp: определяет точку входа
//
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
cout << "First Programm!" << endl << endl;
return 0;
}
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Пример первой программы
19
#include "stdafx.h“
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
cout << "First Projects" << "\n";
return 0;
}
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Пример первой программы
20
#include "stdafx.h“
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
cout << "First Projects" << "\n";
return 0;
}
#include "stdafx.h“
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
std ::cout << "First Projects" << "\n";
return 0;
}
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Локализация
21
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "RUS");
cout << "First Programm!" << endl << endl;
cout << "Моя первая программа!" << endl << endl;
return 0;
}
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Пример программы
22
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "RUS");
cout << "Моя первая программа!" << endl << endl;
double x, y, z;
x = 3.0;
y = 4.5;
z = y / x;
cout << "z = y / x = " << y << " / " << x << " = " << z << "\n"
<< endl;
return 0;
}
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Пример программы
23
Результат работы
Моя первая программа!
z = y / x = 4.5 / 3 = 1.5
Для продолжения нажмите любую клавишу . . .
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Пример программы
24
int main()
{
setlocale(LC_ALL, "RUS");
cout << "Моя первая программа!" << endl << endl;
double x, y, z;
x = 3.0;
y = 4.5;
z = y / x;
cout << "z = y / x = " << y << " / " << x << " = " << z << "\n" << endl;
cout << "Введите x = ";
cin >> x;
z = y / x;
cout << "z = y / x = " << y << " / " << x << " = " << z << "\n";
return 0;
}
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Структура программы
25
#include "stdafx.h“
#include <iostream>
using namespace std;
…..
//описание прототипов используемых функций
…..
int _tmain(int argc, _TCHAR* argv[])
{
// текст основной программы
…….
…….
return 0;
}
// описание используемых функций
…….
…….
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Пример программы
26
#include "stdafx.h"
#include <iostream>
using namespace std;
// описание прототипа
// пользовательских функций
int sum(int x, int y);
int main()
{
//описание переменных
int i, j, k, n;
//ввод данных
cout << “Input i = ";
cin >> i;
cout << “Input j = ";
cin >> j;
k=sum(i,j); //вызов ф-ции
//вывод результатов
cout << "k=i+j= " << i << " + " << j << "=" << k << "\n";
return 0;
}
// описание пользовательских
// функций
int sum(int x, int y)
{
int z;
z=x+y;
return z;
}
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Структура программы
27
#include "stdafx.h“
#include <iostream>
using namespace std;
…….
// описание используемых функций
…….
…….
int _tmain(int argc, _TCHAR* argv[])
{
// текст основной программы
…….
…….
return 0;
}
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ 28
Интерфейс пакета
Microsoft Visual Studio 2015
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
MS VS 2015
29
Запускаем Microsoft
Visual Studio 2015
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
MS VS 2015
30
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Создание нового проекта MS VS 2015
31
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Создание нового проекта MS VS 2015
32
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Создание нового проекта MS VS 2015
33
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Создание нового проекта MS VS 2015
34
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Новый проект MS VS 2015
35
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
MS VS 2015
36
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Запуск проекта на выполнение
37
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Консольное окно выполнения
38
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Консольное окно выполнения
39
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
MS VS 2015
40
Настройка цвета, языка и т.д.
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
MS VS 2015
41
Настройка цвета, языка и т.д.
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Выбор и открытие существующего проекта
42
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Выбор и открытие существующего проекта
43
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Выбор и открытие существующего проекта
44
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ 45
Интерфейс пакета
Dev-C++
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Dev-C++
46
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Изменить «язык меню»
Сервис /
Параметры
среды
Dev-C++
47
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
С++
48
Язык С++
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Лексемы языка С++
49
Лексе́ма (от др.-греч. λέξις — слово, выражение, оборот речи) Лексема(лингвистика) — слово как абстрактная единица естественного языка.
Лексема(информатика) — последовательность допустимых символов языка программирования, имеющая смысл для транслятора.
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Лексемы языка С++
50
В алфавит входят: •буквы латинского алфавита (строчные и прописные – разные!!!)
•цифры (0-9)
•спец. знаки
Из символов формируются лексемы: •Идентификаторы
•Константы
•Знаки операций
•Ключевые слова
•Разделители
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Комментарии С++
51
// ….. Все после этих символов до конца стоки
считается комментарием
/*
все, что расположено между этими знаками –
комментарий
*/
Кому и зачем они нужны?
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Блоки С++
52
{
Все что между скобками является
блоком и рассматривается как одно
целое
}
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Блоки С++
53
{….. Все что между скобками является блоком и рассматривается как одно целое
} Блоки могут быть вложены друг в друга
{ //начало 1-го блока
{ //начало 2-го блока
{ //начало 3-го блока
} //конец 3-го блока
} // конец 2-го блока
} // конец 1-го блока
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
С++
54
Стиль написания.
{
……….
{
……….
{
……….
}
……….
}
……….
}
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
С++
55
Стиль написания.
«Отступы»
«Лесенка»
{ //начало 1-го блока
{ //начало 2-го блока
{ //начало 3-го блока
} //конец 3-го блока
} // конец 2-го блока
} // конец 1-го блока
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Объявление переменных С++
56
Например
int a, b=12, c;
float x=12.3, S=0.0, k;
[спецификатор класса памяти] <спецификация типа>
<идентификатор>[=<инициализатор>] [, <идентификатор>[=<инициализатор>]]
……. [, <идентификатор>[=<инициализатор>]];
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Имена переменных
57
Пример
Имя - идентификатор
это слово (лексема), составленное из допустимых символов алфавита языка программирования, не являющееся знаком некоторой операции или разделителем
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Типы переменных С++
58
Целые char 1 байт
int от реализации short int 2 байт
long int 4 байт
для представления без знаковых целых переменных используется приставка unsigned
unsigned char unsigned int
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Типы переменных С++
59
Для представления чисел с плавающей точкой
float 4 байта
double 8 байт
Неопределенный void
Перечисление enum
Модификатор const
Суффиксы u – без знаковое, L – длинное
long int lk;
lk=5L;
unsigned int ik;
ik=5u;
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Числовые константы С++
60
{
int p,v,s;
p=63;
v=077;
s=0x3f;
printf("p= %3d v= %3d s= %3d \n",p,v,s);
p=12; //десятичная система
v=012; //восьмиричная
s=0x12; //16-ричная
printf("p= %3d v= %3d s= %3d \n",p,v,s);
return 0;
} Результат выполнения программы
p= 63 v= 63 s= 63
p= 12 v= 10 s= 18 Для продолжения нажмите любую клавишу . . .
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Перечисления С++
61
{
enum t1{p,v,s,c,pt,sb=0,vs};
printf("p= %3d v= %3d s= %3d c= %3d pt= %3d sb=
%3d vs= %3d\n",p,v,s,c,pt,sb,vs);
enum t2{p1=1,v1,s1,c1,pt1,sb1,vs1};
printf("p= %3d v= %3d s= %3d c= %3d pt= %3d sb=
%3d vs= %3d\n",p1,v1,s1,c1,pt1,sb1,vs1);
}
Результат выполнения программы p= 0 v= 1 s= 2 c= 3 pt= 4 sb= 0 vs= 1
p= 1 v= 2 s= 3 c= 4 pt= 5 sb= 6 vs= 7 Для продолжения нажмите любую клавишу . . .
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Определения размеров переменных
62
Используется функция sizeof(i),
которая возвращает длину аргумента в байтах
cout << "Razmer tipov!\n";
int i;
cout << "int i = " << sizeof(i) << " bait\n";
short int j;
cout << "short int j = " << sizeof(j) << " bait\n";
long int k;
cout << "long int k = " << sizeof(k) << " bait\n";
unsigned int ii;
cout << "unsigned int ii = " << sizeof(ii) << “bait\n\n";
float x;
cout << "float x = " << sizeof(x) << " bait\n";
double y;
cout << "double y = " << sizeof(y) << " bait\n";
Razmer tipov!
int i = 4 bait
short int j = 2 bait
long int k = 4 bait
unsigned int ii = 4 bait
float x = 4 bait
double y = 8 bait Для продолжения нажмите
любую клавишу . . .
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Программа перевода температур
63
{
int f;
float c;
for(f=32; f<100;f++)
{
c=(f-32)*5/9;
printf("f= %3d c=%5.1f\n",f,c);
}
}
f= 32 c= 0.0
f= 33 c= 0.0
f= 34 c= 1.0
f= 35 c= 1.0
f= 36 c= 2.0
f= 37 c= 2.0
f= 38 c= 3.0
f= 39 c= 3.0
f= 40 c= 4.0
f= 41 c= 5.0
f= 42 c= 5.0
f= 43 c= 6.0
f= 44 c= 6.0
f= 45 c= 7.0
f= 46 c= 7.0 f= 47 c= 8.0
f= 48 c= 8.0
f= 49 c= 9.0
f= 50 c= 10.0
f= 51 c= 10.0
f= 52 c= 11.0
f= 53 c= 11.0
f= 54 c= 12.0
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Преобразование типов С++
64
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int i,j,k;
i=1;
j=2;
k=i/j; cout << "i = " << i << " j = " << j << "\n";
cout << "k = " << i << "/" << j << " = " << k << "\n"; //k=0
double x;
x=i/j; cout << "x = " << i << "/" << j << " = " << x << "\n"; // x=0
x=1.0*i/j; cout << "x = " << i << "/" << j << " = " << x << "\n"; //x=0.5
return 0;
}
Результаты работы:
i = 1 j = 2
k = 1/2 = 0
x = 1/2 = 0
x = 1/2 = 0.5 Для продолжения нажмите любую клавишу . . .
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Преобразование типов С++
65
1)
int n;
double s;
s=0.0;
for(n=1;n<=10;n=n+1)
s=s+n/2;
cout << "s = " << s << "\n"; //s=25
2)
int n;
double s;
s=0.0;
for(n=1;n<=10;n=n+1)
s=s+n/2.0;
cout << "s = " << s << "\n"; // s = 27.5
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Преобразование типов С++
66
3) h=g*t*t/2 (считать g=10 м/с/с)
int t,g;
double h;
g=10;
t=1;
h=(t*t)/2*g;
cout << "h = " << h << "m za t = " << t << " cek \n";
h=(t*t)/2.0*g;
cout << "h = " << h << "m za t = " << t << " cek \n";
h=((double)t*t)/2*g;
cout << "h = " << h << "m za t = " << t << " cek \n"; Результаты работы:
h = 0m za t = 1 cek
h = 5m za t = 1 cek
h = 5m za t = 1 cek Для продолжения нажмите любую клавишу . . .
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Преобразование типов С++
67
using namespace std;
int main()
{
setlocale(LC_ALL, "RUS");
double x; //сколько отдавать ежемесячно
int dolg;
cout << "Введите сумму долга - ";
cin >> dolg;
x = dolg / 12;
cout << "Надо отдавать ежемесячно = " << x << endl;
double otdal;
otdal = x*12;
cout << "Отдам через 12 месяцев = " << otdal << endl;
return 0;
}
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Преобразование типов С++
68
Введите сумму долга - 18
Надо отдавать ежемесячно = 1
Отдам через 12 месяцев = 12
Результат работы
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Преобразование типов С++
69
double x; //сколько отдавать ежемесячно
int dolg;
cout << "Введите сумму долга - ";
cin >> dolg;
x = dolg / 12;
cout << "Надо отдавать ежемесячно = " << x << endl;
double otdal;
otdal = x*12;
cout << "Отдам через 12 месяцев = " << otdal << endl;
Введите сумму долга - 18
Надо отдавать ежемесячно = 1
Отдам через 12 месяцев = 12
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Взятие модуля (деление по модулю) Операция %
70
int i,j,k;
i=9;
j=4;
k=i%j;
cout << "k = " << i << " % " << j << " = " << k << "\n";
i=12;
j=4;
k=i%j;
cout << "k = " << i << " % " << j << " = " << k << "\n";
i=3;
j=4;
k=i%j;
cout << "k = " << i << " % " << j << " = " << k << "\n";
Результаты работы:
k = 9 % 4 = 1
k = 12 % 4 = 0
k = 3 % 4 = 3 Для продолжения нажмите любую клавишу . . .
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Операторы присваивания и выражения
71
double a, b, c, d;
d=2.4;
a=b=c=d+5.6; cout << "a = " << a << " b = " << b << " c = " << c << " d = " << d <<
"\n";
d=2.4;
a=b=(c=2.2)+d+5.6; cout << "a = " << a << " b = " << b << " c = " << c << " d = " << d <<
"\n";
//----------------------------------------------------
a=3.6;
a=a+2.2; cout << "a = " << a << "\n";
a=3.6;
a+=2.2; cout << "a = " << a << "\n";
a = 8 b = 8 c = 8 d = 2.4
a = 10.2 b = 10.2 c = 2.2 d = 2.4
a = 5.8
a = 5.8
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Операторы присваивания и выражения
72
double x,y;
y=3.3;
x=1.2;
x=x*(y+1.0);
cout << "x = " << x << "\n";
y=3.3;
x=1.2;
cout << "x = " << x << " y = " << y << "\n";
x*=(y+1.0);
cout << "x = " << x << "\n";
y=3.3;
x=1.2;
cout << "x = " << x << " y = " << y << "\n";
x*=y+1.0;
cout << "x = " << x << "\n";
x = 5.16
x = 1.2 y = 3.3
x = 5.16
x = 1.2 y = 3.3
x = 5.16
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Сдвиги (только к целым типам)
73
int i ,k;
//сдвиг влево == умножение
i=7;
cout << "i = " << i << "\n";
k=i<<1;
cout << "k = " << k << "\n";
k=i<<2;
cout << "k = " << k << "\n"; //сдвиг вправо == деление
i=13;
cout << "i = " << i << "\n";
k=i>>1;
cout << "k = " << k << "\n";
k=i>>2;
cout << "k = " << k << "\n";
i=24;
cout << "i = " << i << "\n";
k=i>>1;
cout << "k = " << k << "\n";
k=i>>2;
cout << "k = " << k << "\n";
i = 7
k = 14
k = 28
i = 13
k = 6
k = 3
i = 24
k = 12
k = 6
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Инкремент и декремент
74
int n,x;
n=3;
n++;
cout << "n = " << n << "\n";
++n;
cout << "n = " << n << "\n";
x=n++;
cout << "n = " << n << " x = " << x << "\n";
x=++n;
cout << "n = " << n << " x = " << x << "\n"; n = 4
n = 5
n = 6 x = 5
n = 7 x = 7
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
А что будет?
75
int n,x;
int y;
n=3;
cout << "n = " << n << "\n";
x=n+++3;
cout << "n = " << n << " x = " << x << "\n";
cout << "\n" << "n = " << n << "\n";
x=++n+2;
cout << "n = " << n << " x = " << x << "\n";
cout << "n = " << n << "\n";
y=3;
x=n*++y;
cout << "n = " << n << " x = " << x << "\n";
cout << "\n" << "n = " << n << "\n";
x=++n*2;
cout << "n = " << n << " x = " << x << "\n";
n = 3
n = 4 x = 6
n = 4
n = 5 x = 7
n = 5
n = 5 x = 20
n = 5
n = 6 x = 12
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Приоритет операций и порядок их выполнения
76
Прио-
ритет Операция Примечание
Порядок
выполнения
1
:: .
[ ]
( )
( )
разрешение контекста,
извлечение
индексирование массива
вызов функции
преобразование типа
слева – направо
2
++ -- ~ !
- +
&
*
new,delete
sizeof
унарный -, унарный +
получение адреса
разрешение указателя
работа с динамической
памятью
определение размера
справа – налево
3
*
/
%
умножение
деление
остаток
слева – направо
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Приоритет операций и порядок их выполнения
77
Прио-
ритет Операция Примечание
Порядок
выполнения
4 * .* извлечение слева - направо
5 +
-
бинарное сложение
бинарное вычитание
слева - направо
слева - направо
6 << >> сдвиги слева - направо
7 < <= > => сравнение слева - направо
8 = = != равно не равно слева - направо
9 & побитовое И слева - направо
10 ^ XOR (исключающее ИЛИ) слева - направо
11 | побитовое ИЛИ слева - направо
12 && И - логическое слева - направо
13 || ИЛИ - логическое слева - направо
14 ?: тернарная операция справа - налево
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Приоритет операций и порядок их выполнения
78
Прио-
ритет Операция Примечание
Порядок
выполнения
15
= *=
/= %= +=
и т.д.
операция присвоения справа - налево
16 , следование слева - направо
Первый приоритет является наивысшим.
A=F(x)+G(X)
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Приоритет операций и порядок их выполнения
79
Операторы
(знаки операций) Ассоциативность
() [] . -> Слева направо
+ - ~ ! * & ++ --
sizeof приведение типа Справа налево
* / % Слева направо
+ – Слева направо
>> << Слева направо
< > <= >= Слева направо
== != Слева направо
& Слева направо
^ Слева направо
| Слева направо
&& Слева направо
|| Слева направо
? : Справа налево
= *= /= %= +=
-= <<= >>= &= |=
^= Справа налево
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Форматный вывод
80
#include <stdio.h>
int printf( const char *format, ... );
Вывод форматированной строки на стандартный
вывод.
Возвращает кол-во выведенных (напечатанных) литер.
Управляющая последовательность строки формата
%[-|+][ширина][.точность]тип
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Форматный вывод
81
Значения типов:
d, i — десятичное знаковое число, размер по-умолчанию, sizeof(
int ). По-умолчанию записывается с правым выравниванием,
знак пишется только для отрицательных чисел
o — восьмеричное u — десятичное беззнаковое число
x и X — шестнадцатеричное число
f и F — числа с плавающей запятой. По-умолчанию выводятся с
точностью 6, если число по модулю меньше единицы, перед
десятичной точкой пишется 0.
e и E — числа с плавающей запятой в экспотенциальной форме
записи (вида 1.1e+44)
g и G — число с плавающей запятой; форма представления
зависит от значения величины (f или e)
a и A — число с плавающей запятой в шестнадцатеричном виде
c — вывод символа s — вывод строки с нулевым завершающим
байтом
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Форматный вывод
82
int i,j;
i=12;
j=543210;
float x,y;
x=123.45678;
y=0.1415;
double a,b;
a=3.1415926536;
b=0.000123;
printf("%d %f %e\n",i,x,a); printf("%d %f %e\n",j,y,b);
printf("\n\n");
printf("%6d %12.6f %9.6e\n",i,x,a);
printf("%6d %12.6f %9.6e\n",j,y,b);
printf("\n\n");
printf("%-6d %-12.6f %-9.6e\n",i,x,a);
printf("%-6d %-12.6f %-9.6e\n",j,y,b);
printf("\n\n");
printf(" i,j x,y a,b \n");
printf("%6d %12.6f %9.6e\n",i,x,a);
printf("%6d %12.6f %9.6e\n",j,y,b);
Результат работы
12 123.456779 3.141593e+000
543210 0.141500 1.230000e-004
12 123.456779 3.141593e+000
543210 0.141500 1.230000e-004
12 123.456779 3.141593e+000
543210 0.141500 1.230000e-004
i,j x,y a,b
12 123.456779 3.141593e+000
543210 0.141500 1.230000e-004 Для продолжения нажмите любую клавишу . . .
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Форматный вывод
83
char t[]="qwertyuiopasdfghjklz";
char t1[]="12345678901234567890";
printf("%s \n",t1);
printf("%20.20s \n",t);
printf("%15.15s \n",t);
printf("%15.10s \n",t);
printf("%-15.10s \n",t);
printf("\n\n\n");
printf("%30.30s \n",t);
printf("%30.20s \n",t);
printf("%-30.20s \n",t);
printf("\n\n\n");
Результат работы
12345678901234567890
qwertyuiopasdfghjklz
qwertyuiopasdfg
qwertyuiop
qwertyuiop
qwertyuiopasdfghjklz
qwertyuiopasdfghjklz
qwertyuiopasdfghjklz Для продолжения нажмите любую клавишу . . .
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Форматный ввод
84
int scanf(const char *format, адрес, ..);
Пример
char str[80], str2[80]; int i;
/* читается строка и целое значение */
scanf("%s%d", str, &i);
// в переменную str считывается не более 79 символов
scanf("%79s", str);
/* целое, расположенное между двумя строками,
пропускается */
scanf("%s%*d%s", str, str2);
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Форматный ввод
85
char text[10];
scanf("%s",text); //можно 9 символов
printf("%s\n",text);
int i;
float y;
double x;
scanf("%d %f %lf",&i,&y,&x);
printf("%d %f %f\n",i,y,x);
scanf("%*2s %d %f %lf",&i,&y,&x);
printf("%d %f %f\n",i,y,x);
printf("\ni = ");
scanf("%i",&i);
printf("\n\n");
printf("%d %f %f\n",i,y,x);
Результат работы
qwerty
qwerty
1 2.3 4.67
1 2.300000 4.670000
i=234 4.5 6.789
234 4.500000 6.789000
i = 32
y = 4.56
x = 7.6543
32 4.560000 7.654300 Для продолжения нажмите любую клавишу . . .
printf("\ny = ");
scanf("%f",&y);
printf("\nx = ");
scanf("%lf",&x);
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Логическое выражение
86
Логическое выражение «ИСТИНА»,
если отлично от нуля
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Логическое выражение
87
> >= < <= != ==
&& - «И»
|| - «ИЛИ»
Пример
i<=10
i>2 && i<4
& - побитовое «И»
| - побитовое «ИЛИ»
^ - исключающее «ИЛИ»
~ - побитовое отрицание
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Логическое выражение
88
int i=0, j=2;
cout << "i= " << i << " j= " << j << "\n";
i=j>3;
cout << "i=j>3= " << i <<"\n";
i=j<3;
cout << "i=j>3= " << i <<"\n";
i=j!=3;
cout << "i=j!=3= " << i <<"\n";
i=j==3;
cout << "i=j==3= " << i << " j= " << j << "\n“;
Результат
работы
i= 0 j= 2
i=j>3= 0
i=j>3= 1
i=j!=3= 1
i=j==3= 0 j= 2
«ИСТИНА», если отлично от нуля
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Циклы (цикл for)
89
for (выр_1; выр_2; выр_3)
инстукция;
for (выр_1; выр_2; выр_3){
инстукция;
инстукция;
тело цикла
} выр_1 - начало
выр_2 - логическое выражение
выр_3 - шаг
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Ццкл for
90
int i, beg;
double s;
beg=1;
s=0.0;
for (i=beg;i<=10;i++)
s=s+i/2.0;
cout << "s = " << s << "\n";
Результат
s = 27.5
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Ццкл for
91
beg=10;
s=0.0;
for (i=beg;i<=10;i++)
s=s+i/2.0;
cout << "s = " << s << "\n";
beg=11;
s=0.0;
for (i=beg;i<=10;i++)
s=s+i/2.0;
cout << "s = " << s << "\n“;
Результат
s = 5
s = 0
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Ццкл for
92
double b, s;
b=1.5;
s=0.0;
for (int i=1;s<6.0;b=b+0.5){
s=s+i/2.0+b;
cout << "i = " << i << "\n";
cout << "b = " << b << "\n";
cout << "s = " << s << "\n";
}
cout << "Vsego s = " << s << "\n";
i = 1
b = 1.5
s = 2
i = 1
b = 2
s = 4.5
i = 1
b = 2.5
s = 7.5
Vsego s = 7.5
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Ццкл for
93
double b, s;
b=1.5;
s=0.0;
for (int i=1;s<6.0;b=b+0.5, i++){
s=s+i/2.0+b;
cout << "i = " << i << "\n";
cout << "b = " << b << "\n";
cout << "s = " << s << "\n";
}
cout << "Vsego s = " << s << "\n";
i = 1
b = 1.5
s = 2
i = 2
b = 2
s = 5
i = 3
b = 2.5
s = 9
Vsego s = 9
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Цикл while
94
while (выр_1){
инстукция;
инстукция;
тело цикла
}
Цикл выполняется пока выр_1 – «ИСТИНА»
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Цикл while
95
int i, beg;
double s;
s=0.0;
beg=1;
i=beg;
while (i<=10){
s=s+i/2.0;
i++;
}
cout << "s = " << s << "\n";
Результат выполнений
s = 27.5
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Цикл while
96
int i, beg;
double s;
s=0.0;
beg=11;
i=beg;
while (i<=10){
s=s+i/2.0;
i++;
}
cout << "s = " << s << "\n“;
Результат выполнений
s = 0
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Циклы (цикл do)
97
do {
инстукция;
инстукция;
тело цикла
} while (выр_1);
Цикл выполняется пока выр_1 – «ИСТИНА»
Цикл выполняется всегда ОДИН раз как минимум
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Цикл do
98
int i, beg;
double s;
s=0.0;
beg=1;
i=beg;
do {
s=s+i/2.0;
i++;
} while (i<=10);
cout << "s = " << s << "\n";
Результат выполнений
s = 27.5
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Цикл do
99
int i, beg;
double s;
s=0.0;
beg=11;
i=beg;
do {
s=s+i/2.0;
i++;
} while (i<=10);
cout << "s = " << s << "\n"; Результат выполнений
s = 5.5
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
«Условия»
100
if (выр_1)
инстукция;
else
инстукция;
выр_1 «истина», если отлично от нуля
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
«Условия»
101
if (выр_1){
инстукция;
инстукция;
инстукция;
}
else {
инстукция;
инстукция;
инстукция;
}
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
«Условия»
102
if (выр_1){
инстукция;
инстукция;
инстукция;
}
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
«Условия»
103
double a, b, c;
a=1.1;
b=2.2;
if(a>b)
c=a;
else
c=b;
cout << "c = " << c << "\n";
c = 2.2
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
«Условия»
104
int a=2, b=7, c=3;
if(a>b)
if (b<c)
c=b;
else
c=a;
cout << "c = " << c << "\n";
Чему равно c = ???
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
«Условия»
105
int a=2, b=7, c=3;
if(a>b)
if (b<c)
c=b;
else
c=a;
cout << "c = " << c << "\n";
c = 3
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
«Условия»
106
for (int i=1; i<=5;i++){
cout << "i = " << i << "\n";
if(i==1)
cout << " 1 " << "\n";
else if(i==2)
cout << " 2 " << "\n";
else if(i==3)
cout << " 3 " << "\n";
else
cout << " > 3 " << "\n";
}
Результат работы
i = 1
1
i = 2
2
i = 3
3
i = 4
> 3
i = 5
> 3
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
«Условия»
107
int a, b;
a=1;
b=0;
cout << " a = " << a << " b = " << b << "\n";
if(a==b)
cout << " a равно b " << "\n";
else
cout << " a НЕ равно b " << "\n";
cout << " a = " << a << " b = " << b << "\n";
if(a=b)
cout << " a равно b " << "\n";
else
cout << " a НЕ равно b " << "\n";
cout << " a = " << a << " b = " << b << "\n“;
Результат работы
a = 1 b = 0
a НЕ равно b
a = 1 b = 0
a НЕ равно b
a = 0 b = 0 Для продолжения нажмите
любую клавишу . . .
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
«Условия»
108
int a, b;
a=1;
b=2;
cout << " a = " << a << " b = " << b << "\n";
if(a==b)
cout << " a равно b " << "\n";
else
cout << " a НЕ равно b " << "\n";
cout << " a = " << a << " b = " << b << "\n";
if(a=b)
cout << " a равно b " << "\n";
else
cout << " a НЕ равно b " << "\n";
cout << " a = " << a << " b = " << b << "\n“;
Результат работы
a = 1 b = 2
a НЕ равно b
a = 1 b = 2
a равно b
a = 2 b = 2 Для продолжения нажмите
любую клавишу . . .
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
«Условия»
109
a=1; b=0;
cout << " a = " << a << " b = " << b << "\n";
if(a=b)
cout << " a равно b " << "\n";
else
cout << " a НЕ равно b " << "\n";
cout << " a = " << a << " b = " << b << "\n";
Результат выполнения
a = 1 b = 0
a НЕ равно b
a = 0 b = 0 Для продолжения нажмите любую клавишу . . .
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
«Условия»
110
a=1; b=1;
cout << " a = " << a << " b = " << b << "\n";
if(a=b)
cout << " a равно b " << "\n";
else
cout << " a НЕ равно b " << "\n";
cout << " a = " << a << " b = " << b << "\n";
Результат выполнения
a = 1 b = 1
a равно b
a = 1 b = 1 Для продолжения нажмите любую клавишу . . .
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
«Условия»
111
a=0; b=0;
cout << " a = " << a << " b = " << b << "\n";
if(a=b)
cout << " a равно b " << "\n";
else
cout << " a НЕ равно b " << "\n";
cout << " a = " << a << " b = " << b << "\n";
Результат выполнения
a = 0 b = 0
a НЕ равно b
a = 0 b = 0 Для продолжения нажмите любую клавишу . . .
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
«Условия»
112
a=0; b=2;
cout << " a = " << a << " b = " << b << "\n";
if(a=b)
cout << " a равно b " << "\n";
else
cout << " a НЕ равно b " << "\n";
cout << " a = " << a << " b = " << b << "\n";
Результат выполнения
a = 0 b = 2
a равно b
a = 2 b = 2 Для продолжения нажмите любую клавишу . . .
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
«Условия»
113
a=0; b=2;
cout << " a = " << a << " b = " << b << "\n";
if(a=b)
cout << " a равно b " << "\n";
else
cout << " a НЕ равно b " << "\n";
cout << " a = " << a << " b = " << b << "\n";
Результат выполнения
a = 0 b = 2
a равно b
a = 2 b = 2 Для продолжения нажмите любую клавишу . . .
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
«Условия»
114
«Идентичные записи»
if(a) if(a!=0)
if(!a) if(a==0)
double a;
a=0.01;
cout << " a = " << a << "\n";
if(a)
cout << " Istina a = " << a << "\n";
else
cout << " No Istina a = " << a << "\n";
if(a!=0)
cout << " Istina a = " << a << "\n";
else
cout << " No Istina a = " << a << "\n";
a = 0.01
Istina a = 0.01
No Istina a = 0.01
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
«Условия»
115
(выр_1) ? (выр_2) : (выр_3)
double a,b,c;
a=0.0;
b=2.2;
cout << " a = " << a << " b = " << b << "\n";
c=(a>b) ? a : b;
cout << " c=(a>b) = " << c << "\n";
a=2.23;
b=2.2;
cout << " a = " << a << " b = " << b << "\n";
c=(a>b) ? b : a;
cout << " c=(a>b) = " << c << "\n";
a = 0 b = 2.2
c=(a>b) = 2.2
a = 2.23 b = 2.2
c=(a>b) = 2.2
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
«Условия»
116
&& - «И»
|| - «ИЛИ»
int i;
for (i=0; i<=5; i++){
cout << " i = " << i << "\n";
if (i>2 && i<4)
cout << " i>2 && i<4 " << "\n";
else
cout << " no " << "\n";
}
i = 0
no
i = 1
no
i = 2
no
i = 3 i>2 && i<4
i = 4
no
i = 5
no
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
«Условия»
117
&& - «И»
|| - «ИЛИ»
int i;
for (i=0; i<=5; i++){
cout << " i = " << i << "\n";
if (i<2 || i>=4)
cout << " i<2 || i>=4 " << "\n";
else
cout << " no " << "\n";
}
i = 0
i<2 || i>=4
i = 1
i<2 || i>=4
i = 2
no
i = 3
no
i = 4
i<2 || i>=4
i = 5
i<2 || i>=4
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
«Условия»
118
int i=3, j=4, k;
cout << " i=" << i << "\n";
k=~i; //отрицание
cout << " k=" << k << "\n";
k=i&j; // И AND
cout << " k=" << k << "\n";
k=i^j; // исключающее ИЛИ XOR
cout << " k=" << k << "\n";
k=i|j; // ИЛИ OR
cout << " k=" << k << "\n";
Результат работы
i=3
k=-4
k=0
k=7
k=7 Для продолжения
нажмите любую клавишу .
. .
& - побитовое «И»
| - побитовое «ИЛИ»
^ - исключающее «ИЛИ»
~ - побитовое отрицание
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
«Условия»
119
int k, m, l;
k=2;
m=2;
l=k>m;
cout << " l=" << l << "\n";
if (k&&m)
cout << "Истина\n";
else
cout << "Ложь\n";
Результат работы
l=0
Истина Для продолжения
нажмите любую
клавишу . . .
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
«Условия»
120
k=2;
m=1;
l=k>m;
cout << " l=" << l <<
"\n";
if (k&&m)
cout << "Истина\n";
else
cout << "Ложь\n";
Результат работы
l=1
Истина Для продолжения нажмите
любую клавишу . . .
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
«Условия»
121
k=2;
m=1;
l=k>m;
cout << " l=" << l << "\n";
if (k&&m)
cout << "Истина\n";
else
cout << "Ложь\n";
if (k&m)
cout << "Истина\n";
else
cout << "Ложь\n";
Результат работы
l=1
Истина
Ложь Для продолжения нажмите
любую клавишу . . .
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
«Условия»
122
k=2;
m=1;
l=k>m;
cout << " l=" << l << "\n";
if (k&&m)
cout << "Истина\n";
else
cout << "Ложь\n";
if (k&m)
cout << "Истина\n";
else
cout << "Ложь\n";
Результат работы
l=1
Истина
Ложь Для продолжения нажмите
любую клавишу . . .
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
break
123
int i;
for (i=0; i<=5; i++){
if (i>2 && i<=4){
cout << " i>2 && i<=4 (i=" << i << ")" << "\n";
break;
}
else {
cout << " no (i=" << i << ")" << "\n";
}
cout << "--------------------------------" << "\n";
}
Результат работы
no (i=0)
---------------------------
no (i=1)
---------------------------
no (i=2)
---------------------------
i>2 && i<=4 (i=3)
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
continue
124
int i;
for (i=0; i<=5; i++){
if (i>2 && i<=4){
cout << " i>2 && i<=4 (i=" << i << ")" << "\n";
}
else {
cout << " no (i=" << i << ")" << "\n";
continue;
}
cout << "--------------------------------" << "\n";
}
Результат работы
no (i=0)
no (i=1)
no (i=2)
i>2 && i<=4 (i=3)
--------------------------------
i>2 && i<=4 (i=4)
--------------------------------
no (i=5)
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
goto
125
int i, j;
for (i=0; i<=3; i++){
cout << " ----- i=" << i << "\n"
for (j=0; j<=4; j++){
cout << " j=" << j << "\n";
if(i==2 && j==3)
goto metka;
}
}
cout << "do metka:" << "\n";
metka:
cout << "metka:" << "\n";
Результат
работы
----- i=0
j=0
j=1
j=2
j=3
j=4
----- i=1
j=0
j=1
j=2
j=3
j=4
----- i=2
j=0
j=1
j=2
j=3
metka:
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
Переключатель
126
switch (выражение типа int) {
case конст.-выр.1:
[инструкции;]
case конст.-выр.2:
[инструкции;]
case ……………………………….
[default:
инструкции;]
}
конст.-выр. – константное выражение,
уникальное, нет одинаковых
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
switch
127
int i;
i=2;
switch (i) {
case 1:
cout << "case 1" << "\n";
case 2:
cout << "case 2" << "\n";
case 3:
cout << "case 3" << "\n";
default:
cout << "default" << "\n";
}
cout << "end" << "\n";
Результат
работы
case 2
case 3
default
end
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
switch
128
int i;
i=2;
const int j=2;
const int k=3;
switch (i) {
case 1: cout << "case 1" << "\n";
case j: cout << "case 2" << "\n";
case k: cout << "case 3" << "\n";
default:
cout << "default" << "\n";
}
cout << "end" << "\n";
Результат
работы
case 2
case 3
default
end
Если написать
const int j=3;
const int k=3; 1>d:\0_st\switch\esli\esli.cpp(27) : error C2196: значение варианта выбора "3" уже
используется
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ
switch
129
int i, j;
i=1;
while (i<=3) {
j=4-i;
switch (j) {
case 1: cout << "case 1" << "\n";
case 2: cout << "case 2" << "\n";
break;
case 3: cout << "case 3" << "\n";
case 4: cout << "case 4" << "\n";
case 5: cout << "case 5" << "\n";
default: cout << "default" << "\n";
}
i++;
cout << "-----------------------------" << "\n";
}
Результат работы
case 3
case 4
case 5
default
--------------------
case 2
--------------------
case 1
case 2
--------------------
«Технология программирования» © 2017 кафедра ПЭКМ физический факультет ЮФУ 130
Видимость переменных.
Классы памяти.
(см. продолжение - часть 2)
Top Related