SlideShare a Scribd company logo
Модуль 1: Базовые понятия языка программирования С++
Темы лекции: Введение. Немного истории. Состав языка.
Переменные и базовые типы данных.
Практическое задание: Базовые типы данных и основные
операции С++.
Тренер: Игорь Шкулипа, к.т.н.
C++ Базовый. Занятие 1
http://www.slideshare.net/IgorShkulipa 2http://www.slideshare.net/IgorShkulipa
Курс «C++ для начинающих»
Курс состоит из четырех основных модулей:
1. Базовые понятия языка программирования С++
• Введение. Немного истории
• Состав языка
• Переменные и базовые типы данных
• Форматированный ввод/вывод
• Основные операции языка С++
• Операторы языка С++
• Функции
• Структура программы на языке С++
2. Пользовательские типы данных и работа с динамической памятью
• Массивы и указатели
• Пользовательские типы данных
• Динамическая память
3. Основные понятия объектно-ориентированного программирования
• Введение в объектно-ориентированное программирование
• Объектно-ориентированное программирование на языке С++
• Принципы ООП
• Перегрузка методов и операторов
• Наследование и полиморфизм
• Потоковый ввод-вывод
4. Дополнительные темы объектно-ориентированного программирования
• Шаблоны типов
• Обработка исключений
• Пространства имен
• Проектирование программного обеспечения
• Паттерны проектирования
http://www.slideshare.net/IgorShkulipa 3http://www.slideshare.net/IgorShkulipa
Время и оценка результатов курса
Курс состоит из 25 занятий, общей длительностью 100 часов аудиторной
работы.
Оценка теоретической части:
1. Три промежуточных теста (максимальная оценка - 100 баллов)
2. Результирующий тест (максимальная оценка - 100 баллов)
Оценка практической части:
1. 17 лабораторных работ (максимальная средняя оценка - 100
баллов)
Курсовой проект:
1. На протяжении курса студенты выполняют курсовой проект по
индивидуальной теме (максимальная оценка - 100 баллов)
http://www.slideshare.net/IgorShkulipa 4http://www.slideshare.net/IgorShkulipa
Результат работы на протяжении курса
• TP – средняя оценка за промежуточные тесты (макс. 100)
• TR – оценка за результирующий тест (макс. 100)
• LR – средняя оценка за выполнение лабораторных работ (макс. 100)
• CP – оценка за курсовой проект (макс. 100)
Результат курса = 0.2*TP + 0.2*TR + 0.2*LR + 0.4*CP
>= 70% < 70%
http://www.slideshare.net/IgorShkulipa 5http://www.slideshare.net/IgorShkulipa
Литература
1. Б. Страуструп / Язык программирования С++. -2008 г., - 1104 стр.
1. Брайан Керниган, Деннис Ритчи / Язык программирования C - М.:
Изд. дом «Вильямс», 2012. - 304 cтр.
1. Т. Кормен, Ч. Лейзерсон, Р. Ривест / Алгоритмы. Построение и
анализ, М, Вильямс, -2001, -1296 стр.
1. Роберт Седжвик / Фундаментальные алгоритмы C++. Части 1-4.
Анализ. Структуры данных. Сортировка. Поиск. – СПб, ДиаСофт,
2001 г. - 688 стр.
1. Роберт Седжвик / Фундаментальные алгоритмы C++. Часть 5.
Алгоритмы на графах. – СПб, ДиаСофт, 2002 г. - 496 стр.
http://www.slideshare.net/IgorShkulipa 6http://www.slideshare.net/IgorShkulipa
Тема 1. Введение. Немного истории.
http://www.slideshare.net/IgorShkulipa 7http://www.slideshare.net/IgorShkulipa
ЦП
Центральный процессор
Вычислительная машина фон-Неймана
● Программное управление вычислительным процессом путем автоматического
извлечения команд программы из памяти и последовательного их выполнения.
● Общая память для программ и данных.
● Одинаковое кодирование программ и данных.
● Использование двоичной системы счисления.
● Арифметическое устройство на базе двоичного сумматора.
АЛУ
Арифметико-логическое
устройство
УУ
Устройство управления
Память
СВВ
Система ввода-вывода
ВУ
Внешнее устройство
ВУ
Внешнее устройство
ВУ
Внешнее устройство
ВУ
Внешнее устройство
http://www.slideshare.net/IgorShkulipa 8http://www.slideshare.net/IgorShkulipa
Функциональная организация типовой ЭВМ
1. Процессор (центральный процессор) — основной вычислительный блок компьютера, содержит важнейшие
функциональные устройства:
• устройство управления с интерфейсом процессора (системой сопряжения и связи процессора с другими узлами машины);
• арифметико-логическое устройство;
• процессорную память.
Процессор, является устройством, выполняющим все функции элементарной вычислительной машины.
1. Оперативная память — запоминающее устройство, используемое для оперативного хранения и обмена информацией с
другими узлами машины.
2. Каналы связи (внутримашинный интерфейс) служат для связи центральных узлов машины с ее внешними
устройствами.
3. Внешние устройства обеспечивают эффективное взаимодействие компьютера с окружающей средой: пользователями,
объектами управления, другими машинами. В состав внешних устройств обязательно входят внешняя память и
устройства ввода-вывода.
ЦП
Центральный процессор
АЛУ
Арифметико-
логическое
устройство
УУ
Устройство
управления
ПП
Процессорная
память
ОП
Оперативная память
КС
Каналы связи
ВУ
Внешние устройства
ВП
Внешняя память
ВВ
Ввод-вывод
http://www.slideshare.net/IgorShkulipa 9http://www.slideshare.net/IgorShkulipa
Языки программирования
Машинный код
Языком программирования первого поколения считается машинный код.
Машинный код состоит из инструкций, которые компьютер (процессор) может
выполнить (а также данных, которые принадлежат этим инструкциям).
Программируя на машинном коде, программист должен был писать свою
программу в двоичном коде, так что бы процессор мог это понять и исполнить.
Язык ассемблера
При программировании на языке Ассемблера же инструкции представлены
человеку в понятной форме. Само программирование является очень похожим на
программирование в машинном коде, потому что инструкции те же самые, что и
в машинном коде (только в другом виде - в виде слов). Программа, написанная
на языке Ассемблера, представляет собой что-то вроде следующего:
MOV AL, 19
ADD AL, 4
OUT 2
Языки высокого уровня
Такие языки программирования не очень связаны с аппаратными средствами.
Это значит, что программист не должен больше очень точно знать устройство и
особенности аппаратного обеспечения, однако может сравнительно независимо
аппаратных средств, после чего эта программа преобразуется при помощи
некоторых разных инструментов в форму понятную аппаратному обеспечению.
FROTRAN, BASIC, Pascal, C, C++
http://www.slideshare.net/IgorShkulipa 10http://www.slideshare.net/IgorShkulipa
Базовые типы языков программирования
Процедурные
В процедурных языках программирования на языке программирования
описываются действия и порядок их выполнения, а также эти действия
разбиваются на группы (подпрограммы). Из процедур в свою очередь
формируются структуры кода, которые можно повторно использовать.
Pascal
Функциональные
В функциональных языках программирования всё решение описывается при
помощи функций.
C
Объектно-ориентированные
В объектно-ориентированных языках программирования решение проблемы
производится при помощи функций и структур данных, описанных в классах.
Из каждого класса можно создать объект, у которого будет набор свойств и/или
методов.
C++
http://www.slideshare.net/IgorShkulipa 11http://www.slideshare.net/IgorShkulipa
Трансляторы
Трансляторы – это программы или устройства, переводящие
информацию с языка понятного человеку, на язык, понятный
устройству.
Трансляторы
Интерпретаторы Компиляторы
Интерпретатор последовательно
читает команды языка
программирования, переводит их
на машинный язык и выполняет.
Компилятор переводит весь
текст в машинный код, который
в дальнейшем может быть
запущен на выполнение
Классические
Pascal,
C,
C++
Кросплатформные
Java
http://www.slideshare.net/IgorShkulipa 12http://www.slideshare.net/IgorShkulipa
Процедурное программирование
Процедурное программирование — это парадигма программирования,
основанная на концепции вызова процедуры. Процедуры, также известны как
подпрограммы. Процедуры содержат последовательность шагов для выполнения.
В ходе выполнения программы любая процедура может быть вызвана из любой
точки, включая саму данную процедуру.
Преимущества:
- Возможность повторного использования одного и того же кода из
нескольких мест программы без его копирования.
- Легче отследить поток выполнения программы, чем в случае
использования инструкций GOTO или JUMP, которые могут сделать из
большой, сложной программы так называемый «спагетти-код».
- Возможность поддержки модульности и структурности.
Подходы к разработке программного
обеспечения
http://www.slideshare.net/IgorShkulipa 13http://www.slideshare.net/IgorShkulipa
Модульное программирование
Модульное программирование основано на понятии модуля - логически
взаимосвязанной совокупности функциональных элементов, оформленных в
виде отдельных программных модулей.
Модуль характеризуют:
- один вход и один выход - на входе программный модуль получает
определенный набор исходных данных, выполняет содержательную
обработку и возвращает один набор результатных данных, т.е.
реализуется стандартный принцип IPO (Input - Process - Output) - вход-
процесс-выход;
- функциональная завершенность - модуль выполняет перечень
регламентированных операций для реализации каждой отдельной
функции в полном составе, достаточных для завершения начатой
обработки;
- логическая независимость - результат работы программного модуля
зависит только от исходных данных, но не зависит от работы других
модулей;
- слабые информационные связи с другими программными модулями -
обмен информацией между модулями должен быть по возможности
минимизирован;
Подходы к разработке программного
обеспечения
http://www.slideshare.net/IgorShkulipa 14http://www.slideshare.net/IgorShkulipa
Структурное программирование
Это методология разработки программного обеспечения, в основе которой лежит
представление программы в виде иерархической структуры блоков (модулей).
Любая программа представляет собой структуру, построенную из базовых
конструкций имеющие следующие отличительные черты:
- Последовательное исполнение
- Ветвление (if)
- Цикл (for, while)
- Подпрограмма (процедура или функция)
Разработка программы в структурном программировании ведётся пошагово,
методом «сверху вниз». Это позволяет вместо работающих подпрограмм
использовать "заглушку", чтобы протестировать работоспособность всей
программы в целом. После первого тестирования на работоспособность заглушку
заменяют реальной подпрограммой.
Подходы к разработке программного
обеспечения
http://www.slideshare.net/IgorShkulipa 15http://www.slideshare.net/IgorShkulipa
Объектно-ориентированное программирование
Объектно-ориентированное программирование - технология программирования,
при которой программа рассматривается как набор дискретных объектов,
содержащих, в свою очередь, наборы структур данных и процедур,
взаимодействующих с другими объектами.
Принципы ООП:
Инкапсуляция — это свойство системы, позволяющее объединить данные и
методы, работающие с ними в одной оболочке, и скрыть детали
реализации от пользователя.
Наследование — это свойство системы, позволяющее описать новый класс на
основе уже существующего с частично или полностью заимствующейся
функциональностью. Класс, от которого производится наследование,
называется базовым, родительским или суперклассом. Новый класс —
потомком, наследником или производным классом.
Полиморфизм — это свойство системы использовать объекты с одинаковым
интерфейсом без информации о типе и внутренней структуре объекта
Подходы к разработке программного
обеспечения
http://www.slideshare.net/IgorShkulipa 16http://www.slideshare.net/IgorShkulipa
Обобщенное программирование
Обобщённое программирование — парадигма программирования,
заключающаяся в таком описании данных и алгоритмов, которое можно
применять к различным типам данных, не меняя само это описание.
Подходы к разработке программного
обеспечения
http://www.slideshare.net/IgorShkulipa 17http://www.slideshare.net/IgorShkulipa
История создания С++
Язык С был изобретен и реализован Деннисом Ритчи (Dennis
Ritchie) для компьютера DEC PDP-11 в операционной системе
Unix.
Стандарты:
С89 - ANSI/ISO – 1989 г.
С99 - ANSI/ISO – 1999 г.
C11 - ISO/IEC - 2011 г.
Деннис Ритчи
1941-2011
Бьерн Страуструп придумал ряд усовершенствований к языку C
под собственные нужды.
Добавил к С возможность работы с классами и объектами.
Позже в язык были добавлены новые возможности, такие как
виртуальные функции, перегрузка функций и операторов,
ссылки, константы, пользовательский контроль над управлением
свободной памятью, улучшенная проверка типов и новый стиль
комментариев
Бьерн СтрауструпВ 1983 году был переименован из «C с
классами» в C++
http://www.slideshare.net/IgorShkulipa 18http://www.slideshare.net/IgorShkulipa
Компиляция С++ программ в ОС Linux
Файл
программы
program.cpp
Типы файлов:
- .c – программа на языке С
- .cpp – программа на языке С++
- .h – заголовочный файл
- .o (.obj в Windows) – объектный файл
- attrib +**x (.exe Windows) – исполняемый файл
Компилятор
gcc
program.o
Компоновщик
program.exe
http://www.slideshare.net/IgorShkulipa 19http://www.slideshare.net/IgorShkulipa
Компиляция С++ программ
http://www.slideshare.net/IgorShkulipa 20http://www.slideshare.net/IgorShkulipa
Тема 2. Состав языка C++.
http://www.slideshare.net/IgorShkulipa 21http://www.slideshare.net/IgorShkulipa
Алфавит С++
Алфавит (или множество литер) языка программирования C++ основывается на
множестве символов таблицы кодов ASCII. Алфавит C++ включает:
- строчные и прописные буквы латинского алфавита
- цифры от 0 до 9
- символ '_' (также считается буквой)
- специальные символы: " { } , | [ ] + - % /  ; ' : ? < > = ! & # ~ ^ . * и др.
Алфавит C++ служит для построения слов, которые в C++ называются лексемами.
Различают пять типов лексем:
- идентификаторы
- ключевые слова
- знаки (символы) операций
- литералы
- разделители
Почти все типы лексем (кроме ключевых слов) имеют собственные правила
словообразования, включая собственные подмножества алфавита.
http://www.slideshare.net/IgorShkulipa 22http://www.slideshare.net/IgorShkulipa
Ключевые слова
Часть идентификаторов C++ входит в фиксированный словарь
ключевых слов. Эти идентификаторы образуют подмножество
ключевых слов (они так и называются ключевыми словами).
Список ключевых слов:
Операторы:
asm, break, case, catch, continue, default, do, else, for, goto, if,
new, return, sizeof, switch, throw, try, typedef, typeid, while
Базовые типы данных:
char, double, float, int, void
Модификаторы типов:
long, short, signed, unsigned
Классы памяти:
auto, const, register, inline, static, volatile
Пользовательские типы:
class, enum, extern, friend, operator, private, protected, public,
struct, template, this, union, virtual.
http://www.slideshare.net/IgorShkulipa 23http://www.slideshare.net/IgorShkulipa
Идентификаторы
Идентификатором называется последовательность цифр и букв, а
также специальных символов, при условии, что первой стоит буква
или специальный символ.
Правила составления идентификаторов:
- начинается с буквы или знака «_»
- регистр букв имеет значение
- может иметь любое количество символов, но значимыми
являются только первые 31
- идентификатор не должен совпадать с ключевыми словами, с
ключевыми словами и именами функций библиотеки
компилятора языка программирования С++
http://www.slideshare.net/IgorShkulipa 24http://www.slideshare.net/IgorShkulipa
Комментарии
1. Все, что между парными символами /* и */ считается
комментарием
1. Все, что после парного символа // считается комментарием
http://www.slideshare.net/IgorShkulipa 25http://www.slideshare.net/IgorShkulipa
, ! != | |= % %= &
&& &= () * *= + ++ +=
- -- -= -> ->* . .* /
/= :: < << <= <<= > >>
>= >>= == ?: [] ^ ^= ~
|| # ## sizeof new delete typeid throw
Символы операций и разделителей
... ; {}
http://www.slideshare.net/IgorShkulipa 26http://www.slideshare.net/IgorShkulipa
Литералы
Целочисленный литерал
Целочисленный литерал служит для записи целочисленных
значений и является соответствующей последовательностью
цифр (возможно со знаком '-'). Может иметь префиксы 0x, 0b
Вещественный литерал
Вещественный литерал служит для отображения вещественных
значений. Может содержать символы “.” и “E”
Символьный литерал
Значением символьного литерала является соответствующее
значения ASCII кода. Значение заключается в «’»
Строковый литерал
Строковые литералы являются последовательностью
(возможно, пустой) литер в одном из возможных форматов
представления, заключённых в «“»
http://www.slideshare.net/IgorShkulipa 27http://www.slideshare.net/IgorShkulipa
Пример простейшей программы на С++
#include <iostream.h>
int main()
{
cout << "Hello, world!";
return 0;
}
#include <iostream.h> - директива
препроцессора, обозначающая
подключение к программе заголовочного
файла «iostream.h», что дает возможность
использовать описанные в нем функции в
нашей программе.
int main() – объявление основной
функции программы, с которой начинается
ее выполнение.
cout << "Hello, World!"; – вызов оператора, который выводит на экран
текст «Hello, World!».
return 0; – оператор, сигнализирующий о завершении работы функции и
возвращающий ее значение.
http://www.slideshare.net/IgorShkulipa 28http://www.slideshare.net/IgorShkulipa
Тема 3. Переменные и базовые типы данных.
http://www.slideshare.net/IgorShkulipa 29http://www.slideshare.net/IgorShkulipa
Переменные и типы данных
Переменная – поименованная область памяти, адрес которой можно
использовать для осуществления доступа к данным. Данные,
находящиеся в переменной (то есть по данному адресу памяти),
называются значением этой переменной.
Тип данных – множество значений переменной и множество
операций, которые можно применять к этим значениям
•Базовые типы данных
•Составные типы данных (массивы)
•Пользовательские типы данных (структуры, перечисления,
объединения)
•Классы (относятся к пользовательским типам данных)
http://www.slideshare.net/IgorShkulipa 30http://www.slideshare.net/IgorShkulipa
Целочисленные типы данных
К целочисленным типам относятся типы, представленные
следующими именами основных типов:
•char
•short
•int
•long
Имена целочисленных типов могут использоваться в сочетании с
парой модификаторов типа:
•signed
•unsigned
Эти модификаторы изменяют формат представления данных, но
не влияют на размеры выделяемых областей памяти.
http://www.slideshare.net/IgorShkulipa 31http://www.slideshare.net/IgorShkulipa
Диапазоны значений целочисленных типов
Тип данных Байты Биты Минимум Максимум
signed char 1 8 - 128 127
unsigned char 1 8 0 255
signed short 2 16 -32768 32767
enum 2 16 -32768 32767
unsigned
short
2 16 0 65535
signed int 2 16 -32768 32767
unsigned int 2 16 0 65535
signed long 4 32 -2147483648 2147483647
unsigned long 4 32 0 4294967295
http://www.slideshare.net/IgorShkulipa 32http://www.slideshare.net/IgorShkulipa
Типы с плавающей точкой
К плавающим типам относятся три типа, представленные
следующими именами типов, модификаторов и их сочетаний:
•float
•double
•long double
Так же могут использоваться с модификаторами типов.
Плавающие типы используются для работы с вещественными
числами, которые представляются в форме записи с десятичной
точкой, так и в "научной нотации".
123.4 1.234E2
0.567 5.67Е-1
http://www.slideshare.net/IgorShkulipa 33http://www.slideshare.net/IgorShkulipa
Диапазоны значений типов с плавающей точкой
Тип данных Байты Биты Минимум Максимум
float 4 32 3.4E-38 3.4E+38
double 8 64 1.7E-308 1.7E+308
long double 10 80 3.4E-4932 3.4E+4932
http://www.slideshare.net/IgorShkulipa 34http://www.slideshare.net/IgorShkulipa
Типы данных
Логический тип:
•bool, принимает значения true или false, а так же “0” и “>0”
Строковый тип:
•char*, char[] – массив символов
•string – класс библиотеки STL
Пустой тип:
•void
http://www.slideshare.net/IgorShkulipa 35http://www.slideshare.net/IgorShkulipa
Классы памяти
Класс памяти определяет порядок размещения объекта в памяти. C++
располагает четырьмя спецификаторами класса памяти:
•auto
•register
•static
•extern
-auto - спецификатор автоматического класса памяти указывает на то, что
объект располагается в локальной (или автоматически распределяемой)
памяти.
-register - применяется к объектам, по умолчанию располагаемым в
локальной памяти. Представляет из себя "ненавязчивую просьбу" к
транслятору (если это возможно) о размещении значений объектов,
объявленных со спецификатором register в одном из доступных регистров,
а не в локальной памяти.
-static -1. объект располагается по фиксированному адресу.
• 2. локален в одном программном модуле, то есть недоступен из
других модулей многомодульной программы
-extern - внешний статический класс памяти
http://www.slideshare.net/IgorShkulipa 36http://www.slideshare.net/IgorShkulipa
Константы
Константы в С++:
•символьные константы
•целые константы
•константы с плавающей точкой
•ноль (0) может использоваться как константа любого указательного
типа
В C++ существует три вида символических констант:
•любому значению любого типа можно дать имя и использовать его как
константу, добавив к его описанию ключевое слово const
•множество целых констант может быть определено как перечисление
(enum)
•любое имя вектора или функции является константой.
http://www.slideshare.net/IgorShkulipa 37http://www.slideshare.net/IgorShkulipa
Локальные и глобальные переменные
int global_var;
int func()
{
int local_var;
}
global_var – глобальная переменная, доступна из любой части
программы
local_var – локальная переменная, доступна только в том блоке
программы, в котором она объявлена
глобальные переменные экранируются локальными
http://www.slideshare.net/IgorShkulipa 38http://www.slideshare.net/IgorShkulipa
Объявление и инициализация переменных
При инициализации необходимо придерживаться следующих правил:
1. Объявления содержащие спецификатор класса памяти extern не могут
содержать инициаторов.
1. Глобальные переменные всегда инициализируются, и если это не сделано
явно, то они инициализируются нулевым значением.
1. Переменная с классом памяти static может быть инициализирована
константным выражением. Инициализация для них выполняется один раз
перед началом программы. Если явная инициализация отсутствует, то
переменная инициализируется нулевым значением.
1. Инициализация переменных с классом памяти auto или register
выполняется всякий раз при входе в блок, в котором они объявлены. Если
инициализация переменных в объявлении отсутствует, то их начальное
значение не определено.
1. Начальными значениями для глобальных переменных и для переменных с
классом памяти static должны быть константные выражения. Адреса таких
переменных являются константами и эти константы можно использовать для
инициализации объявленных глобально указателей. Адреса переменных с
классом памяти auto или register не являются константами и их нельзя
использовать в инициаторах.
http://www.slideshare.net/IgorShkulipa 39http://www.slideshare.net/IgorShkulipa
Преобразование типов
1. Присвоение "большему типу" значения "меньшего типа". Безопасное
присвоение, гарантирует сохранение значения.
unsigned int UnsignedIntVal;
unsigned char UnsignedCharVal;
UnsignedIntVal = UnsignedCharVal;
2. Присвоение "меньшему типу" значения "большего типа". Потенциально
опасное присвоение, грозит потерей информации.
int IntVal;
char CharVal;
CharVal = IntVal;
3. Преобразование значения из "меньшего типа" в "больший тип".
Называется расширением типа.
(unsigned int)UnsignedCharVal;
4. Преобразование значения из "большего типа" в "меньший тип".
Называется сужением типа. Является опасным преобразованием.
(char)IntVal;
http://www.slideshare.net/IgorShkulipa 40http://www.slideshare.net/IgorShkulipa
Лабораторная работа № 1
Базовые типы данных и основные операции С++
Задание:
Создать новый проект – консольное приложение на языке C++. Вывести на экран
результат работы программы, согласно вариантам заданий.
Варианты заданий (числа N, M, a, b, c вводятся с клавиатуры):
1. Факториал числа N.
2. Сумма цифр числа N.
3. Гипотенуза прямоугольного треугольника с катетами a, b.
4. Длина медианы треугольника со сторонами a, b, c.
5. Длина высоты треугольника со сторонами a, b, c.
6. Длина биссектрисы треугольника со сторонами a, b, c.
7. Площадь треугольника со сторонами a, b, c.
8. Числа Фибоначи от 1 до N.
9. Программа, выводящая в порядке возрастания все простые числа диапазона от 1
до N.
10. Программа, определяющая простое ли число N, введенное с клавиатуры
11. Программа, определяющая делится ли число N без остатка на сумму своих цифр.
12. Программа, вычисляющая расстояние, которое пролетит тело вдоль горизонтальной
оси, брошенное в вакууме под углом α к горизонту с некоторой начальной
скоростью V0

