int main()

advertisement
Основы информатики
Лекция 2. Hello C++
Заикин Олег Сергеевич
http://sat.isa.ru/pdsat/files/teaching/
zaikin.icc@gmail.com
История языка C
C – процедурный язык программирования.
– Dennis Ritchie в Bell Labs разработал
язык C. На нем написано ядро ОС Unix
1973
– C вытеснил Basic с позиции
ведущего языка для программирования
микрокомпьютеров
1970-е
– C адаптирован для использования в
IBM PC, что привело к резкому росту его
популярности.
1980-е
– принят стандарт American National
Standart Institute (ANSI) C
1989
История языка C++
С++ – объектно-ориентированный язык
программирования общего назначения.

1979 – Bjarne Stroustrup в Bell Laboratory
разработал язык «C с классами»

1983 – переименование языка из
«C с классами» в C++

1985 – вышло первое издание «Языка
программирования C++», обеспечивающее
первое описание этого языка

1998 –стандарт C++98

2011 – станадрт C++11
Философия C++





Получить универсальный язык со статическими
типами данных, эффективностью и
переносимостью языка C.
Максимально сохранить совместимость с C,
тем самым делая возможным лёгкий переход от
программирования на C.
Непосредственно и всесторонне поддерживать
множество стилей программирования
Дать программисту свободу выбора, даже если
это даст ему возможность выбирать
неправильно.
Не требовать слишком усложнённой среды
программирования.
C и С++
Язык программирования С++ произошёл от C.
В дальнейшем они развивались независимо,
что привело к росту несовместимостей между
ними.
Эти различия затрудняют написание
программ и библиотек, которые могли бы
нормально компилироваться и работать
одинаково и в C и в C++.
ВВЕДЕНИЕ В С++
Инструкция, блок
Инструкция – некое действие.
Каждая отдельная инструкция завершается точкой с
запятой ;
Блок – набор инструкций, заключенный между
фигурными скобками { } (аналог begin end в
паскале).
Блок не завершается точкой с запятой.
Комментарии
// однострочный комментарий
/* многострочный
комментарий */
Многострочные комментарии не могут быть
вложенными, однострочный комментарий
можно вкладывать внутрь многострочного
/* Это многострочный комментарий, внутрь него
// вложен однострочный комментарий.
Это окончание многострочного комментария.
*/
Идентификаторы
Идентификатор – имя, которое присваивается
переменной, функции или иному элементу,
определенному пользователем.
Должны начинаться с буквы или символа
подчеркивания.
Регистр имеет значение – myvar и MyVar это
разные идентификаторы
Нельзя использовать в качестве
идентификаторов ключевые слова и имена
стандартных функций.
Базовые типы данных
Символьные: char (1 байт).
Например ‘f’
Целочисленные short int (2 байта), int (4 байта),
unsigned short int (2 байта), unsigned int (4
байта), long long int (8 байт)
Например 549
С плавающей точкой: float (4 байта), double (8
байт), long double (10 байт).
Например 0,255
Логический: bool, имеющий значения true и
false
Объявление переменных
<тип данных> <имя1>, <имя 2>, …;
Пример
int a; // переменная целого типа
bool b, c; // две переменные логического типа
Переменные можно объявлять в любом месте,
не обязательно в начале функций.
Выражение
выражение – строка, переменная, выражение.
Пример
"hello"
a
a+b
В отличие от инструкции, выражение это не
действие, а формула.
Заголовочные файлы
Заголовочный файл – «вставляется»
компилятором в исходный текст в том месте,
где располагается соответствующая директива.
#include – директива добавления исходного
кода из файла. Используется для подключения
заголовочных файлов.
Подключение заголовочных файлов:
#include строка - путь к заголовочному файлу
Пример
#Include "../folder1/something.h"
Заголовочные файлы
Стандартная Библиотека — коллекция классов
и функций, написанных на базовом языке.
Основные заголовочные файлы:
 iostream – потоки ввода/вывода
 fstream – файловые потоки
 sstream – строковые потоки
