- •Управляющие структуры
- •Массивы
- •Рекурсия. Макросы. Уловная компиляция
- •Операторы для работы с указателями
- •Присваивание указателей
- •Объектно-ориентированные модели. Составные части объектного подхода
- •Форматирование ввод/вывод
- •Использование манипулятора
- •Конструкторы и деструкторы
- •Множественное наследование
- •Полиморфизм, реализация полиморфизма через наследование
- •Перегрузка бинарных операторов
История создания систем программирования
Николас Вирт- 1971 Pascal, на основе ada
Бьёрн Страуструг- 1983 С++,2000 С#
Prolog, lisp- на основе assembler, 5е поколение ЭВМ
ЯП:
-оперативные:
-машинно-зависимые
-машинно-ориентированные
-
-функциональные:
-объектно-ориентированные
-логико-ориентированные
-проблемно-ориентированные
ООП- основывается на 3х концепциях: инкапсуляция, наследование, полиморфизм.
Инкапсуляция- механизм, который объединяет данные и под … с этими данными, а так же обеспечивает защиту и того и другого от внешнего вмешательства и неправильного использования.
Полиморфизм в своей основе реализует идею- 1н интерфейс, множество методов.
Наследование- процесс, по средствам которого 1н объект может приобретать свойства другого и добавляет к ним черты, характерные только для него.
Типы данных. Структура программы
Используемые символы
Множество символов используемых в языке С делятся на 5 групп:
Первая представляет собой символы для обозначения идентификаторов (строчные прописные буквы английского алфавита и _)
Вторая - прописные/строчные буквы русского алфавита + арабские цифры
Третья- спец символы и знаки пунктуации(/,\,:, . , , )
Четвёртая- управляющие и разделяющие символы (пробелы и т.д.)
Пятая- управляющие последовательности- специальные символьные комбинации, используемые в операциях ввода/вывода(/n-переход на новую строку, \о- конец строки)
Константы
Называются зарезервированные переменные . Целые, с плавающей точкой, символьные. Это десятичные числа, представленные с точкой или экспонентой ([цифры].[цифры] [E/,[+/-]цифры])
Любые буквы в || кавычках является односимвольными. В двойных – строковая последовательность “_”. Все они идут как массив.
Auto |
Switch |
Case |
Sizeof |
Double |
Resister |
Flood |
Volataiz |
Int |
Tupedef |
Unsigned |
Continue |
Struct |
Char |
Default |
Enum |
Break |
Extern |
For |
Short |
Else |
Return |
Signed |
While |
Long |
Void |
Union |
Doit |
Комментарии:
//- однострочные комментарии
/*_*/- комментарии побольше
Типы данных
Делятся на две группы - основные и производные
1.Представляют целые числа и числа с плавающей точкой
2.Относят массивы, строки, структуры, указатели
Основные целочисленные
Char, int, short, long- разделяются на со знаком и без знака( siagned, unsiagned)
Со знаком- -128…127, без- 0…255
Числа с плавающей запятой
Float(32), double(48), long double(64). Данные этих типов характеризуются числом значащих цифр, которые они могут иметь и минимальным числом допустимых значений экспоненты.
Emom – обозначает последовательность диапазонов.
#include<iostream>
Using namespace stg;
Int main ()
{cout <<”Добро пожаловать в С++!\n”;
Return 0;
}
Программа на С++ строится из отдельных блоков называемых функциями. Данная программа содержит следующие элементы:
-директиву при процессе include
-директиву using namespace
-заголовок int main
-тело функции ограниченно{ }
-оператор, в котором для вывода на экран используется объект cout
-оператор return- завершающий выполнение функции main
Функция main
В своей структуре данная функция состоит из двух частей:
1:заголовок int main
2:тело функции заключено в фигурные скобки
Заголовок функции
….conio.h
Выражения. Операторы
Оператор присваивания- v=e, сначала вычисляется е и лишь затем присваивается. Имеет расширение v on= e, где вместо on может быть любой знак.
V on= e v= v on e
A + =2 a=a + 2
s/=a s=s/a
(a=b)+=c a=b; a=a + c
Арифметические операции
Бывают 2х видов: бинарные и унарные.
Бинарные АО- +, -, *, %(остаток от деления),/.
10%3=1
10/3=3
10.0/3=3.333….
Унарные: автоувеличение и автоуменьшение(++, --)
Префиксная: ++операнд
--операнд
Постфиксная: операнд ++
операнд --
Если знак операции стоит перед операндом, результатом операции является увеличенное или уменьшенное значение операнда.
Если знак операции стоит после операнда, то результатом будет значение операнда и лишь после его использования оно увеличится или уменьшится на единицу.
Int i=0, j=o, k, l
K=++i, //k=1 ,i=1
L=j++, //l=0 ,j=1
--k; //k=0
++j;//j=2
K=i+1 k=I;k=i++ k=I,i=i+1
Операции отношения
>=,>,<,=<,==(равно),!=(неравно)
Логические операции
Унарная операция логического «не»(not)
Def: !;
If ! a c=d
Бинарная операция логического «и»(and)
Def:&&;
If (a<1)&&(b>2) c=d
Бинарная операция логического «или»(or)
Def: ||;
If (a<1)||(b>2) c=d
Операция «не» даёт ноль(лож), если операнд не нулевой, и единицу в противном случае.
Операция «и» даёт значение 1 если оба операнда имеют ненулевое значение.
Операция «или»- вырабатывает значение ноль, если оба операнда равны нулю и единицу в противном случае.
Побитовые операции
Операция поразрядного и- (&) Сравнивает каждый бит первого операнда с соответствующим битом второго операнда, если оба бита равны единице- значение устанавливается в единицу, в противном случае в ноль.
Побитовая операция поразрядного «или» - (|) сравнивает каждый бит первого с каждым битом второго, если оба из них либо 1н какой-то равен единице- результат 1, в противном случае 0.
Операция поразрядного исключающего «или»- (^) если один из бит равен нулю а другой единице результат единица, в противном случае ноль.
Унарная операция поразрядного отрицания –(~) Операция меняет в битовом представлении ноль на один, один на ноль.
Операции сдвига- (<<,>>) осуществляет сдвиг влево и вправо своего левого операнда на число битовых позиций , указанных правым операндом.
X<<2- х сдвигается влево на 2е позиции (умножение на 4)
x>>2- х сдвигается вправо на 2 (деление на 4)
Тернарная операция. Общий вид:
Операнд1 ? операнд2 : операнд3
Для этой операции важно является ли значение первого операнда
Если операнд 1-не равен нулю, т.е. выражение истинно, то вычисляется операнд2 и его значение является результатом. В противном случае вычисляется операнд3 :
Max = а<=b ? b : a (если а<=b истинно, тогда б, если ложно-а)
Операция следования- (,) выражения, разделённые этим символом выполняются слева на право строго в том порядке в котором они перечислены. Результатом является результат последнего выражения.
Int a=3, b=8; c;
C=a++, a+b; //a=4 ; c=12
(b--,c)*=3; //b=7 ,c=36
Явное и неявное преобразование типов
(имя_типа) операнд
Имя_типа(операнд)
Double d=(double) 5 (т.е. 5.00)
Int i=int (d) (т.е. не 5.00 а 5)
Управляющие структуры
Любая программа в С может быть написана с помощью трёх управляющих структур:
-структура следования(линейные алгоритмы)
-структура выбора
-структура повторения(циклы)
Имеется три типа структур выбора: -if (выражение) операнд1; …if (i<=60) i ++
-if | else if ( выражение>e)оператор1 …[else оператор2];
-switch
Структура выбора if называется структурой с единственным выбором поскольку она выбирает и игнорирует единственное выражение.
Структура if |else называется основным выбором, т.к. осуществляет выбор между двумя различными действиями.
If (i<60)
{i++;
C=k+I;
}
Else {i++;k++;}
If (i<=60)
{ if(k>0)
………..
Else …………
}
Else ……….;
Switch- оператор с множественным выбором, т.к. осуществляет выбор среди множества различных действий.
Switch (выражение)
{[объявление]
..
[case конст-выр1]:[список операторов]
[case конст-выр2]:[список операторов]
…
[default:[список операторов]]
}
Выражение следующие за ключевым словом switch может быть любым допустимым в С выражением значение которого целое.
Тело оператора switch состоит из нескольких операторов, помеченных ключевым словом case с последующим константным выражением.
Все константные выражение в операторе switch должны быть уникальны(не повторяться).
Объявление используется для объявления внутри новых переменных.
…
Int i=2
Switch (i)
{case 1:i+=2;
Case 2:i*=3;
Case 0:i/=2;
Case 4:i-=5;
Default ;
}
Switch (a)
{case 1 :b=c;
Case 2 :
Switch (d)
{case 0: f=s;
Case 1: f=9;
Case 2: f=9;
}
Case 3: b-=c;
}
Оператор break обеспечивает прекращение выполнения самого внутреннего из объединяющих его операторов.
Операторы continue вызывает прерывание выполнения, но в отличие от break в начало прерванного оператора.
Задача:
Даны три числа, вывести наименьшее из них.
Задача:
Студент получил отметку(отметка вводится с клавиатуры), если значение отметки ниже 4х- выдать сообщение «вы не сдали зачёт», если от 4 до 6 выдать сообщение «ваши знания удовлетворительны»,если оценка 7,8 –«вы молодец», если 9-10 – «ваш уровень знаний высок».
Задача:
Дана область. Определить принадлежит ли точка с заданными координатами области.
Структура повторение
While- структура с пред условием и используется в тех случаях когда тело оператора не всегда нужно выполнять. Общий вид-
while(выражение)
дальше тело.
Do/while- оператор с пост условием и используется в тех случаях когда необходимо выполнить тело цикла хотя бы один раз.
Do (тело)
While(выражение)
Два этих оператора можно вкладывать один в другой и прерывать оператором break:
Int I,j,k;
…
I=0; j=0; k=0;
Do {i++;j--;
While (k<i) k++;
}
While ((i<30)&&(j<-30));…
For- является общим циклом имеющим следующую структуру
For (выражение 1;выражение 2;выражение 3)
тело;
Выражение 1 обычно используется для установления начальных значений переменных управляющим циклом.
Выражение 2- это выражение определяющие условие при котором тело цикла будет выполняться.
Выражение 3 определяет изменение переменных управляющих циклом после каждого выполнения тела цикла.
Int main ()
{ int I,b;
For (i=1;i<10;i++)
{ b=i*I;
Cout <<”b=”<<i<<”*”<<i<<”=”<<b<<”\n”;
}
Return 0;
}
Оператор for можно заменить оператором while:
Выражение 1;
While(выражение 2)
{тело;
Выражение;
}
Задача 1:
Вывести последовательность Н чисел больше 20 и кратных 5.
Задача 2:
Вывести таблицу умножения от 1 до 10.
Задача 3:
Вычислить выражение-