More Related Content

Viewers also liked

Enhancing Energy Efficiency in Cloud Management through Code Annotations and ...
Enhancing Energy Efficiency in Cloud Management through Code Annotations and ...Enhancing Energy Efficiency in Cloud Management through Code Annotations and ...
Enhancing Energy Efficiency in Cloud Management through Code Annotations and ...
Luigi Sambolino
 
Production diary 12
Production diary 12Production diary 12
Production diary 12
Laila Jaleel
 
Challenge Passport-sm
Challenge Passport-smChallenge Passport-sm
Challenge Passport-smLewis Pitzer
 
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.
Igor Shkulipa
 
Production diary 4
Production diary 4Production diary 4
Production diary 4
Laila Jaleel
 
Happily_Disconnected
Happily_DisconnectedHappily_Disconnected
Happily_DisconnectedAmber Perkins
 
Nowhere But Niigata
Nowhere But NiigataNowhere But Niigata
Nowhere But Niigata
Steve Gillick
 
Production diary 7
Production diary 7Production diary 7
Production diary 7
Laila Jaleel
 
C# Web. Занятие 03.
C# Web. Занятие 03.C# Web. Занятие 03.
C# Web. Занятие 03.
Igor Shkulipa
 
EE'13 - The Modern Marketer Can be Agile Too
EE'13 - The Modern Marketer Can be Agile TooEE'13 - The Modern Marketer Can be Agile Too
EE'13 - The Modern Marketer Can be Agile Toobentgate
 