iostream – функции и переменные для
организации ввода-вывода. Название
образовано от Input/Output Stream («поток вводавывода»).
Заголовочные файлы
Заголовочные файлы стандартной библиотеки
подключаются так:
#include <имя заголовочного файла>
Эти файлы уже есть в системе, поэтому не
нужно указывать их путь. Для заголовочных
файлов языка Си нужно указывать
расширение h.
Пример.
#include <iostream>
#include <ctype.h>
Пространства имен
Пространство имен (namespace) — окружение,
созданное для логической группировки
уникальных идентификаторов.
Необходимо чтобы избежать конфликтов имен
идентификаторов.
Функциональные особенности стандартной
библиотеки объявляются внутри пространства
имен std. Вызов объекта: std :: имя_объекта
std :: имя объекта;
Поток ввода std :: cin
std :: cin поток ввода данных с клавиатуры
>> оператор ввода
Для ввода данных с клавиатуры
std::cin >> переменная1 >> переменная2 >> …;
Пример.
int num, vol; // объявление переменных
std::cin >> num >> vol; // получение двух значений
от пользователя (вводит с клавиатуры)
Поток вывода std :: cout
std :: сout поток вывода данных в консоль
<< оператор вывода
Для вывода данных в консоль
std :: cout << выражение1 << выражение2 << …;
Пример
std :: cout << "abc"; // вывод строки “abc”
std :: cout << k; // вывод значения переменной k
std :: cout << "abc " << k; // вывод строки и
// значения переменной k
Функция main
Функция int main() обозначает точку начала
выполнения программы на C++.
Возвращение 0 из функции main() показывает, что
программа была завершена успешно.
int main()
{
return 0; // завершается без ошибок
}
Завершение программы на C++ с ошибкой
обозначается путём возврата ненулевого значения.
Например, return 1;
Microsoft Visual Studio C++
Как создать проект (в зависимости от версии
VS инструкция может немного отличаться).
File -> New -> Project -> Visual C++ -> General
-> Empty project -> Задать имя проекта ->
Next -> Finish
Добавить файл исходного кода:
Project –> Add New Item -> Code –> С++ File
(.cpp) -> Задать имя файла (если первый
файл, назвать его main.cpp) –> Add
Компиляция и компоновка
Трансляция программы — преобразование программы,
представленной на одном из языков программирования,
в программу на другом языке.
Компиляция – трансляция программы с проблемноориентированного языка (файлы с исходным кодом) на
машинно-ориентированный язык (объектные файлы).
Компоновка – создание исполняемого файла (в Windows
– exe-файла) по набору объектных файлов.
21
Microsoft Visual Studio C++
Ctrl + F7
компиляция
F10
компиляция, сборка
F5
компиляция, сборка, запуск программы
Shift + F5 завершение программы
Программа «Hello world»
#include <iostream>
int main()
{
std :: cout << "Hello world";
return 0;
}
Результат выполнения программы:
Hello world
Но консоль сразу после вывода текста закроется.
Функция system()
Операционная система получает команду
“выражение”:
system("выражение");
Пример
Операционная система получает команду
сделать паузу:
system("pause");
Программа «Hello world»
#include <iostream>
int main()
{
std :: cout << "Hello world";
system("pause");
return 0;
}
Результат выполнения программы:
Hello world
Окно с консолью не закроется, будет ждать
нажатия любой клавиши.
Программа «Hello world»
#include <iostream>
using namespace std; // После подключения
// пространства имен явно к нему не обращаемся
int main() {
cout << "Hello " << endl << "world";
system("pause");
return 0;
}
endl – символ новой строки
Результат выполнения программы:
Hello
world
Арифметические операции
=
+
*
/
%
--
++
Присваивание
Вычитание
Сложение
Умножение
Деление
Остаток от деления
Декремент (предыдущий
базовый элемент)
Инкремент (следующий
базовый элемент)
Пример
float y = 5/3;
int k=1;
++k;
int m=--k;
int n=k++;
k++;
Присваивание и бинарные
операции
Вместо записи
<пер. 1> = <пер. 1> <бинарная операция> <пер. 2>
можно записать
<пер. 1> <бинарная операция> = <пер. 2>
Пример
Вместо a = a + b
записать a += b
Вместо a = a * b
записать a *= b
Пример. Суммирование двух чисел
#include <iostream>
using namespace std;
int main() {
int a, b;
cout << "Enter 2 values« << endl;
cin >> a >> b; // считываем 2 значения
cout << "Sum is " << a + b; // выводим ответ
system("pause");
return 0;
}
Результат выполнения программы:
Sum is <сумма двух введенных чисел>
Операции сравнения и
логические операции
>
>=
<
<=
==
!=
&&
||
!
Больше
Больше или равно
Меньше
Меньше или равно
Равно
Не равно
Логическое И
Логическое ИЛИ
Логическое НЕ
Пример
int a,b,c,x=5,y=0;
a=x&&y; // = false
b=x||y; // = true
c=!x;
// = false
Поразрядные операции
&
|
^
~
>>
<<
И
ИЛИ
Сложение по
модулю два
НЕ
Сдвиг вправо
Сдвиг влево
= оператор присваивания
int x=6,y=3; // 0110, 0011
x & y;
// 0110 & 0011=2
x | y;
// 0110 | 0011=7
x ^ y;
// 0110 ^ 0011=5
~y;
// = 1…100 = -4
x>>1; // 0110>>1=0011=3
x<<1; // 0110<<1=1100=12
Условный оператор
if (условие)
блок операторов;
else
блок операторов;
Пример.
if (i==10) {
cout << "i == 10";
break;
}
else i++;
Условное выражение
? – условное выражение
A ? C1 : C2
Если A истинно, то C1 иначе C2
Пример
Вывод модуля числа
cout << (n<0 ? -n: n);
Поиск минимума
min = a > b ? b: a;
Циклы c пред- и постусловием
С предусловием:
while (условие) оператор;

