Скачать презентацию Инициализация int a 6 int mas 1 2 Скачать презентацию Инициализация int a 6 int mas 1 2

3_0.pptx

  • Количество слайдов: 28

Инициализация int a=6; int mas[] = {1, 2, 3}; int mas[][5]={1, 2, 3}; char* Инициализация int a=6; int mas[] = {1, 2, 3}; int mas[][5]={1, 2, 3}; char* st = “abc”; char* st[4] ={‘a’, ’b’, ’c’, 0};

Типы данных определяемые пользователем enum [имя_типа]{список констант}; enum color {red, green, blue}; struct [имя_типа]{ Типы данных определяемые пользователем enum [имя_типа]{список констант}; enum color {red, green, blue}; struct [имя_типа]{ тип_1 элемент_1; … }[список описателей]; имя_типа или список описателей

struct { char f 1 o[30]; int date, code; double salary; }staff[100], *ps; struct struct { char f 1 o[30]; int date, code; double salary; }staff[100], *ps; struct worker { char f 1 o[30]; int date, code; double salary; }; worker staff[100]; для доступа к полям структуры используется. или -> при обращения через указатель staff[1]. date; ps->date;

union = struct, но все поля расположены по одному адресу и в один момент union = struct, но все поля расположены по одному адресу и в один момент времени хранится только один элемент typedef можно использовать и для собственных типов

Модульное программирование Модульное программирование

Функции [класс] тип имя ([список параметров])[throw(иск-я)] {тело функции} модификатор класс extern – глобальная видимость Функции [класс] тип имя ([список параметров])[throw(иск-я)] {тело функции} модификатор класс extern – глобальная видимость во всех модулях программы(по умолчанию) static – видимость только в пределах модуля

 • Глобальные переменные – Видны во всех функциях, где не описаны локальные переменные • Глобальные переменные – Видны во всех функциях, где не описаны локальные переменные с теми же именами – это плохо • Возвращаемое значение return[выражение]; – может содержать несколько операторов

Параметры функции • По значению – в стек заносятся копии значений • По адресу Параметры функции • По значению – в стек заносятся копии значений • По адресу – в стек заносятся копии адресов void f(int i, int* j, int &k); f(I, &j, k); Следует указывать const перед параметрами не требующими изменения

Передача массивов • Всегда по адресу • Нет информации о длине • При передаче Передача массивов • Всегда по адресу • Нет информации о длине • При передаче строки конец можно определить по ноль символу

Передача имени функции в качестве параметров • Определение функции void f(int a); • Определение Передача имени функции в качестве параметров • Определение функции void f(int a); • Определение указателя функции void (*r)(int); • Присвоение указателю функции r=&f; Вызов функции через указатель r(16);

 • Для читабельности используем переименование типов typedef void (*r)(int); • Теперь r – • Для читабельности используем переименование типов typedef void (*r)(int); • Теперь r – тип и можно делать так r menu[] = {&new, &open, &save); menu[1](10); Вызов функции open //new, open, save объявлены ранее

Передача функции в функцию void f 2(r fun){ fun(10); return; }; Передача функции в функцию void f 2(r fun){ fun(10); return; };

Параметры по умолчанию • Параметры по умолчанию указываются последними int f(int a, int b Параметры по умолчанию • Параметры по умолчанию указываются последними int f(int a, int b = 100); f(10); или f(10, 15);

Рекурсия • Функция вызывает саму себя int fun(&a){ int b=5; fun(b); }; Рекурсия • Функция вызывает саму себя int fun(&a){ int b=5; fun(b); };

Перегрузка функций int max(int, int); char* max(char*, char*); Должны: • Находится в одной области Перегрузка функций int max(int, int); char* max(char*, char*); Должны: • Находится в одной области видимости • При использовании параметров по умолчанию, они должны совпадать во всех вариантах • Не перегружаются если описание параметров отличается модификатором const или ссылкой( например int или int&)

Шаблоны template <class Type> fun(Type k){ Type a[10]; } int a; fun(a); или fun<int>(c); Шаблоны template fun(Type k){ Type a[10]; } int a; fun(a); или fun(c);

main() • тип main(){} • Тип main(int argc, char* argv[]){} – argc определяет количество main() • тип main(){} • Тип main(int argc, char* argv[]){} – argc определяет количество параметров передаваемых в функцию, включая имя самой программы – каждый элемент указатель на параметр командной строки

Директивы #include <имя файла> #include “имя файла” Во втором случае поиск ведётся сначала в Директивы #include <имя файла> #include “имя файла” Во втором случае поиск ведётся сначала в текущем каталоге, а потом в каталогах по умолчанию #define имя текст_подстановки #define n. Max 1000 #define max(x, y) ((x)>(y)? (x): (y)) #define sqr(x) (x*x) Обращение sqr(y+1) подстановка (y+1*y+1)

#if Version == 1 #define INCFILE “vers 1. h” #elif Version == 2 #define #if Version == 1 #define INCFILE “vers 1. h” #elif Version == 2 #define INCFILE “vers 2. h” #else #define INCFILE “vers. N. h” #endif #include INCFILE

#undef #ifndef забыть заданный ранее макрос проверяет объявлен ли макрос #ifndef _file 1 #include #undef #ifndef забыть заданный ранее макрос проверяет объявлен ли макрос #ifndef _file 1 #include “file 1. h” #define _file 1 #endif

Область действия идентификаторов • • • Блок Файл Функция/Шаблон функции Класс Поименованная область Область действия идентификаторов • • • Блок Файл Функция/Шаблон функции Класс Поименованная область

Внешние объявления • Функция видна во всех модулях программы – Если надо ограничить область Внешние объявления • Функция видна во всех модулях программы – Если надо ограничить область видимости одним файлом используется модификатор static • Переменная или константа доступна в нескольких модулях надо: – Определить её ровно в одном модуле как глобальную – В других модулях объявить её как внешнюю с помощью extern

Способ лучше! //my_header. h extern int a; extern double b; //one. cpp #include ”my_header. Способ лучше! //my_header. h extern int a; extern double b; //one. cpp #include ”my_header. h”

Поименованные области namespace demo{ int i=1; int k= 0; void fun 1(int); void fun Поименованные области namespace demo{ int i=1; int k= 0; void fun 1(int); void fun 2(int){} } namecpace demo{ int i=5; //неверно – двойное определение void fun 1(double); //Перегрузка void fun 2(int); //Повторное объявление

Подключение и использование void demo: : fun 1(int){} demo: : i=100; using demo: : Подключение и использование void demo: : fun 1(int){} demo: : i=100; using demo: : i; using namespace demo; Нельзя подключить то, что не описано!

Обработка ошибок чтения/записи int foef(File*) возвращает не равное нулю значение, если достигнут конец файла, Обработка ошибок чтения/записи int foef(File*) возвращает не равное нулю значение, если достигнут конец файла, иначе 0 Int ferror(File*) Возвращает не равное нулю значение, если обнаружена ошибка ввода/вывода

<math. h> (<cmath>) • • • abs/fabs абсолютное значение ceil/floor округлённое значение sqrt квадратный () • • • abs/fabs абсолютное значение ceil/floor округлённое значение sqrt квадратный корень pow степень sin, cos tan, asin, acos , atan 2 log, log 10

Вопросы? Вопросы?