Меню
Разработки
Разработки  /  Информатика  /  Презентации  /  Прочее  /  Основы языка программирования С++

Основы языка программирования С++

Презентация используется на дополнительных курсах получения удостоверения по профессии Программист в ОПК СТИ НИТУ МИСиС

21.12.2017

Содержимое разработки

Язык программирования C/C++ Лафоре Р. Объектно-ориентированное программирование в С++ – СПб.:Питер, 2003. Павловская Т.А. C/C++ Программирование на языке высокого уровня. – СПб.:Питер, 2003. Подбельский В.В. Язык С++: Учебное пособие.– М.: Финансы и статистика, 2000. Страуструп Б. Язык программирования С++.– СПб.:Бином, 2002.

Язык программирования C/C++

  • Лафоре Р. Объектно-ориентированное программирование в С++ – СПб.:Питер, 2003.
  • Павловская Т.А. C/C++ Программирование на языке высокого уровня. – СПб.:Питер, 2003.
  • Подбельский В.В. Язык С++: Учебное пособие.– М.: Финансы и статистика, 2000.
  • Страуструп Б. Язык программирования С++.– СПб.:Бином, 2002.
История и эволюция C++   Язык С. 1972 г. Денис Ритчи (Bell)  цель – системное программирование ( UNIX) Язык С ++ . 19 83 г. Бьерн Страуструп (Bell)  цель – реализация методологии ООП Язык Java . 19 94 г. Патрик Наутон, Билл Джой, Джеймс Гослинг (Sun)  цель – переносимость и надежность Язык C# . 2000 г. Андерс Хейлсберг и др. ( Microsoft)  цель –  удобство и надежность Perl, PHP .  цель – простота использования

История и эволюция C++

  • Язык С. 1972 г. Денис Ритчи (Bell)

цель – системное программирование ( UNIX)

  • Язык С ++ . 19 83 г. Бьерн Страуструп (Bell)

цель – реализация методологии ООП

  • Язык Java . 19 94 г. Патрик Наутон, Билл Джой, Джеймс Гослинг (Sun)

цель – переносимость и надежность

  • Язык C# . 2000 г. Андерс Хейлсберг и др. ( Microsoft)

цель – удобство и надежность

  • Perl, PHP . цель – простота использования
Текстовый редактор Включ. файлы (. h) Исходный текст  модуля (.с pp) Препроцессор … Полный текст  модуля (.с pp) Компилятор Библиотеки (. lib) Объектный  модуль (. obj) Объектный  модуль (. obj) Компоновщик (редактор связей) Программа  (. exe)

Текстовый редактор

Включ. файлы (. h)

Исходный текст модуля (.с pp)

Препроцессор

Полный текст модуля (.с pp)

Компилятор

Библиотеки (. lib)

Объектный модуль (. obj)

Объектный модуль (. obj)

Компоновщик (редактор связей)

Программа (. exe)

Прописные и строчные латинские буквы (различаются в именах), знак подчеркивания Цифры (0…9) Специальные знаки “ { } , | [ ] ( ) + - * / % \ ; ‘ :  ?  ! & ~ ^ . # Разделители (пробел, табуляция, перевод строки)  Прописные и строчные латинские буквы (различаются в именах), знак подчеркивания Цифры (0…9) Специальные знаки “ { } , | [ ] ( ) + - * / % \ ; ‘ :  ?  ! & ~ ^ . # Разделители (пробел, табуляция, перевод строки)
  • Прописные и строчные латинские буквы (различаются в именах), знак подчеркивания Цифры (0…9) Специальные знаки “ { } , | [ ] ( ) + - * / % \ ; ‘ : ? ! & ~ ^ . # Разделители (пробел, табуляция, перевод строки)
  • Прописные и строчные латинские буквы (различаются в именах), знак подчеркивания
  • Цифры (0…9)
  • Специальные знаки “ { } , | [ ] ( ) + - * / % \ ; ‘ : ? ! & ~ ^ . #
  • Разделители (пробел, табуляция, перевод строки)