i = 0;
while (i < 2) cout << i++;
С постусловием:
do оператор; while (условие);

do cout << i++; while (i < 2)
Цикл пересчетного типа
for(инициализация; условие продолжения
выполнения цикла; приращение)
оператор;
for(int i = 0; i < 2; i++)
cout << “Current value of i is ” << i << endl;
Начиная с i равного 0 пока i меньше 2
увеличивать i на 1. Итого 2 итерации.
Инструкции перехода
break;
Прерывание всех
итераций
Пример:
for(int i=0; i<10; i++) {
cout << i << endl;
if( i == 5) break;
}
Если i равно 5
прерываем цикл
continue;
Переход к следующей
итерации
Пример:
for(;;) {
cin >> i;
if (i>0) continue;
cout << i << endl;
}
Выводить введенные
числа кроме 0
Инструкция выбора
Пример
switch ( val ) {
case 1:
cout << "Val 1";
break;
case 2:
cout << "Val 2";
break;
…
default:
cout << "Unknown";
Замена больших
конструкций If – else }
Формат:
switch (выражение)
{
case константа:
операторы
break;
…
default:
операторы
}


Математические функции
#include <cmath> // математические функции
abs
sin
cos
sqrt
pow
модуль
синус
косинус
квадратный корень
степень (аргументы – основание и
показатель степени)
floor округление вниз (наибольшее целое, не
большее х)
Явное преобразование к типу
(тип) - явное преобразование к заданному
типу
float z;
z = sqrt(3); // ошибка
z = sqrt((float)3); // ошибки нет
Последовательное вычисление
, - последовательное
вычисление
int k=(y=J, 2*y);
Сначала
выполняется
y=J
затем
k = 2*y
Download