5 historia clinica
5  historia clinica 5  historia clinica
5 historia clinica
Jhon Boza Gomez
 
C# Web. Занятие 14.
C# Web. Занятие 14.C# Web. Занятие 14.
C# Web. Занятие 14.
Igor Shkulipa
 
Simon Elliott
Simon ElliottSimon Elliott
Simon Elliott
Simechanical
 
Inma
InmaInma
Laura mulvey’s male gaze theory
Laura mulvey’s male gaze theoryLaura mulvey’s male gaze theory
Laura mulvey’s male gaze theory
Laila Jaleel
 
C# Desktop. Занятие 12.
C# Desktop. Занятие 12.C# Desktop. Занятие 12.
C# Desktop. Занятие 12.
Igor Shkulipa
 
Debian Installer Step by Step
Debian Installer Step by StepDebian Installer Step by Step
Debian Installer Step by Step
AF
 
Capítulo iii correcion
Capítulo iii correcion Capítulo iii correcion
Capítulo iii correcion
Ida Morán
 
What is Lean UX?
What is Lean UX?What is Lean UX?
What is Lean UX?
Darren Gideon
 
C# Desktop. Занятие 13.
C# Desktop. Занятие 13.C# Desktop. Занятие 13.
C# Desktop. Занятие 13.
Igor Shkulipa
 

