- •Основные понятия. Типы данных.
- •Выражения. Операторы.
- •Управляющие структуры
- •Функции. Нисходящее программирование
- •Void имя (список аргументов)
- •Рекурсия. Макросы. Условная компиляция
- •Указатели. Арифметические операции с указателями
- •Массивы указателей. Указатели на функцию. Динамические массивы
- •Динамические структуры данных
- •Режимы работы с файлами в с
Основные понятия. Типы данных.
Используемые символы
Множество символов, используемых в языке Си делятся на 5 групп:
1. Символы, которые используются для объявления идентификаторов и ключевых слов (прописные и строчные английские буквы и подчеркивание).
2. Прописные и строчные буквы русского алфавита и арабские цифры.
3. Знаки нумерации и спец.символы. Используются для организации процесса вычисления, либо для передачи компилятору определенного набора инструкций( различные скобки, знаки препинания и др.).
4. Управляющие, или разделительные, символы. Предназначены для отделения друг от друга объектов, определенных пользователем ( пробел, знаки табуляции и т.д.).
5. Управляющие последовательности. Это специальные комбинации, использующиеся в функциях ввода/вывода (\n - переход на новую строку и др.).
Константы бывают целые, с плавающей точкой, символьные ('а'), строковые литералы ("ололо").
В языке Си регистр имеет(!) значение.
Основные ключевые слова в языке Си: auto, double, int. struct, break, else, long, switch, register, typedef, char, extern, return, void, case, float, unsigned, default, for, signed, union, do if, sizeof, volatail, continue, enum, short, while.
Комментарии:
а) однострочные ( // );
б) многострочные ( /* */).
Типы данных
Имеется 2 группы типов данных:
1. Основные. Служат для представление целых чисел и чисел с плавающей точкой.
2. Производные. К ним относят массивы, строки, структуры, объединения, указатели и т.д.
Основными целочисленными являются char, int, short, long, причем каждый из них имеет 2 разновидности: со знаком(signed) и без знака(unsigned).
К числам с плавающей точкой относятся float, double, long double.
Тип данных "перечисление" - enum.
Структура программы
#include <iostream>
using namespace std;
int main()
{ cout <<"Добро пожаловать в С++!\n";
return 0;
}
Программа С++ строится из отдельных блоков, называемых функциями.
Данная программа содержит следующие основные элементы:
1. Директива препроцессора #include.
2. Директива using namespace.
3. Заголовок функции int main().
4. Тело функции, ограниченное фигурными скобками.
5. Оператор, в котором для вывода сообщения на экран используется объект cout.
6. Оператор return, завершающий выполнение функции.
Функция main
Данная функция состоит из 2 частей: заголовка и тела. Заголовок функции в краткой форме определяет интерфейс между функцией и основной частью программы. Тело функции определяет то, что данная функция будет делать.
Препроцессор С++ и файл iostream
При создании исполняемого кода С++ использует препроцессор - это программа, которая обрабатывает исходный файл перед компиляцией.
#include <iostream> приводит к тому, что препроцессор добавляет в программу содержимое файла iostream.
Библиотеки: math.h <-> cmath, stdio, stdlib, conio - файлы включения.
Область имен
Выражения. Операторы.
Оператор присваивания
В качестве знака используется знак "=". Общий вид: v=e. Операция выполняется справо налево. Есть расширение данной операции, ron=e, где вместо ron могут быть знаки "+","-","*" и др. Раскрывается это выражение как v=ron e. Например a+=2 раскрывается как a=a+2.
Арифметические операции
Они делятся на бинарные(+,-,*,/,%) и унарные(++,--) - они увеличивают или уменьшают рядомстоящий операнд на 1.
Префикс: ++(--) операнд
Постфикс: операнд ++(--)
Если знак операции стоит перед операндом, результатом операции является увеличенное или уменьшенное значение операнда. Если знак стоит после операнда, результатом операции будет значение операнда и лишь после его использования он увеличится или уменьшится на 1.
Например: int i=0, j=0,k,l;
k=++i; //k=1 ,i=1
l=j++; //l=0 ,j=1
--k; //k=0
++j; //j=2
k=++i <-> i=i+1, k=i;
k=i++ <-> k=i, i=i+1;
Операции операции
int a; >,<,>=,<=, ==(полное равенство), !=(неравенство).
Логические операции
Унарная операция логического НЕ (!). Операция дает 0, если операнд ненулевой, и 1, если равен 0.
Бинарная операция логического И (&&). Результат операции равен 1, если оба операнда имеют ненулевое значение. Если хотя бы один операнд равен 0, то результатом операции будет 0.
Бинарная операция логического ИЛИ (||). Результат операции равен 0, если оба операнда равны 0, и 1 - в противном случае.
Побитовые операции
1. Операция поразрядного И (&).
2. Операция поразрядного ИЛИ (|).
3. Операция поразрядного исключающего ИЛИ (^).
4. Унарная операция поразрядного отрицания (~).
Сдвиги
Обозначаются << или >>. Они осуществляют сдвиг влево или вправо своего операнда на указанное число битовых позиций.
Например: x<<2 (*4) и x>>2 (/2^n).
Тернарная операция
В общем виде:
операнд1?операнд2:операнд3
Первый операнд может быть целого или плавающего типа. Для данной операции важно, является ли значение первого операнда истинным или ложным. Если значение ложно, то вычисляется значение третьего операнда и его значение будет результатом данной операции. Если значение первого операнда истинно, то вычисляется операнд2 и его значение будет результатом операции.
Например:
max=a<=b?b:a
Операция следования
Обознаяается ",". Выражение разделенное этим знаком выполняется слева направо строго в том порядке, в котором они перечислены.
int a=3,b=8,c;
c=a++,a+b; //a=4,c=12;
(b--,c)*=3; //b=7, c=36.
Явное и неявное преобразование типов
Разрешены любые преобразования стандартных типов одного к другому. При преобразовании более длинного типа к более короткому происходит потеря разрядов. Явное преобразование стандартных типов производится в 2 формах:
1) (имя_типа) операнд
2) имя_типа(операнд)
double d=(double)5; -> 5.00
int i= int(d);