Имена ( не рекомендуется начинать с _) Ключевые слова Знаки операций (одно и двухсимвольные) Константы Разделители Комментарии однострочные // комментарий многострочные /* длинные */
  • Имена ( не рекомендуется начинать с _)
  • Ключевые слова
  • Знаки операций (одно и двухсимвольные)
  • Константы
  • Разделители

Комментарии

  • однострочные // комментарий
  • многострочные /* длинные */
Типы Составные Простые (скалярные) массивы Целые Вещественные классы Указатели Логический (С++) структуры объединения

Типы

Составные

Простые (скалярные)

массивы

Целые

Вещественные

классы

Указатели

Логический (С++)

структуры

объединения

C/C++ Целые Pascal (Delphi) char shortint int (short int) integer unsigned char byte unsigned int (short) word long int longint unsigned long int Вещест. cardinal float single double double long double extended

C/C++

Целые

Pascal (Delphi)

char

shortint

int (short int)

integer

unsigned char

byte

unsigned int (short)

word

long int

longint

unsigned long int

Вещест.

cardinal

float

single

double

double

long double

extended

bool – логический ( true/false) – в С++  В С целое значение =0 – ложь,  не равно 0 - истина void – пустой. Используется для обозначения функций без значений и нетипизированных указателей
  • bool – логический ( true/false) – в С++

В С целое значение =0 – ложь, не равно 0 - истина

  • void – пустой. Используется для обозначения функций без значений и нетипизированных указателей
Целые : десятичные 123, 0, 98 восьмеричные 01, 015 шестнадцатиричные 0 xA1, 0X00FF десятичные 123, 0, 98 восьмеричные 01, 015 шестнадцатиричные 0 xA1, 0X00FF Вещественные 5.8, .2 e-3 Символьные ‘A’, ‘xy’, ‘\n’, ‘\123’, ‘\\’ Строковые “ привет ”, “1 \n 2”
  • Целые :
  • десятичные 123, 0, 98 восьмеричные 01, 015 шестнадцатиричные 0 xA1, 0X00FF
  • десятичные 123, 0, 98
  • восьмеричные 01, 015
  • шестнадцатиричные 0 xA1, 0X00FF
  • Вещественные 5.8, .2 e-3
  • Символьные ‘A’, ‘xy’, ‘\n’, ‘\123’, ‘\\’
  • Строковые “ привет ”, “1 \n 2”
  Функция имеет вид   () {  } Выполнение начинается с функции main

Функция имеет вид

()

{

}

Выполнение начинается с функции main

a b; // ввод cout return 0; // возврат } " width="640"

#include

int main()

{ int a, b; // описание переменных

cin a b; // ввод

cout

return 0; // возврат

}

[ класс памяти ] [const] тип имя [ инициализатор ] Модификатор const используется при описании констант. Инициализатор задает начальное значение переменной в виде “ = значение ” или в круглых скобках “( значение )”. Примеры:  long int n =1000, k;  char c(‘A’);  const float pi = 3.1415926;

[ класс памяти ] [const] тип имя [ инициализатор ]

Модификатор const используется при описании констант.

Инициализатор задает начальное значение переменной в виде “ = значение ” или в круглых скобках “( значение )”.

Примеры:

long int n =1000, k;

char c(‘A’);

const float pi = 3.1415926;

 Класс памяти определяет область видимости и время жизни переменной.  Область видимости может быть локальной (внутри блока) и глобальной (во всем файле).  Время жизни – временным (до конца блока) и постоянным (до выхода из программы).  Класс auto ( по умолчанию) – автоматическая переменная. Локальная и временная.  Класс register – регистровая. Аналог auto, только переменная хранится в регистре процессора.   Класс static – статическая переменная. Постоянная. Может быть локальной и глобальной.  Класс extern – внешняя переменная. Определяется в другом файле программы.

Класс памяти определяет область видимости и время жизни переменной.

Область видимости может быть локальной (внутри блока) и глобальной (во всем файле).

Время жизни – временным (до конца блока) и постоянным (до выхода из программы).

Класс auto ( по умолчанию) – автоматическая переменная. Локальная и временная.

Класс register – регистровая. Аналог auto, только переменная хранится в регистре процессора.

Класс static – статическая переменная. Постоянная. Может быть локальной и глобальной.

Класс extern – внешняя переменная. Определяется в другом файле программы.