Viewers also liked (20)

Enhancing Energy Efficiency in Cloud Management through Code Annotations and ...
Enhancing Energy Efficiency in Cloud Management through Code Annotations and ...Enhancing Energy Efficiency in Cloud Management through Code Annotations and ...
Enhancing Energy Efficiency in Cloud Management through Code Annotations and ...
 
Production diary 12
Production diary 12Production diary 12
Production diary 12
 
Challenge Passport-sm
Challenge Passport-smChallenge Passport-sm
Challenge Passport-sm
 
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.
 
Production diary 4
Production diary 4Production diary 4
Production diary 4
 
Happily_Disconnected
Happily_DisconnectedHappily_Disconnected
Happily_Disconnected
 
Nowhere But Niigata
Nowhere But NiigataNowhere But Niigata
Nowhere But Niigata
 
Production diary 7
Production diary 7Production diary 7
Production diary 7
 
C# Web. Занятие 03.
C# Web. Занятие 03.C# Web. Занятие 03.
C# Web. Занятие 03.
 
EE'13 - The Modern Marketer Can be Agile Too
EE'13 - The Modern Marketer Can be Agile TooEE'13 - The Modern Marketer Can be Agile Too
EE'13 - The Modern Marketer Can be Agile Too
 
5 historia clinica
5  historia clinica 5  historia clinica
5 historia clinica
 
C# Web. Занятие 14.
C# Web. Занятие 14.C# Web. Занятие 14.
C# Web. Занятие 14.
 
Simon Elliott
Simon ElliottSimon Elliott
Simon Elliott
 
Inma
InmaInma
Inma
 
Laura mulvey’s male gaze theory
Laura mulvey’s male gaze theoryLaura mulvey’s male gaze theory
Laura mulvey’s male gaze theory
 
C# Desktop. Занятие 12.
C# Desktop. Занятие 12.C# Desktop. Занятие 12.
C# Desktop. Занятие 12.
 
Debian Installer Step by Step
Debian Installer Step by StepDebian Installer Step by Step
Debian Installer Step by Step
 
Capítulo iii correcion
Capítulo iii correcion Capítulo iii correcion
Capítulo iii correcion
 
What is Lean UX?
What is Lean UX?What is Lean UX?
What is Lean UX?
 
C# Desktop. Занятие 13.
C# Desktop. Занятие 13.C# Desktop. Занятие 13.
C# Desktop. Занятие 13.
 

Similar to C++ Базовый. Занятие 01.

Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.
Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.
Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.
IT-Доминанта
 
DBD lection 1. Intro in Database Design. In Russian.
DBD lection 1. Intro in Database Design. In Russian.DBD lection 1. Intro in Database Design. In Russian.
DBD lection 1. Intro in Database Design. In Russian.
mikhaelsmirnov
 
Algorithms and programming lecture in ru
Algorithms and programming lecture in ruAlgorithms and programming lecture in ru
Algorithms and programming lecture in ru
ssuser0562f1
 
Алгоритмизация и программирование С/С++
Алгоритмизация и  программирование С/С++Алгоритмизация и  программирование С/С++
Алгоритмизация и программирование С/С++
ssuser0562f1
 
рп по пр практике в
рп по пр практике врп по пр практике в
рп по пр практике вAnastasia Snegina
 
C++ осень 2013 лекция 1
C++ осень 2013 лекция 1C++ осень 2013 лекция 1
C++ осень 2013 лекция 1Technopark
 
рп по пр практике вт
рп по пр практике втрп по пр практике вт
рп по пр практике втAnastasia Snegina
 
рп по пр практике вт
рп по пр практике втрп по пр практике вт
рп по пр практике втAnastasia Snegina
 
Дополнительная общеразвивающая программа «Программирование на языке с++»
Дополнительная общеразвивающая программа «Программирование на языке с++»Дополнительная общеразвивающая программа «Программирование на языке с++»
Дополнительная общеразвивающая программа «Программирование на языке с++»
rnmc7
 
терминология vol.2
терминология vol.2терминология vol.2
терминология vol.2
SBTech
 
Inroducing SAP ABAP - Presentation with basics SAP ABAP
Inroducing SAP ABAP - Presentation with basics SAP ABAPInroducing SAP ABAP - Presentation with basics SAP ABAP
Inroducing SAP ABAP - Presentation with basics SAP ABAP
mikhailshurgulaya
 
C++ осень 2012 лекция 1
C++ осень 2012 лекция 1C++ осень 2012 лекция 1
C++ осень 2012 лекция 1Technopark
 
