Технология ООП
Санкт-Петербургский государственный политехнический университет
13 сентября 2011
Технология ООП
Еще немного об указателях
double ∗p1 , ∗ p2 ;
∗ p1 =12.56 e7 ;
∗ p2 =8.85 e12 ;
Технология ООП
Еще немного об указателях
double ∗p1 , ∗ p2 ;
p1 = new double ;
p2 = new double ;
∗ p1 =12.56 e7 ;
∗ p2 =8.85 e12 ;
Технология ООП
Константные указатели и указатели на константу
const char ∗ t i t l e = "Diagram" ; // Указатель на
константу
char ∗ const t i t l e ="Diagram" ; // Константный
указатель
Технология ООП
Константные указатели и указатели на константу
const char ∗ t i t l e = "Diagram" ; // Указатель на
константу
char ∗ const t i t l e ="Diagram" ; // Константный
указатель
Технология ООП
Константные указатели и указатели на константу
Что будет если выполнить:
t i t l e [0]= ’d ’ ;
t i t l e = new_str ;
В первом и во втором случае?
Технология ООП
Константные параметры
char ∗ s t r c p y ( char ∗ d e s t , const char ∗ s o u r c e ) ;
Технология ООП
Способы передачи параметров
В языках С и C++, в отличие от многих других языков,
передача параметров осуществляется по значению — это
значит что в функции происходит работа с копией переменной.
void func ( i n t x ) ;
func ( value ) ;
void func ( f l o a t ∗x ) ;
func ( array ) ;
void func ( f l o a t x [ ] ) ;
func ( array ) ;
v o i d f u n c ( i n t &out_x ) ;
func ( value ) ;
Технология ООП
Возвращаемые значения
double a r r a y [ 1 0 0 ] ;
double& getV ( i n t i ) { r e t u r n a r r a y [ i ] ; }
getV ( 1 ) = 5 . 0 ;
p r i n t f ( "%f \n" , getV ( 1 ) ) ;
Технология ООП
Указатели на функции
Указатель на любую функцию, которая возвращает
вещественное число и требует одно вещественное число в
качестве параметра:
double ( ∗ pFunc ) ( double ) ;
Технология ООП
Указатели на функции
#i n c l u d e <math . h>
double ( ∗ pFunc ) ( double ) ;
i f ( input )
pFunc = s i n ;
else
pFunc = c o s ;
double v a l = pFunc ( 1 . 0 ) ;
Технология ООП
Определение типов
Языки С и C++ позволяют определить новый тип переменных,
присвоив символьное имя какому-то заданному типу.
typedef i n t p o i n t s ;
t y p e d e f s t r u c t Node∗ NodePtr ;
t y p e d e f char Msg [ 1 0 0 ] ;
Технология ООП
Структуры
s t r u c t Man
{
char ∗Name ; // Имя
i n t Age ; // Возраст
};
Технология ООП
Структуры
s t r u c t Man m;
m. Name = new char [ 1 0 0 ] ;
Технология ООП
Массив структур
//TODO: Написать сортировку
Man a r [ 3 ] = {
{"Man1" , 6 0 } ,
{"Man2" , 5 0 } ,
{"Man3" , 80}
};
Технология ООП
Объединения
Union — это структура, все элементы которой имеют нулевое
смещение.
struct Test
{
int selector ;
union
{
long l o n g _ v a l u e ;
short short_value ;
}
};
Технология ООП
Битовые поля
Структура позволяет работать с битовыми полями.
<целый тип> [ идентификатор ] : <размер поля >;
struct byte
{
char a: 1;
char b: 1;
char c: 1;
char d: 1;
char e: 1;
char f: 1;
char g: 1;
char h: 1;
};
Технология ООП
Битовые поля
union c h b y t e
{
byte b i t ;
char x ;
} b;
b . x = ’a ’ ;
p r i n t f ( "%1c\n" , b . b i t . h ? ’ 1 ’ : ’ 0 ’ ) ;
Технология ООП
Перечислимые типы
t y p e d e f enum
{
One , Two , Three
} Digits ;
enum
{
One = 1 , Two , Three
} digit ;
d i g i t = Two ;
Digits digit2 = digit ;
Технология ООП
Рекурсивные функции
Рекурсивная функция — функция вызывающая саму себя.
Функция вычисляющая число Фибоначчи:
unsigned long f i b ( i n t n )
{
unsigned long f =0;
i f ( n>0)
i f ( n==1)
f = 1;
else
f = f i b ( n−1) + f i b ( n−2) ;
return f ;
}
Технология ООП
Операции с файлами
char ∗ f n = " t e s t . t x t " ; // Имя файла
FILE ∗ f p ; // Указатель на файловую с т р у к т у р у
i f ( f o p e n ( fn , " r t " ) == NULL) p r i n t f ( " F i l e ␣not␣found
\n" ) ;
Технология ООП
Операции с файлами
r — Открыть существующий файл только для чтения.
r+ — Открыть существующий файл для обновления.
w — Создать файл для записи.
w+ — Создать новый файл для обновления.
a — Открыть для записи в конец файла.
a+ — Открыть для чтения и записи в конец файла.
b — Открыть файл в двоичном режиме.
t — Открыть файл в текстовом режиме.
Технология ООП
Операции с файлами
char s t r [ 1 0 0 ] ;
while ( ! f e o f ( fp ) )
{
f g e t s ( s t r , 100 , fp ) ;
}
fclose ( str ) ;
Технология ООП
Параметры командной строки
argc — количество параметров в командной строке
программы.
argv — массив из строк содержащий переданные
параметры.
v o i d main ( i n t a r g c , char ∗ a r g v [ ] )
{
char s r c _ f i l e n a m e [ 2 0 ] , d s t _ f i l e n a m e [ 2 0 ] ;
i f ( argc < 3)
p r i n t f ( " e r r o r \n" ) ;
s t r n c p y ( src_filename , argv [ 1 ] , 20) ;
s t r n c p y ( dst_filename , argv [ 2 ] , 20) ;
//TODO: написать копирование файлов
}
Технология ООП
Введение в ООП
Базовые понятия которые имеют существенную роль в ООП:
инкапсуляция
наследование
полиморфизм
Технология ООП