b) ? a : b; " width="640"
  • Арифметические + - * / % Преобразования автоматические
  • Увеличение и уменьшение ++ --

префиксное ( ++a ) возвращает новое значение,

постфиксное ( a ++) возвращает старое значение.

  • Отношения = == != Результат – true или false
  • Логические && ( и) || (или) ! (отрицание)
  • Присваивание = Результат – выражение. Выполняется справа налево: a = b = c = 5
  • Присваивание с операцией += *= и т.д.

a+=b эквивалентно a = a + b

  • Последовательное выполнение , результат - самое правое выражение
  • Условная операция условие ? выр.1 : выр. 2

max = (ab) ? a : b;

Выражение Условный Выбора Циклы Передачи управления В конце оператора всегда ставится ;
  • Выражение
  • Условный
  • Выбора
  • Циклы
  • Передачи управления

В конце оператора всегда ставится ;

a b; if (a else {min = b; max = a; } cout return 0; } " width="640"

if ( выражение) опер.1 ; [else опер.2 ;]

Пример. Найти максимум и минимум из двух чисел.

int main()

{ int a,b,min, max; cin a b;

if (a

else {min = b; max = a; }

cout

return 0;

}

Отсутствие фигурных скобок  if (aИспользование = вместо ==  if (a=5) cout Проверка диапазона  if (-1  Правильно так :  if (-1     cout
  • Отсутствие фигурных скобок

if (a

  • Использование = вместо ==

if (a=5) cout

  • Проверка диапазона

if (-1

Правильно так :

if (-1

cout

switch ( выражение) {  case конст.1 : список операторов 1  case конст. 2: список операторов 2  …  default: операторы }  Производит переход на первый оператор из списка, соответствующего константе, равной значению выражения.  Операторы из нижестоящих списков будут выполняться, если не сделать выход оператором break.

switch ( выражение) {

case конст.1 : список операторов 1

case конст. 2: список операторов 2

default: операторы

}

Производит переход на первый оператор из списка, соответствующего константе, равной значению выражения.

Операторы из нижестоящих списков будут выполняться, если не сделать выход оператором break.

По номеру месяца определить время года … switch (m) { case 1: case 2: case 12:    coutcase 3: case 4: case 5:    coutcase 6 : case 7 : case 8 :    coutdefault: cout}

По номеру месяца определить время года

switch (m) {

case 1: case 2: case 12:

cout

case 3: case 4: case 5:

cout

case 6 : case 7 : case 8 :

cout

default: cout

}

while ( выражение) оператор Цикл выполняется так: Вычисляется выражение Если оно истинно (не 0) выполняется оператор Снова вычисляется выражение Если оно ложно – выход из цикла.  Пример : вычисление факториала n  f = k = 1;  while (k

while ( выражение) оператор

Цикл выполняется так:

  • Вычисляется выражение
  • Если оно истинно (не 0) выполняется оператор
  • Снова вычисляется выражение
  • Если оно ложно – выход из цикла.

Пример : вычисление факториала n

f = k = 1;

while (k

do оператор while ( выражение) Цикл выполняется так: Выполняется оператор Вычисляется выражение Если оно истинно (не 0) снова выполняется оператор Если оно ложно – выход из цикла.  Пример : вычисление факториала n  f = k = 1;  do f *= k++; while (k

do оператор while ( выражение)

Цикл выполняется так:

  • Выполняется оператор
  • Вычисляется выражение
  • Если оно истинно (не 0) снова выполняется оператор
  • Если оно ложно – выход из цикла.

Пример : вычисление факториала n

f = k = 1;

do f *= k++; while (k

for ( инициализация ; условие выполнения ; модификация ) оператор ; Инициализация выполняется перед началом цикла Модификация - в конце каждой итерации Пример : вычисление факториала for (int k = f = 1; kлибо for (int k = f = 1; kБесконечный цикл for ( ; ; ) { ….}

for ( инициализация ; условие выполнения ; модификация ) оператор ;

Инициализация выполняется перед началом цикла

Модификация - в конце каждой итерации

Пример : вычисление факториала

for (int k = f = 1; k

либо for (int k = f = 1; k

Бесконечный цикл for ( ; ; ) { ….}

goto метка ;  Помеченный оператор –   метка : оператор ; break;  выход из цикла или оператора выбора continue;  переход к следующей итерации цикла return [ выражение ];  выход из функции с возвратом значения
  • goto метка ;

Помеченный оператор –

метка : оператор ;

  • break; выход из цикла или оператора выбора
  • continue; переход к следующей итерации цикла
  • return [ выражение ]; выход из функции с возвратом значения
C одержит адрес памяти, в которой хранятся данные определенного типа  тип * имя ;  Звездочка относится к имени   int a, *b, c; Безтиповый указатель void *p;

C одержит адрес памяти, в которой

хранятся данные определенного типа

тип * имя ;

Звездочка относится к имени

int a, *b, c;

Безтиповый указатель void *p;

Модификатор const относится либо к указателю, либо к значению int i; const int c = 1; const int * pc = &c; // указатель на константу int * const pc = &i; // указатель - константа

Модификатор const относится либо к указателю, либо к значению

int i;

const int c = 1;

const int * pc = &c; // указатель на константу

int * const pc = &i; // указатель - константа

с помощью операции & (адрес)  int a=5;  int * p = &a; значением другого указателя  int * r = p; явным адресом памяти  char *vp = (char *)0xB8000000; пустым значением  (нулем)  int * r = 0;
  • с помощью операции & (адрес)

int a=5;

int * p = &a;

  • значением другого указателя

int * r = p;

  • явным адресом памяти

char *vp = (char *)0xB8000000;

  • пустым значением (нулем)

int * r = 0;

Создание int *n = new int; int *m = new int (10); // *m=10 int *r = new int [10]; // массив Удаление delete n; delete [ ] r;

Создание

int *n = new int;

int *m = new int (10); // *m=10

int *r = new int [10]; // массив

Удаление

delete n;

delete [ ] r;

доступ к переменной, на которую указывает указатель *  * n=100; r[1] = 20; Арифметические операции (прибавление константы, вычитание, увеличение, уменьшение) учитывают размер данных  r++; // увеличивает r на 2
  • доступ к переменной, на которую указывает указатель *

* n=100; r[1] = 20;

  • Арифметические операции (прибавление константы, вычитание, увеличение, уменьшение) учитывают размер данных

r++; // увеличивает r на 2

Ссылка – синоним имени, указанного при ее инициализации  тип & имя ; int a; int &b=a;

Ссылка – синоним имени, указанного при ее инициализации

тип & имя ;

int a;

int &b=a;

 Массивы в языке С++ описываются следующим образом:  тип_элементов имя [ размер ];  Размер массива задается константным выражением. Индексы элементов – целые числа, начиная с нуля. Например, объявление   int a [100] ;   определяет массив a c элементами a [0], a [1], …, a [99].

Массивы в языке С++ описываются следующим образом:

тип_элементов имя [ размер ];

Размер массива задается константным выражением. Индексы элементов – целые числа, начиная с нуля. Например, объявление

int a [100] ;

определяет массив a c элементами a [0], a [1], …, a [99].

 При описании массива можно указать начальные значения элементов через запятую в фигурных скобках. При инициализации размер массива можно не указывать. Например,    int p[] = {0,1,2,3,4,5};  К элементам массива можно обратиться, указав имя и в квадратных скобках индекс. Контроль выхода за пределы массива не производится.  Вывод на экран    for (int i=0; i  Переменная типа массив является константным указателем на первый элемент массива. Выражения a[i] и *( a+i) эквивалентны.

При описании массива можно указать начальные значения элементов через запятую в фигурных скобках. При инициализации размер массива можно не указывать. Например,

int p[] = {0,1,2,3,4,5};

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

Вывод на экран

for (int i=0; i

Переменная типа массив является константным указателем на первый элемент массива. Выражения a[i] и *( a+i) эквивалентны.

 Многомерные массивы описываются как массивы, элементами которых также являются массивы. Следующий пример описывает матрицу из m строк и n столбцов.  const int m = 4, n = 5;  float matr [ m ][ n ];  Инициализация  int mas [3][2] = { {1,1}, {0,2}, {1,0}};   Обработка  for (i=0; i  for (j=0; j  cout

Многомерные массивы описываются как массивы, элементами которых также являются массивы. Следующий пример описывает матрицу из m строк и n столбцов.

const int m = 4, n = 5;

float matr [ m ][ n ];

Инициализация

int mas [3][2] = { {1,1}, {0,2}, {1,0}};

Обработка

for (i=0; i

for (j=0; j

cout

k; a = new int [k]; for (int i=0; ia[i]; " width="640"

Массивы, размер которых меняется во время выполнения программы, описываются как указатели и создаются с помощью операции new . Следующий фрагмент программы описывает создание массива, размер которого вводится с клавиатуры.

int *a, k;

cin k;

a = new int [k];

for (int i=0; ia[i];

s ; cout p s ; Строка может быть описана как указатель на char и размещена в динамической памяти. " width="640"

Специальный строковый тип в языке Си отсутствует.

Строка в Си представляется одномерным массивом элементов типа char; последним элементом массива должен быть символ ‘\0’ (такой массив называется ASCIIZ – строкой).

Строки можно вводить и выводить с помощью стандартных потоков или функций ввода-вывода gets ( s ) и puts ( s ).

Следующий пример демонстрирует ввод и вывод строк

char s [100], p []=”Введено ”;

cin s ;

cout p s ;

Строка может быть описана как указатель на char и размещена в динамической памяти.

) 1. Длина строки int strlen ( char *) 2. Конкатенация. char * strcat ( char *, char *) 3. Копирование char * strcpy ( char *, char *) 4. Сравнение int strcmp(char* строка 1, char* строка 2) 0, если совпадает со , Возвращает: число , число 0, если . 5. Поиск символа в строке. Возвращает указатель на найденный символ. char* strchr(char* строка , int символ ) 6. Поиск подстроки в строке. Возвращает указатель на найденную строку. char* strchr(char* строка , char* подстрока ) " width="640"

Функции для работы со строками

Некоторые функции работы со строками (Заголовочный файл string . h )

1. Длина строки

int strlen ( char *)

2. Конкатенация.

char * strcat ( char *, char *)

3. Копирование

char * strcpy ( char *, char *)

4. Сравнение

int strcmp(char* строка 1, char* строка 2)

0, если совпадает со ,

Возвращает: число ,

число 0, если .

5. Поиск символа в строке. Возвращает указатель на найденный символ.

char* strchr(char* строка , int символ )

6. Поиск подстроки в строке. Возвращает указатель на найденную строку.

char* strchr(char* строка , char* подстрока )

) Преобразование строки в double, int, long double atof (char*) int atoi (char*) long atol (char*) Преобразование int, long, unsigned long в строку char* itoa (int , char*, int ) char* ltoa (long , char*, int ) char* ultoa (unsigned long , char*, int ) " width="640"

Некоторые функции преобразования данных “строка ↔ число” ( Заголовочный файл stdlib . h )

Преобразование строки в double, int, long

double atof (char*)

int atoi (char*)

long atol (char*)

Преобразование int, long, unsigned long в строку

char* itoa (int , char*, int )

char* ltoa (long , char*, int )

char* ultoa (unsigned long , char*, int )

Работа со строками как с указателями Пример: копирование строки s в строку t Неэффективный способ for (int i = 0; iЭффективный способ char *st = s, *dt = t; while (*st != 0) *dt++ = *st++; *dt=0;

Работа со строками как с указателями

Пример: копирование строки s в строку t

Неэффективный способ

for (int i = 0; i

Эффективный способ

char *st = s, *dt = t;

while (*st != 0) *dt++ = *st++;

*dt=0;

-80%
Курсы дополнительного образования

Создание динамических веб-страниц с помощью PHP и MySQL

Продолжительность 72 часа
Документ: Cвидетельство о прохождении курса
4000 руб.
800 руб.
Подробнее
Скачать разработку
Сохранить у себя:
Основы языка программирования С++ (101 KB)

Комментарии 0

Чтобы добавить комментарий зарегистрируйтесь или на сайт

Пользовательское соглашение Политика обработки персональных данных Политика использования файлов cookie
Учителю!
Огромная база учебных материалов на каждый урок с возможностью удаленного управления
Тесты, видеоуроки, электронные тетради