Programming Concepts
Programming ConceptsProgramming Concepts
Programming Concepts
Mister_Lee
 
рп по у пп практике в
рп по у пп практике врп по у пп практике в
рп по у пп практике вAnastasia Snegina
 
Построение систем автоматического протоколирования Си/Си++ кода
Построение систем автоматического протоколирования Си/Си++ кодаПостроение систем автоматического протоколирования Си/Си++ кода
Построение систем автоматического протоколирования Си/Си++ кода
Tatyanazaxarova
 
Сборник практических задании по Php
Сборник практических задании по PhpСборник практических задании по Php
Сборник практических задании по Php
Rauan Ibraikhan
 
Как и зачем можно создать DSL на Python
Как и зачем можно создать DSL на PythonКак и зачем можно создать DSL на Python
Как и зачем можно создать DSL на Python
PyNSK
 
Programming history. Algorithm
Programming history. AlgorithmProgramming history. Algorithm
Programming history. Algorithm
Ihor Porotikov
 
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Anthony Marchenko
 

Similar to C++ Базовый. Занятие 01. (20)

Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.
Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.
Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.
 
DBD lection 1. Intro in Database Design. In Russian.
DBD lection 1. Intro in Database Design. In Russian.DBD lection 1. Intro in Database Design. In Russian.
DBD lection 1. Intro in Database Design. In Russian.
 
Algorithms and programming lecture in ru
Algorithms and programming lecture in ruAlgorithms and programming lecture in ru
Algorithms and programming lecture in ru
 
Алгоритмизация и программирование С/С++
Алгоритмизация и  программирование С/С++Алгоритмизация и  программирование С/С++
Алгоритмизация и программирование С/С++
 
рп по пр практике в
рп по пр практике врп по пр практике в
рп по пр практике в
 
C++ осень 2013 лекция 1
C++ осень 2013 лекция 1C++ осень 2013 лекция 1
C++ осень 2013 лекция 1
 
рп по пр практике вт
рп по пр практике втрп по пр практике вт
рп по пр практике вт
 
рп по пр практике вт
рп по пр практике втрп по пр практике вт
рп по пр практике вт
 
Дополнительная общеразвивающая программа «Программирование на языке с++»
Дополнительная общеразвивающая программа «Программирование на языке с++»Дополнительная общеразвивающая программа «Программирование на языке с++»
Дополнительная общеразвивающая программа «Программирование на языке с++»
 
терминология vol.2
терминология vol.2терминология vol.2
терминология vol.2
 
Inroducing SAP ABAP - Presentation with basics SAP ABAP
Inroducing SAP ABAP - Presentation with basics SAP ABAPInroducing SAP ABAP - Presentation with basics SAP ABAP
Inroducing SAP ABAP - Presentation with basics SAP ABAP
 
C++ осень 2012 лекция 1
C++ осень 2012 лекция 1C++ осень 2012 лекция 1
C++ осень 2012 лекция 1
 
Programming Concepts
Programming ConceptsProgramming Concepts
Programming Concepts
 
Languages b6cc1c17
Languages b6cc1c17Languages b6cc1c17
Languages b6cc1c17
 
рп по у пп практике в
рп по у пп практике врп по у пп практике в
рп по у пп практике в
 
Построение систем автоматического протоколирования Си/Си++ кода
Построение систем автоматического протоколирования Си/Си++ кодаПостроение систем автоматического протоколирования Си/Си++ кода
Построение систем автоматического протоколирования Си/Си++ кода
 
Сборник практических задании по Php
Сборник практических задании по PhpСборник практических задании по Php
Сборник практических задании по Php
 
Как и зачем можно создать DSL на Python
Как и зачем можно создать DSL на PythonКак и зачем можно создать DSL на Python
Как и зачем можно создать DSL на Python
 
Programming history. Algorithm
Programming history. AlgorithmProgramming history. Algorithm
Programming history. Algorithm
 
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
 

More from Igor Shkulipa

Общие темы. Тема 03.
Общие темы. Тема 03. Общие темы. Тема 03.
Общие темы. Тема 03.
Igor Shkulipa
 
Общие темы. Тема 02.
Общие темы. Тема 02.Общие темы. Тема 02.
Общие темы. Тема 02.
Igor Shkulipa
 
Общие темы. Тема 01.
Общие темы. Тема 01.Общие темы. Тема 01.
Общие темы. Тема 01.
Igor Shkulipa
 
JavaScript Базовый. Занятие 06.
JavaScript Базовый. Занятие 06.JavaScript Базовый. Занятие 06.
JavaScript Базовый. Занятие 06.
Igor Shkulipa
 
JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.
Igor Shkulipa
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.
Igor Shkulipa
 
JavaScript Базовый. Занятие 10.
JavaScript Базовый. Занятие 10.JavaScript Базовый. Занятие 10.
JavaScript Базовый. Занятие 10.
Igor Shkulipa
 
JavaScript Базовый. Занятие 05.
JavaScript Базовый. Занятие 05.JavaScript Базовый. Занятие 05.
JavaScript Базовый. Занятие 05.
Igor Shkulipa
 
JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.
Igor Shkulipa
 
JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.
Igor Shkulipa
 
JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.
Igor Shkulipa
 
JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.
Igor Shkulipa
 
JavaScript Базовый. Занятие 03.
JavaScript Базовый. Занятие 03.JavaScript Базовый. Занятие 03.
JavaScript Базовый. Занятие 03.
Igor Shkulipa
 
JavaScript Базовый. Занятие 02.
JavaScript Базовый. Занятие 02.JavaScript Базовый. Занятие 02.
JavaScript Базовый. Занятие 02.
Igor Shkulipa
 
C# Web. Занятие 09.
C# Web. Занятие 09.C# Web. Занятие 09.
C# Web. Занятие 09.
Igor Shkulipa
 
C# Web. Занятие 08.
C# Web. Занятие 08.C# Web. Занятие 08.
C# Web. Занятие 08.
Igor Shkulipa
 
C# Web. Занятие 07.
C# Web. Занятие 07.C# Web. Занятие 07.
C# Web. Занятие 07.
Igor Shkulipa
 
C# Web. Занятие 04.
C# Web. Занятие 04.C# Web. Занятие 04.
C# Web. Занятие 04.
Igor Shkulipa
 
C# Web. Занятие 12.
C# Web. Занятие 12.C# Web. Занятие 12.
C# Web. Занятие 12.
Igor Shkulipa
 
C# Web. Занятие 16.
C# Web. Занятие 16.C# Web. Занятие 16.
C# Web. Занятие 16.
Igor Shkulipa
 

More from Igor Shkulipa (20)

Общие темы. Тема 03.
Общие темы. Тема 03. Общие темы. Тема 03.
Общие темы. Тема 03.
 
Общие темы. Тема 02.
Общие темы. Тема 02.Общие темы. Тема 02.
Общие темы. Тема 02.
 
Общие темы. Тема 01.
Общие темы. Тема 01.Общие темы. Тема 01.
Общие темы. Тема 01.
 
JavaScript Базовый. Занятие 06.
JavaScript Базовый. Занятие 06.JavaScript Базовый. Занятие 06.
JavaScript Базовый. Занятие 06.
 
JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.
 
JavaScript Базовый. Занятие 10.
JavaScript Базовый. Занятие 10.JavaScript Базовый. Занятие 10.
JavaScript Базовый. Занятие 10.
 
JavaScript Базовый. Занятие 05.
JavaScript Базовый. Занятие 05.JavaScript Базовый. Занятие 05.
JavaScript Базовый. Занятие 05.
 
JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.
 
JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.
 
JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.
 
JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.
 
JavaScript Базовый. Занятие 03.
JavaScript Базовый. Занятие 03.JavaScript Базовый. Занятие 03.
JavaScript Базовый. Занятие 03.
 
JavaScript Базовый. Занятие 02.
JavaScript Базовый. Занятие 02.JavaScript Базовый. Занятие 02.
JavaScript Базовый. Занятие 02.
 
C# Web. Занятие 09.
C# Web. Занятие 09.C# Web. Занятие 09.
C# Web. Занятие 09.
 
C# Web. Занятие 08.
C# Web. Занятие 08.C# Web. Занятие 08.
C# Web. Занятие 08.
 
C# Web. Занятие 07.
C# Web. Занятие 07.C# Web. Занятие 07.
C# Web. Занятие 07.
 
C# Web. Занятие 04.
C# Web. Занятие 04.C# Web. Занятие 04.
C# Web. Занятие 04.
 
C# Web. Занятие 12.
C# Web. Занятие 12.C# Web. Занятие 12.
C# Web. Занятие 12.
 
C# Web. Занятие 16.
C# Web. Занятие 16.C# Web. Занятие 16.
C# Web. Занятие 16.
 

C++ Базовый. Занятие 01.

  • 1. Модуль 1: Базовые понятия языка программирования С++ Темы лекции: Введение. Немного истории. Состав языка. Переменные и базовые типы данных. Практическое задание: Базовые типы данных и основные операции С++. Тренер: Игорь Шкулипа, к.т.н. C++ Базовый. Занятие 1
  • 2. http://www.slideshare.net/IgorShkulipa 2http://www.slideshare.net/IgorShkulipa Курс «C++ для начинающих» Курс состоит из четырех основных модулей: 1. Базовые понятия языка программирования С++ • Введение. Немного истории • Состав языка • Переменные и базовые типы данных • Форматированный ввод/вывод • Основные операции языка С++ • Операторы языка С++ • Функции • Структура программы на языке С++ 2. Пользовательские типы данных и работа с динамической памятью • Массивы и указатели • Пользовательские типы данных • Динамическая память 3. Основные понятия объектно-ориентированного программирования • Введение в объектно-ориентированное программирование • Объектно-ориентированное программирование на языке С++ • Принципы ООП • Перегрузка методов и операторов • Наследование и полиморфизм • Потоковый ввод-вывод 4. Дополнительные темы объектно-ориентированного программирования • Шаблоны типов • Обработка исключений • Пространства имен • Проектирование программного обеспечения • Паттерны проектирования
  • 3. http://www.slideshare.net/IgorShkulipa 3http://www.slideshare.net/IgorShkulipa Время и оценка результатов курса Курс состоит из 25 занятий, общей длительностью 100 часов аудиторной работы. Оценка теоретической части: 1. Три промежуточных теста (максимальная оценка - 100 баллов) 2. Результирующий тест (максимальная оценка - 100 баллов) Оценка практической части: 1. 17 лабораторных работ (максимальная средняя оценка - 100 баллов) Курсовой проект: 1. На протяжении курса студенты выполняют курсовой проект по индивидуальной теме (максимальная оценка - 100 баллов)
  • 4. http://www.slideshare.net/IgorShkulipa 4http://www.slideshare.net/IgorShkulipa Результат работы на протяжении курса • TP – средняя оценка за промежуточные тесты (макс. 100) • TR – оценка за результирующий тест (макс. 100) • LR – средняя оценка за выполнение лабораторных работ (макс. 100) • CP – оценка за курсовой проект (макс. 100) Результат курса = 0.2*TP + 0.2*TR + 0.2*LR + 0.4*CP >= 70% < 70%
  • 5. http://www.slideshare.net/IgorShkulipa 5http://www.slideshare.net/IgorShkulipa Литература 1. Б. Страуструп / Язык программирования С++. -2008 г., - 1104 стр. 1. Брайан Керниган, Деннис Ритчи / Язык программирования C - М.: Изд. дом «Вильямс», 2012. - 304 cтр. 1. Т. Кормен, Ч. Лейзерсон, Р. Ривест / Алгоритмы. Построение и анализ, М, Вильямс, -2001, -1296 стр. 1. Роберт Седжвик / Фундаментальные алгоритмы C++. Части 1-4. Анализ. Структуры данных. Сортировка. Поиск. – СПб, ДиаСофт, 2001 г. - 688 стр. 1. Роберт Седжвик / Фундаментальные алгоритмы C++. Часть 5. Алгоритмы на графах. – СПб, ДиаСофт, 2002 г. - 496 стр.
  • 7. http://www.slideshare.net/IgorShkulipa 7http://www.slideshare.net/IgorShkulipa ЦП Центральный процессор Вычислительная машина фон-Неймана ● Программное управление вычислительным процессом путем автоматического извлечения команд программы из памяти и последовательного их выполнения. ● Общая память для программ и данных. ● Одинаковое кодирование программ и данных. ● Использование двоичной системы счисления. ● Арифметическое устройство на базе двоичного сумматора. АЛУ Арифметико-логическое устройство УУ Устройство управления Память СВВ Система ввода-вывода ВУ Внешнее устройство ВУ Внешнее устройство ВУ Внешнее устройство ВУ Внешнее устройство
  • 8. http://www.slideshare.net/IgorShkulipa 8http://www.slideshare.net/IgorShkulipa Функциональная организация типовой ЭВМ 1. Процессор (центральный процессор) — основной вычислительный блок компьютера, содержит важнейшие функциональные устройства: • устройство управления с интерфейсом процессора (системой сопряжения и связи процессора с другими узлами машины); • арифметико-логическое устройство; • процессорную память. Процессор, является устройством, выполняющим все функции элементарной вычислительной машины. 1. Оперативная память — запоминающее устройство, используемое для оперативного хранения и обмена информацией с другими узлами машины. 2. Каналы связи (внутримашинный интерфейс) служат для связи центральных узлов машины с ее внешними устройствами. 3. Внешние устройства обеспечивают эффективное взаимодействие компьютера с окружающей средой: пользователями, объектами управления, другими машинами. В состав внешних устройств обязательно входят внешняя память и устройства ввода-вывода. ЦП Центральный процессор АЛУ Арифметико- логическое устройство УУ Устройство управления ПП Процессорная память ОП Оперативная память КС Каналы связи ВУ Внешние устройства ВП Внешняя память ВВ Ввод-вывод
  • 9. http://www.slideshare.net/IgorShkulipa 9http://www.slideshare.net/IgorShkulipa Языки программирования Машинный код Языком программирования первого поколения считается машинный код. Машинный код состоит из инструкций, которые компьютер (процессор) может выполнить (а также данных, которые принадлежат этим инструкциям). Программируя на машинном коде, программист должен был писать свою программу в двоичном коде, так что бы процессор мог это понять и исполнить. Язык ассемблера При программировании на языке Ассемблера же инструкции представлены человеку в понятной форме. Само программирование является очень похожим на программирование в машинном коде, потому что инструкции те же самые, что и в машинном коде (только в другом виде - в виде слов). Программа, написанная на языке Ассемблера, представляет собой что-то вроде следующего: MOV AL, 19 ADD AL, 4 OUT 2 Языки высокого уровня Такие языки программирования не очень связаны с аппаратными средствами. Это значит, что программист не должен больше очень точно знать устройство и особенности аппаратного обеспечения, однако может сравнительно независимо аппаратных средств, после чего эта программа преобразуется при помощи некоторых разных инструментов в форму понятную аппаратному обеспечению. FROTRAN, BASIC, Pascal, C, C++
  • 10. http://www.slideshare.net/IgorShkulipa 10http://www.slideshare.net/IgorShkulipa Базовые типы языков программирования Процедурные В процедурных языках программирования на языке программирования описываются действия и порядок их выполнения, а также эти действия разбиваются на группы (подпрограммы). Из процедур в свою очередь формируются структуры кода, которые можно повторно использовать. Pascal Функциональные В функциональных языках программирования всё решение описывается при помощи функций. C Объектно-ориентированные В объектно-ориентированных языках программирования решение проблемы производится при помощи функций и структур данных, описанных в классах. Из каждого класса можно создать объект, у которого будет набор свойств и/или методов. C++
  • 11. http://www.slideshare.net/IgorShkulipa 11http://www.slideshare.net/IgorShkulipa Трансляторы Трансляторы – это программы или устройства, переводящие информацию с языка понятного человеку, на язык, понятный устройству. Трансляторы Интерпретаторы Компиляторы Интерпретатор последовательно читает команды языка программирования, переводит их на машинный язык и выполняет. Компилятор переводит весь текст в машинный код, который в дальнейшем может быть запущен на выполнение Классические Pascal, C, C++ Кросплатформные Java
  • 12. http://www.slideshare.net/IgorShkulipa 12http://www.slideshare.net/IgorShkulipa Процедурное программирование Процедурное программирование — это парадигма программирования, основанная на концепции вызова процедуры. Процедуры, также известны как подпрограммы. Процедуры содержат последовательность шагов для выполнения. В ходе выполнения программы любая процедура может быть вызвана из любой точки, включая саму данную процедуру. Преимущества: - Возможность повторного использования одного и того же кода из нескольких мест программы без его копирования. - Легче отследить поток выполнения программы, чем в случае использования инструкций GOTO или JUMP, которые могут сделать из большой, сложной программы так называемый «спагетти-код». - Возможность поддержки модульности и структурности. Подходы к разработке программного обеспечения
  • 13. http://www.slideshare.net/IgorShkulipa 13http://www.slideshare.net/IgorShkulipa Модульное программирование Модульное программирование основано на понятии модуля - логически взаимосвязанной совокупности функциональных элементов, оформленных в виде отдельных программных модулей. Модуль характеризуют: - один вход и один выход - на входе программный модуль получает определенный набор исходных данных, выполняет содержательную обработку и возвращает один набор результатных данных, т.е. реализуется стандартный принцип IPO (Input - Process - Output) - вход- процесс-выход; - функциональная завершенность - модуль выполняет перечень регламентированных операций для реализации каждой отдельной функции в полном составе, достаточных для завершения начатой обработки; - логическая независимость - результат работы программного модуля зависит только от исходных данных, но не зависит от работы других модулей; - слабые информационные связи с другими программными модулями - обмен информацией между модулями должен быть по возможности минимизирован; Подходы к разработке программного обеспечения
  • 14. http://www.slideshare.net/IgorShkulipa 14http://www.slideshare.net/IgorShkulipa Структурное программирование Это методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков (модулей). Любая программа представляет собой структуру, построенную из базовых конструкций имеющие следующие отличительные черты: - Последовательное исполнение - Ветвление (if) - Цикл (for, while) - Подпрограмма (процедура или функция) Разработка программы в структурном программировании ведётся пошагово, методом «сверху вниз». Это позволяет вместо работающих подпрограмм использовать "заглушку", чтобы протестировать работоспособность всей программы в целом. После первого тестирования на работоспособность заглушку заменяют реальной подпрограммой. Подходы к разработке программного обеспечения
  • 15. http://www.slideshare.net/IgorShkulipa 15http://www.slideshare.net/IgorShkulipa Объектно-ориентированное программирование Объектно-ориентированное программирование - технология программирования, при которой программа рассматривается как набор дискретных объектов, содержащих, в свою очередь, наборы структур данных и процедур, взаимодействующих с другими объектами. Принципы ООП: Инкапсуляция — это свойство системы, позволяющее объединить данные и методы, работающие с ними в одной оболочке, и скрыть детали реализации от пользователя. Наследование — это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс — потомком, наследником или производным классом. Полиморфизм — это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта Подходы к разработке программного обеспечения
  • 16. http://www.slideshare.net/IgorShkulipa 16http://www.slideshare.net/IgorShkulipa Обобщенное программирование Обобщённое программирование — парадигма программирования, заключающаяся в таком описании данных и алгоритмов, которое можно применять к различным типам данных, не меняя само это описание. Подходы к разработке программного обеспечения
  • 17. http://www.slideshare.net/IgorShkulipa 17http://www.slideshare.net/IgorShkulipa История создания С++ Язык С был изобретен и реализован Деннисом Ритчи (Dennis Ritchie) для компьютера DEC PDP-11 в операционной системе Unix. Стандарты: С89 - ANSI/ISO – 1989 г. С99 - ANSI/ISO – 1999 г. C11 - ISO/IEC - 2011 г. Деннис Ритчи 1941-2011 Бьерн Страуструп придумал ряд усовершенствований к языку C под собственные нужды. Добавил к С возможность работы с классами и объектами. Позже в язык были добавлены новые возможности, такие как виртуальные функции, перегрузка функций и операторов, ссылки, константы, пользовательский контроль над управлением свободной памятью, улучшенная проверка типов и новый стиль комментариев Бьерн СтрауструпВ 1983 году был переименован из «C с классами» в C++
  • 18. http://www.slideshare.net/IgorShkulipa 18http://www.slideshare.net/IgorShkulipa Компиляция С++ программ в ОС Linux Файл программы program.cpp Типы файлов: - .c – программа на языке С - .cpp – программа на языке С++ - .h – заголовочный файл - .o (.obj в Windows) – объектный файл - attrib +**x (.exe Windows) – исполняемый файл Компилятор gcc program.o Компоновщик program.exe
  • 21. http://www.slideshare.net/IgorShkulipa 21http://www.slideshare.net/IgorShkulipa Алфавит С++ Алфавит (или множество литер) языка программирования C++ основывается на множестве символов таблицы кодов ASCII. Алфавит C++ включает: - строчные и прописные буквы латинского алфавита - цифры от 0 до 9 - символ '_' (также считается буквой) - специальные символы: " { } , | [ ] + - % / ; ' : ? < > = ! & # ~ ^ . * и др. Алфавит C++ служит для построения слов, которые в C++ называются лексемами. Различают пять типов лексем: - идентификаторы - ключевые слова - знаки (символы) операций - литералы - разделители Почти все типы лексем (кроме ключевых слов) имеют собственные правила словообразования, включая собственные подмножества алфавита.
  • 22. http://www.slideshare.net/IgorShkulipa 22http://www.slideshare.net/IgorShkulipa Ключевые слова Часть идентификаторов C++ входит в фиксированный словарь ключевых слов. Эти идентификаторы образуют подмножество ключевых слов (они так и называются ключевыми словами). Список ключевых слов: Операторы: asm, break, case, catch, continue, default, do, else, for, goto, if, new, return, sizeof, switch, throw, try, typedef, typeid, while Базовые типы данных: char, double, float, int, void Модификаторы типов: long, short, signed, unsigned Классы памяти: auto, const, register, inline, static, volatile Пользовательские типы: class, enum, extern, friend, operator, private, protected, public, struct, template, this, union, virtual.
  • 23. http://www.slideshare.net/IgorShkulipa 23http://www.slideshare.net/IgorShkulipa Идентификаторы Идентификатором называется последовательность цифр и букв, а также специальных символов, при условии, что первой стоит буква или специальный символ. Правила составления идентификаторов: - начинается с буквы или знака «_» - регистр букв имеет значение - может иметь любое количество символов, но значимыми являются только первые 31 - идентификатор не должен совпадать с ключевыми словами, с ключевыми словами и именами функций библиотеки компилятора языка программирования С++
  • 24. http://www.slideshare.net/IgorShkulipa 24http://www.slideshare.net/IgorShkulipa Комментарии 1. Все, что между парными символами /* и */ считается комментарием 1. Все, что после парного символа // считается комментарием
  • 25. http://www.slideshare.net/IgorShkulipa 25http://www.slideshare.net/IgorShkulipa , ! != | |= % %= & && &= () * *= + ++ += - -- -= -> ->* . .* / /= :: < << <= <<= > >> >= >>= == ?: [] ^ ^= ~ || # ## sizeof new delete typeid throw Символы операций и разделителей ... ; {}
  • 26. http://www.slideshare.net/IgorShkulipa 26http://www.slideshare.net/IgorShkulipa Литералы Целочисленный литерал Целочисленный литерал служит для записи целочисленных значений и является соответствующей последовательностью цифр (возможно со знаком '-'). Может иметь префиксы 0x, 0b Вещественный литерал Вещественный литерал служит для отображения вещественных значений. Может содержать символы “.” и “E” Символьный литерал Значением символьного литерала является соответствующее значения ASCII кода. Значение заключается в «’» Строковый литерал Строковые литералы являются последовательностью (возможно, пустой) литер в одном из возможных форматов представления, заключённых в «“»
  • 27. http://www.slideshare.net/IgorShkulipa 27http://www.slideshare.net/IgorShkulipa Пример простейшей программы на С++ #include <iostream.h> int main() { cout << "Hello, world!"; return 0; } #include <iostream.h> - директива препроцессора, обозначающая подключение к программе заголовочного файла «iostream.h», что дает возможность использовать описанные в нем функции в нашей программе. int main() – объявление основной функции программы, с которой начинается ее выполнение. cout << "Hello, World!"; – вызов оператора, который выводит на экран текст «Hello, World!». return 0; – оператор, сигнализирующий о завершении работы функции и возвращающий ее значение.
  • 28. http://www.slideshare.net/IgorShkulipa 28http://www.slideshare.net/IgorShkulipa Тема 3. Переменные и базовые типы данных.
  • 29. http://www.slideshare.net/IgorShkulipa 29http://www.slideshare.net/IgorShkulipa Переменные и типы данных Переменная – поименованная область памяти, адрес которой можно использовать для осуществления доступа к данным. Данные, находящиеся в переменной (то есть по данному адресу памяти), называются значением этой переменной. Тип данных – множество значений переменной и множество операций, которые можно применять к этим значениям •Базовые типы данных •Составные типы данных (массивы) •Пользовательские типы данных (структуры, перечисления, объединения) •Классы (относятся к пользовательским типам данных)
  • 30. http://www.slideshare.net/IgorShkulipa 30http://www.slideshare.net/IgorShkulipa Целочисленные типы данных К целочисленным типам относятся типы, представленные следующими именами основных типов: •char •short •int •long Имена целочисленных типов могут использоваться в сочетании с парой модификаторов типа: •signed •unsigned Эти модификаторы изменяют формат представления данных, но не влияют на размеры выделяемых областей памяти.
  • 31. http://www.slideshare.net/IgorShkulipa 31http://www.slideshare.net/IgorShkulipa Диапазоны значений целочисленных типов Тип данных Байты Биты Минимум Максимум signed char 1 8 - 128 127 unsigned char 1 8 0 255 signed short 2 16 -32768 32767 enum 2 16 -32768 32767 unsigned short 2 16 0 65535 signed int 2 16 -32768 32767 unsigned int 2 16 0 65535 signed long 4 32 -2147483648 2147483647 unsigned long 4 32 0 4294967295
  • 32. http://www.slideshare.net/IgorShkulipa 32http://www.slideshare.net/IgorShkulipa Типы с плавающей точкой К плавающим типам относятся три типа, представленные следующими именами типов, модификаторов и их сочетаний: •float •double •long double Так же могут использоваться с модификаторами типов. Плавающие типы используются для работы с вещественными числами, которые представляются в форме записи с десятичной точкой, так и в "научной нотации". 123.4 1.234E2 0.567 5.67Е-1
  • 33. http://www.slideshare.net/IgorShkulipa 33http://www.slideshare.net/IgorShkulipa Диапазоны значений типов с плавающей точкой Тип данных Байты Биты Минимум Максимум float 4 32 3.4E-38 3.4E+38 double 8 64 1.7E-308 1.7E+308 long double 10 80 3.4E-4932 3.4E+4932
  • 34. http://www.slideshare.net/IgorShkulipa 34http://www.slideshare.net/IgorShkulipa Типы данных Логический тип: •bool, принимает значения true или false, а так же “0” и “>0” Строковый тип: •char*, char[] – массив символов •string – класс библиотеки STL Пустой тип: •void
  • 35. http://www.slideshare.net/IgorShkulipa 35http://www.slideshare.net/IgorShkulipa Классы памяти Класс памяти определяет порядок размещения объекта в памяти. C++ располагает четырьмя спецификаторами класса памяти: •auto •register •static •extern -auto - спецификатор автоматического класса памяти указывает на то, что объект располагается в локальной (или автоматически распределяемой) памяти. -register - применяется к объектам, по умолчанию располагаемым в локальной памяти. Представляет из себя "ненавязчивую просьбу" к транслятору (если это возможно) о размещении значений объектов, объявленных со спецификатором register в одном из доступных регистров, а не в локальной памяти. -static -1. объект располагается по фиксированному адресу. • 2. локален в одном программном модуле, то есть недоступен из других модулей многомодульной программы -extern - внешний статический класс памяти
  • 36. http://www.slideshare.net/IgorShkulipa 36http://www.slideshare.net/IgorShkulipa Константы Константы в С++: •символьные константы •целые константы •константы с плавающей точкой •ноль (0) может использоваться как константа любого указательного типа В C++ существует три вида символических констант: •любому значению любого типа можно дать имя и использовать его как константу, добавив к его описанию ключевое слово const •множество целых констант может быть определено как перечисление (enum) •любое имя вектора или функции является константой.
  • 37. http://www.slideshare.net/IgorShkulipa 37http://www.slideshare.net/IgorShkulipa Локальные и глобальные переменные int global_var; int func() { int local_var; } global_var – глобальная переменная, доступна из любой части программы local_var – локальная переменная, доступна только в том блоке программы, в котором она объявлена глобальные переменные экранируются локальными
  • 38. http://www.slideshare.net/IgorShkulipa 38http://www.slideshare.net/IgorShkulipa Объявление и инициализация переменных При инициализации необходимо придерживаться следующих правил: 1. Объявления содержащие спецификатор класса памяти extern не могут содержать инициаторов. 1. Глобальные переменные всегда инициализируются, и если это не сделано явно, то они инициализируются нулевым значением. 1. Переменная с классом памяти static может быть инициализирована константным выражением. Инициализация для них выполняется один раз перед началом программы. Если явная инициализация отсутствует, то переменная инициализируется нулевым значением. 1. Инициализация переменных с классом памяти auto или register выполняется всякий раз при входе в блок, в котором они объявлены. Если инициализация переменных в объявлении отсутствует, то их начальное значение не определено. 1. Начальными значениями для глобальных переменных и для переменных с классом памяти static должны быть константные выражения. Адреса таких переменных являются константами и эти константы можно использовать для инициализации объявленных глобально указателей. Адреса переменных с классом памяти auto или register не являются константами и их нельзя использовать в инициаторах.
  • 39. http://www.slideshare.net/IgorShkulipa 39http://www.slideshare.net/IgorShkulipa Преобразование типов 1. Присвоение "большему типу" значения "меньшего типа". Безопасное присвоение, гарантирует сохранение значения. unsigned int UnsignedIntVal; unsigned char UnsignedCharVal; UnsignedIntVal = UnsignedCharVal; 2. Присвоение "меньшему типу" значения "большего типа". Потенциально опасное присвоение, грозит потерей информации. int IntVal; char CharVal; CharVal = IntVal; 3. Преобразование значения из "меньшего типа" в "больший тип". Называется расширением типа. (unsigned int)UnsignedCharVal; 4. Преобразование значения из "большего типа" в "меньший тип". Называется сужением типа. Является опасным преобразованием. (char)IntVal;
  • 40. http://www.slideshare.net/IgorShkulipa 40http://www.slideshare.net/IgorShkulipa Лабораторная работа № 1 Базовые типы данных и основные операции С++ Задание: Создать новый проект – консольное приложение на языке C++. Вывести на экран результат работы программы, согласно вариантам заданий. Варианты заданий (числа N, M, a, b, c вводятся с клавиатуры): 1. Факториал числа N. 2. Сумма цифр числа N. 3. Гипотенуза прямоугольного треугольника с катетами a, b. 4. Длина медианы треугольника со сторонами a, b, c. 5. Длина высоты треугольника со сторонами a, b, c. 6. Длина биссектрисы треугольника со сторонами a, b, c. 7. Площадь треугольника со сторонами a, b, c. 8. Числа Фибоначи от 1 до N. 9. Программа, выводящая в порядке возрастания все простые числа диапазона от 1 до N. 10. Программа, определяющая простое ли число N, введенное с клавиатуры 11. Программа, определяющая делится ли число N без остатка на сумму своих цифр. 12. Программа, вычисляющая расстояние, которое пролетит тело вдоль горизонтальной оси, брошенное в вакууме под углом α к горизонту с некоторой начальной скоростью V0